CN104320668B - Hevc/h.265的dct变换和反变换的simd优化方法 - Google Patents

Hevc/h.265的dct变换和反变换的simd优化方法 Download PDF

Info

Publication number
CN104320668B
CN104320668B CN201410608208.1A CN201410608208A CN104320668B CN 104320668 B CN104320668 B CN 104320668B CN 201410608208 A CN201410608208 A CN 201410608208A CN 104320668 B CN104320668 B CN 104320668B
Authority
CN
China
Prior art keywords
data
rounding
hevc
dct transform
vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410608208.1A
Other languages
English (en)
Other versions
CN104320668A (zh
Inventor
张小云
黎凌宇
高志勇
陈立
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN201410608208.1A priority Critical patent/CN104320668B/zh
Publication of CN104320668A publication Critical patent/CN104320668A/zh
Application granted granted Critical
Publication of CN104320668B publication Critical patent/CN104320668B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明提供了一种HEVC/H.265的DCT变换和反变换的SIMD优化方法,首先对输入数据进行预处理,将数据从内存装载进寄存器,视为数据矢量,对矢量数据进行交织和重新排列组合,对于垂直方向的DCT变换,将数据进行右移舍入以适应有限的寄存器位宽,提高计算并行度;然后对预处理后的数据进行蝶形运算,逐级计算对应数据的和差;而后执行点乘运算,计算蝶形运算得到的中间值和相应的变换系数乘积的和,得到输入数据和变换矩阵的乘积;最后,对矩阵乘积结果进行舍入计算,满足输出数据的位宽限定并输出。本发明在Tilera平台上能够有效加速HEVC/H.265视频编码器的DCT变换反变换模块,获得较好的加速优化效果。

Description

HEVC/H.265的DCT变换和反变换的SIMD优化方法
技术领域
本发明涉及视频编码技术领域,具体地,涉及一种HEVC/H.265视频编码标准的DCT变换和反变换的SIMD加速优化方法(基于Tilera平台),利用Tilera的SIMD指令集实现HEVC的DCT变换和反变换模块,提高运行速度。
背景技术
随着视频内容的增长和视频产品的迅速发展,视频内容产业链面临更大的压力,目前AVC(Advanced Video Coding)视频压缩技术已经不能满足视频传输的要求,更高效的视频压缩技术应运而生。不仅如此,未来视频市场趋于更高水平的要求已经超出了目前AVC编码能力的范围,比如3D TV和4K TV。对于4K TV,即使使用目前H.264方式编码,也需要24-32M码率,AVC已经成为4K TV业务发展的瓶颈。在此背景下,高效视频编码(HighEfficiency Video Coding,HEVC)这种新的视频编码标准应运而生。HEVC的发展最早追溯到2004年,经过近十年的发展,HEVC于2012年2月形成完整的委员会标准草案,并于2013年1月正式成为国际标准。HEVC的目标是编码效率比AVC提高50%,复杂度比AVC复杂2到10倍。HEVC未来的业务主要面向高清、超高清、3D TV,数据量比以往视频大得多,另外HEVC要求大大提高视频压缩比,而高压缩算法是以增加算法复杂度为代价的,考虑到这两个方面的因素,HEVC编码器对***的计算性能提出了更高的要求。
为降低HEVC编码复杂度,通常有算法优化、指令集优化、并行优化等方法,其中指令集优化是利用计算平台的指令集实现计算模块,SIMD(single instruction multipledata)单指令多数据技术能在一个指令周期内并行处理多个数据的计算,相比于常规的实现方案能大大减少指令周期,提高运行速度,同时能保证计算结果准确无误。在视频编码中,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)>>shift
offset=(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中对数据进行转置变换操作的示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
如图1、2所示,本实施例提供一种HEVC/H.265的DCT变换和反变换的SIMD优化方法(基于Tilera平台),具体实施步骤如下:
步骤(1)、将一维DCT输入数据从内存装载进寄存器,视为矢量数据;具体的:
从输入数据所在的内存块中批量读取数据,将相邻的多个低位宽输入数据装载进64bit寄存器,装载成一个数据矢量。
步骤(2)、对矢量数据重新排列组合,执行蝶形运算,对输入数据逐级加减,计算出中间变量矢量,如图3所示;具体的:
HEVC的DCT变换系数有很强的奇偶对称性,利用这种对称性,先对数据进行逐级的加法和减法,然后将其和相应的系数做乘积,这样能有效减少乘法运算,这就是蝶形运算的原理。从内存装载进寄存器的数据矢量不能直接进行加减,矢量数据需要进行一定的重新排列组合,使其符合需要的运算规则,然后执行后续的计算流程。在Tilera平台上有相应的指令,支持两个64bit数据的中任意byte的排列组合。
在后续的步骤中,数据需要不断地进行排列组合,以满足相应的运算规则。
随后利用并行加减指令,完成矢量的加减法,这样一次指令能同时完成多个数据的加法和减法,减少指令周期,实现加速。随着DCT变换块的增大,中间变量的计算级数也会增大,在逐级计算中间变量的过程中需要对计算结果进行重新排列和组合,使其满足后续运算规则。
步骤(3)、如果该一维DCT变换时水平方向变换,直接跳到步骤(5),如图4所示;具体的:
水平方向和竖直方向一维DCT变换的输入变量shift是不同的,通过判断输入变量shift值的大小可以判断其是水平方向还是竖直方向的一维DCT变换。
步骤(4)、对中间变量进行右移舍入运算,限制其位宽,如图4所示;具体的:
二维的DCT变换由两个方向的一维DCT变换组成:水平方向DCT变换和竖直方向的DCT变换。HEVC中,先执行水平方向的一维DCT变换,其输入数据为像素值的残差,为9bit位宽的有符号数。在蝶形运算逐级计算中间变量的过程中,能保证中间变量位宽在16bit内。但是在执行竖直方向一维DCT变换时,其输入是水平方向DCT变换的输出,位宽为16bit,这样其蝶形运算的中间变量不能用16bit位宽保存,否则出现严重的溢出错误。如果用32位保存,则并行性下降,不能起到很好的加速效果。为了解决这一问题,对中间变量进行右移舍入,舍弃低位bit,使其能用16bit位宽保存,通过一定的舎位误差代价换取并行性。
具体的右移计算如式(1):
y=(x+(1<<(MIVO-1)))>>MIVO (1)
其中:x为需要进行右移舍入的数据,MIVO为中间变量最大阶数,y是执行完右移舍入后的结果。
此外输入变量shift值也要根据MIVO做相应的调整,使其能抵消中间变量的右移舍入。
步骤(5)、将中间变量矢量和对应的系数矢量进行点乘运算,如图5中(a)和(b)所示;具体的:
Tilera平台提供矢量点乘运算指令,一条指令能执行多个数据的点乘求和运算,起到很好的加速效果。
对于计算四个中间变量和相应系数的点乘,直接采用一条指令执行四元矢量点乘便可以完成;对于四个以上中间变量和相应系数的点乘,可以通过多次的四元矢量点乘完成;对于计算两个中间变量和相应系数的点乘,Tilera没有直接的指令,本发明采用并行的乘法和加法指令完成。
中间变量的点乘计算是DCT变换的核心计算部分,乘法复杂度高,执行点乘计算之前的操作都是为了准备数据,适应点乘指令的计算规则。
步骤(6)、将点乘运算的结果进行重新排列组合,执行右移舍入,输出结果保存至目标内存,如图6所示;具体的:
基于HEVC的规定,一维DCT变换的输出位宽为16bit,执行完点乘计算的结果为32bit,需要执行舍入运算,保存为16bit;HEVC的舍入计算如式(2):
y=(x+offset)>>shift
offset=(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是执行右移舍入操作产生的最大误差。
将步骤(5)得到的点乘结果保存为32bit数据,一个64bit寄存器保存两个点乘结果,对点乘结果先并行加上偏移值offset,然后并行右移shift,便得到16bit的输出结果。对输出结果进行重新排列和组合,最后保存至输出内存空间,完成输出。
上述为一维DCT变换的详细步骤,一维IDCT是一维DCT的反向运算,其具体流程与DCT变换类似,区别在于对输入数据需要进行转置,具体如图7所示。一维DCT中用于一次点乘计算的数据在内存分布上是连续的,因此可以直接装载进寄存器用于计算;而一维IDCT中用于一次点乘计算的输入数据在内存分布上不连续,装载进寄存器后不能直接用于计算;本发明将装载进寄存器的内存分布相邻的矢量数据逐级两两交织,最终达到转置的效果,即四个四元矢量的第n(1,2,3,4)个元素,组成第n个新的四元矢量,通过转置后的数据矢量就能直接用于后续计算。
本发明在Tilera平台上能够有效加速HEVC/H.265视频编码器的DCT变换反变换模块,获得较好的加速优化效果,降低HEVC编码复杂度。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。

Claims (6)

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所述的一种HEVC/H.265的DCT变换和反变换的SIMD优化方法,其特征在于,所述第四步中,具体的右移计算如式(1):
y=(x+(1<<(MIVO-1)))>>MIVO (1)
其中:x为需要进行右移舍入的数据,MIVO为中间变量最大阶数,y是执行完右移舍入后的结果;
同时,输入变量shift值也要根据MIVO做相应的调整,使其能抵消中间变量的右移舍入,shift值是DCT输出时需要将数据右移舍入的位数。
5.根据权利要求1所述的一种HEVC/H.265的DCT变换和反变换的SIMD优化方法,其特征在于,所述第六步中,采用并行的加法和右移运算以及数据重组,并行完成对点乘计算结果进行右移舍入操作。
6.根据权利要求5所述的一种HEVC/H.265的DCT变换和反变换的SIMD优化方法,其特征在于,所述第六步中,右移舍入计算如式(2):
式中:x是需要执行右移舍入的数据,y是执行完右移舍入的结果;offset是用于四舍五入的补偿值,由右移位数shift推导而来,shift值由DCT变换块的大小N(4,8,16,32)和数据位宽B(8bit,10bit)推导而来,水平方向horizontal的shift值和N,B有关,而竖直方向vertical的shift值和N有关,根据shift值的不同来判断一维DCT变换的方向:水平还是竖直;error是执行右移舍入操作产生的最大误差。
CN201410608208.1A 2014-10-31 2014-10-31 Hevc/h.265的dct变换和反变换的simd优化方法 Active CN104320668B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410608208.1A CN104320668B (zh) 2014-10-31 2014-10-31 Hevc/h.265的dct变换和反变换的simd优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410608208.1A CN104320668B (zh) 2014-10-31 2014-10-31 Hevc/h.265的dct变换和反变换的simd优化方法

Publications (2)

Publication Number Publication Date
CN104320668A CN104320668A (zh) 2015-01-28
CN104320668B true CN104320668B (zh) 2017-08-01

Family

ID=52375825

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410608208.1A Active CN104320668B (zh) 2014-10-31 2014-10-31 Hevc/h.265的dct变换和反变换的simd优化方法

Country Status (1)

Country Link
CN (1) CN104320668B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104683817B (zh) * 2015-02-11 2017-12-15 广州柯维新数码科技有限公司 基于avs的并行变换和反变换方法
CN104811738B (zh) * 2015-04-23 2017-11-03 中国科学院电子学研究所 基于资源共享的低开销多标准8×8一维离散余弦变换电路
CN105847840B (zh) * 2015-11-18 2018-12-07 西安邮电大学 一种用于高效视频编码反变换运算的并行结构构造方法
CN110737869B (zh) * 2019-12-20 2020-04-03 眸芯科技(上海)有限公司 Dct/idct乘法器电路优化方法及应用

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7873812B1 (en) * 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
CN103092559A (zh) * 2013-01-30 2013-05-08 上海交通大学 用于hevc标准下dct/idct电路的乘法器结构
CN103535041A (zh) * 2011-05-19 2014-01-22 索尼公司 图像处理装置和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7873812B1 (en) * 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
CN103535041A (zh) * 2011-05-19 2014-01-22 索尼公司 图像处理装置和方法
CN103092559A (zh) * 2013-01-30 2013-05-08 上海交通大学 用于hevc标准下dct/idct电路的乘法器结构

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Acceleration of HEVC Transform and Inverse;Hui Yong;《Intelligent Signal Processing and Communication Systems(ISPACS),2013 International Symposium on》;20131115;第170页第2栏3行到171页1栏倒数第2行,第172页第11行 *
基于SIMD 架构的二维DCT/IDCT 变换电路模块的设计与实现;彭永克;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20091215;全文 *

Also Published As

Publication number Publication date
CN104320668A (zh) 2015-01-28

Similar Documents

Publication Publication Date Title
CN101330616B (zh) 视频解码过程中反离散余弦变换的硬件实现装置及方法
CN104320668B (zh) Hevc/h.265的dct变换和反变换的simd优化方法
CN106066783A (zh) 基于幂次权重量化的神经网络前向运算硬件结构
CN101282476B (zh) 应用于视频和图像处理的变换方法
CN104867165B (zh) 一种基于变换域下采样技术的图像压缩方法
CN106254883B (zh) 一种视频解码中的反变换方法和装置
CN104244010A (zh) 提高数字信号变换性能的方法及数字信号变换方法和装置
CN101188761A (zh) Avs标准中基于并行处理来优化dct快速算法的方法
CN102547263B (zh) 可变复杂度的离散余弦逆变换查表快速算法
CN102595112B (zh) 视频编码中编码和重建图像块的方法
CN103092559B (zh) 用于hevc标准下dct/idct电路的乘法器结构
CN104378641A (zh) Hevc/h.265的亚像素插值的simd快速实现方法
CN113743593B (zh) 神经网络量化方法、***、存储介质及终端
CN104661036A (zh) 用于视频编码的方法和***
CN104683817B (zh) 基于avs的并行变换和反变换方法
CN108184127A (zh) 一种可配置的多尺寸dct变换硬件复用架构
Zhang et al. SIMD acceleration for HEVC encoding on DSP
CN101268623B (zh) 用于创建可变形状区块的方法和装置
CN101964912A (zh) 一种在mpeg2中游程编码快速计算游程长度的方法
CN102447898B (zh) 用fpga实现klt变换的方法
CN206962992U (zh) 用于数字视频编解码的3乘3整数dct变换量化器
CN104683800A (zh) 基于avs的并行量化和反量化方法
CN101583038A (zh) Satd快速实现的硬件架构
CN103327332A (zh) 一种hevc标准中8×8idct变换的实现方法
CN101977318A (zh) Dct量化的并行装置及其方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant