CN100573666C - 子带分析/合成滤波方法 - Google Patents

子带分析/合成滤波方法 Download PDF

Info

Publication number
CN100573666C
CN100573666C CNB2006100718328A CN200610071832A CN100573666C CN 100573666 C CN100573666 C CN 100573666C CN B2006100718328 A CNB2006100718328 A CN B2006100718328A CN 200610071832 A CN200610071832 A CN 200610071832A CN 100573666 C CN100573666 C CN 100573666C
Authority
CN
China
Prior art keywords
vsi
computing
sub
window
band samples
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.)
Expired - Fee Related
Application number
CNB2006100718328A
Other languages
English (en)
Other versions
CN1835078A (zh
Inventor
林宗瑶
徐建华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
MediaTek Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MediaTek Inc filed Critical MediaTek Inc
Priority to CNB2006100718328A priority Critical patent/CN100573666C/zh
Publication of CN1835078A publication Critical patent/CN1835078A/zh
Application granted granted Critical
Publication of CN100573666C publication Critical patent/CN100573666C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明提供一种音频编码/译码方法,能够用来对一音频信号进行编码,也能够用来对多个子带样本进行译码以产生一数字音频信号。在编码过程中,该方法是根据依据2P个时域区间的P个窗口声音样本产生第0个和数,并根据依据该2P个时域区间的2P个窗口声音样本产生第1个至第(M-1)个和数中的一和数,再根据该M个和数计算M个子带样本。而于解码过程中,该方法是对应于一第一索引的变化,在多个子带样本当中读取M个子带样本,以通过一逆向修改离散余弦转换与一综合运算产生一数字音频信号。

Description

子带分析/合成滤波方法
相关申请的交叉关系
本发明专利申请是申请号为200310117948.7、申请日为2003.11.26的中国发明专利申请的分案申请。
技术领域
本发明涉及一种音频编码/译码方法,尤指一种子带分析/合成滤波(Subband Analysis/Synthesis Filtering)方法。
背景技术
随着电子电路运算速度的提升,耗费大量系统资源的运算(如视频/音频处理)遂成为电子装置的发展重点之一。一般视频/音频处理的规格中通常包含有若干编码型态,以因应各种数据的编码需求。以运动图形专家组(MPEG,Moving Picture Coding Experts Group)规格为例,其对于音频编码/译码的定义是一种子带分析/合成滤波(Subband Analysis/SynthesisFiltering)。相关资料请参阅ISO 11172-3、美国专利USP5,214,678、USP5,508,949、USP5,809,474、USP6,094,637、以及1994年2月的IEEE SignalProcessing Letter Vol.1 No.「Fast subband filtering in MPEG audiocoding」等文献。
已知的子带分析/合成滤波过程中所运用到的修改离散余弦转换(MDCT、Modified Discrete Cosine Transform)与逆向修改离散余弦转换(IMDCT、Inverse MDCT)的转换矩阵的行元素(Column Element)数量与列元素(RowElement)数量并不相等。以典型的子带分析滤波的过程为例,一音频信号首先被取样而产生三十二个声音样本(Audio Sample)。经过一窗口运算(Windowing Operation)后,该三十二个声音样本分别被乘以对应的窗口系数(Windowing Coefficient)以对应地产生三十二个窗口(Windowed)声音样本。通过特定的取样方式,一可储存五百一十二个变量的循环缓冲器(Circular Buffer)当中储存了十六次窗口运算所对应的五百一十二个窗口声音样本。然而已知技术对于这些窗口声音样本进行后续将提到的加总运算(Summation Operation)时,是以六十四个窗口声音样本作为该加总运算的向量元素。而紧接在该加总运算后的修改离散余弦转换过程中,又必须通过前述的转换矩阵将一具有六十四个元素的加总向量转换为三十二个子带样本(Subband Sample)以完成该音频信号的编码。因此其整体运算量相当庞大。
已知的子带分析滤波方法是以六十四个变量为单位由该循环缓冲器读取八个编码中间(intermediate)向量,其中每个编码中间向量具有六十四个元素。然后对这些编码中间向量进行加总运算(Summation Operation)以产生一加总向量,其中该加总向量的每一元素是这些编码中间向量的对应元素之和。然后通过前述的转换矩阵对该加总向量进行修改离散余弦转换以产生该三十二个子带样本。由于前述的运算过程需要进行许多加法与乘法运算,并且相关运算过程中的操作数与其所对应的向量或矩阵中的排列顺序并不连续,因此不但耗费许多运算时间,并且不适用于数字信号处理器(DSP、DigitalSignal Processor)的流水线单指令多数据运算(Pipelined SIMD Operation、Pipelined Single Instruction Multiple Data Operation)。由于多个分散储存的数据所对应的读取速度并不若一系列连续储存的数据所对应的读取速度,并且当这些操作数所对应的向量或矩阵是储存于一储存装置(如一外部内存)时,这些操作数由于前述的不连续的排列顺序而无法被循序读取,因此前述的大量运算于数据读取时间的浪费相当可观。
又以典型的子带合成滤波的过程为例,其运算方式大致为前述的子带分析滤波的逆向运算。也就是说对这些子带样本进行译码以产生一数字音频信号。经过特定编码程序所产生的多个子带样本当中的三十二个子带样本首先经过前述的逆向修改离散余弦转换而产生一具有六十四个元素的第一译码中间向量,而每一元素是一属于时域的译码中间样本。随后该第一解码中间向量被储存于一先进先出(FIFO、First In First Out)内存,其中该先进先出内存可以储存十六个第一解码中间向量,亦即可以储存一千零二十四个译码中间样本。该一千零二十四个译码中间样本当中的五百一十二个译码中间样本须经过一特定顺序以三十二个译码中间样本为单位被读取,然后经过一窗口运算,以产生五百一十二个窗口(Windowed)译码中间样本,其中每三十二个窗口译码中间样本是定义为一第二解码中间向量。最后对该五百一十二个窗口译码中间样本所对应的十六个第二译码中间向量进行加总运算以产生一译码向量,而该译码向量的三十二个元素即为该数字音频信号的声音样本。上述的译码过程须进行许多加法运算与乘法运算,并且耗费许多缓冲器的存储空间。另外相关运算过程中的操作数于其所对应的向量或矩阵中的排列顺序并不连续,因此亦不适用于前述的流水线单指令多数据运算。当这些操作数所对应的向量或矩阵是储存于一储存装置时,其数据读取时间的浪费亦相当可观。
由上述可知,已知的子带分析/合成滤波技术由于须进行许多加法运算与乘法运算而耗费许多缓冲器的存储空间。另外由于已知技术的相关运算过程中的操作数在其所对应的向量或矩阵中的排列顺序并不连续,因此亦不适用于前述的流水线单指令多数据运算。又当这些操作数所对应的向量或矩阵是储存在一储存装置时,将浪费许多数据读取时间。已知技术实有待改进。
发明内容
因此本发明的主要目的在于提供一种子带分析/合成滤波(SubbandAnalysis/Synthesis Filtering)方法,以解决上述问题。
本发明提供一种音频处理方法,用来对一音频信号进行编码,该方法具有:对2P个时域区间的音频信号取样,以产生2P*M个声音样本(AudioSample);对该2P*M个声音样本进行窗口运算(Windowing Operation),以对应地产生2P*M个窗口(Windowed)声音样本;根据依据该2P个时域区间的P个窗口声音样本产生第0个和数;根据依据该2P个时域区间的2P个窗口声音样本产生第1个至第(M-1)个和数中的一和数;以及根据该M个和数,计算M个子带样本(Subband Sample)。其中这些和数产生步骤与该子带样本计算步骤实质上是一加总运算(Summation Operation)与一修改离散余弦转换(MDCT、Modified Discrete Cosine Transform)的组合。
本发明另提供一种音频处理方法,用来对多个子带样本进行译码以产生一数字音频信号,该方法具有:对应于一第一索引,在该多个子带样本当中读取M个子带样本;对该M个子带样本进行一逆向修改离散余弦转换(IMDCT、Inverse MDCT),以产生M个输出作为N个循环缓冲变量(Circular BufferVariable)当中的M个循环缓冲变量;根据该N个循环缓冲变量当中的多个循环缓冲变量进行一综合运算,其中该综合运算为一窗口运算与一加总运算的组合;以及对应于该第一索引的变化,重新在该多个子带样本当中读取M个子带样本,以通过该逆向修改离散余弦转换进行步骤与该综合运算进行步骤产生该数字音频信号。其中该综合运算进行步骤是对应于该第一索引的变化进行加总运算,并且该逆向修改离散余弦转换进行步骤与该综合运算进行步骤是对应于该第一索引的变化进行十八次,以产生该数字音频信号。
本发明又提供一种音频处理方法,其为一种音频编码/译码方法,能够用来对一音频信号进行编码,也能够用来对多个子带样本进行译码以产生一数字音频信号。该方法对一音频信号进行编码的步骤具有:对2P个时域区间的音频信号取样,以产生2P*M个声音样本;对该2P*M个声音样本进行窗口运算,以对应地产生2P*M个窗口声音样本;根据依据该2P个时域区间的P个窗口声音样本产生第0个和数;根据依据该2P个时域区间的2P个窗口声音样本产生第1个至第(M-1)个和数中的一和数;以及根据该M个和数,计算M个子带样本。而该方法对多个子带样本进行译码的步骤具有:对应于一第一索引,在该多个子带样本当中读取M个子带样本;对该M个子带样本进行一逆向修改离散余弦转换,以产生M个输出作为N个循环缓冲变量当中的M个循环缓冲变量;根据该N个循环缓冲变量当中的多个循环缓冲变量进行一综合运算,其中该综合运算为一窗口运算与一加总运算的组合;以及对应于该第一索引的变化,重新于该多个子带样本当中读取M个子带样本,以通过该逆向修改离散余弦转换进行步骤与该综合运算进行步骤产生该数字音频信号。
本发明的好处之一是,本发明的方法能节省许多缓冲器的存储空间。
本发明的另一好处是,本发明的相关运算过程中的操作数于其所对应的向量或矩阵中的排列顺序为连续排列,因此适用于数字信号处理器(DSP、Digital Signal Processor)的流水线单指令多数据运算(Pipelined SIMDOperation、Pipelined Single Instruction Multiple Data Operation)。
本发明的又一好处是,当这些操作数所对应的向量或矩阵是储存于一储存装置(如内存)时,本发明的方法相较于已知技术节省许多数据读取时间。
附图说明
图1为本发明的音频处理方法对一音频信号进行编码的流程示意图。
图2为本发明的音频处理方法对多个子带样本进行译码的流程示意图。
图3为本发明的音频处理方法的音频编码与音频译码的流程示意图。
附图符号说明
(相关图示是流程图)
具体实施方式
本发明提供一种子带分析/合成滤波(Subband Analysis/SynthesisFiltering)方法。以下首先介绍本发明的子带分析滤波方法(如图1所示的编码流程)。其次介绍本发明的子带合成滤波方法(如图2所示的译码流程)。
请参考图1,图1为本发明的音频处理方法对一音频信号进行编码的流程示意图。本发明提供一种音频处理方法,用来对一音频信号进行编码。这些步骤的顺序并非限定本发明的范围,该方法说明如下。
步骤110:对2P个时域区间的音频信号取样,以产生2P*M个声音样本(Audio Sample)X[n];
步骤120:对该2P*M个声音样本X[n]进行窗口运算(WindowingOperation),以对应地产生2P*M个窗口(Windowed)声音样本;
步骤130:根据依据该2P个时域区间的P窗口声音样本产生第0个和数(其对应的索引i=0,以下将进一步说明);
步骤140:根据依据该2P个时域区间的2P窗声音样本产生第1个至第(M-1)个和数(其对应的索引i=1-(M-1),以下将进一步说明)中的一和数;以及
步骤150:根据该M个和数,计算M个子带样本(Subband Sample)。
上述的方法是以M个声音样本为单位进行该取样步骤(步骤110)与该窗口运算进行步骤(步骤120),并且该2P*M个声音样本X[n]的初始值皆为零,作为该方法的初始状态。而这些和数产生步骤(步骤130、140)与该子带样本计算步骤(步骤150)实质上是一加总运算(Summation Operation)与一修改离散余弦转换(MDCT、Modified Discrete Cosine Transform)的组合。另外该音频处理方法符合MPEG的规格,也就是说这些子带样本是符合MPEG的规格。为了便于理解,在本实施例中可定义P=8,且M=32。
在该第一实施例中,每一窗口声音样本是该2P*M个声音样本中的一声音样本X[n]与2P*M个窗口系数(在本实施例是符合MPEG规格的窗口系数C[n])中的一窗口系数C[n]的乘积,这些和数为:
Z [ i ] = Σ j = 0 P - 1 X [ 1 2 M + 2 Mj ] * C [ 1 2 M + 2 Mj ] , i = 0
Z [ i ] = Σ j = 0 P - 1 ( X [ 1 2 M + 2 i + 2 Mj ] * C [ 1 2 M + 2 i + 2 Mj ] ) +
Σ j = 0 P - 1 ( X [ 1 2 M - 2 i + 2 Mj ] * C [ 1 2 M - 2 i + 2 Mj ] ) , i = 1 ~ 1 4 M
Z [ i ] = Σ j = 0 P - 1 ( X [ 1 2 M + 2 i + 2 Mj ] * C [ 1 2 M + 2 i + 2 Mj ] ) -
Σ j = 0 P - 1 ( X [ 5 2 M - 2 i + 2 Mj ] * C [ 5 2 M - 2 i + 2 Mj ] ) , i = 1 4 M + 1 ~ 1 2 M - 1
Z [ i ] = Σ j = 0 P - 1 ( X [ - 1 2 M + 1 + 2 i + 2 Mj ] * C [ - 1 2 M + 1 + 2 i + 2 Mj ] ) +
Σ j = 0 P - 1 ( X [ 3 2 M - 1 - 2 i + 2 Mj ] * C [ 3 2 M - 2 i + 2 Mj ] ) , i = 1 2 M ~ 3 4 M - 1
Z [ i ] = Σ j = 0 P - 1 ( X [ - 1 2 M + 1 + 2 i + 2 Mj ] * C [ - 1 2 M + 1 + 2 i + 2 Mj ] ) -
Σ j = 0 P - 1 ( X [ - 1 2 M + 1 - 2 i + 2 Mj ] * C [ - 1 2 M + 1 - 2 i + 2 Mj ] ) , i = 3 4 M ~ M - 1
并且,这些子带样本是:
S i = Σ k = 0 M / 2 - 1 P ik * Z [ k ] + Σ k = 0 M / 2 - 1 Q ik * Z [ k + M / 2 ]
S M - 1 - i = Σ k = 0 M / 2 - 1 P ik * Z [ k ] - Σ k = 0 M / 2 - 1 Q ik * Z [ k + M / 2 ] , i = 0 ~ M / 2 - 1
其中, P ik = cos [ π 2 M ( 2 i + 1 ) ( 2 k ) ] 并且 Q ik = cos [ π 2 M ( 2 i + 1 ) ( 2 k + 1 ) ] .
本发明的第二实施例与该第一实施例大致相似,其相异之处说明如下。该第二实施例中的每一窗口声音样本是该2P*M个声音样本中的一声音样本X[n]与(2P*M-8)个窗口系数(是该第一实施例所使用的窗口系数C[n]当中去除八个窗口系数C[n],再经过重新排列而得到的窗口系数C1[n],后续将进一步说明)中的一窗口系数C1[n]的乘积,该方法更包含有:提供该(2P*M-8)个窗口系数C1[n],以使得这些和数当中的窗口系数可以通过流水线单指令多数据运算(Pipelined SIMD Operation、Pipelined Single InstructionMultiple Data Operation)的方式被使用,或者可以自一储存装置被循序读取。这些和数为:
Z [ i ] = Σ j = 0 P - 1 X [ 1 2 M + 2 Mj ] * C 1 [ j ] , i = 0
Z [ i ] = Σ j = 0 P - 1 ( X [ 1 2 M + 2 i + 2 Mj ] * C 1 [ i * 1 2 M - 1 4 M + j ] ) +
Σ j = 0 P - 1 ( X [ 1 2 M - 2 i + 2 Mj ] * C 1 [ i * 1 2 M + j ] ) , i = 1 ~ 1 4 M
Z [ i ] = Σ j = 0 P - 1 ( X [ 1 2 M + 2 i + 2 Mj ] * C 1 [ i * 1 2 M - 1 4 M + j ] ) +
Σ j = 0 P - 1 ( X [ 5 2 M - 2 i + 2 Mj ] * C 1 [ i * 1 2 M + j ] ) , i = 1 4 M + 1 ~ 1 2 M - 1
Z [ i ] = Σ j = 0 P - 1 ( X [ - 1 2 M + 1 + 2 i + 2 Mj ] * C 1 [ i * 1 2 M - 1 4 M + j ] ) +
Σ j = 0 P - 1 ( X [ 3 2 M - 1 - 2 i + 2 Mj ] * C 1 [ i * 1 2 M + j ] ) , i = 1 2 M ~ 3 4 M - 1
Z [ i ] = Σ j = 0 P - 1 ( X [ - 1 2 M + 1 + 2 i + 2 Mj ] * C 1 [ i * 1 2 M - 1 4 M + j ] ) +
Σ j = 0 P - 1 ( X [ - 1 2 M + 1 - 2 i + 2 Mj ] * C 1 [ i * 1 2 M + j ] ) , i = 3 4 M ~ M - 1
并且这些子带样本是:
S i = Σ k = 0 M / 2 - 1 P ik * Z [ k ] + Σ k = 0 M / 2 - 1 Q ik * Z [ k + M / 2 ]
S M - 1 - i = Σ k = 0 M / 2 - 1 P ik * Z [ k ] - Σ k = 0 M / 2 - 1 Q ik * Z [ k + M / 2 ] , i = 0 ~ M / 2 - 1
其中 P ik = cos [ π 2 M ( 2 i + 1 ) ( 2 k ) ] 并且 Q ik = cos [ π 2 M ( 2 i + 1 ) ( 2 k + 1 ) ] .
通过本发明的方法,该(2P*M-8)个窗口系数C1[n]对应于相关运算中的索引(如前述的和数Z[i]与窗口系数C1[n]的相关运算中窗口系数C1[n]的索引)是连续排列,因此本发明不但节省相关运算的缓冲器的存储空间,亦可通过较少数量的窗口系数C1[n]完成上述的编码过程。在本实施例中,P=8,且M=32,而该(2P*M-8)个窗口系数C1[n]即为该504个窗口系数C1[n],如以下所示。
C1[504]={
-0.000002384,0.000069618,-0.000021458,-0.004756451,0.030526638,0.004638195,0.000747204,0.000049591,
-0.000003338,0.000050545,-0.000259876,-0.006189346,0.029224873,0.004489899,0.000680923,0.000043392,
-0.000001907,0.000084400,0.000191689,-0.003411293,0.031706810,0.004728317,0.000809669,0.000055790,
-0.000003815,0.000027180,-0.000522137,-0.007703304,0.027815342,0.004290581,0.000611782,0.000037670,
-0.000001430,0.000095367,0.000378609,-0.002161503,0.032754898,0.004752159,0.000866413,0.000062942,
-0.000004768,-0.000000954,-0.000806808,-0.009287834,0.026310921,0.004048824,0.000542164,0.000032425,
-0.000000954,0.000102520,0.000539303,-0.001011848,0.033659935,0.004703045,0.000915051,0.000070095,
-0.000006199,-0.000034332,-0.001111031,-0.010933399,0.024725437,0.003771782,0.000472546,0.000027657,
-0.000000954,0.000106812,0.000674248,0.000033379,0.034412861,0.004573822,0.000954151,0.000076771,
-0.000007629,-0.000072956,-0.001432419,-0.012627602,0.023074150,0.003467083,0.000404358,0.000023365,
-0.000000477,0.000108719,0.000783920,0.000971317,0.035007000,0.004357815,0.000980854,0.000083923,
-0.000009060,-0.000116348,-0.001766682,-0.014358521,0.021372318,0.003141880,0.000339031,0.000019550,
-0.000000477,0.000108242,0.000868797,0.001800537,0.035435200,0.004049301,0.000994205,0.000090599,
-0.000011444,-0.000165462,-0.002110004,-0.016112804,0.019634247,0.002803326,0.000277042,0.000016689,
-0.000000477,0.000105858,0.000930786,0.002521515,0.035694122,0.003643036,0.000991821,0.000096321,
-0.000013828,-0.000218868,-0.002457142,-0.017876148,0.017876148,0.002457142,0.000218868,0.000013828,
0.000000000,0.000101566,0.000971317,0.003134727,0.035780907,0.003134727,0.000971317,0.000101566,
-0.000016689,-0.000277042,-0.002803326,-0.019634247,0.016112804,0.002110004,0.000165462,0.000011444,
0.000096321,0.000991821,0.003643036,0.035694122,0.002521515,0.000930786,0.000105858,-0.000000477,
-0.000019550,-0.000339031,-0.003141880,-0.021372318,0.014358521,0.001766682,0.000116348,0.000009060,
0.000090599,0.000994205,0.004049301,0.035435200,0.001800537,0.000868797,0.000108242,-0.000000477,
-0.000023365,-0.000404358,-0.003467083,-0.023074150,0.012627602,0.001432419,0.000072956,0.000007629,
0.000083923,0.000980854,0.004357815,0.035007000,0.000971317,0.000783920,0.000108719,-0.000000477,
-0.000027657,-0.000472546,-0.003771782,-0.024725437,0.010933399,0.001111031,0.000034332,0.000006199,
0.000076771,0.000954151,0.004573822,0.034412861,0.000033379,0.000674248,0.000106812,-0.000000954,
-0.000032425,-0.000542164,-0.004048824,-0.026310921,0.009287834,0.000806808,0.000000954,0.000004768,
0.000070095,0.000915051,0.004703045,0.033659935,-0.001011848,0.000539303,0.000102520,-0.000000954,
-0.000037670,-0.000611782,-0.004290581,-0.027815342,0.007703304,0.000522137,-0.000027180,0.000003815,
0.000062942,0.000866413,0.004752159,0.032754898,-0.002161503,0.000378609,0.000095367,-0.000001430,
-0.000043392,-0.000680923,-0.004489899,-0.029224873,0.006189346,0.000259876,-0.000050545,0.000003338,
0.000055790,0.000809669,0.004728317,0.031706810,-0.003411293,0.000191689,0.000084400,-0.000001907,
-0.000002861,0.000060558,-0.000137329,-0.005462170,0.029890060,0.004570484,0.000714302,0.000046253,
-0.000002384,0.000077724,0.000088215,-0.004072189,0.031132698,0.004691124,0.000779152,0.000052929,
-0.000003338,0.000039577,-0.000388145,-0.006937027,0.028532982,0.004395962,0.000646591,0.000040531,
-0.000001907,0.000090122,0.000288486,-0.002774239,0.032248020,0.004748821,0.000838757,0.000059605,
-0.000004292,0.000013828,-0.000661850,-0.008487225,0.027073860,0.004174709,0.000576973,0.000034809,
-0.000001430,0.000099182,0.000462532,-0.001573563,0.033225536,0.004737377,0.000891685,0.000066280,
-0.000005245,-0.000017166,-0.000956535,-0.010103703,0.025527000,0.003914356,0.000507355,0.000030041,
-0.000000954,0.000105381,0.000610352,-0.000475883,0.034055710,0.004649162,0.000935555,0.000073433,
-0.000006676,-0.000052929,-0.001269817,-0.011775017,0.023907185,0.003622532,0.000438213,0.000025272,
-0.000000954,0.000108242,0.000731945,0.000515938,0.034730434,0.004477024,0.000968933,0.000080585,
-0.000008106,-0.000093937,-0.001597881,-0.013489246,0.022228718,0.003306866,0.000371456,0.000021458,
-0.000000477,0.000108719,0.000829220,0.001399517,0.035242081,0.004215240,0.000989437,0.000087261,
-0.000010014,-0.000140190,-0.001937389,-0.015233517,0.020506859,0.002974033,0.000307560,0.000018120,
-0.000000477,0.000107288,0.000902653,0.002174854,0.035586357,0.003858566,0.000995159,0.000093460,
-0.000012398,-0.000191212,-0.002283096,-0.016994476,0.018756866,0.002630711,0.000247479,0.000014782,
-0.000000477,0.000103951,0.000953674,0.002841473,0.035758972,0.003401756,0.000983715,0.000099182,
-0.000014782,-0.000247479,-0.002630711,-0.018756866,0.016994476,0.002283096,0.000191212,0.000012398,
0.000099182,0.000983715,0.003401756,0.035758972,0.002841473,0.000953674,0.000103951,-0.000000477,
-0.000018120,-0.000307560,-0.002974033,-0.020506859,0.015233517,0.001937389,0.000140190,0.000010014,
0.000093460,0.000995159,0.003858566,0.035586357,0.002174854,0.000902653,0.000107288,-0.000000477,
-0.000021458,-0.000371456,-0.003306866,-0.022228718,0.013489246,0.001597881,0.000093937,0.000008106,
0.000087261,0.000989437,0.004215240,0.035242081,0.001399517,0.000829220,0.000108719,-0.000000477,
-0.000025272,-0.000438213,-0.003622532,-0.023907185,0.011775017,0.001269817,0.000052929,0.000006676,
0.000080585,0.000968933,0.004477024,0.034730434,0.000515938,0.000731945,0.000108242,-0.000000954,
-0.000030041,-0.000507355,-0.003914356,-0.025527000,0.010103703,0.000956535,0.000017166,0.000005245,
0.000073433,0.000935555,0.004649162,0.034055710,-0.000475883,0.000610352,0.000105381,-0.000000954,
-0.000034809,-0.000576973,-0.004174709,-0.027073860,0.008487225,0.000661850,-0.000013828,0.000004292,
0.000066280,0.000891685,0.004737377,0.033225536,-0.001573563,0.000462532,0.000099182,-0.000001430,
-0.000040531,-0.000646591,-0.004395962,-0.028532982,0.006937027,0.000388145,-0.000039577,0.000003338,
0.000059605,0.000838757,0.004748821,0.032248020,-0.002774239,0.000288486,0.000090122,-0.000001907,
-0.000046253,-0.000714302,-0.004570484,-0.029890060,0.005462170,0.000137329,-0.000060558,0.000002861,
0.000052929,0.000779152,0.004691124,0.031132698,-0.004072189,0.000088215,0.000077724,-0.000002384
}
接下来说明本发明的第三实施例。请参考图2,图2为本发明的音频处理方法对多个子带样本进行译码的流程示意图。本发明提供一种音频处理方法,用来对多个子带样本xr[m]进行译码以产生一数字音频信号。该方法是适用于数字信号处理器(DSP、Digital Signal Processor)的流水线单指令多数据运算。这些步骤的顺序并非限定本发明的范围,该方法说明如下。
步骤210:对应于一第一索引p,于多个子带样本xr[m]当中读取M个子带样本xr[18q+p],其中q=M-1-0,而第一索引p的值域是零至十七的整数;
步骤220:对该M个子带样本xr[18q+p]进行一逆向修改离散余弦转换(IMDCT、Inverse MDCT),以产生M个输出作为N个循环缓冲变量(CircularBuffer Variable)vs[n]当中的M个循环缓冲变量;
步骤230:根据该N个循环缓冲变量当中的多个循环缓冲变量进行一综合运算;以及
步骤240:对应于第一索引p的变化,重新在多个子带样本xr[m]当中读取M个子带样本xr[18q+p],以通过该逆向修改离散余弦转换进行步骤(步骤220)与该综合运算进行步骤(步骤230)产生该数字音频信号。
在步骤220当中,每一次逆向修改离散余弦转换所产生的M个输出是依照一反向顺序排列(即对应于q=M-1-0而排列)作为该N个循环缓冲变量当中的连续M个循环缓冲变量的值。该N个循环缓冲变量可以储存于一循环缓冲器(Circular Buffer),而每一次逆向修改离散余弦转换所产生的M个输出则依照一反向顺序储存于该循环缓冲器。而该综合运算进行步骤(步骤230)是对应于第一索引p的变化进行加总运算,并且该逆向修改离散余弦转换进行步骤(步骤220)与该综合运算进行步骤(步骤230)是对应于第一索引p的变化进行十八次,以产生该数字音频信号。另外该音频处理方法是符合MPEG的规格,也就是说多个子带样本xr[m]是符合MPEG的规格。为了便于理解,在本实施例中可定义N=512,且M=32。这些逆向修改离散余弦转换是:
for(i=3M/2;i>=M/2+1;i--)
{
vsl[--vsi]=0;
for(j=0;j<M;j++)
vsl[vsi]+=cos(PI/2M*(i+M/2)*(2*j+1))*xr[18M+18*j+p];
}
其中,PI代表圆周率。而该综合运算是:
for(j=0;j<=M/2-1;j++)
{
ps[M*p+j]=0;
for(i=0;i<M/2;i+=2)
ps[M*p+j]+=(-d[M*i+j]*vs[vsi+M*i+M/2-1-j]);
for(i=1;i<=M/2-1;i+=2)
ps[M*p+j]+=(d[M*i+j]*vs[vsi+M*i+M/2-1+j]);
}
ps[18*M+M*p+M/2]=0;
for(i=1;i<=M/2-1;i+=2)
ps[M*p+M/2]+=(d[M*i+M/2]*vs[vsi+M*i+M/2-1+M/2]);
for(j=M/2+1;j<=M-1;j++)
{
ps[18*M+M*p+j]=0;
for(i=0;i<M/2;i+=2)
ps[M*p+j]+=(d[M*i+j]*vs[vsi+M*i+j-M/2+1]);
for(i=1;i<=M/2-1;i+=2)
ps[M*p+j]+=(d[M*i+j]*vs[vsi+M*i+3M/2-1-j]);
}
其中,声音样本ps[n]是该数字音频信号的声音样本ps[n],而窗口系数d[n]是该窗口运算的窗口系数d[n]。
本发明的第四实施例与该第三实施例大致相似,其相异之处说明如下。在该第四实施例当中,该窗口运算的窗口系数d[n]的数量是N/2+1,因此不但可以大幅地节省缓冲存储器的储存空间,也可以大幅地节省相关运算中读取窗口系数d[n]的时间。为了便于理解,在本实施例中亦可定义N=512,且M=32。这些逆向修改离散余弦转换为:
for(i=3M/2;i>=M/2+1;i--)
  {
  vsl[--vsi]=0;
  for(j=0;j<M;j++)
  vsl[vsi]+=cos(PI/2M*(i+M/2)*(2*j+1))*xr[18M+18*j+p];
  }
其中,PI代表圆周率。而该综合运算是:
j=0;
  ps[M*p+j]=0;
for(i=0;i<M/4;i+=2)
  ps[M*p+j]+=(-d[M*i+j]*vs[(vsi+M*i+M/2-1-j)]);
for(i=M/4;i<M/2;i+=2)
  ps[M*p+j]+=(-d[N-M*i-j]*vs[(vsi+M*i+M/2-1-j)]);
for(i=1;i<M/4+1;i+=2)
  ps[M*p+j]+=(d[M*i+j]*vs[(vsi++M*i+M/2-1+j)]);
for(i=M/4+1;i<=M/2-1;i+=2)
  ps[M*p+j]+=(-d[N-M*i-j]*vs[(vsi+M*i+M/2-1+j)]);
for(j=1;j<=M/2-1;j++)
{
  ps[M*p+j]=0;
for(i=0;i<M/4;i+=2)
  ps[18*M+M*p+j]+=(-d[M*i+j]*vs[(vsi+M*i+M/2-1-j)]);
for(i=8;i<M/2;i+=2)
  ps[M*p+j]+=(d[N-M*i-j]*vs[(vsi+M*i+M/2-1-j)]);
for(i=1;i<M/4+1;i+=2)
  ps[M*p+j]+=(d[M*i+j]*vs[(vsi+M*i+M/2-1+j)]);
for(i=M/4+1;i<=M/2-1;i+=2)
  ps[M*p+j]+=(-d[N-M*i-j]*vs[(vsi+M*i+M/2-1+j)]);
}
  ps[M*p+M/2]=0;
for(i=1;i<M/4+1;i+=2)
  ps[M*p+M/2]+=(d[M*i+M/2]*vs[(vsi+M*i+M/2-1+M/2]);
for(i=M/4+1;i<=M/2-1;i+=2)
  ps[M*p+M/2]+=(-d[N-M*i-M/2]*vs[(vsi+M*i+M/2-1+M/2)]);
for(j=M/2+1;j<=M-1;j++)
{
  ps[M*p+j]=0;
for(i=0;i<M/4;i+=2)
  ps[18*M+M*p+j]+=(d[M*i+j]*vs[(vsi+M*i+j-M/2+1)]);
for(i=M/4;i<M/2;i+=2)
  ps[M*p+j]+=(-d[N-M*i-j]*vs[(vsi+M*i+j-M/2+1)]);
for(i=1;i<M/4+1;i+=2)
  ps[M*p+j]+=(d[M*i+j]*vs[(vsi+M*i+3M/2-1-j)]);
for(i=M/4+1;i<=M/2-1;i+=2)
  ps[M*p+j]+=(-d[N-M*i-j]*vs[(vsi+M*i+3M/2-1-j)]);
}
其中,声音样本ps[n]是该数字音频信号的声音样本ps[n]。
请参考图3,图3为本发明的音频处理方法的音频编码与音频译码的流程示意图。图3的方法是图1的编码方法与图2的译码方法的组合,在不影响本发明的实施的情况下,相关步骤的顺序并非限定本发明的范围。图3的步骤不再重复赘述。
相较于已知技术,本发明的方法能节省许多缓冲器的存储空间,并且本发明的相关运算过程中的操作数在其所对应的向量或矩阵中的排列顺序是连续排列,因此适用于数字信号处理器的流水线单指令多数据运算。另外当这些操作数所对应的向量或矩阵是储存于一储存装置(如内存)时,本发明的方法相较于已知技术节省许多数据读取时间。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明专利的涵盖范围。

Claims (1)

1.一种符合MPEG规格的音频处理方法,用来对多个子带样本xr[m]进行译码以产生一数字音频信号,该方法包含有:
对应于一第一索引p,在该多个子带样本xr[m]当中读取M个子带样本xr[18q+p],
其中,q=(M-1)~0,而第一索引p的值是0到17的整数;
对该M个子带样本xr[18q+p]进行一逆向修改离散余弦转换,以产生M个输出vs[1]作为N个循环缓冲变量vs[n]当中的M个循环缓冲变量,其中,该N个循环缓冲变量存储在一循环缓冲器,该M个输出vs[1]依照一反向顺序排列,作为该N个循环缓冲变量vs[n]当中的连续M个循环缓冲变量的值,以及该逆向修改离散余弦转换为:
for(i=3m/2∶1>=M/2+1;i=--)
{
vs1[--vsi]=0;
  for(j=0;j<M;j++)
    vs1[vsi]+=cos(pI/2M*(i+M/2)*(2*J+1))*xr[18M+18*j+p];
    }
其中,PI代表圆周率;
根据该N个循环缓冲变量当中的多个循环缓冲变量进行一综合运算,其中该综合运算是一窗口运算与对应于该第一索引p的变化的一加总运算的组合;以及
对应于该第一索引p的变化,重新在该多个子带样本xr[m]当中读取M个子带样本xr[18q+p],以通过对应于该第一索引p的变化进行18次的该逆向修改离散余弦转换进行步骤与该综合运算进行步骤来产生该数字音频信号;
其中,该方法适用于数字信号处理器的流水线单指令多数据运算,以及下列(a)与(b)当中仅有一者成立:
(a)该综合运算为:
for(j=0;j<=M/2-1;j++)
    {
ps[M*p+j]=0;
for(i=0;i<M/2;i+=2)
ps[M*p+j]+=(-d[M*i+j]*vs[vsi+M*i+M/2-1-j]);
for(i=1;i<=M/2-1;i+=2)
ps[M*p+j]+=(d[M*i+j]*vs[vsi+M*i+M/2-1+j]);
}
ps[18*M+M*p+M/2]=0;
for(i=1;i<=M/2-1;i+=2)
ps[M*p+M/2]+=(d[M*i+M/2]*vs[vsi+M*i+M/2-1+M/2]);
for(j=M/2+1;j<=M-1;j++)
{
ps[18*M+M*p+j]=0;
for(i=0;i<M/2;i+=2)
ps[M*p+j]+=(d[M*i+j]*vs[vsi+M*i+j-M/2+1]);
for(i=1;i<=M/2-1;i+=2)
ps[M*p+j]+=(d[M*i+j]*vs[vsi+M*i+3M/2-1-j]);
}
其中,声音样本ps[n]是该数字音源信号的声音样本ps[n],而窗口系数d[n]是该窗口运算的窗口系数d[n];
(b)该综合运算是:
j=0;
ps[M*p+j]=0;
for(i=0;i<M/4;i+=2)
ps[M*p+j]+=(-d[M*i+j]*vs[(vsi+M*i+M/2-1-j)]);
for(i=M/4;i<M/2;i+=2)
ps[M*p+j]+=(-d[N-M*i-j]*vs[(vsi+M*i+M/2-1-j)]);
for(i=1;i<M/4+1;i+=2)
ps[M*p+j]+=(d[M*i+j]*vs[(vsi+M*i+M/2-1+j)]);
for(i=M/4+1;i<=M/2-1;i+=2)
ps[M*p+j]+=(-d[N-M*i-j]*vs[(vsi+M*i+M/2-1+j)]);
for(j=1;j<=M/2-1;j++)
{
  ps[M*p+j]=0;
for(i=0;i<M/4;i+=2)
  ps[18*M+M*p+j]+=(-d[M*i+j]*vs[(vsi+M*i+M/2-1-j)]);
for(i=8;i<M/2;i+=2)
  ps[M*p+j]+=(d[N-M*i-j]*vs[(vsi+M*i+M/2-1-j)]);
for(i=1;i<M/4+1;i+=2)
  ps[M*p+j]+=(d[M*i+j]*vs[(vsi+M*i+M/2-1+j)]);
for(i=M/4+1;i<=M/2-1;i+=2)
  ps[M*p+j]+=(-d[N-M*i-j]*vs[(vsi+M*i+M/2-1+j)]);
}
  ps[M*p+M/2]=0;
for(i=1;i<M/4+1;i+=2)
  ps[M*p+M/2]+=(d[M*i+M/2]*vs[(vsi+M*i+M/2-1+M/2)]);
for(i=M/4+1;i<=M/2-1;i+=2)
  ps[M*p+M/2]+=(-d[N-M*i-M/2]*vs[(vsi+M*i+M/2-1+M/2)]);
for(j=M/2+1;j<=M-1;j++)
{
  ps[M*p+j]=0;
for(i=0;i<M/4;i+=2)
  ps[18*M+M*p+j]+=(d[M*i+j]*vs[(vsi+M*i+j-M/2+1)]);
for(i=M/4;i<M/2;i+=2)
  ps[M*p+j]+=(-d[N-M*i-j]*vs[(vsi+M*i+j-M/2+1)]);
for(i=1;i<M/4+1;i+=2)
  ps[M*p+j]+=(d[M*i+j]*vs[(vsi+M*i+3M/2-1-j)]);
for(i=M/4+1;i<=M/2-1;i+=2)
  ps[M*p+j]+=(-d[N-M*i-j]*vs[(vsi+M*i+3M/2-1-j)]);
}
其中,声音样本ps[n]是该数字音源信号的声音样本ps[n],而窗口系数d[n]是该窗口运算的窗口系数d[n],且该窗口运算的窗口系数d[n]的数量为N/2+1。
CNB2006100718328A 2003-11-26 2003-11-26 子带分析/合成滤波方法 Expired - Fee Related CN100573666C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100718328A CN100573666C (zh) 2003-11-26 2003-11-26 子带分析/合成滤波方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100718328A CN100573666C (zh) 2003-11-26 2003-11-26 子带分析/合成滤波方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB2003101179487A Division CN1270290C (zh) 2003-11-26 2003-11-26 子带分析/合成滤波方法

Publications (2)

Publication Number Publication Date
CN1835078A CN1835078A (zh) 2006-09-20
CN100573666C true CN100573666C (zh) 2009-12-23

Family

ID=37002793

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100718328A Expired - Fee Related CN100573666C (zh) 2003-11-26 2003-11-26 子带分析/合成滤波方法

Country Status (1)

Country Link
CN (1) CN100573666C (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PT2109098T (pt) * 2006-10-25 2020-12-18 Fraunhofer Ges Forschung Aparelho e método para gerar amostras de áudio de domínio de tempo
EP2372703A1 (en) 2010-03-11 2011-10-05 Fraunhofer-Gesellschaft zur Förderung der Angewandten Forschung e.V. Signal processor, window provider, encoded media signal, method for processing a signal and method for providing a window

Also Published As

Publication number Publication date
CN1835078A (zh) 2006-09-20

Similar Documents

Publication Publication Date Title
CN101251791B (zh) 用于处理文本串的指令和逻辑
US8990280B2 (en) Configurable system for performing repetitive actions
EP2284694B1 (en) A method, apparatus, and instruction for performing a sign operation that multiplies
US20120016502A1 (en) Processor extensions for accelerating spectral band replication
US5835392A (en) Method for performing complex fast fourier transforms (FFT's)
Kehtarnavaz et al. DSP System Design
CN101025919B (zh) 音频解码中的合成子带滤波方法和合成子带滤波器
CN104349260A (zh) 低功耗wola滤波器组及其综合阶段电路
CN100573666C (zh) 子带分析/合成滤波方法
EP2778948A2 (en) FFT Accelerator
CN102439585B (zh) 从任意信号对提取共同及唯一分量
CN101354888A (zh) 在音频信号解码器中实现均衡器的方法及其装置
WO2022204612A1 (en) Harmonics based target speech extraction network
TWI227866B (en) Subband analysis/synthesis filtering method
KR0147758B1 (ko) Mpeg-2 오디오 복호화기의 합성 필터
US20020072898A1 (en) Audio coding decoding device and method and recording medium with program recorded therein
CN101546560B (zh) 音频编解码装置及编解码方法
US20090172062A1 (en) Efficient fixed-point implementation of an fft
Kehtarnavaz et al. Digital signal processing system design: using LabVIEW and TMS320C6000
CN100487810C (zh) 基于可重构运算单元的mp3解码滤波器系统
Smith Irreducible spaces and property b1
Du et al. An implementation of filterbank for mpeg-2 aac on fpga
CN103257953B (zh) Imdct36运算模块及方法
KR950024194A (ko) 분석 서브밴드필터
You et al. Implementation of IMDCT for MPEG2/4 AAC on 16-bit fixed-point digital signal processors

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091223

Termination date: 20191126