《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 解决方案 > H.264/AVC High Profile视频编码中自适应变换模块的设计

H.264/AVC High Profile视频编码中自适应变换模块的设计

2011-12-28
作者:姜 英,王桂海
来源:来源:电子技术应用2011年第11期

摘  要: 提出了一种可配置的整数变换运算单元并将其用于H.264/AVC High Profile视频编码器的自适应变换模块中。通过变换类型信号的配置,该变换单元可以完成相应的变换操作。本设计采用Altera公司的Cyclone II系列FPGA进行实现和验证,布局布线后的最大工作频率为63 MHz,采用4个可配置变换单元的变换模块,可以满足HD1080P@50帧/s视频的实时编码要求。
关键词: 自适应变换;硬件复用离散余弦变换哈达玛变换;H.264 High Profile视频编码器

    2004年7月,JVT组织发布了H.264/AVC标准的高保真度扩展(FRExt)部分,该部分引进了自适应尺寸变换(ABT)[1],变换类型由4×4变换改为可以在4×4和8×8变换之间进行自适应选择。
    采用帧内4×4和帧内16×16预测模式得到的亮度分量预测残差进行4×4 DCT;采用帧内8×8预测模式得到的亮度分量预测残差进行8×8 DCT。采用帧间预测模式得到的亮度分量预测残差,如果预测模式块不大于8×8,则使用4×4 DCT,否则编码器需要在4×4 DCT和8×8 DCT之间进行选择。色度分量预测残差全部使用4×4 DCT。H.264参考软件JM采用的变换类型选择算法是:分别求一个宏块的亮度分量预测残差的4×4 SATD和8×8 SATD,选取SATD值小的变换尺寸为离散余弦变换的变换尺寸。
1 可配置的变换运算单元的设计
    该可配置的变换运算单元能根据配置信号完成二维的4×4正、反变换操作和一维的8×8正、反变换变换操作。这个运算单元的多个例化构成用于整个编码器中的自适应变换模块。
1.1 前向变换
    (1)4×4整数余弦变换:根据矩阵理论中的克罗内克积和矩阵的对称性[2],二维4×4 DCT能够写成:

    (3)8×8整数余弦变换:通过二维变换的行列分解,二维4×4 DCT能够写成二维8×8 DCT:
    Y8=Cf8X8Cf8T=Cf8(Cf8X8T)T(3)
    参考文献[3]给出了快速1D 8×8整数余弦变换算法。
    (4)整合的前向变换单元:通过运算资源共享,式(1)、式(2)、式(3)中的运算能用同一个结构实现,如图1所示。对于4×4变换,当PHASE=1时,第一级运算为加法运算,得到的是一个4×4二维变换系数块的第0行和第2行数据;当PHASE=0时,第一级运算为减法运算,得到的是一个4×4二维变换系数块的第1行和第3行数据。在最后一级加法中,实线是4×4变换的路径,虚线是8×8变换的路径。

1.2 反向变换
    (1)4×4 整数余弦反变换:4×4 iDCT能进一步写成:

    (2)8×8哈达玛变换:参考文献[2]将一个8×8的预测残差块划分成2个4×8块进行运算。其一维变换表达式可以写成:
  
    参考文献[3]给出了一维8×8整数余弦反变换的快速算法。
    (4)整合的反向变换单元:式(4)、式(5)、式(6)中的运算也能用同一个结构中来实现,整合后的运算单元如图2所示。

1.3 可配置的变换运算单元
    前向变换单元(图1)和反向变换单元(图2)有着类似的硬件结构,将它们整合到同一个运算单元中,如图3所示。该可配置的变换运算单元结构图一共需要36个加法器,图中有4个只用于8×8变换的加法器没有画出。输入互联、中间互联和输出互联结构为连线结构,根据变换类型确定每一级运算器的输入并对输出数据进行初等变换,使最后输出的结果与输入数据位置一一对应。

    该运算单元的输入为16个数据:一个4×4/8×1的预测残差块或者反量化后的系数块;输出为8个数据:一个4×2/8×1的变换(反变换)系数块。PHASE信号只在4×4变换时有效。在每一级运算的操作数输入过程中,采用操作数隔离法减少编码过程中电路的无效计算操作以降低功耗。为了缩短关键路径提高工作频率,数据路径采用2级流水线设计。

 

 

