DXVA_ConfigPictureDecode结构 (dxva.h)

主机解码器将DXVA_ConfigPictureDecode结构发送到加速器,以设置压缩图片解码的配置。

语法

typedef struct _DXVA_ConfigPictureDecode {
  DXVA_ConfigQueryOrReplyFunc dwFunction;
  DWORD                       dwReservedBits[3];
  GUID                        guidConfigBitstreamEncryption;
  GUID                        guidConfigMBcontrolEncryption;
  GUID                        guidConfigResidDiffEncryption;
  BYTE                        bConfigBitstreamRaw;
  BYTE                        bConfigMBcontrolRasterOrder;
  BYTE                        bConfigResidDiffHost;
  BYTE                        bConfigSpatialResid8;
  BYTE                        bConfigResid8Subtraction;
  BYTE                        bConfigSpatialHost8or9Clipping;
  BYTE                        bConfigSpatialResidInterleaved;
  BYTE                        bConfigIntraResidUnsigned;
  BYTE                        bConfigResidDiffAccelerator;
  BYTE                        bConfigHostInverseScan;
  BYTE                        bConfigSpecificIDCT;
  BYTE                        bConfig4GroupedCoefs;
} DXVA_ConfigPictureDecode, *LPDXVA_ConfigPictureDecode;

成员

dwFunction

指示使用探测和锁定命令时查询或响应的类型。 dwFunction 的最大 24 位是DXVA_ConfigQueryOrReplyFlag变量。

DXVA_ConfigQueryOrReplyFlag变量中最小有效 4 位包含所执行的查询或响应的状态指示器。

dwFunction 的最小有效 8 位是bDXVA_Func变量,在本例中,该变量等于 1。

dwReservedBits[3]

用于打包和对齐的保留位。 这些位为零。

guidConfigBitstreamEncryption

指示与位流数据缓冲区的加密协议类型关联的 GUID。 该值DXVA_NoEncrypt (dxva.h) 中定义的 GUID 名称指示未应用加密。 如果 bConfigBitstreamRaw 为零,则这是DXVA_NoEncrypt。

guidConfigMBcontrolEncryption

指示与 宏块控制缓冲区的加密协议类型关联的 GUID。 该值DXVA_NoEncrypt (dxva.h) 中定义的 GUID 名称指示未应用加密。 如果 bConfigBitstreamRaw 为 1,则这是DXVA_NoEncrypt。

guidConfigResidDiffEncryption

