本发明专利技术提供了一种HEVC/H.265的DCT变换和反变换的SIMD优化方法,首先对输入数据进行预处理,将数据从内存装载进寄存器,视为数据矢量,对矢量数据进行交织和重新排列组合,对于垂直方向的DCT变换,将数据进行右移舍入以适应有限的寄存器位宽,提高计算并行度;然后对预处理后的数据进行蝶形运算,逐级计算对应数据的和差;而后执行点乘运算,计算蝶形运算得到的中间值和相应的变换系数乘积的和,得到输入数据和变换矩阵的乘积;最后,对矩阵乘积结果进行舍入计算,满足输出数据的位宽限定并输出。本发明专利技术在Tilera平台上能够有效加速HEVC/H.265视频编码器的DCT变换反变换模块,获得较好的加速优化效果。
【技术实现步骤摘要】
HEVC/H.265的DCT变换和反变换的SIMD优化方法
本专利技术涉及视频编码
,具体地,涉及一种HEVC/H.265视频编码标准的DCT变换和反变换的SIMD加速优化方法(基于Tilera平台),利用Tilera的SIMD指令集实现HEVC的DCT变换和反变换模块,提高运行速度。
技术介绍
随着视频内容的增长和视频产品的迅速发展,视频内容产业链面临更大的压力,目前AVC(AdvancedVideoCoding)视频压缩技术已经不能满足视频传输的要求,更高效的视频压缩技术应运而生。不仅如此,未来视频市场趋于更高水平的要求已经超出了目前AVC编码能力的范围,比如3DTV和4KTV。对于4KTV,即使使用目前H.264方式编码,也需要24-32M码率,AVC已经成为4KTV业务发展的瓶颈。在此背景下,高效视频编码(HighEfficiencyVideoCoding,HEVC)这种新的视频编码标准应运而生。HEVC的发展最早追溯到2004年,经过近十年的发展,HEVC于2012年2月形成完整的委员会标准草案,并于2013年1月正式成为国际标准。HEVC的目标是编码效率比AVC提高50%,复杂度比AVC复杂2到10倍。HEVC未来的业务主要面向高清、超高清、3DTV,数据量比以往视频大得多,另外HEVC要求大大提高视频压缩比,而高压缩算法是以增加算法复杂度为代价的,考虑到这两个方面的因素,HEVC编码器对系统的计算性能提出了更高的要求。为降低HEVC编码复杂度,通常有算法优化、指令集优化、并行优化等方法,其中指令集优化是利用计算平台的指令集实现计算模块,SIMD(singleinstructionmultipledata)单指令多数据技术能在一个指令周期内并行处理多个数据的计算,相比于常规的实现方案能大大减少指令周期,提高运行速度,同时能保证计算结果准确无误。在视频编码中,SIMD技术广泛应用于密集数据计算,如亚像素插值、SAD、DCT/IDCT、计算残差等模块。在Tilera平台上实现HEVC编码器,我们移植了HEVC参考代码HM的DCT/IDCT实现方法,HEVC的DCT模块相比于H.264复杂度大大提升。H.264的变换系数为1和2,H.264的变换只需要简单的移位和加法计算。HEVC支持4x4至32x32的变换块,此外HEVC的DCT系数数值更大、更复杂,这意味着HEVC的DCT变化需要执行多次乘法,而且中间变量的数值更大,需要更大的位宽。在执行竖直方向的DCT变换时,中间变量的值超出了16bit的存储范围,为17-19bit,如果用32bit保存中间变量,则数据处理的并行水平大打折扣。在Intel和Arm上已有的一些HEVC的DCT和IDCT的SIMD实现方法,竖直方向的DCT变换的速度要低于水平方向的DCT变换。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种HEVC/H.265的DCT变换和反变换的SIMD优化方法,所述方法针对Tilera平台上常规的C语言实现的HEVC的DCT和IDCT模块计算复杂度高、编码速度慢的问题,利用Tilera的SIMD指令集实现HEVC的DCT变换和反变换模块,提高运行速度。为实现以上目的,本专利技术提供一种HEVC/H.265的DCT变换和反变换的SIMD优化方法,包括如下步骤:第一步,将一维DCT输入数据从内存装载进寄存器,视为矢量数据;第二步,对矢量数据重新排列组合,执行蝶形运算,对输入数据逐级加减,计算出中间变量矢量;第三步,如果该一维DCT变换是水平方向变换,直接跳到第五步;第四步,对中间变量进行右移舍入运算,以限制其位宽;第五步,将中间变量矢量和对应的系数矢量进行点乘运算;第六步,将点乘运算的结果进行重新排列组合,执行右移舍入,输出结果保存至目标内存。优选地,所述第二步中,对输入数据的并行加减,完成蝶形运算,进行逐级多次的并行加减法,计算出用于点乘计算的中间变量矢量。优选地,所述第四步中,一维DCT变换对中间变量进行舍入预处理,为了保持并行性,达到较好的加速效果,对于竖直方向的一维DCT变换,将中间变量右移舍入使其位宽在16bit内;具体的右移计算如式(1):y=(x+(1<<(MIVO-1)))>>MIVO(1)其中:x为需要进行右移舍入的数据,MIVO为中间变量最大阶数,y是执行完右移舍入后的结果;同时,输入变量shift值也要根据MIVO做相应的调整,使其能抵消中间变量的右移舍入,shift值是DCT输出时需要将数据右移舍入的位数。优选地,所述第五步中,采用一条点乘计算指令代替多次的乘法和加法运算,有效加速中间变量和相应系数的乘积求和过程。进一步的,对于计算四个中间变量和相应系数的点乘,直接采用一条指令执行四元矢量点乘便可以完成;对于四个以上中间变量和相应系数的点乘,通过多次的四元矢量点乘完成;对于计算两个中间变量和相应系数的点乘,采用并行的乘法和加法指令完成。优选地,所述第六步中,采用并行的加法和右移运算以及数据重组,并行完成对点乘计算结果进行右移舍入操作;右移舍入计算如式(2):y=(x+offset)>>shiftoffset=(1<<(shift-1))error=2shift-1式中:x是需要执行右移舍入的数据,y是执行完右移舍入的结果;offset是用于四舍五入的补偿值,由右移位数shift推导而来,shift值由DCT变换块的大小N(4,8,16,32)和数据位宽B(8bit,10bit)推导而来,水平方向(horizontal)的shift值和N,B有关,而竖直方向(vertical)的shift值和N有关,根据shift值的不同可以用来判断一维DCT变换的方向:水平还是竖直;error是执行右移舍入操作产生的最大误差。与现有技术相比,本专利技术具有如下的有益效果:本专利技术提供的方法利用Tilera平台的指令集对Tilera的DCT和IDCT模块进行SIMD优化,实现在微弱的性能损失情况下有效加速Tilera平台上HEVC的DCT和IDCT模块。经验证,相比于普通的C代码实现方法,在使用该专利技术后,Tilera平台上HEVC的DCT和IDCT模块能平均减少40%-70%的指令周期数,而BD-PSNR(相同质量下的PSNR)仅有不到0.003的损失。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:图1为本专利技术一较优实施例的一维DCT变换流程图;图2为本专利技术一较优实施例的一维IDCT变换流程图;图3为本专利技术一较优实施例的蝶形运算计算中间变量示意图;图4为本专利技术一较优实施例对中间变量进行预处理的流程图;图5为本专利技术一较优实施例蝶形运算中执行矢量点乘运算示意图,其中:(a)为四元素矢量点乘运算示意图,(b)为二元素矢量点乘运算示意图;图6为本专利技术一较优实施例对蝶形运算结果执行后续舍入操作示意图;图7为本专利技术一较优实施例一维IDCT中对数据进行转置变换操作的示意图。具体实施方式下面结合具体实施例对本专利技术进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本专利技术,但不以任何形式限制本专利技术。应当指出的是,对本领域的普通技本文档来自技高网...
【技术保护点】
一种HEVC/H.265的DCT变换和反变换的SIMD优化方法,其特征在于,包括如下步骤:第一步,将一维DCT输入数据从内存装载进寄存器,视为矢量数据;第二步,对矢量数据重新排列组合,执行蝶形运算,对输入数据逐级加减,计算出中间变量矢量;第三步,如果该一维DCT变换是水平方向变换,直接跳到第五步;第四步,对中间变量进行右移舍入运算,以限制其位宽;第五步,将中间变量矢量和对应的系数矢量进行点乘运算;第六步,将点乘运算的结果进行重新排列组合,执行右移舍入,输出结果保存至目标内存。
【技术特征摘要】
1.一种HEVC/H.265的DCT变换和反变换的SIMD优化方法,其特征在于,包括如下步骤:第一步,将一维DCT输入数据从内存装载进寄存器,视为矢量数据;第二步,对矢量数据重新排列组合,执行蝶形运算,对输入数据逐级加减,计算出中间变量矢量;第三步,如果该一维DCT变换是水平方向变换,直接跳到第五步;第四步,对中间变量进行右移舍入运算,以限制其位宽;第五步,将中间变量矢量和对应的系数矢量进行点乘运算;对于计算四个中间变量和相应系数的点乘,直接采用一条指令执行四元矢量点乘便可以完成;对于四个以上中间变量和相应系数的点乘,通过多次的四元矢量点乘完成;对于计算两个中间变量和相应系数的点乘,采用并行的乘法和加法指令完成;第六步,将点乘运算的结果进行重新排列组合,执行右移舍入,输出结果保存至目标内存。2.根据权利要求1所述的一种HEVC/H.265的DCT变换和反变换的SIMD优化方法,其特征在于,所述第二步中,对输入数据的并行加减,完成蝶形运算,进行逐级多次的并行加减法,计算出用于点乘计算的中间变量矢量。3.根据权利要求1所述的一种HEVC/H.265的DCT变换和反变换的SIMD优化方法,其特征在于,所述第四步中,一维DCT变换对中间变量进行舍入预处理,对于竖直方向的一维DCT变换,将中间变量右移舍入使其位宽在16bit内。4.根据权利要求3所述的一种H...
【专利技术属性】
技术研发人员:张小云,黎凌宇,高志勇,陈立,
申请(专利权)人:上海交通大学,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。