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
指定要处理的宏块的类型。 以下位定义宏块处理。
位 | 说明 |
---|---|
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 指定 macroblock 控件命令的 scan 方法。 如果 bPicScanFixed 为 1,则必须等于 bPicScanMethod。 如果 bConfigHostInverseScan 为零,则 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
wPatternCode
指示是否为宏块中的每个块发送残差数据。 在图中,将为宏块中的每个块发送残差数据。 引用当前宏块的所有块的 wPatternCode 中的位必须在DXVA_MBctrl_I_OffHostIDCT_1中为 1。
wPatternCode(其中位 0 是最小有效位)的位(11-i) 的位 (11-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)。
仅当 HostResidDiff 标志(wMBtype中的位 10)为零时,才会使用此成员,bChromaFormat 为 1 (4:2:0)。 如果以 4:2:2 或 4:4:4 格式使用,则会在关键内存对齐边界之后增加典型的宏块控件命令的大小。 因此,DXVA_TCoefSingle 结构中的 TCoefEOB 位用于确定非 4:2:0 事例中每个块中的系数数。
bNumCoef 的目的是指示残差数据缓冲区中每个块的数据数量,以系数数表示。 当 DXVA_ConfigPictureDecode 结构的 bConfig4GroupedCoefs 成员为 1 时,bNumCoef 可能包含为块发送的实际系数数,或者将该值舍入为四分之一的倍数。 这些系数的数据按相同的顺序在残差缓冲区中找到。
言论
图片中不使用跳过的宏块,因此 MBskipsFollowing 变量必须为零。 对于宏块控制命令缓冲区中的第一个宏块,MBdataLocation 变量必须为零。 有关如何生成跳过的宏块的详细信息,请参阅 生成跳过的宏块。
要求
要求 | 价值 |
---|---|
标头 | dxva.h (包括 Dxva.h) |