APP下载

基于图像行/列流水线的AVS快速模式判决的设计

2012-03-15张文军高志勇

电视技术 2012年14期
关键词:宏块流水线流水

马 赫,张文军,高志勇,陈 立

(上海交通大学,上海 200240)

1 AVS简介

AVS是我国为了适应数字电视广播、数字存储媒体、网络流媒体、多媒体通信等应用中对运动图像压缩技术的需要而自主制定的数字音视频编解码标准[1]。它采用了一系列技术来达到高效率的视频编码,包括帧内预测、帧间预测、变换、量化和熵编码等。帧间预测使用基于块的运动预测来消除图像间时域冗余,帧内预测使用空间预测模式来消除图像内空域冗余;再通过对预测残差进行变换和量化消除图像视觉冗余;最后,运动矢量、预测模式、量化参数和变换系数经熵编码进行压缩形成比特流。

在高清视频越来越流行的今天,数字视频编码器的设计变得异常复杂:数据处理吞吐量大,外部存储器访问带宽需求高,电路资源消耗大,实现复杂度高。同时,硬件编码器对实时性的要求非常高,为了能够实现低成本和低功耗编码,往往需要其工作频率能够做到150 MHz甚至更低。目前相关硬件实现方法,都是基于16×16宏块级以及8×8块级流水线。例如文献[2]中提到,若假设流水线共有3级,那么在当前时刻T,流水线第1级处理N+1号块,第2级处理N号块,第3级处理N-1号块;到了下一流水时刻T+1,则变成第1级处理N+2号块,第2级处理N+1号块,第3级处理N号块,具体参见图1所示。但是对于高清视频处理,这种流水处理方式很难实现低系统时钟频率的编码系统[3]。如需要降低编码系统频率,则要对算法作较大简化,从而导致一定程度的失真,无法达到用户欣赏高质量视频画质的要求。

图1 常见块级流水

由于模式判别在整个编码流程中处理所需时间最多,因此本文提出了一种基于图像像素块行/列流水线的快速模式判决设计,通过将块级流水合理拆分成行/列级流水,能够以不到150 MHz的系统频率满足30 f/s(帧/秒)约1 920×1 080高清视频图像实时编码的需求。

2 模式判别原理

与MPEG-2,MPEG-4及H.264视频压缩标准一样,AVS也以16×16宏块作为编码的基本单元,每个宏块由6个8×8的块组成,其中4个亮度块、2个色度块。在编码器中编码模式的选择是一个非常重要的环节,它直接影响到编码的性能和码率。所谓模式选择是指当前宏块的编码有多种策略,具体包括帧内模式以及帧间模式,每种模式又包括不同的大小划分以及不同的预测方向。因此要根据视频内容及场景的变化,给每一个宏块选择一个最佳的编码策略进行编码。如亮度突变,则应采用帧内预测编码,而当前后帧有较强相关性时可采取帧间编码模式。编码模式选择应该对视频内容及场景变化有良好的适应性。

目前所研究的都是基于率失真优化(RDO)的模式判决策略[4]。RDO是指,对于每个待编码的宏块,将其所有模式先后经过帧内/帧间预测、残差计算、DCT、Q、IQ、IDCT、重构以及失真计算模块,最后得到失真Distortion;另一方面,通过zigzag扫描以及哥伦布指数编码得到码率R,计算代价函数RDcost=D+λ×R,选择代价值最小的一种模式作为当前宏块的最佳编码模式,如图2所示。

图2 模式判别过程

RDO能用于解决每种模式编码所用的比特数与图像失真间的优化问题。虽然RDO技术能有效提高编码系统的性能和图像质量,但是由于模式众多,在实时编码的前提下,对所有编码模式都做RDO选择,其巨大的数据吞吐量是无法让人接受的。因此如何合理有效地进行模式决策一直是国内外研究的热点。

通过文献[5]可以发现,有些模式被选中的概率较小,而另外一些模式选中的概率则要大得多。对于这些概率较小的模式,完全可以通过直接计算SAD(原始块同预测块的残差)的判断方法来判断,同时几乎不会损失性能。因此这里采取RDO和SAD判据相结合的模式判别方法对模式进行决策[3]。其中,在I帧中不作任何简化,一方面I帧是整个图像组GOP的预测参考,对于编码性能影响很大;另一方面影响整个编码器实时编码的数据吞吐瓶颈在于P/B帧,所以I帧每个宏块的模式决策都根据RDO判据来选择。在P/B帧中,从16×8,8×16,8×8,16×16四种模式中通过SAD判据预选出三种候选模式canmode1,canmode2,canmode3,同时也根据SAD判据为每个8×8块选择一种最优的intra模式,再让三种候选模式和skip/direct模式以及intra模式依次进入流水,通过RDO判据,选择RDcost最小的一种模式。

