DXVA_ConfigPictureDecode結構 (dxva.h)

主機譯碼器會將DXVA_ConfigPictureDecode結構傳送至快捷鍵,以設定壓縮圖片譯碼的組態。

語法

typedef struct _DXVA_ConfigPictureDecode {
  DXVA_ConfigQueryOrReplyFunc dwFunction;
  DWORD                       dwReservedBits[3];
  GUID                        guidConfigBitstreamEncryption;
  GUID                        guidConfigMBcontrolEncryption;
  GUID                        guidConfigResidDiffEncryption;
  BYTE                        bConfigBitstreamRaw;
  BYTE                        bConfigMBcontrolRasterOrder;
  BYTE                        bConfigResidDiffHost;
  BYTE                        bConfigSpatialResid8;
  BYTE                        bConfigResid8Subtraction;
  BYTE                        bConfigSpatialHost8or9Clipping;
  BYTE                        bConfigSpatialResidInterleaved;
  BYTE                        bConfigIntraResidUnsigned;
  BYTE                        bConfigResidDiffAccelerator;
  BYTE                        bConfigHostInverseScan;
  BYTE                        bConfigSpecificIDCT;
  BYTE                        bConfig4GroupedCoefs;
} DXVA_ConfigPictureDecode, *LPDXVA_ConfigPictureDecode;

成員

dwFunction

指出使用探查和鎖定命令時的查詢或回應類型。 最顯著的 24 位 dwFunctionDXVA_ConfigQueryOrReplyFlag 變數。

DXVA_ConfigQueryOrReplyFlag變數中最小有效 4 位包含所執行查詢或響應的狀態指標。

dwFunction 最小有效 8 位是bDXVA_Func變數,在此情況下,等於 1。

dwReservedBits[3]

用於封裝和對齊的保留位。 這些位為零。

guidConfigBitstreamEncryption

指出與 bitstream 數據緩衝區之加密通訊協定類型相關聯的 GUID。 DXVA_NoEncrypt (dxva.h) 中定義的 GUID 名稱值表示未套用加密。 如果 bConfigBitstreamRaw 為零,則會DXVA_NoEncrypt。

guidConfigMBcontrolEncryption

表示與 macroblock控制緩衝區之加密通訊協定類型相關聯的 GUID。 DXVA_NoEncrypt (dxva.h) 中定義的 GUID 名稱值表示未套用加密。 如果 bConfigBitstreamRaw 為 1,則會DXVA_NoEncrypt。

guidConfigResidDiffEncryption

指出與加密通訊協定類型相關聯的 GUID,用於剩餘差異譯碼數據緩衝區 (緩衝區,其中包含空間領域數據或加速器型 IDCT) 轉換網域係數集合。 如果 bConfigBitstreamRaw 為 1,則會DXVA_NoEncrypt。 (DXVA_NoEncrypt 是在 dxva.h 中定義的 GUID,表示未套用加密。)

bConfigBitstreamRaw

包含位數據流處理指標。 值為 1,指定圖片數據會以原始位數據流內容的形式在位數據流緩衝區中傳送。 值為零,指定將使用 macroblock 控制項命令緩衝區傳送圖片數據。

如果 bConfigResidDiffHost 為 1 或 bConfigResidDiffAccelerator 為 1,則為零。 值零會被視為支援的基本層級。 建議使用第一層的額外支援。

bConfigMBcontrolRasterOrder

指定宏區塊控件命令是點陣掃描順序還是任意順序。 值為 1 指定每個 macroblock 控制項命令緩衝區內的 macroblock 控制項命令會以點陣掃描順序排列,而值為零表示任意順序。 目前,允許驅動程式限制點陣掃描順序的支援;不過,驅動程式應該同時支援任意和點陣掃描順序。

bConfigResidDiffHost

包含主機剩餘差異設定 (如需詳細資訊,請參閱 Macroblock 導向圖片譯碼) 。 值為 1,指定某些剩餘差異譯碼數據可能會當做主機空間網域中的區塊傳送。 值為零,指定不會傳送空間定義域數據。 如果 bConfigBitstreamRaw 為 1,則此成員為零。 建議快捷鍵同時支援零和 1。

bConfigSpatialResid8

