DXVA_MBctrl_I_OffHostIDCT_1 结构 (dxva.h)

主机解码器为每个宏块发送一次DXVA_MBctrl_I_OffHostIDCT_1结构,以便在使用主机外 IDCT 时为 4:2:0 内部图片指定宏块控制命令。

语法

typedef struct _DXVA_MBctrl_I_OffHostIDCT_1 {
  WORD  wMBaddress;
  WORD  wMBtype;
  DWORD dwMB_SNL;
  WORD  wPatternCode;
  BYTE  bNumCoef[DXVA_NumBlocksPerMB_420];
} DXVA_MBctrl_I_OffHostIDCT_1;

成员

wMBaddress

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

wMBtype

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

Bits 说明
15 到 12 MvertFieldSel_3 (位 15,) 到MvertFieldSel_0 (位 12)
必须为零。
11 保留位
必须为零。
10 HostResidDiff
指定是否发送空间域残差解码块,或者是否为当前宏块的主机外 IDCT 发送转换系数。
在此结构中,HostResidDiff 标志始终等于零。 如果 bConfigResidDiffHost 为零,则此标志必须为零。 如果 bConfigResidDiffAccelerator 为零,则此标志必须为 1。 bConfigResidDiffHost 和 bConfigResidDiffAccelerator 成员包含在 DXVA_ConfigPictureDecode 结构中。
9 和 8 MotionType
这不适用于图片内部。 两个位都必须为零。
7 和 6 MBscanMethod
指定宏块控制命令的扫描方法。 如果 bPicScanFixed 为 1,则必须等于 bPicScanMethod。
如果 bConfigHostInverseScan 为零,则 MBscanMethod 为以下值之一:
  • 零 âˆ' 曲折扫描 (MPEG-2 图 7-2)
  • 1 ˆ' 备用垂直扫描 (MPEG-2 图 7-3)
  • 2 ˆ'交替水平扫描 (H.263 图 I.2 第一部分)
如果 bConfigHostInverseScan 为 1,则 MBscanMethod 等于 3,这是具有绝对系数地址的任意扫描。 bPicScanMethod 和 bPicScanFixed 是 DXVA_PictureParameters 的成员。 bConfigHostInverseScan 是 DXVA_ConfigPictureDecode 的成员。
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

wPatternCode

指示是否为宏块中的每个块发送残差数据。 在图中,将针对宏块中的每个块发送残差数据。 wPatternCode 中引用当前宏块的所有块的位必须为 1,DXVA_MBctrl_I_OffHostIDCT_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) 。 编码块 (位 (11-i) 等于 1) 的块的数据,在残差编码缓冲区中按相同的索引顺序找到, (增加 i) 。 对于 4:2:0 MPEG-2 数据, wPatternCode 的值对应于将 CBP (编码块模式的解码值) 向左移动 6 位位置, (用于 4:2:2 和 4:4:4 色度格式的低位位置) 。

bNumCoef[DXVA_NumBlocksPerMB_420]

bNumCoef 数组中的每个值指示宏块的每个块 i 的剩余差异数据缓冲区中的系数数。

数组下标 i 是 MPEG-2 视频图 6-10、6-11 和 6-12 中指定的宏块内块的索引, (Y 的光栅扫描顺序,后跟 Cb,后跟 Cr) 。

仅当 wMBtype) 中的 hostResidDiff 标志 (位 10 为零,bChromaFormat 为 1 (4:2:0) 时,才使用此成员。 如果以 4:2:2 或 4:4:4 格式使用,则会增大典型宏块控制命令的大小,使其超出关键内存对齐边界。 因此,DXVA_TCoefSingle结构中的 TCoefEOB 位用于确定非 4:2:0 情况下每个块中的系数数。

bNumCoef 的目的是指示残差数据缓冲区中每个块存在的数据量,以存在的系数数表示。 当 DXVA_ConfigPictureDecode 结构的 bConfig4GroupedCoefs 成员为 1 时,bNumCoef 可能包含为块发送的实际系数数,也可以包含向上舍入为 4 的倍数的值。 这些系数的数据按相同顺序在残差缓冲区中找到。

注解

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

要求

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

另请参阅

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle