このページを参照: http://bigflake.com/mediacodec/
A5. カメラ出力と MediaCodec エンコーダー入力のカラー フォーマットは異なります。カメラは YV12 (平面 YUV 4:2:0) および NV21 (半平面 YUV 4:2:0) をサポートします。MediaCodec エンコーダーは、次の 1 つ以上をサポートします。
#19 COLOR_FormatYUV420Planar (I420)
#20 COLOR_FormatYUV420PackedPlanar (I420 も)
#21 COLOR_FormatYUV420SemiPlanar (NV12)
#39 COLOR_FormatYUV420PackedSemiPlanar (NV12 も)
#0x7f000100 COLOR_TI_FormatYUV420PackedSemiPlanar (NV12 も)
私のアプリケーションでは、YUY2 形式で外部カメラからフレームをキャプチャし、それらを使用可能な形式に変換して、MediaMuxer に供給しています。
ここで読んだことに基づいて、これは、MediaCodecInfo.CodeCapabilities でデバイスがサポートするものを照会する必要があることを意味します。次に、それに基づいて、YUY2 から適切な形式への変換を行います。少なくともこれは私の理解です。
コーデック形式の海では、これらの違いと、アプリケーションでそれらすべてを説明する必要があるかどうかがわかりません。もしそうなら、これらのフォーマットのバイトレイアウトを知る必要があります。正しいと思うものを埋めました。上から下へ:
FormatYUV420Planar - YYYY YYYY UU VV
FormatYUVPackedPlanar - ???
FormatYUV420SemiPlanar -- YYYY YYYY VU VU
FormatYUV420PackedSemiPlanar -- ???
COLOR_TI_FormatYUV420PackedSemiPlanar -- ???