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
現在のマクロ ブロックのマクロ ブロック アドレスをラスター スキャン順に指定します。 マクロ ブロック アドレスの例については、マクロ ブロック アドレス 参照してください。
wMBtype
処理するマクロ ブロックの種類を指定します。 次のビットはマクロ ブロック処理を定義します。
ビット | 説明 |
---|---|
15 から 12 | MvertFieldSel_3 (ビット 15、最上位ビット) ~ MvertFieldSel_0 (ビット 12) マクロ ブロック コントロール コマンドで後で送信される、対応するモーション ベクトルの垂直フィールド選択を指定します。 フレーム 画像構造を持つフレーム ベースのモーション (H.261 や H.263 など) の場合、これらのビットはすべて 0 である必要があります。 MvertFieldSel_0、MvertFieldSel_1、 MvertFieldSel_2、およびMvertFieldSel_3のビットは、MPEG-2 のセクション 6.3.17.2 のmotion_vertical_field_select[r][s] ビットに対応します。 |
11 |
予約ビット 0 にする必要があります。 |
10 |
HostResidDiff 空間ドメインの残差デコードされたブロックを送信するか、現在のマクロ ブロックのオフホスト IDCT に対して変換係数を送信するかを指定します。 HostResidDiff は、この構造体では常に 1 に等しくなります。 bConfigResidDiffHost が 0 の場合、このフラグは 0 にする必要があります。 bConfigResidDiffAccelerator が 0 の場合、このフラグは 1 である必要があります。 bConfigResidDiffHost メンバーと bConfigResidDiffAccelerator メンバーは、DXVA_ConfigPictureDecode 構造体に含まれています。 |
9 と 8 |
MotionType 0 にする必要があります。 |
7 と 6 | MBscanMethod の これらのビットには意味がなく、ゼロに設定する必要があります。 |
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
現在のマクロブロックの後に生成されるスキップされたマクロブロックの数を指定し、現在のマクロブロックのブロックの残差データの位置を示します。 このメンバーには、最上位の 8 ビット MBskipsFollowing と、下位 24 ビットの MBdataLocation の 2 つの変数が含まれています。 MBskipsFollowing は、現在のマクロ ブロックの後に生成されるスキップされたマクロ ブロックの数を示します。 MBdataLocation は、残差ブロック データ バッファーへのインデックスです。 このインデックスは、現在のマクロ ブロックのブロックの残差データの位置を示します。これは、32 ビットの倍数として表されます。
wPatternCode
マクロ ブロック内のブロックごとに残差データが送信されるかどうかを示します。 図内では、マクロ ブロック内のすべてのブロックに対して残差データが送信されます。 現在のマクロ ブロックのすべてのブロック 参照する wPatternCode 内のビットは、この構造体で 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 ブロックが続きます。 コード化されたブロックのデータ (ビット (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
0 にする必要があります。
dwReservedBits2
パッキングとアラインメントに使用される予約済みビット。 0 にする必要があります。
備考
スキップされたマクロ ブロックは画像内では使用されないため、MBskipsFollowing 変数は 0 である必要があります。 MBdataLocation 変数は、macroblock コントロール コマンド バッファー内の最初のマクロブロックに対して 0 である必要があります。 スキップされたマクロ ブロックの生成方法の詳細については、「スキップされたマクロ ブロックの生成 を参照してください。
必要条件
要件 | 価値 |
---|---|
ヘッダー | dxva.h (Dxva.h を含む) |