| IMDCT在MP3音頻解碼中的實(shí)現(xiàn) |
| 合肥工業(yè)大學(xué) 劉林蘇 祖輝 |
| 摘要:在這篇文章中,將主要討論IMDCT在MP3中應(yīng)用時(shí)的遞歸循環(huán)實(shí)現(xiàn)。MDCT和IMDCT是兩種重疊正交變換,是MPEG音頻標(biāo)準(zhǔn)中運(yùn)算量最大的兩種運(yùn)算,主要應(yīng)用在數(shù)字信號(hào)處理當(dāng)中。 這里本文將采用Clenshaw 的循環(huán)公式,來(lái)實(shí)現(xiàn)IMDCT的內(nèi)核,就得到了一種該變換的高效實(shí)現(xiàn),這種方法特別適合VLSI的并行實(shí)現(xiàn)。 關(guān)鍵字:IMDCT,MP3,音頻解碼。 |
| 一、引言 ---MP3[1],即MPEG Audio Layer-3,它是對(duì)數(shù)字音頻的一種強(qiáng)有力的壓縮算法,它可能不是壓縮最強(qiáng)勁的工具,但他絕對(duì)是應(yīng)用最廣泛的壓縮算法,MP3的解碼是按照一定的步驟進(jìn)行的[1],如圖(1)所示: ---在MPEG 音頻的編解碼標(biāo)準(zhǔn)中,編碼時(shí)采用的是動(dòng)態(tài)加窗和MDCT ,解碼則是采用的是動(dòng)態(tài)的去窗和IMDCT以達(dá)到較高的聲音效果。這里只討論解碼和IMDCT,由于IMDCT在應(yīng)用中的運(yùn)算量特別大,所以如果直接進(jìn)行計(jì)算將是一份沉重且耗時(shí)耗力的工作,所以一種高效的算法在MP3解碼中是十分必要的。 ---在實(shí)際應(yīng)用中,并行的要比串行的效率要高,且實(shí)際應(yīng)用中,IMDCT可以通過(guò)并行濾波網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)[2];另外,理論上證明,DCT 可以通過(guò)Clenshaw 循環(huán)公式來(lái)實(shí)現(xiàn)[3],基于這些本文希望用Clenshaw[4]循環(huán)公式來(lái)實(shí)現(xiàn)。而且,MP3中用到的IMDCT是定長(zhǎng)的,這樣由Clenshaw 循環(huán)公式的得到的遞歸結(jié)構(gòu),就特別適合并行VLSI實(shí)現(xiàn),并且與直接計(jì)算比起來(lái),可以節(jié)省運(yùn)算次數(shù)和硬件資源。 二、Clenshaw 的遞歸公式 Clenshaw循環(huán)公式在估計(jì)已給定的循環(huán)公式的系數(shù)方面是一流的,極其高效的。它的一些特性和正選曲線循環(huán)公式很相似。在這里主要用它來(lái)推到IMDCT的遞歸算法。 ---首先先看一下Clenshaw 循環(huán)公式: f(x) = 并且, (2) 對(duì)于公式中的 1).公式定義
其中 f(x) =
合并后得到: f(x)= 這就是Clenshaw公式的降序遞歸排列。 同理,可以得到Clenshaw公式的升序排列
f(x)可以通過(guò)下面的公式計(jì)算得到;
三、推導(dǎo)IMDCT算法 首先看一下IMDCT的公式,X(k),k = 0,1,·····,M-1。X(k)作為信號(hào)的輸入源,現(xiàn)在需要對(duì)它作IMDCT變換,結(jié)果保存在x(n)中,n = 0,1, ····N-1.其中N= 2M,N表示的是窗的長(zhǎng)度,M代表的是變換的系數(shù)。(在實(shí)際的應(yīng)用中,M是固定的) 為了方便推導(dǎo),這里定義: = 所以, 根據(jù)(3)式可以定義:
結(jié)合(4)式,可知: 將
(10)式可以寫(xiě)為:x(n) = 由(8)式當(dāng)k = 0知: 從而可以得到: 同樣, 四、VLSI的實(shí)現(xiàn) 在大規(guī)模集成電路中,我們可以通過(guò)圖(2)和圖(3)來(lái)實(shí)現(xiàn)上述算法:
圖(2)使用(10)式實(shí)現(xiàn)IMDCT(升序)
圖(3)使用(11)式實(shí)現(xiàn)IMDCT(降序) 變換中的所有元素都可以并行計(jì)算,可以在大規(guī)模集成電路中實(shí)現(xiàn)。與文獻(xiàn)【2】的方法相比較,本算法多需要一個(gè)延遲元件,輸入信號(hào)應(yīng)該按照倒序輸入;但是不用考慮M的奇偶性,其中使用的加法器和乘法器是一樣多的,為了計(jì)算一個(gè)N點(diǎn)輸出的IMDCT的一個(gè)樣本輸出值,使用圖(2)需要進(jìn)行(M+2)次乘法和(2M+1)次加法,而【2】中則需要3M次加法;而如果使用圖(3)則需要進(jìn)行(M +1)次乘法和(2M+1)次加法。 五、性能比較 下面將就本算法與【1】中提供的算法和傳統(tǒng)的實(shí)現(xiàn)方法作一對(duì)比: 表(1)本算法和【2】中算法的比較 |



有下面的約束:
(3)


(5)

(8)
代入上式得到


