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

図の左端または一番上のマクロブロックを示すゼロを使用して、マクロブロックの単位で表されるスライスの最初のマクロブロックの垂直方向の位置を指定します。

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 の範囲に存在し、スライスの開始が対応するビットストリーム データ バッファー内にない場合は 0 である必要があります。 bStartCodeBitOffset によって現在のスライスに関係なくマークされた最も重要なビットには、バイトアラインされていない開始コード (H.263 ベースライン モードなど) の場合に、前のスライスのデータが含まれる場合があります。

bReservedBits

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

wMBbitOffset

ビットストリーム バッファー内のマクロ ブロック レイヤー データの最初のビットより前のスライス ヘッダー データのビット数を指定します。 たとえば、 wMBbitOffset が 83 の場合、スライスのマクロ ブロック レイヤー データは 83 ビットのスライス ヘッダー データの後で開始されます。 スライスの先頭が対応するビットストリーム データ バッファー内にない場合は、0 にする必要があります。

wNumberMBsInSlice

スキップされたマクロブロックを含む、スライス内のデータのマクロブロックの数を指定します。 図のヘッダーと、ビットストリーム内の現在および次のスライスのヘッダーと初期マクロブロック データからこの数値を容易に特定できない場合は、0 になることがあります 。たとえば、四角形のスライスや、H.263 のスライス モードの任意のスライス順序サブモードなどです。 H.261、MPEG-1、MPEG-2、MPEG-4 の場合、または H.263 でスライス構造化モードの長方形スライスまたは任意のスライス サブモードを使用しない場合は、0 にすることはできません。

wQuantizerScaleCode

特定のビデオ コーディング仕様で指定されているビットストリームのスライス レベルからの量子化コード (H.261、H.262/MPEG-2、H.263、MPEG-1、MPEG-4 の場合は 1 から 31 の範囲)。

wBadSliceChopping

対応するビットストリーム データ バッファーのスライス内のデータの場所を指定します。 0 の場合は、スライスのすべてのビットがビットストリーム データ バッファー内にあることを示します。 0 以外の場合は、スライスのビットのどの部分が対応するビットストリーム データ バッファーに存在しないかを次のように示します。

説明
1 スライスの先頭のビットは、対応するビットストリーム データ バッファー内にあり、スライスの末尾のビットは含まれません (ビットストリーム データ バッファーがいっぱいであるため)。
2 スライスの先頭のビットは、対応するビットストリーム データ バッファー内にありません (前のビットストリーム データ バッファーがいっぱいであったため)。ただし、スライスの末尾のビットは、対応するビットストリーム データ バッファー内にあります。
3 スライスの先頭のビットは、対応するビットストリーム データ バッファー内にありません (前のビットストリーム データ バッファーがいっぱいだったため)、スライスの末尾のビットも対応するビットストリーム データ バッファー内にありません (対応するビットストリーム データ バッファーもいっぱいであるため)。

[!注] wBadSliceChopping の 0 以外の値は、通常、ホスト ソフトウェア デコーダーによって回避する必要があります。

注釈

オフホスト VLD ビットストリーム処理の操作をガイドするために、スライス制御バッファーが用意されています。 スライス制御バッファーは、DXVA_ConfigPictureDecodebConfigBitstreamRaw メンバーが 1 の場合にのみ送信されます。 ホスト ソフトウェア デコーダーは、ビットストリーム内のスライス レベルの再同期ポイントの場所を決定する必要があります。 スライスは、ビットストリーム データに再同期ポイントを含むマルチマクロブロック レイヤーとして定義されます。

H.261 ビットストリームでは、GOB はスライスと見なされます。 H.263 ビットストリームでは、GOB 開始コードで始まり、追加の GOB 開始コードを含まない 1 つ以上の GOB のシーケンスがスライスと見なされます。 スライス制御バッファーには、対応するビットストリーム データ バッファーの内容に従って、1 つ以上のDXVA_SliceInfo構造体を含める必要があります。

要件

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

こちらもご覧ください

DXVA_ConfigPictureDecode