另外不难发现,帧内模式在整个模式选择中占据了举足轻重的地位。先不说I帧模式就是帧内模式,即使是P/B帧,其帧内模式也有很高的概率被选中。但是在硬件设计中,帧内预测却占用大量时钟周期。帧内预测时,由于预测当前块时需要用到左边块、上边块或者右上块最优模式的重构像素,所以帧内预测存在块级数据依赖。如果按照正常B00,B01,B10,B11,U,V的顺序进行预测,就会导致流水阻塞。例如,B01块的水平预测需要B00块最优模式重构像素作为参考,而如果此时B00块仍在流水处理中,那么重构像素无法获取,流水就不得不暂时处于等待状态。同理,B10和B11块的帧内预测也会遇到类似问题,这样将会极大降低流水线效率。而分析可知,色度块预测在一个宏块内不存在数据依赖问题,因此可以将色度块预测轮流间插在亮度块的预测之中,按照B00,U,B01,B10,V,B11的顺序预测,将大大减少流水阻塞的影响[6]。

本文采用了如图3所示的硬件结构,包括控制、帧内预测、核心计算、SAD计算、重构以及数据传输等模块。其中控制模块产生控制信号,控制整体流程;帧内预测模块产生预测块,进入核心计算模块进行基于RDO的模式选择;SAD计算模块负责某些模式的简化判断;最后将最优数据重构以及通过数据传输模块输送到下一级。

图3 模式判别结构图

3 行/列流水的设计及结果比较

本文在文献[5]中提出的模式判别方法基础上,将块级流水拆分成了行列级流水。在传统的块级流水处理方案中,不可能做到每级流水模块处理时间完全相等,必然会导致处理较快的模块要等待处理慢的模块处理完成。因此在流水线处理过程中,一级流水所需的时钟数,是由流水线上所需时间最长的模块来决定,而其余模块就会有若干等待周期。本文在处理一个宏块6个8×8块过程中,虽然以8×8块为单位进行模式选择,但是采用了像元行/列流水的处理方式,每级流水都只需要一个时钟,因此流水线可以做到每个时钟都输入和处理一个像元行/列,使得流水线中所有处理模块的空转周期降到最低。

行/列流水的处理关键是不能发生流水阻塞,即数据一旦进入流水线,必须能不间断地向下一级流去,仿佛真正的流水一样。本文将整个模式判别过程拆分成55级,每级所需的时间只有一个时钟。这样通过合理的拆分以及在每级流水间都增加缓存,保证了每一个时钟数据都可由上一级输入到下一级,实现了流水的连续性。

图4和图5分别给出了I帧和P/B帧模式判别的流水过程。需要注意的是,这里仍然以8×8块为单位进行判断,只是每个8×8块在处理时细分成行/列级流水。另外,由于帧内预测的块间数据依赖,还是会产生当前块需要预测时,所需的参考数据没有生成的现象,不可避免地存在一定程度上的时钟浪费。

图4 I帧模式判别流水

图5 P/B帧模式判别流水

本文对I帧和P/B帧的处理结果分别和文献[5]进行了比较,见表1和表2。比较可以发现,本设计优势在于最大限度地排满流水,减少了处理模块的等待时间,提高硬件利用效率。因此在没有损失系统性能的情况下大大减少模式判别过程所需的时钟数,增加系统吞吐量。处理高清视频所需的系统频率缩减一半以上,可以轻松实现高清视频实时编解码的目的。

表1 I帧模式判别结果比较

表2 P/B帧模式判别结果比较

4 结束语

本文通过将模式判别过程中像素块级流水拆分成基于像素的行/列级流水,大大减少了流水中的时钟等待。不论是I帧还是P/B帧,它完成一个宏块的模式判决过程都只需要不到400个时钟周期,从而能够以较低的系统频率满足30 f/s(帧/秒)的1 920×1 080高清视频图像实时编码的需求。

[1]AVS工作组.AVS N1196信息技术——先进音视频编码[S].2005.

[2]邵文威.AVS视频解码器可变长解码和反量化反变换模块硬件设计与实现[D].济南:山东大学,2010.

[3]孙楠,刘佩林.用于AVS视频解码器的高效分级流水线机制[J].电视技术,2006,30(11):35-37.

[4]邵娟,张卫宁,陈栋,等.AVS中B帧宏块模式选择快速方法[J].计算机工程与应用,2011(5):179-181.

[5]汪霄涵.基于率失真优化模式决策的AVS编码芯片设计研究[D].北京:北京大学,2010.

[6]朱相奎.AVS高清编码器帧内预测和环路滤波的FPGA设计与实现[D].北京:北京大学,2010.

猜你喜欢

宏块流水线流水
流水
基于运动估计与补偿的雷达拼图预测分析*
流水线
流水有心
报废汽车拆解半自动流水线研究
前身寄予流水,几世修到莲花?
基于选择特征宏块的快速视频稳像
流水线生产杀死艺术
SIMATIC IPC3000 SMART在汽车流水线领域的应用
落红只逐东流水