CN105791871A - 一种离散余弦变换dct装置及应用方法 - Google Patents
一种离散余弦变换dct装置及应用方法 Download PDFInfo
- Publication number
- CN105791871A CN105791871A CN201410830066.3A CN201410830066A CN105791871A CN 105791871 A CN105791871 A CN 105791871A CN 201410830066 A CN201410830066 A CN 201410830066A CN 105791871 A CN105791871 A CN 105791871A
- Authority
- CN
- China
- Prior art keywords
- added
- odd number
- adder
- number part
- coefficient
- 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.)
- Pending
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及视频编解码技术,公开了一种DCT装置及应用方法,用以降低硬件设计复杂度和成本。该装置至少包括:两组乘法器、四列加法器和第一处理器,其中,两组乘法器用于对IDCT 32x32输入数据的偶数部分和奇数部分分别进行系数转换;四列加法器,对经系数转换的偶数部分分别进行四次两两加和,以及对经系数转换的奇数部分分别进行两两加和,第一处理器,用于将经两两加和处理的偶数部分和奇数部分相加和相减,获得IDCT 32x32两个像素点的变换结果,这样,能够大大节省运算开销,以及节省硬件成本,并且电路复用性强,从而为HEVC整数变换找到了较佳的解决方案。
Description
技术领域
本发明涉及视频编解码技术,特别涉及一种离散余弦变换DCT装置及应用方法。
背景技术
高效视频编码(HighEfficiencyVideoCoding,HEVC)是开发的下一代视频标准,被认为是H.264/AVC的继任者,其旨在相比H.264/AVC标准在相同视频质量下压缩效率提高50%以及支持更高的视频分辨率。
为此HEVC提出了更大的宏块型号,如,最大编码单元〔(LargestCodingUnit,LCU)最大可以到64x64〕,以支持4x4,8x8,16x16,32x32四种可变的变换size。提高了压缩性能的同时却增加了计算复杂度。
离散余弦变换(DiscreteCosineTransform,DCT)变换常被应用在视频编解码领域将视频残差能量压缩集中到低频分量,MPEG2和MPEG4都是采用浮点DCT运算,为避免编解码端浮点运算操作的不匹配问题,新的视频标准比如VC1,H264,AVS都是采用整数DCT变换。
这样,可以获得更好的能量压缩效果,但是计算复杂度成指数倍的增大,因此传统的视频标准在编码效率和实现复杂度上权衡选择4x4,8x8变换size,而HEVC采用了新的编码工具其中就包括支持16x16,32x32的变换大小。
现有技术下,正向离散余弦变换(ForwardDiscreteCosineTransform,FDCT)和逆向离散余弦变换(InverseDiscreteCosineTransform,IDCT)是两种重要的视频编解码算法,前者用于将残差数据从时域变换到频域的变换系统,后者用于将变换系数从频域变换到时域的残差数据。二维(2D)FDCT/IDCT变换可以分解为一次一维行变换和一次一维列变换,参阅图1所示,行变换和列变换运算共用一块硬件资源进行运算。因此如何高效实现视频编解码可以归结为如何高效的实现HEVC1DFDCT/IDCT。
HEVC整数变换其实就是输入数据和变换系数的乘加运算,由于变换系数的对称性和嵌套性(即Butterfly蝶形算法),可以减少部分运算得到相同的运算结果。为实现时钟频率为400MH的1080P60fps(1080p超高清兼60帧每秒)实时解码,则需达到对每个16x16块的处理过程要小于800个循环(cycle),即每个32x32块的变换过程小于3200个cycle。因为FDCT/IDCT模块请求数据,行列变换切换,以及16x16、32x32块内部流水切换也需要消耗多余的cycle。
然而,现有技术下,通常采用无源乘法器和有源乘法器来实现FDCT/IDCT算法。其中,无源乘法器只适用于实现4点和8点的IDCT。而16点和32点IDCT更适于用有源乘法器实现。
例如,在采用IDCT算法时,输入的残差数据为16bit,而采用的变换系数为8bit。如果采用有源乘法器其乘法运算只需消耗一个16bitx8bit的乘法器,而如果采用无源乘法器,则需要消耗4个22bit左右的加法器。
假设输入数据为a,变换系数为90,则a*90=(a<<6)+(a<<4)+(a<<3)+(a<<1)(90的2进制表示为0101_1010,第1、3、4、6bit为1,硬件上就一般都是通过这种移位相加的做法实现a*90,本文公式中的*代表乘法)。
如果采用无源乘法器进行移位加来实现IDCT算法,则需要针对每一个不同的变换系数设计一套对应的移位加电路(如,如果系数不是90,而是16,那么相应的硬件电路也要变化)。而如果采用有源乘法器来实现IDCT算法,那么,乘法器的输入系数是可变的,就无需多增加电路。因此,有源乘法器从可复用性、资源消耗、关键路径等方面考虑都优于后者。
蝶形算法利用变换矩阵的对称性和嵌套性来减少运算量,这在软件实现方面有优势,用更少的cycle数算出更多的结果,能大幅提升吞吐量和性能。当然在硬件实现时它也能减少硬件运算资源的消耗,但是它存在一个算法上的缺点,就是偶数部分比奇数部分获得计算结果的速度快,造成偶数部分的计算结果需用寄存器寄存起来,在某个状态时进行addsub运算出计算结果继续寄存起来用于计算下个addsub结果,因此,由于delay增加的寄存器和由于状态复杂增加的选择器造成了对硬件的额外负担。
发明内容
本发明实施例提供一种DCT装置及应用方法,用以降低硬件设计复杂度和成本。
本发明实施例提供的具体技术方案如下:
第一方面、一种DCT装置,至少包括:
两组乘法器,用于对IDCT32x32输入数据的偶数部分和奇数部分分别进行系数转换;
第一列加法器,用于对经系数转换的偶数部分进行两两加和,以及对经系数转换的奇数部分进行两两加和;
第二列加法器,用于对经第一列加法器处理的偶数部分进行两两加和,以及对经第一列加法器处理的奇数部分进行两两加和;
第三列加法器,用于对经第二列加法器处理的偶数部分进行两两加和,以及对经第二列加法器处理的奇数部分进行两两加和;
第四列加法器,用于对经第三列加法器处理的偶数部分进行两两加和,以及对经第三列加法器处理的奇数部分进行两两加和;
第一处理器,用于将经第三列加法器处理的偶数部分和奇数部分相加,以及将经第三列加法器处理的偶数部分和奇数部分相减,获得IDCT32x32两个像素点的变换结果。
这样,采用本发明实施例设计的电路实现IDCT/FDCT,能够大大节省运算开销,以及节省硬件成本,并且电路复用性强,从而为HEVC整数变换找到了较佳的解决方案。
可选的,
所述两组乘法器进一步用于,对IDCT16x16输入数据分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和;
所述第三列加法器进一步用于,对经第二列加法器处理的数据部分进行两两加和;
所述第四列加法器进一步用于,对经第三列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为IDCT16x16一个像素点的变换结果。
可选的,
所述两组乘法器进一步用于,对至少两组IDCT16x16输入数据的奇数部分和偶数部分分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的每一组偶数部分分别进行两两加和,以及对经系数转换的每一组奇数部分分别进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的每一组偶数部分分别进行两两加和,以及对经第一列加法器处理的每一组奇数部分分别进行两两加和;
所述第三列加法器进一步用于,对经第二列加法器处理的每一组偶数部分分别进行两两加和,以及对经第二列加法器处理的每一组奇数部分分别进行两两加和;
所述第一处理器进一步用于,用于分别将归属于同一组的经第三列加法器处理的偶数部分和奇数部分相加,以及分别将归属于同一组的经第三列加法器处理的偶数部分和奇数部分相减,获得IDCT16x16四个像素点的变换结果。
可选的,
所述两组乘法器组进一步用于,对IDCT8x8输入数据进行系数转换;
所述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和;
所述第三列加法器进一步用于:对经第二列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为IDCT8x8一个像素点的变换结果。
可选的,
所述两组乘法器进一步用于,对至少两组IDCT8x8输入数据的奇数部分和偶数部分分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的每一组偶数部分分别进行两两加和,以及对经系数转换的每一组奇数部分分别进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的每一组偶数部分分别进行两两加和,以及对经第一列加法器处理的每一组奇数部分分别进行两两加和;
所述第一处理器进一步用于,用于分别将归属于同一组的经第二列加法器处理的偶数部分和奇数部分相加,以及分别将归属于同一组的经第二列加法器处理的偶数部分和奇数部分相减,获得IDCT8x8八个像素点的变换结果。
可选的,
所述两组乘法器进一步用于,对IDCT4x4输入数据分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为IDCT4x4一个像素点的变换结果。
可选的,
所述两组乘法器进一步用于,对至少两组IDCT4x4输入数据的奇数部分和偶数部分分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的每一组偶数部分分别进行两两加和,以及对经系数转换的每一组奇数部分分别进行两两加和;
所述第一处理器进一步用于,用于分别将归属于同一组的经第二列加法器处理的偶数部分和奇数部分相加,以及分别将归属于同一组的经第二列加法器处理的偶数部分和奇数部分相减,获得IDCT4x4十六个像素点的变换结果。
第二方面、一种DCT装置,至少包括:
第二处理器,用于对FDCT32x32输入数据进行加减运算,分为偶数部分和奇数部分;
两组乘法器,用于对FDCT32x32输入数据的偶数部分和奇数部分分别进行系数转换;
第一列加法器,用于对经系数转换的偶数部分进行两两加和,以及对经系数转换的奇数部分进行两两加和;
第二列加法器,用于对经第一列加法器处理的偶数部分进行两两加和,以及对经第一列加法器处理的奇数部分进行两两加和;
第三列加法器,用于对经第二列加法器处理的偶数部分进行两两加和,以及对经第二列加法器处理的奇数部分进行两两加和;
第四列加法器,用于对经第三列加法器处理的偶数部分进行两两加和,以及对经第三列加法器处理的奇数部分进行两两加和,获得FDCT32x32两个像素点的变换结果。
这样,采用本发明实施例设计的电路实现IDCT/FDCT,能够大大节省运算开销,以及节省硬件成本,并且电路复用性强,从而为HEVC整数变换找到了较佳的解决方案。
可选的,
所述两组乘法器进一步用于,直接接收FDCT16x16输入数据,并对所述FDCT16x16输入数据分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和;
所述第三列加法器进一步用于,对经第二列加法器处理的数据部分进行两两加和;
所述第四列加法器进一步用于,对经第三列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为FDCT16x16规格一个像素点的变换结果。
可选的,
所述两组乘法器进一步用于,直接接收FDCT8x8输入数据,并对所述FDCT8x8输入数据分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和;
所述第三列加法器进一步用于,对经第二列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为FDCT8x8规格一个像素点的变换结果。
可选的,
所述两组乘法器进一步用于,直接接收FDCT4x4输入数据,并对所述FDCT4x4输入数据分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为FDCT4x4规格一个像素点的变换结果。
第三方面、一种DCT装置,至少包括第一处理器、第二处理器、两组乘法器和四列加法器,其中,
当执行换IDCT时,所述第一处理器、所述两组乘法器和所述四列加法器处于工作状态,实现上述第一种DCT装置的任意一种功能;
当执行FDCT时,所述第二处理器、所述两组乘法器和所述四列加法器处于工作状态,实现上述第二种DCT装置的任意一种功能。
这样,采用本发明实施例设计的电路实现IDCT/FDCT,能够大大节省运算开销,以及节省硬件成本,并且电路复用性强,从而为HEVC整数变换找到了较佳的解决方案。
第四方面、一种DCT方法,包括:
对IDCT32x32输入数据的偶数部分和奇数部分分别进行系数转换;
对经系数转换的偶数部分进行第一次两两加和,以及对经系数转换的奇数部分进行第一次两两加和;
对经第一次两两加和的偶数部分进行第二次两两加和,以及对经第一次两两相加的奇数部分进行第二次两两加和;
对经第二次两两加和的偶数部分进行第三次两两加和,以及对经第二次两两相加的奇数部分进行第三次两两加和;
对经第三次两两加和的偶数部分进行第四次两两加和,以及对经第三次两两相加的奇数部分进行第四次两两加和;
将经第四次两两加和的偶数部分和奇数部分相加,以及将经第四次第三列加法器处理的偶数部分和奇数部分相减,获得IDCT32x32两个像素点的变换结果。
这样,能够大大节省运算开销,以及节省硬件成本,并且电路复用性强,从而为HEVC整数变换找到了较佳的解决方案。
可选的,进一步包括:
对IDCT16x16输入数据分别进行系数转换;
对经系数转换的数据部分进行第一次两两加和;
对经第一次两两加和的数据部分进行第二次两两加和;
对经第二次两两加和的数据部分进行第三次两两加和;
对经第三次两两加和的数据部分进行第四次两两加和,并将每一个加和结果直接输出分别作为IDCT16x16一个像素点的变换结果。
可选的,进一步包括:
对至少两组IDCT16x16输入数据的奇数部分和偶数部分分别进行系数转换;
对经系数转换的每一组偶数部分分别进行第一次两两加和,以及对经系数转换的每一组奇数部分分别进行第一次两两加和;
对经第一次两两加和的每一组偶数部分分别进行第二次两两加和,以及对经第一次两两加和的每一组奇数部分分别进行第二次两两加和;
对经第二次两两加和的每一组偶数部分分别进行第三次两两加和,以及对经第二次两两加和的每一组奇数部分分别进行第三次两两加和;
用于分别将归属于同一组的经第三次两两加和的偶数部分和奇数部分相加,以及分别将归属于同一组的经第三次两两加和的偶数部分和奇数部分相减,获得IDCT16x16四个像素点的变换结果。
可选的,进一步包括:
对IDCT8x8输入数据进行系数转换;
对经系数转换的数据部分进行第一次两两加和;
对经第一次两两加和的数据部分进行第二次两两加和;
对经第二次两两加和的数据部分进行第三次两两加和,并将每一个加和结果直接输出分别作为IDCT8x8一个像素点的变换结果。
可选的,进一步包括:
对至少两组IDCT8x8输入数据的奇数部分和偶数部分分别进行系数转换;
对经系数转换的每一组偶数部分分别进行第一次两两加和,以及对经系数转换的每一组奇数部分分别进行第一次两两加和;
对经第一次两两加和的每一组偶数部分分别进行第二次两两加和,以及对经第一次两两加和的每一组奇数部分分别进行第二次两两加和;
用于分别将归属于同一组的经第二次两两加和的偶数部分和奇数部分相加,以及分别将归属于同一组的经第一次两两加和的偶数部分和奇数部分相减,获得IDCT8x8八个像素点的变换结果。
可选的,进一步包括:
对IDCT4x4输入数据分别进行系数转换;
对经系数转换的数据部分进行第一次两两加和;
对经第一次两两加和的数据部分进行两两加和,并将每一个加和结果直接输出分别作为IDCT4x4一个像素点的变换结果。
可选的,进一步包括:
对至少两组IDCT4x4输入数据的奇数部分和偶数部分分别进行系数转换;
对经系数转换的每一组偶数部分分别进行第一次两两加和,以及对经系数转换的每一组奇数部分分别进行第一次两两加和;
用于分别将归属于同一组的经第一次两两加和的偶数部分和奇数部分相加,以及分别将归属于同一组的经第一次两两加和的偶数部分和奇数部分相减,获得IDCT4x4十六个像素点的变换结果。
第五方面、一种DCT方法,包括:
对FDCT32x32输入数据进行加减运算,分为偶数部分和奇数部分;
对FDCT32x32输入数据的偶数部分和奇数部分分别进行系数转换;
对经系数转换的偶数部分进行第一次两两加和,以及对经系数转换的奇数部分进行第一次两两加和;
对经第一次两两加和的偶数部分进行第二次两两加和,以及对经第一次两两加和的奇数部分进行第二次两两加和;
对经第二次两两加和的偶数部分进行第三次两两加和,以及对经第二次两两加和的奇数部分进行第三次两两加和;
对经第三次两两加和的偶数部分进行第四次两两加和,以及对经第三次两两加和的奇数部分进行第四次两两加和,获得FDCT32x32两个像素点的变换结果。
这样,能够大大节省运算开销,以及节省硬件成本,并且电路复用性强,从而为HEVC整数变换找到了较佳的解决方案。
可选的,进一步包括:
直接接收FDCT16x16输入数据,并对所述FDCT16x16输入数据分别进行系数转换;
对经系数转换的数据部分进行第一次两两加和;
对经第一次两两加和的数据部分进行第二次两两加和;
对经第二次两两加和的数据部分进行第三次两两加和;
对经第三次两两加和的数据部分进行第四次两两加和,并将每一个加和结果直接输出分别作为FDCT16x16规格一个像素点的变换结果。
可选的,进一步包括:
直接接收FDCT8x8输入数据,并对所述FDCT8x8输入数据分别进行系数转换;
对经系数转换的数据部分进行第一次两两加和;
对经第一次两两加和的数据部分进行第二次两两加和;
对经第二次两两加和的数据部分进行第三次两两加和,并将每一个加和结果直接输出分别作为FDCT8x8规格一个像素点的变换结果。
可选的,进一步包括:
直接接收FDCT4x4输入数据,并对所述FDCT4x4输入数据分别进行系数转换;
对经系数转换的数据部分进行第一次两两加和;
对经第一次两两加和的数据部分进行第二次两两加和,并将每一个加和结果直接输出分别作为FDCT4x4规格一个像素点的变换结果。
第六方面、一种DCT方法,包括:
当执行IDCT时,执行上述第一种方法中的任意一种执行方式;
当执行FDCT时,执行上述第二种方法中的任意一种执行方式。
附图说明
图1为现有技术下FDCT/IDCT.电路实现原理图;
图2为本发明实施例中IDCT电路示意图;
图3为本发明实施例中FDCT电路示意图;
图4为本发明实施例中FDCT/IDCT复合电路示意图;
图5为本发明实施例中16x16IDCT电路工作原理示意图;
图6为本发明实施例中8x8IDCT电路工作原理示意图;
图7为本发明实施例中IDCT方法流程图;
图8为本发明实施例中FDCT方法流程图。
具体实施方式
为了降低硬件设计复杂度和成本,本发明实施例中,提供了一种高性能低成本的实现HEVCFDCT/IDCT变换的硬件电路结构,其规格为支持实时解码1080P60fps,时钟频率400MHZ。
下面结合附图对本发明优选的实施方式进行详细介绍。
本发明实施例中,设计了1DFDCT/IDCT需通过2pixel/cycle完成,也就是说每行4点、8点、16点和32点的FDCT/IDCT分别要通过2个、4个、8个和16个cycle实现,旨在提出一种高效的高性能,高吞吐量,低面积,低功耗的HEVC整数变换解决方案。
目前,可以获知在进行视频解码时,可以利用对称性来分别计算奇数点和偶数点,从而减少了一半乘法和加法运算,最后通过addsub运算求最终变换结果,而偶数点的计算结果又可以通过嵌套性利用低阶变换的对称性,计算低阶变换的奇数点和偶数点,进一步减少乘法和加法运算;这就是Butterfly的原理。
现有技术下曾提及使用Butterfly的缺点是增加了很多寄存器,很多状态选择器等硬件负担,有鉴于此,本发明实施例中,采用了32个乘法器(分为两组,一组16个),只利用IDCT32x32的对称性,其他IDCT16x16,8x8,4x4都是直接运算不用Butterfly优化。相比蝶形算法,本发明使用对称结构的方式计算IDCT32x32的奇数部分和偶数部分,保证奇数部分和偶数部分能够在同一个cycle产生,从而可以节省蝶形算法所需的大量寄存器。
参阅图2所示,本发明实施例中,实现IDCT算法的电路结构图如下:
该电路中至少包括有:
两组乘法器,用于对IDCT32x32输入数据的偶数部分和奇数部分分别进行系数转换;
第一列加法器,用于对经系数转换的偶数部分进行两两加和,以及对经系数转换的奇数部分进行两两加和;
第二列加法器,用于对经第一列加法器处理的偶数部分进行两两加和,以及对经第一列加法器处理的奇数部分进行两两加和;
第三列加法器,用于对经第二列加法器处理的偶数部分进行两两加和,以及对经第二列加法器处理的奇数部分进行两两加和;
第四列加法器,用于对经第三列加法器处理的偶数部分进行两两加和,以及对经第三列加法器处理的奇数部分进行两两加和;
第一处理器,用于将经第四列加法器处理的偶数部分相加,以及将经第四列加法器处理的奇数部分相减,获得IDCT32x32两个像素点的变换结果。
基于上述实施例,实际应用中,上述电路结构还可以进行复用:
第一种复用方式为:
上述两组乘法器进一步用于,对IDCT16x16输入数据分别进行系数转换;上述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;上述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和;上述第三列加法器进一步用于,对经第二列加法器处理的数据部分进行两两加和;上述第四列加法器进一步用于,对经第三列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为IDCT16x16一个像素点的变换结果(至少可以获得两个像素点的变换结果)。
第二种复用方式为:
上述两组乘法器进一步用于,对IDCT8x8输入数据进行系数转换;上述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;上述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和;上述第三列加法器进一步用于:对经第二列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为IDCT8x8一个像素点的变换结果(至少可以获得两个像素点的变换结果)。
第三种复用方式为:
上述两组乘法器组进一步用于,对IDCT4x4输入数据分别进行系数转换;上述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;上述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为IDCT4x4一个像素点的变换结果(至少可以获得两个像素点的变换结果)。
例如,参阅图2所示,以处理32x32的视频数据为例。
本发明实施例中,设置了两组乘法器,分别称为乘法器组1和乘法器组2,每组乘法器中设置有16个乘法器,32x32的视频数据分32次依次输入乘法器组1和乘法器组2,每次的输入数据为32个,乘法器组1和乘法器组2分别处理16个输入数据,即每一个乘法器处理1个输入数据。
输入数据的偶数部分(16个输入数据)先经乘法器组1进行系数转换(每一个输入数据分别经过相应的一个乘法器乘以对应的系数),再由第一列加法器中的加法器11-18对经乘法器组1处理的偶数部分进行两两相加,以及由第二列加法器中的加法器31-34对经加法器11-18处理的偶数部分再次进行两两相加;接着,由第三列加法器中的加法器51-52对经加法器31-34处理的偶数部分再次进行两两相加,以及由第四列加法器中的加法器71对经加法器51-52处理的偶数部分进行两两相加。
输入数据的奇数部分(16个输入数据)先经乘法器组2进行系数转换(每一个输入数据分别经过相应的一个乘法器自乘以对应的系数),再由第一列加法器中的加法器21-28对经乘法2处理的奇数部分进行两两相加,以及由第二列加法器中的加法器41-44对经加法器21-28处理的奇数部分再次进行两两相加;接着,由第三列加法器中的加法器61-62对经加法器41-44处理的奇数部分再次进行两两相加,以及由第四列加法器中的加法器81对经加法器61-62处理的奇数部分进行两两相加。
最后,由第一处理器91(即一个Butterfly)将经第四列加法器中的加法器71处理获得的偶数部分(即Reg_16)的经第四列加法器中的加法器81处理获得的奇数部分(即Reg_16)进行蝶形运算,即将上述偶数部分和奇数部分相加获得最终变换结果中的一个像素点,以及将上述偶数部分和奇数部分相减获得最终变换结果中的一个像素点,这样,便获得32x32视频变换结果中的两个个像素点,
如图2所示,图中一列点状图案填充的部分分别表示一个流水级(即一个cycle),其中,寄存器Even_reg0-15与乘法器组1(即multi3_0)相连接,而寄存器Odd_reg0-15与乘法器组(即multi3_1)相连接,所有的寄存器表示一个流水级,乘法器组1和乘法器组2是根据变换单元(TransformUnit,TU)划分(TU是HEVC标准里的用于DCT变换的基本单元,它可能是4x4、8x8、16x16、32x32的大小),根据奇偶,根据状态机所处状态选择系数的多路选择器,对IDCT32x32,每次输入的32个数据分奇偶输入multi3_0和multi3_1,分别选择系数相乘相加,对一组IDCT16x16输入数据、一组IDCT8x8输入数据、一组IDCT4x4输入数据,每次输入的16、8、4个数据都输入multi3_0和multi3_1(多余的乘法器闲置),选择不同系数相乘相加。可以看到最长的路径也就4个cycle可以做完,每个cycle可以计算出两个像素点。
由图2可知IDCT32x32的两个像素在第4个cycle计算获得,DCT16x16的两个像素点在第3个cycle计算获得,IDCT8x8的两个像素点在第2个cycle计算获得,IIDCT4x4的两个像素点在第1个cycle计算获得。
由此可以看出,本发明实施例采用的算法架构简单,数据流程清晰。只需计算一个能够满足IDCT32x32的电路,即可以针对IDCT32x32、IDCT16x16、IDCT8x8、IDCT4x4进行计算,其中,只有IDCT32x32需采用Butterfly进行数据处理而获得最终的像素点,而IDCT16x16、IDCT8x8、IDCT4x4的像素点则可以视为IDCT32x32计算过程中获得的结果即可,即复用IDCT32x32的电路,从IDCT32x32的部分电路中直接获得结果。
在实际应用中,实测本发明实施例所采用的算法,对于IDCT32x32,亮度每行32个点16个Cycle完成,32行512个Cycle,色度每行16个点8个Cycle完成,16行256个Cycle,因此一轮变换需要768个Cycle,IDCT需要进行两轮运算(分别为列运算,行运算)才得到最后结果,。所以理论上需要1536个Cycle,但电路设计过程中会有一些读数及取数的开销,所以实际设计出来的电路是1600个Cycle,即IDCT32x32采用平均1600个cycle计算完毕,IDCT16x16平均480个cycle计算完毕,比预定的3200cycle和800cycle小很多,有充足的富余性能,性能比采用无源乘法器的高40%,跟采用Butterfly的性能相当,而电路占用面积比采用Butterfly的电路小20%,跟无源乘法器相当。因此,本发明实施例所采用的算法是高性能,低面积,可复用性强的HEVC整数变换的较佳解决方案,包括其他视频标准的整数变换以及HEVCFDCT变换都能轻易复用。
本发明实施例所采用的算法的创新点在于:并未像其他的硬件设计一样使用无源乘法器或者蝶形算法优化电路结构,因为这些传统算法会针对4x4,8x8,16x16,32x32块分别设计对应电路,尽管蝶形算法会复用某些电路但是复用性还是稍差,本算法只用考虑32x32块的电路,其他16x16块、8x8块、4x4块的电路全部可以复用该32x32电路中的乘法器组和加法器,最大限度的复用了32x32块的电路,截取其中一小段就能得到4x4块、8x8块和16x16块的计算结果,因此获得了比无源乘法器和蝶形电路更好的性能和使用更少的硬件资源。
进一步地,本发明实施例所采用的算法不仅可以应用于IDCT,同样可轻松应用于FDCT,其具体的电路结果图如图2所示:
该电路中至少包括有:
第二处理器,用于对FDCT32x32输入数据进行加减运算,分为偶数部分和奇数部分;
两组乘法器,用于对FDCT32x32输入数据的偶数部分和奇数部分分别进行系数转换;
第一列加法器,用于对经系数转换的偶数部分进行两两加和,以及对经系数转换的奇数部分进行两两加和;
第二列加法器,用于对经第一列加法器处理的偶数部分进行两两加和,以及对经第一列加法器处理的奇数部分进行两两加和;
第三列加法器,用于对经第二列加法器处理的偶数部分进行两两加和,以及对经第二列加法器处理的奇数部分进行两两加和;
第四列加法器,用于对经第三列加法器处理的偶数部分进行两两加和,以及对经第三列加法器处理的奇数部分进行两两加和,获得FDCT32x32两个像素点的变换结果。
基于上述实施例,实际应用中,上述电路结构还可以进行复用:
第一种复用方式为:
上述两组乘法器进一步用于,直接接收FDCT16x16输入数据,并对该FDCT16x16输入数据分别进行系数转换;上述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;上述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和;上述第三列加法器进一步用于,对经第二列加法器处理的数据部分进行两两加和;上述第四列加法器进一步用于,对经第三列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为FDCT16x16一个像素点的变换结果(至少可以获得两个像素点的变换结果)。
第二种复用方式为:
上述两组乘法器进一步用于,直接接收FDCT8x8输入数据,并对该FDCT8x8输入数据分别进行系数转换;上述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;上述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和;上述第三列加法器进一步用于,对经第二列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为FDCT8x8一个像素点的变换结果(至少可以获得两个像素点的变换结果)。
第三种复用方式为:
上述两组乘法器进一步用于,直接接收FDCT4x4输入数据,并对该FDCT4x4输入数据分别进行系数转换;上述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;上述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为FDCT4x4一个像素点的变换结果(至少可以获得两个像素点的变换结果)。
例如,参阅图3所示,对FDCT32X32,需对输入的32个残差数据先做加乘(addsub32)运算,如,in0和in31相加后的结果作为一个输入数据输入multi3_0,in0和in31相减后的结果作为一个输入数据输入multi3_1,以此类推,偶数部分结果(相加获得)E输入multi3_0,奇数部分结果(相减获得)O输入multi3_1,分别选择对应系数相乘,再经四列加法器分别进行两两相加,最后得到两个Reg_32,即FDCT32x32下至少两个像素点的变换结果。对于一组FDCT16x16输入数据、一组FDCT8x8输入数据、一组FDCT4x4输入数据,每次计算直接将16、8、4个残差数据输入E和O,E和O获取同样的输入数据,再采用不同的系数相乘,再经加法器(四列、三列、两列)分别进行两两相加,最后的结果分别在第4个cycle、第3个cycle、第2个cycle中得到,也是每个cycle计算获得至少两个像素点。
显然,FDCT32X32分奇偶部分,FDCT16X16,FDCT8x8,FDCT4x4分奇偶部分也可以,能够获得更多吞吐量,但实际应用中没必要分奇偶部分。
基于上述两个实施例,本发明实施例所提供的算法不仅可分别实现FDCT电路和IDCT电路,同样可方便应用于FDCT/IDCT复合电路,该电路常见于各硬件HEVC编码器,因为,所有HEVC编码都必须包含正变换和反变换。
参阅图4所示,FDCT/IDCT复用电路中至少包含有第一处理器、第二处理器、两组乘法器和四列加法器,其中,
当执行IDCT时,第一处理器(即处理器91)、两组乘法器和四列加法器处于工作状态,实现IDCT电路的任意一种功能,其工作原理如图2所示,在此不再赘述;
当执行FDCT时,第二处理器(即处理器101)、两组乘法器和所述四列加法器处于工作状态,实现FDCT电路的任意一种功能,其工作原理如图3所示,在此亦不再赘述。
采用本发明实施例提供的方法,不仅可实现实时解码1080P60fps,通过增加乘法器组(即multi3)的等相应计算单元的数量,同样可实现实时解码4K30fps,4K60fps。本实施例中,采用两个乘法器组仅为举例
在本发明实施例中,不仅可以通过增加计算单元来提升性能,进一步地,
也可以在几乎不增加硬件的情况下利用16x16,8x8,4x4块的对称性提升运算性能,或者,同时利用剩余的硬件提升性能(因为通常情况下计算8x8,4x4块的输入时并不是所有乘法器和加法器都投入运算,一个cycle只出两个像素点,显然,部分乘法器和加法器是闲置的,因此可以利用闲置的计算单元进行电路性能提升)
参阅图5和图6所示,在不增加硬件的情况下,利用16x16,8x8,4x4块的对称性提升电路性能的方式如下:
如图5所示,以IDCT16x16块为例(同样适用于FDCT16x16),通过增加输入数据的数量,如,采用两组输入数据,则可以在第3个cycle中计算出16x16规格下的4个像素点的变换结果。
具体为:
上述两组乘法器进一步用于,对至少两组IDCT16x16输入数据的奇数部分和偶数部分分别进行系数转换;上述第一列加法器进一步用于,对经系数转换的每一组偶数部分分别进行两两加和,以及对经系数转换的每一组奇数部分分别进行两两加和;上述第二列加法器进一步用于,对经第一列加法器处理的每一组偶数部分分别进行两两加和,以及对经第一列加法器处理的每一组奇数部分分别进行两两加和;上述第三列加法器进一步用于,对经第二列加法器处理的每一组偶数部分分别进行两两加和,以及对经第二列加法器处理的每一组奇数部分分别进行两两加和;上述第一处理器进一步用于,用于分别将归属于同一组的经第三列加法器处理的偶数部分和奇数部分相加,以及分别将归属于同一组的经第三列加法器处理的偶数部分和奇数部分相减,获得IDCT16x16四个像素点的变换结果。
如图6所示,以IDCT8x8块为例(同样适用于FDCT8x8),通过增加输入数据的数量,如,采用四组输入数据,则可以在第3个cycle中计算出8x8规格下的8个像素点的变换结果。
具体为:
上述两组乘法器进一步用于,对至少两组IDCT8x8输入数据的奇数部分和偶数部分分别进行系数转换;上述第一列加法器进一步用于,对经系数转换的每一组偶数部分分别进行两两加和,以及对经系数转换的每一组奇数部分分别进行两两加和;上述第二列加法器进一步用于,对经第一列加法器处理的每一组偶数部分分别进行两两加和,以及对经第一列加法器处理的每一组奇数部分分别进行两两加和;上述第一处理器进一步用于,用于分别将归属于同一组的经第二列加法器处理的偶数部分和奇数部分相加,以及分别将归属于同一组的经第二列加法器处理的偶数部分和奇数部分相减,获得IDCT8x8八个像素点的变换结果。
IDCT4x4块同理IDCT8x8块,通过增加输入数据的数量,如,采用四组输入数据,则可以在第2个cycle中计算出4x4规格下的16个像素点的变换结果。
具体为:
上述两组乘法器进一步用于,对至少两组IDCT4x4输入数据的奇数部分和偶数部分分别进行系数转换;上述第一列加法器进一步用于,对经系数转换的每一组偶数部分分别进行两两加和,以及对经系数转换的每一组奇数部分分别进行两两加和;上述第一处理器进一步用于,用于分别将归属于同一组的经第二列加法器处理的偶数部分和奇数部分相加,以及分别将归属于同一组的经第二列加法器处理的偶数部分和奇数部分相减,获得IDCT4x4十六个像素点的变换结果。
基于上述电路实施例中,参阅图7所示,本发明实施例中,实现IDCT的具体流程如下:
步骤700:对IDCT32x32输入数据的偶数部分和奇数部分分别进行系数转换。
步骤710:对经系数转换的偶数部分进行第一次两两加和,以及对经系数转换的奇数部分进行第一次两两加和。
步骤720:对经第一次两两加和的偶数部分进行第二次两两加和,以及对经第一次两两相加的奇数部分进行第二次两两加和。
步骤730:对经第二次两两加和的偶数部分进行第三次两两加和,以及对经第二次两两相加的奇数部分进行第三次两两加和。
步骤740:对经第三次两两加和的偶数部分进行第四次两两加和,以及对经第三次两两相加的奇数部分进行第四次两两加和。
步骤750:将经第四次两两加和的偶数部分和奇数部分相加,以及将经第四次第三列加法器处理的偶数部分和奇数部分相减,获得IDCT32x32两个像素点的变换结果。
基于上述实施例,可选的,进一步地,可以对IDCT16x16输入数据分别进行系数转换,接着,对经系数转换的数据部分进行第一次两两加和,对经第一次两两加和的数据部分进行第二次两两加和,对经第二次两两加和的数据部分进行第三次两两加和,最后,再对经第三次两两加和的数据部分进行第四次两两加和,并将每一个加和结果直接输出分别作为IDCT16x16一个像素点的变换结果。
基于上述实施例,可选的,进一步地,可以对至少两组IDCT16x16输入数据的奇数部分和偶数部分分别进行系数转换,接着,对经系数转换的每一组偶数部分分别进行第一次两两加和,以及对经系数转换的每一组奇数部分分别进行第一次两两加和,对经第一次两两加和的每一组偶数部分分别进行第二次两两加和,以及对经第一次两两加和的每一组奇数部分分别进行第二次两两加和,对经第二次两两加和的每一组偶数部分分别进行第三次两两加和,以及对经第二次两两加和的每一组奇数部分分别进行第三次两两加和,最后,分别将归属于同一组的经第三次两两加和的偶数部分和奇数部分相加,以及分别将归属于同一组的经第三次两两加和的偶数部分和奇数部分相减,获得IDCT16x16四个像素点的变换结果。
基于上述实施例,可选的,进一步地,可以对IDCT8x8输入数据进行系数转换,接着,对经系数转换的数据部分进行第一次两两加和,对经第一次两两加和的数据部分进行第二次两两加和,最后,再对经第二次两两加和的数据部分进行第三次两两加和,并将每一个加和结果直接输出分别作为IDCT8x8一个像素点的变换结果。
基于上述实施例,可选的,进一步地,可以对至少两组IDCT8x8输入数据的奇数部分和偶数部分分别进行系数转换,接着,对经系数转换的每一组偶数部分分别进行第一次两两加和,以及对经系数转换的每一组奇数部分分别进行第一次两两加和,对经第一次两两加和的每一组偶数部分分别进行第二次两两加和,以及对经第一次两两加和的每一组奇数部分分别进行第二次两两加和,最后,分别将归属于同一组的经第二次两两加和的偶数部分和奇数部分相加,以及分别将归属于同一组的经第一次两两加和的偶数部分和奇数部分相减,获得IDCT8x8八个像素点的变换结果。
基于上述实施例,可选的,进一步地,可以对IDCT4x4输入数据分别进行系数转换,接着,对经系数转换的数据部分进行第一次两两加和,再对经第一次两两加和的数据部分进行两两加和,并将每一个加和结果直接输出分别作为IDCT4x4一个像素点的变换结果。
基于上述实施例,可选的,进一步地,可以对至少两组IDCT4x4输入数据的奇数部分和偶数部分分别进行系数转换,接着,对经系数转换的每一组偶数部分分别进行第一次两两加和,以及对经系数转换的每一组奇数部分分别进行第一次两两加和,最后,分别将归属于同一组的经第一次两两加和的偶数部分和奇数部分相加,以及分别将归属于同一组的经第一次两两加和的偶数部分和奇数部分相减,获得IDCT4x4十六个像素点的变换结果。
基于上述电路实施例中,参阅图8所示,本发明实施例中,实现FDCT的具体流程如下:
步骤800:对FDCT32x32输入数据进行加减运算,分为偶数部分和奇数部分。
步骤810:对FDCT32x32输入数据的偶数部分和奇数部分分别进行系数转换。
步骤820:对经系数转换的偶数部分进行第一次两两加和,以及对经系数转换的奇数部分进行第一次两两加和。
步骤830:对经第一次两两加和的偶数部分进行第二次两两加和,以及对经第一次两两加和的奇数部分进行第二次两两加和。
步骤840:对经第二次两两加和的偶数部分进行第三次两两加和,以及对经第二次两两加和的奇数部分进行第三次两两加和。
步骤850:对经第三次两两加和的偶数部分进行第四次两两加和,以及对经第三次两两加和的奇数部分进行第四次两两加和,获得FDCT32x32两个像素点的变换结果。
基于上述实施例,可选的,进一步地,可以直接接收FDCT16x16输入数据,并对该FDCT16x16输入数据分别进行系数转换,接着,对经系数转换的数据部分进行第一次两两加和,对经第一次两两加和的数据部分进行第二次两两加和,对经第二次两两加和的数据部分进行第三次两两加和,最后,再对经第三次两两加和的数据部分进行第四次两两加和,并将每一个加和结果直接输出分别作为FDCT16x16规格一个像素点的变换结果。
基于上述实施例,可选的,进一步地,可以直接接收FDCT8x8输入数据,并对该FDCT8x8输入数据分别进行系数转换,接着,对经系数转换的数据部分进行第一次两两加和,对经第一次两两加和的数据部分进行第二次两两加和,最后,再对经第二次两两加和的数据部分进行第三次两两加和,并将每一个加和结果直接输出分别作为FDCT8x8规格一个像素点的变换结果。
基于上述实施例,可选的,进一步地,可以直接接收FDCT4x4输入数据,并对该FDCT4x4输入数据分别进行系数转换,接着,对经系数转换的数据部分进行第一次两两加和,再对经第一次两两加和的数据部分进行第二次两两加和,并将每一个加和结果直接输出分别作为FDCT4x4规格一个像素点的变换结果。
当然,还可以采用一种混合的DCT方法,即当执行IDCT时,执行上述IDCT方法中的任意一种执行方式;当执行FDCT时,执行上述FDCT方法中的任意一种执行方式。
综上所述,采用本发明实施例设计的电路实现IDCT/FDCT,能够大大节省运算开销,以及节省硬件成本,并且电路复用性强,从而为HEVC整数变换找到了较佳的解决方案。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (24)
1.一种离散余弦变换DCT装置,其特征在于,至少包括:
两组乘法器,用于对逆向离散余弦变换IDCT32x32输入数据的偶数部分和奇数部分分别进行系数转换;
第一列加法器,用于对经系数转换的偶数部分进行两两加和,以及对经系数转换的奇数部分进行两两加和;
第二列加法器,用于对经第一列加法器处理的偶数部分进行两两加和,以及对经第一列加法器处理的奇数部分进行两两加和;
第三列加法器,用于对经第二列加法器处理的偶数部分进行两两加和,以及对经第二列加法器处理的奇数部分进行两两加和;
第四列加法器,用于对经第三列加法器处理的偶数部分进行两两加和,以及对经第三列加法器处理的奇数部分进行两两加和;
第一处理器,用于将经第四列加法器处理的偶数部分和奇数部分相加,以及将经第四列加法器处理的偶数部分和奇数部分相减,获得IDCT32x32两个像素点的变换结果。
2.如权利要求1所述的装置,其特征在于,
所述两组乘法器进一步用于,对IDCT16x16输入数据分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和;
所述第三列加法器进一步用于,对经第二列加法器处理的数据部分进行两两加和;
所述第四列加法器进一步用于,对经第三列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为IDCT16x16一个像素点的变换结果。
3.如权利要求1或2所述的装置,其特征在于,
所述两组乘法器进一步用于,对至少两组IDCT16x16输入数据的奇数部分和偶数部分分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的每一组偶数部分分别进行两两加和,以及对经系数转换的每一组奇数部分分别进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的每一组偶数部分分别进行两两加和,以及对经第一列加法器处理的每一组奇数部分分别进行两两加和;
所述第三列加法器进一步用于,对经第二列加法器处理的每一组偶数部分分别进行两两加和,以及对经第二列加法器处理的每一组奇数部分分别进行两两加和;
所述第一处理器进一步用于,用于分别将归属于同一组的经第三列加法器处理的偶数部分和奇数部分相加,以及分别将归属于同一组的经第三列加法器处理的偶数部分和奇数部分相减,获得IDCT16x16四个像素点的变换结果。
4.如权利要求1所述的装置,其特征在于,
所述两组乘法器组进一步用于,对IDCT8x8输入数据进行系数转换;
所述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和;
所述第三列加法器进一步用于:对经第二列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为IDCT8x8一个像素点的变换结果。
5.如权利要求1或4所述的装置,其特征在于,
所述两组乘法器进一步用于,对至少两组IDCT8x8输入数据的奇数部分和偶数部分分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的每一组偶数部分分别进行两两加和,以及对经系数转换的每一组奇数部分分别进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的每一组偶数部分分别进行两两加和,以及对经第一列加法器处理的每一组奇数部分分别进行两两加和;
所述第一处理器进一步用于,用于分别将归属于同一组的经第二列加法器处理的偶数部分和奇数部分相加,以及分别将归属于同一组的经第二列加法器处理的偶数部分和奇数部分相减,获得IDCT8x8八个像素点的变换结果。
6.如权利要求1所述的装置,其特征在于,
所述两组乘法器进一步用于,对IDCT4x4输入数据分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为IDCT4x4一个像素点的变换结果。
7.如权利要求1或6所述的装置,其特征在于,
所述两组乘法器进一步用于,对至少两组IDCT4x4输入数据的奇数部分和偶数部分分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的每一组偶数部分分别进行两两加和,以及对经系数转换的每一组奇数部分分别进行两两加和;
所述第一处理器进一步用于,用于分别将归属于同一组的经第二列加法器处理的偶数部分和奇数部分相加,以及分别将归属于同一组的经第二列加法器处理的偶数部分和奇数部分相减,获得IDCT4x4十六个像素点的变换结果。
8.一种离散余弦变换DCT装置,其特征在于,至少包括:
第二处理器,用于对正向离散余弦变换FDCT32x32输入数据进行加减运算,分为偶数部分和奇数部分;
两组乘法器,用于对FDCT32x32输入数据的偶数部分和奇数部分分别进行系数转换;
第一列加法器,用于对经系数转换的偶数部分进行两两加和,以及对经系数转换的奇数部分进行两两加和;
第二列加法器,用于对经第一列加法器处理的偶数部分进行两两加和,以及对经第一列加法器处理的奇数部分进行两两加和;
第三列加法器,用于对经第二列加法器处理的偶数部分进行两两加和,以及对经第二列加法器处理的奇数部分进行两两加和;
第四列加法器,用于对经第三列加法器处理的偶数部分进行两两加和,以及对经第三列加法器处理的奇数部分进行两两加和,获得FDCT32x32两个像素点的变换结果。
9.如权利要求8所述的装置,其特征在于,
所述两组乘法器进一步用于,直接接收FDCT16x16输入数据,并对所述至少一组FDCT16x16输入数据分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和;
所述第三列加法器进一步用于,对经第二列加法器处理的数据部分进行两两加和;
所述第四列加法器进一步用于,对经第三列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为FDCT16x16一个像素点的变换结果。
10.如权利要求8所述的装置,其特征在于,
所述两组乘法器进一步用于,直接接收FDCT8x8输入数据,并对所述至少一组FDCT8x8输入数据分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和;
所述第三列加法器进一步用于,对经第二列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为FDCT8x8规格一个像素点的变换结果。
11.如权利要求8所述的装置,其特征在于,
所述两组乘法器进一步用于,直接接收FDCT4x4输入数据,并对所述至少一组FDCT4x4输入数据分别进行系数转换;
所述第一列加法器进一步用于,对经系数转换的数据部分进行两两加和;
所述第二列加法器进一步用于,对经第一列加法器处理的数据部分进行两两加和,并将每一个加和结果直接输出分别作为FDCT4x4规格一个像素点的变换结果。
12.一种离散余弦变换DCT装置,其特征在于,至少包括第一处理器、第二处理器、两组乘法器和四列加法器,其中,
当执行逆向离散余弦变换IDCT时,所述第一处理器、所述两组乘法器和所述四列加法器处于工作状态,实现如权利要求1-7任一项所述装置的功能;
当执行正向离散余弦变换FDCT时,所述第二处理器、所述两组乘法器和所述四列加法器处于工作状态,实现如权利要求8-11任一项所述装置的功能。
13.一种离散余弦变换DCT方法,其特征在于,包括:
对逆向离散余弦变换IDCT32x32输入数据的偶数部分和奇数部分分别进行系数转换;
对经系数转换的偶数部分进行第一次两两加和,以及对经系数转换的奇数部分进行第一次两两加和;
对经第一次两两加和的偶数部分进行第二次两两加和,以及对经第一次两两相加的奇数部分进行第二次两两加和;
对经第二次两两加和的偶数部分进行第三次两两加和,以及对经第二次两两相加的奇数部分进行第三次两两加和;
对经第三次两两加和的偶数部分进行第四次两两加和,以及对经第三次两两相加的奇数部分进行第四次两两加和;
将经第四次两两加和的偶数部分和奇数部分相加,以及将经第四次第三列加法器处理的偶数部分和奇数部分相减,获得IDCT32x32两个像素点的变换结果。
14.如权利要求13所述的方法,其特征在于,进一步包括:
对IDCT16x16输入数据分别进行系数转换;
对经系数转换的数据部分进行第一次两两加和;
对经第一次两两加和的数据部分进行第二次两两加和;
对经第二次两两加和的数据部分进行第三次两两加和;
对经第三次两两加和的数据部分进行第四次两两加和,并将每一个加和结果直接输出分别作为IDCT16x16一个像素点的变换结果。
15.如权利要求13或14所述的方法,其特征在于,进一步包括:
对至少两组IDCT16x16输入数据的奇数部分和偶数部分分别进行系数转换;
对经系数转换的每一组偶数部分分别进行第一次两两加和,以及对经系数转换的每一组奇数部分分别进行第一次两两加和;
对经第一次两两加和的每一组偶数部分分别进行第二次两两加和,以及对经第一次两两加和的每一组奇数部分分别进行第二次两两加和;
对经第二次两两加和的每一组偶数部分分别进行第三次两两加和,以及对经第二次两两加和的每一组奇数部分分别进行第三次两两加和;
用于分别将归属于同一组的经第三次两两加和的偶数部分和奇数部分相加,以及分别将归属于同一组的经第三次两两加和的偶数部分和奇数部分相减,获得IDCT16x16四个像素点的变换结果。
16.如权利要求13所述的方法,其特征在于,进一步包括:
对IDCT8x8输入数据进行系数转换;
对经系数转换的数据部分进行第一次两两加和;
对经第一次两两加和的数据部分进行第二次两两加和;
对经第二次两两加和的数据部分进行第三次两两加和,并将每一个加和结果直接输出分别作为IDCT8x8一个像素点的变换结果。
17.如权利要求13或16所述的方法,其特征在于,进一步包括:
对至少两组IDCT8x8输入数据的奇数部分和偶数部分分别进行系数转换;
对经系数转换的每一组偶数部分分别进行第一次两两加和,以及对经系数转换的每一组奇数部分分别进行第一次两两加和;
对经第一次两两加和的每一组偶数部分分别进行第二次两两加和,以及对经第一次两两加和的每一组奇数部分分别进行第二次两两加和;
用于分别将归属于同一组的经第二次两两加和的偶数部分和奇数部分相加,以及分别将归属于同一组的经第一次两两加和的偶数部分和奇数部分相减,获得IDCT8x8八个像素点的变换结果。
18.如权利要求13所述的方法,其特征在于,进一步包括:
对IDCT4x4输入数据分别进行系数转换;
对经系数转换的数据部分进行第一次两两加和;
对经第一次两两加和的数据部分进行第二次两两加和,并将每一个加和结果直接输出分别作为IDCT4x4一个像素点的变换结果。
19.如权利要求13或18所述的方法,其特征在于,进一步包括:
对至少两组IDCT4x4输入数据的奇数部分和偶数部分分别进行系数转换;
对经系数转换的每一组偶数部分分别进行第一次两两加和,以及对经系数转换的每一组奇数部分分别进行第一次两两加和;
用于分别将归属于同一组的经第一次两两加和的偶数部分和奇数部分相加,以及分别将归属于同一组的经第一次两两加和的偶数部分和奇数部分相减,获得IDCT4x4十六个像素点的变换结果。
20.一种离散余弦变换DCT方法,其特征在于,包括:
对正向离散余弦变换FDCT32x32输入数据进行加减运算,分为偶数部分和奇数部分;
对FDCT32x32输入数据的偶数部分和奇数部分分别进行系数转换;
对经系数转换的偶数部分进行第一次两两加和,以及对经系数转换的奇数部分进行第一次两两加和;
对经第一次两两加和的偶数部分进行第二次两两加和,以及对经第一次两两加和的奇数部分进行第二次两两加和;
对经第二次两两加和的偶数部分进行第三次两两加和,以及对经第二次两两加和的奇数部分进行第三次两两加和;
对经第三次两两加和的偶数部分进行第四次两两加和,以及对经第三次两两加和的奇数部分进行第四次两两加和,获得FDCT32x32两个像素点的变换结果。
21.如权利要求20所述的方法,其特征在于,进一步包括:
直接接收FDCT16x16输入数据,并对所述FDCT16x16输入数据分别进行系数转换;
对经系数转换的数据部分进行第一次两两加和;
对经第一次两两加和的数据部分进行第二次两两加和;
对经第二次两两加和的数据部分进行第三次两两加和;
对经第三次两两加和的数据部分进行第四次两两加和,并将每一个加和结果直接输出分别作为FDCT16x16规格一个像素点的变换结果。
22.如权利要求20所述的方法,其特征在于,进一步包括:
直接接收FDCT8x8输入数据,并对所述FDCT8x8输入数据分别进行系数转换;
对经系数转换的数据部分进行第一次两两加和;
对经第一次两两加和的数据部分进行第二次两两加和;
对经第二次两两加和的数据部分进行第三次两两加和,并将每一个加和结果直接输出分别作为FDCT8x8规格一个像素点的变换结果。
23.如权利要求20所述的方法,其特征在于,进一步包括:
直接接收FDCT4x4输入数据,并对所述FDCT4x4输入数据分别进行系数转换;
对经系数转换的数据部分进行第一次两两加和;
对经第一次两两加和的数据部分进行第二次两两加和,并将每一个加和结果直接输出分别作为FDCT4x4规格一个像素点的变换结果。
24.一种离散余弦变换DCT方法,其特征在于,包括:
当执行逆向离散余弦变换IDCT时,执行如权利要求13-19任一项所述的方法;
当执行正向离散余弦变换FDCT时,执行如权利要求20-23任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410830066.3A CN105791871A (zh) | 2014-12-25 | 2014-12-25 | 一种离散余弦变换dct装置及应用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410830066.3A CN105791871A (zh) | 2014-12-25 | 2014-12-25 | 一种离散余弦变换dct装置及应用方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105791871A true CN105791871A (zh) | 2016-07-20 |
Family
ID=56388935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410830066.3A Pending CN105791871A (zh) | 2014-12-25 | 2014-12-25 | 一种离散余弦变换dct装置及应用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105791871A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5748514A (en) * | 1994-11-30 | 1998-05-05 | Sanyo Electric Co., Ltd. | Forward and inverse discrete cosine transform circuits |
CN101409845A (zh) * | 2008-10-31 | 2009-04-15 | 北京大学软件与微电子学院 | 一种avs视频编码中的视频失真度估计方法及其装置 |
CN103369326A (zh) * | 2013-07-05 | 2013-10-23 | 西安电子科技大学 | 适于高性能视频编码标准hevc的变换编码器 |
-
2014
- 2014-12-25 CN CN201410830066.3A patent/CN105791871A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5748514A (en) * | 1994-11-30 | 1998-05-05 | Sanyo Electric Co., Ltd. | Forward and inverse discrete cosine transform circuits |
CN101409845A (zh) * | 2008-10-31 | 2009-04-15 | 北京大学软件与微电子学院 | 一种avs视频编码中的视频失真度估计方法及其装置 |
CN103369326A (zh) * | 2013-07-05 | 2013-10-23 | 西安电子科技大学 | 适于高性能视频编码标准hevc的变换编码器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shen et al. | A unified 4/8/16/32-point integer IDCT architecture for multiple video coding standards | |
Amish et al. | Fully pipelined real time hardware solution for high efficiency video coding (HEVC) intra prediction | |
CN103369326A (zh) | 适于高性能视频编码标准hevc的变换编码器 | |
CN104320668B (zh) | Hevc/h.265的dct变换和反变换的simd优化方法 | |
Azgin et al. | An efficient FPGA implementation of HEVC intra prediction | |
CN108259919B (zh) | 一种快速实现8x8DCT变换的硬件系统 | |
CN103092559B (zh) | 用于hevc标准下dct/idct电路的乘法器结构 | |
KR101412964B1 (ko) | Hevc를 위한 저면적 고성능 다중모드 1d 변환블록 및 이를 이용한 데이터 처리방법 | |
CN105791871A (zh) | 一种离散余弦变换dct装置及应用方法 | |
CN102769754A (zh) | H264编码器及其图像变换、量化及重构的方法 | |
JP5086675B2 (ja) | フィルタ演算器及び動き補償装置 | |
CN108184127B (zh) | 一种可配置的多尺寸dct变换硬件复用架构 | |
KR101722215B1 (ko) | 이산 여현 변환 장치 및 방법 | |
CN104811738B (zh) | 基于资源共享的低开销多标准8×8一维离散余弦变换电路 | |
CN203279074U (zh) | 二维离散余弦变换/逆离散余弦变换电路 | |
CN1874510A (zh) | 一种用于视频编码的整数离散余弦变换方法 | |
CN109451307B (zh) | 一种基于近似系数的一维dct运算方法和dct变换装置 | |
Mostafa et al. | A variable block-size design of HEVC transform using intra-coefficient sharing | |
CN104683817A (zh) | 基于avs的并行变换和反变换方法 | |
CN106550238B (zh) | 一种图像处理方法及系统 | |
KR101423083B1 (ko) | Hevc 복호기용 역변환기 설계 방법 | |
CN102447898A (zh) | 用fpga实现klt变换的方法 | |
Liang et al. | A full-pipelined 2-D IDCT/IDST VLSI architecture with adaptive block-size for HEVC standard | |
Teja et al. | Verilog implementation of fully pipelined and multiplierless 2D DCT/IDCT JPEG architecture | |
Ney et al. | Hardware design of a scalable and fast 2-D hadamard transform for HEVC video encoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160720 |