首页> 中国专利> 用于计算5点Ⅱ型离散余弦变换,Ⅳ型离散余弦变换和Ⅳ型离散正弦变换的快速算法,以及架构

用于计算5点Ⅱ型离散余弦变换,Ⅳ型离散余弦变换和Ⅳ型离散正弦变换的快速算法,以及架构

摘要

本发明提供一种较高效的编码器/解码器,其中N点MDCT变换被映射到较小大小的N/2点DCT-IV、DST-IV和/或DCT-II变换。与用于音频编解码器中的许多现有MDCT设计中所使用的DCT-IV或FFT核心相对比,所述MDCT可通过利用经均一定标的5点DCT-II核心函数而由因子2对称地分样。可实施所述5点变换的各种变换因子分解以较高效地实施变换。

著录项

  • 公开/公告号CN101896966A

    专利类型发明专利

  • 公开/公告日2010-11-24

    原文格式PDF

  • 申请/专利权人 高通股份有限公司;

    申请/专利号CN200880120281.7

  • 申请日2008-12-13

  • 分类号G10L19/02;G06F17/14;

  • 代理机构北京律盟知识产权代理有限责任公司;

  • 代理人刘国伟

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 01:09:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-11-21

    授权

    授权

  • 2011-01-05

    实质审查的生效 IPC(主分类):G10L19/02 申请日:20081213

    实质审查的生效

  • 2010-11-24

    公开

    公开

说明书

根据35U.S.C.§119主张优先权

本专利申请案主张2007年12月13日申请的标题为“用于计算5点离散余弦变换-II,离散余弦变换-IV和离散正弦变换-V的快速算法,以及用于设计大小为N=5*2K的变换的架构(Fast Algorithms for Computation of 5-Point DCT-II,DCT-IV,and DST-V,andArchitecture for Design of Transforms of Size N=5*2K)”的第61/013,579号美国临时申请案以及2008年3月25日申请的标题为“G.EV-VBR MDCT模块(G.EV-VBR MDCTModule)”的第61/039,194号美国临时申请案的优先权,上述申请案均转让给本案受让人,且特此以引用的方式明确地并入本文中。

技术领域

以下描述大体上涉及编码器和解码器,且明确地说,涉及语音和音频编解码器的高效MDCT/IMDCT实施方案。

背景技术

音频编码的一个目标是将音频信号压缩成所要的有限信息量,同时尽可能保持原音质。在编码过程中,将时域中的音频信号变换到频域中,且对应的解码过程使此运算反向。

作为此编码过程的一部分,可通过经修改离散余弦变换(MDCT)来处理信号。经修改离散余弦变换(MDCT)是基于IV型离散余弦变换(DCT-IV)的傅立叶相关变换,其具有块经重叠以使得一个块的结尾与下一个块的开头重合的额外性质。此重叠有助于避免混迭假象,且除DCT的能量集中质量之外,还使MDCT对信号压缩应用尤其有吸引力。

MDCT变换也已在话音压缩中得到应用。ITU-T G.722.1和G.722.1C声码器将MDCT应用于输入话音信号上,而较新近的ITU-T G.729.1和G.718算法使用MDCT来处理在使用码激励线性预测(CELP)编码器之后剩余的残余信号。上文所提及的声码器以8kHz或16kHz以及10或20毫秒帧的输入取样率操作。因此,声码器的MDCT滤波器组为160点或320点变换。

然而,如果未来的话音编码器将支持块交换功能性,那么还可能需要对经分样大小(例如,160点、80点、40点)的支持。因此,需要具有较小变换大小的高效实施方案,以使用较小大小的核心变换来实施较大变换。

发明内容

以下呈现对一个或一个以上实施例的简化概述,以便提供对一些实施例的基本理解。此概述并非所有预期实施例的广泛综述,且无意识别所有实施例的关键或重要要素,也无意划定任何或所有实施例的范围。此概述的唯一目的是以简化形式呈现一个或一个以上实施例的一些概念,作为稍后呈现的更详细描述的序言。

提供一种编码方法和/或装置用于计算变换值。接收表示音频信号的时域输入值。使用递归分样为多个5点变换的经修改离散余弦变换(MDCT)将输入值变换为频谱系数。可实施各种因子分解来高效地处理5点变换。

在一个实例(图5)中,所述多个5点变换中的至少一者可包括至少一个离散余弦变换类型II(DCT-II)(502),其由十二(12)个加法运算、八(8)个乘法运算以及具有三(3)个运算的最长路径长度因子分解。举例来说,所述多个5点变换中的至少一者包括至少一个离散余弦变换类型II(DCT-II)(502),其采用输入向量[x0,x1,x2,x3,x4]来产生输出向量[X0,X1,X2,X3,X4],且特征在于以下中间结果中间结果中的至少多个中间结果:

w0=x0-x4;

w4=x0+x4;

w1=x1-x3;

w3=x1+x3;

u2=x2+w3+w4;

u3=-d*w3+c*w4;

u4=d*w4+c*w3;

使得

X0=u2;

X1=b*w1+a*w0;

X2=u3-x0;

X3=a*w1-b*w0;

X4=u4+x0;

其中a=2cos(π10);b=cos(3π10);c=-cos(π5);d=cos(2π5).

在另一实例(图6)中,所述多个5点变换中的至少一者包括至少一个离散余弦变换类型II(DCT-II)(602),其由十二(12)个加法运算、五(5)个乘法运算、两(2)个移位运算以及具有四(4)个运算的最长路径长度因子分解。举例来说,所述多个5点变换中的至少一者包括至少一个离散余弦变换类型II(DCT-II)(602),其采用输入向量[x0,x1,x2,x3,x4]来产生输出向量[X0,X1,X2,X3,X4],且特征在于以下中间结果中的至少多个中间结果:

w0=x0-x4;

w1=x1-x3;

z2=x1+x3;

z4=x0+x4;

u2=z2+z4;

使得

X0=u2+x2;

X1=b*w1+a*w0;

X2=c*u2+0.5*z2-x2;

X3=a*w1-b*w0;

X4==-c*u2-0.5*z4+x2;

其中a=2cos(π10);b=cos(3π10);c=-cos(π5);d=cos(2π5).

在另一实例(图7)中,所述多个5点变换中的至少一者可包括至少一个离散余弦变换类型II(DCT-II)(702),其由十二(12)个加法运算、五(5)个乘法运算、一(1)个移位运算以及具有四(4)个运算的最长路径长度因子分解。举例来说,所述多个5点变换中的至少一者包括至少一个离散余弦变换类型II(DCT-II)(702),其采用输入向量[x0,x1,x2,x3,x4]来产生输出向量[X0,X1,X2,X3,X4],且特征在于具有以下中间结果:

w0=x0-x4;

w1=x1-x3;

z2=x1+x3;

z4=x0+x4;

t2=z2+z4;

t4=z2-z4;

c′=c+0.25;

使得

X0=t2+x2;

X1=b*w1+a*w0;

X2=c′*t2-0.25*t4-x2=0.25*t4+c′*t2-x2);

X3=a*w1-b*w0;

X4=-c′*t2-0.25*t4+x2=0.25*t4-(c′*t2-x2);

其中a=2cos(π10);b=cos(3π10);c=-cos(π5);d=cos(2π5).

在另一实例(图8)中,所述多个5点变换中的至少一者可包括至少一个离散余弦变换类型II(DCT-II)(802),其由十二(12)个加法运算、四(4)个乘法运算、两(2)个移位运算以及具有四(4)个运算的最长路径长度因子分解。举例来说,所述多个5点变换中的至少一者包括至少一个离散余弦变换类型II(DCT-II)(802),其采用输入向量[x0,x1,x2,x3,x4]来产生输出向量[X0,X1,X2,X3,X4],且特征在于以下中间结果中的至少多个中间结果:

w1=x0+x4;

w2=x4-x0;

w3=x3-x1;

w4=x3+x1;

w5=w1+w4;

w6=w4-w1;

u1=x2-αw5;

u2=x2+w5;

u3=βw2+γw3;

u4=βw3-γw2;

u5=δw6;

使得

X0=u2;

X1=u4;

X2=u4-u1;

X3=u3;

X4=u1+u5;

其中α=14;β=cos(3π10);γ=-cos(π10);δ=-54.

或者,所述多个5点变换中的至少一者可包括至少一个变换(802),其由十二(12)个加法运算、五(5)个乘法运算、一(1)个移位运算以及具有四(4)个运算的最长路径长度因子分解。

在另一实例(图9)中,所述多个5点变换中的至少一者可包括离散余弦变换类型IV(DCT-IV)(902),其由二十(20)个加法运算、十六(16)个乘法运算以及具有三(3)个运算的最长路径长度因子分解。举例来说,所述多个5点变换中的至少一者可包括至少一个离散余弦变换类型IV(DCT-IV)(902),其采用输入向量[x0,x1,x2,x3,x4]来产生输出向量[X0,X1,X2,X3,X4],且特征在于以下中间结果中的至少多个中间结果:

k1=g*x1+h*x3;

k2=h*x1+g*x3;

k3=f*x0+i*x4;

k4=i*x0+f*x4;

k5=i*x1-f*x3;

k6=-f*x1+i*x3;

k7=g*x0-h*x4;

k8=h*x0-g*x4;

j1=x0+x4;

j2=x3-x1;

使得

X0=k3+k1+x2;

X1=k7+k5-x2;

X2=j1+j2-x2;

X3=h*x0-g*x4-f*x1+i*x3+x2;

X4=k4-k2+x2。

其中f=2cos(π20);g=2cos(3π20);h=2cos(7π20);i=2cos(9π20).

在另一实例(图10)中,所述多个5点变换中的至少一者可包括离散余弦变换类型IV(DCT-IV)(1002),其由二十(20)个加法运算、十二(12)个乘法运算以及具有四(4)个运算的最长路径长度因子分解。举例来说,所述多个5点变换中的至少一者可包括至少一个离散余弦变换类型IV(DCT-IV)(1002),其采用输入向量[x0,x1,x2,x3,x4]来产生输出向量[X0,X1,X2,X3,X4],且特征在于以下中间结果中的至少多个中间结果:

q1=x0+x4;

q2=x3-x1;

p1=(x1-x3)*g-x1*(g+h)=q2*g-x1*(g+h);

p2=(x1-x3)*g+x3*(h+g)=q2*g+x3*(g+h);

p3=(x0+x4)*f+x0*(i-f)=q1*f+x0*(i-f);

p4=(x0+x4)*f+x4*(i-f)=q1*f+x4*(i-f);

p5=(x3-x1)*f+x3*(i-f)=q2*f+x3*(i-f);

p6=(x3-x1)*f-x1*(i-f)=q2*f-x1*(i-f);

p7=(x0+x4)*g+x0*(h+g)=q1*g+x0*(h+g);

p8=(x0+x4)*g+x4*(h+g)=q1*g+x4*(h+g);

使得

X0=p2+p4+x2;

X1=p5+p7-x2;

X2=q1+q2-x2;

X3=p6+p8+x2;

X4=p1+p3+x2;

其中f=2cos(π20);g=2cos(3π20);h=2cos(7π20);i=2cos(9π20).

在另一实例(图14)中,所述多个5点变换中的至少一者可包括离散余弦变换类型IV(DCT-IV)(1402),其由十六(16)个加法运算、九(9)个乘法运算以及具有五(5)个运算的最长路径长度因子分解。举例来说,所述多个5点变换中的至少一者可包括至少一个离散余弦变换类型IV(DCT-IV)(1402),其采用输入向量[x0,x1,x2,x3,x4]来产生输出向量[X0,X1,X2,X3,X4],且特征在于以下中间结果中的至少多个中间结果:

w0=f*x0-i*x4;

w1=g*x1-h*x3;

z2=g*x1+h*x3;

z4=f*x0+i*x4;

v1=2b*w1+2a*w0;

v2=z2+z4;

v3=2b*w0-2a*w1;

y2=2c*v2+z2-2*x2;

y4=-2c*v2-z4+2*x2;

使得

X0=v2+x2;

X1=v1-2*X0;

X2=y2-X1;

X3=v3-X2;

X4=y4-X3;

其中a=2cos(π10);b=cos(3π10);c=-cos(π5);d=cos(2π5);

f=2cos(π20);g=2cos(3π20);h=2cos(7π20);i=2cos(9π20).

在另一实例(图15)中,其中所述多个5点变换中的至少一者可包括离散余弦变换类型IV(DCT-IV)(1502),其由十五(15)个加法运算、十(10)个乘法运算、两移位(2)个运算以及具有五(5)个运算的最长路径长度因子分解。举例来说,所述多个5点变换中的至少一者可包括至少一个离散余弦变换类型IV(DCT-IV)(1502),其采用输入向量[x0,x1,x2,x3,x4]来产生输出向量[X0,X1,X2,X3,X4],且特征在于以下中间结果中的至少多个中间结果;

w0=f*x0-i*x4;

w1=g*x1-h*x3;

z2=g*x1+h*x3;

z4=f*x0+i*x4;

v1=2b*w1+2a*w0;

v2=z2+z4;

v3=2b*w0-2a*w1;

y2=(2c+2)*v2+z2;

y4=2c*v2+z4;

使得

X0=v2+x2;

X1=v1-2*X0;

X2=y2-v1;

X3=v3-X2;

X4=-y4+2*x2-X3;

其中a=2cos(π10);b=cos(3π10);c=-cos(π5);d=cos(2π5);

f=2cos(π20);g=2cos(3π20);h=2cos(7π20);i=2cos(9π20).

在另一实例(图16)中,所述多个5点变换中的至少一者可包括离散余弦变换类型IV(DCT-IV)(1602/1702),其由十五(15)个加法运算、十一(11)个乘法运算、两移位(2)个运算以及具有五(5)个运算的最长路径长度因子分解。举例来说,所述多个5点变换中的至少一者可包括至少一个离散余弦变换类型IV(DCT-IV)(1602),其采用输入向量[x0,x1,x2,x3,x4]来产生输出向量[X0,X1,X2,X3,X4],且特征在于以下中间结果中的至少多个中间结果:

w0=f*x0-i*x4;

w1=g*x1-h*x3;

z2=g*x1+h*x3;

z4=f*x0+i*x4;

v1=2b*w1+2a*w0;

v2=z2+z4;

v3=2b*w0-2a*w1;

d2=(2c+2)*z2+(2c+2)*z4;

d4=(2c+2)*z4+2c*z2;

使得:

X0=z2+z4+x2;

X1=v1-2*X0;

X2=d2-v1;

X3=v3-X2;

X4=-d4+2*x2-X3;

其中a=2cos(π10);b=cos(3π10);c=-cos(π5);d=cos(2π5);

f=2cos(π20);g=2cos(3π20);h=2cos(7π20);i=2cos(9π20).

在另一实例(图17)中,所述多个5点变换中的至少一者可包括至少一个离散余弦变换类型IV(DCT-IV)(1702),其采用输入向量[x0,x1,x2,x3,x4]来产生输出向量[X0,X1,X2,X3,X4],且特征在于以下中间结果中的至少多个中间结果:

w0=f*x0-i*x4;

w1=g*x1-h*x3;

z2=g*x1+h*x3;

z4=f*x0+i*x4;

z1=2a*w0+2b*w1

z3=(2b+2a)*w0-(2a-2b)*w1;

d2=2(c+2)*z2+(2c+2)*z4;

d4=(2c+2)*z4+2c*z2;

使得:

X0=z2+z4+x2;

X1=z1-2*X0;

X2=d2-z1;

X3=z3-d2;

X4=-d4+2*x2-X3;

其中a=2cos(π10);b=cos(3π10);c=-cos(π5);d=cos(2π5);

f=2cos(π20);g=2cos(3π20);h=2cos(7π20);i=2cos(9π20).

在另一实例(图18)中,所述多个5点变换中的至少一者可包括离散余弦变换类型IV(DCT-IV)(1802),其由十五(15)个加法运算、十二(12)个乘法运算、两(2)个移位运算以及具有五(5)个运算的最长路径长度因子分解。举例来说,所述多个5点变换中的至少一者可包括至少一个离散余弦变换类型IV(DCT-IV)(1802),其采用输入向量[x0,x1,x2,x3,x4]来产生输出向量[X0,X1,X2,X3,X4],且特征在于以下中间结果:

w0=f*x0-i*x4;

w1=g*x1-h*x3;

z2=g*x1+h*x3;

z4=f*x0+i*x4;

z1=2a*w0+2b*w1

z3=(2b+2a)*w0-(2a-2b)*w1;

r2=(2c+2)*z2+(2c+2)*z4;

r4=4(c+1)*z2+4(c+1)*z4。

使得

X0=z2+z4+x2;

X1=z1-2*X0;

X2=d2-z1;

X3=z3-r2;

X4=-r4+2*x2-z3;

其中a=2cos(π10);b=cos(3π10);c=-cos(π5);d=cos(2π5);

f=2cos(π20);g=2cos(3π20);h=2cos(7π20);i=2cos(9π20).

另外,变换方法和/或装置可在执行变换之前对输入值执行开窗运算,其中开窗运算实施不对称窗函数。

在一些实施方案中,MDCT可使用5点离散余弦变换类型II来实施640点、320点、160点、80点、40点变换中的至少一者。

在其它实施方案中,MDCT可使用5点离散余弦变换类型IV来实施640点、320点、160点、80点、40点变换中的至少一者。

在其它实施方案中,MDCT可使用5点离散余弦变换类型II和5点离散余弦变换类型IV来实施640点、320点、160点、80点、40点变换中的至少一者。

在其它实施方案中,MDCT使用5点离散正弦变换类型IV来实施640点、320点、160点、80点、40点变换中的至少一者。

提供一种解码方法和/或装置用于计算逆变换值。接收表示音频信号的频谱系数输入值。接着使用递归分样为多个5点逆变换的逆经修改离散余弦变换(IMDCT)来将频谱系数输入值变换为时域输出值。

在一个实例(图32)中,所述多个5点逆变换中的至少一者可包括至少一个逆离散余弦变换类型II(DCT-II)(3202),其由十二(12)个加法运算、四(4)个乘法运算、两(2)个移位运算以及具有四(4)个运算的最长路径长度因子分解。举例来说,所述多个5点逆变换中的至少一者可包括至少一个逆离散余弦变换类型II(IDCT-II)(3202),其采用输入向量[X0,X1,X2,X3,X4]来产生输出向量[x0,x1,x2,x3,x4],且特征在于以下中间结果中的至少多个中间结果:

u1=X4-X2;

u5=X4+X2;

w0=X0+u1;

w5=X0-αu1;

w2=βX3-γX1;

w3=γX3-βX1;

w6=δu5;

w1=w5-w6;

w4=w5+w6;

使得

x0=w1-w2;

x1=w4+w3;

x2=w0;

x3=w4-w3;

x4=w1+w2;

其中α=14;β=cos(3π10);γ=-cos(π10);δ=-54.

另外,所述解码方法和/或装置可在执行逆变换之后对输入值执行开窗运算,其中开窗运算实施不对称窗函数。

在一个实施方案中,IMDCT可使用5点逆离散余弦变换类型II来实施640点、320点、160点、80点、40点变换中的至少一者。

在另一实施方案中,IMDCT可使用5点逆离散余弦变换类型IV来实施640点、320点、160点、80点、40点变换中的至少一者。

在又一实施方案中,IMDCT可使用5点逆离散余弦变换类型II和5点逆离散余弦变换类型IV来实施640点、320点、160点、80点、40点变换中的至少一者。

在一个实施方案中,IMDCT可使用5点逆离散正弦变换类型IV来实施640点、320点、160点、80点、40点变换中的至少一者。

附图说明

当结合图式考虑时,各种特征、性质和优点可从下文所陈述的详细描述内容变得明显,在图式中,相同参考符号始终对应地识别。

图1是说明可包括MDCT分析滤波器组(MDCT analysis filterbank)的编码器的实例的框图。

图2是说明变换可如何由较小变换实施的实例的框图。

图3是说明可实施包括IMDCT合成滤波器组的解码器的实例的框图。

图4是说明逆变换可如何由较小逆变换实施的实例的框图。

图5是说明5点DCT-II变换的因子分解的第一实例的流程图。

图6是说明5点DCT-II变换的因子分解的第二实例的流程图。

图7是说明5点DCT-II变换的因子分解的第三实例的流程图。

图8是说明5点DCT-II变换的因子分解的替代实例的流程图。

图9是说明5点DCT-IV变换的因子分解的第一实例的流程图。

图10是说明5点DCT-IV变换可如何实施的第二实例的流程图。

图11是说明DCT-IV变换可如何映射到DCT-II变换以将输入系数变换为输出系数的框图。

图12是说明可使用5点DCT-II变换来实施5点DCT-IV变换以便将输入系数变换为输出系数的框图。

图13是说明可使用5点DCT-II变换来实施图12的5点DCT-IV变换的因子分解的实例的框图。

图14是说明图13中映射的DCT-IV变换可如何与图6的DCT-II变换组合的框图。

图15是说明图14的DCT-IV变换可如何进一步修改为等效变换的框图。

图16是说明图15的DCT-IV变换可如何进一步修改为等效变换的框图。

图17是说明图16的DCT-IV变换可如何进一步修改为等效变换的框图。

图18是说明图17的DCT-IV变换可如何进一步修改为等效变换的框图。

图19是说明N大小变换可如何递归地分成较小的N/2大小变换直到其由多个5点变换表示为止的框图。

图20是说明变换分样和分裂的实例的框图,其中10点DCT-IV变换递归地分成多个较小的5点DCT-II变换。

图21是说明N大小逆变换可如何递归地分成较小的N/2大小逆变换直到其由多个5点逆变换表示为止的框图。

图22是说明逆变换分样和分裂的实例的框图,其中10点IDCT-IV逆变换递归地分成多个较小的5点IDCT-II逆变换。

图23说明不对称窗形状,其可用于使与变换阶段相关联的延迟减小到10ms,同时保持相同数目的频率系数。

图24是说明用于计算变换值的装置的框图。

图25说明用于使用基于5点核心变换的MDCT变换来编码信号的方法的实例。

图26是说明用于计算变换值的装置的框图。

图27说明用于使用基于核心IDCT-II变换的IMDCT变换来解码信号的方法的实例。

图28说明变换分样和分裂的替代实例,其中10点DCT-IV变换递归地分成多个较小的5点DCT-II变换。

图29说明为图28中的变换的逆变换的10点IDCT-IV变换。

图30是说明变换分样和分裂的实例的框图,其中10点DCT-IV逆变换递归地分成多个较小的5点DCT-II变换和一5点DCT-IV。

图31是说明图30的正向变换的逆变换的实例的框图。

图32说明对应于图8的正向变换的逆变换。

具体实施方式

现在参看图式描述各种实施例,其中相同参考标号始终用于指代相同元件。在以下描述中,出于阐释的目的,陈述大量具体细节以便提供对一个或一个以上实施例的透彻理解。然而,可显而易见,可在没有这些具体细节的情况下实践所述实施例。在其它例子中,以框图形式展示众所周知的结构和装置,以便促进描述一个或一个以上实施例。

综述

一个特征规定通过将N点MDCT变换(其中N=5*2^K,对于某一整数K>=1)映射到较小大小的N/2点DCT-IV、DST-IV和/或DCT-II变换来实施N点MDCT变换。在一个实例中,MDCT可由因子2对称地分样,且在最后阶段利用经定标的5点核心函数。一个特征提供如果干快速算法以用于计算大小为五(5)的DCT-II、DCT-IV和DST-IV核心变换。此处所主张的总变换架构为通用分样过程,其将大小为N的变换递归地分成大小为N/2的两个变换,其中N=5*2^K,且其中通过使用本文中所述的快速技术来实施最后(最小)的5点变换。此大小的变换出现在用于话音和音频编码应用的MDCT滤波器组的设计中,例如,新近且新兴的标准G.729.1、G.718和EVRC-WB。

另一特征规定使用MDCT的经修改开窗阶段,其将用于计算MDCT的以上架构与不对称窗进行组合以减小与变换阶段相关联的延迟,同时保持相同数目的频率系数。

编解码器结构

图1是说明可包括MDCT分析滤波器组的编码器的实例的框图。编码器102可接收输入音频信号104。MDCT分析滤波器组106(即,基于IV型离散余弦变换的经修改离散余弦变换)操作以将时域输入音频信号104分解成多个子带信号,且将所述信号转换到频域,其中每一子带信号被转换为每块每子带的变换系数。所得信号接着由量化器108量化,且由熵编码器110编码,以产生数字化音频信号的位流112。根据一个实例,MDCT分析滤波器组106可由开窗函数114、变换116(例如,时域到频域)和/或定标函数118实施。包括开窗函数114、变换116和/或定标函数116的MDCT分析滤波器组106可在硬件(例如,处理器、电路、可编程逻辑装置等)、软件(例如,可由处理器执行的指令)和/或其组合中实施。

图2是说明变换可如何由较小变换实施的实例的框图。在此实例中,图1的变换116可接收多个输入202,且产生多个输出204。为达到此目的,变换116可由具有相同或较小大小的一个或一个以上变换表示。举例来说,变换116可由多个k点DCT-IV变换206a和206b实施。每一k点DCT-IV变换206a和206b又可由一个或一个以上n点DCT-II变换208a、208b或210a、210b实施。注意,在一些实施方案中,离散正弦变换(DST)-IV可代替DCT-IV变换而使用。通过将较大变换116递归地分成多个较小变换208,此举简化了较大变换116的实施。然而,需要较小变换的高效算法实施来实现使运算减到最少的快速变换性能。在一个实例中,变换116可接收表示音频信号的时域输入值x(0)...x(m)202,且将其变换为频域频谱系数X(0)...X(m)204。下文描述这些较小变换的各种实施方案。

图3是说明可实施包括IMDCT合成滤波器组的解码器的实例的框图。解码器302可接收位流304。熵解码器306解码位流304,其接着由解量化器308解量化以产生频域信号。IMDCT合成滤波器组310(即,基于IV型离散余弦变换的逆经修改离散余弦变换)操作以将频域信号304转换回到时域音频信号312。IMDCT合成滤波器组310可使MDCT分析滤波器组106的运算反向。根据一个实例,IMDCT合成滤波器组310可由定标函数314、逆变换316(例如,频域到时域)和开窗加重叠与加法函数318实施。包括定标函数314、逆变换316和/或开窗函数318的IMDCT合成滤波器组310可以硬件(例如,处理器、电路、可编程逻辑装置等)、软件(例如,可由处理器执行的指令)和/或其组合实施。

图4是说明逆变换可如何由较小逆变换实施的实例的框图。在此实例中,图3的逆变换316可接收多个输入402且产生多个输出404。为了达到此目的,逆变换316可由具有相同或较小大小的一个或一个以上变换表示。举例来说,逆变换316可由多个k点IDCT-IV逆变换406a和406b实施。每一k点IDCT-IV逆变换406a和406b又可由一个或一个以上n点IDCT-II变换408a、408b或410a、410b实施。注意,在一些实施方案中,逆离散正弦变换(IDST)-IV可代替IDCT-IV变换而使用。在一个实例中,变换316可接收表示音频信号的频域频谱系数X(0)...X(m)402,且将其变换为时域经重构输出值x(0)...x(m)404。然而,需要较小逆变换的高效算法实施方案来实现使运算减到最少的快速变换性能。

注意,可将到达MDCT 102和IMDCT 302变换的输入处理为具有多个数据点的帧或块。因此,为了使基于MDCT的声码器(例如G.722.1或G.722.1C)支持具有小于320的帧长度的数据块,需要具有经分样大小的变换。对于具有160、80、40等帧长度的块,观察到这些大小均为5的倍数。因此,最后的不可约(通过分样技术)的块大小可使用大小为5的变换。观察到,在计算复杂性方面,设计5点DCT-II变换比DCT-IV或FFF变换高效得多。

定义MDCT变换

使用矩阵记法,MDCT变换可由矩阵M表示:

M(i,j)=cos(π2N(2j+1+N2)(2i+1)),其中i=0,1,...,N/2-1;j=0,1,...,N-1。

因此,X=Mx且其中x表示输入样本矩阵[x(0),...,x(N-1)]T,X表示所得MDCT系数矩阵且表示经重构输出矩阵

为实施MDCT变换,可将其映射到N/2点核心变换函数。举例来说,图1的变换116可实施为一个或一个以上N/2点DCT-IV变换。

可将DCT-IV变换定义为:

CkIV=X(k)=2NΣn=0N-1x(n)cos(π4N(2n+1)(2k+1)),k=0,1,...,N-1。

同时,可将IDCT-IV变换定义为:

x(n)=Σk=0N-1CkIVcos(π4N(2n+1)(2k+1)),n=0,1,...,N-1。

可将MDCT变换映射到N/2点DCT-IV变换

MT=PSCN/.2IV;

且可将IMDCT变换映射到N/2点IDCT-IV变换

M+CN/.2IVSPT

其中

P=0IN/40-JN/4JN/40IN/40

其中IN/4为N/4×N/4单位矩阵,且JN/4为N/4×N/4次序反向矩阵,且矩阵S定义为

S=-IN/400IN/4,

且为N/2×N/2DCT-IV矩阵,其可定义为

CN/.2IV(i,j)=cos(π2N(2j+1)(2i+1)),i,j=0,1,...,N/2-1

通过使用DCT-IV矩阵的对称性和对合性质,可将其映射到DCT-II变换中。DCT-II变换可定义为:

CkII=X(k)=λ(k)2Σn=0N-1x(n)cos((2n+1)2N),k=0,1,...,N-1。

同样地,IDCT-II变换可定义为:

x(n)=Σk=0N-1λ(k)2CkIIcos((2n+1)2N),n=0,1,...,N-1(等式12)

其中,如果k=0,那么否则λ(k)=1。

定义DCT-IV、DST-IV和DCT-II变换

根据一特征,变换116(图1)和逆变换316(图3)可经分样并由一个或一个以上DCT-IV或DST-IV(以及IDCT-IV或DST-IV)变换来实施,其可分别实施为一个或一个以上DCT-II(和IDCT-II)变换。

DCT-IV和IDCT-IV可对应地定义为:

XIV(k)=2NΣn=0N-1x(n)cos(π4N(2n+1)(2k+1)),k=0,1,...,N-1。(等式1)

x(n)=2NΣn=0N-1XIV(k)cos(π4N(2n+1)(2k+1)),n=0,1,...,N-1。(等式2)

DST-IV和IDST-IV可对应地定义为:

YIV(k)=2NΣn=0N-1x(n)sin(π4N(2n+1)(2k+1)),k=0,1,...,N-1。(等式3)

x(n)=2NΣn=0N-1YIV(k)sin(π4N(2n+1)(2k+1)),n=0,1,...,N-1。(等式4)

类似地,DCT-II及其逆变换可对应地定义为:

XII(k)=2Nλ(k)Σn=0N-1x(n)cos((2n+1)2N),k=0,1,...,N-1。(等式5)

x(n)=2NΣn=0N-1XII(k)λ(k)cos((2n+1)2N),n=0,1,...,N-1。(等式6)

其中如果k=0,那么λ(k)=1/2,否则λ(k)=1。

在等式1到等式6中,{x(n)}(对于n=0,1,...N-1)表示样本的输入序列,N表示帧长度,X(k)为所得MDCT系数。

在N=5的情况下,用于DCT-IV变换的矩阵C_IV、用于DST-IV变换的矩阵S_IV以及用于DCT-II变换的矩阵C_II可对应地表示为:

(矩阵A)

C_IV:=15cos(π20)101510cos(3π20)551510cos(7π20)1510cos(9π20)1510cos(3π20)1510cos(9π20)-55-15cos(π20)10-1510cos(7π20)55-55-5555551510cos(7π20)-15cos(π20)10551510cos(9π20)-1510cos(3π20)1510cos(9π20)-1510cos(7π20)55-1510cos(3π20)15cos(π20)10,

(矩阵B)

S_IV=1510sin(π20)1510sin(3π20)551510sin(7π20)1510sin(9π20)1510sin(3π20)1510sin(9π20)55-1510sin(π20)-1510sin(7π20)5555-55-55551510sin(7π20)-1510sin(π20)-551510sin(9π20)-1510sin(3π20)1510sin(9π20)-1510sin(7π20)55-1510sin(3π20)1510sin(π20),

(矩阵C)

C_II:=55555555551510cos(ππ10)1510cos(3π10)0-1510cos(3π10)-1510cos(ππ10)1510cos(π5)-1510cos(2π5)-105-1510cos(2π5)1510cos(π5)1510cos(3π10)-1510cos(π10)01510cos(ππ10)-1510cos(3π10)1510cos(2π5)-1510cos(ππ5)105-1510cos(ππ5)1510cos(2π5).

为了简化DCT-II的表示,可忽略因子且可使所有系数乘以同时使用以下记法:

a=2cos(π10);b=cos(3π10);c=-cos(π5);d=cos(2π5)

从而产生:

10C_II2=11111ab0-b-ac-d-1-dcb-a0a-bd-c1-cd(矩阵D)

此处,注意,a2+b2=1.25,且c2+d2=0.75。此外,还注意,c-d=0.5。这是从所涉及的余弦值的代数表达式得出的:

a=cos(π10)=10+254;b=cos(3π10)=10-254;

c=cos(π5)=1+54;d=cos(2π5)=5-14;

类似地,在DCT-IV的情况下,使所有系数乘以且使用记法:

f=2cos(π20);g=2cos(3π20);h=2cos(7π20);i=2cos(9π20)

从而产生:

5C_IV=fg1higi-1-f-h1-1-111h-f1i-gi-h1-gf(矩阵E)

注意,f2+i2=2,且类似地,g2+h2=2。此外,注意,且这是从所涉及的余弦值的代数表达式得出的:

cos(π20)=8+210+254;cos(9π20)=8-210+254;

cos(3π20)=8+210-254;cos(7π20)=8-210-254.

最后,在DST-IV的情况下,可使所有系数乘以且使用记法:

f=2sin(π20);g=2sin(3π20);h=2sin(7π20);i=2sin(9π20)

以产生:

5S_IV=fg1higi1-f-h11-1-11h-f-1i-gi-h1-gf(矩阵F)

类似于DCT-IV的情况,注意,此处f2+i2=2,且类似地,g2+h2=2。

用于计算5点DCT-II的快速算法的导出

为了实现处理效率,较大变换所使用的最小大小变换应为快速且高效的。这通过使这些较小大小的变换所执行的运算(例如,乘法、加法和移位)减到最少来实现。因此,可实施最小大小变换的各种因子分解以实现此目的。实施哪一变换因子分解的选择可取决于各种因素,包括正使用的处理器的能力。

高效DCT-II变换可以各种方式实施。举例来说,假定到达变换的输入由输入向量x提供,使得

x:=x0x1x2x3x4

向量x与经定标的DCT-II矩阵(如在矩阵D中以定标)的乘积产生DCT-II矩阵X:

X:=x×5C_II:=x0+x1+x2+x3+x4ax0+bx1-bx3-ax4cx0-dx1-x2-dx3+cx4bx0-ax1+ax3-bx4dx0-cx1+x2-cx3+dx4=X0X1X2X3X4

其中a=2cos(π10);b=cos(3π10);c=-cos(π5);d=cos(2π5)

考虑此矩阵X中的奇数系数X1和X3的计算:

X1=a*x0+b*x1-b*x3-a*x4=a*(x0-x4)+b*(x1-x3);

X3=b*x0-a*x1+a*x3-b*x4=b*(x0-x4)-a*(x1-x3);

此暗示可将系数X1和X3两者计算为对x0-x4和x1-x3的简单蝶式运算。现在,考虑此矩阵X中的偶数系数X2和X4的计算:

X2=c*x0+d*x1-d*x3+c*x4-x2=c*(x0+x4)-d*(x1+x3)-x2;

X4=d*x0-c*x1-c*x3+d*x4+x2=d*(x0+x4)-c*(x1+x3)+x2;

此处,再次,看来可将计算组织为对x0+x4和x1+x3的简单蝶式运算。

可通过重排内部变换运算以减少加法、乘法和/或移位的总数目来高效地实施实际变换运算。因此,不同的中间结果可由变换的不同因子分解来实现,且此些中间结果成为每一对应变换的特征。

