除块筛选器命令

宏块的解除阻止筛选器命令可能需要加速器读取当前宏块内和旁边重新构造的样本的值。 读取的重新构造值是当前宏块上方的两行样本、当前宏块左侧的两列样本以及当前宏块中的样本。 取消阻止筛选器命令可能会导致修改当前宏块上方的一行示例和当前宏块剩余的一列示例,以及当前宏块中最多三行和三列示例。 因此,给定宏块的解除阻止筛选过程可能需要事先重建另外两个宏块。

两种不同类型的解除阻止筛选器命令缓冲区是:

  • 当 DXVA_PictureParameters 结构的 bPicDeblockConfined 成员为零) 时,需要访问和修改当前取消阻止筛选器命令缓冲区之外的宏块的重新构造样本值的 缓冲区 (。

  • bPicDeblockConfined 为 1) 时,不需要访问和修改当前解除阻止筛选器命令缓冲区之外的宏块重新构造示例值的缓冲区 (。

若要处理第一种类型的解除阻止命令缓冲区,加速器必须确保已为影响当前缓冲区中控制的宏块左侧或上方的宏块的所有缓冲区完成宏块重建。 这必须在处理当前缓冲区中的解除阻止命令之前完成。

为了处理第二种类型的解除阻止命令缓冲区,加速器仅使用当前缓冲区中的先前重建值。

可以通过以下两种方式之一在加速器中执行解除阻止筛选器操作:

  • 首先处理整个缓冲区或帧的运动预测和残差数据,然后读回一些样本的值,并通过解除阻塞筛选器操作对其进行修改。

  • 使用残差数据缓冲区以协调的方式处理解除阻止命令缓冲区。 在这种情况下,在将重新构造的输出值写入目标图片图面之前,将处理解除阻止命令缓冲区。

注意 已解除阻止图片的目标图片图面可能与解除阻止之前重建的图片图面不同。 然后,这将支持将“循环外部”解除阻止作为后编码过程,这不会影响用于预测下一张图片的样本值。