DXVA_SliceInfo構造体 (dxva.h)
DXVA_SliceInfo構造体は、ホスト デコーダーによってアクセラレータに送信され、オフホスト ビットストリーム圧縮画像デコード用のビットストリーム データのスライス レベル パラメーターを指定します。
構文
typedef struct _DXVA_SliceInfo {
WORD wHorizontalPosition;
WORD wVerticalPosition;
DWORD dwSliceBitsInBuffer;
DWORD dwSliceDataLocation;
BYTE bStartCodeBitOffset;
BYTE bReservedBits;
WORD wMBbitOffset;
WORD wNumberMBsInSlice;
WORD wQuantizerScaleCode;
WORD wBadSliceChopping;
} DXVA_SliceInfo, *LPDXVA_SliceInfo;
メンバーズ
wHorizontalPosition
図の左端または一番上のマクロ ブロックを示すゼロを使用して、マクロ ブロックの単位で表されるスライスの最初のマクロ ブロックの水平方向の位置を指定します。
wVerticalPosition
スライスの最初のマクロ ブロックの垂直位置をマクロ ブロックの単位で表し、図の左端または一番上のマクロ ブロックを示す 0 を指定します。
dwSliceBitsInBuffer
現在のスライスのデータを含む、対応するビットストリーム データ バッファー内のビットの合計数を指定します。 MPEG-1、MPEG-2、MPEG-4 の場合は 8 の倍数にする必要があります。 また、このような場合、スライス開始コードはバイトアラインされるため、H.263 のスライス構造化モードである必要があります。
dwSliceDataLocation
ビットストリーム データ バッファー内のスライスのデータを含む最初のバイトの位置 (スライス開始コードの場所など) を指定します。 スライスの先頭が対応するビットストリーム データ バッファー内にない場合は、0 にする必要があります。
bStartCodeBitOffset
スライスのデータを含まない dwSliceDataLocation バイトの最上位ビット数を指定します。 bStartCodeBitOffset は MPEG-1、MPEG-2、MPEG-4 では 0 である必要があります。これらの仕様のスライス開始コードはバイトアラインされているためです。 bStartCodeBitOffset 、H.261 および H.263 では 0 以外になる可能性があります。これは、これらの標準では GOB (ブロックのグループ) 開始コードのバイトアラインメントが強制されないためです。 スライスの先頭が対応するビットストリーム データ バッファー内にない場合、このメンバーは 0 から 7 の範囲で指定する必要があります。 bStartCodeBitOffset によって現在のスライスに関係なくマークされた最も重要なビットには、バイトアラインされていない開始コード (H.263 ベースライン モードなど) の場合、前のスライスのデータが含まれる場合があります。
bReservedBits
パッキングとアラインメントに使用される予約済みビット。 0 にする必要があります。
wMBbitOffset
ビットストリーム バッファー内のマクロ ブロック レイヤー データの最初のビットより前のスライス ヘッダー データのビット数を指定します。 たとえば、wMBbitOffset が 83 の場合、スライスのマクロ ブロック レイヤー データは、スライス ヘッダー データの 83 ビット後に開始されます。 スライスの先頭が対応するビットストリーム データ バッファー内にない場合は、0 にする必要があります。
wNumberMBsInSlice
スキップされたマクロ ブロックを含む、スライス内のデータのマクロ ブロックの数を指定します。 図のヘッダーと、ビットストリーム内の現在のスライスと次のスライスの初期マクロブロック データ (長方形スライスや H.263 のスライス モードの任意のスライス順序サブモードなど) からこの数を簡単に特定できない場合は、0 になることがあります。 H.261、MPEG-1、MPEG-2、MPEG-4 の場合、または H.263 でスライス構造化モードの長方形スライスまたは任意のスライス サブモードを使用しない場合は、ゼロにすることはできません。
wQuantizerScaleCode
特定のビデオ コーディング仕様で指定されているビットストリームのスライス レベルからの量子化器スケーリング コード (H.261、H.262/MPEG-2、H.263、MPEG-1、MPEG-4 の範囲)。
wBadSliceChopping
対応するビットストリーム データ バッファーのスライス内のデータの場所を指定します。 0 の場合は、スライスのすべてのビットがビットストリーム データ バッファー内にあることを示します。 0 以外の場合は、スライスのビットのうち、対応するビットストリーム データ バッファーに不足している部分を次のように示します。
価値 | 形容 |
---|---|
1 | スライスの先頭のビットは対応するビットストリーム データ バッファー内にあり、スライスの末尾のビットは含まれません (ビットストリーム データ バッファーがいっぱいであるため)。 |
2 | スライスの先頭のビットは対応するビットストリーム データ バッファー内にありません (前のビットストリーム データ バッファーがいっぱいであったため)。ただし、スライスの末尾のビットは、対応するビットストリーム データ バッファー内にあります。 |
3 | スライスの先頭のビットが対応するビットストリーム データ バッファー内にありません (前のビットストリーム データ バッファーがいっぱいだったため)。スライスの末尾のビットも対応するビットストリーム データ バッファー内にありません (対応するビットストリーム データ バッファーも満杯であるため)。 |
[!注] wBadSliceChopping の 0 以外の値は、通常、ホスト ソフトウェア デコーダーによって回避する必要があります。
備考
スライス制御バッファーは、オフホスト VLD ビットストリーム処理の操作をガイドするために提供されます。 スライス コントロール バッファーは、DXVA_ConfigPictureDecode の bConfigBitstreamRaw メンバー が 1 の場合にのみ送信されます。 ホスト ソフトウェア デコーダーは、ビットストリーム内のスライス レベルの再同期ポイントの場所を決定する必要があります。 スライス は、ビットストリーム データに再同期ポイントを含むマルチマクロブロック レイヤーとして定義されます。
H.261 ビットストリームでは、GOB はスライスと見なされます。 H.263 ビットストリームでは、GOB 開始コードで始まり、追加の GOB 開始コードを含まない 1 つ以上の GOB のシーケンスがスライスと見なされます。 スライス制御バッファーには、対応するビットストリーム データ バッファーの内容に従って、1 つ以上のDXVA_SliceInfo構造体が含まれている必要があります。
必要条件
要件 | 価値 |
---|---|
ヘッダー | dxva.h (Dxva.h を含む) |