kaiyun官方注册
您所在的位置: 首页> 可编程逻辑> 业界动态> AVS解码器中帧内预测模块的设计与实现

AVS解码器中帧内预测模块的设计与实现

2009-05-27
作者:袁 鲲,张卫宁,李晓燕,赵建全

摘 要:阐述了AVS视频解码器的总体框架,详细分析了帧内预测的原理与算法,提出了一种可行的帧内预测解码器的硬件设计, 给出了每一模块的功能和结构的详细介绍,并建立了一种高效的存储机制。通过FPGA平台的验证,表明本设计完全满足AVS标清视频的实时解码要求。
关键词:音视频编码标准;解码器;帧内预测; 现场可编程门阵列

随着信息技术和计算机互联网的飞速发展,多媒体信息已成为人类获取信息的重要载体。经数字化处理后的多媒体信息具有易加密、抗干扰、可再生等优点,但其数据量大的特点也对信息存储设备及通信网络均提出了很高要求。因此,寻找更有效的编解码技术已成为目前电子领域的主要研究问题之一。
  AVS(Audio Video Coding Standard)标准是由中国数字音视频编解码技术标准工作组(简称AVS工作组)提出、具有自主知识产权的数字音视频编解码技术标准。AVS标准包括系统、视频、音频、移动视频等9个部分,其中《第2部分 视频》[1](简称AVS视频)于2006年3月实施, 主要面向高清晰度和高质量数字电视广播、数字存储媒体和其他相关应用。它具有四个主要特点[2]:(1)先进性,以H.264标准为起点,选用的技术具有国际前沿水平;(2)性能高,编码效率比MPEG-2高2倍以上,与H.264的编码效率相当;(3)复杂度低,算法复杂度明显低于H.264;(4)专利授权模式简单,费用明显低于同类标准。
  本文就AVS解码器的帧内预测模块的设计与实现进行讨论,介绍了AVS解码器总体设计的架构和各功能模块。在介绍了帧内预测原理的基础上,详细描述了一种适于AVS帧内预测解码的硬件实现方法,提出了可行的流水线并行操作与存储机制。最后给出了实验数据与仿真波形。
1 解码器总体设计结构
  解码器的结构[3]由系统控制模块(System controller)和各功能模块(Data processing)两大部分组成,如图1所示。

  功能模块之间的数据以8×8块为单位流水处理,输入的码流经过变长解码模块VLD(Variable Length Decoder)解析后,一部分反馈给系统控制模块,该模块可以接收标志信号、转换相应控制状态、发出使能信号、并统一时序等,控制各功能模块之间的数据传递与通信;一部分经过反扫描模块IZZ(Inverse ZigZag)、反量化模块IQ(Inverse Quantizer)和反变换模块IT(Inverse Transformer)恢复原始残差数据;一部分经过帧间预测(interframe prediction)或者帧内预测IPRED(Intraframe PREDiction)模块恢复预测值,并与残差值叠加,由环路滤波模块LF(Loop Filter)处理, 重建的数据回写入WB(Write Back)SDRAM,为显示(Display)输出使用和后续的预测提供参考。
2 帧内预测模块的原理与设计
  帧内预测技术是一项提高I帧压缩性能的关键技术。帧内预测的压缩原理是利用图像内部特别是图像平滑部分相邻像素间的相关性来降低编码码率,也就是通过减少空间冗余来实现压缩的目的。
2.1 帧内预测原理
  帧内预测是利用当前块左边和上边可用的相邻块的边缘像素进行预测,得到当前块的预测值,再将预测值与实际的像素值相减得到预测残差。编码时只对量值较小的预测残差进行熵编码,以减少码流的大小,这样就可以达到既精确又高效的压缩目的。
  解码时用已解码的相邻块边缘像素值和当前块的预测模式求得当前块的预测值,再与IT、IQ处理后恢复的残差值叠加,即可重构原始图像像素值。这里用作参考的像素值是没有经过环路滤波的数据,环路滤波过程要在一帧的数据预测完成时才进行。
