共用方式為


D3D11_VIDEO_DECODER_CONFIG 結構 (d3d11.h)

說明 DirectX 影片加速 (DXVA) 的 Microsoft Direct3D 11 解碼器裝置設定。

語法

typedef struct D3D11_VIDEO_DECODER_CONFIG {
  GUID   guidConfigBitstreamEncryption;
  GUID   guidConfigMBcontrolEncryption;
  GUID   guidConfigResidDiffEncryption;
  UINT   ConfigBitstreamRaw;
  UINT   ConfigMBcontrolRasterOrder;
  UINT   ConfigResidDiffHost;
  UINT   ConfigSpatialResid8;
  UINT   ConfigResid8Subtraction;
  UINT   ConfigSpatialHost8or9Clipping;
  UINT   ConfigSpatialResidInterleaved;
  UINT   ConfigIntraResidUnsigned;
  UINT   ConfigResidDiffAccelerator;
  UINT   ConfigHostInverseScan;
  UINT   ConfigSpecificIDCT;
  UINT   Config4GroupedCoefs;
  USHORT ConfigMinRenderTargetBuffCount;
  USHORT ConfigDecoderSpecific;
} D3D11_VIDEO_DECODER_CONFIG;

成員

guidConfigBitstreamEncryption

如果使用 D3D11CryptoSession 機制加密 bitstream 資料緩衝區,則此 GUID 應設定為零。 如果未套用加密,則會 DXVA_NoEncrypt值。 如果 ConfigBitstreamRaw 為 0,則必須 DXVA_NoEncrypt此值。

guidConfigMBcontrolEncryption

如果使用 D3D11CryptoSession 機制加密宏區塊控制資料緩衝區,此 GUID 應設定為零。 如果未套用加密,則會 DXVA_NoEncrypt值。 如果 ConfigBitstreamRaw 為 1,則必須 DXVA_NoEncrypt值。

guidConfigResidDiffEncryption

如果使用 D3D11CryptoSession 機制來加密剩餘差異解碼資料緩衝區,則此 GUID 應設定為零。 如果未套用加密,則會 DXVA_NoEncrypt值。 如果 ConfigBitstreamRaw 為 1,則必須 DXVA_NoEncrypt值。

ConfigBitstreamRaw

指出 host-decoder 是否傳送原始位資料流程資料。 如果值為 1,圖片的資料將會以位資料流程緩衝區的形式傳送為原始位資料流程內容。 如果值為 0,則會使用 macroblock 控制項命令緩衝區來傳送圖片資料。 如果 ConfigResidDiffHostConfigResidDiffAccelerator 為 1,此值必須為 0。

ConfigMBcontrolRasterOrder

指定宏區塊控制項命令是否以點陣掃描順序或任意順序排列。 如果值為 1,則每個 macroblock 控制項命令緩衝區內的宏區塊控制項命令會以點陣掃描順序排列。 如果值為 0,則順序為任意。 針對某些類型的位資料流程,強制端點陣順序會大幅增加必須處理的所需宏區塊控制項緩衝區數目,或需要主機重新排序控制項資訊。 因此,支援任意順序可能會更有效率。

ConfigResidDiffHost

包含主機剩餘差異設定。 如果值為 1,某些剩餘差異解碼資料可能會傳送為主機空間網域中的區塊。 如果值為 0,將不會傳送空間定義域資料。

ConfigSpatialResid8

指出使用主機型殘差差異解碼時,用來代表預測 (非內部) 圖片的殘差空間定義域區塊的字型大小。

如果 ConfigResidDiffHost 為 1, 而 ConfigSpatialResid8 為 1,主機會使用 8 位帶正負號的樣本,以及預測 (非內部) 圖片格式的剩餘差異空間網域區塊,以及根據 ConfigIntraResidUnsigned格式的內部宏區塊:

  • 如果 ConfigIntraResidUnsigned 為 0,則內部宏區塊的空間定義域區塊會以 8 位帶正負號的整數值的形式傳送,相對於 2^ (BPP–1) 。
  • 如果 ConfigIntraResidUnsigned 為 1,則內部宏區塊的空間定義域區塊會以相對於常數參考值為 0 的 8 位不帶正負號整數值傳送。
如果 ConfigResidDiffHost 為 1 且 ConfigSpatialResid8 為 0,則主機會使用 16 位帶正負號的樣本,以及預測 (非內部) 圖片中,根據 ConfigIntraResidUnsigned值的格式,傳送非內部宏區塊資料的剩餘差異空間網域區塊:
  • 如果 ConfigIntraResidUnsigned 為 0,則內部宏區塊的空間定義域區塊會以 16 位帶正負號的整數值來傳送,相對於 2^ (BPP–1) 。
  • 如果 ConfigIntraResidUnsigned 是 1,則內部宏區塊的空間定義域區塊會以 16 位不帶正負號的整數值傳送,相對於常數參考值為 0。
如果 ConfigResidDiffHost 是 0, ConfigSpatialResid8 必須是 0。

對於內部圖片,如果每個圖元的位 (BPP) 為 8,則空間網域區塊必須使用 8 位樣本傳送,如果 BPP > 8 則使用 16 位樣本。 如果 ConfigIntraResidUnsigned 為 0,則這些樣本會以相對於常數參考值 2^ (BPP–1) 的帶正負號整數值傳送,而 如果 ConfigIntraResidUnsigned 為 1,這些範例會以與常數參考值為 0 相對的不帶正負號整數值傳送。

