D3D11_VIDEO_DECODER_CONFIG 结构 (d3d11.h)
介绍用于 DirectX 视频加速的 Microsoft Direct3D 11 解码器设备的配置 (DXVA) 。
语法
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 机制加密位流数据缓冲区,则应将此 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
指示主机解码器是否发送原始位流数据。 如果值为 1,则图片的数据将在位流缓冲区中作为原始位流内容发送。 如果值为 0,将使用宏块控制命令缓冲区发送图片数据。 如果 ConfigResidDiffHost 或 ConfigResidDiffAccelerator 为 1,则该值必须为 0。
ConfigMBcontrolRasterOrder
指定宏块控制命令是按光栅扫描顺序还是按任意顺序排列。 如果值为 1,则每个宏块控制命令缓冲区中的宏块控制命令按光栅扫描顺序排列。 如果值为 0,则顺序为任意。 对于某些类型的位流,强制光栅顺序会大大增加必须处理的所需宏块控制缓冲区的数量,或者需要对控制信息进行主机重新排序。 因此,支持任意顺序可以更高效。
ConfigResidDiffHost
包含主机残差配置。 如果值为 1,则某些残差解码数据可能会作为主机的空间域中的块发送。 如果值为 0,则不会发送空间域数据。
ConfigSpatialResid8
指示使用基于主机的残差解码时,用于表示预测 (非内部) 图片的残差空间域块的字大小。
如果 ConfigResidDiffHost 为 1 且 ConfigSpatialResid8 为 1,则主机将为使用 8 位带符号样本的非内部宏块和预测 (非内部) 图片中的内部宏块发送残差空间域块,其格式取决于 ConfigIntraResidUnsigned 的值:
- 如果 ConfigIntraResidUnsigned 为 0,则内部宏块的空间域块将作为 8 位带符号整数值发送,相对于常量引用值为 2^ (BPP–1) 。
- 如果 ConfigIntraResidUnsigned 为 1,则内部宏块的空间域块将作为相对于常量引用值为 0 的 8 位无符号整数值发送。
- 如果 ConfigIntraResidUnsigned 为 0,则宏块内部的空间域块将作为 16 位带符号整数值发送,相对于常量引用值为 2^ (BPP–1) 。
- 如果 ConfigIntraResidUnsigned 为 1,则宏块内部的空间域块将作为相对于常量引用值为 0 的 16 位无符号整数值发送。
对于内部图片,如果每像素 (BPP) 位为 8,则必须使用 8 位样本发送空间域块;如果 BPP > 8,则使用 16 位样本。 如果 ConfigIntraResidUnsigned 为 0,则相对于 BPP–1) 的常量引用值为 2^ (,这些样本将作为带符号整数值发送,如果 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 格式色度交错模式匹配的色度交错形式发送任何空间域残差数据。 除非 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) 。
- 在非内部图片中,如果 ConfigSpatialResid8 为 0,则内部宏块的空间域残差数据块必须作为相对于常量引用值 0 的 16 位无符号整数值发送。
- 在非内部图片中,如果 ConfigSpatialResid8 为 1,则内部宏块的空间域残差数据块将作为相对于常量引用值 0 的 8 位无符号整数值发送。
- 在内部图片中,如果 BPP 为 8,则无论 ConfigSpatialResid8 的值如何,宏块内部的空间域残差差数据块都以 8 位无符号整数值(相对于常量引用值 0)发送。
ConfigResidDiffAccelerator
如果值为 1,则可能会从主机发送基于加速器的 IDCT 的转换域系数数据块。 如果值为 0,则不会使用基于加速器的 IDCT。 如果 ConfigResidDiffHost 和 ConfigResidDiffAccelerator 均为 1,则表示将在主机上和加速器上执行某些残差解码,如宏块级控制命令所示。
如果 ConfigBitstreamRaw 为 1,则该值必须为 0。
ConfigHostInverseScan
如果值为 1,则会在主机上执行转换域块的反向扫描,并且将针对任何转换系数发送绝对索引。 如果值为 0,则将在加速器上执行反向扫描。
如果 ConfigResidDiffAccelerator 为 0 或 Config4GroupedCoefs 为 1,则该值必须为 0。
ConfigSpecificIDCT
如果值为 1,则使用ITU-T 建议 H.263 附件 W 中指定的 IDCT。 如果值为 0,则任何符合的 IDCT 都可用于主机外 IDCT。
H.263 附件不符合 MPEG-2 Corrigendum 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 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 [桌面应用 |UWP 应用] |
标头 | d3d11.h |