2.2 AVS帧内预测算法
  AVS解码器的帧内预测都是以8×8块为单位,分为亮度(luma)和色度(chroma)预测两种,如图2所示。其中,色度预测包括17个参考像素点,有4种预测模式;亮度预测包括33个参考像素点,有5种预测模式。

  亮度和色度的某些预测模式相同,综合起来包括以下6种[1](其中,r[i]和c[i](i=0~16)分别为上边和左边参考像素点(r、c可表示亮度或色度),预测完成后得到一个8×8的预测样本矩阵predMatrix):
  (1)Vertical模式
  若r[i](i=1~8)可用,则利用上边沿像素垂直预测:
  predMatrix[x,y]=r[x+1](x,y=0~7)
  (2)Horizontal模式
  若r[i](i=1~8)可用,则利用左边沿像素水平预测:
  predMatrix[x,y]=c[x+1](x,y=0~7)
  (3)DC预测模式
  (a)若r[i]、c[i](i=0~9)都可用,则利用当前像素值对应上边、左边参考像素的低通滤波值预测:
  predMatrix[x,y]=((r[x]+2×r[x+1]+r[x+2]+2)>>2+(c[y]+2×c[y+1]+c[y+2]+2)>>2)>>1(x,y=0~7);否则
  (b)若r[i](i=0~9)可用,则利用当前像素值对应上边参考像素的低通滤波值预测:
  predMatrix[x,y]=(r[x]+2×r[x+1]+r[x+2]+2)>>2
  (x,y=0~7);否则
  (c)若c[i](i=0~9)可用,则利用当前像素值对应左边参考像素的低通滤波值预测:
  predMatrix[x,y]=(c[y]+2×c[y+1]+c[y+2]+2)>>2
  (x,y=0~7);否则
  (d)predMatrix[x,y]=128(x,y=0~7)。
  (4)Down_left预测模式
  若r[i]、c[i](i=1~16)均可用,则利用当前像素所在的对应连线两端的参考像素的低通滤波值预测为:
  predMatrix[x,y]=(r[x,y+1]+2×r[x,y+2]+r[x,y+3]+2)>>2+(c[x,y+1]+2×c[x,y+2]+c[x,y+3]+2)>>2)>>1(x,y=0~7)
  (5)Down_right预测模式
  若r[i]、c[i](i=0~16)均可用,则利用当前像素所在的对应连线顶端的参考像素的低通滤波值预测:
  如果x=y,predMatrix[x,y]=(c[1]+2×r[0]+r[1]+2)>>2
  (x,y=0~7);
  如果x>y,predMatrix[x,y]=(r[x-y+1]+2×r[x-y]+r[x-y-1]+2)>>2(x,y=0~7);
  如果y>x,predMatrix[x,y]=(c[y-x+1]+2×c[y-x]+c[y-x-1]+2)>>2(x,y=0~7)。
  (6)Plane预测模式
  若r[i]、c[i](i=1~8)均可用,
  predMatrix[x,y]=Clip1((ia+(x-3)×ib+(y-3)×ic+16)>>5)(x,y=0~7)。


2.3 帧内预测的硬件设计
  文中所设计的帧内预测总体结构如图3所示。包括三部分:TopIICT模块、TopIntrapred模块和Topcombination模块。TopIICT模块完成经过反整数余弦变换IICT(Inverse Integer Cosine Transformer)求得残差数据;TopIntrapred模块完成由预测模式和相邻参考值求得预测值;Topcombination模块完成对上述两组数据的重建,恢复原始数据并存储。因为对于4:2:0采样格式的视频序列,一个宏块的亮度包含四个8×8块,而两个色度均只包含一个8×8块的特点,这就决定了一个宏块的亮度和两种色度预测是可以并行执行的,所以如图3的总体结构对亮度和色度均适用。其中加入FIFO的设计是为了缓冲两路数据,并统一时序,使系统能够并行操作。

2.3.1 TopIICT子模块结构
  TopIICT模块是帧内和帧间预测都会使用到的模块,并且由于其复杂的运算过程使得其耗时较多,其他与之并行的模块都要等待该模块,以便统一时序进行下一步处理。该模块设计的效率偏低,不仅会影响系统效率,还会造成存储其他等待数据对空间的占用和浪费。因此,本文针对该模块提出了如图4所示的一种高效可行的并行流水操作的硬件设计方法。


  处理的数据以8×8块为单位,TopIICT模块在第一个时钟以8×16 bit并行接收一组8个像素的数据,送入第一级的行处理子模块row1,并由EN1sign控制模块控制行处理子模块rowN(N=2~8),对接下来7个时钟依次接收的7组行数据流水处理。同样,由EN2sign控制模块控制第二级的列处理子模块colN(N=1~8),对第一级的数据按列重分组后流水处理,最后由Rdsign控制模块控制第二级的数据再次按行重分组,从位宽8×9 bit的输出端口经过八个时钟串行输出,完成对一个8×8块的变换。由于设计中前两级都采用了流水例化8个子模块,使得8组数据可以在系统中并行操作,虽然硬件开销有所增加,但实验表明,TopIICT模块的运行速度显著提高。
