D3D11_1DDI_VIDEO_DECODER_CONFIG 構造体 (d3d10umddi.h)

Microsoft DirectX Video Acceleration (DXVA) 用の Microsoft Direct3D 11 デコーダー デバイスの構成について説明します。

構文

typedef struct D3D11_1DDI_VIDEO_DECODER_CONFIG {
  GUID   guidConfigBitstreamEncryption;
  GUID   guidConfigMBcontrolEncryption;
  GUID   guidConfigResidDiffEncryption;
  UINT   ConfigBitstreamRaw;
  UINT   ConfigMBcontrolRasterOrder;
  UINT   ConfigResidDiffHost;
  UINT   ConfigSpatialResid8;
  UINT   ConfigResid8Subtraction;
  UINT   ConfigSpatialHost8or9Clipping;
  UINT   ConfigSpatialResidInterleaved;
  UINT   ConfigIntraResidUnsigned;
  UINT   ConfigResidDiffAccelerator;
  UINT   ConfigHostInverseScan;
  UINT   ConfigSpecificIDCT;
  UINT   Config4GroupedCoefs;
  USHORT ConfigMinRenderTargetBuffCount;
  USHORT ConfigDecoderSpecific;
} D3D11_1DDI_VIDEO_DECODER_CONFIG;

メンバー

guidConfigBitstreamEncryption

ビット ストリーム データ バッファーの暗号化プロトコルの種類を定義します。 暗号化が適用されていない場合、値は DXVA_NoEncrypt されます (Dxva.h で定義されている GUID 名)。 ConfigBitstreamRaw が 0 の場合、値はDXVA_NoEncryptする必要があります。

D3DWDDM2_0DDI_DECODER_ENCRYPTION_HW_CENCに設定すると、次のパラメーターが VideoDecoderBeginFrame 呼び出しに渡されることを示します。

Value 意味
pContentKey フレームの暗号化を解除するために使用される CryptoSession とキー情報を示す、 D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION 構造体へのポインター。
ContentKeySize D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION構造体のサイズに設定します。

guidConfigMBcontrolEncryption

マクロ ブロック制御データ バッファーの暗号化プロトコルの種類を定義します。 暗号化が適用されていない場合、値は DXVA_NoEncrypt されます (Dxva.h で定義されている GUID 名)。 ConfigBitstreamRaw が 1 の場合、値はDXVA_NoEncryptする必要があります。

guidConfigResidDiffEncryption

残差デコード データ バッファーの暗号化プロトコルの種類を定義します (アクセラレータ ベースの逆離散コサイン変換 [IDCT] の空間ドメイン データまたは変換ドメイン係数のセットを含むバッファー)。 暗号化が適用されていない場合、値は DXVA_NoEncrypt されます (Dxva.h で定義されている GUID 名)。 ConfigBitstreamRaw が 1 の場合、値はDXVA_NoEncryptする必要があります。

ConfigBitstreamRaw

ホスト デコーダーが生のビット ストリーム データを送信するかどうかを示します。 値が 1 の場合、画像のデータは生のビット ストリーム コンテンツとしてビット ストリーム バッファーで送信されます。 値が 0 の場合は、macroblock コントロール コマンド バッファーを使用して画像データが送信されます。 ConfigResidDiffHost または ConfigResidDiffAccelerator のいずれかが 1 の場合、値は 0 である必要があります。

ConfigMBcontrolRasterOrder

マクロブロック コントロール コマンドがラスター スキャン順か任意の順序かを指定します。 値が 1 の場合、各 macroblock コントロール コマンド バッファー内の macroblock コントロール コマンドはラスター スキャン順になります。 値が 0 の場合、順序は任意です。 一部の種類のビット ストリームでは、ラスターの順序を強制すると、処理する必要があるマクロブロック コントロール バッファーの数が大幅に増えるか、コントロール情報のホストの並べ替えが必要になります。 したがって、任意の順序をサポートする方が効率的です。

ConfigResidDiffHost

