H.264/AVC是由世界电信联盟(ITU)和世界规范化安排(ISO)一起提出的最新一代数字视频紧缩规范,它吸取了以往紧缩技能的精华,又引进了其他紧缩技能无法比拟的许多新技能,因而,H.264在通讯范畴得到了广泛应用。H.264/AVC紧缩功率很高,但算法的杂乱度和运算量一起也大大添加,为了满意视频解码实时性的要求,寻求更有用的解码技能成为重要的研究课题。
帧内猜测是视频编解码中重要的一部分,其主要功用是下降图画的空间冗余。本文依据H.264/AVC 帧内猜测的特色并结合对其算法的剖析,提出了一种帧内猜测硬件电路结构,有用地减少了硬件电路面积,进步了解码的功用。
1 H.264帧内猜测算法介绍
H.264视频解码器中,关于I和SI宏块类型选用帧内猜测来解码。帧内猜测模块的输入是当时宏块相邻左面块和上边块环路滤波前的像素值及参阅猜测形式,输出是当时宏块的猜测值。猜测值与反改换反量化得到的残差值重构,得到宏块的像素值。完结后,当时宏块的部分像素值和猜测形式要进行存储,为后边宏块解码供给参阅值。
H.264中亮度猜测分两类,一类是针对图画中含有很多细节的部分选用4×4块的猜测形式(有9种猜测形式);另一类是对图画中比较陡峭的区域选用16×16块的猜测形式(有4种猜测形式)。色度猜测是8×8块的猜测形式,有4种猜测形式,这4种猜测形式与亮度16×16的猜测形式类似,也有竖直、水平、DC和平面形式。一切的猜测形式都是依据左面块和上边块的参阅值,核算当时宏块的猜测值。
2 硬件完结
依据帧内猜测算法,硬件结构划分为predmode模块、plane模块、prediction模块、reconstruct模块、left_pixels模块、predmode_ram、prediction_ram、sample和prediction_output模块。如图1所示,其间left_pixels、prediction_ram、predmode _ram、sample和prediction_output模块都是存储单元,别离存储的是当时宏块左面块的参阅值、当时宏块上边块参阅值、当时宏块上边块的参阅猜测形式、提取的参阅像素值和当时宏块猜测值输出;predmode模块猜测核算出当时块的猜测形式;plane模块是对plane猜测形式的预处理;prediction模块是帧内猜测的中心核算单元,4个PE单元并行运算,一个时钟周期解码出一个4×4的一列4个猜测值;reconstruct模块的功用是完结重构。
2.1 predmode模块规划
Intra_16×16和Intra_Chroma的猜测形式可通过语法元素解析直接取得,所以本模块的主要任务是解析Intra_4×4的猜测形式。
本形式猜测器的输入是当时4×4亮度块的luma_4×4BlkIdx(块索引)、解析的语法元素和当时宏块的信息。输出是当时宏块的16个子块的猜测形式mb_predmode。predmode_ram中存储的是当时宏块上边一行4×4块的猜测形式,如图2暗影部分所示。左面块的猜测形式存储在predmode模块内。关于高清图画(分辨率为1 920×1 080)来说,predmode_ram需求的存储空间为1 080 bit。
如图3所示,E是当时块,A是左面块,B是上边块,D是左上边块,C是右上边块。predmode模块的结构如图4所示,图中predmode_B模块的作用是取得当时宏块E的上边块B的猜测形式,猜测当时宏块E的子块0、1、4、5,需求从predmode_ram中读取上边块的参阅猜测形式,其他子块的上边块参阅猜测形式是当时块已解码子块的猜测形式。predmode_A模块的作用是取得当时宏块E的左面块A的猜测形式,猜测当时块E的子块0、2、8、10时,左面块猜测形式从reg_A里读取。当宏块E的16个子块猜测完结时,把5、7、13、15子块的猜测形式存储到reg_A中,为下个宏块形式猜测供给左面块参阅值。
2.2 prediction模块规划
prediction模块是整个帧内猜测的中心核算模块。prediction模块的功用是依据取得的参阅像素,在不同猜测形式下选用不同的猜测公式核算当时块的猜测值。帧内猜测共有17种猜测形式,一般若对每种猜测形式都规划猜测器,当求解一个预算值时,其他16个形式处于闲暇,这就造成了很大的资源糟蹋。通过剖析各个形式所对应的运算规律,可以发现这些运算规律的一起特色是:(1)核算每个方位猜测值最多需求4个参阅样本像素;(2)核算公式都可由加法和移位操作完结核算。依据各个猜测形式的类似点,把17种猜测形式集合到一个运算单元中,可大大节省硬件资源。
图5给出了PE的规划,该PE的特色是:(1)Horizontal或Vertical猜测形式中在取得参阅值x0后,在bypass操控下不需求通过运算单元直接取得猜测值;(2)DC形式,该形式的猜测值是一个平均值。关于Intra_4×4_DC形式,用2个PE单元(PE0和PE1)在1个时钟周期就可解得猜测值。Intra_16x16_DC形式需求4个时钟周期,假定左面和上边的参阅像素值别离命名为L0~L15和U0~U15,前3个时钟周期,PE0的输入别离为(L0,L1,L2,L3)、((L0+L1+L2+L3),U0,U1,U2)、((L0+L1+L2+L3+U0+U1+U2),U3,0,0),输出存储在PE_reg中作为下个时钟周期的输入,PE1、FE2、PE3的输入类同,最终一个时钟周期把PE0、PE1、PE2、PE3作为PE0的输入求出DC形式的猜测值;(3)其他猜测形式,如(A+2B+C+2)>>2和plane预处理单元的输出都能通过此运算单元完结猜测值的核算。
为了进步解码速度,满意视频解码实时性的要求,选用4个运算单元PE0、PE1、PE2和PE3一起运转, 4个运算单元4个时钟周期可以解码出一个4×4块,进步了解码速度。
2.3 plane模块规划
2.3.1 简化 plane猜测形式
Intra_16×16_Plane形式和色度块Intra_chroma_Plane形式是帧内猜测中最杂乱的预算形式,为了满意体系实时处理的要求,可提早预算plane形式需求的一些参数。本文以Intra_16×16_Plane为例介绍怎么简化plane形式,Intra_chroma_Plane办法类同。
在plane形式运算中要用到乘法,为了节省硬件资源,选用移位来完结乘法,其间参数a、b、c的核算公式为:
上述公式,首要求得A后,pred(0,1)、pred(0,2)、pred(0,3)的值是在A的基础上加上c、2c、3c,然后再进行移位和clip。pred(1,0)、pred(2,0)、pred(3,0)的值只是在A的基础上加上b、2b、3b,然后再进行移位和clip。所以提早求得A、b、c,预算值是在A的基础上加上b或许c的倍数,本办法可大大优化plane形式。
2.3.2 plane形式硬件规划
plane形式的关键是求得参数H和V,其硬件规划如图6所示。以V为例介绍本电路。
举例说明本运算单元怎么核算出参数H:
当a=a11、b=a12、c=a3、d=a3、sum=0、mux1=0、IS6=0、IS7=0、shift1=0、shift2=1时,就可以求得A1+A3。a=a21、b=a22、c=a51、d=a52、sum=0、mux1=0、IS6=0、IS7=0、shift1=1、shift2=2时,就可以求得A2+A5,并按照这个运算单元可求出A4+A6和A8+A7。
本电路4个时钟周期就可以求得H或V,所以共需求8个时钟周祈求H和V。本办法与一般办法比较,只核算一次A、b、c的值,其他方位的猜测值只需求在A的基础上加上b或许c的倍数,下降了杂乱度。
3 试验成果
本规划运用Verilog HDL完结硬件代码的编写,并用Altera公司的Quartus II 8.0进行代码的仿真和归纳。图7为中心单元prediction模块的仿真成果,PE0_out、PE1_out、PE2_out、PE3_out9为4个并行单元的输出。选用Altera公司的Cyclone II进行本规划FPGA验证,本规划占用的逻辑资源数量较少,节省了硬件资源。
本文依据H.264帧内猜测的特色,提出了一种并行处理的硬件完结办法。该办法可以进步帧内猜测的处理速度,节省了硬件资源,满意了高清视频的解码要求。