AAC解碼算法原理詳解_第1頁(yè)
AAC解碼算法原理詳解_第2頁(yè)
AAC解碼算法原理詳解_第3頁(yè)
AAC解碼算法原理詳解_第4頁(yè)
AAC解碼算法原理詳解_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、A A C 解 碼 算 法 原 理 詳 解 原作者:龍帥此文章為提供,未經(jīng)站長(zhǎng)授權(quán),嚴(yán)禁轉(zhuǎn)載,但歡迎鏈接到此地址。本文詳細(xì)介紹了符合 ISO/IEC13818-7(MPEG2AACaudiocodec),ISO/IEC14496-3(MPEG4AudioCod ecAACLowComplexity)進(jìn)行壓縮的的 AAC音頻的解碼算法。1、程序系統(tǒng)結(jié)構(gòu)下面是AAC解碼流程圖:AAC解碼流程圖?在主控模塊幵始運(yùn)行后,主控模塊將AAC比特流的一部分放入輸入緩沖區(qū),通過查找同步字得到一幀的起始,找到后,根據(jù) ISO/IEC13818-7 所 述的語法開始進(jìn)行 NoislessDecoding( 無噪解

2、碼 ) ,無噪解碼實(shí)際上就是哈 夫曼解碼,通過反量化 (Dequantize) 、聯(lián)合立體聲( JointStereo ),知 覺噪聲替換(PNS ,瞬時(shí)噪聲整形(TNS,反離散余弦變換(IMDCT, 頻段復(fù)制(SBR這幾個(gè)模塊之后,得出左右聲道的PCM碼流,再由主控模塊將其放入輸出緩沖區(qū)輸出到聲音播放設(shè)備。2. 主控模塊 主控模塊的主要任務(wù)是操作輸入輸出緩沖區(qū),調(diào)用其它各模塊協(xié)同工作。 其中,輸入輸出緩沖區(qū)均由 DSP空制模塊提供接口。輸出緩沖區(qū)中將存放的數(shù)據(jù)為解碼出來的PCM數(shù)據(jù),代表了聲音的振幅。它由一塊固定長(zhǎng)度的 緩沖區(qū)構(gòu)成,通過調(diào)用 DSP空制模塊的接口函數(shù),得到頭指針,在完成輸 出

3、緩沖區(qū)的填充后,調(diào)用中斷處理輸出至I2S接口所連接的音頻 ADC芯片(立體聲音頻DAC和DirectDrive 耳機(jī)放大器)輸出模擬聲音。3. 同步及元素解碼同步及元素解碼模塊主要用于找出格式信息,并進(jìn)行頭信息解碼,以及對(duì) 元素信息進(jìn)行解碼。這些解碼的結(jié)果用于后續(xù)的無噪解碼和尺度因子解碼模塊。AAC的音頻文件格式有以下兩種:ADIF:AudioDataInterchangeFormat 音頻數(shù)據(jù)交換格式。 這種格式的特征是可以確定的找到這個(gè)音頻數(shù)據(jù)的開始,不需進(jìn)行在音頻數(shù)據(jù)流中間開始 的解碼,即它的解碼必須在明確定義的開始處進(jìn)行。故這種格式常用在磁 盤文件中。ADTS: AudioDataTr

4、ansportStream 音頻數(shù)據(jù)傳輸流。 這種格式的特征是它是一個(gè)有同步字的比特流,解碼可以在這個(gè)流中任何位置開始。它的特征 類似于mp3數(shù)據(jù)流格式。AAC的ADIF格式見下圖:?3.1ADIF 的組織結(jié)構(gòu)AAC的ADTS勺一般格式見下圖:3.2ADTS的組織結(jié)構(gòu)圖中表示出了 ADTS-幀的簡(jiǎn)明結(jié)構(gòu),其兩邊的空白矩形表示一幀前后的數(shù)據(jù)。ADIF和ADTS勺header是不同的。它們分別如下所示:?3.3ADIF 的頭信息3.4ADTS的固定頭信息?adts勺可變頭信息?3.5 幀同步幀同步目的在于找出幀頭在比特流中的位置,13818-7規(guī)定,aacADTS格式的幀頭為 12 比特的“111

5、111111111”.3.6 頭信息解碼ADTS勺頭信息為兩部分組成,其一為固定頭信息,緊接著是可變頭信息。 固定頭信息中的數(shù)據(jù)每一幀都相同,而可變頭信息則在幀與幀之間可變。3.7 元素信息解碼在AAC中,原始數(shù)據(jù)塊的組成可能有六種不同的元素。它們分別是SCE:SingleChannelElement 單通道元素。單通道元素基本上只由一個(gè) ICS組成。一個(gè)原始數(shù)據(jù)塊最可能由16個(gè)SCE組成。CPE:ChannelPairElement 雙通道元素, 由兩個(gè)可能共享邊信息的 ICS 和一些聯(lián)合立體聲編碼信息組成。一個(gè)原始數(shù)據(jù)塊最多可能由16個(gè)SCE組成。CCE:CouplingChannelEl

6、ement 藕合通道元素。 代表一個(gè)塊的多通道聯(lián)合立 體聲信息或者多語種程序的對(duì)話信息。LFE:LowFrequencyElement 低頻元素。 包含了一個(gè)加強(qiáng)低采樣頻率的通道。DSE:DataStreamElement 數(shù)據(jù)流元素,包含了一些并不屬于音頻的附加信息。PCE:ProgramConfigElement 程序配置元素。 包含了聲道的配置信息。 它可 能出現(xiàn)在 ADIF 頭部信息中。FIL:FillElement填充元素。包含了一些擴(kuò)展信息。如SBR動(dòng)態(tài)范圍控制信息等。3.8 處理流程(1).判斷文件格式,確定為 ADIF或ADTS (2). 若為ADIF,解ADIF頭信息,跳至第

7、6步.若為ADTS尋找同步頭。(4) .解ADTS幀頭信息。(5) .若有錯(cuò)誤檢測(cè),進(jìn)行錯(cuò)誤檢測(cè)。(6) .解塊信息。(7) .解元素信息。4. 無噪聲解碼無噪編碼就是哈夫曼編碼,它的作用在于進(jìn)一步減少尺度因子和量化后頻 譜的冗余,即將尺度因子和量化后的頻譜信息進(jìn)行哈夫曼編碼。全局增益編碼成一個(gè) 8 位的無符號(hào)整數(shù),第一個(gè)尺度因子與全局增益值進(jìn) 行差分編碼后再使用尺度因子編碼表進(jìn)行哈夫曼編碼。后續(xù)的各尺度因子 都與前一個(gè)尺度因子進(jìn)行差分編碼。量化頻譜的無噪編碼有兩個(gè)頻譜系數(shù)的劃分。其一為 4 元組和 2 元組的劃 分,另一個(gè)為節(jié)劃分。對(duì)前一個(gè)劃分來說,確定了一次哈夫曼表查找出的 數(shù)值是 4個(gè)還

8、是 2個(gè)。對(duì)后一個(gè)劃分來說, 確定了應(yīng)該用哪一個(gè)哈夫曼表, 一節(jié)中含有若干的尺度因子帶并且每節(jié)只用一個(gè)哈夫曼表。4.1 分段 無噪聲編碼將輸入的 1024 個(gè)量化頻譜系數(shù)分為幾個(gè)段( section ),段內(nèi) 的各點(diǎn)均使用同一個(gè)哈夫曼表,考慮到編碼效率,每一段的邊界最好同尺 度因子帶的邊界重合。所以每一段必段傳送信息應(yīng)該有:段長(zhǎng)度,所在的 尺度因子帶,使用的哈夫曼表。4.2 分組和交替分組是指忽略頻譜系數(shù)所在窗,將連續(xù)的,具有相同尺度因子帶的頻譜系 數(shù)分為一組放在一起,共享一個(gè)尺度因子從而得到更好的編碼效率。這樣 做必然會(huì)引起交替,即本來是以c 組 窗 尺度因子帶 系數(shù)索引 為順序的系數(shù)排列,

9、變?yōu)閷⒊叨纫蜃訋南禂?shù)放在一起:c 組 尺度因子帶 窗 系數(shù)索引 這樣就引起了相同窗的系數(shù)的交替。4.3 大量化值的處理大量化值在AAC中有兩種處理方法:在哈夫曼編碼表中使用escape標(biāo)志或使用脈沖escape方法。前者跟mp3編碼方法相似,在許多大量化值出 現(xiàn)時(shí)采用專門的哈夫曼表,這個(gè)表暗示了它的使用將會(huì)在哈夫曼編碼后面 跟跟一對(duì) escape 值及對(duì)值的符號(hào)。在用脈沖 escape 方法時(shí),大數(shù)值被減 去一個(gè)差值變?yōu)樾?shù)值,然后使用哈夫曼表編碼,后面會(huì)跟一個(gè)脈沖結(jié)構(gòu) 來幫助差值的還原。無噪解碼的流程圖如下:無噪聲解碼流程圖5. 尺度因子解碼及逆量化在 aac 編碼中,逆量化頻譜系數(shù)是由