ホスト残差の構成が含まれています。 値が 1 の場合、一部の残差デコード データは、ホストから空間ドメイン内のブロックとして送信される場合があります。 値が 0 の場合、空間ドメイン データは送信されません。

ConfigSpatialResid8

ホストベースの残差差分デコードを使用する場合に、予測された (内部以外の) 画像の残差空間ドメイン ブロックを表すために使用される単語サイズを示します。

ConfigResidDiffHost が 1 で ConfigSpatialResid8 が 1 の場合、ホストは、8 ビット符号付きサンプルを使用する非内部マクロブロックと、ConfigIntraResidUnsigned の値に依存する形式で予測された (イントラ以外の) 画像のマクロブロック内の残差空間ドメイン ブロックを送信します。

  • ConfigIntraResidUnsigned が 0 の場合、マクロブロック内の空間ドメイン ブロックは、2^(BPP–1) の定数参照値に対して 8 ビット符号付き整数値として送信されます。
  • ConfigIntraResidUnsigned が 1 の場合、マクロブロック内の空間ドメイン ブロックは、定数参照値 0 に対する 8 ビット符号なし整数値として送信されます。

ConfigResidDiffHost が 1 で ConfigSpatialResid8 が 0 の場合、ホストは、16 ビット符号付きサンプルを使用し、ConfigIntraResidUnsigned の値に依存する形式で予測された (非イントラ) 画像の内部マクロブロックに対して、非イントラ マクロブロックのデータの残差空間ドメイン ブロックを送信します。

  • ConfigIntraResidUnsigned が 0 の場合、マクロブロック内の空間ドメイン ブロックは、定数参照値 2^(BPP–1) に対して 16 ビット符号付き整数値として送信されます。
  • ConfigIntraResidUnsigned が 1 の場合、マクロブロック内の空間ドメイン ブロックは、定数参照値 0 に対して 16 ビット符号なし整数値として送信されます。
  • ConfigResidDiffHost が 0 の場合、ConfigSpatialResid8 は 0 である必要があります。

画像内では、ピクセルあたりのビット数 (BPP) が 8 の場合は 8 ビット サンプルを使用し、BPP > 8 の場合は 16 ビット サンプルを使用して空間ドメイン ブロックを送信する必要があります。 ConfigIntraResidUnsigned が 0 の場合、これらのサンプルは定数参照値 2^(BPP-1) に対する符号付き整数値として送信され、ConfigIntraResidUnsigned が 1 の場合、これらのサンプルは定数参照値 0 に対する符号なし整数値として送信されます。

ConfigResid8Subtraction

値が 1 の場合、8 ビット差分オーバーフロー ブロックは加算ではなく減算されます。 ConfigSpatialResid8 が 1 でない限り、値は 0 である必要があります。

差分を加算するのではなく減算する機能により、8ビット差分デコードは、ビデオデコーダー仕様で必要な値の完全な範囲の±255に完全に準拠することができます。 2 つの符号付き 8 ビット数値の加算として +255 を表すことはできませんが、±255 の範囲の任意の数値は、2 つの符号付き 8 ビット数値の差として表すことができます (+255 = +127 から -128 を引いた値)。

ConfigSpatialHost8or9Clipping

値が 1 の場合、マクロブロック内の空間ドメイン ブロックをホスト上の 8 ビット範囲にクリップし、非内部マクロブロックの場合は空間ドメイン ブロックをホスト上の 9 ビット範囲にクリップする必要があります。 値が 0 の場合、ホストでこのようなクリッピングは必要ありません。

ConfigSpatialResid8 が 0 で ConfigResidDiffHost が 1 でない限り、値は 0 である必要があります。

ConfigSpatialResidInterleaved

値が 1 の場合、空間ドメインの残差データは、YUV 形式のクロミナンス インターリーブ パターンに一致するクロミナンス インターリーブ形式で送信する必要があります。 ConfigResidDiffHost が 1 で、YUV 形式が NV12 または NV21 でない限り、値は 0 である必要があります。

ConfigIntraResidUnsigned

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

