在过去的十年里,基于网络的视频应用变得非常普遍,现代设备和网络基础设施推动了高分辨率、高质量内容消费的快速增长。因此,占主导地位的带宽消费者,如视频点播(VoD)、实时流媒体和会话视频,以及新兴的新应用,包括虚拟现实和云游戏,这些都非常依赖于高分辨率和低延迟,对传输基础设施提出了严峻的挑战,因此对高效视频压缩技术的需求更加强烈。
VP9使用从64×64级别到4×4级别的四种划分方式,对于8×8以下的块有额外的限制,在8x8块中,所有子块都应保存相同的参考帧,如图1上半部分所示,以确保色度块至少可以用4×4块单元处理。注意,图中标有为R的分块是递归的,因此R分块可以重复再划分,直到达到最低的4×4级。
AV1将最大编码块单元增加到128×128,并扩展分区树以支持10种可能的结果,以进一步包括4:1/1:4矩形编码块尺寸。与VP9相似,仅允许使用方形块进行进一步细分。此外,AV1为8x8以下的块增加了更大的灵活性,使每个编码块都可以在行内/帧内模式和参考帧选择之间进行切换。为了支持这种灵活性,它允许对色度分量进行2×2的帧间预测,同时保持最小的变换大小为4×4。
VP9支持10种帧内预测模式,包括8种方向模式,分别对应45到207度的角度模式,以及两种非定向预测器:DC和true motion(TM)模式。AV1,潜在的帧内编码进一步探索了不同的方法:方向预测的粒度进一步升级,而非方向性的预测,纳入了梯度和相关性,亮度的一致性和色度信号也得到充分利用,并开发出针对人造视频内容特殊优化的工具。
以利用方向纹理中更多种类的空间冗余。在AV1中,对于大于8 × 8的块,方向帧内模式被扩展到具有更精细粒度的角度集。最初的8个角度是标称角度,在此基础上引入3度步长的细微角度变化,即预测角度由标称内部角度加上角度增量表示,角度增量是步长的-3 ~ 3倍。为了通过一般方式在AV1中实现方向预测模式,48种扩展模式由统一的方向预测器实现,该方向预测器将每个像素链接到边缘中的参考子像素位置,并通过2抽头双线性滤波器插值参考像素。AV1总共支持56种方向帧内模式。
AV1中方向帧内预测的另一个增强是,在参考像素值用于预测目标块之前,对其应用低通滤波器。滤波器强度是基于预测角度和块大小预先定义的。
VP9有两种非定向帧内预测模式:DC_PRED和TM_PRED。AV1在此基础上增加了三种新的预测模式: SMOOTH_PRED、SMOOTH_V_PRED和SMOOTH_H_PRED。第四种新的预测模式PAETH_PRED [19]是现有的TM_PRED模式。新模式的工作原理如下:
为了捕捉边缘具有参考的衰减空间相关性,通过将块视为二维不可分离马尔可夫模型,为亮度块设计了FILTER _ INTRA模式。为AV1预先设计了五种滤波器帧内模式,每种模式由一组八个7-tap滤波器表示,反映了与补片相邻的4 × 2 p像素之间的相关性(例如,图2中蓝色补片的P0 P6)。一个帧内块可以选择一个滤波器帧内模式,并以4 × 2 的补丁的进行批量预测。通过所选的一组7抽头滤波器对8个像素位置的相邻像素进行不同的加权,来预测补丁块。对于那些没有完全附着到块边界上的参考的4 × 2单元,例如图2中的绿色块,将直接相邻的预测像素用作参考,这意味着在4 × 2补丁块之间递归地计算预测,以便合并更多较远位置上的边缘像素。
Chroma from Luma(CfL)是仅用于色度的帧内预测器,通过以重建后亮度像素的线性函数建模得到色度像素。预测的色度像素是通过将DC预测加到缩放的交流贡献上而获得的。DC预测是使用DC帧内预测模式通过当前块相邻的重建色度像素计算的。在零均值二次采样的重合重建亮度像素中,通过比特流中信号表示的比例因子。二次抽样步骤和平均减法相结合,以减少误差。为每个色度分量发信号通知缩放因子,但是它们是联合编码的。信号比例因子降低了解码器的复杂性,并产生更精确的研发优化预测。更多信息请参考图3和[20]。
有时,尤其是对于像截屏和游戏这样的人工视频,块可以用少量独特的颜色来近似。因此,AV1将调色板模式引入帧内编码器,作为通用的额外编码工具。块的每个平面的调色板预测器由(I)具有2-8种颜色的调色板和(ii)块中所有像素的颜色索引来指定。基色的数量决定了保真度和紧凑度之间的权衡。通过参考相邻块的基色,在比特流中传输块的基色。然后,不存在于相邻块调色板中的基色被增量编码。颜色索引是使用基于邻域的上下文逐像素熵编码的。亮度和色度通道可以决定是否独立使用调色板模式。对于亮度通道,调色板中的每个条目都是一个标量值;对于色度通道,中的每个条目都是一个二维元组。在用调色板模式建立块的预测之后,变换编码和量化被应用于残差块,就像其他帧内预测模式一样。
AV1允许其帧内编码器参考同一帧中先前重建的块,其方式类似于帧间编码器引用前一帧中块的方式。这对于通常包含重复纹理的屏幕内容视频非常有用。具体来说,一种名为IntraBC的新预测模式被引入,它将在当前帧中拷贝一个重建的块作为预测。参考块的位置由位移矢量指定,其方式类似于运动补偿中的运动矢量压缩。位移矢量以亮度平面的整像素为单位,可以指相应色度平面上的半像素位置,其中双线性滤波用于子像素插值。
IntraBC模式仅用于关键帧或者仅帧内编码的帧。它可以通过帧级标志打开和关闭。IntraBC模式不能引用当前Tile之外的像素。为了便于硬件实现,对参考区域有一些额外的限制。例如,当前superblock和IntraBC可能引用的最新superblock之间有256个水平像素的延迟。另一个限制是当IntraBC在当前帧打开时,必须关闭包括去块滤波器、环路恢复滤波器和CDEF滤波器在内的环路滤波器。尽管有所有这些限制,IntraBC模式仍然为屏幕内容视频带来了显著的压缩改进。
运动补偿是视频编码中必不可少的模块。在VP9中,在最多三个候选参考帧中允许最多两个参考,然后预测器将进行基于块平移的运动补偿,或者如果有两个参考信号则取这两次预测的平均值。AV1具有更强大的帧间编码器,极大地扩展了参考帧和运动矢量库,打破了基于块的平移预测的局限性,并通过使用适应性强的加权算法和信源来增强复合预测。
AV1将每个帧的参考数量从3个扩展到7个。除了VP9的LAST (最近过去的)帧、GOLDEN(遥远过去的)帧和ALTREF(临时过滤的未来)帧之外,我们还添加了两个过去的帧(LAST2和LAST3)和两个未来帧(BWDREF和ALTREF2)[21]。图4展示了GOLDEN组的多层结构,其中自适应数量的帧共享相同的GOLDEN帧和ALTREF帧。BWDREF是一种直接编码的超前帧,无需应用时域滤波,因此更适合用作相对距离较短的后向参考。ALTREF2用作GOLDEN和ALTREF之间的中间过滤的将来参考。所有的新参考方式都可以通过单个预测模式使用,也可以被组合成复合模式使用。AV1提供了丰富的参考帧对集合,既提供双向复合预测,又提供单向复合预测,从而可以对各种具有动态时域相关特性的视频进行更自适应、更优化的编码。
有效的运动矢量(MV)编码对于视频编解码器至关重要,因为它占用了帧间的很大一部分码率成本。为此,AV1结合了复杂的MV参考选择方案,以通过搜索空间和时间候选来获得给定块的良好MV参考。AV1不仅搜索比VP9更广的空间邻域来构建空间候选库,而且利用运动场估计机制来生成时间候选。运动场估计过程分为三个阶段:运动矢量缓冲、运动轨迹创建和运动矢量投影。首先,对于每个编码后的帧,我们存储其参考帧索引和相关的运动矢量。该信息将被下一编码帧参考以生成其运动场。运动场估计检查运动轨迹,例如图5中的MVRef2将一个参考帧Ref2中的块指向另一个参考帧Ref0Ref2的某个位置,可能会通过每个64×64处理单元,检查最多3个参考中并列的128×128缓冲运动矢量场。接下来,在编码块级别,一旦已经确定参考帧,就通过将运动轨迹线性投影到期望的参考帧上(例如,将图5中的MVRef2转换为MV0或MV1)来生成运动矢量候选。一旦所有的空间和时间候选被聚集在池中,它们被排序、合并和排序以获得最多四个最终候选[22,23]。评分方案依赖于计算当前块具有特定MV作为候选的可能性。为了编码MV,AV1用信号通知从列表中选择的参考MV的索引,然后根据需要对运动矢量差进行编码。
OBMC通过平滑地组合从邻近运动矢量创建的预测,可以大大减少块边缘附近的预测误差。在AV1中,设计了一种两面因果重叠算法,以使OBMC轻松适合高级分块框架[9]。它通过在垂直和水平方向上应用预定义的一维滤波器,逐步将基于块的预测与二次帧间预测器结合在上方边缘和左侧边缘。二次预测器仅在当前块的上/左半部分的受限重叠区域中操作,因此它们不会在同一侧彼此缠绕(参见图6)。AV1OBMC仅对使用单个参考帧的块启用,并且仅与具有两个参考帧的任何邻居的第一个预测器一起工作,因此最坏情况下的存储器带宽与传统复合预测器所要求的相同。
AV1通过两种仿射预测模式(全局和局部扭曲运动补偿)开发扭曲运动模型[25]。全局运动工具用于处理摄影机运动,并允许在帧和每个参考之间发出仿射模型的帧级信号。局部扭曲运动工具旨在通过从分配给因果邻域的运动矢量信号的二维位移中推导块级模型参数,从而以最小的开销隐式描述变化的局部运动。通过比较两种编码工具在块级别转换模式,只有在RD成本方面有优势时才选择它。更重要的是,AV1中的仿射扭曲受到的限制较小,因此可以在SIMD和硬件中通过水平剪切和垂直剪切来有效地实现仿射扭曲(图7),其中每个剪切点使用1/64像素精度的8-tap插值滤波器。
为提高AV1编码器间的通用性,开发了一系列新的复合预测工具。在本节中,可以将任何复合预测操作针对像素(i,j)概括为:: pf (i, j) = m(i, j)p1(i, j)+(1 − m(i, j))p2(i, j),其中p1和p2是两个预测变量,而pf是最终的复合预测,其中[0,1]中的加权系数m(i,j)专为不同的用例而设计,可以很容易从预定义表中生成。 [11]
AV1无需像VP9中那样强制执行固定的变换单元大小,而是将亮度帧间编码块划分为多种大小的变换单元,这些变换单元可以由递归分区(最多递减两个级别)表示。为了合并AV的扩展编码块分区,我们支持从4×4到64×64的正方形,2:1/1:2和4:1/1:4比例也都可以。此外,色度转换单元总是要尽可能地大。
AV1中为帧内和帧间定义了更丰富的变换核集合。完整的2-D核集由四种1-D变换类型的水平/垂直组合生成,总共产生16个核选项[27]。一维变换类型包括VP9中使用的DCT和ADST、flipADST则以相反的顺序应用ADST,并且身份变换(IDTX)意味着沿某个方向跳过变换编码,因此对于编码锐利边缘特别有用。。在实践中,这些内核中的几个在较大的块大小时会给出类似的结果,从而允许随着变换大小的增加而逐渐减少可能的内核类型。
VP9使用基于树的布尔型非自适应二进制算术编码器对所有语法元素进行编码。AV1转向使用符号间自适应多符号算术编码器。AV1中的每个语法元素都是由N个元素组成的特定字母表中的成员,上下文由一组N个概率和一个小计数组成,以便于早期快速适应。概率被存储为15位累积分布函数(CDFs)。与二进制算术编码器相比,精度更高,从而可以准确地跟踪字母表中不太常见的元素的概率。概率通过简单的递归缩放进行调整,其中更新因子基于字母大小。由于符号比特率是由编码系数、运动矢量和预测模式共同决定的,所有这些都使用大于2的字母,因此对于典型的编码方案,与纯二进制算术编码相比,这种设计实际上使吞吐量降低2倍以上。
在硬件中,复杂度由核心乘法器的吞吐量和大小决定,核心乘法器会重新调整算术编码状态间隔。编码实际上并不需要跟踪概率所需的较高精度。这允许通过从16×15位四舍五入到8×9位乘法器来实质上减小乘法器大小。通过强制执行最小间隔大小,可以简化此舍入,而最小间隔大小又允许简化的概率更新,其中值可能变为零。在软件中,操作计数比复杂度更重要,并且减少吞吐量和简化更新相应地减少了每个编码/解码操作的固定开销。
在VP9中,编码引擎按照扫描顺序顺序处理每个量化的变换系数。用于每个系数的概率模型与先前编码的系数级别,其频带,变换块大小等相关。为了正确捕获广阔基数空间中的系数分布,AV1更改为用于较大变换系数建模的电平图设计和压缩[28]。它建立在以下观察基础上:较低的系数水平通常会占主要的费率成本。
对于每个变换单元,AV1系数编码器从编码一个跳过符号开始,然后是变换核类型和当不跳过变换编码时所有非零系数的结束位置。然后,对于系数值,并没有采用为所有系数级别统一分配上下文的模型,而是将级别分为不同的平面。在结束位置被编码之后,低层和中层平面以相反的扫描顺序被编码在一起。然后,符号平面和更高级别平面以正向扫描顺序编码在一起。低层平面对应于0–2的范围,中层平面负责3–14的范围,高层平面覆盖15及以上的范围。这种分离允许我们将丰富的上下文模型分配给较低级别的平面,而这一平面充分考虑了变换维、块大小、以及邻近系数信息,以适度的上下文模型大小提高压缩效率。较高级别的平面对3到15之间的级别使用简化的上下文模型,并使用ExpGolomb代码直接对15级以上的残差进行编码。
AV1允许将多个环路滤波工具相继应用于解码帧数据的过程。第一级是去块滤波器,它与VP9中使用的去块滤波器大致相同,只是做了些微小改动。最长的滤波器从VP9中的15抽头减少到13抽头。此外,对于亮度和每个色度平面,现在在水平和垂直方向上发出单独滤波级别的信号,更具灵活性,并且能够在超级块之间更改级别。AV1中的其他过滤工具描述如下:
CDEF是一种细节保持去块滤波器,设计为在去块之后应用。它的工作原理是估计边缘和图案的方向,然后应用一个大小为5 × 5、12个非零权重的不可分离的非线性低通方向滤波器。为了避免发送方向信号,解码器使用标准的快速搜索算法来估计方向。解码过程的完整描述可以在参考文献中找到。[29]。
其中N包含x(i,j)附近的像素,权重wm,n,f()和g()是下面描述的非零非线性函数,R(x)将x舍入为最接近零的整数。 f()函数修改要过滤的像素与相邻像素之间的差异,并由分别在64×64块级别和帧级别指定的两个参数(强度S和阻尼值D)确定。强度S钳位允许的最大差值减去D所控制的削减。g()函数将要过滤的像素x的修改值限制为x与支撑区域中x(m,n)之间的最大差值保持滤波器的低通特性。
循环恢复过滤器:AV1在CDEF之后添加了一组用于循环应用的工具,这些工具的使用是相互斥的,其可选大小为64×64、128×128、或256×256的被称之为循环恢复单元(LRU)。具体来说,对于每个LRU,AV1允许在如下两个滤波器[15]之一之间进行选择。
根据当前带宽自适应切换帧分辨率是视频流服务中的常见做法。例如,当可用带宽较低时,服务可以发送较低分辨率的帧,然后将它们升级到显示设备分辨率。然而,这种缩放现在发生在视频编解码器之外。
AV1中新的帧超分辨率框架背后的动机是通过使其成为编解码器本身的一部分来使这一缩放过程更加有效。这种编码模式允许以较低的空间分辨率对帧进行编码,然后在更新参考缓冲器之前,以标准方式在环路内超分辨率至全分辨率。后来,这些超分辨参考缓冲区可用于预测后续帧,即使它们的分辨率不同,这要归功于AV1的有限预测能力。
在客观指标上,超分辨率几乎总是比在编解码器之外放大较低分辨率的帧好得多。此外,在非常低的比特率下,就感知度量而言,有时也观察到比全分辨率更好。此外,它为编码器的速率和质量控制提供了额外的维度。虽然在这一领域有大量的研究,但图像处理文献中的大多数超分辨率方法对于视频编解码器中的环路操作来说过于复杂。在AV1中,为了使运算在计算上易于处理,超分辨过程被分解为线性向上扩展,随后以更高的空间分辨率应用循环恢复工具。具体来说,维纳滤波器特别擅长超分辨率和恢复丢失的高频。唯一附加的标准操作是在使用循环恢复之前的线性升级。此外,为了实现成本有效的硬件实现,不需要线缓冲器中的开销,放大/缩小被限制为仅水平操作。图11描述了使用帧超分辨率时环路滤波管道的总体架构,其中CDEF以编码(较低)分辨率运行,但是在线性升频器水平扩展图像以解决部分分辨率后,环路恢复运行较高的频率丢失。
AV1中的胶片颗粒合成是应用于编码/解码循环之外的标准后处理[31]。富含电视和电影内容的电影胶片通常是电影的一部分。它的随机性使得传统的编码工具很难压缩。相反,在压缩之前从内容中去除颗粒,其参数被估计并在AV1比特流中发送。解码器基于接收到的参数合成颗粒,并将其添加到重建的视频中(参见图12的细节)。
颗粒被建模为自回归(AR)过程,其中亮度的最高AR系数为24,每个色度分量的AR系数为25。这些系数用于生成64×64亮度颗粒模板和32×32色度模板。然后从模板中的随机位置获取小颗粒补丁并将其应用于视频。补丁之间的不连续性可以通过可选的重叠来缓解。薄膜的颗粒强度也随信号强度而变化,因此每个颗粒样品都按比例缩放[16]。
该工具支持胶片颗粒强度和信号强度之间关系的灵活建模,如下所示:
Y’是用胶片颗粒重噪声的结果亮度,Y是添加胶片颗粒之前亮度的重建值,GL是亮度胶片颗粒样本。这里,f(Y)是一个分段线性函数,根据亮度分量值缩放胶片颗粒。这个分段线性函数被信号通知给解码器,并且可以被实现为预先计算的查找表(LUT),该查找表在运行当前帧的颗粒合成之前被初始化。对于色度分量(例如Cb),当色度中的膜颗粒强度取决于luma分量时,使用以下公式调制噪声以便于颗粒强度建模:
其中u是LUT中对应于Cb分量比例函数的索引,参数bCb、dCb和hCb用信号通知解码器。
一组胶片颗粒参数最多可占用大约145个字节。每个帧可以接收一组新的纹理参数,或者如果先前解码的帧中的一个可用,则可以重复使用这些参数。
AV1支持由多个超级块(super blocks)组成的独立tiles,tiles可以任意顺序编码和解码。由编码参数定义,tiles可以是均匀的(即tiles具有相同的尺寸)或不均匀的(即tiles可以具有不同的尺寸)。独立的tiles支持提供了编码的灵活性,这样编码器和解码器就可以运行了,并且可以变得更快。
在libaom代码库中,多线程(MT)已经在编码器和解码器中实现,包括基于tile的MT和基于行的MT。当允许使用tile,基于tile的MT提供了显著的加速。当不使用或很少使用tile时,基于行的MT允许线程对单个超级块行进行编码和解码,从而进一步提高了速度。在一个720p视频编码中使用四个tiles和四个线程,编码器的加速比约为3倍,解码器的加速比约为2.5倍。
随着虚拟现实(VR)应用的日益普及,AV1第一次提供了一种使实时VR应用可行的解决方案。大规模平铺工具允许解码器只提取帧中感兴趣的部分,而不需要解压缩整个帧。这显著地降低了解码器的复杂性,并且对于实时应用非常有用,例如光场,其随着观看者的头部移动呈现帧的单个部分。
[1] D. Mukherjee, J. Bankoski, A. Grange, J. Han, J. Koleszar, P. Wilkins,
Y. Xu, and R.S. Bultje, “The latest open-source video codec VP9 - an
overview and preliminary results,” Picture Coding Symposium (PCS),
December 2013.
[2] G. J. Sullivan, J. Ohm, W. Han, and T. Wiegand, “Overview of the
high efficiency video coding (HEVC) standard,” IEEE Transactions on
Circuits and Systems for Video Technology, vol. 22, no. 12, 2012.
[3] T. Wiegand, G. J. Sullivan, G. Bjontegaard, and A. Luthra, “Overview of
the H.264/AVC video coding standard,” IEEE Transactions on Circuits
and Systems for Video Technology, vol. 13, no. 7, 2003.
[4] J. Bankoski, P. Wilkins, and Y. Xu, “Technical overview of VP8, an open
source video codec for the web,” IEEE Int. Conference on Multimedia
and Expo, December 2011.
[5] “Alliance for Open Media,” Home.
[6] L. N. Trudeau, N. E. Egge, and D. Barr, “Predicting chroma from luma
in AV1,” Data Compression Conference, 2018.
[7] W. Lin, Z. Liu, D. Mukherjee, J. Han, P. Wilkins, Y. Xu, and K. Rose,
“Efficient AV1 video coding using a multi-layer framework,” Data
Compression Conference, 2018.
[8] J. Han, Y. Xu, and J. Bankoski, “A dynamic motion vector referencing
scheme for video coding,” IEEE Int. Confernce on Image Processing,
2016.
[9] Y. Chen and D. Mukherjee, “Variable block-size overlapped block
motion compensation in the next generation open-source video codec,”
IEEE Int. Confernce on Image Processing, 2017.
[10] S. Parker, Y. Chen, and D. Mukherjee, “Global and locally adaptive
warped motion comprensationin video compression,” IEEE Int. Confernce on Image Processing, 2017.
[11] U. Joshi, D. Mukherjee, J. Han, Y. Chen, S. Parker, H. Su, A. Chiang,
Y. Xu, Z. Liu, Y. Wang, J. Bankoski, C. Wang, and E. Keyder, “Novel
inter and intra prediction tools under consideration for the emerging AV1
video codec,” Proc. SPIE, Applications of Digital Image Processing XL,
2017.
[12] S. Parker, Y. Chen, J. Han, Z. Liu, D. Mukherjee, H. Su, Y. Wang,
J. Bankoski, and S. Li, “On transform coding tools under development
for VP10,” Proc. SPIE, Applications of Digital Image Processing XXXIX,
2016.
[13] J. Han, C.-H. Chiang, and Y. Xu, “A level map approach to transform
coefficient coding,” IEEE Int. Confernce on Image Processing, 2017.
[14] S. Midtskogen and J.-M. Valin, “The AV1 constrained directional
enhancement filter (CDEF),” IEEE Int. Conference on Acoustics, Speech,
and Signal Processing, 2018.
[15] D. Mukherjee, S. Li, Y. Chen, A. Anis, S. Parker, and J. Bankoski,
“A switchable loop-restoration with side-information framework for the
emerging AV1 video codec,” IEEE Int. Confernce on Image Processing,
2017.
[16] A. Norkin and N. Birkbeck, “Film grain synthesis for AV1 video codec,”
Data Compression Conference, 2018.
[17] “AWCY,” Are We Compressed Yet?.