DXVA_QmatrixData结构 (dxva.h)
主机解码器将DXVA_QmatrixData结构发送到加速器,以加载非主机比特流压缩视频图片解码的反量子化矩阵数据。
语法
typedef struct _DXVA_QmatrixData {
BYTE bNewQmatrix[4];
WORD *Qmatrix[4][DXVA_USUAL_BLOCK_WIDTH DXVA_USUAL_BLOCK_HEIGHT];
} DXVA_QmatrixData, *LPDXVA_QmatrixData;
成员
bNewQmatrix[4]
指示在反量子化矩阵缓冲区中存在哪些新的反量子化矩阵。 此数组中的每个元素对应于反量子化矩阵类型,并指示该类型的新反量子化矩阵是否存在于缓冲区中。 如果 bNewQmatrix 数组中的任何元素包含值 1,则为该数组元素指定的类型的新反量子化矩阵紧跟在反量子化矩阵缓冲区中。 可以使用的反量子化矩阵如下所示。
NewQmatrix 元素 | Inverse-Quantization 矩阵类型 |
---|---|
0 | 指定亮度内量化。 |
1 | 指定亮度量子化。 |
2 | 指定 chrominance 量子化。 |
3 | 指定跨 chrominance 量子化。 |
bNewQmatrix[0] 和 bNewQmatrix[1] 中的值不得为零。
如果 bNewQmatrix[2] 或 bNewQmatrix[3] 的值为零,则适用以下内容:
如果 bNewQmatrix[i - 2] 为零,则 i第一个元素定义的上一个逆量子化矩阵必须继续由加速器使用。
如果 bNewQmatrix[i - 2] 为 1,则由 i第 2 个元素定义的反量子化矩阵设置为等于 i - 2 的新反量子化矩阵。
Qmatrix[4]
一个二维数组,指定反量化矩阵缓冲区。 此数组仅适用于 bNewQmatrix 等于 1 的每个元素。 矩阵由 (bBlockWidthMinus1+1) X (bBlockHeightMinus1+1) 无符号单词(其中仅较低 1) 每个单词的 8 位用于主要的视频编码标准),其中 bBlockWidthMinus1,bBlockHeightMinus1 是 DXVA_PictureParameters 结构的成员。
言论
如果视频编码不需要反量子化矩阵(例如 H.261 和 H.263),则不得发送反量子化矩阵缓冲区。 如果视频编码确实需要反量子化矩阵,则必须在视频解码过程开始时为主机提供的这些反量子化矩阵提供一些值,或者与该矩阵一起传输任何位流数据缓冲区。
如果主机未发送任何先前值,则加速器无法假定反量子化矩阵的默认值。 即使量子化矩阵值包含相关视频编码规范中默认可用的值,也必须显式发送量化矩阵值。
仅当 DXVA_ConfigPictureDecode 结构的 bConfigBitstreamRaw 成员为 1 时,才会发送反量子化矩阵缓冲区。
反量化矩阵中的数据值的顺序按相关视频编码规范中的指定顺序。
要求
要求 | 价值 |
---|---|
标头 | dxva.h (包括 Dxva.h) |