次の方法で共有


10 ビットおよび 16 ビットの YUV ビデオ形式

このトピックでは、Microsoft Windows オペレーティング システムでのビデオのキャプチャ、処理、および表示に推奨される 10 ビットおよび 16 ビットの YUV 形式について説明します。

このトピックには、次のセクションが含まれています。

概要

これらの形式では、luma チャネルとクロマ (C'b および C'r) チャネルの両方に固定小数点表現が使用されます。 サンプル値は、SMPTE 274M のセクション 7.7-7.8 および 7.11-7.12 に従って、2^(n - 8) の倍率を使用して 8 ビット値にスケーリングされます。ここで、n は 10 または 16 のいずれかです。 精度変換は、単純なビット シフトを使用して実行できます。 たとえば、8 ビット形式のホワイト ポイントが 235 の場合、対応する 10 ビット形式の白いポイントは 940 (235 × 4) になります。

ここで説明する 16 ビット表現では、各チャネルのリトル エンディアン WORD 値を使用します。 10 ビット形式では、次の図に示すように、チャネルごとに 16 ビットも使用され、最小 6 ビットは 0 に設定されます。

10 ビット表現図

同じ YUV 形式の 10 ビットと 16 ビットの表現は同じメモリ レイアウトを持つので、精度を損なう必要なく 10 ビット表現を 16 表現にキャストできます。 また、16 ビット表現を 10 ビット表現にキャストすることもできます。 (ただし、Y416 形式と Y410 形式は、同じメモリ レイアウトを共有しないため、この一般的な規則の例外です)。

グラフィックス ハードウェアが 10 ビット表現を含むサーフェスを読み取る場合は、各チャネルの下位 6 ビットを無視する必要があります。 ただし、有効な 16 ビット データがサーフェスに含まれている場合は、16 ビット サーフェスとして識別する必要があります。

アルファを含む形式では、完全に透明なピクセルのアルファ値は 0 で、完全に不透明なピクセルのアルファ値は (2^n) – 1 で、n はアルファ ビットの数です。 アルファは、コンポーネントが正規化された線形形式に変換された後、各コンポーネントに適用される線形値であると見なされます。

ビデオ メモリ内の画像の場合、グラフィックス ドライバーはサーフェスのメモリ配置を選択します。 サーフェスは、DWORD 配置 必要があります。 つまり、配置は 32 ビットより大きくなる場合がありますが、サーフェス内の個々の線は 32 ビット境界から開始することが保証されます。 原点 (0,0) は、常にサーフェスの左上隅です。

このドキュメントの目的上、U という用語は、Cbに相当し、V という用語は、Crと同じです。

10 ビットおよび 16 ビット YUV の FOURCC コード

ここで説明する形式の FOURCC コードは、次の規則を使用します。

  • 形式が平面の場合、FOURCC コードの最初の文字は 'P' です。 形式がパックされている場合、最初の文字は 'Y' です。

  • FOURCC コードの 2 番目の文字は、次の表に示すように、彩度サンプリングによって決定されます。

    彩度サンプリング FOURCC コード文字
    4:4:4 '4'
    4:2:2 '2'
    4:2:1 '1'
    4:2:0 '0'

     

  • FOURCC の最後の 2 文字は、チャネルあたりのビット数を示します。16 ビットの場合は "16"、10 ビットの場合は "10" です。

このスキームを使用して、次の FOURCC コードが定義されています。 現時点では、10 ビットまたは 16 ビット YUV の 4:2:1 形式は定義されていません。

FOURCC 形容
P016 平面、4:2:0、16 ビット。
P010 平面、4:2:0、10 ビット。
P216 平面、4:2:2、16 ビット。
P210 平面、4:2:2、10 ビット。
Y216 パック、4:2:2、16 ビット。
Y210 パック、4:2:2、10 ビット。
Y416 パック、4:4:4、16 ビット
Y410 パック、4:4:4、10 ビット。

 

サブタイプ GUID は、これらの FOURCC からも定義されています。ビデオ サブタイプ GUID を参照してください。

サーフェス定義

このセクションでは、各形式のメモリ レイアウトについて説明します。 以降の説明では、WORD という用語は、リトル エンディアン 16 ビット値を指し、DWORD 用語は、リトル エンディアン 32 ビット値を指します。

4:2:0 形式

FOURCC コード P016 と P010 を使用して、2 つの 4:2:0 形式が定義されています。 これらは同じメモリ レイアウトを共有しますが、P016 はチャネルあたり 16 ビットを使用し、P010 はチャネルごとに 10 ビットを使用します。

P016 と P010

これら 2 つの形式では、すべての Y サンプルが、偶数行の word 配列としてメモリ内で最初に表示されます。 サーフェスストライドは、Y 平面の幅よりも大きくなる可能性があります。 この配列の直後に、次の図に示すように、インターリーブされたユーザーと V のサンプルを含む word 配列が続きます。

p016 および p010 ピクセル レイアウト図

