D3D11_1DDI_VIDEO_DECODER_CONFIG 結構 (d3d10umddi.h)
說明 Microsoft DirectX 影片加速的 Microsoft Direct3D 11 譯碼器裝置設定, (DXVA) 。
語法
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 呼叫:
ReplTest1 | 意義 |
---|---|
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 控件命令緩衝區來傳送圖片數據。 如果 ConfigResidDiffHost 或 ConfigResidDiffAccelerator 為 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 位帶正負號的整數值來傳送,相對於 BPP–1) 的常數參考值 2^ (。
- 在內部圖片中,如果 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。 如果 ConfigResidDiffHost 和 ConfigResidDiffAccelerator 都為 1,這表示某些剩餘差異譯碼將會在主機上完成,有些則會在加速器上完成,如宏區塊層級控件命令所指出。
如果 ConfigBitstreamRaw 為 1,則此值必須為 0。
ConfigHostInverseScan
如果值為 1,則會在主機上執行轉換網域區塊處理的反向掃描,而且會改為針對任何轉換係數傳送絕對索引。 如果值為 0,則會在加速器上執行反向掃描。
如果 ConfigResidDiffAccelerator 為 0,或 Config4GroupedCoefs 為 1,則此值必須為 0。
ConfigSpecificIDCT
如果值為 1,則會使用在[PST-T 建議 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 (include D3d10umddi.h) |