ConfigResidDiffHost が 1 で ConfigIntraResidUnsigned が 0 の場合、マクロブロック内の空間ドメイン残差データ ブロックは次のように送信する必要があります。

  • 非イントラ図では、ConfigSpatialResid8 が 0 の場合、マクロブロック内の空間ドメイン残差データ ブロックは、定数参照値 2^(BPP-1) に対して 16 ビット符号付き整数値として送信されます。
  • 非イントラ図では、ConfigSpatialResid8 が 1 の場合、マクロブロック内の空間ドメイン残差データ ブロックは、定数参照値 2^(BPP–1) に対して 8 ビット符号付き整数値として送信されます。
  • 図内では、BPP が 8 の場合、ConfigSpatialResid8 の値に関係なく、マクロブロック内の空間ドメイン残差データ ブロックは、定数参照値 2^(BPP-1) に対して 8 ビット符号付き整数値として送信されます。

ConfigResidDiffHost が 1 で ConfigIntraResidUnsigned が 1 の場合、マクロブロック内の空間ドメイン残差データ ブロックは次のように送信する必要があります。

  • 非イントラ図では、ConfigSpatialResid8 が 0 の場合、マクロブロック内の空間ドメイン残差データ ブロックは、定数参照値 0 に対して 16 ビット符号なし整数値として送信する必要があります。
  • 非イントラ図では、ConfigSpatialResid8 が 1 の場合、マクロブロック内の空間ドメイン残差データ ブロックは、定数参照値 0 に対して 8 ビット符号なし整数値として送信されます。
  • 図内では、BPP が 8 の場合、ConfigSpatialResid8 の値に関係なく、マクロブロック内の空間領域残差データ ブロックは、定数参照値 0 に対して 8 ビット符号なし整数値として送信されます。

ConfigResidDiffHost が 1 でない限り、メンバーの値は 0 である必要があります。

ConfigResidDiffAccelerator

値が 1 の場合、アクセラレータベースの IDCT 用に、係数データの変換ドメイン ブロックがホストから送信される場合があります。 値が 0 の場合、アクセラレータ ベースの IDCT は使用されません。 ConfigResidDiffHostConfigResidDiffAccelerator の両方が 1 の場合、これは、マクロブロック レベルの制御コマンドで示されているように、ホストとアクセラレータで一部の残差デコードが行われることを示します。

ConfigBitstreamRaw が 1 の場合、値は 0 である必要があります。

ConfigHostInverseScan

値が 1 の場合、transform-domain ブロック処理の逆スキャンがホストで実行され、変換係数に対して絶対インデックスが送信されます。 値が 0 の場合、アクセラレータで逆スキャンが実行されます。

ConfigResidDiffAccelerator が 0 の場合、または Config4GroupedCoefs が 1 の場合、値は 0 である必要があります。

ConfigSpecificIDCT

値が 1 の場合、ITU-T Recommendation H.263 の Annex W で指定された IDCT が使用されます。 値が 0 の場合は、準拠している IDCT をオフホスト IDCT に使用できます。

H.263 付録は MPEG-2 corrigendum 2 の IDCT 要件に準拠していないため、MPEG-2 ビデオで使用する場合、値を 1 にすることはできません。

ConfigResidDiffAccelerator が 0 の場合、純粋にホストベースの残差デコードを示す値は 0 である必要があります。

Config4GroupedCoefs

値が 1 の場合、オフホスト IDCT の変換係数は 、DXVA_TCoef4Group 構造体を使用して送信されます。 値が 0 の場合は、 DXVA_TCoefSingle 構造体が使用されます。 ConfigResidDiffAccelerator が 0 の場合、または ConfigHostInverseScan が 1 の場合、値は 0 である必要があります。

ConfigMinRenderTargetBuffCount

デコーダー デバイスが一度に処理するフレームの数を指定します。

ConfigDecoderSpecific

デコーダー固有の構成情報が含まれます。

要件

要件
サポートされている最小のクライアント Windows 8
サポートされている最小のサーバー Windows Server 2012
Header d3d10umddi.h (D3d10umddi.h を含む)

こちらもご覧ください

D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION

DXVA_TCoef4Group

DXVA_TCoefSingle