What are the advantages of using gstreamer over stagefright? Could anyone please point out the difference.
2 に答える
最初に、非常に一般的なコメントが 1 つあります。GStreamer
が有利かどうかは非常に議論の余地がありStagefright
ます。ただし、あなたの質問に答えるいくつかのポイントは以下のとおりです。
Stagefright
はすべてのコーデックでOMX
/インターフェイスのみに依存しますが、コーデック プラグインはインターフェイスを介して記述できます。たとえば、ソフトウェア コーデックでさえフレームワークにカプセル化されますが、同じものは必ずしもインターフェイスを持たなくても簡単に に変換できます。OpenMax
GStreamer
non-OMX
SoftOMXComponent
Stagefright
GstElement
OMX
ではStagefright
、2 つのコンポーネント間の通信インターフェイスは非常に汎用的で、通常はMediaBuffer
です。これはバインディングではありませんが、接着層、つまりまたはまたはの実装hard
によってより容易になります。OMXCodec
MediaExtractor
AwesomePlayer
ではGStreamer
、一般的な通信インターフェイスは、Pads
特定の を持つを介したものGstCaps
です。2 つのコンポーネントのパッドは、 を介して相互にリンクされていgst_pad_link
ます。
GStreamer
またはbins
のような標準テンプレートを提供しますが、 の実装があります。プレーヤーの場合、またはのような 2 つの潜在的なプレーヤー エンジンの実装があります。CameraBin
PlayerBin
Stagefright
cameraHal
camera
StagefrightPlayer
NuPlayer
では、データ処理は からの(ダウンストリームの) PULLデータStagefright
によって駆動されます。では、データ処理は、バッファを作成し、それを下流にPUSHすることによってトリガーされる可能性があります(参照:ここ)。sink
source
GStreamer
source
最後のポイントは、現在 Android 固有のものGstreamer
と比較して、広く展開されていることです。Stagefright
リストは続きますが、2 つのフレームワークには多くの類似点があります。例えば、
どちらのフレームワークも、パターンを使用するなどして、
parsers
またはパターンcodecs
を介してコンポーネントを作成します。Factory Methods
Factory
両方のフレームワークは、
plugin
たとえば などの新しいコンポーネントを統合するためのインターフェイスを採用していますparsers
。
私は StageFright には詳しくありませんが、GStreamer は非常に成熟したデバッグ機能を提供していることを指摘したいと思います。これには、GraphViz (「ドット」) データのダンプが含まれます。これは、構築中を含め、比喩的な再生グラフのリテラルで視覚的なグラフを構築するために使用できます。 、特定の種類の部分的な障害の後でも。特定の種類のフィルタリングとともに、複数のデバッグ レベルを使用できます。
開発目的でこれら 2 つのライブラリのいずれかを選択する場合は、特にパイプラインの枯渇と同期のトラブルシューティングに関して、デバッグ機能とトラブルシューティング機能を比較することを強くお勧めします。
(ちなみに、これらのドット ダンプを変換するのに最適な形式は SVG です。通常は Firefox で開きます。)