DXVA_ConfigPictureDecode 構造体 (dxva.h)

DXVA_ConfigPictureDecode構造は、圧縮された画像デコードの構成を設定するために、ホスト デコーダーによってアクセラレータに送信されます。

構文

typedef struct _DXVA_ConfigPictureDecode {
  DXVA_ConfigQueryOrReplyFunc dwFunction;
  DWORD                       dwReservedBits[3];
  GUID                        guidConfigBitstreamEncryption;
  GUID                        guidConfigMBcontrolEncryption;
  GUID                        guidConfigResidDiffEncryption;
  BYTE                        bConfigBitstreamRaw;
  BYTE                        bConfigMBcontrolRasterOrder;
  BYTE                        bConfigResidDiffHost;
  BYTE                        bConfigSpatialResid8;
  BYTE                        bConfigResid8Subtraction;
  BYTE                        bConfigSpatialHost8or9Clipping;
  BYTE                        bConfigSpatialResidInterleaved;
  BYTE                        bConfigIntraResidUnsigned;
  BYTE                        bConfigResidDiffAccelerator;
  BYTE                        bConfigHostInverseScan;
  BYTE                        bConfigSpecificIDCT;
  BYTE                        bConfig4GroupedCoefs;
} DXVA_ConfigPictureDecode, *LPDXVA_ConfigPictureDecode;

メンバー

dwFunction

プローブ コマンドとロック コマンドを使用する場合のクエリまたは応答の種類を示します。 dwFunction の最も重要な 24 ビットは、DXVA_ConfigQueryOrReplyFlag変数です。

DXVA_ConfigQueryOrReplyFlag変数の下位 4 ビットには、実行されているクエリまたは応答の状態インジケーターが含まれています。

dwFunction の最下位 8 ビットは、この場合は 1 に等しいbDXVA_Func変数です。

dwReservedBits[3]

パッキングとアラインメントに使用される予約済みビット。 これらのビットは 0 です。

guidConfigBitstreamEncryption

ビットストリーム データ バッファーの暗号化プロトコルの種類に関連付けられている GUID を示します。 DXVA_NoEncrypt値 ( dxva.h で定義されている GUID 名) は、暗号化が適用されていないことを示します。 これは、bConfigBitstreamRaw が 0 の場合にDXVA_NoEncryptされます。

guidConfigMBcontrolEncryption

マクロブロック コントロール バッファーの暗号化プロトコルの種類に関連付けられている GUID を示します。 DXVA_NoEncrypt値 ( dxva.h で定義されている GUID 名) は、暗号化が適用されていないことを示します。 これは、bConfigBitstreamRaw が 1 の場合にDXVA_NoEncryptされます。

guidConfigResidDiffEncryption

残差デコード データ バッファー (空間ドメイン データを含むバッファー、またはアクセラレータ ベース の IDCT の変換ドメイン係数のセット) の暗号化プロトコルの種類に関連付けられている GUID を示します。 これは、bConfigBitstreamRaw が 1 の場合にDXVA_NoEncryptされます。 (DXVA_NoEncryptは、暗号化が適用されないことを示す dxva.h で定義された GUID です)。

bConfigBitstreamRaw

ビットストリーム処理インジケーターが含まれます。 値 1 は、画像データを生のビットストリーム コンテンツとしてビットストリーム バッファーで送信することを指定します。 値 0 は、マクロブロック 制御コマンド バッファーを使用して画像データを送信することを指定します。

bConfigResidDiffHost が 1 の場合、または bConfigResidDiffAccelerator が 1 の場合、これは 0 です。 値 0 は、サポートの基本レベルと見なされます。 レベル 1 の追加サポートが推奨されます。

bConfigMBcontrolRasterOrder

マクロブロック コントロール コマンドがラスター スキャン順か任意の順序かを指定します。 値 1 は、各マクロブロック 制御コマンド バッファー内のマクロブロック制御コマンドがラスター スキャン順であることを指定し、値 0 は任意の順序を示します。 現在、ドライバーはラスター スキャン順序のサポートを制限できます。ただし、ドライバーでは、任意のスキャン順序とラスター スキャン順序の両方をサポートする必要があります。

bConfigResidDiffHost

ホスト残差の構成が含まれます (詳細については 、「マクロブロック指向の画像デコード 」を参照してください)。 値 1 は、一部の残差デコード データがホストから空間ドメイン内のブロックとして送信されることを指定します。 値 0 は、空間ドメイン データが送信されないことを指定します。 bConfigBitstreamRaw が 1 の場合、このメンバーは 0 です。 アクセラレータは 0 と 1 の両方をサポートすることをお勧めします。

bConfigSpatialResid8

ホストベースの残差デコードを使用する場合 ( bConfigResidDiffHost が 1 と等しい場合) に、予測された (非イントラ) 画像の残差空間ドメイン ブロックを表すために使用される単語サイズを示します。

