1

libstagefright.soAndroidフォンでメディア操作に使用したい。この ページに記載されている例を調べました。私は同じことを実装しようとしています。この実装を複数の OMXCodecインスタンスでテストしているときに、出力バッファーが互いに競合します。

私はEclipseでAndroidプロジェクトを開発し、libstagefrightJNIでリンクしました。2 つのクラスCustomDataSource(派生するMediaSource) とを追加しましCustomOmxDecoderた。CustomDataSourceクラスは のすべての仮想メソッドを実装しますMediaSourceCustomOmxDecoderクラスでは、メソッドを呼び出しますOMXCodec::Create。次に、の個別のインスタンスを持つ 2 つのスレッドを作成しましたCustomOmxDecoder。このインスタンスを使用してProcessNextFrame、メインvideoDecoder->read()メソッドを呼び出すメソッドを呼び出します。これが私の設定です。

さて、上記の設定でアプリを実行すると。OMXCodec両方のソースのフレームをデコードしますが、表面にレンダリングすると、競合する出力が表示されます。両方のソースのデコードされたバッファが何らかの形で内部的に噛み合っているようです。2 つの h264 デコーダーを同時に作成しています。ここで何が問題になる可能性がありますか?に関連できますMediaBufferGroupか?call を呼び出した後、 buffer inを取得しCustomDataSource、 buffer in を解放しCustomOmxDecoderます。ProcessNextFramevideoDecoder->read()

どんな提案も素晴らしいでしょう。ありがとう。

4

1 に答える 1

2

私は自分の問題をテストして解決しましたが、OMXCodecの複数のインスタンスが可能であるとは思っていません。問題は私のコードにありました。修正すると、OMXCodecの複数のインスタンスが安定してスムーズに実行されていることがわかります。したがって、はい、OMXCodecの複数のインスタンスが可能です。

皆さん、ありがとうございました。

于 2013-03-18T05:34:17.053 に答える