DXVA_PictureParameters構造体 (dxva.h)
DXVA_PictureParameters構造体は、アクセラレータでデコードするために圧縮されたピクチャのピクチャ レベル パラメーターを提供するために、ホスト デコーダーによってアクセラレータに送信されます。
構文
typedef struct _DXVA_PictureParameters {
WORD wDecodedPictureIndex;
WORD wDeblockedPictureIndex;
WORD wForwardRefPictureIndex;
WORD wBackwardRefPictureIndex;
WORD wPicWidthInMBminus1;
WORD wPicHeightInMBminus1;
BYTE bMacroblockWidthMinus1;
BYTE bMacroblockHeightMinus1;
BYTE bBlockWidthMinus1;
BYTE bBlockHeightMinus1;
BYTE bBPPminus1;
BYTE bPicStructure;
BYTE bSecondField;
BYTE bPicIntra;
BYTE bPicBackwardPrediction;
BYTE bBidirectionalAveragingMode;
BYTE bMVprecisionAndChromaRelation;
BYTE bChromaFormat;
BYTE bPicScanFixed;
BYTE bPicScanMethod;
BYTE bPicReadbackRequests;
BYTE bRcontrol;
BYTE bPicSpatialResid8;
BYTE bPicOverflowBlocks;
BYTE bPicExtrapolation;
BYTE bPicDeblocked;
BYTE bPicDeblockConfined;
BYTE bPic4MVallowed;
BYTE bPicOBMC;
BYTE bPicBinPB;
BYTE bMV_RPS;
BYTE bReservedBits;
WORD wBitstreamFcodes;
WORD wBitstreamPCEelements;
BYTE bBitstreamConcealmentNeed;
BYTE bBitstreamConcealmentMethod;
} DXVA_PictureParameters, *LPDXVA_PictureParameters;
メンバー
wDecodedPictureIndex
デコードされたマクロブロックの宛先フレーム バッファーを指定します。
wDeblockedPictureIndex
bPicDeblocked が 1 の場合に、ブロック解除された出力画像の宛先フレーム バッファーを指定します。 このメンバーは意味がなく、 bPicDeblocked が 0 の場合は 0 にする必要があります。 このメンバーは 、wDecodedPictureIndex と同じにすることができます。
wForwardRefPictureIndex
現在の画像の前方予測の参照図として使用する図のフレーム バッファー インデックスを指定します。 wDecodedPictureIndex と同じにすることはできません。 bPicIntra が 1 の場合、このメンバーは0xFFFFする必要があります。
wBackwardRefPictureIndex
現在の図の後方予測の参照図として使用する図のフレーム バッファー インデックスを指定します。 後方参照モーション予測を使用する場合、このメンバーは wDecodedPictureIndex と同じにすることはできません。 bPicBackwardPrediction が 0 の場合、このメンバーは0xFFFFする必要があります。
wPicWidthInMBminus1
現在の図の幅をマクロブロックの単位で指定し、マイナス 1 を指定します。 マクロブロック内の図の幅は、 wPicWidthInMBminus1 に 1 を追加することによって派生します。
wPicHeightInMBminus1
現在の図の高さをマクロブロックの単位で指定し、1 を引いた値を指定します。 マクロブロック内の図の高さは、 wPicHeightInMBminus1 に 1 を追加することによって派生します。
bMacroblockWidthMinus1
マクロブロックの宛先輝度サンプル幅を 1 を引いた値を指定します。 これは、MPEG-1、MPEG-2、H.263、MPEG-4 の場合は 15 です。
bMacroblockHeightMinus1
マクロ ブロックの宛先輝度サンプルの高さを 1 を引いた値を指定します。 MPEG-1、MPEG-2、H.261、H.263、MPEG-4 の場合、これは 15 と等しくなります。
bBlockWidthMinus1
残差ブロックのブロック幅から 1 を引いた値を指定します。 MPEG-1、MPEG-2、H.261、H.263、MPEG-4 の場合、これは 7 と等しくなります。 DXVA_ConfigPictureDecode構造体の bConfig4GroupedCoefs メンバーが 1 の場合、これは 7 です。 マクロブロック内の残差ブロックは、MPEG-2 図 6-10 のように指定された順序で送信されます。 6-11、および 6-12 (Y のラスター スキャン順序、ラスター スキャン順の Cb のすべての 4:2:0 ブロック、Cr の 4:2:0 ブロック、Cb の 4:2:2 ブロック、4:2:2 ブロックの Cr、続いて Cb の 4:4:4 ブロック、 4:4:4 ブロックの Cr) が続きます。 WT と呼ばれる派生用語は、bBlockWidthMinus1 に 1 を追加することによって形成されます。
bBlockHeightMinus1
残差ブロックのブロックの高さを指定します(マイナス 1)。 MPEG-1、MPEG-2、H.261、H.263、MPEG-4 の場合、これは 7 と等しくなります。 bConfig4GroupedCoefs が 1 の場合、これは 7 です。 HT と呼ばれる派生用語は、bBlockHeightMinus1 に 1 を追加することによって形成されます。
bBPPminus1
ビデオ サンプル値のピクセルあたりのビット数を 1 を引いた値を指定します。 これは少なくとも 7 です (8 ビット ピクセルを示します)。 MPEG-1、MPEG-2、H.261、H.263 の場合、これは 7 と等しくなります。 MPEG-4 の一部の動作モードでは、ピクセルあたりのビット数が大きくなります。 BPP と呼ばれる派生用語は、bBPPminus1 に 1 を追加することによって形成されます。
bPicStructure
現在の図がトップ フィールドの図 (値 1)、下のフィールドの図 (値 2)、またはフレーム図 (値 3) であるかどうかを示します。 H.261 のようなプログレッシブ スキャン フレーム構造化コーディングでは、 bPicStructure は 3 です。 派生値 PicCurrentField は、 bPicStructure が 2 (下のフィールド) でない限り、0 として定義されます。 その場合は 1 です。 このメンバーは、MPEG-2 (H.262) のセクション 6.3.10 および表 6-14 で定義されているpicture_structure変数と同じ意味を持ちます。
bSecondField
フィールド構造化コーディングの場合 ( bPicStructure が 1 または 2 の場合)、現在のフィールドが図の 2 番目のフィールドかどうかを示します。 これは、モーション補正予測の対パリティ線の参照として使用される逆パリティ フィールドが、参照画像の逆パリティ フィールドか、現在の図の反対パリティ フィールドかを判断するために使用されます。 bSecondField が 1 の場合、現在のフィールドは図の 2 番目のフィールドであり、モーション補正の逆パリティ線の参照として使用されるフィールドは、現在の図の逆パリティ線です。 (どちらの場合も、モーション補正の同じパリティ線の参照として使用されるフィールドは、参照図の同じパリティ線です)。それ以外の場合、 bSecondField は 0 です。
bPicIntra
この画像にモーション補正予測が必要かどうかを示します。 bPicIntra が 1 の場合、すべてのマクロブロックは、intraMacroblock フラグが 1 に等しいDXVA_MBctrl_I_OffHostIDCT_1またはDXVA_MBctrl_I_HostResidDiff_1マクロブロック制御コマンド構造で送信されます。 つまり、画像に対してモーション補正予測は実行されません。 それ以外の場合、図の一部のマクロブロックには、macroblock コントロール コマンドの IntraMacroblock パラメーターが 0 に等しい場合があり、macroblock コントロール コマンド構造では 、DXVA_MBctrl_P_HostResidDiff_1 構造体または DXVA_MBctrl_P_OffHostIDCT_1 構造体が使用されます。
bPicBackwardPrediction
現在の画像のマクロブロックに後方予測が含まれるかどうかを示します。 bPicIntra が 1 の場合、bPicBackwardPrediction は 0 である必要があります。 bPicBackwardPrediction が 0 の場合、画像のすべてのマクロ ブロック 制御コマンド (各DXVA_MBctrl_I_HostResidDiff_1、DXVA_MBctrl_I_OffHostIDCT_1、DXVA_MBctrl_P_HostResidDiff_1、またはDXVA_MBctrl_P_OffHostIDCT_1構造内) で MotionBackward をゼロにする必要があります。 bPicBackwardPrediction が 1 の場合、画像の一部のマクロ ブロックの MotionBackward が 1 に等しい場合があります。
bBidirectionalAveragingMode
双方向モーション補正で予測プレーンを組み合わせる丸め方法を示します (B 画像とデュアルプライム モーションに使用されます)。 値 0 は、MPEG-1 と MPEG-2 の丸められた平均を示します (2 つの整数の中間の値は次の高い整数に上に丸められます)。値 1 は H.263 切り捨て平均を示します (2 つの整数の中間の値が次の下位整数に丸められます)。 双方向平均化が必要ない場合は、bBidirectionalAveragingMode を 0 にする必要があります。
bMVprecisionAndChromaRelation
このメンバーは、輝度モーション ベクトルの精度と、輝度モーション ベクトルからクロミナンス モーション ベクトルがどのように派生するかを示します。
次の表に、指定した輝度モーション ベクトルの精度を持つこのメンバーの値と、クロミナンス モーション ベクトルの派生方法を示します。
Value | 説明 |
---|---|
0 | 輝度モーション ベクトルには、半標本精度があります。 クロミナンスモーションベクトルは、 MPEG-2(H.262) に従って輝度モーションベクトルから派生する。 |
1 | 輝度モーション ベクトルには、半標本精度があります。 クロミナンスモーションベクトルは、 H.263 に従って輝度運動ベクトルから導き出される。 |
2 | 輝度モーション ベクトルには、完全なサンプル精度があります。 Chrominance モーション ベクトルは、 H.261 に従って輝度モーション ベクトルから派生します (2 で除算し、0 から完全なサンプル値に切り捨てます)。 |
3 | 予約済み。 |
bChromaFormat
アクセラレータで予期される予測エラー ブロックの数に影響します。 この変数は MPEG-2 (H.262) で定義されています。 MPEG-1、MPEG-2 メイン プロファイル、H.261 および H.263 ビットストリームの場合、この値は常に 4:2:0 形式を示す 1 に設定する必要があります。 値が 2 の場合、これは 4:2:2 を示し、値が 3 の場合は 4:4:4 サンプリングを示します。 DXVA_ConfigPictureDecodeの bConfig4GroupedCoefs メンバーが 1 の場合、このメンバーは 1 である必要があります (bConfig4GroupedCoefs 操作には、4:2:2 および 4:4:4 形式の係数データ内に必要な EOB 表示が含まれていないためです)。
注意
水平彩度の座位は、H.261、H.263、MPEG-1 と MPEG-2 と MPEG-4 で若干異なります。 この違いは、無視できるほど小さいものと見なされます。
bPicScanFixed
残差ブロックのアクセラレータ ベースの IDCT 処理を使用する場合、このフラグの値 1 は、画像内のすべてのマクロ ブロックで逆スキャン メソッドが同じであることを示します。 0 の値は、そうでないことを示します。 bConfigHostInverseScan メンバーが 1 の場合、または bConfigResidDiffAccelerator メンバーが DXVA_ConfigPictureDecode で 0 の場合、このメンバーは 1 である必要があります。
bPicScanMethod
bPicScanFixed が 1 の場合の図の固定逆スキャン方法を示します。 bPicScanFixed が 0 の場合、このメンバーには意味がなく、値が 0 である必要があります。
DXVA_ConfigPictureDecode の bConfigHostInverseScan メンバーが 0 の場合、このメンバーによって定義されるスキャン メソッドは次のいずれかになります。
bPicScanMethod | スキャン方法 |
---|---|
0 | ジグザグ スキャン (MPEG-2) |
1 | 代替垂直スキャン (MPEG-2) |
2 | 代替水平スキャン (H.263) |
DXVA_ConfigPictureDecode の bConfigHostInverseScan メンバーが 1 の場合、bPicScanMethod によって定義されるスキャン メソッドは次のように設定する必要があります。
bPicScanMethod | スキャン方法 |
---|---|
3 | 絶対係数アドレスを持つ任意のスキャン。 |
bPicReadbackRequests
現在の図に対して読み取り戻し制御要求が発行されるかどうかを示します。 値 1 は、読み取り戻し要求が存在することを示し、値 0 は、要求が存在しないことを示します。 読み取り戻し要求は、マクロブロックの値が最終的にデコードされ、ブロック解除された図で読み取り戻されることを示します ( wDeblockedPictureIndex が wDecodedPictureIndex と等しい場合は、ブロック解除が適用されます)。
bRcontrol
半標本モーション補正に使用する丸め方法を定義します。 この変数は、H.263 セクション 6.1.2 で定義されています。 値 0 は、MPEG-1、MPEG-2、および H.263 の最初のバージョンで見つかった半サンプル丸め方法を示します。 値 1 は、H.263 および MPEG-4 のオプション モードで選択できる下向きの平均バイアスを含む丸め方法を示します。 H.261 には半サンプルモーション補正がないため、H.261 では意味がありません。 これらの標準で定義されている丸め演算子に準拠するには、すべての MPEG-1 ビットストリームと MPEG-2 ビットストリームに対して 0 に設定する必要があります。
bPicSpatialResid8
空間ドメイン差分ブロックをホストからアクセラレータに送信する方法を示します。 値 1 は、ホストベースの残差デコード用の空間ドメイン差分ブロックを 8 ビット サンプルを使用して送信できることを示し、0 の値は、それができないことを示します。
DXVA_ConfigPictureDecode の bConfigResidDiffHost メンバーが 0 の場合、または BPP が 8 より大きい場合、このメンバーは 0 である必要があります。 BPP が 8、bPicIntra が 1、bConfigResidDiffHost が 1 の場合、このメンバーは 1 である必要があります。 DXVA_ConfigPictureDecode の bConfigSpatialResid8 メンバーが 1 の場合、このメンバーは 1 である必要があります。
このメンバーが 1 に等しい場合、空間ドメイン内マクロブロックは 8 ビット値 (DXVA_ConfigPictureDecode の bConfigIntraResidUnsigned メンバーによって決定される符号付きまたは符号なしのいずれか) として送信され、空間ドメインの非イントラ マクロブロックの相違は、モーション補正された予測に対して符号付き 8 ビット差分値として送信されます。
bPicSpatialResid8 メンバーは、DXVA_ConfigPictureDecodeの bConfigSpatialResid8 メンバーとは異なります。これは、ビデオ シーケンス全体のグローバル表示ではなく、特定の画像を示す指標であるという点です。 BPP が 8 に等しい画像内などでは、bConfigSpatialResid8 が 0 であっても、bPicSpatialResid8 は 1 になります。
bPicOverflowBlocks
オーバーフロー ブロックを使用して、空間ドメイン差分ブロックがホストからアクセラレータに送信されるかどうかを示します。 値 1 は、画像のホストベースの残差デコードの空間ドメイン差ブロックがオーバーフロー ブロックを使用して送信される可能性があることを示します。 値が 0 の場合は、オーバーフロー ブロックを使用して空間ドメイン差分ブロックが送信されないことを示します。 bConfigResidDiffHost が 0 の場合、または bConfigSpatialResid8 が 0 の場合、または BPP が 8 より大きい場合、このメンバーは 0 である必要があります。 パラメーター bConfigResidDiffHost と bConfigSpatialResid8 は 、DXVA_ConfigPictureDecodeのメンバーです。 bPicOverflowBlocks は、 特定の画像にオーバーフロー ブロックが存在するかどうかを示します。 BPP が 8 に等しい内部図では、この場合オーバーフロー ブロックは必要がないため、bPicOverflowBlocks は 0 である必要があります。
bPicExtrapolation
H.263 Annex D および MPEG-4 で指定されているように、画像境界上のモーション ベクトルを許可するかどうかを示します。 これには、デコードされた画像サイズよりも 2 つのマクロブロック幅 (左に 1 つ、右側にもう 1 つのマクロブロック) と 2 つのマクロブロックの高さ (上部に 1 つ、下部にもう 1 つのマクロブロック) である画像プレーンの割り当て、または画像境界内への個々のピクセル アクセスのアドレスのクリッピングが必要です。 この仕様の Macroblock アドレスは、画像の内部のマクロブロック用であり、パディングは含まれません。
bPicDeblocked
この図に対して非ブロック化コマンドを送信して、ブロック解除された出力画像を作成するかどうかを示します。 ブロック解除された出力図は、 wDeblockedPictureIndex によって示される画像バッファーに配置されます。 bPicDeblocked が 1 の場合、デブロッキング コマンドが送信され、ブロック解除されたフレームが生成されます。 bPicDeblocked が 0 の場合、デブロッキング コマンドは送信されません。また、ブロック解除された画像は生成されません。
bPicDeblockConfined
フィルター コマンド バッファーのブロック解除によって、フィルター操作のブロック解除の効果が、デブロック フィルター コマンド バッファーに含まれる一連のマクロ ブロックに限定されるかどうかを示します。
bPic4MVallowed
H.263 Annexes F および J で使用されているように、マクロブロックごとに 4 つの前方参照モーション ベクトルを使用できるかどうかを指定します。
bPicOBMC
H.263 Annex F で指定されているように、現在の画像のモーション補正が重複ブロックモーション補正 (OBMC) を使用して動作するかどうかを指定します。 bPic4MVallowed が 0 の場合はゼロにする必要があります。
bPicBinPB
図の双方向予測マクロ ブロックで PB フレームモーション補正で B-picture を使用するかどうかを指定します。 これにより、各マクロ ブロックの双方向予測領域は、H.263 の Annexes G と M で指定されているように、後方参照図の対応するマクロ ブロックの領域に制限されます。
bMV_RPS
モーション ベクトル参照図の選択の使用を指定します。 bMV_RPSが 1 の場合、図全体の前方および後方のモーション 画像インデックスではなく、各モーション ベクトルに対して参照図インデックスが送信されることを示します。 bMV_RPSが 1 の場合、wForwardRefPictureIndex メンバーと wBackwardRefPictureIndex メンバーは意味がなく、ゼロである必要があります。
bReservedBits
これは、パッキングと配置のために予約されています。 ゼロを指定してください。
wBitstreamFcodes
生のビットストリーム処理のために MPEG-2 で定義されているモーション ベクトル f_code 値を示します。 各 f_code 値は 4 ビットを受け取ります。 これらの値は、次のように 16 ビット ワードにパックされます。
Bits | 説明 |
---|---|
12 ~ 15 (最上位ビット) | f_code[0][0]: 前方水平f_code |
8 から 11 | f_code[0][1]: 垂直方向の前方f_code |
4 から 7 | f_code[1][0]: 後方水平f_code |
0 ~ 3 (下位ビット) | f_code[1][1]: 後方の垂直f_code |
DXVA_ConfigPictureDecode構造体の bConfigBitstreamRaw メンバーが 1 の場合、wBitstreamFcodes には 4 つのモーション ベクトルf_code値が含まれます。 bConfigBitstreamRaw が 1 で、ビットストリーム データの構造、または関連するビデオ コーディング ビットストリーム構文 (H.261 や H.263 など) でf_code値が不要なため、4 つのf_code値のいずれかが不要または無関係である場合、それぞれの無関係なf_code値は0xF。
DXVA_ConfigPictureDecode構造体の bConfigBitstreamRaw メンバーが 0 の場合、wBitstreamFcodes は0xFFFFに設定されます (すべてのf_code値は0xFに設定されます)。
注意
MPEG-1 ビットストリームは、この情報を別の形式で提供します。 そのため、MPEG-1 ビットストリームの場合、f_code[0][0] と f_code[0][1] は MPEG-1 のforward_f_codeと等しく、f_code [1][0] と f_code [1][1] は MPEG-1 のbackward_f_codeと等しくなります。
wBitstreamPCEelements
DXVA_ConfigPictureDecodeの bConfigBitstreamRaw メンバーが 1 の場合、このメンバーには MPEG-2 ビデオのビットストリーム デコード プロセスに必要なフラグのセットが含まれます。 bConfigBitstreamRaw が 0 で MPEG-2 以外のビデオの場合は、この値は使用されず、0 である必要があります。 このメンバーのビットは、MPEG-2 ピクチャ コーディング拡張機能のビットストリーム要素との対応によって次のように定義されます。
Bits | 説明 |
---|---|
14 および 15 | IntraDCprecision は、intra_dc_precisionと等しくなります。 |
12 と 13 | AnotherPicStructure は、picture_structureと等しくなります。 これは、この構造体の bPicStructure メンバーと等しい必要があります。 |
11 | TopFieldFirst は、top_field_firstと等しくなります。 |
10 | FrameDCTprediction は、frame_pred_frame_dctと等しくなります。 |
9 | HiddenmentMV は、concealment_motion_vectorsと同じです。 |
8 | QuantScaleType は、q_scale_typeと等しくなります。 |
7 | IntraVLCformat は、intra_vlc_formatと等しくなります。 |
6 | AlternateScan は、alternate_scanと等しくなります。 |
5 | RepeatFirstField は、repeat_first_fieldと等しくなります (アクセラレータでは必要ありません)。 |
4 | Chroma420type は、chroma_420_typeと等しくなります (アクセラレータでは不要であり、MPEG-2 によってprogressive_frameに制限されます)。 |
3 | プログレッシブフレームはprogressive_frameと等しくなります。 |
0、1、および 2 | 予約済みビット。 これらは最下位ビットです。 |
bBitstreamConcealmentNeed
DXVA_ConfigPictureDecode構造体の bConfigBitstreamRaw メンバーが 1 の場合に、ビットストリーム データにエラーが発生する可能性を示します。 bConfigBitstreamRaw が 0 の場合は、0 にする必要があります。
ビデオ アクセラレータは、与えられたデータの内容に関係なく、失敗したりロックアップしたりしないように設計する必要があります。 そのため、ビデオ アクセラレータは、構文エラーの可能性に関するホストの評価に関する情報を持つことが役立つ場合があります。 これは、ビットストリームデコードプロセスを遅くする可能性のあるより複雑なエラー隠しアルゴリズムを呼び出す必要があるかどうかを判断するためのものです。 このメンバーに使用できる値は次のとおりです (他のすべての値は予約されています)。
値 | 意味 |
---|---|
0 | ビットストリームに構文形式で大量のエラーが含まれる可能性は低くなります。 |
1 | ビットストリームにエラーが含まれている場合があります。 これらのエラーは頻度が低い可能性があります (たとえば、1 時間に 1 回または 2 回のエラー)。 |
2 | ビットストリームにはいくつかのエラーが含まれている可能性があります。 これらのエラーは、ユーザー エクスペリエンスに影響を与える可能性がある頻度 (たとえば、5 分から 10 分ごとにエラー) で発生する可能性があります。 |
3 | ビットストリームには、比較的重要で深刻で頻繁な構文形式エラー (1 分あたり 1 つ以上のエラーなど) が含まれている可能性があります。 |
bBitstreamConcealmentMethod
DXVA_ConfigPictureDecode構造体の bConfigBitstreamRaw メンバーが 1 の場合に、エラー隠し処理に推奨される既定の方法を指定します。 bConfigBitstreamRaw が 0 の場合は、0 にする必要があります。 このメンバーに使用できる値は次のとおりです (他のすべての値は予約されています)。
Value | Error Hiddenment メソッド |
---|---|
0 | 不明または未指定。 |
1 | 画像内の空間画像内の隠ぺい。 |
2 | 画像間の隠ぺいのための前方動き参照図 ( 通常は、P 図 または B 画像 で、その後方モーション参照画像よりも前方モーション参照画像に近い画像で使用されます)。 |
3 | 画像間の隠ぺいのための後方モーション参照図 (前方モーション参照図よりも後方モーション参照画像に近い B 画像で使用される方が一般的)。 |
注釈
この構造体の特定のメンバーは、 DXVA_ConfigPictureDecode 構造体を使用して確立された構成によって、特定の値に制限されます。 図レベルのパラメーターがDXVA_PictureParametersを使用して伝達された後、図のデコード プロセスは、主に、DXVA_MBctrl_I_HostResidDiff_1、DXVA_MBctrl_I_OffHostIDCT_1、DXVA_MBctrl_P_HostResidDiff_1、またはDXVA_MBctrl_P_OffHostIDCT_1構造体を使用して形成されたマクロブロック 制御コマンドによって制御されます。
要件
要件 | 値 |
---|---|
Header | dxva.h (Dxva.h を含む) |