bConfigSpatialResid8 が 1 で、bConfigResidDiffHost が 1 の場合、ホストは、8 ビット符号付きサンプルを使用する nonintra マクロブロックの残差空間ドメイン ブロックと、bConfigIntraResidUnsigned に応じた形式で予測された (非intra) 画像のマクロブロック内の残差空間ドメイン ブロックを次のように送信します。

  • bConfigIntraResidUnsigned が 0 の場合、マクロブロック内の空間ドメイン ブロックは、定数参照値 128 に対して 8 ビット符号付き整数値として送信されます。
  • bConfigIntraResidUnsigned が 1 の場合、マクロブロック内の空間ドメイン ブロックは、定数参照値 0 に対して 8 ビット符号なし整数値として送信されます。
bConfigSpatialResid8 が 0 で、bConfigResidDiffHost が 1 の場合、ホストは、16 ビット符号付きサンプルを使用する非イントラ マクロブロックと、bConfigIntraResidUnsigned に応じて、予測された (非intra) 画像のマクロブロック内のデータの残差空間ドメイン ブロックを次のように送信します。
  • bConfigIntraResidUnsigned が 0 の場合、マクロブロック内の空間ドメイン ブロックは、定数参照値 2 (BPP-1) に対して 16 ビット符号付き整数値として送信されます。ここで、BPP は圧縮されていないビデオのサンプルあたりのビット数 (通常は 8) です。
  • bConfigIntraResidUnsigned が 1 の場合、マクロブロック内の空間ドメイン ブロックは、0 の定数参照値に対して 16 ビット符号なし整数値として送信されます。
bConfigResidDiffHost が 0 の場合、bConfigSpatialResid8 メンバーは 0 である必要があります。 bConfigResidDiffHost が 1 の場合、bConfigSpatialResid8 の特定の値は 1 つ優先されません。
メモBPP が 8 に等しい画像内の場合は、8 ビットサンプルを使用して空間ドメイン ブロックを送信する必要があります。 BPP が 8 より大きい画像内の場合は、16 ビットサンプルを使用して空間ドメイン ブロックを送信する必要があります。 ( BPP 変数は、非圧縮ビデオのサンプルあたりのビット数であり、通常は 8 の値です)。

bConfigIntraResidUnsigned が 0 の場合、これらのサンプルは 2(BPP-1) の定数参照値に対して符号付き整数値として送信されます。 bConfigIntraResidUnsigned が 1 の場合、これらのサンプルは、定数参照値 0 に対する符号なし整数値として送信されます。

 

bConfigResid8Subtraction

