一、SuperBlock
SuperBlock 是AV1编解码器可以处理的最大编码块。SuperBlock 大小可以是128 × 128 或64 × 64,由 sequence header 控制。SuperBlock 可以进一步划分为更小的编码块,每个编码块都有自己的预测和变换模式。SuperBlock 编码只依赖于它的上侧和左侧的 SuperBlock。
二、 Tile
Tile 是由 SuperBlock 组成的矩形数组,其空间参考(包括帧内参考和概率模型更新)被限制在 Tile 边界内。因此,Tile 内的块可以独立编码,这为编码器和解码器实现提供了简单而有效的多线程。
最小 Tile 尺寸是一个 SuperBlock,最大 Tile 宽度对应4096个亮度像素,最大 Tile 大小对应4096×2304。一个帧最多允许512个 Tiles。
AV1支持两种方式来指定每个帧的 Tile 大小。第一种方式支持一帧内的全部 Tile 都具有相同的尺寸(除了位于帧的底部和右侧边界的 Tile)。AV1 允许传输垂直和水平的 Tile 数目,并根据帧大小推导 Tile 的尺寸。第二种方式支持不均匀的 Tile 大小,Tile 在垂直和水平方向上的间距都是不均匀的,并且必须在比特流中以 SuperBlock 为单位指定 Tile 的尺寸。此设计是由于视频信号统计的变化,在一个帧内不同的 SuperBlock 的计算复杂度是不同的。非统一的块大小选项允许在需要较高计算复杂度的区域使用较小的块大小,从而平衡线程之间的工作负载。在多核方面有足够的计算资源并且需要最小化帧编码延迟时,这尤其有用。下图提供了一个两种 Tile 的例子。
均匀/不均匀的 Tile 大小选项和 Tile 的大小是在逐帧的基础上决定的。值得注意的是,后处理滤波器在 Tile 边界上应用,以避免沿着 Tile 边缘的潜在编码伪影(例如块效应)。
三、Coding Block Partitioning
SuperBlock 可以递归地划分为更小的块大小以进行编码。AV1 继承了 VP9 中使用的递归块划分设计。为了减少对高度相关的视频信号进行预测模式编码的开销,AV1支持128 × 128亮度像素的最大编码块大小,这种情况通常出现在 4k 视频中。每个块级别允许的划分包括 10 种划分模式,如下图所示。为了提高复杂视频的预测质量,将最小编码块大小扩展到4×4亮度像素。虽然这些扩展提供了更多的编码灵活性,但它们对硬件解码器有影响。某些块大小相关的约束是专门设计来避免这种复杂度的。
1. Block Size-Dependent Constraints
硬件解码器中的核心计算单元通常是围绕 SuperBlock 设计的。将 SuperBlock 大小从 64 × 64 增加到 128 × 128 将需要核心计算单元大约四倍的硅面积。为了解决这个问题,将解码操作限制为64 × 64 单元,即使对于更大的块大小也是如此。例如,要解码YUV420格式的128 × 128块,需要解码对应于第一个64 × 64块的亮度和色度分量,然后是对应于下一个64 × 64块的亮度和色度分量,以此类推,而不是处理整个128 × 128块的亮度分量、色度分量。这种约束有效地重新安排了亮度和色度分量的熵编码顺序,并且对压缩性能没有影响。它允许硬件解码器将128 × 128块处理为一系列 64 × 64 块,因此保留相同的硅面积
另一个,4×4编码块的使用增加了 YUV420 格式中的最坏情况延迟,当所有编码块都是4×4亮度像素并使用帧内预测模式编码时,就会发生这种情况。为了重建一个帧内编码块,需要等待它的左侧和上方相邻像素完全重建,以用作参考像素。在 VP9 中,亮度 8 × 8 块内的 4 × 4 亮度像素都是用帧间或者帧内模式编码的。如果是帧内模式,则其对应的 4x4 色度分量将使用帧内色度预测模式,并进行变换。不受约束的 4× 4 编码块大小将要求每个 2 × 2 色度像素进行预测和变换编码,色度分量解码过程中存在依赖性。请注意,帧间预测模式不存在这样的空间依赖问题。
AV1采用 YUV420 格式的4 × 4块约束色度分量编码来解决延迟问题。如果一个 8×8 块内的所有亮度块都是帧间模式,则使用相应亮度块的运动信息以 2 × 2 单位预测色度分量。如果所有亮度块都是帧内预测模式,则色度分量将使用右下角的 4 × 4 亮度块的编码模式,以4 × 4为单位进行预测,然后对色度分量的预测残差进行4 × 4变换。
这些与块大小相关的约束使编码块划分模式的扩展对硬件可行性的影响有限。然而,为了将这种增加的灵活性转化为压缩收益,需要进行率失真优化搜索。
2. Two-Stage Block Partitioning Search
观察到可变编码块大小的关键灵活性是由遍历方形编码块的递归划分提供的,一种可能性是采用两阶段分区搜索方法。第一轮是从最大编码块大小开始,仅通过正方形划分。对于每个编码块,率失真搜索是有限的,例如,只使用最大的变换块和二维DCT核。通过分析其划分决策,可以确定最可能的操作范围,在此范围内,第二次块划分搜索将对所有10个可能的划分进行广泛的率失真优化搜索。改变从第一次块划分结果中得出的允许的块大小搜索范围将在压缩性能和编码速度之间做出不同的权衡。