图5是说明5点DCT-II变换502的因子分解的第一实例的流程图。在此实例中,利用上文所述的矩阵X的奇数系数X1和X3与偶数系数X2和X4之间的关系来表示5点DCT II变换502,使得计算出以下中间结果:

w0=x0-x4;

w4=x0+x4;

w1=x1-x3;

w3=x1+x3;

以及

u2=x2+w3+w4;

u3=-d*w3+c*w4;

u4=d*w4+c*w3;

以获得输出:

X0=u2;

X1=b*w1+a*w0;

X2=u3-x0;

X3=a*w1-b*w0;

X4=u4+x0;

其中输入系数504(x0,x1,x2,x3,x4)由变换为输出系数506(X0,X1,X2,X3,X4)。图5的此方案的复杂性为十二(12)个加法和八(8)个乘法。明确地说,实施第一蝶式运算508以获得输出系数X1和X3,且实施第二蝶式运算510以获得输出系数X2和X4。此变换502中的最长路径仅为三(3)个运算(加法和/或乘法,假定蝶式运算针对每一路径仅需要1个MAC)。由“蝶式运算”执行的运算通常被称为平面旋转或格文斯旋转(Givens rotation)。

图6是说明5点DCT-II变换602的因子分解的第二实例的流程图。此变换602可得自图5的变换502,以将输入系数504变换为输出系数506。在此实施方案中,将到达第二蝶式运算510(图5)的输入表示为值z4=x0+x4和z2=x1+x3,且可沿正向路径朝X0相加。

因此,中间结果被计算为:

w0=x0-x4;

w1=x1-x3;

z2=x1+x3;

z4=x0+x4;

u2=z2+z4。

另外,c-d=0.5的事实用于将输出X0、X2和X4表示为:

X0=z4+z2+x2;

X2=c*z4-d*z2-x2=c*(z4+z2)+(c-d)*z2-x2=c*(z4+z2)+0.5*z2-x2;

X4=d*z4-c*z2+x2=-c*(z4+z2)-(c-d)*z4+x2=-c*(z4+z2)-0.5*z4+x2。

因此,5点DCT II变换602的特征在于:

X0=u2+x2;

X1=b*w1+a*w0;

X2=c*u2+0.5*z2-x2;

X3=a*w1-b*w0;

X4==-c*u2-0.5*z4+x2。

此变换602的复杂性为十二(12)个加法、五(5)个乘法和两(2)个移位。注意,此变换中的1/2因子为二进有理数,且因此与1/2的此“乘法”仅为二进制移位运算(即,移位)。最长路径长度此处为四(4)个运算。

图7是说明5点DCT-II变换702的因子分解的第三实例的流程图。此变换702可得自图6的变换602以将输入系数504变换为输出系数506。系数X2和X4的等式可表示为:

X2=c*(z4+z2)+0.5*z2-x2=c′*(z4+z2)+d′*(z4-z2)-x2;

X4=-c*(z4+z2)-0.5*z4+x2=-c′*(z4+z2)+d′*(z4-z2)+x2;

其中值c′和d′经选择以使得:

c*(z4+z2)+0.5*z2=c′*(z4+z2)+d′(z4-z2)    (等式7)

-c*(z4+z2)-0.5*z4=-c′*(z4+z2)+d′(z4-z2)。

等式7可经重排以使得:

z4*c+z2*(c+0.5)=z4*(c′+d′)+z2*(c′-d′)。

因此,可展示:

c=c′+d′;且

c+0.5=c′-d′。

通过使这两个等式相减,可展示:

0.5=-2d′;或

d′=-0.25,且

c′=c-d′=c+0.25。

因此,输出系数X2和X4可表示为:

X2=c′*(z4+z2)-0.25*(z4-z2)-x2=0.25*(z2-z4)+(c′*(z4+z2)-x2);

X4=-c′*(z4+z2)-0.25*(z4-z2)+x2=0.25*(z2-z4)-(c′*(z4+z2)-x2);

其产生图7的变换702。

因此,中间结果被计算为:

w0=x0-x4;

w1=x1-x3;

z2=x1+x3;

z4=x0+x4;

t2=z2+z4;

t4=z2-z4;

c′=c+0.25。

因此,5点DCT II变换702的特征在于:

X0=t2+x2;

X1=b*w1+a*w0;

X2=c′*t2-0.25*t4-x2=0.25*t4+c′*t2-x2);

X3=a*w1-b*w0;

X4=-c′*t2-0.25*t4+x2=0.25*t4-(c′*t2-x2)。

此变换702可以十二(12)个加法、五(5)个乘法和一(1)个移位的方式实施。注意,此变换702中的1/4因子为二进有理数,且因此与1/4的此“乘法”仅为二进制移位运算(即,移位)。最长路径长度此处也为四(4)个运算。

图8是说明5点DCT-II变换802的因子分解的替代实例的流程图。注意,此变换中的因子α为二进有理数,且因此与其的乘法仅为二进制移位运算。可使用平面旋转以及5个乘法,或通过借助于对平面旋转进行因子分解使用4个乘法或使用提升步骤(lifting step)来实施此5点变换。对于具有输入x 504的5点序列,可使用4个非平凡乘法(non-trivial multiplication)、十二(12)个加法以及两(2)个移位,或五(5)个乘法、十二(12)个加法以及一(1)个移位来产生5点DCT-II变换802的输出X 506。

在此实例中,乘数为:

α=14;β=cos(3π10);γ=-cos(π10);δ=-54.

DCT-II变换802可包括中间结果,使得:

w1=x0+x4;

w2=x4-x0;

w3=x3-x1;

w4=x3+x1;

w5=w1+w4;

w6=w4-w1;

u1=x2-αw5;

u2=x2+w5;

u3=βw2+γw3;

u4=βw3-γw2;

u5=δw6。

因此,DCT-II变换802的输出X0、X1、X2、X3和X4可表示为:

X0=u2;

X1=u4;

X2=u4-u1;

X3=u3;

X4=u1+u5。

注意,图5到图9中所说明的变换(以及本文中的其它变换)的中间结果可在变换流程图中的不同点被选择的情况下改变。因此,可从这些变换流程图预期并理解较多或较少中间结果和/或不同中间结果(例如,在流程图中的不同点处)。

逆变换的导出

图4到图20中所说明的变换可经反转以使本文中所说明的正向变换反向。图32说明对应于图8的正向变换的逆变换(5点IDCT-II逆变换)。逆变换3202将输入3204(频谱系数)变换为输出(时域值)3206,且可由以下中间结果表征:

u1=X4-X2;

u5=X4+X2;

w0=X0+u1;

w5=X0-αu1;

w2=βX3-γX1

w3=γX3-βX1;//与流程图相比在软件中使用否定因子//

w6=δu5;

w1=w5-w6;

w4=w5+w6;

其中

α=14;β=cos(3π10);γ=-cos(π10);δ=-54.

因此,IDCT-II变换3202的输出x0、x1、x2、x3和x43206可计算为:

x0=w1-w2;

x1=w4+w3;

x2=w0;

x3=w4-w3;

x4=w1+w2。

用于计算5点DCT-IV和DST-IV的快速算法的导出

高效DCT-IV变换和/或DST-IV可以各种方式实施。举例来说,假定到达变换的输入由向量x提供,使得

x:=x0x1x2x3x4

向量x与经定标DCT-IV矩阵(如在矩阵E中以定标)的乘积产生DCT-IV矩阵X:

X:=x×5C_IV:=fx0+gx1+x2+hx3+ix4gx0+ix1-x2-fx3-hx4x0-x1-x2-x3+x4hx0-fx1+x2+ix3-gx4ix0-hx1+x2-gx3+fx4=X0X1X2X3X4.

图9是说明5点DCT-IV变换902的因子分解的第一实例的流程图。变换902将输入系数x 904转换为输出系数X 906。通过以下对项的简单重新排序来获得变换902:

X0=f*x0+i*x4+g*x1+h*x3+x2;

X1=g*x0-h*x4+i*x1-f*x3-x2;

X2=-x 1+x3-x2+x0+x4;

X3=h*x0-g*x4-f*x 1+i*x3+x2;

X4=i*x0+f*x4-h*x 1-g*x3+x2;

其中

f=2cos(π20);g=2cos(3π20);h=2cos(7π20);i=2cos(9π20).

注意,可使用中间结果来计算变换902,其中:

k1=g*x1+h*x3;

k2=h*x1+g*x3;

k3=f*x0+i*x4;

k4=i*x0+f*x4;

k5=i*x1-f*x3;

k6=-f*x1+i*x3;

k7=g*x0-h*x4;

k8=h*x0-g*x4;

j1=x0+x4;

j2=x3-x1。

因此,变换902可表示为:

X0=k3+k1+x2;

X1=k7+k5-x2;

X2=j1+j2-x2;

X3=h*x0-g*x4-f*x1+i*x3+x2;

X4=k4-k2+x2。

因此,可通过使用如图9的变换902中所说明的四(4)个蝶式运算908a、908b、908c和908d来计算输出系数X0、X1、X2、X3和X4。此实施方案的复杂性为二十(20)个加法和十六(16)个乘法。此实施方案中的最长路径长度仅为三(3)个运算。

