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
指定要处理的宏块的类型。 以下位定义宏块处理。
Bits | 说明 |
---|---|
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
指定要在当前宏块之后生成的跳过的宏块数,并指示当前宏块块的残差数据的位置。 此成员包含两个变量: MBskipsFollowing (最有效 8 位)和 MBdataLocation (最小有效 24 位)。 MBskipsFollowing 指示在当前宏块之后要生成的跳过的宏块数。 MBdataLocation 是残差块数据缓冲区中的索引。 此索引指示当前宏块块的残差差数据的位置,表示为 32 位的倍数。
wPatternCode
指示是否为宏块中的每个块发送残差数据。 在内部图片中,将针对宏块中的每个块发送残差数据。 wPatternCode 中引用当前宏块的所有块的位在此结构中必须为 1。
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) 块。 (位 (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 变量必须为零。 对于 macroblock 控制命令缓冲区中的第一个宏块, MBdataLocation 变量必须为零。 有关如何生成跳过的宏块的详细信息,请参阅 生成跳过的宏块。
要求
要求 | 值 |
---|---|
Header | dxva.h (包括 Dxva.h) |