10、一個(gè)非均勻量化器來實(shí)現(xiàn)的,在解碼 中需進(jìn)行其逆運(yùn)算。即保持符號(hào)并進(jìn)行 4/3 次冪運(yùn)算。在頻域調(diào)整量化噪聲的基本方法就是用尺度因子來進(jìn)行噪聲整形。尺度因 子就是一個(gè)用來改變?cè)谝粋€(gè)尺度因子帶的所有的頻譜系數(shù)的振幅增益值。 使用尺度因子這種機(jī)制是為了使用非均勻量化器在頻域中改變量化噪聲 的比特分配。5.1 尺度因子帶( scalefactor-band )頻率線根據(jù)人耳的聽覺特性被分成多個(gè)組,每個(gè)組對(duì)應(yīng)若干個(gè)尺度因子, 這些組就叫做尺度因子帶。為了減少信息含有短窗的邊信息,連續(xù)的短窗 可能會(huì)被分為一組,即將若干個(gè)短窗當(dāng)成一個(gè)窗口一起傳送,然后尺度因 子將會(huì)作用到所有分組后的窗口去。5.2 反量化公

11、式:x_in vqua nt二sig n( x_qua nt)*|x_qua nt$(4/3)其中x_invquant 表示反量化的結(jié)果sign(x) 表示取 x 的符號(hào)A表示冪運(yùn)算5.3 應(yīng)用尺度因子公式:x_rescal=x_invquant*gaingain二2A(0.25*(sf- SF_OFFSET)其中x_rescal 為應(yīng)用了尺度因子公式之后的值gain 為一個(gè)增益sf 為尺度因子值SF_OFFSE為一個(gè)常數(shù),設(shè)為 1006、聯(lián)合立體聲解碼聯(lián)合立體聲有兩種, M/Sstereo( 中間旁道立體聲 ) 和 intensitystereo( 強(qiáng) 度立體聲 )6.1 M/Sstereo

12、在M_S立體聲模式中,傳送的是規(guī)格化的中間 /旁邊聲道的信息,計(jì)算公式如下: 其中,l,r 表示轉(zhuǎn)換后的左右聲道值m表示中間聲道值s 表示旁邊聲道值 ?6.2Intensitystereo在強(qiáng)度立體聲模式中,左聲道傳的是幅值,右聲道的 scalefactor 傳的是 立體聲的位置is_pos。如果僅在一個(gè)指定了 common_window為1的CPE中 的右通道中指定哈夫曼表為 INTENSITY_HC或INTENSITY_HCB2則解碼時(shí) 使用強(qiáng)度立體聲模式。其計(jì)算公式如下:is_pos+=dpcm_is_posscale二 in vert_i nten sity*0.5A(0.25*isp

13、os)r_spec=scale*l_spec從完全備份中還原從完全備份中還原數(shù)據(jù)庫(kù)非常簡(jiǎn)單,在 9.3.2 節(jié)中會(huì)詳細(xì)地is_pos 是右聲道傳送的 scalefactordpcm_is_pos 是上一個(gè) is_pos, 初值為 0 scale 為強(qiáng)度因子invert_intensity 為是否反轉(zhuǎn)哈夫曼表(表 14 和表 15)這個(gè)變量由ms_used指定,關(guān)系為:invert_intensity=1- 2*ms_used,另外,當(dāng)ms_mask_present 為 0 時(shí), invert_intensity 恒為 1 。6.3 處理流程聯(lián)合立體聲解碼流程圖7、PNSPNS(Perceptu

14、alNoiseSubstitution) 知覺噪聲替換模塊是一種以參數(shù)編 碼的方式模擬噪聲的模塊。在判別出音頻值中的噪聲后,將些噪聲不進(jìn)行 量化編碼,而是采用一些參數(shù)告訴解碼器端這是某種噪聲,然后解碼器端 將會(huì)對(duì)這些噪聲用一些隨機(jī)的編碼來制造出這一類型的噪聲。在具體操作上,PNS模塊對(duì)每個(gè)尺度因子帶偵測(cè)頻率4kHz以下的信號(hào)成分。如果這個(gè)信號(hào)既不是音調(diào),在時(shí)間上也無強(qiáng)烈的能量變動(dòng),就被認(rèn)為是噪 聲信號(hào)。其信號(hào)的音調(diào)及能量變化都在心理聲學(xué)模型中算出。在解碼中,如果發(fā)現(xiàn)使用了哈夫曼表13(NOISE_HCB,) 則表明使用了 PNS。由于M/S立體聲解碼與PNS軍碼互斥,故可以用參數(shù) ms_use

15、d來表明是否兩個(gè)聲道都用同樣的 PNS如果ms_used參數(shù)為1,則兩個(gè)聲道會(huì)用同樣的隨機(jī)向量來生成噪聲信號(hào)PNS的能量信號(hào)用noise_nrg來表示,如果使用了 PNS則能量信號(hào)將會(huì) 代替各自的尺度因子來傳送。噪聲能量編碼同尺度因子一樣,采用差分編碼的方式。第一個(gè)值同樣為全局增益值。它同強(qiáng)度立體聲位置值及尺度因子交替地放在一起,但對(duì)差分解碼來說又彼此忽略。即下一個(gè)噪聲能量值以上一個(gè)噪聲能量值而不是強(qiáng) 度立體聲位置或尺度因子為標(biāo)準(zhǔn)差分解碼。隨機(jī)能量將會(huì)在一個(gè)尺度因子帶內(nèi)產(chǎn)生 noise_nrg 所計(jì)算出的平均能量分 布。7.1 處理流程PNS解碼流程圖8、TNSTNS瞬態(tài)噪聲整形用于控制一個(gè)轉(zhuǎn)

16、換窗口內(nèi)的瞬時(shí)噪聲形態(tài)。它是用一個(gè)對(duì)單個(gè)通道的濾波過程來實(shí)現(xiàn)的。傳統(tǒng)的變換編碼方案常常遇到信號(hào)在時(shí)域變化非常劇烈的問題,特別是語音信號(hào),這個(gè)問題是因?yàn)榱炕蟮脑肼暦植茧m然在頻率域上得到控制,但在時(shí)域上卻以一個(gè)常數(shù)分布在一個(gè)轉(zhuǎn)換塊內(nèi)。如果這種塊中信號(hào)變化得很劇烈卻又不轉(zhuǎn)向一個(gè)短塊去,那這個(gè)常數(shù)分布的噪聲將會(huì)被聽到。TNS的原理利用了時(shí)域和頻域的二元性和LPC(線性預(yù)測(cè)編碼)的時(shí)頻對(duì)稱性,即在其中的任意一個(gè)域上做編碼與在另一域上做預(yù)測(cè)編碼等效,也就 是說,在一個(gè)域內(nèi)做預(yù)測(cè)編碼可以在另一域內(nèi)增加其解析度。量化噪聲產(chǎn) 生是在頻域產(chǎn)生的,降低了時(shí)域的解析度,故在這里是在頻域上做預(yù)測(cè)編 碼。在AACplu