图10是说明5点DCT-IV变换1002可如何实施的第二实例的流程图。图9的变换902中的每一蝶式运算可经修改以使得其仅需要三(3)个乘法来执行。举例来说,输出系数X0和X4的分量运算可写为:

f*x0+i*x4=(x0+x4)*f+x4*(i-f);

i*x0+f*x4=(x0+x4)*f+x0*(i-f);

g*x1+h*x3=(x1-x3)*g+x3*(h+g);

-h*x1-g*x3=(x1-x3)*g-x1*(g+h)。

类似地,输出系数X1和X3的分量运算可写为:

g*x0-h*x4=(x3-x1)*f+x3*(i-f);

i*x1-f*x3=(x0+x4)*g+x0*(h+g);

h*x0-g*x4=(x3-x 1)*f-x 1*(i-f);

-f*x1+i*x3=(x0+x4)*g+x4*(h+g)。

通过使用此些分解,变换1002的输出系数可由以下各项表征:

X0=(x0+x4)*f+x4*(i-f)+(x1-x3)*g+x3*(h+g)+x2;

X1=(x3-x1)*f+x3*(i-f)+(x0+x4)*g+x0*(h+g)-x2

X2=-x1+x3-x2+x0+x4;

X3=(x3-x1)*f-x1*(i-f)+(x0+x4)*g+x4*(h+g)+x2;

X4=(x0+x4)*f+x0*(i-f)+(x1-x3)*g-x1*(g+h)+x2。

注意,可使用中间结果来计算变换1002,其中:

q1=x0+x4;

q2=x3-x1;

p1=(x1-x3)*g-x1*(g+h)=q2*g-x1*(g+h);

p2=(x1-x3)*g+x3*(h+g)=q2*g+x3*(g+h);

p3=(x0+x4)*f+x0*(i-f)=q1*f+x0*(i-f);

p4=(x0+x4)*f+x4*(i-f)=q1*f+x4*(i-f);

p5=(x3-x1)*f+x3*(i-f)=q2*f+x3*(i-f);

p6=(x3-x1)*f-x1*(i-f)=q2*f-x1*(i-f);

p7=(x0+x4)*g+x0*(h+g)=q1*g+x0*(h+g);

p8=(x0+x4)*g+x4*(h+g)=q1*g+x4*(h+g)。

因此,变换902可表示为:

X0=p2+p4+x2;

X1=p5+p7-x2;

X2=q1+q2-x2;

X3=p6+p8+x2;

X4=p1+p3+x2。

此变换1002的复杂性现在为二十(20)个加法和十二(12)个乘法。最长路径的长度此处为四(4)个运算。

在替代方法中,DCT-IV变换可通过将其映射到DCT-II变换而导出。

举例来说,图11是说明DCT-IV变换1102可如何映射到DCT-II变换1104以将输入系数1106变换为输出系数1108的框图。

图12是说明可使用5点DCT-II变换来实施5点DCT-IV变换1202以便将输入系数1206变换为输出系数1208的框图。这是图11中所说明的变换映射的特别情况。在此实例中,角度的记法可表示为:

f=2cos(π20);g=2cos(3π20);h=2cos(7π20);i=2cos(9π20).

图13是说明可使用5点DCT-II变换来实施图12的5点DCT-IV变换的因子分解的实例的框图。在此实例中,图12的5点DCT-IV变换乘以2,且因子来回移动。此映射等效于图12的映射。

图14是说明图13中映射的DCT-IV变换1202可如何与图6的DCT-II变换602组合的框图。即,DCT变换1402可为图13的变换1202可实施为图6的DCT-II变换602的组合。因此,变换1402的输出系数可由以下各项表征:

X0=(f*x0+i*x4)+(h*x3+g*x1)+x2;

X1=[2a*(f*x0-i*x4)+2b*(g*x1-h*x3)]-[2*X0];

X2=[2c*(f*x0+i*x4+g*x1+h*x3)+(g*x1+h*x3)-2*x2]-[X1];

X3=[2b*(f*x0-i*x4)-2a*(g*x 1-h*x3)]-[X2];

X4=[-2c*(f*x0+i*x4+g*x1+h*x3)-(f*x0+i*x4)+2*x2]-[X3];

其中a=2cos(π10);b=cos(3π10);c=-cos(π5);d=cos(2π5).

注意,中间结果可计算为:

w0=f*x0-i*x4;

w1=g*x1-h*x3;

z2=g*x1+h*x3;

z4=f*x0+i*x4;

v1=2b*w1+2a*w0;

v2=z2+z4;

v3=2b*w0-2a*w1;

y2=2c*v2+z2-2*x2;

y4=-2c*v2-z4+2*x2。

因此,输出可表示为:

X0=v2+x2;

X1=v1-2*X0;

X2=y2-X1;

X3=v3-X2;

X4=y4-X3。

此DCT-IV变换1402仅使用十六(16)个加法、九(9)个乘法和两(2)个移位。注意,此变换中的2因子为二进有理数,且因此与2的此“乘法”仅为二进制移位运算(即,移位)。

图15是说明图14的DCT-IV变换1402可如何进一步修改为等效变换1502的框图。在此实例中,变换1502中的最末级联运算允许额外简化。因此,变换1502的输出系数可由以下各项表征:

X0=(f*x0+i*x4)+(h*x3+g*x1)+x2;

X1=[2a*(f*x0-i*x4)+2b*(g*x1-h*x3)]-[2*X0];

X2=[(2c+2)*(f*x0+i*x4+g*x1+h*x3)]+(g*x1+h*x3)-[2a*(f*x0-i*x4)+2b*(g*x1-h*x3)];

X3=[2b*(f*x0-i*x4)-2a*(g*x 1-h*x3)]-[X2];

X4=[-2c*(f*x0+i*x4+g*x1+h*x3)-(f*x0+i*x4)+2*x2]-[X3]。

注意,中间结果可计算为:

w0=f*x0-i*x4;

w1=g*x1-h*x3;

z2=g*x1+h*x3;

z4=f*x0+i*x4;

v1=2b*w1+2a*w0;

v2=z2+z4;

v3=2b*w0-2a*w1;

y2=(2c+2)*v2+z2;

y4=2c*v2+z4。

因此,输出可表示为:

X0=v2+x2;

X1=v1-2*X0;

X2=y2-v1;

X3=v3-X2;

X4=-y4+2*x2-X3。

因此,此DCT-IV变换1502仅使用十五(15)个加法、十(10)个乘法以及两(2)个移位。注意,此变换中的“2”因子为二进有理数,且因此与2的此“乘法”仅为二进制移位运算(即,移位)。此实施方案中的最长路径长度仅为五(5)个运算。

图16是说明图15的DCT-IV变换1502可如何进一步修改为等效变换1602的框图。变换1602的输出系数可由以下各项表征:

X0=(f*x0+i*x4)+(h*x3+g*x1)+x2;

X1=[2a*(f*x0-i*x4)+2b*(g*x1-h*x3)]-[2*X0];

X2=[(2c+2)*(g*x1+h*x3)+(2c+2)*(f*x0+i*x4)]-[2a*(f*x0-i*x4)+2b*(g*x1-h*x3)];

X3=[2b*(f*x0-i*x4)-2a*(g*x 1-h*x3)]-[X2];

X4=[-(2c+2)*(f*x0+i*x4)-2c*(g*x1+h*x3)+2*x2]-[X3]。

注意,中间结果可计算为:

w0=f*x0-i*x4;

w1=g*x1-h*x3;

z2=g*x1+h*x3;

z4=f*x0+i*x4;

v1=2b*w1+2a*w0;

v2=z2+z4;

v3=2b*w0-2a*w1;

d2=(2c+2)*z2+(2c+2)*z4;

d4=(2c+2)*z4+2c*z2。

因此,输出可表示为:

X0=z2+z4+x2;

X1=v1-2*X0;

X2=d2-v1;

X3=v3-X2;

X4=-d4+2*x2-X3。

因此,此DCT-IV变换1602仅使用十五(15)个加法、十一(11)个乘法以及两(2)个移位。注意,此变换中的2因子为二进有理数,且因此与2的此“乘法”仅为二进制移位运算(即,移位)。此实施方案中的最长路径长度仅为五(5)个运算。

图17是说明图16的DCT-IV变换1602可如何进一步修改为等效变换1702的框图。变换1702的输出系数可由以下各项表征:

X0=(f*x0+i*x4)+(h*x3+g*x1)+x2;

X1=[2a*(f*x0-i*x4)+2b*(g*x1-h*x3)]-[2*X0];

X2=[2(c+2)*(g*x 1+h*x3)+(2c+2)*(f*x0+i*x4)]-[2a*(f*x0-i*x4)+2b*(g*x1-h*x3)];

X3=[(2b+2a)*(f*x0-i*x4)-(2a-2b)*(g*x1-h*x3)]-[2(c+2)*(g*x1+h*x3)+(2c+2)*(f*x0+i*x4)];

X4=[-(2c+2)*(f*x0+i*x4)-2c*(g*x1+h*x3)+2*x2]-[X3]。

注意,中间结果可计算为:

w0=f*x0-i*x4;

w1=g*x1-h*x3;

z2=g*x1+h*x3;

z4=f*x0+i*x4;

z1=2a*w0+2b*w1

z3=(2b+2a)*w0-(2a-2b)*w1;

