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 は次のいずれかの値です。
|
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 を含む) |