結合された U-V 配列が DWORDs の配列としてアドレス指定されている場合、最下位ワード (LSW) には U 値が含まれており、最も重要な単語 (MSW) には V 値が含まれます。 結合された U-V 平面のストライドは、Y 平面のストライドと等しくなります。 U-V 平面には、Y 平面の半分の線があります。

これら 2 つの形式は、より高精度の YUV 表現のために推奨される 4:2:0 平面ピクセル形式です。 これらは、10 ビットまたは 16 ビットの 4:2:0 ビデオをサポートする DirectX ビデオ アクセラレーション (DXVA) アクセラレータの中間的な要件であることが期待されます。

4:2:2 形式

4:2:2 形式が 4 つ定義され、2 つの平面形式と 2 つの形式がパックされています。 次の FOURCC コードがあります。

  • P216
  • P210
  • Y216
  • Y210

P216 および P210

これら 2 つの平面形式では、すべての Y サンプルが、偶数行の word 配列としてメモリ内で最初に表示されます。 サーフェスストライドは、Y 平面の幅よりも大きくなる可能性があります。 この配列の直後に、次の図に示すように、インターリーブされたユーザーと V のサンプルを含む word 配列が続きます。

p216 および p210 ピクセル レイアウト図

結合された U-V 配列が DWORDの配列としてアドレス指定されている場合、LSW には U 値が含まれており、MSW には V 値が含まれます。 結合された U-V 平面のストライドは、Y 平面のストライドと等しくなります。 U-V 平面は、Y 平面と同じ数の線を持っています。

これら 2 つの形式は、より高精度の YUV 表現のために推奨される 4:2:2 平面ピクセル形式です。 これらは、10 ビットまたは 16 ビットの 4:2:2 ビデオをサポートする DirectX ビデオ アクセラレーション (DXVA) アクセラレータの中間的な要件であることが期待されます。

Y216 および Y210

これら 2 つのパック形式では、次の図に示すように、各ピクセルのペアが WORD 4 つの配列として格納されます。

y216 および y210 ピクセル レイアウトを示す図。

配列内の最初の WORD には、ペアの最初の Y サンプルが含まれています。2 番目の WORD には U サンプルが含まれています。3 番目の WORD には 2 番目の Y サンプルが含まれており、4 番目の WORD には V サンプルが含まれています。

Y210 は Y216 と同じですが、各サンプルに含まれる重要なデータは 10 ビットのみです。 前に説明したように、下位 6 ビットは 0 に設定されます。

4:4:4 形式

FOURCC コード Y410 と Y416 を使用して、2 つの 4:4:4 形式が定義されています。 どちらもパック形式です。

Y410

この形式は、2 ビットのアルファを含むパックされた 10 ビット表現です。 各ピクセルは、次の図に示すメモリ レイアウトを使用して、1 つの DWORD としてエンコードされます。

y410 ピクセル レイアウトを示す図。

ビット 0 から 9 には U サンプルが含まれており、ビット 10 から 19 には Y サンプルが含まれており、ビット 20 から 29 には V サンプルが含まれており、ビット 30 から 31 にはアルファ値が含まれます。 ピクセルが完全に不透明であることを示すには、アプリケーションで 2 つのアルファ ビットを 0x03 に設定する必要があります。

Y416

この形式は、16 ビットのアルファを含むパックされた 16 ビット表現です。 次の図に示すように、各ピクセルは DWORDs のペアとしてエンコードされます。

y416 ピクセル レイアウトを示す図。

ビット 0 から 15 には U サンプルが含まれており、ビット 16 から 31 には Y サンプルが含まれており、ビット 32 から 47 には V サンプルが含まれており、ビット 48 から 63 にはアルファ値が含まれます。

ピクセルが完全に不透明であることを示すには、アプリケーションで 2 つのアルファ バイトを 0xFFFF に設定する必要があります。 この形式は、エラーの蓄積を回避するために、主に画像処理中の中間形式として意図されています。

優先される YUV 形式

次の表に、8 ビット形式を含む、推奨される YUV 形式を示します。

形式 彩度サンプリング パックまたは平面 チャネルあたりのビット数
AYUV 4:4:4 詰まる 8
Y410 4:4:4 詰まる 10
Y416 4:4:4 詰まる 16
AI44 4:4:4 詰まる Palettized
YUY2 4:2:2 詰まる 8
Y210 4:2:2 詰まる 10
Y216 4:2:2 詰まる 16
P210 4:2:2 平面 10
P216 4:2:2 平面 16
NV12 4:2:0 平面 8
P010 4:2:0 平面 10
P016 4:2:0 平面 16
NV11 4:1:1 平面 8

 

オブジェクトが特定のビット深度および彩度サンプリング スキームをサポートしている場合は、この表に示す対応する YUV 形式をサポートすることをお勧めします。 (オブジェクトは、ここに記載されていない追加の形式をサポートしている場合があります)。

ビデオ レンダリング に推奨される 8 ビット YUV 形式を する

ビデオ サブタイプ GUID

ビデオ メディアの種類