次の方法で共有


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

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

wMBtype

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

ビット 説明
15 から 12 MvertFieldSel_3 (ビット 15、最上位ビット) ~ MvertFieldSel_0 (ビット 12)
0 にする必要があります。
11 予約ビット
0 にする必要があります。
10 HostResidDiff
空間ドメインの残差デコードされたブロックを送信するか、現在のマクロ ブロックのオフホスト IDCT に対して変換係数を送信するかを指定します。
HostResidDiff フラグは、この構造体では常に 0 に等しくなります。 bConfigResidDiffHost が 0 の場合、このフラグは 0 にする必要があります。 bConfigResidDiffAccelerator が 0 の場合、このフラグは 1 である必要があります。 bConfigResidDiffHost メンバーと bConfigResidDiffAccelerator メンバーは、DXVA_ConfigPictureDecode 構造体に含まれています。
9 と 8 MotionType
これは、画像内には適用されません。 両方のビットが 0 である必要があります。
7 と 6 MBscanMethod
マクロブロック制御コマンドのスキャン方法を指定します。 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
0 にする必要があります。
3 Motion4MV
0 にする必要があります。
2 MotionBackward
0 にする必要があります。
1 MotionForward
0 にする必要があります。
0 IntraMacroblock
1 にする必要があります。

dwMB_SNL

wPatternCode

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

wPatternCode のビット (11-i) は、ブロック 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 ブロック、4:4:4 ブロックの Cr ブロックが続きます。 コード化されたブロックのデータ (ビット (11-i) が 1 に等しいブロック) は、同じインデックス作成順序 (iの増加) で残余コーディング バッファーに見つかります。 4:2:0 MPEG-2 データの場合、wPatternCode の値は、CBP のデコードされた値 (コード化されたブロック パターン) を 6 ビット位置 (4:2:2 および 4:4:4 のクロム形式で使用される下位ビット位置) で左にシフトすることに対応します。

bNumCoef[DXVA_NumBlocksPerMB_420]

bNumCoef 配列内の各値は、マクロ ブロックの各ブロック 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 である必要があります。 スキップされたマクロ ブロックの生成方法の詳細については、「スキップされたマクロ ブロックの生成 を参照してください。

必要条件

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

関連項目

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle