DXVA_SliceInfo 結構 (dxva.h)

主機譯碼器會將DXVA_SliceInfo結構傳送至加速器,以指定非主機 bitstream 壓縮圖片譯碼的位數據流數據配量參數。

語法

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

指定第一個字節的位置,其中包含配量的數據 (例如,配量開始程式代碼的位置) 位數據流數據緩衝區中。 如果配量開頭不在對應的 bitstream 數據緩衝區內,則必須為零。

bStartCodeBitOffset

指定 dwSliceDataLocation 中不含配量數據的位元組最大有效位數目。 bStartCodeBitOffset 必須是 MPEG-1、MPEG-2 和 MPEG-4 的零,因為這些規格中的配量開始程式代碼是位元組對齊。 bStartCodeBitOffset 可能是 H.261 和 H.263 的非零值,因為這些標準不會強制 GOB (區塊群組的位元組對齊,) 開始程式代碼。 這個成員必須位於零到 7 的範圍內,而且如果配量開頭不在對應的位數據流數據緩衝區內,則必須為零。 在 H.263 基準模式中,在 H.263 基準模式中, bStartCodeBitOffset 標示為與目前配量無關的最重要位可能會包含先前配量的數據。例如,在 H.263 基準模式中,未對齊位元組 (的起始程式代碼) 。

bReservedBits

用於封裝和對齊的保留位。 必須為零。

wMBbitOffset

指定位數據流緩衝區中宏區塊層數據的第一位之前,配量標頭數據的位數。 例如,如果 wMBbitOffset 為 83,配量的宏區塊層數據會在 83 位配量標頭數據之後開始。 如果配量開頭不在對應的 bitstream 數據緩衝區內,則必須為零。

wNumberMBsInSlice

指定配量中的數據宏區塊數目,包括略過的宏區塊。 如果無法從圖片的標頭和位數據流中目前和下一個配量的初始宏區塊數據,例如在矩形配量和 H.263 配量模式的任意配量排序子模式中,則這個數位可能為零。 H.261、MPEG-1、MPEG-2、MPEG-4 或不使用 H.263 中配量結構化模式的矩形配量或任意配量子模式時,不得為零。

wQuantizerScaleCode

來自 bitstream 配量層級的量化程式調整程式代碼,如特定視訊編碼規格中所指定, (範圍從 1 到 31,適用於 H.261、H.262/MPEG-2、H.263、MPEG-1 和 MPEG-4) 。

wBadSliceChopping

指定對應位數據流數據緩衝區之配量內數據的位置。 如果為零,表示配量的所有位都位於位數據流數據緩衝區中。 如果為非零,表示對應位數據流數據緩衝區中遺漏配量的哪個部分,如下所示。

描述
1 配量開頭的位位於對應的 bitstream 數據緩衝區內,而且配量結尾的位不會 (,因為 bitstream 數據緩衝區已滿) 。
2 配量開頭的位不在對應的位數據流數據緩衝區內 (,因為先前的位數據流數據緩衝區已滿) ,但配量結尾的位位於對應的 bitstream 數據緩衝區內。
3 配量開頭的位不在對應的 bitstream 數據緩衝區內 (,因為先前的位數據流數據緩衝區已滿) ,而配量結尾的位也不會在對應的位數據流數據緩衝區內 (,因為對應的位數據流數據緩衝區也已滿) 。

[!注意] 主機軟體譯碼器通常應該避免 wBadSliceChopping 的非零值。

備註

提供配量控制緩衝區來引導離主機 VLD 位數據流處理的作業。 只有在 DXVA_ConfigPictureDecodebConfigBitstreamRaw 成員為 1 時,才會傳送配量控制緩衝區。 主機軟體譯碼器必須決定位數據流中配量層級重新同步處理點的位置。 配量定義為多重macroblock 層,其中包含 bitstream 數據中的重新同步處理點。

在 H.261 位數據流中,GOB 會被視為配量。 在 H.263 位數據流中,一連串的一或多個 GOB 從 GOB 開始程式碼開始,且不包含其他 GOB 開始程式碼,會被視為配量。 配量控制緩衝區必須包含一或多個DXVA_SliceInfo結構,根據對應的位數據流數據緩衝區的內容。

規格需求

需求
標頭 dxva.h (包含 Dxva.h)

另請參閱

DXVA_ConfigPictureDecode