DXVA_MBctrl_I_HostResidDiff_1结构 (dxva.h)

主机解码器为每个宏块发送一次DXVA_MBctrl_I_HostResidDiff_1结构,以指定图片 的宏块控制命令。

语法

typedef struct _DXVA_MBctrl_I_HostResidDiff_1 {
  WORD  wMBaddress;
  WORD  wMBtype;
  DWORD dwMB_SNL;
  WORD  wPatternCode;
  WORD  wPC_Overflow;
  DWORD dwReservedBits2;
} DXVA_MBctrl_I_HostResidDiff_1;

成员

wMBaddress

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

wMBtype

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

说明
15 到 12 MvertFieldSel_3(位 15,最有效位)到MvertFieldSel_0(位 12)
为宏块控制命令中稍后发送的相应运动向量指定垂直字段选择。 对于具有框架图片结构的基于帧的运动(例如,对于 H.261 和 H.263),这些位必须全部为零。 MvertFieldSel_0、MvertFieldSel_1、 MvertFieldSel_2 和MvertFieldSel_3位对应于 MPEG-2 第 6.3.17.2 节中的 motion_vertical_field_select[r][s] 位。
11 保留位
必须为零。
10 HostResidDiff
指定是否发送空间域残差解码块,还是为当前宏块的非主机 IDCT 发送转换系数。
HostResidDiff 在此结构中始终等于 1。 如果 bConfigResidDiffHost 为零,则此标志必须为零。 如果 bConfigResidDiffAccelerator 为零,则此标志必须为 1。 bConfigResidDiffHost 和 bConfigResidDiffAccelerator 成员包含在 DXVA_ConfigPictureDecode 结构中。
9 和 8 MotionType
必须为零。
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
必须为零。
3 Motion4MV
必须为零。
2 MotionBackward
必须为零。
1 MotionForward
必须为零。
0 IntraMacroblock
必须为 1。

dwMB_SNL

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

wPatternCode

指示是否为宏块中的每个块发送残差数据。 在图中,将为宏块中的每个块发送残差数据。 wPatternCode 中引用当前宏块的所有块的位必须在此结构中为 1。

wPatternCode(其中位零为最小有效位)的位(11-i)表示是否为块 i发送残差数据,其中 i 是宏块内块的索引,如 MPEG-2 图 6-10 所示, 6-11 和 6-12 (Y 的光栅扫描顺序,后跟 4:2:0 Cb 的光栅扫描顺序, 后接 Cr 的 4:2:0 块,后跟 4:2:2 块的 Cb,后跟 4:2:2 的 Cr 块,后跟 4:4:4 块的 Cb,后跟 4:4:4 的 Cr 块。 编码块(那些具有位(11i) 等于 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

必须为零。

dwReservedBits2

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

言论

图片中不使用跳过的宏块,因此 MBskipsFollowing 变量必须为零。 对于宏块控制命令缓冲区中的第一个宏块,MBdataLocation 变量必须为零。 有关如何生成跳过的宏块的详细信息,请参阅 生成跳过的宏块

要求

要求 价值
标头 dxva.h (包括 Dxva.h)

另请参阅

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_PictureParameters

DXVA_TCoefSingle