低级别 IDCT 处理元素

DirectX VA 接口支持各种处理低级别反离散余弦转换 (IDCT) 的方法。 有两种基本类型的操作:

  • 主机外 IDCT:将转换系数的宏块传递到加速器,以便进行外部 IDCT、图片重建和重建剪辑。

  • 基于主机的 IDCT:在主机上执行 IDCT,并将空间域结果块传递到加速器,以便进行外部图片重建和重建剪辑。

在这两种情况下,基本反量子化过程、前 IDCT 范围饱和、MPEG-2 不匹配控制 ((如有必要)) ,并在主机上执行 DC 内偏移 ((如有必要)) 。 在这两种情况下,最终的图片重建和重建剪辑都是在加速器上完成的。

在以下步骤中定义了反量化、IDCT 前饱和度、不匹配控制、DC 内偏移、IDCT、图片重建和重建剪辑过程。 DXVA_QmatrixData结构加载反向量化矩阵数据,以便进行压缩的视频图片解码。 (BPPWTHT 的值应假定等于 8,除非 DXVA_PictureParameters structure.)

  1. 根据需要执行反量化 (包括应用任何反量化加权矩阵) ,以从熵编码的量化索引创建一组 IDCT 系数值 F“ (u,v) 。 这由主机执行。

  2. 使转换系数块的每个重建系数值 F“ (u,v) 饱和,以获取以下公式中定义的受限允许范围内的值 F' (u,v) 。 这由主机执行。 用于预 IDCT 饱和度计算的公式。

  3. 对 MPEG-2 执行不匹配控制。 (仅 MPEG-2 需要此处理阶段。) 不匹配控制是通过对宏块中所有系数的饱和值求和来执行的, (这等效于 XOR 将其最小有效位) 。 如果求和为偶数,则从最后一个系数 F' (WT-1,HT-1) 的饱和值中减去 1。 如果总和为奇数,则 F' (WT-1,HT-1) 的饱和值将按原样使用,而不做更改。 在此文档中,在饱和度和不匹配控制后创建的系数值称为 F (u,v) 。 这由主机执行。 MPEG-1 具有不同形式的不匹配控件,该控件包括对反量化后将具有偶数值的每个系数通过正负 1 更改值。 H.263 不需要本节中所述的不匹配控件。 在任何情况下,根据需要,主机负责不匹配控制。 不匹配控件计算的公式。

  4. 如有必要,向所有内部块添加 DC 内偏移 () ,以便所有内部块表示相对于空间参考预测值 2 (BPP-1) 的差异。 对于所有引用的视频编码标准( (H.261、H.263、MPEG-1、MPEG-2 和 MPEG-4) ),除非 HostResidDiff 为 1 且 DXVA_ConfigPictureDecode 结构的 bConfigIntraResidUnsigned 成员为 1, DC 内部偏移量的值 (2 (BPP-1) ) * sqrt (转换域中的 WTHT T) 。 除 MPEG-4 之外的所有情况下,此值为 1024,它允许 BPP 大于 8。 这由主机执行。

  5. 在主机或加速器上 (IDCT) 执行反向离散余弦变换。 IDCT 由以下公式指定,其中:C (u) = 1 表示 u = 0, 否则,对于 v = 0,C (u) = sqrt (2) C (v) = 1,否则 C (v) = sqrt (2) xy 是像素域 u 和 v 中的水平和垂直空间坐标v 是转换域水平和垂直频率坐标 WTHT 是转换块的宽度和高度, (通常都是 8) 。

  6. 将空间域残差信息添加到非输入块 的运动补偿预测 值或内块的常量参考值,以便在加速器上执行图片重建。 块内部的常量引用值为 2 (BPP-1) ,但当 DXVA_MBctrl_P_HostResidDiff_1) 结构的 wMBtype 成员的 hostResidDiff (位 10 且 DXVA_ConfigPictureDecode 结构的 bConfigIntraResidUnsigned 成员为 1 时除外。 在后一种情况下,常量为零。

  7. 将图片重建剪辑为 0 到 (2BPP) -1 范围,并将最终生成的图片样本值存储在加速键上。