DXVA_MBctrl_I_HostResidDiff_1構造体 (dxva.h)

DXVA_MBctrl_I_HostResidDiff_1構造体は、ホスト デコーダーによってマクロブロックごとに 1 回アクセラレータに送信され、 画像内のマクロブロック制御コマンドを指定します。

構文

typedef struct _DXVA_MBctrl_I_HostResidDiff_1 {
  WORD  wMBaddress;
  WORD  wMBtype;
  DWORD dwMB_SNL;
  WORD  wPatternCode;
  WORD  wPC_Overflow;
  DWORD dwReservedBits2;
} DXVA_MBctrl_I_HostResidDiff_1;

メンバー

wMBaddress

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

wMBtype

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

Bits 説明
15 から 12 MvertFieldSel_3 (ビット 15、最上位ビット) ~ MvertFieldSel_0 (ビット 12)
macroblock コントロール コマンドで後で送信される、対応するモーション ベクトルの垂直フィールド選択を指定します。 フレームピクチャ構造を持つフレームベースのモーション (H.261 や H.263 など) の場合、これらのビットはすべてゼロである必要があります。 MvertFieldSel_0、 MvertFieldSel_1、MvertFieldSel_2、 およびMvertFieldSel_3のビットは、MPEG-2 のセクション 6.3.17.2 のmotion_vertical_field_select[r][s] ビットに対応します。
11 予約ビット
ゼロを指定してください。
10 HostResidDiff
空間ドメイン残差デコード されたブロックを送信するか、現在のマクロ ブロックのオフホスト IDCT に対して変換係数を送信するかを指定します。
HostResidDiff は、この構造体では常に 1 に等しくなります。 bConfigResidDiffHost が 0 の場合、このフラグは 0 である必要があります。 bConfigResidDiffAccelerator が 0 の場合、このフラグは 1 である必要があります。 bConfigResidDiffHost メンバーと bConfigResidDiffAccelerator メンバーは 、DXVA_ConfigPictureDecode 構造体に含まれています。
9 と 8 MotionType
ゼロを指定してください。
7 と 6 MBscanMethod
これらのビットには意味がないため、0 に設定する必要があります。
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

現在のマクロブロックの後に生成されるスキップされたマクロブロックの数を指定し、現在のマクロブロックのブロックの残差データの位置を示します。 このメンバーには、最上位の 8 ビットの MBskipsFollowing と、下位 24 ビットの MBdataLocation の 2 つの変数が含まれています。 MBskipsFollowing は、現在のマクロ ブロックの後に生成されるスキップされたマクロブロックの数を示します。 MBdataLocation は、残差ブロック データ バッファーへのインデックスです。 このインデックスは、現在のマクロブロックのブロックの残差データの位置を示し、32 ビットの倍数として表されます。

wPatternCode

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

DXVA_ConfigPictureDecode構造体の bConfigSpatialResidInterleaved メンバーが 1 の場合、ホストベースの残差は、使用中の YUV ピクセル形式と一致するクロマインターリーブ形式で送信されます。 この場合、各Cbと空間的に対応するCr対のブロックは、1つの残差構造単位として扱われる。 これにより 、wPatternCode の値や意味は変更されませんが、これらのデータ ブロックのいずれかが wPatternCode に対応するビットセットを持つたびに、Cb データ ブロックと Cr データ ブロックの各ペアの両方のメンバーが送信されることを意味します。 特定のデータ ブロックの wPatternCode のビットが 0 の場合、このペアリングによって wPatternCode ビットが 0 に等しいブロックの残差データ ブロックを送信する必要がある場合は常に、対応する残差データ値を 0 として送信する必要があります。

wPC_Overflow

ゼロを指定してください。

dwReservedBits2

パッキングとアラインメントに使用される予約済みビット。 ゼロを指定してください。

注釈

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

要件

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

こちらもご覧ください

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_PictureParameters

DXVA_TCoefSingle