DXVA_TCoefSingle構造体 (dxva.h)
DXVA_TCoefSingle構造体は、 IDCT 係数値を指定するために、ホスト デコーダーによってアクセラレータに送信されます。
構文
typedef struct _DXVA_TCoefSingle {
WORD wIndexWithEOB;
SHORT TCoefValue;
} DXVA_TCoefSingle, *LPDXVA_TCoefSingle;
メンバー
wIndexWithEOB
このメンバーには、 TCoefIDX と TCoefEOB の 2 つのフィールドが含まれています。
TCoefIDX
DXVA_ConfigPictureDecode構造体の bConfigHostInverseScan メンバーから決定された、ブロック内の係数のスキャン インデックスを指定します。 このフィールドは、 wIndexWithEOB メンバーの最上位 15 ビットに含まれます。
TCoefIDX を使用するには、次の 2 つの方法があります。
- 実行長の順序: bConfigHostInverseScan が 0 の場合、macroblock コントロール コマンドの MBscanMethod 要素は、ジグザグ、代替垂直、または代替水平逆スキャンを示します。 これらのマクロブロック 制御コマンドは、 DXVA_MBctrl_I_OffHostIDCT_1 または DXVA_MBctrl_P_OffHostIDCT_1の構造で定義されます。 この場合、 TCoefIDX には、指定したスキャン順序で現在の係数の前にある 0 値の係数の数が含まれます。これは、ブロックの最後に送信された係数の後に続きます (または、ブロックの先頭に先行しない場合はブロックの開始に対して相対的)。 逆スキャン順序で最後に送信された係数の後の残りの係数は、値が 0 である必要があります。
- 任意の順序: bConfigHostInverseScan が 1 の場合、macroblock コントロール コマンドの MBscanMethod 要素は任意の順序を示します。 これらのマクロ ブロック 制御コマンドは、 DXVA_MBctrl_I_OffHostIDCT_1 と DXVA_MBctrl_P_OffHostIDCT_1 の構造で定義されます。 この場合、 TCoefIDX には、ブロック内の係数のラスター インデックス (TCoefIDX = u + 8 * v、ここで you と v は変換ドメインの水平および垂直周波数座標) が含まれており、送信されない係数には値 0 が暗黙的に含まれます。
TCoefEOB
現在の係数が、変換係数の現在のブロックに関連付けられている最後の係数であるかどうかを示します。 値 1 は、現在の係数がブロックの最後の係数であることを示し、値 0 は、それがないことを示します。 このフィールドは、 wIndexWithEOB メンバーの最下位ビットにあります。
TCoefValue
ブロック内の係数の値を示します。 TCoefValue は、IDCT 操作のアクセラレータに係数値を渡す前に、ホストによって低レベル IDCT 処理要素で指定されている適切な範囲にクリップする必要があります。 MPEG-2 の不一致制御は、必要に応じて、アクセラレータではなくホストの責任でもあります。 (これには、追加の "ファントム" 0 以外の係数を作成する必要がある場合があります)。
注釈
DXVA_TCoefSingle構造体は、HostResidDiff フラグ (DXVA_MBctrl_P_OffHostIDCT_1 または DXVA_MBctrl_I_OffHostIDCT_1 構造体の wMBtype メンバー内のビット 10) が 1 で、DXVA_ConfigPictureDecode構造体の bConfig4GroupedCoefs メンバーがゼロである場合に常に使用されます。
要件
要件 | 値 |
---|---|
Header | dxva.h (Dxva.h を含む) |