次の方法で共有


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 を含む)

関連項目

DXVA_ConfigPictureDecode