一,概述
AVS(audio video coding standard)工作组是“数字音视频编解码技术标准”工作组的简称,工作组的任务是制(修)订数字音视频的压缩、解压缩、处理和表示等共性技术标准,为数字音视频设备与系统提供高效经济的编解码技术。其编码效率,相比于MPEG- 2标准,提高2到3倍,相比于H.264标准,效率相当,但是其算法复杂度,实现成本均低于H.264。
二,编码及解码的关键技术
AVS视频编码标准采用传统的基于预测变换的编码框架,可以分为预测、变换、熵编码和环路滤波4个主要模块。
整体过程:在所有宏块都进行帧内预测或帧间预测后,预测残差要进行8*8整数变换(ICT)和量化(Q),然后对量化系数进行zig-zag扫描,得到一维排列的量化系数,最后对量化系数进行熵编码。
1、预测
预测编码即利用信号间的相关性,用前面一个或多个信号作为当前信号的预测值,对当前信号的实际值与预测值的差进行编码。预测又分为帧内预测和帧间预测,分别用于消除空域冗余和时域冗余。图1 中S0是预测模式选择开关,在AVS 视频标准中,所有宏块都要进行帧内预测或帧间预测。
(1)帧内预测
帧内预测技术使用相邻像素的相关性,通过当前像素块以编码重建的左边和上边的像素进行预测,然后对预测误差进行编码,从而减少表达像素块所用的比特数。AVS视频标准的帧内预测以8*8亮度块和色度块为单位,定义5种8*8亮度块预测模式和4种8*8色度块预测模式。
首先,介绍亮度块预测。
需要预测的样本点用1~64的数字表示,数字周围的符号为参考样本点。
亮度块预测的5种模式分别为:垂直预测、水平预测、均值预测、左下对角预测和右下对角预测。
垂直预测就是采用样本点上方的参考点值作为预测值。比如:样本点3,11,19,27,35,43,51,59对应的预测值就是C。
同理,剩下4种模式。
然后,介绍色度预测。
P(-1,y),y属于-1~7和P(x,-1)x属于-1~7表示8*8色度块的左上17个相邻参考点。里面Pred(x,y)表示8*8色度块的预测值。
色度预测4种模块分别为:垂直预测,水平预测,均值预测和平面预测。
比如垂直预测,垂直预测采用宏块样本点正上方的参考点作为预测值,比如:Pred(1,1)的预测值就是它上方的P(1,-1)。
同理,剩下3种模式。
(1)帧间预测
帧间预测通过块搜索匹配算法找出与当前图像中的块相对应的邻近参考帧中最相似的预测块,对当前图像块与匹配块进行差分编码,大大降低视频序列图像间的冗余.提高帧间预测的精度。
帧间预测用到的技术有:变块大小运动补偿、多参考帧预测、1/4像素插值、B帧宏块编码模式等。
AVS视频标准中运动补偿块的大小包括16*16,16*8,8*16和8*8四种。运动矢量的精度是提高预测准确度的重要手段之一,AVS视频标准运动矢量的精度为1/4像素,影响高精度运动补偿性能的一个核心技术是插值滤波器的选择。AVS视频标准定义了两个4拍滤波器(-1,5,5,-1)和(1,7,7,1),分别用于1/2和1/4亮度样本的插值。P帧进行前向运动补偿预测,需要一帧参考图像。B帧进行双向运动补偿预测,需要两帧参考图像。因为B帧本身也需要两个参考图像的缓冲区。所以,AVS视频标准限定最多采用两个参考帧。AVS视频标准的B帧定义了一种对称模式,即只编码前向运动矢量, 后向运动矢量通过前向运动矢量导出,从而实现双向预测。此方案与编码双向运动矢量效率相当。
2.环路滤波
AVS视频标准定义了自适应环路滤波器来消除方块效应,改善重建图像的主观质量。环路滤波以8*8的宏块为单位,按照光栅扫描顺序依次处理。每个宏块分别对亮度以及色度进行环路滤波,首先从左到右对垂直边界滤波,然后从上到下对水平边界滤波。
3.整体变换和量化(ICT\Q)
AVS视频标准选择的是8*8整体变化,整体变化相较于传统的浮点DCT变换,具有计算复杂度低和编解码完全匹配的优点。
步骤:
(1)编码端
首先对8*8块进行正向变换,然后进行量化处理。
(2)解码端
反量化,反向变换。
4.熵编码
熵编码就是基于上下文的自适应变长编码器对变换量化后的预测残差进行编码,其目标是去除在信息表达上的冗余,也称为信息熵冗余或者编码冗余。
三,文件组织形式
AVS码流按照编码方式分为I帧、P帧和B帧。I帧中的宏块只进行帧内预测,P帧和B帧的宏块则需要进行帧内预测或帧间预测。每帧由连续的条带组成,条带由宏块组成。AVS的视频文件总是由视频序列起始码开始,以视频序列结束码结束。视频序列起始码和视频序列结束码之间是组成文件的视频帧和条带(按光栅扫描顺序连续的若干不重叠的宏块)。起始码值反映了所对应的视频帧或条带的类型。
AVS格式文件的组织形式为: 视频序列起始码—>数据1—>视频帧和条带—>数据N—>视频序列结束码。
编码后的AVS文件中,视频起始码后面的数据是这个视频的视频序列头,它包含档次标号,级别标号,色度格式和帧率。
AVS视频应用方案流程为:原始图像->编码->传输->解码->播放
原始图像:一幅图像就是一帧,帧由三个样本矩阵构成,一个亮度样本矩阵(R),两个色度样本矩阵(Cb,Cr)。
编码:编码视频序列是比特流的最高层语法结构。编码视频序列由一个IDR图像开始,后面跟着N个非IDR图像,直到比特流结束。(如果一个编码图像中的图像头所在的NAL单元的nal_unit_type=2,这样的图像就是IDR图像)
传输过程:
(1)根据传输的AVS文件的特定格式从文件中寻找视频帧的开始位置从而读
取视频帧包含的数据。
(2)根据AVS视频文件的语法,取出视频序列起始码(0xo0000lB0)之后的
数据,发送给客户端。这部分数据相当于H.264文件中的序列参数集和
图像参数集,客户端AVS解码器的初始化中要用到这些参数。
(3)根据RTP协议规范,将取出的视频帧数据加上负载类型、序列号、时间
戳,形成完整的RTP包。
(4)如果某个视频帧大于设定的数值(选择1448字节作为一个限定值),还
要完成视频帧的分片工作,这里使用了和H.264相同的分片规则。
解码:在解码过程中,只有一个图像参数集处于激活状态,其他图像参数集处于非激活状态。解码包括解析过程和解码过程。解析就是利用k阶指数哥伦布码进行解析,解码过程为图像头解码,条带解码,宏块解码等。字节流解码后得到的就是NAL单元序列,具体过程为:
将当前位置的字节流初始化成开始位置,然后进行下面的步骤:
(1)如果当前位置后的三个字节流序列都为0x000001,则这三个字节流提出来扔掉,并将当前位置移到这三个字节流后面。
(2)变量NumBytesInNALunit等于当前位置和下一个起始码前缀之间的字节数。
(3)从比特流中提取NumBytesInNALunit个字节,然后交给NUL单元解码过程解码。同时,字节流中的当前位置向前移NumBytesInNALunit个字节。