DXVA_MBctrl_P_HostResidDiff_1 结构 (dxva.h)

主机解码器为每个宏块发送一次DXVA_MBctrl_P_HostResidDiff_1结构,以便在使用 基于主机的 IDCT 时为大多数非宏图片情况指定宏块控制命令。

语法

typedef struct _DXVA_MBctrl_P_HostResidDiff_1 {
  WORD         wMBaddress;
  WORD         wMBtype;
  DWORD        dwMB_SNL;
  WORD         wPatternCode;
  WORD         wPC_Overflow;
  DWORD        dwReservedBits2;
  DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off];
} DXVA_MBctrl_P_HostResidDiff_1;

成员

wMBaddress

按光栅扫描顺序指定当前宏块的宏块地址。 有关宏块地址的示例,请参阅 宏块地址

wMBtype

指定要处理的宏块的类型。 以下位定义 wMBtype 的内容。

Bits 说明
15 到 12 MvertFieldSel_3 (位 15,最有效位) 到 MvertFieldSel_0 (位 12)
为稍后在宏块控件命令中发送的相应运动向量指定垂直字段选择。 例如,对于帧图片结构 (基于帧的运动,对于 H.261 和 H.263) ,这些位必须全部为零。 这些位的使用与 MPEG-2 第 6.3.17.2 节中为相应位指定的相同。
11 保留位。 必须为零。
10 HostResidDiff
指定是发送空间域残差差解码块,还是为当前宏块的主机外 IDCT 发送转换系数。
在此结构中,HostResidDif 标志始终等于 1。 如果 bConfigResidDiffHost 为零,则此标志必须为零。 如果 bConfigResidDiffAccelerator 为零,则此标志必须为 1。
9 和 8 MotionType
指定图片中的运动类型。 例如,对于帧图片结构 ((如 H.261) 中所示)的基于帧的运动,位 9 必须为 1,位 8 必须为零。
当 MPEG-2 视频中存在这些位时,这些位的使用直接对应于使用 MPEG-2 视频的第 6.3.17.1 节和表 6-17 和 6-18 中的frame_motion_type位或field_motion_type位。 以下备注部分进一步介绍了这些位的用法。
7 和 6 MBscanMethod
此变量没有意义,这些位在此结构中应设置为零。
5 FieldResidual
指示残差块是否使用 MPEG-2 中指定的字段 IDCT 结构。
如果 DXVA_PictureParameters 的 bPicStructure 成员为 1 或 2,则必须为 1。 当用于 MPEG-2 时,如果 MPEG-2 语法中的frame_pred_frame_DCT变量为 1,则 FieldResidual 必须为零;如果宏块存在dct_type,则必须等于 MPEG-2 语法中的 dct_type 变量。
4 H261LoopFilter
指定 H.261 循环筛选器 (H.261) 第 3.2.3 节是否为当前宏块预测处于活动状态。 H.261 循环筛选器是一个可分离的 1/4、1/2、1/4 筛选器,可水平和垂直方式应用于 H.261 宏块中的所有六个块,但块边缘的一个分流器将落在块外。 在这种情况下,筛选器将更改为系数为 0、1、0。 在二维筛选器过程的输出中,将舍入到 8 位整数时保留完整的算术精度, () 舍入半整数或更高值。
3 Motion4MV
一个变量,指示向前运动对宏块中的四个亮度块中的每个块使用不同的运动矢量,如 H.263 附件 F 和 J.Motion4MV 中所用的,如果 MotionForward 为零或 DXVA_PictureParameters 的 bPic4MVallowed 成员为零,则 变量必须为零。
2 MotionBackward
以为 MPEG-2 中相应的macroblock_motion_backward变量指定的方式使用。 如果 DXVA_PictureParameters 的 bPicBackwardPrediction 成员为零,则 MotionBackward 必须为零。 以下“备注”部分进一步说明了此位的用法。
1 MotionForward
用于 MPEG-2 中相应的macroblock_motion_forward变量。 以下“备注”部分进一步说明了此位的用法。
0 IntraMacroblock
指示宏块编码为内部,并且没有运动向量用于当前宏块。 对应于 macroblock_intrain MPEG-2。 以下“备注”部分进一步说明了此位的用法。