d2=2(c+2)*z2+(2c+2)*z4;

d4=(2c+2)*z4+2c*z2。

因此,输出可表示为:

X0=z2+z4+x2;

X1=z1-2*X0;

X2=d2-z1;

X3=z3-d2;

X4=-d4+2*x2-X3。

因此,此DCT-IV变换1702仅使用十五(15)个加法、十一(11)个乘法以及两(2)个移位。注意,此变换中的“2”因子为二进有理数,且因此与2的此“乘法”仅为二进制移位运算(即,移位)。此实施方案中的最长路径长度仅为五(5)个运算。

图18是说明图17的DCT-IV变换1702可如何进一步修改为等效变换1802的框图。在此实例中,因递归加法在最后阶段的去除而实现短得多的路径长度以及改进的数值稳定性。变换1802的输出系数可由以下各项表征:

X0=(f*x0+i*x4)+(h*x3+g*x1)+x2;

X1=[2a*(f*x0-i*x4)+2b*(g*x1-h*x3)]-[2*X0];

X2=[2(c+2)*(g*x1+h*x3)+(2c+2)*(f*x0+i*x4)]-[2a*(f*x0-i*x4)+2b*(g*x1-h*x3)];

X3=[(2b+2a)*(f*x0-i*x4)-(2a-2b)*(g*x1-h*x3)]-[2(c+2)*(g*x1+h*x3)+(2c+2)*(f*x0+i*x4)];

X4=[-4(c+1)*(f*x0+i*x4)-4(c+1)*(g*x1+h*x3)+2*x2]-[(2b+2a)*(f*x0-i*x4)-(2a-2b)*(g*x1-h*x3)]。

注意,中间结果可计算为:

w0=f*x0-i*x4;

w1=g*x1-h*x3;

z2=g*x1+h*x3;

z4=f*x0+i*x4;

z1=2a*w0+2b*w1

z3=(2b+2a)*w0-(2a-2b)*w1;

r2=(2c+2)*z2+(2c+2)*z4;

r4=4(c+1)*z2+4(c+1)*z4。

因此,输出可表示为:

X0=z2+z4+x2;

X1=z1-2*X0;

X2=d2-z1;

X3=z3-r2;

X4=-r4+2*x2-z3。

此变换1802仅使用十五(15)个加法、十二(12)个乘法以及两(2)个移位。注意,与“2”的乘法被视为移位。此实施方案中的最长路径长度仅为五(5)个运算。

注意,图5到图18中所说明的DCT和DST变换可反向作为IDCT和IDST变换,以取消其中的DCT和DST变换运算或使其中的DCT和DST变换运算反向。

计算大小为N=5*2K的变换

根据一个实施方案,N大小的变换(其中N=5*2K)可递归地分成一连串较小的N/2大小的变换,其可基于DCT-II、DCT-IV、DST-IV或类似核心,且其中通过使用所描述的用于计算5点变换的快速算法中的一者来实施最末5点级联。

图19是说明N大小变换可如何递归地分成较小的N/2大小的变换直到其由多个5点变换表示为止的框图。举例来说,N大小(点)变换1902接收N个输入系数1910,且将其变换为N个输出系数1912。N大小变换1902可分样为两个N/2大小变换1904a和1904b。类似地,每一N/2大小变换1904a和1904b可进一步分样为多个较小变换,直到最小变换为5点变换1906a、1906b、1908a和1908b为止。在各种实施方案中,5点变换1906a、1906b、1908a和1908b可由图5到图18中所说明的5点变换中的任一者实施。

图20是说明变换分样和分裂的实例的框图,其中10点DCT-IV变换递归地分成多个较小的5点DCT-II变换2004a和2004b。在此实例中,十个输入系数2006由一对较小的5点变换2004a和2004b变换以产生十个输出系数2008。

图28说明变换分样和分裂的替代实例,其中10点DCT-IV变换递归地分成多个较小的5点DCT-II变换2804a和2804b。在此实例中,十个输入系数2806由一对较小的5点变换2804a和2804b变换以产生十个输出系数2808。与图20相比,DCT-IV的此替代分样过程需要更多运算,但其在数值上更稳固。即,在方案图20中的变换2004b之后运行减法序列可潜在地使中间变量的量值增加N/2,其中N为变换的大小。图28的替代方案不具有此些运行,且其仅使用平面旋转(其为正规正交运算)来计算变换。DCT-II的分裂程序也具有此些性质。应注意,最终算法还可使变换类型在分裂过程中递归地交替。即,最终算法可将DCT-II分成DCT-II和DCT-IV或一半大小;接着最终算法将DCT-IV分成2个DCT-II,而DCT-II将被分成更小的DCT-II和DCT-IV;等等。

图29说明作为图28中的变换的逆变换的10点IDCT-IV变换。

图21是说明N大小逆变换可如何递归地分成较小的N/2大小逆变换直到其由多个5点逆变换表示为止的框图。举例来说,N大小(点)逆变换2102接收N个输入系数2110,且将其变换为N个输出系数2112。N大小逆变换2102可分样为两个N/2大小逆变换2104a和2104b。类似地,每一N/2大小逆变换2104a和2104b可进一步分样为多个较小的逆变换,直到最小逆变换为5点逆变换2106a、2106b、2108a和2108b为止。在各种实施方案中,5点逆变换2106a、2106b、2108a和2108b可由对应于图5到图18中所说明的变换的任何5点逆变换实施。

图22是说明逆变换分样和分裂的实例的框图,其中10点IDCT-IV逆变换2202递归地分成多个较小的5点IDCT-II逆变换2204a和2204b。在此实例中,十个输入系数2206由一对较小的5点逆变换2204a和2204b变换以产生十个输出系数2208。

图30是说明变换分样和分裂的实例的框图,其中10点DCT-IV逆变换递归地分成多个较小的5点DCT-II变换和5点DCT-IV。

图30是说明变换分样和分裂的实例的框图,其中10点DCT-IV逆变换递归地分成多个较小的5点DCT-II变换和5点DCT-IV。

图31是说明图30的正向变换的逆变换的实例的框图。

具有不对称开窗阶段的MDCT滤波器组

根据另一特征,不对称开窗阶段可实施为MDCT滤波器组的一部分。在一些应用中,MDCT滤波器组可在具有多个层的可定标话音编解码器中实施,其中一些所述层可使用MDCT来变换来自先前层的错误信号。具有40毫秒开窗阶段的经加权错误信号werr_sp(k)的MDCT由以下等式给出:

werr_sp(k)=2MΣn=02M-Mz-1wa(n)werr(n)cos(πM(n+M+12)(k+12))

图23说明不对称窗形状,其可用于使与变换阶段相关联的延迟减小到10ms,同时保持相同数目的频率系数。延迟减小由于此不对称窗函数中的前80个因子变为0而变得可能。因此不需要存取那些样本。

与传统的MDCT窗相对比,此窗2302是不对称的;由此所述窗的第二半不同于第一半的时间反向版本。分析不对称窗形状由以下等式给出:

wa(n)=wi(n)D(n),0n<2M---(6.10-2)

其中

wi(n)=sin[(n+12)π(2M-Mz)],0n<2M-Mz0,2M-Mzn<2M

且D(n)由以下等式定义

D(n)=wi(n)wi(2M-1-n)+wi(n+M)wi(M-1-n)D(n+M)=D(n),0n<M---(6.10-4)

其中M=320表示MDCT频率分量的数目,且Mz=M/4为尾随零的数量。

MDCT到DCT-IV映射的矩阵阐释

MDCT系数werr_sp(k)的计算通过以下步骤来进行:首先将窗

以及正规化因子应用于输入信号werr(n)上,且接着通过Mx2M矩阵T来计算乘积:

T(i,j)=cos(πM(j+M+12)(i+12)),i=0,...,M-1,j=0,...,2M-1,

通过在下式中使用其分解

T=CMIVSPT

其中

CMIV(i,j)=cos(πM(i+12)(j+12)),i,j=0,...,M-1,

为DCT-IV变换的M×M矩阵,

S=-IN/200IN/2,P=0IN/20-JN/2JN/20IN/20,

且其中IN/2和JN/2对应地表示N/2×N/2单位矩阵和次序反向矩阵。

DCT-IV的计算

通过将大小为M=5*2k(k=1,...,6)的DCT-IV分成大小小两倍的DCT-II变换来进行所述DCT-IV的计算:

CMIV=PMT10IM/2-1IM/2-1IM/2-1-IM/2-10-1IM/200DM/2JM/2CM/2II00CM/2IIIM/200DM/2RM

其中:

PM为产生重新排序的置换矩阵

x′i=x2i,x′M-1-i=-x2i+1

DM为对角正负号更改矩阵

DM/2=diag{(1)k},k=0,1,...M2-1,

RM为格文斯旋转矩阵:

且表示剩余DCT-II变换的矩阵:

CMII(i,j)=cos(πM(i+12)j),i,j=0,...,M-1,。

图20中说明将大小为M=10的DCT-IV变换分成小两倍(M=5)的DCT-II变换的此过程的实例实施方案。

也可通过将大小为M=5*2k(k=1,...,5)的DCT-II分成较小的变换来进行所述DCT-II变换的计算:

CMII=PMTCM/2II00CM/2IVIM/2JM/2IM/2-JM/2.

