共用方式為


D3D11_1DDI_VIDEO_DECODER_CONFIG結構 (d3d10umddi.h)

描述 Microsoft DirectX 視訊加速 (DXVA) Microsoft Direct3D 11 譯碼器裝置的設定。

語法

typedef struct D3D11_1DDI_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_1DDI_VIDEO_DECODER_CONFIG;

成員

guidConfigBitstreamEncryption

定義位數據流數據緩衝區的加密通訊協議類型。 如果未套用加密,則會 DXVA_NoEncrypt 值(在 Dxva.h 中定義的 GUID 名稱)。 如果 ConfigBitstreamRaw 為 0,則必須 DXVA_NoEncrypt值。

如果設定為 D3DWDDM2_0DDI_DECODER_ENCRYPTION_HW_CENC,這表示下列參數會傳入 VideoDecoderBeginFrame 呼叫:

意義
pContentKey D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION 結構的指標,指出用來解密框架的 CryptoSession 和主要資訊。
ContentKeySize 設定為 D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION 結構的大小。

guidConfigMBcontrolEncryption

定義巨集區塊控制數據緩衝區的加密通訊協議類型。 如果未套用加密,則會 DXVA_NoEncrypt 值(在 Dxva.h 中定義的 GUID 名稱)。 如果 ConfigBitstreamRaw 為 1,則必須 DXVA_NoEncrypt值。

guidConfigResidDiffEncryption

定義剩餘差異譯碼數據緩衝區的加密通訊協定類型(包含空間定義域數據的緩衝區,或加速器型反向餘弦值轉換 [IDCT] 的轉換域係數集合)。 如果未套用加密,則會 DXVA_NoEncrypt 值(在 Dxva.h 中定義的 GUID 名稱)。 如果 ConfigBitstreamRaw 為 1,則必須 DXVA_NoEncrypt值。

ConfigBitstreamRaw

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

ConfigMBcontrolRasterOrder

指定巨集區塊控件命令是點陣掃描順序還是任意順序。 如果值為 1,則每個巨集區塊控件命令緩衝區內的巨集區塊控件命令會以點陣掃描順序排列。 如果值為 0,則順序為任意。 對於某些類型的位數據流,強制點陣順序會大幅增加必須處理的必要巨集區塊控件緩衝區數目,或要求主機重新排序控件資訊。 因此,支援任意順序可以更有效率。

ConfigResidDiffHost

包含主機剩餘差異組態。 如果值為 1,某些剩餘差異譯碼數據可能會以主機空間網域中的區塊的形式傳送。 如果值為 0,則不會傳送空間定義域數據。

ConfigSpatialResid8

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

如果 ConfigResidDiffHost 為 1,且 ConfigSpatialResid8 為 1,則主機會使用 8 位帶正負號的樣本傳送非內部巨集區塊的剩餘差異空間域區塊,以及以 ConfigIntraResidUnsigned 為格式的預測 (非內部) 圖片中的巨集區塊:

  • 如果 ConfigIntraResidUnsigned 為 0,則內部巨集區塊的空間定義域區塊會以 8 位帶正負號的整數值來傳送,相對於常數參考值為 2^(BPP–1)。
  • 如果 ConfigIntraResidUnsigned 為 1,則內部巨集區塊的空間定義域區塊會以 8 位不帶正負號的整數值來傳送,相對於常數參考值為 0。

如果 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,則主機不需要這類裁剪。

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

ConfigSpatialResidInterleaved

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

ConfigIntraResidUnsigned

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

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

  • 在非內部圖片中,如果 ConfigSpatialResid8 為 0,則內部巨集區塊的空間網域剩餘差異數據區塊會以 16 位帶正負號的整數值來傳送,相對於常數參考值為 2^(BPP–1)。
  • 在非內部圖片中,如果 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,則會使用 ITU-T Recommendation H.263 的附錄 W 中指定的 IDCT。 如果值為 0,則任何相容的 IDCT 都可用於非主機 IDCT。

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

如果 ConfigResidDiffAccelerator 為 0,則此值必須為 0,表示純粹以主機為基礎的剩餘差異譯碼。

Config4GroupedCoefs

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

ConfigMinRenderTargetBuffCount

指定譯碼器裝置一次處理多少個畫面格。

ConfigDecoderSpecific

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

要求

要求 價值
最低支援的用戶端 Windows 8
支援的最低伺服器 Windows Server 2012
標頭 d3d10umddi.h (包括 D3d10umddi.h)

另請參閱

D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION

DXVA_TCoef4Group

DXVA_TCoefSingle