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 は使用されません。 ConfigResidDiffHost と ConfigResidDiffAccelerator の両方が 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 を含む) |