次の方法で共有


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 つあります。

  1. 実行長の順序付け: bConfigHostInverseScan が 0 の場合、マクロ ブロック 制御コマンドの MBscanMethod 要素は、ジグザグ、代替垂直、または代替水平逆スキャンを示します。 これらのマクロ ブロック 制御コマンドは、DXVA_MBctrl_I_OffHostIDCT_1 または DXVA_MBctrl_P_OffHostIDCT_1の構造体で定義されています。 この場合、TCoefIDX には、指定したスキャン順序で現在の係数の前にある 0 値の係数の数が含まれます。これは、ブロックの最後に送信された係数の後 (または、前に存在しない場合はブロックの開始に対する相対係数) です。 逆スキャン順序で最後に送信された係数の後の残りの係数には、値 0 が含まれます。
  2. 任意の順序: bConfigHostInverseScan が 1 の場合、マクロ ブロック 制御コマンドの MBscanMethod 要素は任意の順序を示します。 これらのマクロ ブロック 制御コマンドは、DXVA_MBctrl_I_OffHostIDCT_1DXVA_MBctrl_P_OffHostIDCT_1の構造体で定義されています。 この場合、TCoefIDX には、ブロック内の係数のラスター インデックス (TCoefIDX = u + 8 * v、ここで、you と v は変換ドメインの水平および垂直周波数座標) が含まれ、送信されない係数には値 0 が暗黙的に含まれます。
TCoefIDX は常に 64 未満である必要があります。

TCoefEOB

現在の係数が、変換係数の現在のブロックに関連付けられている最後の係数であるかどうかを示します。 値 1 は、現在の係数がブロックの最後の係数であることを示し、値 0 は、それがないことを示します。 このフィールドは、wIndexWithEOB メンバーの下位ビットにあります。

TCoefValue

ブロック内の係数の値を示します。 TCoefValue は、IDCT 操作の係数値をアクセラレータに渡す前に、ホストによって Low-Level IDCT 処理要素で指定されている適切な範囲 クリップする必要があります。 必要に応じて MPEG-2 の不一致制御も、アクセラレータではなくホストの責任です。 (これには、追加の "ファントム" ゼロ以外の係数を作成する必要がある場合があります)。

備考

DXVA_TCoefSingle構造体は、HostResidDiff フラグ (DXVA_MBctrl_P_OffHostIDCT_1 または DXVA_MBctrl_I_OffHostIDCT_1 構造体の wMBtype メンバーのビット 10) が 1 で、DXVA_ConfigPictureDecode 構造体の bConfig4GroupedCoefs メンバーが 0 の場合に使用されます。

必要条件

要件 価値
ヘッダー dxva.h (Dxva.h を含む)

関連項目

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_OffHostIDCT_1