ConfigResid8Subtraction

如果值為 1,則會減去 8 位差異溢位區塊,而不是新增。 除非 ConfigSpatialResid8 為 1,否則此值必須為 0。

能夠減去差異,而不是新增差異,可讓 8 位差異解碼完全符合視訊解碼器規格所需的完整±255 值範圍。 因為 +255 無法表示為兩個帶正負號 8 位數位的加法,但範圍中任何數位 ±255 可以表示為兩個帶正負號的 8 位數位之間的差異, (+255 = +127 減 –128) 。

ConfigSpatialHost8or9Clipping

如果值為 1,內部宏區塊的空間定義域區塊必須裁剪到主機上的 8 位範圍,且非內部宏區塊的空間域區塊必須裁剪為主機上的 9 位範圍。 如果值為 0,主機不需要這類裁剪。

除非 ConfigSpatialResid8 為 0,且 ConfigResidDiffHost 為 1,否則此值必須為 0。

ConfigSpatialResidInterleaved

如果值為 1,則任何空間網域剩餘差異資料都必須以符合 YUV 格式的 chrominance 交錯模式形式傳送。 除非 ConfigResidDiffHost 為 1,而且 YUV 格式為 NV12 或 NV21,否則此值必須為 0。

ConfigIntraResidUnsigned

指出使用主機型差異解碼時,內部區塊剩餘差異資料的空間定義域區塊表示方法。

如果 ConfigResidDiffHost 為 1 且 ConfigIntraResidUnsigned 為 0,則必須傳送內部宏區塊的空間網域剩餘差異資料區塊,如下所示:

  • 在非內部圖片中,如果 ConfigSpatialResid8 為 0,則內部宏區塊的空間網域剩餘差異資料區塊會以 16 位帶正負號的整數值傳送,相對於 BPP–1) 的常數參考值 2^ (。
  • 在非內部圖片中,如果 ConfigSpatialResid8 為 1,則內部宏區塊的空間網域剩餘差異資料區塊會以 8 位帶正負號的整數值來傳送,相對於 2^ (BPP–1) 的常數參考值。
  • 在內部圖片中,如果 BPP 是 8,則不論 ConfigSpatialResid8的值為何,內部宏區塊的空間網域剩餘差異資料區塊都會以 8 位帶正負號的整數值傳送為 2^ (BPP–1) 。
如果 ConfigResidDiffHost 為 1 且 ConfigIntraResidUnsigned 為 1,則必須傳送內部宏區塊的空間網域剩餘差異資料區塊,如下所示:
  • 在非內部圖片中,如果 ConfigSpatialResid8 為 0,則內部宏區塊的空間網域剩餘差異資料區塊必須傳送為 16 位不帶正負號的整數值,相對於常數參考值為 0。
  • 在非內部圖片中,如果 ConfigSpatialResid8 為 1,則內部宏區塊的空間網域剩餘差異資料區塊會以 8 位不帶正負號的整數值來傳送,相對於常數參考值為 0。
  • 在內部圖片中,如果 BPP 為 8,則不論 ConfigSpatialResid8的值為何,內部宏區塊的空間域剩餘差異資料區塊都會以 8 位不帶正負號的整數值的形式傳送為 0。
除非 ConfigResidDiffHost 為 1,否則成員的值必須是 0。

ConfigResidDiffAccelerator

如果值為 1,則係數資料的轉換定義域區塊可能會從主機傳送,以進行加速器型 IDCT。 如果值為 0,將不會使用加速器型 IDCT。 如果 ConfigResidDiffHostConfigResidDiffAccelerator 都為 1,這表示某些剩餘差異解碼將會在主機上完成,有些則會在加速器上完成,如宏區塊層級控制項命令所指出。

如果 ConfigBitstreamRaw 為 1,則此值必須為 0。

ConfigHostInverseScan

如果值為 1,則會在主機上執行轉換網域區塊處理的反向掃描,而且會改為針對任何轉換係數傳送絕對索引。 如果值為 0,則會在加速器上執行反向掃描。

如果 ConfigResidDiffAccelerator 為 0,或 Config4GroupedCoefs 為 1,則此值必須為 0。

ConfigSpecificIDCT

如果值為 1,則會使用在[PST-T 建議 H.263 附錄 W] 中指定的 IDCT。 如果值為 0,則任何符合規範的 IDCT 都可用於非主機識別碼CT。

H.263 附錄不符合 MPEG-2 更正 2 的 IDCT 需求,因此值不得為 1 以搭配 MPEG-2 視訊使用。

如果 ConfigResidDiffAccelerator 為 0,則此值必須為 0,表示純主機型剩餘差異解碼。

Config4GroupedCoefs

如果值為 1,則會使用 DXVA_TCoef4Group 結構來傳送非主機識別碼CT 的轉換係數。 如果值為 0,則會使用 DXVA_TCoefSingle 結構。 如果 ConfigResidDiffAccelerator 為 0,或 ConfigHostInverseScan 為 1,則此值必須為 0。

ConfigMinRenderTargetBuffCount

指定解碼器裝置隨時處理多少框架。

ConfigDecoderSpecific

包含解碼器特定的組態資訊。

規格需求

   
最低支援的用戶端 Windows 8 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2012 [傳統型應用程式 |UWP 應用程式]
標頭 d3d11.h

另請參閱

Direct3D 11 視訊結構