指出當 bConfigResidDiffHost 等於 1) 時,使用主機型殘差譯碼 (時,用來代表預測 (非) 圖片的剩餘差異空間定義域區塊的文字大小。

如果 bConfigSpatialResid8 為 1 且 bConfigResidDiffHost 為 1,則主機會使用 8 位帶正負號的樣本,針對 nonintra macroblocks 傳送剩餘差異空間網域區塊,以及根據 bConfigIntraResidUnsigned 在預測 (非迴圈) 圖片格式中的宏區塊,如下所示:

  • 如果 bConfigIntraResidUnsigned 為零,則內部宏區塊的空間定義域區塊會以 8 位帶正負號的整數值來傳送,相對於常數參考值為 128。
  • 如果 bConfigIntraResidUnsigned 為 1,則內部宏區塊的空間定義域區塊會以 8 位無符號整數值的形式傳送,相對於常數參考值為零。
如果 bConfigSpatialResid8 為零,且 bConfigResidDiffHost 為 1,則主機會根據 bConfigIntraResidUnsigned 將剩餘差異空間網域區塊的數據傳送給非已簽署的宏區塊,以及根據 bConfigIntraResidUnsigned 在預測 (nonintra) 圖片中的剩餘差異空間域區塊,如下所示:
  • 如果 bConfigIntraResidUnsigned 為零,則內部宏區塊的空間定義域區塊會以 16 位帶正負號的整數值傳送,相對於 2 (BPP-1 ) 的常數參考值,其中 BPP 是未壓縮視訊每個樣本的位數 (,通常為 8) 。
  • 如果 bConfigIntraResidUnsigned 為 1,則內部宏區塊的空間定義域區塊會以 16 位無符號整數值的形式傳送,相對於常數參考值為零。
如果 bConfigResidDiffHost 為零,bConfigSpatialResid8 成員必須為零。 當 bConfigResidDiffHost 為 1 時,bConfigSpatialResid8 沒有一個特定值的喜好設定。
注意對於 BPP 等於 8 的內部圖片,必須使用 8 位樣本來傳送空間網域區塊。 對於 BPP 大於 8 的圖片,必須使用 16 位樣本來傳送空間網域區塊。 (BPP 變數是未壓縮視訊每個樣本的位數,通常值為 8.)

如果 bConfigIntraResidUnsigned 為零,這些範例會以相對於 BPP-1 (常數參考值 2) 的帶正負號整數值傳送。 如果 bConfigIntraResidUnsigned 為 1,這些範例會以不帶正負號的整數值的形式傳送,相對於零的常數參考值。

 

bConfigResid8Subtraction

等於 1 時,表示會減去 8 位差異溢位區塊,而不是新增。 除非 bConfigSpatialResid8 為 1,否則必須為零。 如果 bConfigSpatialResid8 為 1,則支援加速器的慣用值為 1。 減去差異,而不是新增差異的能力,可讓8位差異譯碼器規格中所需的完整 +/-255值範圍完全相容。 這是因為 +255 無法表示為新增兩個帶正負號的 8 位數位,但是範圍 +/-255 中的任何數位都可以表示為兩個帶正負號的 8 位數位之間的差異, (+255 等於 +127 減去 '127 減 âˆ'128) 。

bConfigSpatialHost8or9Clipping

等於 1 時,表示內部宏區塊的空間網域區塊會裁剪到主機上的 8 位範圍,而且非tra macroblock 的空間網域區塊會裁剪到主機上的 9 位範圍。 值為零表示主機不會執行這類裁剪。 除非 bConfigSpatialResid8 等於零,且 bConfigResidDiffHost 等於 1,否則必須為零。 支援加速器的慣用值為零。

bConfigSpatialResidInterleaved

等於 1 時,表示任何空間網域殘差差異數據都會以符合 YUV 格式的交錯模式的 chrominance 交錯形式傳送。 除非 bConfigResidDiffHost 為 1,而且 YUV 格式為 NV12 或 NV21,否則必須為零。 支援加速器的慣用值為零。

bConfigIntraResidUnsigned

指出 當 bConfigResidDiffHost 等於 1) 時,使用主機型差異譯碼 (內部區塊之空間網域區塊殘差數據表示的方法。

bConfigIntraResidUnsigned 等於零且 bConfigResidDiffHost 等於 1 時,會傳送宏區塊的空間網域剩餘差異數據區塊,如下所示:

  • 如果 bConfigSpatialResid8 為零,則內部宏區塊的空間定義域剩餘差異數據區塊會以 16 位帶正負號的整數值的形式傳送至相對於 2 (BPP-1) 的常數參考值,其中 BPP 是未 (壓縮視訊每個樣本的位數,通常為 8) 。
  • 如果 bConfigSpatialResid8 為 1,且 BPP 等於 8 (則不考慮 bConfigSpatialResid8) 的值,則內部宏區塊的空間定義域剩餘差異數據區塊會以相對於常數參考值為 128 的 8 位帶正負號整數值來傳送。
bConfigIntraResidUnsigned 等於 1 且 bConfigResidDiffHost 等於 1 時,會傳送內部宏區塊的空間網域剩餘差異數據區塊,如下所示:
  • 如果 bConfigSpatialResid8 為零,則內部宏區塊的空間定義域剩餘差異數據區塊會以 16 位無符號整數值的形式傳送,相對於零的常數參考值。
  • 如果 bConfigSpatialResid8 為 1,且 BPP 等於 8 (則不考慮 bConfigSpatialResid8) ,則內部宏區塊的空間定義域剩餘差異數據區塊會以 8 位無符號整數值傳送為零的常數參考值。
除非 bConfigResidDiffHost 為 1,否則 bConfigIntraResidUnsigned 成員必須為零。

bConfigIntraResidUnsigned 的快捷鍵慣用值為零。

bConfigResidDiffAccelerator

包含加速器剩餘差異設定。 值為 1 表示可能從主機傳送轉換網域的係數數據區塊,以進行加速器型 IDCT。 值為零,指定不會使用以快速鍵為基礎的 IDCT。 如果 bConfigResidDiffHostbConfigResidDiffAccelerator 都是 1,則會在主機上和快捷鍵上執行一些剩餘差異譯碼,如宏區塊層級控制命令所指示。 如果 bConfigBitstreamRaw 為 1,則此成員必須為零。

支援加速器的慣用值為 bConfigResidDiffAccelerator 的 1。

bConfigResidDiffAcceleratorbConfigResidDiffHost 等於 1 時,可以在主機與快捷鍵之間以宏區塊為基礎共用剩餘差異譯碼。 這被視為比 bConfigResidDiffAccelerator 等於 1 且 bConfigResidDiffHost 等於零時更高層級的快捷鍵功能。

bConfigHostInverseScan

指出是否在主機或加速器上執行轉換網域區塊處理的反向掃描。 值為 1 表示在主機上執行轉換網域區塊處理的反向掃描,而且會改為針對任何轉換係數傳送絕對索引。 值為零表示反向掃描將在加速器上執行。 如果 bConfigResidDiffAccelerator 為零,或 bConfig4GroupedCoefs 為 1,則此成員必須為零。

如果 bConfigResidDiffAccelerator 為 1,則支援加速器的慣用值為 1。

bConfigSpecificIDCT

指出對離主機 IDCT 使用特定 IDCT 方法。 值為 1 表示使用在一份附錄 W 中指定之 IDCT-T 建議 H.263。 值為零表示任何符合規範的 IDCT 都可用於離主機 IDCT。 (零和 1 以外的值會保留供日後使用。)

如果 bConfigResidDiffAccelerator 為零,則此成員必須為零, (只表示主機型剩餘差異譯碼) 。

注意 一個符合 MPEG-2 2 更正 2 corrigendum 2 的 IDCT 需求,因此 bConfigSpecificIDCT 不得與 MPEG-2 視訊搭配使用。
 

bConfig4GroupedCoefs

值為 1 表示會使用 DXVA_TCoef4Group 結構而非 DXVA_TCoefSingle 結構來傳送離主機 IDCT 的轉換係數。 如果 bConfigResidDiffAccelerator 為零或 bConfigHostInverseScan 為 1,則為零。

如果 bConfigResidDiffAccelerator 為 1,則支援加速器的慣用值為零。

備註

對於某些類型的 bitstream,強制每個宏區塊控件命令緩衝區內的宏區塊控件命令以點陣順序排列,可大幅增加必須處理的必要緩衝區數目,或需要主機重新排序控件資訊。 因此,支援任意順序對譯碼程式而言可能會有好處。 例如,如果每個緩衝區內需要點陣掃描順序,H.261 CIF 解析度譯碼可能需要每張圖片 36 個宏區塊控制緩衝區, (H.263 附錄 K 的任意配量排序和矩形配量模式有更嚴重的重載,可能需要非常大量的緩衝區。)

規格需求

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

另請參閱

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_TCoef4Group

DXVA_TCoefSingle