AVS视频解码器的PC实现
2013-09-17关艳华
关艳华,张 刚
(太原理工大学信息工程学院,山西太原 030024)
AVS视频解码器的PC实现
关艳华,张 刚
(太原理工大学信息工程学院,山西太原 030024)
介绍了AVS的解码原理,分析了AVS开源代码RM52J_r1的不足之处。针对该开源代码解码效率相对低的问题,根据该开源代码设计了新的AVS解码器。实验结果表明,在保证解码质量的前提下,解码速度有了很大的提高,基本上达到了实时解码的要求。
AVS;解码器;实时解码
AVS是我国拥有自主知识产权的视频编解码标准。AVS视频编解码性能比MPEG-2高2~3倍[1],与H.264相当,但实现复杂度低于H.264。RM52J_r1是AVS标准的参考软件,实现了AVS标准中的规定以及扩展的功能,利于学习,然而其解码速度却相对低下,故本文针对该参考软件设计了新的AVS解码器。
1 AVS视频解码的原理
AVS的解码流程如图1所示。
图1 AVS解码流程
解码过程为:压缩编码后的比特流输入到解码器的输入端,解码器对该比特流进行熵解码和反扫描得到一系列量化系数,接着对这些量化系数进行反量化和反变化得到残差系数,通过帧内预测或帧间预测得到预测值,将残差系数与预测值相加得到重构值,最后再对重构值进行环路滤波。
2 AVS新解码器的设计
官方发布的解码软件RM52J_r1虽然实现了AVS标准中的规定,也在算法上进行了一些改进,但是代码的执行效率依然很低。分析其原因是[2]:代码的结构较为复杂,使用了大量的条件判断和跳转;使用了大量的多重循环;函数之间多级调用;定义了过多的变量;重复地使用动态内存分配,大大的消耗了CPU资源,造成内存效率低下。故本文以RM52J_r1为参考,重新设计了新的AVS解码器。
1)新解码器的流程设计
新解码器的设计流程如图2所示。首先对解码器进行初始化,接着查找起始码,根据起始码值的不同进入相应的函数。当解析出I图像头或PB图像头后,就根据图像头信息进行相应的I条带解码,P条带解码或B条带解码。
2)各模块算法的设计及优化
AVS视频编解码标准采用基于块的混合编码框架,其核心技术包括[3]:熵解码、反量化反变换、帧内预测、帧间预测、环路滤波。
图2 解码器流程
(1)熵解码
熵解码[4-5]的过程为:首先判断当前8×8块是否存在编码数据,若存在则初始化映射表和跳转门限,否则退出。接着解析 trans_coefficient,若 trans_coefficient<59,可通过查找表CurrentVLCTable得到量化系数Level和游程Run;若trans_coefficient≥59,需先解析出 escape_level_diff,通过escape_level_diff计算出 Level和 Run;若 trans_coefficient=EOB,该块的熵解码结束。最后根据absLevel值更新下一个码表的序号。
从上述熵解码的过程可以看出,当trans_coefficient<59时,只用到CurrentVLCTable中的Level和Run两个元素,没用到escape_level_diff元素;当trans_coefficient≥59时,只用到元素escape_level_diff,没用Level和Run。而大部分的熵解码都是trans_coefficient<59的情况,故CurrentVLCTable中的escape_level_diff元素在大多数的情况下就显得很多余。因而新解码器在码表设计时重新定义了两个新的结构体,其中一个只包含Level和Run,用于解码trans_coefficient<59的情况,另一个只包含escape_level_diff,用于解码trans_coefficient≥59的情况。
在根据absLevel值更新下一个码表的序号时,RM52J_r1采用一系列的判断语句来实现,影响了程序的速度。故新解码器采用查表的方法来代替参考软件中的条件判断部分。具体的码表切换规则如表1~表3所示。
表1 熵解码帧内亮度块码表切换规则
表2 熵解码帧间亮度块码表切换规则
表3 熵解码色度块码表切换规则
(2)反量化反变换
AVS采用的是二维8×8整数反量化与反变换,又可把二维整数反变换分解为水平和垂直方向上的一维整数反变换。本设计的实现过程与参考软件基本一致。但在进行反变换之前增加了对全零块的判断。若当前8×8子宏块为全零块,由于反变换之后依然为全零块,则不对其进行反变换。
(3)帧内预测
帧内预测分为3个部分:宏块中每个8×8子宏块预测模式的确定,参考样本值的获得,预测值的计算。
该模块的流程设计与RM52J_r1有所不同。在RM52J_r1中,先得到参考像素值并保存,之后再确定预测模式,接着计算预测值。本文在设计该模块时,首先确定每个8×8子宏块的预测模式,接着根据该模式进行相应像素值的读取,最后计算预测值,这样就避免许多不必要的参考像素值的读取。
(4)帧间预测
P帧或B帧最多可有2个参考帧。P帧可参考前向最近解码的I帧或P帧,B帧可参考一前一后最近解码的I帧或P帧。P/B帧宏块的解码与I帧大致类似,也是根据宏块的类型进行相应的解码。首先获取相应8×8子宏块的参考索引,然后从码流中获得运动矢量残差,根据相邻块的运动矢量得出当前块的预测运动矢量,运动矢量残差与预测运动矢量重构得到当前块的运动矢量。根据运动矢量和参考索引得到相应的参考样本,从而得到预测值。若该运动矢量指向的参考样本不是整像素,则应通过1/2或1/4插值来得到预测值。
帧间预测模块在设计时采取了一些与RM52J_r1不同的设计思路。首先,在RM52J_r1中,每解一帧图像就调用calloc函数进行一次动态内存的分配,之后解码完一帧图像后又释放一次,造成了内存效率的低下,故新解码器把参考帧的动态内存分配放到了解码整个视频序列之前,解码完整个视频序列后再释放该内存数据段。其次,在每一帧解码的过程中,图像的残差数据、预测值、重构值都采用一维数组来存储,降低了数组的维数。再次,由于P帧或B帧最多可有2个参考帧,故分配了3个帧缓冲来存储当前解码帧信息以及2个参考帧信息,并对帧缓冲空间进行了边界扩展,这样有利于后续插值的优化。
在解码的过程中运动矢量可能会指向参考图像外的样本,因此在插值时需判断参考像素点是否超出了参考图像边界,参考软件中是通过max和min函数来实现的,对于每一个8×8子宏块至少需判断64次参考像素点的位置,大大降低了程序的执行效率。故新解码器对帧缓冲空间进行了边界扩展,超出图像边界的像素点用最近图像边界的像素值来代替,这样在插值时就不需要判断参考像素点是否超出参考图像边界。
(5)环路滤波
AVS有3种滤波模式:强滤波(BS=2),标准滤波(BS=1),不滤波(BS=0)。本文的设计思想是:在解码完一帧图像后,按光栅扫描方式循环对一帧内的所有宏块进行滤波。滤波过程为先求每一8×8子宏块的滤波强度BS,然后再对亮度和色度边界进行滤波。若当前解码图像为I帧,可直接判定BS=2,省去了计算滤波强度的函数。对于P,B帧来说,需计算滤波强度,而对于16×16和16×8的宏块模式,不需要对宏块内的垂直边界滤波,对于16×16和8×16的宏块模式,不需要对宏块内的水平边界滤波,满足这些条件时就不需要计算相应边界的滤波强度,同时也不需要判断是否应对相应的色度块进行滤波。同时,把亮度滤波函数和色度滤波函数分开来写,因为色度块比亮度块需滤波的像素点要少。经过这样优化后环路滤波模块就省去了大量的计算,提高了解码的速度。
3 实验结果
测试所用的PC机操作系统为Windows7,CPU为Pentium双核处理器,主频为1.8 GHz,在Visual Studio 2008环境下进行编译调试。分别测试了帧数为300帧的QCIF(176×144),CIF(352×288)和D1(720×576)格式的AVS测试序列,所有测试序列的帧顺序都为IBBPBBP,并与参考解码器进行了对比。帧率的测试结果如表4所示。PSNR的测试结果如表5所示。由表4和表5可得,新解码器与RM52J_r1的解码信噪比一致,并且解码速度大大提高。QCIF,CIF和D1三种视频格式的解码速度分别是参考软件的4.71倍、4.52倍和4.25倍。
表4 新解码器与参考解码器帧率测试结果对比
表5 新解码器与参考解码器PSNR测试结果对比 dB
4 小结
本文在学习了参考解码软件RM52J_r1的基础上,根据参考软件设计并实现了新的AVS解码器,解码速度较之参考软件有了很大的提高,并且保持了原有图像的质量。接下来的工作可进一步对新解码器进行结构优化以及采用多媒体指令集对其中运算量大的程序进行优化。
:
[1]黄铁军,高文.AVS标准制定背景与知识产权状况[J].电视技术,2005,29(7):4-7.
[2]弓晓霞,刘兴旺.AVS全I帧实时解码器的PC实现[EB/OL].[2009-11-05].http://www.paper.edu.cn/index.php/default/releasepaper/content/200911-162.
[3]李艳,刘秀兰.AVS软件解码器瓶颈分析与优化[J].电子测量技术,2010,33(4):128-130.
[4]GB/T20090.2—2006,信息技术先进音视频编码 第2部分:视频[S].2006.
[5]陈光法,姚立敏,虞露.AVS熵解码与DSP实现[J].电视技术,2004,28(10):43-46.
Implementation of AVS Video Decoder on PC Platform
GUAN Yanhua,ZHANG Gang
(College of Information Engineering,Taiyuan University of Technology,Taiyuan 030024,China)
The key technology of AVS video decoder and decoding principle are introduced in this paper.The decoding efficiency of AVS Video open source code RM52J_r1 is relatively low,so a new AVS decoder is designed according to the source code.The result of experiment shows that the efficiency of the new decoder is significantly improved on the basis of good decoding quality.The new AVS decoder can meet the requirement of real-time decode.
AVS;decoder;real-time decoding
TN919.8
A
【本文献信息】关艳华,张刚.AVS视频解码器的PC实现[J].电视技术,2013,37(3).
国家自然科学基金项目(60772101)
关艳华(1988— ),女,硕士生,主研视频编解码;
张 刚(1953— ),博士生导师,主研音视频编解码和计算机通信等。
责任编辑:魏雨博
2012-06-18