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
アクセラレータに渡されるバッファーの種類を識別します。 次の表に、数値識別子と関連するバッファーの種類を示します。
値の | バッファーの種類の |
---|---|
1 | 画像デコード パラメーター バッファー。 |
2 | Macroblock コントロール コマンド バッファー (残差ブロック データ バッファーと密接に関連し、1 対 1 の対応を持ちます)。 |
3 | 残差ブロック データ バッファー。 詳細については、「Macroblock-Oriented 図デコード」を参照してください。 |
4 | フィルター 制御コマンド バッファーのブロック解除 (フィルターの効果に対する制限の有無にかかわらず)。 |
5 | 逆量子化行列バッファー (オフホスト VLD 処理でのみ使用)。 |
6 | スライス制御バッファー (ビットストリーム データ バッファーと密接に関連付けされ、1 対 1 の対応を持つ)。 |
7 | ビットストリーム データ バッファー。 |
8 | AYUV アルファ ブレンドサンプル バッファー。 |
9 | IA44/AI44 アルファ ブレンド サーフェス バッファー。 |
10 | DPXD アルファ ブレンド サーフェス バッファー。 |
11 | データ バッファーを強調表示します。 |
12 | DCCMD データ バッファー。 |
13 | アルファ ブレンドの組み合わせバッファー。 |
14 | 図のリサンプリング コントロール バッファー。 |
15 | 結果の画像のマクロブロックをホストに読み取るコマンドを含む読み取り戻しコマンド バッファー。 |
dwBufferIndex
同じ バッファー記述リストで渡されたのと同じ型のバッファー内のバッファーのシーケンス番号を指定します。
dwDataOffset
バッファーの先頭からの関連データのオフセットをバイト単位で指定します。 現在、このメンバーの使用は値 0 に制限されています。
dwDataSize
バッファー内の関連するデータの量をバイト単位で指定します。 バッファー内のコンテンツの最後のバイトの位置は、dwDataOffset に dwDataSize - 1 加えた値です。
dwFirstMBaddress
アクセラレータに渡されるバッファー内の最初のマクロ ブロックのマクロ ブロック アドレスを指定します。 マクロ ブロック アドレスは、ラスター スキャンの順序で指定されます。 アドレスは、DXVA_PictureParametersのメンバーによって決定されます。 マクロ ブロック アドレスの例を次に示します。
マクロ ブロック の | アドレス |
---|---|
左上 | ゼロ |
右上 | wPicWidthInMBminus1 |
左下 | wPicHeightInMBminus1 x (wPicWidthInMBminus1+1) |
右下 | (wPicHeightInMBminus1+1) x (wPicWidthInMBminus1+1)-1 |
データ バッファーが次の型の中にある場合、このメンバーは 0 である必要があります。 画像デコード パラメーター、逆量子化マトリックス、スライスコントロール、ビットストリーム データ、AYUV、IA44/AI44、DPXD、Highlight、DCCMD。
データ バッファーが残差ブロック データ バッファーの場合は、dwFirstMBaddress 対応するマクロ ブロック 制御コマンド バッファーと同じ値を持つ必要があります。 詳細については、「Macroblock-Oriented 図デコード」を参照してください。
dwNumMBsInBuffer
バッファー内のデータのマクロ ブロックの数を指定します。 この数には、スキップされたマクロ ブロックが含まれます。 データ バッファーが画像デコード パラメーター、逆量子化マトリックス、AYUV、IA44/AI44、DPXD、Highlight、DCCMD のいずれかの型の場合は、0 にする必要があります。
dwNumMBsInBuffer の値は、次の表に示すように、使用されているデータ バッファーの種類によって異なります。
バッファーの種類の | dwNumMBsInBuffer の 値 |
---|---|
Macroblock コントロール コマンド | MBskipsFollowing のすべての値の合計と等しい必要があります。マクロ ブロック コントロール コマンド バッファー内のマクロ ブロック コントロール コマンドの数に追加されます。 |
残差ブロック | 対応するマクロ ブロック 制御コマンド バッファーと同じ値を指定する必要があります。 |
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
パッキングとアラインメントに使用される予約済みビット。 0 にする必要があります。
備考
DXVA_BufferDescription構造体の配列は、バッファー記述リストと呼ばれます。 一連のバッファーがホスト デコーダーからハードウェア アクセラレータに送信されると、バッファー記述リストが送信されてバッファーが記述されます。 バッファー記述リストには、このセット内のバッファーごとに 1 つのDXVA_BufferDescription構造体が含まれています。 バッファー記述リストは、最初の型の最初のバッファーのDXVA_BufferDescription構造体で始まり、次に同じ型の次のバッファーのDXVA_BufferDescription構造体で始まります。 その後、バッファー記述リストは、次の型の最初のバッファーのDXVA_BufferDescription構造体で続行されます。
必要条件
要件 | 価値 |
---|---|
ヘッダー | dxva.h (Dxva.h を含む) |