2 自适应的变换模块设计
    该自适应变换模块的整体结构如图4所示。该模块中所有的4×4变换都采用直接二维变换方法,所有的8×8变换都采用行列分解方法。为了平衡4×4变换和8×8变换的吞吐量并且获得更友好的量化模块接口,自适应的变换模块采用4个变换运算单元,并行处理32个数据,即2个4×4块或者一个8×8块的4行/列,所有的运算都是16 bit运算。trans_type信号表明变换的类型,cnt信号计数变换进行的时钟周期数。
    当进行4×4变换时,变换运算单元0(2)和变换运算单元1(3)的输入数据为同一个4×4块,分别得到该4×4块的0、3行和1、2行变换系数。因此该结构能同时处理2个4×4块。
    当进行8×8变换时,变换运算单元0--3是相同的运算单元,首先处理前4行,一维变换的结果存入转置寄存器,然后进行后4行的一维变换。转置寄存器中的系数经过转置后进行第二维变换。
    一个宏块的处理过程如图5所示。按照标准,对宏块中的4×4块/8×8块进行编号。如果进行4×4变换,数据按照2个4×4块的数据排列顺序输入给运算单元;如果进行8×8变换,数据按照8×8块的数据顺序输入给运算单元。4×4变换和8×8变换按图5中椭圆圈内的标号所示顺序进行。

3 综合结果和性能分析
    该设计使用Verilog HDL进行设计, QuartusII10.0进行综合,TimeQuest Timing Analyzer进行时序分析。布局布线后工作频率可以达到63 MHz。
    进行变换类型选择时,对亮度分量依次做4×4和8×8哈达玛变换,分别需要8+1=9和6+3×5=21个时钟周期。如果亮度分量进行4×4变换,则处理一个宏块最多需要30+12+1=43个时钟周期;如果亮度分量进行8×8变换,则处理一个宏块最多需要30+21+4=55个时钟周期。取最差情况,每个宏块需要55个时钟周期,则该变换模块每秒的吞吐量为63 000 000/55=1 145 454个宏块。HD1080P@50帧/s的视频每秒钟的数据量是1 920×1 080×50×1.5/(16×16)=607 500个宏块。因此,该自适应的变换结构可以达到HD1080P@50帧/s视频的实时编码需求。
    本文提出了一种用于H.264 High Profile视频编码器中的自适应变换模块,该模块可以完成编码过程中需要的所有变换操作。该设计的吞吐率可以满足HD1080P@50帧/s视频的实时编码需求。
参考文献
[1] SULLIVAN G,TOPIWALA P,LUTHRA A.The H.264/AVC advanced video coding  standard:overview  and introduction to  the  fidelity  range extensions[C].in:SPIE Conference on Applications  of  Digital  Image Processing XXVII,2004.
[2] WIEN M.Variable blocksize transform for H.264/AVC.
     IEEE Transoction.estimate power consumption[J].when supplied with 1.8 V and circuitssystem.Video Technology.,2003,13(7):604-613.
[3] Cheng  Zhanyuan,Chen Chehong,Liu Binda,et al.High throughput 2-D transform architectures for H.264 advanced video coders[C].in IEEE Asia-Pacific Conference on Circuits and Systems,2004.2:1141-1144.
[4] JVT-J029:Joint Video Team(JVT) of ISO/IEC MPEG & ITU-T VCEG(ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6) 10th Meeting:Waikoloa,Hawaii,USA,8-12,2003(12).
[5] Liu Zhenyu,Zhou Junwei,Wang Dongsheng,et al.Register length analysis and VLSI optimization of VBS hadamard  transform in H.264/AVC[J],IEEE Transactions on Circuits and Systems for Video Technology,2011,21(5) Issue:5:601-610.

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