DXVA_BufferDescription構造体 (dxva.h)

DXVA_BufferDescription構造体は、ホスト デコーダーによってアクセラレータに送信され、現在ホストからアクセラレータに渡されているバッファーに関する情報をアクセラレータに提供します。

構文

typedef struct _DXVA_BufferDescription {
  DWORD dwTypeIndex;
  DWORD dwBufferIndex;
  DWORD dwDataOffset;
  DWORD dwDataSize;
  DWORD dwFirstMBaddress;
  DWORD dwNumMBsInBuffer;
  DWORD dwWidth;
  DWORD dwHeight;
  DWORD dwStride;
  DWORD dwReservedBits;
} DXVA_BufferDescription, *LPDXVA_BufferDescription;

メンバー

dwTypeIndex

アクセラレータに渡されるバッファーの種類を識別します。 次の表に、数値識別子と関連付けられているバッファーの種類を示します。

Value バッファーの種類
1 画像デコード パラメーター バッファー。
2 Macroblock 制御コマンド バッファー (残差ブロック データ バッファーと 1 対 1 の対応付けと密接に関連付けられています)。
3 残差ブロック データ バッファー。 詳細については、「 Macroblock 指向の画像デコード 」を参照してください。
4 フィルター 制御コマンド バッファーのブロック解除 (フィルターの効果に対する制限の有無にかかわらず)。
5 逆量子化行列バッファー (オフホスト VLD 処理でのみ使用)。
6 スライス制御バッファー (ビットストリーム データ バッファーと 1 対 1 の対応付けと密接に関連付けられています)。
7 ビットストリーム データ バッファー。
8 AYUV アルファ ブレンド サンプル バッファー。
9 IA44/AI44 アルファ ブレンド サーフェス バッファー。
10 DPXD アルファ ブレンド サーフェス バッファー。
11 データ バッファーを強調表示します。
12 DCCMD データ バッファー。
13 アルファ ブレンドの組み合わせバッファー。
14 図のリサンプリング コントロール バッファー。
15 結果の画像のマクロブロックをホストに読み取るコマンドを含む読み取り戻しコマンド バッファー。

dwBufferIndex

同じバッファー 記述リストに渡されたのと同じタイプのバッファー内のバッファーのシーケンス番号を指定します。

dwDataOffset

バッファーの先頭からの関連データのオフセットをバイト単位で指定します。 このメンバーの使用は現在、値 0 に制限されています。

dwDataSize

バッファー内の関連データの量をバイト単位で指定します。 バッファー内のコンテンツの最後のバイトの位置は 、dwDataOffsetdwDataSize から 1 を引いた値です。

dwFirstMBaddress

アクセラレータに渡されるバッファー内の最初のマクロ ブロックのマクロ ブロック アドレスを指定します。 マクロブロック アドレスはラスター スキャンの順序で指定されます。 アドレスは、 DXVA_PictureParametersのメンバーによって決定されます。 マクロ ブロック アドレスの例を次に示します。

Macroblock アドレス
左上 ゼロ
右上 wPicWidthInMBminus1
左下 wPicHeightInMBminus1 x (wPicWidthInMBminus1+1)
右下 (wPicHeightInMBminus1+1) x (wPicWidthInMBminus1+1)-1

データ バッファーが次の種類の中にある場合、このメンバーは 0 である必要があります。画像デコード パラメーター、逆量子化行列、スライス 制御、ビットストリーム データ、AYUV、IA44/AI44、DPXD、Highlight、DCCMD。

データ バッファーが残差ブロック データ バッファーの場合、 dwFirstMBaddress の値は、対応する macroblock コントロール コマンド バッファーと同じである必要があります。 詳細については、「 Macroblock 指向の画像デコード 」を参照してください。

dwNumMBsInBuffer

バッファー内のデータのマクロ ブロックの数を指定します。 この数には、スキップされたマクロブロックが含まれます。 データ バッファーが画像デコード パラメーター、逆量子化行列、AYUV、IA44/AI44、DPXD、Highlight、DCCMD のいずれかである場合は、0 にする必要があります。

dwNumMBsInBuffer の値は、次の表に示すように、使用されているデータ バッファーの種類によって異なります。

バッファーの種類 dwNumMBsInBuffer の値
Macroblock コントロール コマンド MBskipsFollowing のすべての値の合計と等しい必要があります。マクロブロック コントロール コマンド バッファー内の macroblock コントロール コマンドの数に加算されます。
残差ブロック 対応する macroblock コントロール コマンド バッファーと同じ値を指定する必要があります。
Slice-control コマンド スライス コントロール バッファー内の DXVA_SliceInfo 構造体の wNumberMBsInSlice メンバーの値と等しい必要があります。
Bitstream 対応する slice-control コマンド バッファーと同じ値を指定する必要があります。

dwWidth

バッファー内のデータの幅を、AYUV (データは 32 ビット単位で指定)、IA44/AI44 (データは 8 ビット単位で指定)、DPXD (データは 2 ビット単位で指定) のビット数として指定します。 データ バッファーが上記の型に含まれていない場合、このメンバーは 0 である必要があります。

dwHeight

バッファー内のデータの高さを、AYUV (データは 32 ビット単位で指定)、IA44/AI44 (データは 8 ビット単位で指定)、DPXD (データは 2 ビット単位で指定) のビット数として指定します。データ バッファーが上記の型に含まれていない場合、このメンバーは 0 である必要があります。

dwStride

バッファー内のデータのストライドを、AYUV (データは 32 ビット単位で指定)、IA44/AI44 (データは 8 ビット単位で指定)、DPXD (データは 2 ビット単位で指定) のビット数として指定します。 該当するバッファーの種類のストライドは、アクセラレータによって実行されるバッファー割り当ての設定から決定されます。 データ バッファーが上記の型に含まれていない場合、このメンバーは 0 である必要があります。

dwReservedBits

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

注釈

DXVA_BufferDescription構造体の配列は、バッファー記述リストと呼ばれます。 一連のバッファーがホスト デコーダーからハードウェア アクセラレータに送信されると、バッファー記述リストが送信され、バッファーが記述されます。 バッファー記述リストには、このセット内のバッファーごとに 1 つのDXVA_BufferDescription構造体が含まれています。 バッファー記述リストは、最初の型の最初のバッファーのDXVA_BufferDescription構造体で始まり、その後に同じ型の次のバッファーのDXVA_BufferDescription構造体が続きます。 その後、バッファー記述リストは、次の型の最初のバッファーのDXVA_BufferDescription構造体で続行されます。

要件

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

こちらもご覧ください

DXVA_PictureParameters

DXVA_SliceInfo