指示与加密协议类型关联的 GUID,用于对包含空间域数据或基于加速器的 IDCT) 的转换域系数集 (缓冲区进行残差解码数据缓冲区。 如果 bConfigBitstreamRaw 为 1,则这是DXVA_NoEncrypt。 (DXVA_NoEncrypt是在 dxva.h 中定义的 GUID,指示未应用加密。)

bConfigBitstreamRaw

包含位流处理指示器。 值 1 指定图片数据将以原始位流内容的形式在位流缓冲区中发送。 值为零,指定使用宏块控制命令缓冲区发送图片数据。

如果 bConfigResidDiffHost 为 1 或 bConfigResidDiffAccelerator 为 1,则为零。 值零被视为基本支持级别。 首选第一级的额外支持。

bConfigMBcontrolRasterOrder

指定宏块控制命令是按光栅扫描顺序还是任意顺序排列。 值 1 指定每个宏块控件命令缓冲区中的宏块控件命令按光栅扫描顺序,值为零表示任意顺序。 目前,允许驱动程序限制对光栅扫描顺序的支持;但是,驱动程序应同时支持任意和光栅扫描顺序。

bConfigResidDiffHost

包含主机残差配置 (请参阅 宏块定向图片解码 ,以获取详细信息) 。 值 1 指定某些残差解码数据可以作为主机空间域中的块发送。 值为零指定不会发送空间域数据。 如果 bConfigBitstreamRaw 为 1,则此成员为零。 首选加速器支持零和 1。

bConfigSpatialResid8

指示在 bConfigResidDiffHost 等于 1) 时使用基于主机的残差差解码 (时,用于表示预测 (非intra) 图片的残差空间域块的字号。

如果 bConfigSpatialResid8 为 1 且 bConfigResidDiffHost 为 1,则主机将使用 8 位签名样本为 nonintra 宏块发送残差空间域块,并在预测 (nonintra) 图片的格式发送残差空间域块,如下所示:

  • 如果 bConfigIntraResidUnsigned 为零,则宏块的空间域块作为 8 位有符号整数值发送,相对于常量引用值为 128。
  • 如果 bConfigIntraResidUnsigned 为 1,则宏块的空间域块将作为 8 位无符号整数值作为相对于零的常量引用值发送。
如果 bConfigSpatialResid8 为零且 bConfigResidDiffHost 为 1,则主机将使用 16 位有符号样本为 nonintra 宏块发送非 intra 宏块的残差空间域块,以及预测的 (nonintra) 图片的格式中的宏块,如下所示:
  • 如果 bConfigIntraResidUnsigned 为零,则宏块的空间域块作为 16 位有符号整数值发送,相对于常量引用值为 2 (BPP-1) ,其中 BPP 是未压缩视频的每个样本的位数 (,通常为 8) 的值。
  • 如果 bConfigIntraResidUnsigned 为 1,则宏块的空间域块将作为 16 位无符号整数值发送到相对于零的常量引用值。
如果 bConfigResidDiffHost 为零,bConfigSpatialResid8 成员必须为零。 bConfigResidDiffHost 为 1 时,对于 bConfigSpatialResid8 的特定值没有首选项。
注意对于 BPP 等于 8 的图片,必须使用 8 位样本发送空间域块。 对于 BPP 大于 8 的图片,必须使用 16 位样本发送空间域块。 (BPP 变量是未压缩视频的每个样本的位数,通常值为 8.)

如果 bConfigIntraResidUnsigned 为零,则这些样本作为带符号整数值发送,相对于常量引用值为 2 (BPP-1) 。 如果 bConfigIntraResidUnsigned 为 1,则这些示例将作为无符号整数值发送到相对于零的常量引用值。

 

bConfigResid8Subtraction

等于 1 时,指示将减去 8 位差异溢出块,而不是添加。 除非 bConfigSpatialResid8 为 1,否则必须为零。 如果 bConfigSpatialResid8 为 1,则支持加速器的首选值为 1。 减去差异的能力,而不是添加差异允许 8 位差异解码完全符合视频解码器规范中所需的完整 +/-255 值范围。 这是因为不能将 +255 表示为添加两个有符号的 8 位数字,但范围 +/-255 中的任何数字都可以表示为两个有符号的 8 位数字 (+255 之间的差值等于 +127 减 âˆ'128) 。

bConfigSpatialHost8or9Clipping

等于 1 时,指示宏块的空间域块被剪裁为主机上的 8 位范围,并且 nonintra 宏块的空间域块被剪裁为主机上的 9 位范围。 值为零表示主机不会执行此类剪辑。 必须为零,除非 bConfigSpatialResid8 等于零, bConfigResidDiffHost 等于 1。 要支持的加速器的首选值为零。

bConfigSpatialResidInterleaved

等于 1 时,指示以与 YUV 格式的 chrominance 交错模式匹配的交错形式发送任何空间域残差数据。 必须为零,除非 bConfigResidDiffHost 为 1,并且 YUV 格式为 NV12 或 NV21。 要支持的加速器的首选值为零。

bConfigIntraResidUnsigned

指示当 bConfigResidDiffHost 等于 1) 时,当使用基于主机的差异解码 (块的空间域块残差数据表示方法。

如果 bConfigIntraResidUnsigned 等于零, bConfigResidDiffHost 等于 1,则发送宏块的空间域残差数据块,如下所示:

  • 在非索引图中,如果 bConfigSpatialResid8 为零,则宏块的空间域残差数据块作为 16 位有符号整数值发送,相对于常量引用值为 2 (BPP-1) ,其中 BPP 是未压缩视频的每个样本的位数 (,通常为 8) 。
  • 如果 bConfigSpatialResid8 为 1 且在图片中,如果 BPP 等于 8 (而不考虑 bConfigSpatialResid8) 的值,则宏块的空间域残差数据块将作为 8 位带符号整数值发送,相对于常量引用值为 128。
bConfigIntraResidUnsigned 等于 1 且 bConfigResidDiffHost 等于 1 时,将按如下所示发送宏块的空间域残差数据块:
  • 如果 bConfigSpatialResid8 为零,则非索引图中,宏块的空间域残差数据块作为 16 位无符号整数值发送,相对于常量引用值为零。
  • 如果 bConfigSpatialResid8 为 1 且在图片中,如果 BPP 等于 8 (而不考虑 bConfigSpatialResid8) 的值,则宏块的空间域残差数据块作为 8 位无符号整数值作为 8 位无符号整数值发送。
除非 bConfigResidDiffHost 为 1,否则 bConfigIntraResidUnsigned 成员必须为零。

要支持的加速器的首选值为 bConfigIntraResidUnsigned 的零。

bConfigResidDiffAccelerator

包含加速器残差配置。 值为 1 表示可能从主机发送基于加速器的 IDCT 的转换域系数数据块。 一个零值指定不会使用基于加速器的 IDCT。 如果 bConfigResidDiffHostbConfigResidDiffAccelerator 均为 1,则会在主机上和加速器上执行一些残差解码,如宏块级控制命令指示。 如果 bConfigBitstreamRaw 为 1,则此成员必须为零。

要支持的加速器的首选值为 bConfigResidDiffAccelerator 的 1。

如果 bConfigResidDiffAcceleratorbConfigResidDiffHost 等于 1,则可以在宏块的基础上在主机和加速器之间共享残差解码。 这被视为比 bConfigResidDiffAccelerator 等于 1 且 bConfigResidDiffHost 等于零时更高级别的加速器功能。

bConfigHostInverseScan

指示对主机还是加速器执行转换域块处理的反向扫描。 值为 1 表示将在主机上执行转换域块处理的反向扫描,并且将改为针对任何转换系数发送绝对索引。 值为零表示反向扫描将在加速器上执行。 如果 bConfigResidDiffAccelerator 为零,或者 bConfig4GroupedCoefs 为 1,则此成员必须为零。

如果 bConfigResidDiffAccelerator 为 1,则支持加速器的首选值为 1。

bConfigSpecificIDCT

指示对非主机 IDCT 使用特定的 IDCT 方法。 值为 1 表示使用在ITU-T 建议 H.263 附件 W 中指定的 IDCT。 值为零表示任何合规的 IDCT 都可用于主机外 IDCT。 (1 以外的值保留以供将来使用。)

如果 bConfigResidDiffAccelerator 为零,则此成员必须为零, (只是指示基于主机的残差解码) 。

注意 ITU-T 建议 H.263 的附件 W 不符合 MPEG-2 corrigendum 2 的 IDCT 要求,因此 bConfigSpecificIDCT 不得是用于 MPEG-2 视频的 IDCT 要求。
 

bConfig4GroupedCoefs

值 1 表示将使用 DXVA_TCoef4Group 结构而不是 DXVA_TCoefSingle 结构发送非主机 IDCT 的转换系数。 如果 bConfigResidDiffAccelerator 为零,或者 bConfigHostInverseScan 为 1,则为零。

如果 bConfigResidDiffAccelerator 为 1,则支持加速器的首选值为零。

注解

对于某些类型的位流,强制每个宏块控制命令缓冲区中的宏块控制命令处于光栅顺序,要么大大增加必须处理的所需缓冲区数,或者需要主机重新排序控制信息。 因此,对任意顺序的支持对解码过程有利。 例如,如果每个缓冲区内需要光栅扫描顺序 (H.263 附件 K 的任意切片排序和矩形切片模式具有更严重的反响,则 H.261 CIF 分辨率解码可能需要每个图片 36 个宏块控制缓冲区,这可能需要大量缓冲区。)

要求

   
Header dxva.h (包括 Dxva.h)

另请参阅

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_TCoef4Group

DXVA_TCoefSingle