1 に等しい場合、8 ビット差分オーバーフロー ブロックが加算されるのではなく減算されることを示します。 bConfigSpatialResid8 が 1 でない限り、ゼロにする必要があります。 bConfigSpatialResid8 が 1 の場合、アクセラレータで推奨される値は 1 です。 差分を加算するのではなく減算する機能により、8 ビットの差分デコードは、ビデオ デコーダー仕様で必要な値の完全な +/-255 範囲に完全に準拠できます。 これは、2 つの符号付き 8 ビット数値の加算として +255 を表すことはできませんが、+/-255 の範囲の任意の数値を 2 つの符号付き 8 ビット数値の差として表すことができるためです (+255 は +127 から âˆ'128 を引いた値と等しくなります)。

bConfigSpatialHost8or9Clipping

1 に等しい場合は、マクロブロック内の空間ドメイン ブロックがホスト上の 8 ビット範囲にクリップされ、非イントラ マクロブロックの空間ドメイン ブロックがホスト上の 9 ビット範囲にクリップされることを示します。 値 0 は、このようなクリッピングがホストによって実行されていないことを示します。 bConfigSpatialResid8 が 0 に等しく、bConfigResidDiffHost が 1 に等しい場合を除き、ゼロにする必要があります。 サポートするアクセラレータの推奨値は 0 です。

bConfigSpatialResidInterleaved

1 に等しい場合、空間ドメインの残差データが、YUV 形式のクロミナンス インターリーブ パターンに一致するクロミナンス インターリーブ形式で送信されることを示します。 bConfigResidDiffHost が 1 で、YUV 形式が NV12 または NV21 でない限り、ゼロにする必要があります。 サポートするアクセラレータの推奨値は 0 です。

bConfigIntraResidUnsigned

ホストベースの差分デコードを使用する場合 ( bConfigResidDiffHost が 1 の場合) に、intra ブロックの残差データの空間ドメイン ブロックの表現方法を示します。

bConfigIntraResidUnsigned が 0 に等しく、bConfigResidDiffHost が 1 に等しい場合、マクロブロック内の空間ドメイン残差データ ブロックは次のように送信されます。

  • bConfigSpatialResid8 がゼロの場合、非イントラ図では、マクロブロック内の空間ドメイン残差データ ブロックは、定数参照値 2(BPP-1) に対して 16 ビット符号付き整数値として送信されます。ここで、BPP は非圧縮ビデオのサンプルあたりのビット数 (通常は 8)。
  • bConfigSpatialResid8 が 1 で、BPP が 8 (bConfigSpatialResid8 の値に関係なく) 8 に等しい場合は、内部図の非イントラ図では、マクロブロック内の空間ドメイン残差データ ブロックは、定数参照値 128 に対して 8 ビット符号付き整数値として送信されます。
bConfigIntraResidUnsigned が 1 に等しく、bConfigResidDiffHost が 1 に等しい場合、マクロブロック内の空間ドメイン残差データ ブロックは次のように送信されます。
  • bConfigSpatialResid8 が 0 の場合、非イントラ図では、マクロブロック内の空間ドメイン残差データ ブロックは、定数参照値 0 に対して 16 ビット符号なし整数値として送信されます。
  • in a nonintra picture if bConfigSpatialResid8 is 1 and in a intra picture if BPP is equal to 8 (if the value of bConfigSpatialResid8), the spatial-domain residual difference data blocks for intra macroblocks are sent as 8-bit unsigned integer values relative to a constant reference value of zero.
bConfigResidDiffHost が 1 でない限り、bConfigIntraResidUnsigned メンバーは 0 である必要があります。

サポートするアクセラレータの推奨値は、 bConfigIntraResidUnsigned の場合は 0 です。

bConfigResidDiffAccelerator

アクセラレータの残差の構成が含まれています。 値 1 は、係数データの変換ドメイン ブロックがアクセラレータ ベースの IDCT 用にホストから送信される可能性があることを示します。 値 0 は、アクセラレータ ベースの IDCT を使用しないことを指定します。 bConfigResidDiffHostbConfigResidDiffAccelerator の両方が 1 の場合、マクロブロック レベルの制御コマンドで示されているように、ホストとアクセラレータ上の一部の残差デコードが行われます。 bConfigBitstreamRaw が 1 の場合、このメンバーは 0 である必要があります。

サポートするアクセラレータの推奨値は、 bConfigResidDiffAccelerator の場合は 1 です。

bConfigResidDiffAcceleratorbConfigResidDiffHost が 1 に等しい場合、残差デコードはマクロブロックベースでホストとアクセラレータの間で共有できます。 これは、 bConfigResidDiffAccelerator が 1 に等しく、 bConfigResidDiffHost が 0 に等しい場合よりも、さらに高いレベルのアクセラレータ機能と見なされます。

bConfigHostInverseScan

変換ドメイン ブロック処理の逆スキャンがホストまたはアクセラレータで実行されるかどうかを示します。 値 1 は、変換ドメイン ブロック処理の逆スキャンがホストで実行され、変換係数に対して絶対インデックスが送信されることを示します。 値 0 は、アクセラレータで逆スキャンが実行されることを示します。 bConfigResidDiffAccelerator が 0 の場合、または bConfig4GroupedCoefs が 1 の場合、このメンバーは 0 である必要があります。

bConfigResidDiffAccelerator が 1 の場合、アクセラレータで推奨される値は 1 です。

bConfigSpecificIDCT

オフホスト IDCT に対する特定の IDCT メソッドの使用を示します。 値 1 は、ITU-T Recommendation H.263 の Annex W で指定された IDCT の使用を示します。 値 0 は、準拠している IDCT をオフホスト IDCT に使用できることを示します。 (0 および 1 以外の値は、将来使用するために予約されています)。

bConfigResidDiffAccelerator が 0 の場合 (単にホストベースの残差デコードを示す) 場合、このメンバーは 0 である必要があります。

メモ ITU-T レコメンデーション H.263 の付録 W は MPEG-2 corrigendum 2 の IDCT 要件に準拠していないため、 bConfigSpecificIDCT は MPEG-2 ビデオで使用するためのものではありません。
 

bConfig4GroupedCoefs

値 1 は、オフホスト IDCT の変換係数が 、DXVA_TCoefSingle 構造体ではなくDXVA_TCoef4Group 構造体を使用 して送信されることを示します。 bConfigResidDiffAccelerator が 0 の場合、または bConfigHostInverseScan が 1 の場合、これは 0 です。

bConfigResidDiffAccelerator が 1 の場合、アクセラレータで推奨される値は 0 です。

注釈

一部の種類のビットストリームでは、各マクロブロック制御コマンド バッファー内でマクロブロック制御コマンドをラスター順に強制すると、処理する必要があるバッファーの数が大幅に増えるか、コントロール情報のホストの並べ替えが必要になります。 したがって、任意の順序のサポートは、デコードプロセスにとって有利であり得る。 たとえば、H.261 CIF 解像度デコードでは、各バッファー内でラスター スキャン順序が必要な場合、画像ごとに 36 個のマクロブロック制御バッファーが必要になる場合があります (H.263 Annex K の任意のスライス順序と四角形のスライス モードでは、より深刻な反動があり、非常に多くのバッファーが必要になる可能性があります)。

要件

要件
Header dxva.h (Dxva.h を含む)

こちらもご覧ください

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_TCoef4Group

DXVA_TCoefSingle