DXVA_MBctrl_I_OffHostIDCT_1 構造体 (dxva.h)

DXVA_MBctrl_I_OffHostIDCT_1構造体は、ホスト デコーダーによってマクロブロックごとに 1 回アクセラレータに送信され、オフホスト IDCT を使用する場合に 4:2:0 の画像内のマクロブロック制御コマンドを指定します。

構文

typedef struct _DXVA_MBctrl_I_OffHostIDCT_1 {
  WORD  wMBaddress;
  WORD  wMBtype;
  DWORD dwMB_SNL;
  WORD  wPatternCode;
  BYTE  bNumCoef[DXVA_NumBlocksPerMB_420];
} DXVA_MBctrl_I_OffHostIDCT_1;

メンバー

wMBaddress

ラスター スキャン順序で現在のマクロブロックのマクロブロック アドレスを指定します。 マクロブロック アドレスの例については、「 macroblock addresses」を参照してください。

wMBtype

処理するマクロブロックの種類を指定します。 次のビットは、マクロブロック処理を定義します。

Bits 説明
15 から 12 MvertFieldSel_3 (ビット 15、最上位ビット) ~ MvertFieldSel_0 (ビット 12)
ゼロを指定してください。
11 予約ビット
ゼロを指定してください。
10 HostResidDiff
空間ドメインの残差デコードされたブロックを送信するか、または現在のマクロブロックのオフホスト IDCT に対して変換係数を送信するかを指定します。
HostResidDiff フラグは、この構造体では常に 0 に等しくなります。 bConfigResidDiffHost が 0 の場合、このフラグは 0 にする必要があります。 bConfigResidDiffAccelerator が 0 の場合、このフラグは 1 である必要があります。 bConfigResidDiffHost メンバーと bConfigResidDiffAccelerator メンバーは 、DXVA_ConfigPictureDecode 構造体に含まれています。
9 と 8 MotionType
これは、画像内には適用されません。 両方のビットは 0 である必要があります。
7 と 6 MBscanMethod
macroblock コントロール コマンドのスキャン 方法を指定します。 bPicScanFixed が 1 の場合、これは bPicScanMethod と等しい必要があります。
bConfigHostInverseScan が 0 の場合、MBscanMethod は次のいずれかの値になります。
  • ゼロ âˆ' ジグザグ スキャン (MPEG-2 図 7-2)
  • 1 ˆ' 代替垂直スキャン (MPEG-2 図 7-3)
  • 2 ˆ' 代替水平スキャン (H.263 図 I.2 パート a)
bConfigHostInverseScan が 1 の場合、MBscanMethod は 3 と等しくなります。これは、絶対係数アドレスを持つ任意のスキャンです。 bPicScanMethod と bPicScanFixed は 、DXVA_PictureParameters のメンバーです。 bConfigHostInverseScan は、DXVA_ConfigPictureDecodeのメンバーです。
5 FieldResidual
残差ブロックが MPEG-2 で指定されているフィールド IDCT 構造体を使用するかどうかを示します。
DXVA_PictureParametersの bPicStructure メンバーが 1 または 2 の場合は、1 にする必要があります。 MPEG-2 に使用する場合、MPEG-2 構文のframe_pred_frame_DCT フラグが 1 の場合は FieldResidual が 0 である必要があり、マクロブロックにdct_typeがある場合は MPEG-2 構文のdct_type要素と等しい必要があります。
4 H261LoopFilter
ゼロを指定してください。
3 Motion4MV
ゼロを指定してください。
2 MotionBackward
ゼロを指定してください。
1 MotionForward
ゼロを指定してください。
0 IntraMacroblock
1 にする必要があります。

dwMB_SNL

wPatternCode

マクロブロック内の各ブロックに対して残差データが送信されるかどうかを示します。 画像内では、マクロブロック内のすべてのブロックに対して残差データが送信されます。 現在のマクロブロックのすべてのブロックを参照する wPatternCode のビットは、DXVA_MBctrl_I_OffHostIDCT_1で 1 である必要があります。

wPatternCode のビット (11-i) (ビット 0 が最下位ビット) は、ブロック i に対して残差データが送信されるかどうかを示します。ここで、i は MPEG-2 の図 6-10、6-11、および 6-12 (Y のラスター スキャン順序、ラスター スキャン順の Cb の 4:2:0 ブロック) で指定されているマクロ ブロック内のブロックのインデックスです。 次に Cr の 4:2:0 ブロック、Cb の 4:2:2 ブロック、Cr の 4:2:2 ブロック、Cb の 4:4:4 ブロック、Cr の 4:4:4 ブロックが続きます。 コード化されたブロック (ビット (11-i) が 1 と等しいブロック) のデータは、同じインデックス作成順序 (増加 i) の残余コーディング バッファーにあります。 4:2:0 MPEG-2 データの場合、 wPatternCode の値は、CBP (コード化されたブロック パターン) のデコードされた値を 6 ビット位置 (4:2:2 および 4:4:4 の彩度形式に使用される下位ビット位置) で左にシフトすることに対応します。

bNumCoef[DXVA_NumBlocksPerMB_420]

bNumCoef 配列の各値は、マクロブロックの各ブロック i の残差データ バッファー内の係数の数を示します。

配列添字 i は、MPEG-2 ビデオ図 6-10、6-11、6-12 (Y のラスター スキャン順序、Cb の後に Cr が続く) で指定されているマクロブロック内のブロックのインデックスです。

このメンバーは、 HostResidDiff フラグ ( wMBtype のビット 10) が 0 で、 bChromaFormat が 1 (4:2:0) の場合にのみ使用されます。 4:2:2 または 4:4:4 形式で使用すると、一般的なマクロブロック 制御コマンドのサイズが重要なメモリアラインメント境界を超えて大きくなります。 その結果、DXVA_TCoefSingle構造体内の TCoefEOB ビットは、4:2:0 以外のケースで各ブロックの係数の数を決定するために使用されます。

bNumCoef の目的は、残差データ バッファー内の各ブロックに存在するデータの量を示し、存在する係数の数として表します。 DXVA_ConfigPictureDecode構造体の bConfig4GroupedCoefs メンバーが 1 の場合、bNumCoef には、ブロックに対して送信された実際の係数数か、4 の倍数に切り上げられた値が含まれる場合があります。 これらの係数のデータは、同じ順序で残差バッファーにあります。

注釈

スキップされたマクロブロックは画像内では使用されないため、 MBskipsFollowing 変数は 0 である必要があります。 MBdataLocation 変数は、macroblock コントロール コマンド バッファー内の最初のマクロブロックに対して 0 である必要があります。 スキップされたマクロブロックの生成方法の詳細については、「 スキップされたマクロブロックの生成」を参照してください。

要件

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

こちらもご覧ください

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle