Share via


4:2:0 ビデオ ピクセル形式

圧縮された 4:2:0 ビデオをデコードするには、次のいずれかの非圧縮ピクセル形式を使用します。

ピクセル形式 説明
YUY2 4:2:2 ビデオ ピクセルフォーマット」で説明されているように、4:2:0 Cb サンプルと Cr サンプルの実際の行ごとに 2 行の出力 Cb サンプルと Cr サンプルが生成される点が異なります。 出力行の各ペアの 2 行目は、通常、最初の行の複製であるか、ペアの最初の行のサンプルを次のペアの最初の行のサンプルと平均することによって生成されます。
UYVY 4:2:2 ビデオ ピクセルフォーマット」で説明されているように、4:2:0 Cb サンプルと Cr サンプルの実際の行ごとに 2 行の出力 Cb サンプルと Cr サンプルが生成される点が異なります。 出力行の各ペアの 2 行目は、通常、最初の行の複製であるか、ペアの最初の行のサンプルを次のペアの最初の行のサンプルと平均することによって生成されます。
YV12 すべての Y サンプルは、最初に符号なし文字の配列としてメモリ内で検出され (メモリアライメントのストライドが大きくなる可能性があります)、その直後にすべての Cr サンプル (Y 行のストライドの半分、行数の半分) が続き、その直後にすべての Cb サンプルが同様の方法で検出されます。
IYUV Cb 平面と Cr 平面の順序のスワップを除き、YV12 と同じです。
NV12 すべての Y サンプルが、偶数行の符号なし文字の配列としてメモリ内で最初に検出される形式 (メモリ配置のストライドが大きくなる可能性があります)。 その直後に、インターリーブされた Cb サンプルと Cr サンプルを含む符号なし文字の配列が続きます。 これらのサンプルがリトル エンディアン WORD 型として扱われる場合、Cb は最下位ビットに、Cr は Y サンプルと同じ合計ストライドを持つ最上位ビットになります。 NV12 は、推奨される 4:2:0 ピクセル形式です。
NV21 NV12 と同じですが、Cb サンプルと Cr サンプルがスワップされ、符号なし文字のクロマ配列の後に各サンプルの Cb が続きます (たとえば、リトル エンディアン WORD 型としてアドレス指定された場合、Cr は最下位ビットに、Cb は最上位ビットになります)。
IMC1 YV12と同様に、CbおよびCr平面のストライドがY平面内のストライドと同じである点を除く。 また、Cb および Cr 平面は、16 行の倍数であるメモリ境界上に配置する必要があります。 次のコード例は、Cb 平面と Cr 平面の計算を示しています。
BYTE* pCr = pY + (((Height + 15) & ~15) * Stride);
BYTE* pCb = pY + (((((Height * 3) / 2) + 15) & ~15) * Stride);
前の例では、pY はメモリ配列の先頭を指すバイト ポインターであり、Height は 16 の倍数である必要があります。
IMC2 IMC1 と同じですが、Cb ラインと Cr ラインがハーフストライド境界でインターリーブされる点が異なります。 言い換えると、クロミナンス領域の各フルストライドラインはCrの行から始まり、その後に次のハーフストライド境界から始まるCbの行が続きます。 (これは IMC1 よりもアドレス空間効率の高い形式です。これは、クロミナンス アドレス空間を半分に削減し、合計アドレス空間を 25% 削減するためです)。これは NV12 に関連して必要に応じて推奨される形式ですが、NV12 の方が一般的なようです。
IMC3 Cb と Cr のスワップを除き、IMC1 と同じです。
IMC4 Cb と Cr のスワップを除き、IMC2 と同じです。

これらの形式の詳細については、 Microsoft Media Foundation ドキュメントのビデオ レンダリング に推奨される 8 ビット YUV 形式を参照してください。