Android 2.3以降でレイヤーからストリームlibstagefright.soをデコードするために直接アクセスする方法はありますか?H.264JNI
1 に答える
目的がエレメンタリ ストリームをデコードすることである場合H.264、コードはストリームが抽出され、codec-specific-data主にコーデックに提供され、SPSデータPPSとフレーム データがタイムスタンプと共にコーデックに提供されることを保証する必要があります。すべてのAndroidバージョンで、最も一般的なインターフェイスは、基になるコンポーネントOMXCodecの抽象化です。OMX
Gingerbread (Android 2.3) および ICS (Android 4.0.0) では、デコーダを作成する場合、OMXCodecコンポーネントを作成し、インターフェイスを介してコードを抽象化するのが最善の方法MediaSourceです。つまり、ラッパー コードは次のようにモデル化されMediaSource、からOMXCodec 読み取られます。このソースとデコードを実行します。
Android 2.3 ビデオ デコーダの作成へのリンク: http://androidxref.com/2.3.6/xref/frameworks/base/media/libstagefright/AwesomePlayer.cpp#1094
Android 4.0.0 ビデオ デコーダの作成へのリンク: http://androidxref.com/4.0.4/xref/frameworks/base/media/libstagefright/AwesomePlayer.cpp#1474
主な課題は次のとおりです。
入力を としてモデル化します
MediaSource。ラッパー コードを読み取り、コーデックからバッファを読み取り、それを処理してコーデックに解放します。
簡単にするために、 http://androidxref.com/4.0.4/xref/frameworks/base/cmds/stagefright/stagefright.cpp#233stagefrightのようにコマンドライン実行可能コードを見ることができます
ただし、プログラムが JellyBean (Android 4.1.x、4.2.x) 以降に基づいている場合、これらは少し単純化されています。MediaCodecJNI コードからコンポーネントを作成し、それをデコードに使用できます。同じものをプログラムに統合するには、 http://androidxref.com/4.2.2_r1/xref/frameworks/av/cmds/stagefright/SimplePlayer.cpp#316SimplePlayerのように実装を参照できます