質問に記載されている NV12 フォーマットのサイズについて完全に理解しています
現在、この形式での UV プレーンのストレージに関する 2 つの情報源から読んでいます。
NV12
すべての Y サンプルは、偶数行の unsigned char 値の配列としてメモリに最初に表示されます。Y プレーンの直後には、パックされた U (Cb) および V (Cr) サンプルを含む unsigned char 値の配列が続きます。結合された UV 配列がリトル エンディアンの WORD 値の配列としてアドレス指定される場合、LSB には U 値が含まれ、MSB には V 値が含まれます。NV12 は、DirectX VA で推奨される 4:2:0 ピクセル形式です。これは、4:2:0 ビデオをサポートする DirectX VA アクセラレータの中期的な要件になると予想されます。次の図は、Y 平面と、パックされた U および V サンプルを含む配列を示しています。
私が理解しているのは、UV プレーンでは、各 U と V が single byte に格納されていることです。
これについてウィキペディアから読んだとき: https://wiki.videolan.org/YUV#NV12
それは言います:
NV12
I420 に関連して、NV12 には 1 つの輝度「ルミナンス」プレーン Y と、U 値と V 値がインターリーブされた 1 つのプレーンがあります。NV12 では、クロマ プレーン (青と赤) は、水平方向と垂直方向の両方の次元で 2 倍にサブサンプリングされます。ピクセルの 2x2 グループの場合、4 つの Y サンプルと 1 つの U および 1 つの V サンプルがあります。NV12 を、U プレーンと V プレーンがインターリーブされた I420 と考えると便利です。これは NV12 のグラフ表示です。各文字は 1 ビットを表します: 1 NV12 ピクセルの場合: YYYYYYYY UVUV 2 ピクセル NV12 フレームの場合: YYYYYYYYYYYYYYYY UVUVUVUV 50 ピクセル NV12 フレームの場合: Y*8*50 (UV)*2*50 n ピクセル NV12 フレームの場合: Y*8*n (UV)*2*n
ここで私が理解しているのは、各 U と V が各バイトでビットごとにインターリーブされていることです。したがって、UV プレーンの各バイトには、インターリーブされた 4U ビットと 4V ビットが含まれます。
誰かが私の疑問を明確にすることができますか?