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 から 1 を引いた値を指定します。 これは、MPEG-1、MPEG-2、H.263、MPEG-4 の場合は 15 です。
bMacroblockHeightMinus1
マクロ ブロックの宛先輝度サンプルの高さを 1 から 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、4:4:4:4 ブロックの Cb、 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 の場合、すべてのマクロブロックは、DXVA_MBctrl_I_OffHostIDCT_1 または DXVA_MBctrl_I_HostResidDiff_1 マクロブロック制御コマンド構造を使用して送信されます。IntraMacroblock フラグは 1 です。 つまり、画像に対してモーション補正予測は実行されません。 それ以外の場合、図の一部のマクロ ブロックでは、macroblock コントロール コマンドの IntraMacroblock パラメーターが 0 に等しい場合があり、マクロ ブロック コントロール コマンド構造体は、DXVA_MBctrl_P_HostResidDiff_1 構造体または DXVA_MBctrl_P_OffHostIDCT_1 構造体を使用します。
bPicBackwardPrediction
現在の画像のマクロ ブロックに後方予測が含まれるかどうかを示します。 bPicIntra が 1 の場合、bPicBackwardPrediction 0 にする必要があります。 bPicBackwardPrediction ゼロの場合、画像のすべてのマクロ ブロック コントロール コマンド (各DXVA_MBctrl_I_HostResidDiff_1、DXVA_MBctrl_I_OffHostIDCT_1、DXVA_MBctrl_P_HostResidDiff_1、またはDXVA_MBctrl_P_OffHostIDCT_1構造内) で、MotionBackward は 0 である必要があります。 bPicBackwardPrediction が 1 の場合、図の一部のマクロ ブロック MotionBackward 1 に等しい可能性があります。
bBidirectionalAveragingMode
双方向のモーション補正で予測平面を組み合わせる丸め方法を示します (B 画像とデュアルプライム モーションに使用されます)。 値 0 は MPEG-1 と MPEG-2 の丸められた平均 (2 つの整数の中間の値が次の上位の整数に丸められます) を示し、値 1 は H.263 切り捨て平均を示します (2 つの整数の中間の値が次の下位整数に丸められます)。 双方向平均化 必要がない場合、bBidirectionalAveragingMode は 0 である必要があります。
bMVprecisionAndChromaRelation
このメンバーは、輝度モーション ベクトルの精度と、輝度モーション ベクトルからクロミナンス モーション ベクトルがどのように派生するかを示します。
次の表に、指定した輝度モーション ベクトル精度を持つこのメンバーの値と、クロミナンス モーション ベクトルの派生方法の説明を示します。
値の | 説明 |
---|---|
0 | 輝度モーション ベクトルの精度は半サンプルです。 クロミナンスモーションベクトルは、MPEG-2(H.262) に従って輝度モーションベクトルから導き出される。 |
1 | 輝度モーション ベクトルの精度は半サンプルです。 色度運動ベクトルは、H.263 に従って輝度運動ベクトルから導き出される。 |
2 | 輝度モーション ベクトルには、完全なサンプル精度があります。 色度モーション ベクトルは、H.261 に従って輝度モーション ベクトルから派生します (2 で除算し、ゼロから完全なサンプル値に切り捨てます)。 |
3 | 引っ込み思案。 |
bChromaFormat
アクセラレータで予想される予測エラー ブロックの数に影響します。 この変数は MPEG-2 (H.262) で定義されています。 MPEG-1、MPEG-2 Main Profile、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 | Scan メソッド |
---|---|
0 | ジグザグ スキャン (MPEG-2) |
1 | 代替垂直スキャン (MPEG-2) |
2 | 代替水平スキャン (H.263) |
DXVA_ConfigPictureDecode の bConfigHostInverseScan メンバーが 1 の場合、bPicScanMethod によって定義されるスキャン メソッドは次のように設定する必要があります。
bPicScanMethod | Scan メソッド |
---|---|
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 メンバーとは異なります。これは、ビデオ シーケンス全体のグローバル表示ではなく、特定の画像を示すという点で異なります。 bConfigSpatialResid8 が 0 であっても、bPicSpatialResid8 bPicSpatialResid8 が 8 に等しい の画像内 場合があります。
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 つの余分なマクロブロック) を割り当てるか、画像境界内への個々のピクセル アクセスのアドレスのクリッピングを割り当てる必要があります。 この仕様のマクロ ブロック アドレスは、埋め込みを含まない、図の内部のマクロ ブロック用です。
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 メンバーには意味がなく、0 である必要があります。
bReservedBits
これは、パッキングとアラインメントのために予約されています。 0 にする必要があります。
wBitstreamFcodes
生のビットストリーム処理のために MPEG-2 で定義されているモーション ベクター f_code 値を示します。 各 f_code 値は 4 ビットを受け取ります。 これらの値は、次のように 16 ビット ワードにパックされます。
ビット | 形容 |
---|---|
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 ピクチャ コーディング拡張機能のビットストリーム要素との対応によって次のように定義されます。
ビット | 形容 |
---|---|
14 および 15 | IntraDCprecision はintra_dc_precisionと等しくなります。 |
12 および 13 | AnotherPicStructure はpicture_structureと等しくなります。 これは、この構造体の bPicStructure メンバーと等しい必要があります。 |
11 | TopFieldFirst はtop_field_firstと同じです。 |
10 | FrameDCTprediction はframe_pred_frame_dctと等しくなります。 |
9 | コンシールメント CSV はconcealment_motion_vectorsと同じです。 |
8 | QuantScaleType はq_scale_typeと等しくなります。 |
7 | IntraVLCformat はintra_vlc_formatと等しくなります。 |
6 | AlternateScan はalternate_scanと同じです。 |
5 | RepeatFirstField はrepeat_first_fieldと等しくなります (アクセラレータでは必要ありません)。 |
4 | Chrom420typeはchroma_420_typeに等しい(アクセラレータでは不要であり、MPEG-2によってprogressive_frameに等しくなるように制限される)。 |
3 | プログレッシブフレームはprogressive_frameと同じです。 |
0、1、2 | 予約済みビット。 これらは最下位ビットです。 |
bBitstreamConcealmentNeed
DXVA_ConfigPictureDecode 構造体の bConfigBitstreamRaw メンバーが 1 の場合に、ビットストリーム データでエラーが発生する可能性を示します。 bConfigBitstreamRaw ゼロの場合は 0 にする必要があります。
ビデオ アクセラレータは、与えられたデータの内容に関係なく、失敗またはロックアップしないように設計する必要があります。 そのため、ビデオ アクセラレータは、構文エラーの可能性に関するホストの評価に関する情報を持つことが役立つ場合があります。 これは、ビットストリームデコードプロセスを遅くする可能性のあるより複雑なエラー隠しアルゴリズムを呼び出す必要があるかどうかを判断するためです。 このメンバーに使用できる値は次のとおりです (他のすべての値は予約されています)。
価値 | 意味 |
---|---|
0 | ビットストリームには、構文形式で大量のエラーが含まれる可能性はほとんどありません。 |
1 | ビットストリームにエラーが含まれている場合があります。 これらのエラーはまれである可能性があります (たとえば、エラーは 1 時間に 1 回または 2 回)。 |
2 | ビットストリームには、いくつかのエラーが含まれている可能性があります。 これらのエラーは、ユーザー エクスペリエンスに影響を与える可能性のある頻度で発生する可能性があります (たとえば、5 分から 10 分ごとにエラーが発生します)。 |
3 | ビットストリームには、比較的重大で重大で頻繁な構文形式エラー (1 分あたり 1 つ以上のエラーなど) が含まれている可能性があります。 |
bBitstreamConcealmentMethod
DXVA_ConfigPictureDecode 構造体の bConfigBitstreamRaw メンバーが 1 の場合に、エラー隠し処理に推奨される既定の方法を指定します。 bConfigBitstreamRaw ゼロの場合は 0 にする必要があります。 このメンバーに使用できる値は次のとおりです (他のすべての値は予約されています)。
値の | エラーの隠ぺい方法の |
---|---|
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 構造体を使用して形成 マクロブロック制御コマンドによって制御されます。
必要条件
要件 | 価値 |
---|---|
ヘッダー | dxva.h (Dxva.h を含む) |