图30中说明将大小为M=10的DCT-II变换分成较小变换(M=5)的此过程的实例实施方案。

可递归地重复以上过程直到仅剩余5点变换为止。剩余5点变换可通过高效地实施5点DCT-IV的计算经由DCT-II来进行,如下:

C5IV=12-121-12-11-121-11-12-11-11C5II2cosπ2002cos3π202cos5π202cos7π2002cos9π20.

最后,输入向量x=[x0,x1,x2,x3,x4]T的5点DCT-II的计算

y=C5IIx

如下进行:

DCT-II变换802可包括中间结果,使得:

a0=x0+x4;

a4=x4-x0;

a3=x3-x1;

a1=x3+x1;

b0=a0+a1;

b1=δ(a0-a1);

b2=x2-αb0;

y0=b0+x2;

y1=γa3-βa4;

y2=b1-b2;

y3=βa3+γa4;

其中

α=14;β=cos3π10;γ=cosπ10;δ=cosπ5-14.

图8中说明此变换的流程图的实例。

使用MDCT变换进行编码的实例

图24是说明用于计算变换值的装置的框图。装置2402可包括输入模块2406、窗模块2410和/或变换模块2414。输入模块2406可适合于接收音频信号2404,且提供表示音频信号的时域输入值2408。窗模块2410可产生如图23中所说明的不对称开窗函数。

变换模块2414可使用(例如)经修改离散余弦变换(MDCT)将经开窗的输入值2412变换为频谱系数2416。MDCT可递归地分成以下各项中的至少一者:离散余弦变换类型IV(DCT-IV)、离散余弦变换类型II(DCT-II)或DCT-IV与DCT-II两者,其中每一此变换具有比MDCT小的维度。在一个实例中,DCT-II可为实施不同大小的MDCT的5点变换。MDCT可使用同一核心DCT-II来实施320点、160点、80点、40点变换中的至少两者。装置2402的组件可实施为硬件、软件和/或其组合。举例来说,装置2402可为处理器和/或电路,其实施装置2402的组件或模块的功能。

图25说明用于使用基于5点核心变换的MDCT变换来编码信号的方法的实例。可接收表示音频信号的时域输入值(2502)。举例来说,可对模拟音频信号(例如,语音信号、音乐、视频等)进行取样以获得输入值。在一个实例中,可产生经修改的开窗函数,其将不对称窗函数应用于输入值(2504)。接着可使用递归地分成多个5点变换的经修改离散余弦变换(MDCT)将(经开窗)输入值变换为频谱系数。举例来说,可使用图5到图22中所说明的5点变换中的任一者。

使用IMDCT变换进行解码的实例

图26是说明用于计算变换值的装置的框图。装置2602可包括输入模块2606、逆变换模块2608和/或窗模块2612。逆变换模块2608可适合于将频谱系数2604变换为输出值2610。举例来说,逆变换模块可使用逆经修改离散余弦变换(IMDCT)将频谱系数变换为时域输出值2610,所述IMDCT递归地分成以下各项中的至少一者:逆离散余弦变换类型IV(IDCT-IV)、逆离散余弦变换类型II(IDCT-II)或IDCT-IV与IDCT-II两者,其中每一此逆变换具有比IMDCT小的维度。

窗模块2612可产生经修改的开窗函数,其对输出值2610实施不对称窗函数以产生经开窗输出值2614。装置2602的组件可实施为硬件、软件和/或其组合。举例来说,装置2602可为处理器和/或电路,其实施装置2602的组件或模块的功能。

图27说明用于使用基于核心IDCT-II变换的IMDCT变换来解码信号的方法的实例。接收或获得表示音频信号的频谱系数(2702)。可使用递归地分成多个5点逆变换的逆经修改离散余弦变换(IMDCT)将频谱系数变换为时域输出值(2704)。可使用同一核心变换来实施多个5点逆变换中的每一者。IMDCT使用同一核心变换来实施320点、160点、80点、40点逆变换中的至少两者。在各种实施方案中,核心变换可为图5到图22中的5点变换中的任一者。另外,可产生经修改的开窗函数,其将不对称开窗函数应用于经变换的频谱系数(2706)。

除本文中所提供的实例之外,本文中所述的实施经分样变换的算法可用于实施为二的倍数的任何其它变换。另外,应注意,本文中所述的技术可应用于各种类型的信号,包括音频、语音、视频、数据等。

应理解,本文中所说明的变换的中间结果可在变换的流程图中的不同点被选择的情况下改变。因此,可预期较多或较少中间结果和/或不同中间结果(例如,在流程图中的不同点处),且其在本文中所描述且主张的变换流程图的范围内。

可使用多种不同技术和技法中的任一者来表示信息和信号。举例来说,贯穿以上描述而参考的数据、指令、命令、信息、信号等可由电压、电流、电磁波、磁场或磁微粒、光场或光学微粒或其任意组合来表示。

本文中所述的各种说明性逻辑块、模块和电路以及算法步骤可实施或执行为电子硬件、软件或两者的组合。为了清楚地说明硬件与软件的这种可互换性,上文已大体上依据各种说明性组件、块、模块、电路和步骤的功能性描述了各种说明性组件、块、模块、电路和步骤。将此功能性实施为硬件还是软件取决于特定应用以及强加于整个系统的设计约束。注意,可将配置描述为过程,所述过程被描绘为流程表、流程图、结构图或框图。尽管流程表可将操作描述为循序过程,但所述操作中的许多操作可并行或同时执行。另外,可重排所述操作的次序。当过程的操作完成时,所述过程终止。过程可对应于方法、函数、规程、子例行程序、子程序等。当过程对应于函数时,其终止对应于函数返回到调用函数或主函数。

当以硬件实施时,各种实例可使用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或经设计以执行本文中所描述的功能的其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或其任意组合。通用处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。还可将处理器实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、结合DSP核心的一个或一个以上微处理器或任何其它此类配置。

当以软件实施时,各种实例可使用固件、中间件或微码。用以执行必要任务的程序代码或码段可存储在例如存储媒体或其它存储装置等计算机可读媒体中。处理器可执行所述必要任务。码段可表示规程、函数、子程序、程序、例行程序、子例行程序、模块、软件包、类,或指令、数据结构或程序语句的任意组合。可通过传递和/或接收信息、数据、自变量、参数或存储器内容来将码段耦合到另一码段或硬件电路。信息、自变量、参数、数据等可经由包括存储器共享、消息传递、令牌传递、网络传输等的任何合适手段来传递、转发或传输。

如本申请案中所使用,术语“组件”、“模块”、“系统”等意在指代计算机相关实体:硬件、固件、硬件与软件的组合、软件或执行中的软件。举例来说,组件可为(但不限于)在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在计算装置上运行的应用程序以及计算装置两者均可为组件。一个或一个以上组件可驻存在进程和/或执行线程内,且组件可位于一个计算机上和/或分布于两个或两个以上计算机之间。另外,这些组件可从上面存储有各种数据结构的各种计算机可读媒体执行。所述组件可借助于本机进程和/或远程进程进行通信,例如根据具有一个或一个以上数据包的信号(例如,来自一个组件的数据,所述组件借助于信号与本机系统、分布式系统中的另一组件相互作用,且/或越过网络(例如因特网)与其它系统相互作用)。

在本文中的一个或一个以上实例中,所描述的功能可以硬件、软件、固件或其任意组合实施。如果以软件实施,那么所述功能可作为一个或一个以上指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输。计算机可读媒体包括计算机存储媒体与通信媒体(包括促进将计算机程序从一处传送到另一处的任何媒体)。存储媒体可为可由计算机存取的任何可用媒体。作为实例而非限制,此些计算机可读媒体可包含RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于携载或存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。而且,任何连接严格地说均被称为计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,那么所述同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波等无线技术包括在媒体的定义中。如本文中所使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光学盘、数字通用光盘(DVD)、软盘以及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。上述各项的组合也应包括在计算机可读媒体的范围内。软件可包含单个指令或许多指令,且可分布在若干不同码段上、不同程序之间以及跨越多个存储媒体。示范性存储媒体可耦合到处理器,使得处理器可从存储媒体读取信息且将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体式。

本文中所揭示的方法包含用于实现所描述方法的一个或一个以上步骤或动作。所述方法步骤和/或动作可在不脱离权利要求书的范围的情况下彼此互换。换句话说,除非所描述的实施例的恰当操作需要特定次序的步骤或动作,否则可在不脱离权利要求书的范围的情况下修改特定步骤和/或动作的次序和/或使用。

图中所说明的组件、步骤和/或功能中的一者或一者以上可重排和/或组合成单个组件、步骤或功能,或在若干组件、步骤或功能中体现。还可添加额外元件、组件、步骤和/或功能。一些图中所说明的设备、装置和/或组件可经配置或适合于执行其它图中所描述的方法、特征或步骤中的一者或一者以上。举例来说,本文中所描述的算法可在软件和/或嵌入式硬件中高效地实施。

应注意,前述配置仅为实例,且不应被解释为限制权利要求书。所述配置的描述既定为说明性的,且不限制权利要求书的范围。由此,本教示可容易适用于其它类型的设备,且所属领域的技术人员将明白许多替代方案、修改和变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号