dwMB_SNL

指定要在当前宏块之后生成的跳过宏块数,并指示当前宏块的剩余差异数据的位置。 此成员包含两个变量: MBskipsFollowing (最有效 8 位)和 MBdataLocation (最小有效 24 位)。 MBskipsFollowing 指示在当前宏块之后要生成的跳过的宏块数。 MBdataLocation 是残差块数据缓冲区中的索引。 此索引指示当前宏块块的残差差数据的位置,表示为 32 位的倍数。

wPatternCode

指示是否为当前宏块中的每个块发送 残差数据

wPatternCode (的位 (11-i) ,其中位 0 是最小有效位,) 指示是否为块 i 发送残差数据, 其中 i 是 MPEG-2 图 6-10、6-11 和 6-12 中指定的宏块的索引, (Y 的光栅扫描顺序,后跟 4:2:0 Cb 块(光栅扫描顺序), 然后是 4:2:0 的 Cr 块,然后是 4:2:2 个 Cb 块,然后是 4:2:2 个 Cr 块,然后是 4:4:4 个 Cb 块,然后是 4:4:4 个 Cr) 块。 (位 (11-i) 等于 1) 的已编码块的数据,在残差编码缓冲区中以相同的索引顺序 (增加 i) 。 对于 4:2:0 MPEG-2 数据, wPatternCode 的值对应于将 CBP (编码块模式的解码值) 向左移动 6 位位置, (用于 4:2:2 和 4:4:4 色度格式的较低位位置) 。

如果 DXVA_ConfigPictureDecode 的 bConfigSpatialResidInterleaved 成员为 1,则会以与使用的 YUV 像素格式匹配的色度交错形式发送基于主机的残差。 在这种情况下,每个 Cb 和空间上相应的 Cr 对块被视为单个残差结构单位。 这不会更改 wPatternCode 的值或含义,但它意味着每当其中任一数据块在 wPatternCode 中设置了相应的位时,都会发送每对 Cb 和 Cr 数据块的两个成员。 如果 wPatternCode 中特定数据块的位为零,则每当此配对需要为 wPatternCode 位等于零的块发送残差数据块时,必须发送相应的残差数据值。

wPC_Overflow

指定宏块的哪些块使用溢出残差数据。

使用基于主机的残差解码时,DXVA_PictureParametersbPicOverflowBlocks 成员等于 1,IntraMacroblock 等于零 (8-8 溢出方法 ) ,wPC_Overflow包含溢出块的模式代码。 (模式代码的指定方式与 wPatternCode.) (位 (11-i) 等于 1) 的编码溢出块的数据位于剩余编码缓冲区中, (增加 i) 。

dwReservedBits2

用于打包和对齐的保留位。 必须为零。

MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]

包含宏块) (运动向量的值的数组,每个运动向量由 DXVA_MVvalue 结构表示。

注解

MBskipsFollowing 指定的每个跳过的宏块必须以与递增 wMBaddress 的值相等的方式生成,然后重复相同的宏块控制命令。

MBskipsFollowing 的非零值宏块控件命令的内容与 MBskipsFollowing) 第一个跳过的宏块系列的内容相等 (。 因此,每当 MBskipsFollowing 不为零时,以下结构成员和变量都必须等于零:Motion4MV、IntraMacroblock、wPatternCodewPC_Overflow。 然后,每个后续跳过的宏块都以与第一个相同的方式生成,只是递增 wMBaddress 的值

对于宏块控制命令缓冲区中的第一个宏块,MBdataLocation 必须为零。 对于宏块控制命令缓冲区中第一个宏块以外的宏块,如果 wPatternCode 为零,MBdataLocation 可能包含任何值。 当 wPatternCode 为零时,建议使用解码器,但不需要将此值设置为零或设置为与下一个宏块控制命令中的值相同的值。

有关如何生成跳过的宏块的详细信息,请参阅 生成跳过的宏块

IntraMacroblockMotionForwardMotionBackwardMotionTypeMvertFieldSelMVector 的有效组合显示在宏块控制命令结构第一部分的表中。

要求

要求
Header dxva.h (包括 Dxva.h)

另请参阅

DXVA_ConfigPictureDecode

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_MVvalue

DXVA_PictureParameters