DXVADDI_CONFIGPICTUREDECODE 结构 (d3dumddi.h)
DXVADDI_CONFIGPICTUREDECODE结构描述压缩图片解码的配置。
语法
typedef struct _DXVADDI_CONFIGPICTUREDECODE {
[in] GUID guidConfigBitstreamEncryption;
[in] GUID guidConfigMBcontrolEncryption;
[in] GUID guidConfigResidDiffEncryption;
[in] UINT ConfigBitstreamRaw;
[in] UINT ConfigMBcontrolRasterOrder;
[in] UINT ConfigResidDiffHost;
[in] UINT ConfigSpatialResid8;
[in] UINT ConfigResid8Subtraction;
[in] UINT ConfigSpatialHost8or9Clipping;
[in] UINT ConfigSpatialResidInterleaved;
[in] UINT ConfigIntraResidUnsigned;
[in] UINT ConfigResidDiffAccelerator;
[in] UINT ConfigHostInverseScan;
[in] UINT ConfigSpecificIDCT;
[in] UINT Config4GroupedCoefs;
[in] USHORT ConfigMinRenderTargetBuffCount;
[in] USHORT ConfigDecoderSpecific;
} DXVADDI_CONFIGPICTUREDECODE;
成员
[in] guidConfigBitstreamEncryption
用于配置位流的加密 GUID。
[in] guidConfigMBcontrolEncryption
用于配置宏块控制的加密 GUID。
[in] guidConfigResidDiffEncryption
用于配置残差解码的加密 GUID。
[in] ConfigBitstreamRaw
位流处理指示器。 此成员中的值 1 指示图片数据作为原始位流内容在位流缓冲区中发送。 值为零表示使用宏块控制命令缓冲区发送图片数据。
如果 ConfigResidDiffHost 或 ConfigResidDiffAccelerator 成员为 1,请将此成员设置为零。 ConfigBitstreamRaw 中的值为零是基本级别的支持。 值 1 是首选值。
[in] ConfigMBcontrolRasterOrder
一个 UINT 值,该值指定宏块控制命令是按光栅扫描顺序还是按任意顺序排列。 此成员中的值 1 指定每个宏块控制命令缓冲区中的宏块控制命令按光栅扫描顺序排列。 值为零表示任意顺序。 驱动程序可以限制对光栅扫描顺序的支持;但是,驱动程序应支持任意扫描顺序和光栅扫描顺序。
[in] ConfigResidDiffHost
主机剩余差异配置。 此成员中的值 1 指定某些残差解码数据可能作为块从主机发送到空间域中。 值为零指定不发送空间域数据。 如果 ConfigBitstreamRaw 成员为 1,请将此成员设置为零。 加速器应同时支持零和 1。
[in] ConfigSpatialResid8
使用基于主机的残差解码 ((即 ConfigResidDiffHost 成员设置为 1) 时),用于表示预测 (非) 图片的残差空间域块的字大小。
如果 ConfigSpatialResid8 为 1,ConfigResidDiffHost 为 1,则主机将发送残差空间域块,用于使用 8 位有符号样本的非宏块,对于预测 (nonintra 中的内部宏块,) 以依赖于 ConfigIntraResidUnsigned 成员的格式发送残差空间域块,如下所示:
如果 ConfigIntraResidUnsigned 为零,则内部宏块的空间域块将作为相对于常量引用值 128 的 8 位有符号整数值发送。
如果 ConfigIntraResidUnsigned 为 1,则宏块内部的空间域块将作为相对于常量引用值零的 8 位无符号整数值发送。
如果 ConfigSpatialResid8 为零, ConfigResidDiffHost 为 1,则主机为使用 16 位带符号样本的非intra 宏块和预测 (nonintra 中的宏块) 发送剩余差异空间域块的数据块,其格式取决于 ConfigIntraResidUnsigned ,如下所示:
如果 ConfigIntraResidUnsigned 为零,则内部宏块的空间域块将作为 16 位有符号整数值发送,该值相对于常量引用值 2^ (BPP-1) ,其中 BPP 是未压缩视频的每个样本的位数, (通常值为 8) 。
如果 ConfigIntraResidUnsigned 为 1,则内部宏块的空间域块将作为相对于常量引用值零的 16 位无符号整数值发送。
如果 ConfigResidDiffHost 为零,则 ConfigSpatialResid8 必须为零。 如果 ConfigResidDiffHost 为 1, 则 ConfigSpatialResid8 可以是任何值。
注意
对于 BPP 等于 8 的内图,必须使用 8 位样本发送空间域块。 对于 BPP 大于 8 的内图,必须使用 16 位样本发送空间域块。 如果 ConfigIntraResidUnsigned 为零,则这些样本将作为与 BPP-1) 常量引用值 2^ (的有符号整数值发送。 如果 ConfigIntraResidUnsigned 为 1,则这些示例将作为相对于常量引用值零的无符号整数值发送。
[in] ConfigResid8Subtraction
一个 UINT 值,该值指定是减去还是添加 8 位差异溢出块。 如果此成员设置为 1,则减去而不是添加 8 位差异溢出块。 除非 ConfigSpatialResid8 为 1,否则此成员必须为零。 如果 ConfigSpatialResid8 为 1,则 ConfigResid8Subtraction 的首选值为 1。 通过减去差异而不是添加差异,8 位差异解码完全符合视频解码器规范中所需的 -255 到 +255 之间的值范围。 此功能可实现完全符合性,因为 +255 不能表示为添加两个有符号的 8 位数字,但介于 -255 到 +255 之间的任何数字都可以表示为两个有符号 8 位数字 (+255 之差等于 +127 减去 -128) 。
[in] ConfigSpatialHost8or9Clipping
一个 UINT 值,该值指定是否由主机执行剪辑。 如果此成员设置为 1,则内部宏块的空间域块在主机上被剪裁为 8 位范围,非宏块的空间域块在主机上被剪裁为 9 位范围。 值为零表示主机未执行此类剪辑。 除非 ConfigSpatialResid8 设置为零,并且 ConfigResidDiffHost 设置为 1,否则此成员必须为零。 ConfigSpatialHost8or9Clipping 的首选值为零。
[in] ConfigSpatialResidInterleaved
一个 UINT 值,该值指定是否以色度交错的形式发送空间域残差数据。 如果此成员设置为 1,则任何空间域残差差数据都以与 YUV 格式交错模式匹配的色度交错形式发送。 除非 ConfigResidDiffHost 为 1 且 YUV 格式为 NV12 或 NV21,否则此成员必须为零。 ConfigSpatialResidInterleaved 的首选值为零。
[in] ConfigIntraResidUnsigned
使用基于主机的差异解码 (即 ConfigResidDiffHost 成员等于 1) 时,表示内部块的剩余差异数据的空间域块的方法。
如果将 ConfigIntraResidUnsigned 设置为零,并将 ConfigResidDiffHost 设置为 1,则发送内部宏块的空间域残差数据块,如下所示:
在非图中,如果 ConfigSpatialResid8 成员为零,则内部宏块的空间域剩余差异数据块将作为 16 位带符号整数值发送,该值相对于常量引用值 2^ (BPP-1) ,其中 BPP 是未压缩视频的每个样本的位数 (通常值为 8) 。
在非图中,如果 ConfigSpatialResid8 为 1,在内部图片中,如果 BPP 等于 8 (而不考虑 ConfigSpatialResid8) 的值,则内部宏块的空间域残差数据块将作为相对于常量引用值 128 的 8 位有符号整数值发送。
如果 ConfigIntraResidUnsigned 设置为 1,ConfigResidDiffHost 设置为 1,则发送内部宏块的空间域残差数据块,如下所示:
在非图中,如果 ConfigSpatialResid8 为零,则内部宏块的空间域残差数据块将作为相对于常量引用值零的 16 位无符号整数值发送。
在非图中,如果 ConfigSpatialResid8 为 1,在内部图片中 ,如果 BPP 等于 8 (而不考虑 ConfigSpatialResid8) 的值,则内部宏块的空间域残差数据块将作为相对于常量引用值 0 的 8 位无符号整数值发送。
ConfigIntraResidUnsigned 必须为零,除非 ConfigResidDiffHost 为 1。 ConfigIntraResidUnsigned 的首选值为零。
[in] ConfigResidDiffAccelerator
加速器残差配置。 此成员中的值 1 表示可以从基于加速器的 IDCT 的主机发送系数数据的转换域块。 值为零表示不使用基于加速器的 IDCT。
如果 ConfigResidDiffHost 成员和 ConfigResidDiffAccelerator 均为 1,则会在主机上和加速器上执行一些残差解码,如宏块级控制命令所示。 如果 bConfigBitstreamRaw 成员为 1,则 ConfigResidDiffAccelerator 必须为零。
ConfigResidDiffAccelerator 的首选值为 1。
如果 ConfigResidDiffAccelerator 和 ConfigResidDiffHost 设置为 1,则可以基于宏块在主机和加速器之间共享残差解码。 与 ConfigResidDiffAccelerator 设置为 1 且 ConfigResidDiffHost 设置为零时相比,此共享的加速器功能级别甚至更高。
[in] ConfigHostInverseScan
一个 UINT 值,该值指定是在主机还是加速器上执行转换域块处理的反向扫描。 此成员中的值 1 指示对转换域块处理的反向扫描在主机上执行,并且会针对任何转换系数发送绝对索引。 值为零表示在加速器上执行反向扫描。 如果 ConfigResidDiffAccelerator 为零或 Config4GroupedCoefs 成员为 1,则 ConfigHostInverseScan 必须为零。
如果 ConfigResidDiffAccelerator 为 1,则 ConfigHostInverseScan 的首选值为 1。
[in] ConfigSpecificIDCT
一个 UINT 值,该值指定对 主机外 IDCT 使用特定 IDCT 方法。 此成员中的值 1 表示使用了在ITU-T 建议 H.263 附件 W 中指定的 IDCT,可从 国际电信联盟 网站了解该 IDCT。 值为零表示任何符合的 IDCT 都可用于主机外 IDCT。 保留 (除零和 1 以外的值。)
如果 ConfigResidDiffAccelerator 为零,则 ConfigSpecificIDCT 必须为零,这表示基于主机的残差解码。
注意
ConfigSpecificIDCT 不得设置为 1 才能与 MPEG-2 视频一起使用。
[in] Config4GroupedCoefs
一个 UINT 值,该值指定如何发送主机外 IDCT 的转换系数。 此成员中的值 1 指示使用 DXVA_TCoef4Group 结构而不是 DXVA_TCoefSingle 结构发送主机外 IDCT 的转换系数。 如果 ConfigResidDiffAccelerator 为零或 ConfigHostInverseScan 为 1,则 Config4GroupedCoefs 为零。
如果 ConfigResidDiffAccelerator 为 1,则 Config4GroupedCoefs 的首选值为零。
[in] ConfigMinRenderTargetBuffCount
一个 USHORT 值,该值指定呈现目标缓冲区的最小数目。
[in] ConfigDecoderSpecific
一个 USHORT 值,指定要配置的特定于解码器的功能。 有关解码器功能的信息,请参阅该解码器的规范。 有关解码器的列表,请参阅 提供视频解码功能。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 操作系统中可用。 |
标头 | d3dumddi.h (包括 D3dumddi.h) |