CN104144346A - 用于执行空域和频域之间的变换的数据处理装置和方法 - Google Patents
用于执行空域和频域之间的变换的数据处理装置和方法 Download PDFInfo
- Publication number
- CN104144346A CN104144346A CN201410190960.9A CN201410190960A CN104144346A CN 104144346 A CN104144346 A CN 104144346A CN 201410190960 A CN201410190960 A CN 201410190960A CN 104144346 A CN104144346 A CN 104144346A
- Authority
- CN
- China
- Prior art keywords
- circuit
- input value
- group
- data processing
- matrix
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 239000011159 matrix material Substances 0.000 claims abstract description 145
- 238000006243 chemical reaction Methods 0.000 claims description 52
- 230000009466 transformation Effects 0.000 claims description 30
- 238000006073 displacement reaction Methods 0.000 claims description 21
- 238000007792 addition Methods 0.000 description 28
- 229920006395 saturated elastomer Polymers 0.000 description 12
- 239000013598 vector Substances 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/625—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Discrete Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Complex Calculations (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
提供了用于执行空域和频域之间的变换的数据处理装置和方法。该数据处理装置包括被配置为接收N个输入值并执行一系列操作来生成表示所述N个输入值在空域和频域之间的变换的N个输出值的变换电路。这样,该变换电路采用被配置为接收由变换电路生成的M个内部输入值并执行基础操作的基础电路,其中M大于或等于4,该基础操作等同于M个内部输入值与汉克尔矩阵的矩阵乘法,汉克尔矩阵是具有恒定的斜对角线的方形矩阵。变换电路在一系列操作的执行期间被布置为:根据N个输入值生成多组M个内部输入值、向基础电路提供每组M个内部输入值以使得多组M个内部输出值能够被产生、以及根据多组M个内部输出值导出N个输出值。
Description
技术领域
本发明涉及用于在处理视频数据时执行空域和频域之间的变换的技术。这样的变换通常是由视频编码器和视频解码器二者来执行的。其中,视频编码器执行前向变换以将视频信号从空域转换到频域,视频解码器执行相应的反向变换以将经编码的信号从频域转换回空域。
背景技术
存在各种已知的用于在空域和频域之间进行信号转换的变换。一种通用的变换是离散余弦变换。当前的视频编码器和解码器可能需要根据多种视频标准来执行视频编码和解码操作,这些视频标准例如是:MPEG2、MPEG4、H.263、H.264高端(H.264high profile)、VP8、VC-1等等。众所周知,视频编码和解码过程中的计算特别密集的部分是变换操作的执行部分。
视频编码和解码通常是以8×8的像素数据块(block)为基础被执行的,其中四个8×8的亮度(Y)数据块和两个8×8的色度(Cb和Cr)数据块代表了给定宏块(macroblock)的视频数据。针对每个宏块,对所有的六个8×8块执行变换操作来产生六个变换输出的8×8块。
直到最近,只需要相对较小的变换操作,如上文提到的示例中的8×8变换。然而,随着高清视频的引入,开始出现更新的视频标准,例如HEVC标准,该HEVC标准需要对更大的阵列(例如,16×16和32×32)执行变换操作。已经研发出的高效执行较小尺寸的变换的许多技术已经被发现不可扩展以用于这些更大尺寸的变换。
具体考虑离散余弦变换(DCT)的示例,各种论文已经研究了更大的DCT,并且已经研发出用于以下功能的技术:该技术在复乘(repeatedmultiplication)被准许时(即,一个乘法的结果被作为另一乘法的输入馈入),使得如此大的DCT能够通过快速傅里叶变换(FFT)型的方法被高效地实现。例如,分别由Feig和Winograd所作的、题为“关于离散余弦变换的乘法复杂度”(On the Multiplicative Complexity of Discrete CosineTransforms,IEEE Trans Information Theory,Volume38,No.4,July1992)以及题为“用于离散余弦变换的快速算法”(Fast Algorithms for theDiscrete Cosine Transform,IEEE Trans Signal Processing,Volume40,No.9,September1992)的两篇论文讨论了用于优化DCT的可能算法,该可能的算法减少了所需的乘法运算的数目。然而,一般而言(特别是对于较大的变换尺寸),这些技术需要先前提到的复乘。
然而,在视频标准中,通常存在至少解码操作的输出要精确到比特的要求,因为在视频处理中某些图片的内容是从先前的图片中预测的。以HEVC标准为具体示例,在解码期间执行的反向变换操作必须被实现为:与使用整数乘法(integer multiplies)的变换的参考定点(fixed-point)版本的输出精确匹配。结果,已知的使用复乘(通常结合移位操作)的优化技术由于引入了舍入误差而不能被使用。
避免这样的复乘需求并且因而能够在需要比特级精确结果时被使用的一种已知技术使用重复的(A+B,A-B)蝶形(butterfly)来减少所需的乘法运算的数目。当考虑32×32变换的示例时,在没有任何优化的情形下针对每一维度的变换将需要32×32次的乘法,即1024次乘法。通过使用这些已知的蝶形技术,针对该具体场景的乘法的数目能够被减少为342。
然而,这仍然有相当数目的乘法要执行,并且需要针对每一维度的变换重复该数目的乘法。例如,视频编码和解码通常使用二维的DCT,因而通过使用HEVC标准的示例的方式,要处理的每个视频数据块可以包括32×32个数值的阵列。通常,二维离散余弦变换是通过执行一系列被应用到阵列的每行和每列的一维变换来实现的,因而在上面的示例中将涉及覆盖阵列中的每一行的32次一维变换、以及随后的覆盖每一列的32次一维变换的执行。因此,针对每个视频数据块,将需要64次一维变换,并且根据早前所述的特定的蝶形技术,每次一维变换将需要342次的乘法运算。
存在对于提供更高性能和更低面积成本的视频编码器和解码器的持续期望,因此期望减少在对视频数据执行前向和反向变换操作期间所需的乘法的数目。随着根据诸如HEVC标准之类的更新的视频标准所支持的变换的尺寸的增加,该期望将变得越来越迫切。
发明内容
从第一方面看,本发明提供了一种用于在处理视频数据时执行空域和频域之间的变换的数据处理装置,该数据处理装置包括:变换电路,该变换电路被配置为接收N个输入值并执行一系列操作来生成表示所述N个输入值在空域和频域之间的变换的N个输出值;基础电路,该基础电路被配置为接收由变换电路生成的M个内部输入值并执行基础操作以生成用于返回至变换电路的M个内部输出值,其中M大于或等于4,该基础操作等同于所述M个内部输入值与包括系数c的阵列的矩阵的矩阵乘法,该矩阵具有以下形式:
c0c1c2…cM-1
c1c2c3…cM
c2c3c4…cM+1;并且
…
cM-1cMcM+1…c2M-2
变换电路在所述一系列操作的执行期间被布置为:根据N个输入值生成多组所述M个内部输入值、向基础电路提供每组M个内部输入值从而使得多组所述M个内部输出值能够被产生、以及根据所述多组M个内部输出值导出N个输出值。
根据本发明,该数据处理装置被配置为重复使用基础电路,该基础电路被配置为执行等同于M个内部输入值与包括系数c的阵列的矩阵的矩阵乘法的基础操作,该矩阵具有以下形式:
c0c1c2…cM-1
c1c2c3…cM
c2c3c4…cM+1
…
cM-1cMcM+1…c2M-2
M大于或等于4,并且在一个示例中M等于4。变换电路操纵原始提供的N个输入值从而生成多组M个内部输入值,每组M个内部输入值被传送通过基础电路。因此,基础电路被迭代地用于由变换电路产生的每组M个内部输入值。然后变换电路根据由基础电路产生的多组M个内部输出值来导出N个输出值。
通常,本发明的上述技术将被重复地用于一系列的一维变换从而实现二维变换。对于每次一维变换,一组N个输入值将被输入至数据处理装置的变换电路。根据本发明,对于具体提供的一组N个输入值,每组M个内部输入值只被传送通过基础电路一次,并且由基础电路生成的内部输出值都不被用作随后由基础电路执行的乘法迭代的输入。因而,当使用本发明的装置时不会执行复乘,从而使得该装置能够生成比特级精确的结果,该结果是诸如HEVC视频标准之类的现代标准所需要的。
基础电路内采用的矩阵的具体形式是带有恒定的斜对角线(即,正斜率的对角线)的方形矩阵,也被称作汉克尔矩阵。本发明的发明者已经意识到:对于现代视频处理标准所要求的更大的变换,所需的空域和频域之间的变换能够以使用汉克尔矩阵来实现重复的更小尺寸的矩阵乘法的方式进行因式分解。
由基础电路执行的基础操作能够处理上述提供的形式的汉克尔矩阵的任何具体实例,因而能够执行等同于M个内部输入值与汉克尔矩阵的矩阵乘法的操作而不顾被分配到系数c0到c2M-2的值。因此,通过示例的方式,即使所有的系数c0到c2M-2具有不同的值,和/或系数的值针对被提供至基础电路的每组M个内部输入值而变化,基础电路也能够执行所要求的操作。
另外,本发明的技术可被用于编码和解码二者,并且可轻易地扩展至可变尺寸的N。
已经发现,上述布置实现了为执行N个输入值在空域和频域之间的变换所需的乘法数目的显著减少。例如,考虑前文提到的新HEVC视频标准所需的32点变换,已经发现:当与HEVC参考软件所用的局部蝶形方法相比时,根据本发明的技术需要约三分之一数目的乘法。HEVC参考软件(也被称作HM-8.0,见http://r2d2n3po.tistory.com/61)是标准的C代码实现,其被用作论文标准的参考实现。
空域和频域之间执行的变换能够采取多种形式,但在一个实施例中为离散余弦变换。
存在各种方式来对变换电路进行布置以生成被提供至基础电路的每组M个内部输入值。然而,在一个实施例中,变换电路包括排列电路,该排列电路被配置为对接收到的N个输入值进行排列从而产生输入值的K个群组,其中K=N/M,因此每个群组具有M个成员,每个成员是所述接收到的N个输入值中的一个。然后加法器电路被配置为对来自所选群组中的相应成员执行加法运算和减法运算中的至少一种,从而生成每组所述M个内部输入值。
由排列电路执行的实际的排列将取决于该装置是被用于执行从空域到频域的前向变换还是从频域到空域的反向变换。类似地,由加法器电路执行的加法和减法运算将依据正在执行的是前向变换还是反向变换而不同。
变换电路被配置来根据多组M个内部输出值导出N个输出值的方式可依据实施例而变换。然而,在一个实施例中,变换电路还包括另外的加法器电路,该另外的加法器电路被配置为对由基础电路产生的多组所述M个内部输出值执行加法运算和减法运算中的至少一种,从而产生N个中间输出值。由加法器电路和另外的加法器电路执行的加法/减法将取决于该装置被用来执行前向变换还是反向变换。
在一个实施例中,变换电路还包括移位电路,该移位电路被配置为对N个中间输出值执行移位操作从而生成经移位的中间输出值。应当注意,在基础电路对各组M个内部输入值的迭代操作之后的N个中间输出值被生成之后,移位操作只执行一次。这用于确保结果的精确性。一次移位后的值被输出而未被再循环(除了可能形成用于另一个相关的一维变换的输入值之外)。
在一个实施例中,移位操作包括饱和操作。另外,如同移位操作,饱和操作只被执行一次。
在一个实施例中,变换电路还包括另外的排列电路,该另外的排列电路被配置为对N个经移位的中间输出值进行排列从而生成所述N个输出值。由该另外的排列电路执行的排列将取决于由排列电路对N个输入值执行的排列。
在一个实施例中,该装置还包括系数生成电路,该系数生成电路被配置为:针对每组M个内部输入值生成相应的一组系数值,该组系数值将在基础电路执行基础操作时被使用。因而,能够针对基础电路的每次迭代设置系数值组。
如上面提到的,该装置能够被用于执行从空域到频域的前向变换或者从频域到空域的反向变换。在一个实施例中,该装置是可配置的从而使得它能够在执行前向变换和反向变换之间进行切换。
在一个具体实施例中,不论数据处理装置是被配置为执行前向变换还是执行反向变换,由系数生成电路针对每组M个内部输入值生成的相应的一组系数值是相同的。因而,尽管排列电路、加法器电路、另外的加法器电路和另外的排列电路的操作将依据该装置是执行前向变换还是执行反向变换而被修改,基础电路的基本操作是不变的,并且如果假设该装置仍然根据同一视频标准来运行,那么完全相同的系数将由系数生成电路生成。
尽管实施例的装置执行了先前描述的基础操作的多次迭代,但是通常仍需要执行较小的变换(具体是M×M变换)。因而,在一个实施例中,变换电路还被配置为生成另一组M个内部输入值用于提供给基础电路,并且基础电路被配置为通过执行等同于所述另一组M个内部输入值与离散余弦变换矩阵的矩阵乘法的离散余弦变换操作来对所述另一组M个内部输入值执行离散余弦变换。
在一个具体实施例中,该数据处理装置被配置为在视频数据的编码期间执行前向离散余弦变换,并且基础电路被配置为在对所述多组M个内部输入值执行基础操作之后,执行作为离散余弦变换操作的前向离散变换操作。
相反,如果数据处理装置被配置为在视频数据的解码期间执行反向离散余弦变换,那么基础电路被配置为:在对所述多组M个内部输入值执行基础操作之前,执行作为离散余弦变换操作的反向离散变换操作。
N的值可以依据实施例而变换。在一个实施例中,N是M的倍数。在一个具体实施例中,N被约束为2的幂。
如上面提到的,M可以大于或等于4,并且在一个实施例中,M被设为4。因而,在此实施例中,所执行的所有乘法是相对4×4矩阵进行的而不管N的大小。
加法器电路能够以各种方式进行配置,但在一个实施例中加法器电路被配置为SIMD电路,该SIMD电路提供用于并行地执行加法运算和减法运算中的至少一种的M个并行处理通道以生成每组所述M个内部输出值。
类似地,在一个实施例中,该另外的加法器电路可以被配置为SIMD电路,该SIMD提供用于对由基础电路产生的每组所述M个内部输出值并行地执行加法运算和减法运算中的至少一种的M个并行处理通道。
如上面提到的,当使用上述实施例的技术时,在空域和频域之间变换N个输入值所需的乘法的数目被显著地减少。在一个具体实施例中,数据处理装置被配置为:通过对每行和每列的N个数据值分别执行空域和频域之间的变换,来对包括N×N阵列的数据值的视频数据块进行操作,并且由基础电路针对每行和每列执行的乘法的总数目为:3n-1+3n-2+…+9+Z,其中Z≤9,并且其中N=2n。Z的值取决于执行单次M×M离散余弦变换所需的乘法的数目,并且在一个具体实现中被配置为对32×32的阵列(即,N=32)进行操作并且其中M=4,已经发现对于单个4×4的离散余弦变换需要六次乘法(即,Z=6)。根据以上等式,导致需要123次乘法,这约为上文提到的局部蝶形方法所需的乘法数目的三分之一。
已经发现,上述实施例的装置提供了显著的灵活性。相同的装置不仅能够被配置为执行前向变换和反向变换二者,而且另外该装置可以被配置为支持不同的视频标准。具体地,在一个实施例中,该装置可被配置为通过使得系数生成电路依据当前选择的视频标准来设定针对每组M个内部输入值被应用到基础电路的相应的各组系数,来支持不同的视频标准。
从第二方面看,本发明提供了一种用于在处理视频数据时执行空域和频域之间的变换的方法,该方法包括:采用变换电路来接收N个输入值并执行一系列操作来生成表示N个输入值在空域和频域之间的变换的N个输出值;采用基础电路来接收由变换电路生成的M个内部输入值并执行基础操作来生成用于返回至变换电路的M个内部输出值,其中M大于或等于4,该基础操作等同于所述M个内部输入值与包括系数c的阵列的矩阵的矩阵乘法,该矩阵具有以下形式:
c0c1c2…cM-1
c1c2c3…cM
c2c3c4…cM+1;
…
cM-1cMcM+1…c2M-2
并且由变换电路执行的一系列操作包括:根据N个输入值生成多组所述M个内部输入值;向基础电路提供每组M个内部输入值从而使得多组所述M个内部输出值能够被产生;以及根据所述多组M个内部输出值导出N个输出值。
从第三方面看,本发明提供了一种用于在处理视频数据时执行空域和频域之间的变换的数据处理装置,该数据处理装置包括:变换模块,该变换模块用于接收N个输入值并且用于执行一系列操作来生成表示N个输入值在空域和频域之间的变换的N个输出值;基础电路模块,该基础电路模块用于接收由变换模块生成的M个内部输入值并且用于执行基础操作来生成用于返回至变换模块的M个内部输出值,其中M大于或等于4,该基础操作等同于所述M个内部输入值与包括系数c的阵列的矩阵的矩阵乘法,该矩阵具有以下形式:
c0c1c2…cM-1
c1c2c3…cM
c2c3c4…cM+1;
…
cM-1cMcM+1…c2M-2
并且在所述一系列操作的执行期间,变换模块用于:根据N个输入值生成多组所述M个内部输入值、向基础电路模块提供每组M个内部输入值从而使得多组所述M个内部输出值能够被产生、以及根据所述多组M个内部输出值导出N个输出值。
附图说明
本发明将仅仅通过示例的方式,结合在附图中所示的实施例来进一步描述,在附图中:
图1是概要地示出了根据已知技术如何以逐块的方式处理视频数据帧的示图;
图2示出了根据已知方法的一维DCT变换操作;
图3A示出了根据一个实施例如何将N×N的反向DCT变换矩阵进行因式分解,从而通过一系列的更小的线性关联矩阵和单个更小的反向DCT矩阵来实现N×N矩阵,其中这些更小的线性关联矩阵的输入和输出将经受各种加法和减法运算;
图3B示出了根据一个实施例如何将N×N的前向DCT变换矩阵进行因式分解,从而通过一系列的更小的线性关联矩阵和单个前向DCT矩阵来实现N×N矩阵,其中这些更小的线性关联矩阵的输入和输出将经受各种加法和减法运算;
图4是概要地示出了根据一个实施例在数据处理装置内提供的组件从而针对N个接收到的输入值执行空域和频域之间的变换的框图;
图5概要地示出了根据一个实施例在图4中的加法器电路和另外的加法器电路内提供的组件;以及
图6A和6B提供了示出如下步骤的流程图,其中该步骤是根据一个实施例由图4的电路执行从而对一组N个输入值进行处理的步骤。
具体实施方式
图1示出了视频数据帧10,该帧被视为是块15的阵列,每个块包括数据值的N×N阵列20。每个数据值通常将包括多个比特,例如16比特的数据。当对输入视频数据执行编码操作时,每个这样的块15将经受二维的变换操作以将数据从空域转换到频域。通常,为了执行这样的编码,前向离散余弦变换(FDCT)操作将被执行。类似地,当对视频数据的经编码的帧进行解码时,每个块将经受二维的反向离散余弦变换(IDCT)操作,从而将接收到的经编码的信号从频域转换到空域。
在实践中,二维DCT操作是通过一系列的一维DCT操作来执行的。例如,通常是这样的情形:对每行执行一维DCT操作以产生一些中间结果,并且随后对这些中间结果的每列执行相应系列的一维DCT操作。从而,对于N×N块,为了实现所需的二维DCT操作,将需要执行2N个一维DCT操作。
图2概要地示出了对输入值x0到xN-1的行或列50执行的标准的一维DCT操作。这些N个输入值50与N×N的矩阵60相乘,该矩阵60包括系数值的N×N矩阵。如图2中概要所述,每行的系数与相应的输入值相乘,然后将结果相加以产生相关联的输出值。从而,N个输出值X0到XN-170将被生成。
从图2中将认识到:针对每个一维变换操作,需要执行大量的乘法。例如,考虑N为32的情形,每个一维变换操作将需要32×32次乘法,即1024次乘法。如前所述,已知的蝶形技术能够被用于减少乘法的数目。具体地,再次考虑N为32的情形,该技术将使得乘法的数目能够被减少至342。然而,期望能够进一步减少执行每个一维变换操作所需的乘法的数目而同时仍能够实现比特级的精确结果。
图3A概要地示出了为了使N×N的IDCT矩阵能够被简并为一系列更小的矩阵,根据针对反向变换操作所述的实施例采用的因式分解方法。具体地,根据所述实施例,N×N的IDCT矩阵100被有效地替换为矩阵110,矩阵110比矩阵100大(即,矩阵110相比矩阵100具有更长的对角线),但是包含更少的非零元素,并且实际上通常矩阵110中大量数目的系数值为零。沿着通过矩阵110的对角线路径,定义了许多较小的M×M矩阵。在此具体示例中,假设M等于4,并且如图所示,提供了一系列的L4矩阵120,每个L4矩阵是先前所述形式的汉克尔矩阵(Hankelmatrix),即带有恒定的斜对角线(skew diagonal)的线性关联矩阵。L4矩阵120的一个实例中的系数的实际值通常将不同于L4矩阵的另一实例中的值。
还如图所示,提供了起始的IDCT(T4)矩阵130,该矩阵是大小为4×4的IDCT矩阵。所述实施例的装置内所设的基础电路能够用于通过使用这些已定义的4×4矩阵实例130,120中的每一个实例(始于矩阵110的左上方的矩阵)来迭代地执行矩阵乘法。然而,向基础电路提供的M个内部输入值需要基于所供应的N个输入值,针对每次迭代分别被推导出来。如下文参考图4所述,这是通过使用排列电路(permute circuitry)对所接收的N个输入值进行排列从而产生输入值的K个群组来实现的,其中K=N/M,因而每个群组具有M个成员,每个成员是接收到的N个输入值中的一个值。另外,加法器电路接着被用于对来自所选群组的相应成员执行一系列的加法和减法运算,从而生成每组M个内部输入值。所要求的需要被执行的加法和减法运算在图3A中所示的矩阵105内被定义,该矩阵105包含0以及+/-1的值。类似地,由基础电路生成的内部输出值在它们能够被用于生成与N个输入值的IDCT相对应的N个输出值之前需要进行操纵。具体地,如将在后文参考图4所述,另外的加法器电路被用于对由基础电路产生的多组M个内部输出值执行一系列的加法和减法运算,其中具有0以及+/-1值的矩阵115标识了所需的加法和减法运算。
图3B示出了相同的基本因式分解方法如何能够被用于执行前向的DCT操作。具体地,N×N的FDCT矩阵140被有效地简并为矩阵150,该矩阵150包括更小的M×M(在此情形中为4×4)矩阵的相似布置。具体地,再次提供了一系列的L4矩阵120,但是在此实例中提供了FDCT4×4(F4)矩阵160代替图3A的IDCT4×4(T4)矩阵130。此外,基础电路执行F4矩阵乘法160作为最终的迭代,而在图3A的示例中,T4矩阵乘法被作为起始的迭代由基础电路执行。再次,具有0以及+/-1值的矩阵145被用于限定当生成内部输入值以提供给基础电路用于每次迭代时由加法器电路执行的加法和减法运算,并且类似地具有0以及+/-1值的矩阵155被用于标识另外的加法器电路所需的加法和减法运算,该另外的加法器电路用于处理由基础电路生成的内部输出值。
考虑图3A和3B中示出的各种矩阵的相对大小,假设原始矩阵100和140为N*N,并且如果N=2n=4×2n-2,那么矩阵110或者150的宽度将为4×(3n-3+3n-4+…+3+1+1)。考虑具体的示例,在该示例中N=32,n=5,因而矩阵110或者150的宽度将为4×(9+3+1+1),即56。因而,矩阵110和150中的每一个将为56×56的矩阵。在此实例中,矩阵105和145将为32(横向)×56(纵向),并且矩阵115和155将为56(横向)×32(纵向)。
图4是示出了根据一个实施例在数据处理装置内提供的组件的框图。排列电路200被布置为接收每组N个输入值,并且被配置为对这N个输入值执行排列从而产生存储在内部存储设备205内的输入值的K个群组。K等于N/M,因而每个群组具有M个成员,其中每个成员是所接收到的N个输入值中的一个值。因此,通过示例的方式,如果N为32并且M为4,则将有8个群组被设置在存储设备205内。
然后加法器电路210被用于生成每组M个内部输入值以提供给基础电路215(下文也被称作LM电路)。加法器电路被配置为对来自所选群组中的相应成员进行操作,因而在一次迭代中可以对来自多个群组中的成员0进行操作,而在另一次迭代中可以对来自多个群组中的成员1进行操作。如先前参考图3A和3B所述,为了确定任何特定的迭代所需的加法和减法运算,矩阵105和125被加法器电路引用。
考虑其中执行了反向变换的图3A的示例,将认识到:在第一次迭代期间,加法器电路生成将经受矩阵乘法的M个内部输入值,该矩阵乘法使用形成M×M的IDCT矩阵的TM矩阵。针对图3A的特定示例,假设M为4,从而在第一次迭代期间由加法器电路210生成的M个内部输入值将通过使用基础电路215来经受与T4矩阵130的矩阵乘法。系数生成电路220生成T4矩阵130内包含的系数的值。然后基础电路215将执行所需的矩阵乘法运算从而生成M个内部输出值,该M个内部输出值将被路由至另外的加法器电路225。然后该另外的加法器电路执行由矩阵115定义的加法和减法运算,从而生成存储于存储设备230内的中间输出值。这些中间输出值能够被视为形成了K个群组的中间输出值,其中每个群组具有M个成员,每个成员是这些中间输出值中的一个。存储设备230被以这样的方式填充:在执行完所有的迭代时,存储设备230被填充有所有的N个中间输出值。
返回图3A的示例,在执行了小型4×4IDCT变换的第一迭代之后,将通过多次迭代执行一系列的矩阵乘法来将生成的多组M个内部输入值与各种线性关联矩阵120相乘,在图3A中这些线性关联矩阵中的每一个可以采用4×4的汉克尔矩阵的形式。对于每次迭代,加法器电路210将引用矩阵105来确定在生成每组内部输入值时要执行的适当的加法和减法运算,并且系数生成电路220将针对每次迭代生成适当的系数值。类似地,另外的加法器电路225将引用矩阵115来确定在每次迭代期间对于由基础电路生成的内部输出值所执行的适当的加法和减法运算。
一旦所有所需的迭代被执行完,并且存储设备230已经填充有N个中间输出值,这些中间输出值将被传送通过移位和饱和电路(shift andsaturate circuit)235,在该移位和饱和电路235中执行移位和饱和操作以便生成经移位和饱和的中间输出值。应当注意,移位和饱和操作仅在所有的N个中间输出值已经被生成之后被执行一次,这是为了确保结果的比特级精确特性,特别是避免在处理中通过在多个步骤迭代地执行移位和饱和操作而引入的舍入误差。
经移位和饱和的中间输出值然后被传递到另外的排列电路240,该另外的排列电路240被配置为对N个经移位和饱和的中间输出值进行排列以生成所需的N个输出值。由另外的排列电路240执行的排列取决于由排列电路220对输入值执行的排列。
图4的电路能够被配置为在视频数据的编码期间执行前向变换以将该数据从空域变换到频域,或者被配置为在对数据进行解码期间执行反向变换以将该数据从频域变换到空域。由排列电路200和另外的排列电路240执行的排列操作将取决于装置是被用于执行前向变换还是反向变换。类似地,由加法器电路210和另外的加法器电路225执行的加法和减法运算将依赖于正在执行的是前向变换还是反向变换而不同。
系数生成电路220将需要在执行反向变换操作时生成用于T4矩阵130的系数,或者在执行前向变换时生成用于F4矩阵140的系数。然而,当在前向变换和反向变化的执行之间对装置进行重新配置时,针对L4矩阵120的每个实例生成的系数在一些情形中(例如,对于较大的HEVC矩阵,前向矩阵是反向矩阵的转置)是不变的。因此,当执行L4矩阵乘法的多个迭代时,基础电路的操作在这些情形中是不变的,并且完全相同的系数被系数生成电路220生成。
该装置还能够用于实现各种视频标准。然而,由系数生成电路220生成的系数将在不同的视频标准之间变化。相反,排列电路200、加法器电路210、另外的加法器电路225和另外的排列电路240的基本操作通常不受视频标准的改变的影响。
图5示出了根据一个实施例在加法器电路210和另外的加法器电路225内提供的组件。在此示例中,假设M等于4,则一旦K个群组的M个输入值已经被存储在图4的存储设备205内,将认识到每个群组具有4个成员。在此示例中,存储设备205被视为形成了加法器电路210的一部分并且包括四个寄存器库(bank)VB0300、VB1305、VB2310和VB3315,每个寄存器库具有足够的寄存器来存储来自每个群组的相应成员。因此,考虑其中N为32的示例,将存在8个群组,每个群组具有4个成员,并且每个寄存器库300、305、310和315将提供八个寄存器以便使得来自这八个群组中的每个群组的相应成员能够被存储于此。
由排列电路200生成的经排列的输入值通常被缓存在RAM内并且随后经由in0和in1输入端(每周期两个数据值)以经排列的次序串行地装载到相关的寄存器库300、305、310和315内。
相应的二输入加法器320、325、330和335被与寄存器库300、305、310和315中的每一个相关联地提供,并且在所示的实施例中,在每个时钟周期期间,这些加法器中的两个可被用于生成内部输入值以提供给L4电路340,而另外两个加法器可选地被用于生成反馈回来并存储在相关联的寄存器库内的中间值。对于由L4电路340执行的每次矩阵乘法,需要四个内部输入值,从而要用两个时钟周期来生成由L4电路340执行的每次矩阵乘法所需的输入。
在一个实施例中,各种加法器电路320、325、330、335执行蝶形操作和Karatsuba递归,从而将32点变换分解为由L4电路340处理的4点变换。
由加法器电路210执行的操作在此实施例中是在第一流水线(pipeline)阶段P0内执行的,然后L4电路340的操作占据了四个流水线阶段P1到P4。另外的加法器电路225然后占据了第六流水线阶段P5。如图所示,L4电路340的最后阶段每周期产生两个内部输出值,这两个内部输出值被临时存储在寄存器345、350内。在寄存器345中存储的每个值然后将根据需要被提供给加法器电路375或者加法器电路380,并且类似地在寄存器350中存储的每个值将根据需要被提供给加法器电路385或者加法器电路390。首先,加法器电路375、380、385、390将这些值路由回相关联的寄存器库WB0355、WB1360、WB2365和WB3370内。加法器电路375、380、385、390然后将使用蝶形操作和Karatsuba递归来根据4点变换输出重新构建32点变换输出,并且在后续处理阶段中这将使得两个寄存器库392和394填充有N个中间输出值。
一旦所有的乘法已经被L4电路执行,寄存器392、394中的内容将表示N个中间输出值,并且它们将随后被路由经过移位和饱和电路396、398以生成经移位和饱和的中间输出值,该经移位和饱和的中间输出值然后能够被路由至另外的排列电路240以将这些值排列回N个输出值所需的最终次序。
图5的电路能够被用于支持输入值的数目是4的倍数的情况,在一个具体实施例中,输入值的数目被限制为2的幂,从而使得N个输入值可以是4个输入值、8个输入值、16个输入值、32个输入值等等。如果N确实被设为等于4,那么如图5中所示,可以在加法器电路320、325、330、335和另外的加法器电路375、380、385、390周围提供旁路通路。因而,此优化在N被设为等于M时允许通过电路的较低的延迟路径。然而,移位和饱和阶段的流水线路径P6将仍然被用于所有的变换尺寸。
多个加法器电路320、325、330、335能够以SIMD的方式进行布置,从而使得它们并行地进行操作来执行四组加法/减法。然而,在一个实施例中,加法器电路D0和D2320、330的操作相对于加法器电路325、335的操作被错开,从而使得在第一周期,只有加法器电路320和330被使用,并且生成两个内部输入值以提供给L4电路,而在下一周期中,加法器325和335被用于生成另外两个内部输入值以提供给L4电路。在第二周期期间,加法器320和330能够被再次使用,但这次它们将生成用于路由回它们各自的寄存器库300、310的中间值。在下一周期中,所有的四个加法器能够被再次使用,加法器320、330向L4电路提供内部输入值,并且加法器325、335生成用于路由回它们各自的寄存器库305、315的中间值。这提供了向L4电路340每周期提供两个内部输入值的高效机制,同时还使得中间加法和减法将被并行地执行。输出加法器电路375、380、385、390能够以相似的方式进行布置来执行SIMD加法和减法运算。
在一个实施例中,每个提供的输入值是16比特大小,并且寄存器库300、305、310、315具有18比特的输入和输出来容纳大小增加的操作数,该大小增加的操作数可以通过由加法器电路320、325、330、335执行的加法生成。因而,加法器电路320、325、330、335也具有18比特的输入和输出。在另外的加法器电路225内,在一个实施例中寄存器库355、360、365、370和加法器电路375、380、385、390中的每一个具有32比特的输入和输出宽度来容纳内部输出值的大小,该内部输出值是作为在L4电路340内执行的乘法的结果生成的。移位和饱和电路396、398的操作采用从寄存器库392、394接收的相关的32比特输入,并且产生16比特输出,即输出值具有与输入值相同的大小。
图6A和6B提供了示出根据一个实施例的图4的电路的操作的流程图。在步骤400处,N个输入值被提供至排列电路200,随后在步骤405处执行排列从而创建K个群组的M个值(排列取决于装置是被配置为执行FDCT还是IDCT)。在步骤410处,确定装置是否被配置为执行IDCT,并且如果是,则处理前进到步骤415,在该步骤415中加法器电路210被用于生成要经受IDCT操作的M个内部输入值。在步骤420处,将该M个内部输入值被传送通过基础电路215以使用M×M的IDCT矩阵执行矩阵乘法,其中适当的系数值是由系数生成电路220提供的。
处理然后前进到步骤425,其中在步骤425加法器电路210被用于对来自存储设备205内的所选群组中的相应成员执行加法和减法运算,以便生成多组M个内部输入值,该多组M个内部输入值要经受与汉克尔矩阵的乘法。在步骤430处,将每组内部输入值顺序地传送通过基础电路215,从而使得矩阵乘法的多此迭代通过使用汉克尔矩阵(也被称作LM线性关联矩阵)被执行。如上所述,系数生成电路220通常将针对每次迭代生成不同组的系数值。
处理然后前进到步骤435,其中在步骤435中确定是否正在执行FDCT。如果不是,则处理直接前进到步骤450。相反,如果FDCT正在被执行,那么如图6A中所示,步骤415和420将被绕开,并且在步骤425和430的执行后接着执行代替这两个步骤的步骤440和445。具体地,在步骤440处,加法器电路210被用于生成M个内部输入值,该M个内部输入值要经受使用M×M的FDCT矩阵的FDCT矩阵乘法。此后,在步骤445处,该M个内部输入值将被传送通过基础电路215,该基础电路215然后使用FDCT矩阵执行所需的矩阵乘法。再次,系数生成电路220针对M×M的FDCT矩阵生成适当的系数值。
在步骤445后,或者如果正在执行IDCT的情况下直接在步骤435之后,处理前进到步骤450,其中在步骤450另外的加法器电路被用于对由基础电路215生成的多组M个内部输出值执行加法和/或减法运算,以生成N个中间输出值。尽管在图6B中,步骤450被示出为在由基础电路执行的基础操作的所有迭代已经执行完之后被执行,但应认识到:在可替换的实施例中,另外的加法器电路可以在每组M个内部输出值被基础电路生成后就对它们进行操作。
一旦步骤450已经被执行,存储设备230将包括N个中间输出值。在步骤455处,移位和饱和电路235对中间输出值应用移位和饱和操作,以生成经移位和饱和的中间输出值。另外的排列电路240接着执行另外的排列操作以对由移位和饱和电路235提供的输出值进行排列以便生成N个输出值。此时,N个输出值将表示N个输入值的比特级精确变换。另外的排列电路240所执行的实际的排列将取决于正在执行的是FDCT还是IDCT。
通过使用以上描述的实施例的机制,已经发现对于每个一维变换所需的乘法的数目能够被显著地减少,同时维持了诸如HEVC标准之类的现代视频标准所需的比特级精确结果。该技术可以被用于编码和解码,并且可轻易地扩展到任何大小的N。在一个实施例中,对于每个一维变换,由基础电路215执行的乘法的总数目为3n-1+3n-2+…+9+Z,其中Z≤9并且其中N=2n。Z的值取决于执行单个M×M离散余弦变换所需的乘法的数目,并且在一个被配置为对32×32阵列(即,N=32)进行操作并且其中M=4的具体实现方式中,发现对于单个4×4离散余弦变换需要六次乘法(即,Z=6)。根据上式,结果为需要123次乘法,这约为已知的局部蝶形方法所需的乘法数目的三分之一。
LM矩阵所需的迭代的数目能够从上式直接导出。具体地,对于其中M等于4的示例,相应地由基础电路执行L4矩阵乘法的多次迭代,那么需要9次乘法来实现每个L4矩阵乘法。如果N为32,在上文所述时需要123次乘法,这包括执行单个4×4离散余弦变换所需的六次乘法。因此,需要117次乘法来实现L4矩阵乘法的乘法,并且具体地将有L4矩阵的13次迭代,每次迭代需要9次乘法。
提供了与具体实施例有关的以下附加信息。
反向变换算法描述
本节描述了如何计算N点反向离散余弦变换所需的操作,其中点数N为2的幂。首先定义了投影(projection):
然后,N点反向离散余弦变换TN(c0,...,cN-1)能够被这样的矩阵定义,该矩阵中第i行,第j列的元素由下式给出:
TN=[sN((2i+1)j)c(pN((2i+1)j))]i,j
在实践中,系数ci是c(k)=cos(kπ/2N)的定标(scaled)整数估计或分数估计,但不依赖于具有具体值的系数,只有这样矩阵才具有以上形式。以下矩阵示出了较小的N时的TN,
输入矢量x和输出矢量y由等式y=TNx进行关联。
然后还定义了以下内容:
qN(k)=p2N(3k)这是1与2N-1之间的奇数值(等式1)
tN(k)=s2N(3k)(等式2)
两个排列PN和QN由下式定义:
QNy=(y((qN(0)-1)/2),y((qN(1)-1)/2),...,y((qN(N-1)-1)/2))(等式4)
排列PN是线性矢量的有符号排列(该描述省略了多行来使得此模型变得清楚)。排列QN是在不改变符号的情况下的多个值的重新排列。
对输入、输出和系数值进行排列,给出了新的排列变换从而使得如果汉克尔矩阵还被定义为:
那么第一关联(R1)为:
第二关联(R2)为:
关联(R1)将减少至和LN/2,然后是N次加法和减法。
关联(R2)将LN减少至N/2次加法,然后是三次与LN/2的乘法,接着是N次加法。这不包括系数减法,但是系数被假设为固定的并且相减的系数值能够事先被计算出来。
对于N=2n≥8,递归地重复关联(R1)和(R2)将减少为加法,随后是与的一次乘法和与L4形式的矩阵的(3n-3+…+1)次乘法、随后是加法和减法。
反向变换示例
本节示出了如何将前节的理论应用到N=16的实际情形中。
首先,输入矢量x=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15),其被排列为
经排列的矢量被划分为分别具有4个元素的4个群组或4个矢量:
X0=(x0,x8,x4,x12),X1=(x2,x6,-x14,x10),X2=(x1,x3,x9,-x5),X3=(-x15,x13,x7,x11)
以类似的方式对系数进行排列和分组:
C0=(c0,c8,c4,c12),C1=(c2,c6,-c14,c10),C2=(c1,c3,c9,-c5),C3=(-c15,c13,c7,c11)
输出矢量被划分为四个经排列的群组:
Y0=(y0,y1,y4,y13),Y1=(y8,y6,y12,y5),Y2=(y15,y14,y11,y2),Y3=(y7,y9,y3,y10)
应用关联R1,给出以下等式:
Y0=W0+W2,Y1=W1+W3,Y2=W0-W2,Y3=W1-W3
应用关联R1和R2,给出以下等式:
W0=W'0+W'1,W1=W'0-W'1,W2=W'2+W'4,W3=W'3+W'4
W'2=L4(C2-C3,C3+C2)X2,W'3=L4(-C2-C3,-C3+C2)X3
W'4=L4(C3,-C2)(X2+X3)
这将变换减少至一次和四次L4操作。
前向变换算法描述
N点前向离散余弦变换FN(c0,...,cN-1)=NTN -1能够由这样的矩阵来定义,其中该矩阵在第i行、第j列的元素为:
FN=[sN((2j+1)i)c(pN((2j+1)i))]i,j
定义FN=NTN -1,调换输入和输出排列,并且对关联(R1)进行反向,得到以下的关联(R3):
对于N=2n≥8,递归地重复关联(R3)和(R2)将减少为加法和减法、随后是与的一次乘法和与L4形式的矩阵的(3n-3+…+1)次乘法、随后是加法。能够以与反向变换示例相似的方式来应用这些关联。
示例实现
下面的示例C代码分别以函数fact_idct_1d_i16()和fact_fdct_1d_i16()实现了反向变换TN和前向变换FN。
根据上文所述的实施例将认识到,这些实施例提供了针对各种尺寸的N执行前向和反向变换二者的可扩展机制,结果是显著减少了执行变换所需的乘法的数目,并且产生了比特级的精确结果。
尽管这里已经描述了本发明的特定实施例,但是本发明不限于此,在本发明的范围内可以作出许多修改和添加。例如,在不背离本发明的范围的情况下,可以得到以下从属权利要求的特征与独立权利要求的特征的各种组合。
Claims (23)
1.一种用于在处理视频数据时执行空域和频域之间的变换的数据处理装置,所述数据处理装置包括:
变换电路,该变换电路被配置为接收N个输入值并执行一系列操作来生成表示所述N个输入值在所述空域和频域之间的变换的N个输出值;
基础电路,该基础电路被配置为接收由所述变换电路生成的M个内部输入值并执行基础操作来生成用于返回至所述变换电路的M个内部输出值,其中M大于或等于4,所述基础操作等同于所述M个内部输入值与包括系数c的阵列的矩阵的矩阵乘法,该矩阵具有以下形式:
c0c1c2…cM-1
c1c2c3…cM
c2c3c4…cM+1;并且
…
cM-1cMcM+1…c2M-2
所述变换电路在所述一系列操作的执行期间被布置为:根据所述N个输入值生成多组所述M个内部输入值、向所述基础电路提供每组M个内部输入值从而使得多组所述M个内部输出值被产生、以及根据所述多组M个内部输出值导出所述N个输出值。
2.如权利要求1所述的数据处理装置,其中:
所述包括系数c的阵列的矩阵是汉克尔矩阵;并且
所述基础电路被配置为执行等同于所述M个内部输入值与所述汉克尔矩阵的矩阵乘法的所述基础操作,而不考虑分配到系数c0到c2M-2的值。
3.如权利要求1所述的数据处理装置,其中在空域和频域之间执行的变换是离散余弦变换。
4.如权利要求1所述的数据处理装置,其中所述变换电路包括:
排列电路,该排列电路被配置为对接收到的N个输入值进行排列从而产生输入值的K个群组,其中K=N/M,每个群组具有M个成员,每个成员是所述接收到的N个输入值中的一个;以及
加法器电路,该加法器电路被配置为对来自所选群组中的相应成员执行加法运算和减法运算中的至少一种,从而生成每组所述M个内部输入值。
5.如权利要求4所述的数据处理装置,其中所述变换电路还包括:
另外的加法器电路,该另外的加法器电路被配置为对由所述基础电路产生的多组所述M个内部输出值执行加法运算和减法运算中的至少一种,从而产生N个中间输出值。
6.如权利要求5所述的数据处理装置,其中所述变换电路还包括:
移位电路,该移位电路被配置为对所述N个中间输出值执行移位操作从而生成经移位的中间输出值。
7.如权利要求6所述的数据处理装置,其中所述移位操作包括饱和操作。
8.如权利要求6所述的数据处理装置,其中所述变换电路还包括:
另外的排列电路,该另外的排列电路被配置为对N个经移位的中间输出值进行排列从而生成所述N个输出值。
9.如权利要求1所述的数据处理装置,还包括系数生成电路,该系数生成电路被配置为针对每组M个内部输入值生成相应的一组系数值,该组系数值在所述基础电路执行所述基础操作时被使用。
10.如权利要求1所述的数据处理装置,其中所述数据处理装置能够被配置为执行从空域到频域的前向变换和从频域到空域的反向变换中的一种变换。
11.如权利要求10所述的数据处理装置,还包括系数生成电路,该系数生成电路被配置为针对每组M个内部输入值生成相应的一组系数值,该组系数值在所述基础电路执行所述基础操作时被使用,其中不论所述数据处理装置是被配置为执行所述前向变换还是被配置为执行所述反向变换,由所述系数生成电路针对每组M个内部输入值生成的所述相应的一组系数值是相同的。
12.如权利要求1所述的数据处理装置,其中在空域和频域之间执行的变换是离散余弦变换,其中所述变换电路还被配置为生成另一组M个内部输入值用于提供给所述基础电路,并且所述基础电路被配置为通过执行等同于所述另一组M个内部输入值与离散余弦变换矩阵的矩阵乘法的离散余弦变换来对所述另一组M个内部输入值执行离散余弦变换。
13.如权利要求12所述的数据处理装置,其中所述数据处理装置被配置为在所述视频数据的编码期间执行前向离散余弦变换,并且所述基础电路被配置为在对所述多组M个内部输入值执行基础操作之后,执行作为所述离散余弦变换操作的前向离散变换操作。
14.如权利要求12所述的数据处理装置,其中所述数据处理装置被配置为在所述视频数据的解码期间执行反向离散余弦变换,并且所述基础电路被配置为在对所述多组M个内部输入值执行基础操作之前执行作为所述离散余弦变换操作的反向离散变换操作。
15.如权利要求1所述的数据处理装置,其中N是M的倍数。
16.如权利要求15所述的数据处理装置,其中N是2的幂。
17.如权利要求1所述的数据处理装置,其中M为4。
18.如权利要求1所述的数据处理装置,其中所述变换电路包括:
排列电路,该排列电路被配置为对接收到的N个输入值进行排列从而产生输入值的K个群组,其中K=N/M,每个群组具有M个成员,每个成员是所述接收到的N个输入值中的一个;以及
加法器电路,该加法器电路被配置为对来自所选群组中的相应成员执行加法运算和减法运算中的至少一种,从而生成每组所述M个内部输入值,其中所述加法器电路被配置为SIMD电路,该SIMD电路提供用于并行地执行加法运算和减法运算中的至少一种的M个并行处理通道,从而生成每组所述M个内部输入值。
19.如权利要求1所述的数据处理装置,其中所述变换电路包括:
排列电路,该排列电路被配置为对接收到的N个输入值进行排列从而产生输入值的K个群组,其中K=N/M,每个群组具有M个成员,每个成员是所述接收到的N个输入值中的一个;以及
加法器电路,该加法器电路被配置为对来自所选群组中的相应成员执行加法运算和减法运算中的至少一种,从而生成每组所述M个内部输入值;以及
另外的加法器电路,该另外的加法器电路被配置为对由所述基础电路产生的多组所述M个内部输出值执行加法运算和减法运算中的至少一种,从而产生N个中间输出值;
其中所述另外的加法器电路被配置为SIMD电路,该SIMD电路提供M个并行处理通道以用于对由所述基础电路产生的每组所述M个内部输出值并行地执行加法运算和减法运算中的至少一种。
20.如权利要求1所述的数据处理装置,其中:
所述数据处理装置被配置为通过分别对每行的N个数据值和每列的N个数据值执行所述空域和频域之间的变换,来对包括N×N阵列的数据值的视频数据块进行操作;并且
由所述基础电路针对每行和每列执行的乘法的总数目为:
3n-1+3n-2+…+9+Z,其中Z≤9,并且其中N=2n。
21.如权利要求1所述的数据处理装置,还包括系数生成电路,该系数生成电路被配置为针对每组M个内部输入值生成相应的一组系数值,该组系数值在所述基础电路执行所述基础操作时被使用,其中所述数据处理装置能够被配置为通过促使所述系数生成电路依据当前选择的视频标准来设定针对每组M个内部输入值被应用到所述基础电路的相应的一组系数来支持不同的视频标准。
22.一种用于在处理视频数据时执行空域和频域之间的变换的方法,所述方法包括:
采用变换电路接收N个输入值并执行一系列操作,来生成表示所述N个输入值在所述空域和频域之间的变换的N个输出值;
采用基础电路接收由所述变换电路生成的M个内部输入值并执行基础操作,来生成用于返回至所述变换电路的M个内部输出值,其中M大于或等于4,该基础操作等同于所述M个内部输入值与包括系数c的阵列的矩阵的矩阵乘法,该矩阵具有以下形式:
c0c1c2…cM-1
c1c2c3…cM
c2c3c4…cM+1;并且
…
cM-1cMcM+1…c2M-2
由所述变换电路执行的所述一系列操作包括:
根据所述N个输入值生成多组所述M个内部输入值;
向所述基础电路提供每组M个内部输入值从而使得多组所述M个内部输出值被产生;以及
根据所述多组M个内部输出值导出所述N个输出值。
23.一种用于在处理视频数据时执行空域和频域之间的变换的数据处理装置,所述数据处理装置包括:
变换模块,该变换模块用于接收N个输入值并且用于执行一系列操作来生成表示所述N个输入值在所述空域和频域之间的变换的N个输出值;
基础电路模块,该基础电路模块用于接收由所述变换模块生成的M个内部输入值并且用于执行基础操作来生成用于返回至所述变换模块的M个内部输出值,其中M大于或等于4,所述基础操作等同于所述M个内部输入值与包括系数c的阵列的矩阵的矩阵乘法,该矩阵具有以下形式:
c0c1c2…cM-1
c1c2c3…cM
c2c3c4…cM+1;并且
…
cM-1cMcM+1…c2M-2
在所述一系列操作的执行期间,所述变换模块用于:根据所述N个输入值生成多组所述M个内部输入值、向所述基础电路模块提供每组M个内部输入值从而使得多组所述M个内部输出值被产生、以及根据所述多组M个内部输出值导出所述N个输出值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1308186.4A GB2514099B (en) | 2013-05-07 | 2013-05-07 | A data processing apparatus and method for performing a transform between spatial and frequency domains when processing video data |
GB1308186.4 | 2013-05-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104144346A true CN104144346A (zh) | 2014-11-12 |
CN104144346B CN104144346B (zh) | 2019-01-04 |
Family
ID=48627390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410190960.9A Active CN104144346B (zh) | 2013-05-07 | 2014-05-07 | 用于执行空域和频域之间的变换的数据处理装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9378186B2 (zh) |
JP (1) | JP6357345B2 (zh) |
CN (1) | CN104144346B (zh) |
GB (1) | GB2514099B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254877A (zh) * | 2015-06-11 | 2016-12-21 | Arm有限公司 | 视频处理系统 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2514099B (en) * | 2013-05-07 | 2020-09-09 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing a transform between spatial and frequency domains when processing video data |
CN111260020B (zh) * | 2018-11-30 | 2024-04-16 | 深圳市海思半导体有限公司 | 卷积神经网络计算的方法和装置 |
US11647227B2 (en) * | 2021-08-16 | 2023-05-09 | Nvidia Corporation | Efficient transforms and transposes for rate-distortion optimization and reconstruction in video encoders |
CN114531600B (zh) * | 2022-02-18 | 2023-10-03 | 阿里巴巴(中国)有限公司 | 变换单元、现场可编程门阵列、芯片、电子设备、片上系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6246370A (ja) * | 1985-08-23 | 1987-02-28 | Toshiba Corp | 線形変換装置 |
US5394349A (en) * | 1992-07-10 | 1995-02-28 | Xing Technology Corporation | Fast inverse discrete transform using subwords for decompression of information |
US5452466A (en) * | 1993-05-11 | 1995-09-19 | Teknekron Communications Systems, Inc. | Method and apparatus for preforming DCT and IDCT transforms on data signals with a preprocessor, a post-processor, and a controllable shuffle-exchange unit connected between the pre-processor and post-processor |
KR100538605B1 (ko) * | 1998-03-18 | 2005-12-22 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 데이터 처리 장치, 행렬 변환 방법 및 컴퓨터 판독가능한 매체 |
CN1198177C (zh) * | 2000-12-25 | 2005-04-20 | 蒋宏 | 对比空间频率实现成像光学系统自动对焦的方法 |
US7730116B2 (en) * | 2004-12-14 | 2010-06-01 | Stmicroelectronics, Inc. | Method and system for fast implementation of an approximation of a discrete cosine transform |
JP4405452B2 (ja) * | 2005-09-14 | 2010-01-27 | 三菱電機株式会社 | 逆変換回路 |
US8326068B1 (en) * | 2006-08-30 | 2012-12-04 | Maxim Integrated Products, Inc. | Method and apparatus for modeling quantization matrices for image/video encoding |
WO2009100021A2 (en) * | 2008-02-01 | 2009-08-13 | Lehigh University | Bilinear algorithms and vlsi implementations of forward and inverse mdct with applications to mp3 audio |
US20110137969A1 (en) * | 2009-12-09 | 2011-06-09 | Mangesh Sadafale | Apparatus and circuits for shared flow graph based discrete cosine transform |
GB2514099B (en) * | 2013-05-07 | 2020-09-09 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing a transform between spatial and frequency domains when processing video data |
-
2013
- 2013-05-07 GB GB1308186.4A patent/GB2514099B/en active Active
-
2014
- 2014-03-26 US US14/225,473 patent/US9378186B2/en active Active
- 2014-05-01 JP JP2014094764A patent/JP6357345B2/ja active Active
- 2014-05-07 CN CN201410190960.9A patent/CN104144346B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254877A (zh) * | 2015-06-11 | 2016-12-21 | Arm有限公司 | 视频处理系统 |
Also Published As
Publication number | Publication date |
---|---|
US9378186B2 (en) | 2016-06-28 |
CN104144346B (zh) | 2019-01-04 |
GB201308186D0 (en) | 2013-06-12 |
GB2514099A (en) | 2014-11-19 |
US20140337396A1 (en) | 2014-11-13 |
JP6357345B2 (ja) | 2018-07-11 |
GB2514099B (en) | 2020-09-09 |
JP2014241585A (ja) | 2014-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mert et al. | High performance 2D transform hardware for future video coding | |
RU2429531C2 (ru) | Преобразования с общими множителями | |
CN104144346A (zh) | 用于执行空域和频域之间的变换的数据处理装置和方法 | |
CN1697328B (zh) | 快速视频编解码变换实现 | |
US7117236B2 (en) | Parallel adder-based DCT/IDCT design using cyclic convolution | |
CN101330616B (zh) | 视频解码过程中反离散余弦变换的硬件实现装置及方法 | |
Di Nola et al. | Łukasiewicz transform and its application to compression and reconstruction of digital images | |
CN106254883B (zh) | 一种视频解码中的反变换方法和装置 | |
CN108200439B (zh) | 提高数字信号变换性能的方法及数字信号变换方法和装置 | |
US7099390B2 (en) | Prediction apparatus, encoding apparatus, inverse prediction apparatus, decoding apparatus, and computing apparatus | |
Mert et al. | An FPGA implementation of future video coding 2D transform | |
CN105453566B (zh) | 数据编码及数据解码 | |
Coelho et al. | Computation of 2D 8× 8 DCT based on the Loeffler factorization using algebraic integer encoding | |
KR101395143B1 (ko) | 영상처리의 정수변환 방법 및 정수변환 장치 | |
JPH07121507A (ja) | 離散コサイン変換装置 | |
CN102043605B (zh) | 一种多媒体变换乘法器及其处理方法 | |
Viitamäki et al. | High-level synthesized 2-D IDCT/IDST implementation for HEVC codecs on FPGA | |
Dhakar et al. | A novel parallel architecture of lifting based 2D-discrete wavelet transform | |
KR20130137951A (ko) | 초고해상도 영상 코덱을 위한 역변환 방법 | |
CN101316367B (zh) | 一种视频编解码标准中的二维反变换方法及其实现电路 | |
CN101583038A (zh) | Satd快速实现的硬件架构 | |
Petrovsky et al. | Pipelined embedded processor of quaternionic m-band wavelets for image multiresolution analysis | |
Kello | DCT-V for Video Coding: A reconfigurable implementation for length 32 and 4. | |
Nguyen et al. | Designing and Implementing a 2D Integer DCT Hardware Accelerator Fully Compatible with Versatile Video Coding | |
Kammoun et al. | A unified 2d hardware architecture of the future video cod-ing adaptive multiple transforms on soc platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180604 Address after: cambridge Applicant after: Advanced Risc Machines Ltd. Applicant after: Anne science and Technology (China) Co., Ltd. Address before: cambridge Applicant before: Advanced Risc Machines Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |