AV1编码标准
本文档介绍了相关编解码器中包含的编码工具的技术方面。本文档不是相关编解码器的规范。相反,它总结了针对新开发人员的编码工具的突出功能。
缩略语
CfL: Chroma from Luma
IntraBC: Intra block copy
LCU: Largest coding unit
OBMC: Overlapped Block Motion Compensation
CDEF: Constrained Directional Enhancement Filter
块划分
编码块划分
此编解码器中应用的最大编码块单位(LCU)为128×128。除无划分模式(PARTITION_NONE)外,分区树还支持9种不同的分区模式,如下图所示。
根据子分区的数目,分区9种模式被概括如下:
1.四个分区:PARTITION_SPLIT、PARTITION_VERT_4、PARTITION_HORZ_4
2.三个分区(T形):PARTITION_HORZ_A、PARTITION_HORZ_B、PARTITION_VERT_A、 PARTITION_HORZ_B
3.两个分区:PARTITION_HORZ、PARTITION_VERT
在所有9种分区模式中,只有PARTITION_SPLIT模式支持递归分区,即子分区可以进一步划分,其他分区模式无法进一步划分。特别的,对于8×8和128×128块,PARTITION_VERT_4,PARTITION_HORZ_4不使用,而对于8×8,T形分区也不使用。
变换块划分
对于帧内和帧间编码块,可以将编码块进一步划分为多个变换单元,划分深度最多为2级。下表1中显示了从当前深度的变换大小到下一个深度的变换大小的映射。
此外,对于帧内编码块,以所有变换块具有相同大小的方式来完成变换分区,并且以光栅扫描顺序对变换块进行编码。图2显示了帧内编码块的变换块分区示例。
对于帧间编码块,可以以递归的方式完成变换单元的划分,划分深度最多为2级。变换分区支持1:1(正方形),1:2/2:1和1:4/4:1变换单位大小,范围从4×4到64×64。如果编码块小于或等于64x64,则变换块划分只能应用于亮度分量,对于色度块,变换块的大小与编码块的大小相同,不使用变换块划分。否则,如果编码块的宽度或高度大于64,则亮度和色度编码块都将隐式拆分为min(W,64)x min(H,64)和min(W,32)x min的倍数(H,32)个变换块。
帧内预测
定向帧内预测模式
定向帧内预测模式应用于帧内预测,该模式使用给定的方向模式对局部纹理进行建模。定向帧内预测模式由标称模式(nominal mode)和角度增量(angle delta)表示。标称模式是VP9中使用的帧内预测角度的相似集合,其中包括8个角度。角度增量的指标值在-3〜+3的范围内,零增量角度表示标称模式。预测角度由标称帧内角度加角度增量表示。总共有56种方向性帧内预测模式,如下图所示。在下图中,实线箭头表示方向帧内预测模式,而虚线箭头表示非零角度增量。
标称模式索引和角度增量索引分别进行编码,标称模式索引在相关的角度增量索引之前编码。注意,对于小块尺寸,其中来自扩展帧内预测角的编码增益可能饱和,仅使用标称模式并且不对角度增量索引进行编码。
非定向帧内预测模式
除了定向帧内预测模式外,还包括四个模拟平滑纹理的非定向帧内模式。这四个非定向帧内模式包括SMOOTH_V,SMOOTH_H,SMOOTH和PAETH predictor。
在SMOOTH_V,SMOOTH_H并且SMOOTH模式,预测值是使用沿垂直方向、水平方向或其平均值的二次插值生成的。二次内插中使用的样本包括来自顶部和左侧相邻块的重建样本以及来自右侧和底部边界的样本,这些样本由顶部重建样本和左侧重建样本近似。
在PAETH predictor模式下,每个样本的预测被指定为一个来自上(T)、左(L)和左上(TL)的参考样本,其值最接近PAETH predictor值,即T+L-TL。PAETH predictor下图中说明了所使用的样本。
递归滤波模式
定义了五个帧内滤波模式,每个模式指定一组八个7抽头滤波器。给定选定的滤波模式索引(0〜4),当前块被分为4x2子块。对于一个4×2子块,使用7个顶部和左侧相邻样本作为输入,通过7抽头内插法预测每个样本。将不同的滤波器应用于位于4×2子块内不同坐标处的样本。可以在单元4x2子块中递归地完成预测过程,这意味着为一个4x2预测块生成的预测样本可用于预测另一个4x2子块。
从亮度预测色度
来自亮度的色度(CfL)是色度帧内预测模式,该模式将色度样本建模为位于同一位置的重建亮度样本的线性函数。为了针对不同的色度采样格式(例如4:2:0和4:2:2)在亮度和色度采样之间对齐分辨率,可能需要在CfL模式下使用之前对重建亮度像素进行下采样。另外,使用AC贡献减去DC分量。在CfL模式下,指定两个颜色分量之间线性函数的模型参数被编码器通过在比特流中用信号发送。
帧间预测
运动矢量预测
运动矢量由相邻块预测,该相邻块可以是空间相邻块,也可以是位于参考帧中的时间相邻块。将通过检查所有这些块来识别一组MV预测器,并将其用于编码运动矢量信息。
空间运动矢量预测
有两组空间相邻块可用于查找空间MV预测值,包括当前块的直接上,左相邻块的相邻空间相邻块,以及与当前块相邻但不直接相邻的第二外部空间相邻块块。在图8所示的示例中说明了两组空间相邻块。
对于每组空间相邻块,将从左到右检查第一行,然后从上到下检查左列。对于相邻的空间邻居,在检查左列的相邻块之后,还将检查一个额外的右上块。对于非相邻的空间邻块,将首先检查位于(-1,-1)位置的左上块,然后以与相邻邻居相似的方式检查顶部行和左侧列。将首先检查空间相邻的块,然后再检查将在下一个小节中描述的时间临时MV预测器,此后,将检查不相邻的空间相邻块。
对于利用一对参考帧的复合预测,不使用非相邻空间相邻块来推导MV预测器。
时间运动矢量预测
除了空间相邻块外,还可以使用位于同一位置的参考图片块(即时间MV预测器)导出MV预测器。为了生成时间MV预测器,首先将参考帧的MV与与参考帧相关联的参考索引一起存储。然后,对于当前帧的每个8×8块,识别通过8×8块的参考帧的MV,并将其与参考帧索引一起存储在时间MV缓冲器中。在图9所示的示例中,标识了从R1指向R1的参考帧的参考帧1(R1)的MV,即MVref,它通过了当前帧的8x8块(以蓝色圆点阴影)。然后,将该MVref存储在与此8×8块相关联的时间MV缓冲器中。
图9:通过线性投影估算运动场
最后,给定几个预定义的块坐标,存储在时间MV缓冲区中的相关MV会被识别并进行相应的投影,以得出从当前块指向其参考帧的时间MV预测变量,例如,图9中的MV0。在图10中,示出了用于导出16×16块的时间MV预测器的预定义块位置,并且将检查多达7个块以找到有效的时间MV预测器。
图10:推导时间MV预测值的块位置在最近的空间MV预测值
之后但在不相邻的空间MV预测值之前检查时间MV预测值。
所有空间和时间MV候选者将被放在一起,每个预测变量与在空间和时间相邻块的扫描期间确定的权重相关联。基于相关的权重,对候选项进行排序和排名,并且最多四个候选项将用作列表MV预测变量列表。
运动矢量编码
插补滤波器用于运动补偿
暂无
扭曲运动补偿
全局扭曲运动
在每个帧间信号通知全局运动信息,其中包括全局运动类型和运动参数。下表列出了全局运动类型和相关参数的数量。
全局运动类型 | 参数数量 |
Identity (zero motion) | 0 |
Translation | 2 |
Rotzoom | 4 |
General affine | 6 |
对于帧间编码块,在发送参考帧索引之后,如果将当前块的运动指示为全局运动,则给定参考的全局运动类型和关联参数将用于当前块。
局部扭曲运动
对于帧间编码块,当满足以下条件时,将允许局部扭曲运动:
- 当前块是单个预测
- 宽度或高度大于或等于8个样本
- 至少一个直接相邻块使用与当前块相同的参考帧
如果将局部扭曲运动用于当前块,而不是用信号发送仿射参数,则根据当前块及其直接邻居的运动矢量,通过使用参考投影和建模投影之间距离的均方最小化来估算仿射参数。为了估计局部扭曲运动的参数,如果相邻块使用与当前块相同的参考帧,则收集相邻块中的中心像素及其参考帧中的对应像素的投影样本对。此后,通过将中心位置在一个或两个维度上移动四分之一的样本来创建3个额外的样本,这些样本也被视为投影样本对,以确保模型参数估计过程的稳定性。
重叠块运动补偿
对于帧间编码块,当完全满足以下条件时,允许重叠块运动补偿(OBMC)。
- 当前块是单个预测
- 宽度或高度大于或等于8个样本
- 相邻块中的至少一个是帧间编码块
当OBMC应用于当前块时,首先利用当前块的指定运动矢量生成初始帧间预测样本,然后将当前块的帧间预测样本和基于上述和左侧块的运动矢量的帧间预测样本混合,生成最终的预测样本。根据当前块的大小限制相邻运动矢量的最大数目,在当前块的OBMC过程中,上、左两块的运动矢量最多可包含4个。
下图显示了相邻块的处理顺序的一个示例,其中每个块中标记的值表示当前块和相邻块的运动矢量的处理顺序。具体而言,首先将当前块的运动矢量应用于生成帧间预测样本P0(x,y)。然后,将块1的运动矢量应用于生成预测样本p1(x,y)。之后,在块0与块1之间的重叠区域中的预测样本是p0(x,y)和p1(x,y)的加权平均值。下图用灰色标记了块1和块0的重叠区域。块2、3、4的运动矢量以相同的方式进一步应用和混合。
参考框架
暂无
复合预测
复合楔形预测
暂无
差分调制的掩盖预测
暂无
基于帧距的复合预测
暂无
复合帧内预测
暂无
变换
可分离的2D变换过程被应用于预测残差。对于正向变换,首先对输入残差块的每一列执行一维垂直变换,然后对垂直变换输出的每一行执行水平变换。对于反换,首先对输入的反量化系数块的每一行执行一维水平变换,然后对水平变换输出的每一列进行垂直变换。主要的一维变换包括四种不同类型的变换:
a)4点,8点,16点,32点,64点DCT-2;
b)4点,8点,16点非对称DST(DST-4,DST-7)和)其翻转版本;
d)4点,8点,16点,32点identity transforms。
当变换大小为4点时,ADST引用DST-7,否则,当变换大小大于4点时,ADST引用DST-4。
对于亮度分量,每个变换块可以在给定一组预定义的变换类型候选的情况下选择一对水平和垂直变换组合,并且将选择结果明确地发送到比特流中。但是,当Max(width,height)为64时,不会发出选择信号。当变换块宽度和高度的最大值大于或等于32时,变换类型候选集取决于预测模式,如表3所示否则,当变换块宽度和高度的最大值小于32时,变换类型候选集取决于预测模式,如表4中所述。
表5中定义了变换类型候选集(即变换集)。
对于色度分量,以隐式方式完成变换类型的选择。对于帧内预测残差,按照表中的指定,根据帧内预测模式选择变换类型。对于帧间预测残差,根据同位亮度块的变换类型选择来选择变换类型。因此,对于色度分量,在比特流中没有变换类型信令。
在以下两种情况通过将其区域外的所有系数归零,可以进一步减少大尺寸(例如64点)变换的计算成本:
- 64×64/64×32/32×64 DCT_DCT组合变换的左上角32×32
- DCT_DCT组合变换用于64×16的左32×16区域和用于16×64的顶部16×32。
DCT-2和ADST(DST-4,DST-7)都是使用蝶形结构[1]实现的,该结构包括蝶形操作的多个阶段。每个蝶形运算可以并行计算,并且不同阶段按顺序层叠。
量化
变换系数的量化可以对DC和AC变换系数应用不同的量化步长,并且对于亮度和色度变换系数可以应用不同的量化步长。为了指定量化步长,首先在帧头中用信号通知base_q_idx语法元素,它是一个8位固定长度代码,用于指定亮度AC系数的量化步长。base_q_idx的有效范围是[0,255]。
此后,进一步用信号表示亮度DC系数相对于base_q_idx的增量值,表示为DeltaQYDc。此外,如果存在一个以上的颜色平面,则发信号标记diff_uv_delta以指示Cb和Cr颜色分量是否应用了不同的量化指标值。如果diff_uv_delta的信号为0,则仅发送相对于base_q_idx的色度DC系数(表示为DeltaQUDc)和AC系数(表示为DeltaQUAc)的增量值。否则,用信号发送相对于Cb和Cr DC系数(表示为DeltaQUDc和DeltaQVDc)和AC系数(表示为DeltaQUAc和DeltaQVAc)的相对于base_q_idx的增量值。
将上面解码的DeltaQYDc,DeltaQUAc,DeltaQUDc,DeltaQVAc和DeltaQVDc添加到base_q_idx以得出量化索引。然后,根据两个表将这些量化指标进一步映射到量化步长。对于DC系数,由查找表Dc_Qlookup [3] [256]指定8位,10位和12位内部位深度的从量化索引到量化步长的映射,以及从量化索引到量化的映射。查找表Ac_Qlookup [3] [256]指定8位,10位和12位的步长。
给定量化步长,表示为Q_step,使用以下公式进一步对输入量化系数进行去量化:
F = sign * ( (f * Q_step) % 0xFFFFFF ) / deNorm
其中f是输入量化系数,F是输出反量化系数,deNorm是从变换块区域大小得出的常数,如下表所示:
deNorm | Tx block area size |
1 | Less than 512 samples |
2 | 512 or 1024 samples |
4 | Greater than 1024 samples |
当量化索引为0时,使用等于1的量化步长来执行量化,这是无损编码模式。
熵编码
熵编码引擎
暂无
系数编码
对于每个变换单元,系数编码以对跳过符号进行编码开始,如果不跳过变换编码,则紧跟着主要变换内核类型和块末(EOB)位置的信号。此后,以多级映射方式加上符号值来编码系数值。层次图被编码为三个层次平面,即较低层次,中间层次和较高层次的平面,符号被编码为另一个单独的平面。下层,中层和上层平面对应于对应于系数幅度的不同范围。较低的平面对应于0–2的范围,中间的平面对应于3–14的范围,而较高的平面覆盖15和更高的范围。
这三个水平平面编码如下。在对EOB位置进行编码之后,将低级和中级平面按向后扫描顺序一起编码,并且扫描顺序是指在整个变换单元的基础上应用的之字形扫描。然后,将符号平面和更高级别的平面按正向扫描顺序一起编码。此后,使用Exp-Golomb码对其余部分(系数水平减去14)进行熵编码。
应用于较低级别平面的上下文模型取决于主要变换方向,包括:双向,水平和垂直以及变换大小,并且最多使用五个相邻(在频域中)系数来导出上下文。中层平面使用类似的上下文模型,但是上下文邻居系数的数量从5减少到2。较高层的平面通过Exp-Golomb代码进行编码,而无需使用上下文模型。对于符号平面,除了使用来自其相邻变换单元的DC符号编码的DC符号外,其他系数的符号值都直接编码,而无需使用上下文模型。
循环过滤和后处理
去块
选择去块滤波器级别时有以下四种方法:
- LPF_PICK_FROM_FULL_IMAGE:搜索具有不同值的完整图像
- LPF_PICK_FROM_Q:根据量化器和帧类型估计滤波器级别
- LPF_PICK_FROM_SUBIMAGE:从图像的一部分估计水平
- LPF_PICK_MINIMAL_LPF:将滤波器级别设置为0并禁用去块
当从完整图像或子图像估计滤波器级别时,搜索从上一帧滤波器级别开始,在滤波器步长小于或等于零时结束。除了滤波器级别之外,还有一些控制去块滤波器的其他参数,例如清晰度级别,模式增量和参考增量。
去块化以128x128超级块级别执行,并且垂直边缘和水平边缘分别进行过滤。对于128x128超级块,首先过滤与每个8x8块对齐的垂直/水平边缘。如果使用4x4变换,则与4x4块对齐的内部边缘将被进一步过滤。过滤器长度可以从4抽头,6抽头,8抽头,14抽头和0抽头之间切换(不过滤)。基于滤波器抽头的数量来标识滤波器抽头的位置,以便计算滤波器掩码。最终执行滤波时,如果边缘变化较大,则添加外部抽头。
约束方向增强滤波器
边缘方向估计
在CDEF中,边缘方向搜索以8x8块级别执行。总共有八个边缘方向,如图13所示。
最佳边缘方向d_opt通过最大化以下项[3]来找到:
其中x_p是像素p的值,P_ {d,k}是沿方向d沿线k的像素集合,N_ {d,k}是P_ {d,k}的基数。
定向滤波器
CDEF包含两个滤波器抽头:一次抽头和二次抽头。一次抽头沿边缘方向工作(如图14所示),而二次抽头与边缘方向成45度定向(如图15所示)。
CDEF可用以下等式描述:
其中x(i,j)和y(i,j)是CDEF的输入和输出重构值。p表示一次抽头,s表示二次抽头,w是一次抽头和二次抽头之间的权重。f(d,S,D)是非线性滤波函数,S表示滤波强度,D是阻尼参数。对于8位内容,S ^ p的范围是0到15,S ^ s可以是0、1、2或4。D的值对于亮度范围是3到6,对于色度的范围是2到4。
非线性滤波
CDEF使用非线性滤波功能来防止在边缘上应用时过度模糊。这是通过忽略与当前要过滤的像素差异太大的像素来实现的。当当前像素与其相邻像素d之间的差异在阈值内时,f(d,S,D)= d,否则f(d,S,D)=0。具体而言,强度S确定允许的最大差异,并且阻尼D决定了忽略滤波器抽头的点。
回路恢复过滤器
可分离的对称维纳滤波器
令F为一个w x w的 2D滤波器抽头,围绕要滤波的像素,表示为一个w ^ 2 x 1列向量。与传统的维纳滤波器相比,可分离对称维纳滤波器具有以下三个约束,以节省信令比特并降低复杂度[4]:
- w x w滤波器窗口分为水平和垂直w-tap卷积。
- 水平和垂直滤波器被限制为对称的。
- 假设水平/垂直滤波器系数的总和为1。
结果,对于i,F可以写为F = column_vectorize [ab ^ T],服从a(i)= a(w-1-i),b(i)= b(w-1-i) = [0,r-1],并且sum(a(i))= sum(b(i))= 1,其中a是垂直滤波器,b是水平滤波器。滤波器a和b的推导是从对水平和垂直滤波器的初始猜测开始的,从而在保持另一个固定的同时优化了两者中的一个。因此,在实现中w = 7,需要分别为滤波器a和b发送3个抽头。当发信号通知滤波器系数时,前三个滤波器抽头使用4、5和6位,其余的则从归一化和对称约束中获得。垂直和水平滤波器总共传输30位。
双自导滤波器
设计双自导滤波器,首先获得degraded frame X的两个粗略还原X1和X2,然后将最终样本Xr作为退化样本的组合,以及退化样本与粗还原之间的差[4]来获得:
在编码器端,使用以下公式计算alpha和beta:
其中A = {X1-X,X2-X},b = Y-X,Y是原始来源。
X1和X2是使用引导滤波获得的,并且滤波是由半径r和噪声参数e控制的,其中r越大,空间方差越大,e越大,范围方差越大[4]。X1和X2分别由{r1,e1}和{r2,e2}来描述。
编码器将六元组{r1,e1,r2,e2,alpha,beta}发送到解码器。在实现中,{r1,e1,r2,e2}使用3位码本,而{alpha,beta}由于精度更高而各使用7位,因此总共17位。r始终小于或等于3 [4]。
引导滤波可以通过局部线性模型来描述:
其中x和y是输入和输出样本,F和G由要过滤像素的相邻区域中的统计信息确定。当引导图像与降级图像相同时,称为自引导滤波[4]。
推导自导滤波的F和G时,需要执行以下三个步骤:
- 在要过滤的像素周围的(2r +1)x(2r +1)窗口中计算像素的均值u和方差d。
- 对于每个像素,计算f = d /(d + e); g =(1-f)u。
- 将每个像素的F和G计算为像素周围3 x 3窗口中f和g值的平均值,以用于步骤2。
帧超分辨率
为了提高解码图片的感知质量,在低比特率下应用了超分辨率处理[5]。首先,在编码器端,源视频按非规范过程进行缩小。其次,对缩小的视频进行编码,然后进行去块和CDEF处理。第三,将线性放大过程用作规范过程,以将编码的视频恢复到其原始空间分辨率。最后,采用环路恢复来解决部分高频损耗。最后两个步骤一起称为超分辨过程[5]。类似地,在解码器侧以较低的空间分辨率应用解码,解块和CDEF处理。然后,帧经历超分辨过程。为了减少有关硬件实现的行缓冲区的开销,
薄膜颗粒合成
在编码器侧,作为去噪处理,胶片颗粒会从输入视频中删除。然后,通过康尼边缘检测器分析输入视频的结构和强度,并使用平滑区域估计胶片颗粒的强度。一旦强度被估计,去噪的视频和胶片颗粒参数被发送到解码器侧。这些参数用于合成颗粒并将其添加回解码的视频中,从而生成最终的输出视频。
为了重建胶片颗粒,将以下参数发送到解码器端:滞后值,自回归系数,色度分量的预计算查找表索引的值以及分段线性缩放函数的一组点[6 ]。这些参数以量化的整数表示,包括用于缩放函数的64个字节和用于自回归系数的74个字节。一旦接收到参数,就以光栅扫描顺序应用自回归过程,以生成一个64x64亮度和两个32x32色度胶片颗粒模板[6]。这些模板用于为图片的其余部分生成纹理。
屏幕内容编码
为了提高屏幕内容编码的编码性能,相关的视频编解码器结合了多种编码工具,例如,使用内部块复制(IntraBC)处理屏幕图片中的重复图案,使用调色板模式处理屏幕块具有有限数量的不同颜色。
块内复制
块内复制(IntraBC)[2]是类似于图片间预测的编码工具。主要区别在于,在IntraBC中,由当前图片的重构样本(在应用环路滤波之前)形成预测块。因此,可以将IntraBC视为当前图片中的“运动补偿”。
对块向量(BV)进行了编码,以指定预测变量的位置。B精度是整数。由于解码器需要BV来定位预测变量,因此将在比特流中用信号通知BV。对于当前块,标志首先使用IntraBC来指示当前块是否处于IntraBC模式,该标志是在位流中发送的。然后,如果当前块是IntraBC模式,则通过从当前BV减去参考BV来获得BV差diff,然后根据水平分量和垂直分量的diff值将diff分类为四种类型。需要将类型信息发送到比特流中,之后,可以基于类型信息用信号发送两个分量的diff值。
IntraBC对于屏幕内容编码非常有效,但也给硬件设计带来了很多困难。为了简化硬件设计,采用了以下修改。
- 当允许IntraBC时,将禁用环路滤波器,即去块滤波器,CDEF(约束方向增强滤波器)和环路恢复。通过这样做,可以在IntraBC和帧间预测之间共享重构样本的图片缓冲器。
- 为了促进并行解码,预测不能超出限制区域。对于一个超级块,如果其左上角位置的坐标为(x0,y0),则如果y <y0且x <x0 + 2 *(y0- y)
- 为了允许硬件回写延迟,IntraBC预测无法访问立即重建的区域。受限制的立即重建区域可以是1到n个超级块。因此,在修改2的顶部,如果一个超级块的左上角位置的坐标为(x0,y0),则当y <y0且x <x0 + 2时,IntraBC可以访问位置(x,y)的预测*(y0-y)-D,其中D表示受限立即重建区域。当D是一个超级块时,预测区域如下图所示。
调色板模式
暂无
参考文献
[1] J. Han, Y. Xu and D. Mukherjee, "A butterfly structured design of the hybrid
transform coding scheme," 2013 Picture Coding Symposium (PCS), San Jose, CA,
2013, pp. 17-20.\
[2] J. Li, H. Su, A. Converse, B. Li, R. Zhou, B. Lin, J. Xu, Y. Lu, and R.
Xiong, "Intra Block Copy for Screen Content in the Emerging AV1 Video Codec,"
2018 Data Compression Conference, Snowbird, Utah, USA.\
[3] S. Midtskogen and J.M. Valin. "The AV1 constrained directional enhancement
filter (CDEF)." In 2018 IEEE International Conference on Acoustics, Speech
and Signal Processing (ICASSP), pp. 1193-1197. IEEE, 2018.\
[4] 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." In 2017 IEEE International Conference on
Image Processing (ICIP), pp. 265-269. IEEE, 2017.\
[5] Y. Chen, D. Murherjee, J. Han, A. Grange, Y. Xu, Z. Liu,... & C.H.Chiang,
(2018, June). "An overview of core coding tools in the AV1 video codec.""
In 2018 Picture Coding Symposium (PCS) (pp. 41-45). IEEE.\
[6] A. Norkin, & N. Birkbeck, (2018, March). "Film grain synthesis for AV1
video codec." In 2018 Data Compression Conference (pp. 3-12). IEEE.