AAC解碼算法原理詳解_第1頁
AAC解碼算法原理詳解_第2頁
AAC解碼算法原理詳解_第3頁
AAC解碼算法原理詳解_第4頁
AAC解碼算法原理詳解_第5頁
已閱讀5頁,還剩10頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

9、變為將尺度因子帶同的系數放在一起:c 組 尺度因子帶 窗 系數索引 這樣就引起了相同窗的系數的交替。4.3 大量化值的處理大量化值在AAC中有兩種處理方法:在哈夫曼編碼表中使用escape標志或使用脈沖escape方法。前者跟mp3編碼方法相似,在許多大量化值出 現時采用專門的哈夫曼表,這個表暗示了它的使用將會在哈夫曼編碼后面 跟跟一對 escape 值及對值的符號。在用脈沖 escape 方法時,大數值被減 去一個差值變為小數值,然后使用哈夫曼表編碼,后面會跟一個脈沖結構 來幫助差值的還原。無噪解碼的流程圖如下:無噪聲解碼流程圖5. 尺度因子解碼及逆量化在 aac 編碼中,逆量化頻譜系數是由

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

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

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

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

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

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

16、換窗口內的瞬時噪聲形態。它是用一個對單個通道的濾波過程來實現的。傳統的變換編碼方案常常遇到信號在時域變化非常劇烈的問題,特別是語音信號,這個問題是因為量化后的噪聲分布雖然在頻率域上得到控制,但在時域上卻以一個常數分布在一個轉換塊內。如果這種塊中信號變化得很劇烈卻又不轉向一個短塊去,那這個常數分布的噪聲將會被聽到。TNS的原理利用了時域和頻域的二元性和LPC(線性預測編碼)的時頻對稱性,即在其中的任意一個域上做編碼與在另一域上做預測編碼等效,也就 是說,在一個域內做預測編碼可以在另一域內增加其解析度。量化噪聲產 生是在頻域產生的,降低了時域的解析度,故在這里是在頻域上做預測編 碼。在AACplu

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

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

溫馨提示

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

評論

0/150

提交評論