17、s中,由于基于AACprofileLC,故TNS的濾波器階數(shù)被限制在12 階以內(nèi)。8.1 處理流程TNS解碼流程圖9.IMDCT將音頻數(shù)據(jù)從頻域轉(zhuǎn)換到時(shí)域的過程主要是由將頻域數(shù)據(jù)填入一組 IMDCT 濾波器來實(shí)現(xiàn)的。在進(jìn)行IMDCT變換后,輸出數(shù)值經(jīng)過加窗,疊加,最后 得到時(shí)域數(shù)值。9.1IMDCT 公式for0=nN其中n 為采樣點(diǎn)索引值i 為窗索引值k 為頻譜系數(shù)索引值N為窗函數(shù)的長(zhǎng)度,全為短窗N=256,其余情況為2048n0=(N/2+1)/29.2 塊型由于長(zhǎng)塊的頻域分辨率較高而短塊的時(shí)域分辨率較高,故長(zhǎng)塊較適合相對(duì)平穩(wěn)的時(shí)域信號(hào),而短塊較適合變化相對(duì)較快的時(shí)域信號(hào)。長(zhǎng)塊長(zhǎng)度為 20

18、48 個(gè)點(diǎn),短塊長(zhǎng)度為 256 個(gè)點(diǎn)。9.3 加窗AAC用到兩種窗函數(shù),分別為 Kaiser-Bessel類(KBD)窗和正弦窗。KBD窗如下所示:其定義為:?for0=n=N/2其中 使用 KBD窗時(shí),window_shape 為 1正弦窗如下所示:其定義為使用正弦窗時(shí), window_shape 為 0另定義:對(duì)應(yīng)于四種不同的窗序列分別進(jìn)行不同的加窗變換:1. ) 僅有長(zhǎng)塊:window_shape 為 1:window_shape 為 0:加窗后,時(shí)域信號(hào)可用 w(n) 表示為:2. ) 長(zhǎng)開始?jí)K:window_shape 為 1:window_shape 為 0:加窗后,時(shí)域信號(hào)可用 w(n) 表示為:3. ) 只有短塊:window_shape 為 1:window_shape 為 0:加窗后,時(shí)域信號(hào)可用 w(n) 表示為:2.) 長(zhǎng)結(jié)束塊:window_shape 為 1:window_shape 為 0:加窗后,時(shí)域信號(hào)可用 w

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論