2.3.2 TopIntrapred子模块结构
  前面指出,由于亮度和色度预测模式具有相容性,所以可以将两种预测设计在一个模块中,如图5所示。


  设计中,Blockjudge子模块的功能是由系统计数的BlockNum变量判断当前块在一帧图像中的位置,从而决定当前块的相邻块边缘像素的可用性,为下一子模块提供参考像素。Intrapred子模块的功能是利用参考像素值及其可用性,结合解析出来的预测模式语法元素,共同求得当前块的预测值。其中,六种预测模式都已并行挂起,某个块具体解码时由当前块的预测模式所决定。该部分设计同样是以8×8块为单位,一个8×8块的预测结束后,位宽8×8bit的输出端口由8个时钟依次输出得到的8组行数据。
2.3.3 Topcombination子模块及存储机制
  该部分主要实现将预测值和残差值两组数据的叠加,重建原始数据并存储于RAM空间。对处理完的数据存储有两条途径:一是将所有数据存储于外部RAM空间,以备帧间预测时用作参考像素,或是一帧像素存储完成后进行环路滤波;二是将当前块的边缘像素存储于片内RAM,以备当前帧其他块帧内预测时用作参考像素,避免因频繁从外部RAM读取数据造成的耗时。以色度Cb的存储机制为例介绍,如图6所示。

  对于4:2:0采样格式的视频序列,一个宏块的亮度对应一个8×8块的色度,所以设计中开辟的片内RAM空间位宽64 bit,深度由一帧图像以亮度宏块为单位的长度LengthinMB决定,大小为2×LengthinMB+1。其中,地址addr0始终用来存储每个色度块的最右列的八个重建后的像素值。由于重建的过程以行数据为基本单位,所以要等一个块的最后一行数据重建完才能将每一行的最后一个重建值组成一个新的64 bit数据存入addr0。由于每一个块的最右列像素仅被其右边的一个块用作参考像素,且右边块在解码顺序上又是紧接着当前块,所以每个预测完成块的最右列都可以覆盖前一块的最右列的存储地址,使该空间重复利用以达到节省的目的。而一帧图像每一行最后一个块的右边缘不再存入addr0,而是以0x80代替,以便下一行第一个块使用。
  地址addrN(N=2M-1,M=1~LengthinMB)用来存储一行LengthinMB个块的每个块最下列八个像素,以备下一行对应块用作参考,且在下一行对应块最下列重建后被覆盖。因为当前块的最下列要等待一行的数据重建后才会被下一行的对应块用作参考像素。
  而地址addrN(N=2M,M=1~LengthinMB)则是用来存储一行LengthinMB个块的每块右下一个像素,以备下一行对应块的右边块用作左上参考值。由于该像素的特殊性,对于这些数据的存储也要特殊对待。在当前块重建完成并存储该像素点于对应地址之前,先将对应地址的原数据左移8位,以备下一块用作左上参考值,再将当前块该像素存入对应地址的低8位。当重建一帧图像的最后一行的块时,用0x80代替最下列和右下像素,以便下一帧第一行块的使用。
  色度Cr的存储机制与Cb完全相同,且二者是顺序执行的,而亮度也和色度的存储机制基本一致,且与色度并行。只是由于亮度预测需要更多的参考点,RAM空间的深度也要相应增加。这一片内RAM存储机制的建立,大大减少了系统与外部RAM的数据通信,缩短了系统的运行周期,有助于实时性的提高。
3 实验结果
  按此方案设计的帧内预测解码单元,在Xilinx的ISE环境下,用Verilog HDL硬件描述语言实现,并采用Xst工具进行综合, Modelsim工具进行仿真,与C语言实现的AVS解码器参考代码 rm52j 的中间结果进行比较,结果表明二者完全一致。该设计完全满足帧内预测解码器的要求,仿真结果如图7所示。


  根据AVS帧内预测的特点,提出了一种AVS帧内预测解码器的硬件结构,充分利用了流水线、并行、资源复用等设计思想,并尽可能少使用存储器资源,非常适合于ASIC设计。用Xilinx公司的Virtex4系列的XC4VSX35型FPGA,综合出来的频率达到133 MHz,完全满足AVS标准清晰度(720×576,30 f/s)视频的实时解码要求。


参考文献
[1] 数字音视频编码技术标准工作组.信息技术 先进音视频编码 第2部分:视频(GB/T 200090.2-2006).中国国家标准化管理委会,2006.
[2] 生滨.AVS视频编解码芯片关键部件的体系结构研究与设计博士毕业论文.
[3] 胡倩,张珂,虞露.AVS 视频解码器的一种结构设计与硬件实现[J].浙江大学工学报,2006(12).
[4] 高文,黄铁军.信源编码标准AVS及其在数字电视中的应用[J].电视技术,2003(11).
[5] 王争,刘佩林.AVS帧内预测算法及其解码器的硬件实现[J].计算机工程与应用,2006(19).

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306116;邮箱:aet@chinaaet.com。
Baidu
map