專利名稱:一種基于片上系統(tǒng)的音頻解碼器及其解碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于SoC (System on a Chip,片上系統(tǒng))的音頻解 碼器及其解碼方法,尤其涉及一種實現(xiàn)*. aac格式音頻文件實時播放的音 頻解碼器及其解碼方法。
背景技術(shù):
AAC (Advanced Audio Coding)編碼標(biāo)準(zhǔn)最早是出現(xiàn)在MPEG-2標(biāo)準(zhǔn) 中,后來在MPEG-4中進(jìn)行了進(jìn)一步的修改和完善,成為最新數(shù)字音頻壓縮 編碼標(biāo)準(zhǔn)。AAC編碼標(biāo)準(zhǔn)是為了實現(xiàn)更高質(zhì)量的數(shù)據(jù)壓縮,在原有的MP4 音頻壓縮標(biāo)準(zhǔn)基礎(chǔ)上,增加了更多的數(shù)據(jù)壓縮處理工具。公示標(biāo)準(zhǔn)AAC編 碼器的框架如圖l所示,公示標(biāo)準(zhǔn)AAC解碼器的框架如圖2所示,該標(biāo)準(zhǔn) 的數(shù)據(jù)處理流程包括以下幾個方面增益控制、濾波器組(filter bank)、 時域噪聲整形(TNS temporal noise shaping)、預(yù)測、強度立體聲耦合、 感知噪聲整形(PNS perc印tual noise substitution), M/S立體聲處理、 頻譜數(shù)據(jù)比例因子量化(iquant and scalefactor decoding)、無損編碼 和氺.aac格式碼流輸出。其中濾波器組、頻譜數(shù)據(jù)比例因子量化、無損編 碼和求.aac格式碼流輸出是其流程的必須組成部分,其余處理工具皆是可 選擇項。為了適應(yīng)不同實際情況下的編碼壓縮要求,AAC的編碼標(biāo)準(zhǔn)包還分為 三個層次,分別為Main profile, LC (Low Complexity) profile, SSR (Scaleable Sampling) profile。其中Main profile包括了如圖1所示 全部的處理步驟,是最完備的編碼格式,可以得到最高的數(shù)據(jù)壓縮比。LC profile不包括增益控制和預(yù)測,而且時域噪聲整形功能也受到一定的限 制。SSR profile則不包括預(yù)測和強度立體聲耦合,且時域噪聲整形和帶 寬受到限制。通常情況下,LC profile所能提供的音質(zhì)效果幾乎接近Main profile,但是它在算法和存儲使用量上明顯少于Main profile。所以大 多數(shù)AAC解碼器都是使用LC profile算法的。自從AAC音頻壓縮標(biāo)準(zhǔn)一誕生,他就以因自身的獨特魅力而迅速地在 數(shù)字多媒體領(lǐng)域得到各個方面的應(yīng)用。例如著名的流行播放軟件Winmap, iTuens都開始支持*. aac音頻文件格式。松下,蘋果等公司也相繼 推出了支持AAC標(biāo)準(zhǔn)的相關(guān)數(shù)碼產(chǎn)品。由此可見,未來的電子消費類市場, 兼容AAC標(biāo)準(zhǔn)功能的產(chǎn)品將成為一個熱點,這就需要高效的,低成本,低 功耗的AAC標(biāo)準(zhǔn)嵌入式解決方案來滿足這一需求。為了順應(yīng)這一趨勢,很多研究機構(gòu)和技術(shù)研發(fā)公司在這方面都做了很 多工作。一般來說,實現(xiàn)AAC解碼器的途徑有三種:在數(shù)字信號處理器(DSP) 上利用軟件實現(xiàn),采用全硬件體系實現(xiàn)(即ASIC)以及軟/硬件協(xié)作的SoC 體系。但是根據(jù)對IEEE上檢索查新得到的資料以及對國內(nèi)各大學(xué)術(shù)期刊的 檢索顯示,可以看出現(xiàn)在關(guān)于AAC標(biāo)準(zhǔn)解碼器的有關(guān)技術(shù)上,很多還是停 留在數(shù)字信號處理器(DSP)的層面,通過嵌入式軟件的方式實現(xiàn),利用簡 化或改進(jìn)軟件算法來提高AAC解碼器的解碼效率。這其中便存在兩個缺點 一是由數(shù)字信號處理器(DSP)來實現(xiàn)AAC解碼,為了實現(xiàn)很高的數(shù)據(jù)壓縮 比,涉及算法十分復(fù)雜,會加大對系統(tǒng)資源的占用,這是無論怎樣改進(jìn)軟 件和算法都無法回避的問題。二是通過數(shù)字信號處理器(DSP)實現(xiàn)AAC 解碼,這種方法無法優(yōu)化硬件工作效率和能量消耗。這將不利于AAC解碼 器應(yīng)用于移動電子產(chǎn)品的開發(fā)。當(dāng)然也有科研機構(gòu)實現(xiàn)了全硬件(ASIC)的AAC解碼器,2004年臺灣 國立中央大學(xué)電氣工程學(xué)院在IEEE上發(fā)表的"A Pure-ASIC Design A卯roach for MPEG-2 MC Audio Decoder" —文中就是這方面的代表。文 中通過合理劃分模塊功能,并采用雙聲道流水線處理方式實現(xiàn)全硬件 MPEG2-AAC解碼器,其主要特點就是通過合理的硬件控制解決了 DSP無法 優(yōu)化硬件效率和功耗的問題,并且提高解碼速度。眾所周知,AAC標(biāo)準(zhǔn)所 規(guī)定的*. aac格式的音頻文件具有多種文件頭格式,針對其不同的頭文件, 解碼方法也不盡相同,如果要使AAC解碼器具有很好的兼容性,那么完成 全硬件的MC解碼器就要求對AAC文件頭進(jìn)行在解碼的同時一定要覆蓋所 有可能出現(xiàn)的文件頭形式,這無疑會增加硬件的面積開銷,同時大大增加 產(chǎn)品的成本。除此之外還有其他一些并不是常用的解碼插件工具亦是存在 這樣的問題。在SoC已經(jīng)十分發(fā)達(dá)的今天,這一方面是可以通過其他更為 簡單和有效的方法來解決的。發(fā)明內(nèi)容本發(fā)明針對現(xiàn)有AAC音頻文件解碼器存在的因算法復(fù)雜而占用系統(tǒng)資源、硬件工作效率無法優(yōu)化、能量消耗多以及AAC解碼器兼容性等問題提 出一種通過軟、硬件相結(jié)合協(xié)作的基于SoC的AAC音頻解碼器及其解碼方 法。本發(fā)明所述基于片上系統(tǒng)的AAC音頻解碼器,其特征在于,包括系統(tǒng) 控制部分301和解碼實現(xiàn)部分302,所述系統(tǒng)控制部分301和解碼實現(xiàn)部 分302 二者之間采用總線303進(jìn)行通信,所述系統(tǒng)控制部分301主要負(fù)責(zé) 調(diào)整整個解碼器的解碼流程;所述硬件部分302主要負(fù)責(zé)AAC解碼器的軟 件解碼和硬件解碼兩部分的工作;總線303主要負(fù)責(zé)系統(tǒng)控制部分301和 解碼實現(xiàn)部分302之間的數(shù)據(jù)傳輸。所述系統(tǒng)控制部分301包括中央處理單元和中斷控制單元307,中央 處理單元用于控制協(xié)調(diào)整個系統(tǒng)的工作,中斷控制單元307用于控制中斷 信號。所述解碼實現(xiàn)部分302包括數(shù)字信號處理器和硬件解碼模塊305,所 述硬件解碼模塊305包括存儲輸入數(shù)據(jù)SRAM402、兩組波形數(shù)據(jù)輸出 SRAM403和AAC解碼器硬件內(nèi)核404,所述存儲輸入數(shù)據(jù)SRAM402和所述兩 組波形數(shù)據(jù)輸出SRAM403位于AAC與總線接口 401與AAC解碼器硬件內(nèi)核 404之間。所述AAC解碼器硬件內(nèi)核404包括:硬件控制模塊501 ,保管AAC解碼 需要的一些基本解碼參數(shù);比例因子解碼與反量化模塊502,對數(shù)據(jù)進(jìn)行比例因子反量化處理;知覺噪聲整形模塊503,用于恢復(fù)自然噪聲;濾波 器組模塊507,將頻譜數(shù)據(jù)變?yōu)闀r域數(shù)據(jù);濾波器組參數(shù)存儲R0M512;數(shù) 據(jù)RAM地址譯碼模塊508,保存所述存儲輸入數(shù)據(jù)SRAM402中數(shù)據(jù)地址譯 碼;FFT臨時存儲RAM510、左右道數(shù)據(jù)存儲SRAM509和左右道窗數(shù)據(jù)疊加 S隨511。所述比例因子解碼與反量化模塊502是將反量化和比例因子解碼模塊 集成為單一模塊。所述知覺噪聲整形模塊503,針對雙聲道音頻文件可采用并行處理。 所述AAC解碼器硬件內(nèi)核404還包括M/S立體聲恢復(fù)模塊504或動 態(tài)擺幅控制模塊506或時域噪聲整形模塊505中的至少一個模塊,其中所 述M/S立體聲恢復(fù)模塊504,用于實現(xiàn)Mid/Side立體聲恢復(fù);所述動態(tài)擺 幅控制模塊506,用于協(xié)調(diào)和控制硬件輸出;所述時域噪聲整形模塊505, 用于抑制前回聲的聲音處理方法。所述時域噪聲整形模塊505中,對于采樣數(shù)據(jù)流先判斷當(dāng)前窗需解碼 范圍再進(jìn)行時域噪聲整形解碼。本發(fā)明所述一種基于片上系統(tǒng)的MC音頻解碼器的解碼方法,包括 步驟1:數(shù)據(jù)信號處理部分對數(shù)據(jù)流進(jìn)行預(yù)處理;步驟2:硬件解碼模塊 305對經(jīng)步驟1處理后的數(shù)據(jù)流進(jìn)行解碼;步驟3:硬件解碼模塊305中斷, 輸出解碼后音頻文件。所述步驟1所述預(yù)處理包括中央處理單元對解碼器系統(tǒng)控制部分301 初始化參數(shù)配置及系統(tǒng)控制部分301對數(shù)據(jù)流進(jìn)行分析。所述步驟2所述解碼步驟包括比例因子解碼與反量化和濾波器組處 理,以及知覺噪聲整形或M/S立體聲恢復(fù)或時域噪聲整形或動態(tài)擺幅控制 中任一處理步驟。所述解碼過程中的數(shù)據(jù)流傳輸可采用CPU傳輸或采用DAM傳輸任一實 現(xiàn)方式。在所述初始化參數(shù)配置后,解碼系統(tǒng)尋找指定需要解碼的AAC音頻文 件,并將之放入指定的存儲器中。所述數(shù)據(jù)信號處理部分對數(shù)據(jù)流進(jìn)行分析包括對音頻頭文件的分析、 音頻格式分析以及分析段數(shù)據(jù)流。本發(fā)明所述一種基于片上系統(tǒng)的AAC音頻解碼器及其解碼方法,采用 軟、硬件結(jié)合協(xié)作的方式,克服了現(xiàn)有AAC音頻解碼器存在的因算法復(fù)雜 而占用系統(tǒng)資源、硬件工作效率無法優(yōu)化、能量消耗多以及MC解碼器兼 容性等問題,實現(xiàn)了*3^格式的多種文件頭格式兼容解碼,且使用硬件模 塊解碼,速度快,相比軟件解碼對數(shù)字信號處理器要求低,同時降低成本。 將比例因子解碼和反量化處理集成到一個模塊中,減少了硬件存儲和讀取 數(shù)據(jù)的時間;時域噪聲整形模塊,通過采用先判斷解碼范圍再解碼的處理 方式,減少了運算步驟,優(yōu)化算法并節(jié)省了運算時間;知覺噪聲整形模塊, 通過采用對雙聲道音頻文件進(jìn)行并行處理,優(yōu)化了算法節(jié)省了運算時間。 本發(fā)明通過以上方式提供了一種低功耗、低成本和兼容性良好的AAC解碼 器及解碼方法,在音視頻便攜式電子產(chǎn)品十分發(fā)達(dá)的今天,低功耗、低成 本和高兼容性的音頻播放系統(tǒng)已經(jīng)成為其必不可少的一部分。
圖1是標(biāo)準(zhǔn)MC解碼器的框架圖;圖2是標(biāo)準(zhǔn)MC編碼器的框架圖;圖3是本發(fā)明整個系統(tǒng)示意圖;圖4是本發(fā)明硬件部分的架構(gòu)圖;圖5是本發(fā)明AAC解碼器硬件內(nèi)核具體示意圖;圖6a是本發(fā)明采用CPU傳輸方式工作主程序執(zhí)行流程圖;圖6b是本發(fā)明采用CPU傳輸方式中斷處理流程圖;圖7a是本發(fā)明采用DMA傳輸方式工作主程序執(zhí)行流程圖;圖7b是本發(fā)明采用DMA傳輸方式中斷處理流程圖;圖8是知覺噪聲整形模塊處理流程屈;圖9是時域噪聲整形模塊處理流程圖;圖10是動態(tài)擺幅控制模塊處理流程圖。
具體實施方式
現(xiàn)結(jié)合
對本發(fā)明進(jìn)行詳細(xì)描述本發(fā)明所述MC解碼器采用軟、硬件相結(jié)合的解碼方式,如圖3所示, 本發(fā)明所述MC解碼器主要分為系統(tǒng)控制部分301和解碼實現(xiàn)部分302, 所述系統(tǒng)控制部分301和解碼實現(xiàn)部分302通過總線303連接。所述系統(tǒng)控制部分301主要負(fù)責(zé)控制本發(fā)明所述的AAC解碼器的整個 系統(tǒng),并發(fā)出控制指令執(zhí)行解碼過程,該部分包括CPU304和中斷控制器 307。 CPU304用于控制協(xié)調(diào)整個系統(tǒng)的工作;中斷控制器307用于控制中 斷信號,當(dāng)數(shù)據(jù)輸入/輸出結(jié)束時或硬件產(chǎn)生中斷時,向CPU304發(fā)出信號, 使CPU304做出相應(yīng)的處理工作。所述解碼實現(xiàn)部分302主要負(fù)責(zé)軟件解碼,即音頻文件的數(shù)據(jù)流分析 和硬件解碼,即對分析后的數(shù)據(jù)流作音頻數(shù)據(jù)還原,先執(zhí)行軟件程序,再 通過硬件功能模塊對軟件解碼后的音頻數(shù)據(jù)流進(jìn)行解碼,完成AAC解碼器 的其余計算量很大的工作,該部分包括DSP306和硬件解碼模塊305。如圖4所示,硬件解碼模塊305包括AAC與總線接口 401,存儲輸入 數(shù)據(jù)SRAM402、波形數(shù)據(jù)輸出SRAM403兩組和AAC解碼器硬件內(nèi)核404。存 儲輸入數(shù)據(jù)SRAM402用于存儲需解碼音頻文件的基本控制數(shù)據(jù)及采樣數(shù) 據(jù);兩組波形數(shù)據(jù)輸出SRAM403用于將解碼完畢的波形數(shù)據(jù)流輸出到總線 303。所述AAC解碼器硬件內(nèi)核404如圖5所示,包括:硬件初始化模塊501 、比例因子解碼與反量化模塊502、知覺噪聲整形模塊503、 M/S立體聲恢復(fù) 模塊504、時域噪聲整形模塊505、動態(tài)擺幅控制模塊506、濾波器組模塊 507、濾波器組參數(shù)存儲R0M512、數(shù)據(jù)RAM地址譯碼模塊508、 FFT臨時存 儲RAM(510)、左右道數(shù)據(jù)存儲SRAM509和左右道窗數(shù)據(jù)疊加SRAM5U。其中,硬件控制模塊501,因為AAC解碼需要一些基本的解碼參數(shù), 這些參數(shù)是完成各個解碼工序都必不可少的,所以專門使用一個模塊對其 進(jìn)行保管。另外該模塊兼有協(xié)調(diào)其余各個模塊之間工作的功能;數(shù)據(jù)SRAM 地址譯碼器模塊508,因為存儲輸入數(shù)據(jù)的SRAM402中包含了與各個解碼 工序相關(guān)的各種數(shù)據(jù),該地址譯碼器模塊將通過地址譯碼使對應(yīng)的模塊可 依得到與之相關(guān)的正確數(shù)據(jù);比例因子解碼與反量化模塊502,用于恢復(fù) 為量化前的數(shù)據(jù),同時恢復(fù)經(jīng)過比例因子編碼的頻譜數(shù)據(jù)。先通過査表完 成反量化的操作,然后根據(jù)標(biāo)準(zhǔn)數(shù)據(jù)進(jìn)行運算得出比例因子編碼前的數(shù)據(jù); 知覺噪聲整形模塊503用于對自然噪聲的恢復(fù),使輸出的聲音更加自然逼 真;M/S立體聲恢復(fù)模塊504,用于恢復(fù)經(jīng)過M/S立體聲處理的音頻數(shù)據(jù); 時域噪聲整形模塊505時域噪聲整形是一種抑制前回聲的聲音處理方法; 動態(tài)擺幅控制506這個是可選擇的功能,只有在必要的情況下才會使用; 濾波器組模塊507,該模塊解碼器解碼工作的最后一步。同時也是最為重 要,計算量最大的一步。它的輸入數(shù)據(jù)為頻譜數(shù)據(jù),經(jīng)過傅立葉變換后輸 出時域聲音數(shù)據(jù)。如圖5、 6a所示,本發(fā)明所述AAC音頻解碼器的具體解碼流程如下 步驟601:配置揚聲器等播放工具的工作參數(shù);播放音頻文件啟動MC解碼器,CPU304通過總線303開始配置AAC解 碼器DSP306的初始化參數(shù);參數(shù)配置完畢后,解碼系統(tǒng)尋找指定的需要解碼的AAC音頻文件,如未 找到,則返回錯誤信息,系統(tǒng)調(diào)處執(zhí)行流程;找到音頻文件后,將文件放 入指定的存儲器中。步驟602:啟動AAC軟件部分完成對數(shù)據(jù)流的分析;CPU301向DSP306發(fā)出指令,啟動軟件解碼部分,使之進(jìn)入工作狀態(tài), 軟件首先進(jìn)行音頻頭文件的分析,判斷該音頻文件是否屬于該解碼器可解 碼范圍內(nèi)的音頻文件,如判斷該文件不可解,則跳出解碼步驟,報錯并返 回系統(tǒng)初始狀態(tài),如判斷可解,則進(jìn)入下一個環(huán)節(jié),分析該音頻文件是采 用單聲道格式還是立體聲格式。在確定音頻格式以后,根據(jù)其具體格式進(jìn)入與之相對應(yīng)的處理流程中。其中立體聲格式的音頻文件其處理流程如下該格式音頻文件因為采 用的是雙聲道編碼,先從音頻數(shù)據(jù)流中獲得兩個聲道配置參數(shù),該參數(shù)的 一部分應(yīng)用于下面的軟件解碼過程, 一部分將被送入硬件,作為將來硬件 解碼部分的控制參數(shù)存放在存儲輸入數(shù)據(jù)SRAM402中;然后分析段數(shù)據(jù)流,查表獲得解碼需要的兩個聲道比例因子數(shù)據(jù)及兩^^聲道經(jīng)過編碼器處理后 的采樣數(shù)據(jù)。單聲道格式的音頻文件處理流程與立體聲格式的音頻文件處理流程相 似,只是從音頻數(shù)據(jù)流中獲得的是單個聲道配置參數(shù),分析查表獲得解碼 需要的是一個聲道比例因子數(shù)據(jù)和一個聲道經(jīng)過編碼器處理后的采樣數(shù)據(jù)。DSP306工作完成以后,向CPU304發(fā)出完成信號,將解碼的控制權(quán)交 回CPU304。步驟603:將數(shù)字信號處理部分306分解后的數(shù)據(jù)送到硬件解碼部分 305,啟動硬件解碼;CPU304得到數(shù)字信號處理部分306返回的信號以后,便向硬件解碼部 分305發(fā)出啟動信號,系統(tǒng)進(jìn)入硬件解碼階段。硬件解碼模塊305接收到由CPU304發(fā)出的啟動指令以后,進(jìn)入工作狀 態(tài),硬件解碼模塊305中的硬件控制模塊(501)先訪問數(shù)據(jù)SRAM地址譯碼 器模塊508,通過地址譯碼從存儲輸入數(shù)據(jù)SRAM402中獲得由軟件解碼而 得的基本控制數(shù)據(jù)流,硬件控制模塊501通過控制數(shù)據(jù)流進(jìn)行初始化配置, 配置結(jié)束后,進(jìn)入解碼狀態(tài)。首先比例因子解碼與反量化模塊502讀取采樣數(shù)據(jù)流,所述比例因子 解碼與反量化模塊502在己有標(biāo)準(zhǔn)公開的算法基礎(chǔ)上,將反量化模塊和比 例因子解碼模塊集成為單一模塊,實現(xiàn)了同時完成對采樣數(shù)據(jù)的比例因子 量化和整體反量化處理,它是AAC音頻解碼的基礎(chǔ)步驟。在該模塊處理過 程中,對于立體聲音頻文件,先判斷該立體聲音頻文件是否采用統(tǒng)一窗函 數(shù),如果不是,則類似單聲道處理方式;如果是,則兩個聲道同時處理。 該模塊會判斷出 一個用來表示兩個聲道在編碼上的相關(guān)性的控制信號,對 于立體聲音頻文件就會同時完成對兩個聲道的比例因子和反量化處理;對 于單聲道音頻文件,將分別完成各個聲道的比例因子和反量化處理。比例 因子解碼與反量化模塊502完成對數(shù)據(jù)的處理后,把結(jié)果存入左右道數(shù)據(jù)存儲SRAM509,并向硬件控制模塊501發(fā)送"完成"信號,硬件控制模塊 305收到該信號后,跳入下一個解碼狀態(tài)。
硬件控制模塊(501對通過數(shù)據(jù)SRAM地址譯碼器模塊(508中地址譯 碼從存儲輸入數(shù)據(jù)SRAM (402讀取的基本控制數(shù)據(jù)進(jìn)行判斷,檢測該音頻 文件在編碼時是否采用了知覺噪聲整形工具,此模塊是用于對自然噪聲得 恢復(fù),即對被采樣的聲音中有較長的空白,無主要音源情況下的環(huán)境噪聲 進(jìn)行恢復(fù),對于這種情況該解碼算法通過一個隨機算法產(chǎn)生出與自然噪音 十分接近的頻譜數(shù)據(jù),替代之前釆樣聲音的自然噪音。如果該音頻文件采 用了,則啟動知覺噪聲整形模塊503,如圖8所示,訪問左右道數(shù)據(jù)存儲 SRAM509讀取采樣數(shù)據(jù)流中當(dāng)前頻帶數(shù)據(jù),如果當(dāng)前頻帶未使用噪聲編碼, 則訪問下一頻帶數(shù)據(jù)。如果當(dāng)前頻帶采用噪聲編碼則計算使用噪聲編碼的 帶寬,確定此頻帶需做知覺噪聲整形處理的帶寬,該模塊產(chǎn)生一組隨機噪 聲矢量,隨機噪聲矢量帶寬與之前確定的帶寬相等,對于隨機矢量計算其 能量的均方,計算PNS量化因子,用計算所得量化因子對隨機矢量進(jìn)行量 化,并將計算結(jié)果寫入左右聲道數(shù)據(jù)存儲SRAM402,判斷是否處理完當(dāng)前 幀的全部頻帶,如果處理完則對當(dāng)前幀的頻帶做知覺噪聲整形解碼,如果 當(dāng)前幀的所有頻帶都處理完,則處理后的結(jié)果仍然放回左右道數(shù)據(jù)存儲 S畫509,并向硬件控制模塊501發(fā)送"完成"信號,硬件控制模塊501 收到該信號后,跳入下一個解碼狀態(tài)。此步驟中,針對采用統(tǒng)一窗函數(shù)的 立體聲音頻文件實現(xiàn)并行處理,可以對兩個聲道同時進(jìn)行知覺噪聲整形處 理。
硬件控制模塊501對通過數(shù)據(jù)SRAM地址譯碼器模塊508中地址譯碼從 存儲輸入數(shù)據(jù)SRAM402讀取的基本控制數(shù)據(jù)進(jìn)行判斷,檢測該音頻文件在 編碼時是否經(jīng)過M/S立體聲處理,單聲道音頻文件不需要這一解碼過程, 而大部分立體聲編碼格式的音頻文件都會采用這一工具進(jìn)行編碼,如果采 用了,則啟動M/S立體聲恢復(fù)模塊504,從左右道數(shù)據(jù)存儲SRAM509中讀 取上一步處理結(jié)果出,對音頻數(shù)據(jù)作M/S立體聲恢復(fù)處理,且兩個聲道同 時進(jìn)行處理。處理后的結(jié)果仍然放回左右道數(shù)據(jù)存儲SRAM509,并向硬件 控制模塊501發(fā)送"完成"信號,硬件解碼模塊305收到該信號后,跳入 下一個解碼狀態(tài)。
硬件控制模塊501對通過數(shù)據(jù)SRAM地址譯碼器模塊508中地址譯碼從 存儲輸入數(shù)據(jù)SRAM402讀取的基本控制數(shù)據(jù)進(jìn)行判斷,檢測該音頻文件是否需要進(jìn)行時域噪聲整形解碼。時域噪聲整形是一種抑制前回聲的聲音處 理方法,被采樣的聲音數(shù)據(jù)會存在這樣一種情況,前一部分的聲音信號響 度很低,而后一部分突然聲音信號的響度提高,例如,先是一段很安靜的 音樂,后面突然間出現(xiàn)非常強烈高昂的音樂摻雜進(jìn)來。這樣的聲音數(shù)據(jù)進(jìn) 行編碼時,對經(jīng)過編碼后再恢復(fù)出來的系數(shù)做反量化,量化帶來的扭曲將 會出現(xiàn)在整個重構(gòu)區(qū)間里,前一部分平靜的那段音樂就會出現(xiàn)回聲,這就 叫做前回聲,使用時域噪聲整形解碼就可以很好的消除這種前回聲。如圖
9所示,若需要此項處理,則啟動時域噪聲整形模塊505,訪問左右道數(shù)據(jù) 存儲SRAM509,判斷采樣數(shù)據(jù)流中當(dāng)前窗是否采用時域噪聲整形編碼,如 果沒有采用,則跳入當(dāng)前幀的下一窗數(shù)據(jù)進(jìn)行判斷;如果當(dāng)前窗使用時域 噪聲整形編碼,則計算當(dāng)前窗使用時域噪聲整形編碼的頻帶范圍,然后對 計算出的頻帶范圍做時域噪聲整形解碼,接著計算長時預(yù)測參數(shù)(LPC, linear predictive coding),并對長時預(yù)測參數(shù)也做時域噪聲整形濾波, 即毛刺濾波,對數(shù)據(jù)進(jìn)行波幅限制。最后將計算結(jié)果存儲到左右道數(shù)據(jù)存 儲SRAM509,判斷當(dāng)前窗內(nèi)是否全部頻帶都處理完畢,如果當(dāng)前窗還有其 它頻帶需要進(jìn)行時域噪聲整形解碼,則跳回計算當(dāng)前窗使用時域噪聲整形 編碼的頻帶范圍;如果當(dāng)前窗時域噪聲整形解碼完畢,則繼續(xù)判斷當(dāng)前窗 所在幀是否已經(jīng)解碼完畢,如未完畢,則對當(dāng)前幀的下一窗數(shù)據(jù)做解碼; 如果解碼完畢將處理后的結(jié)果仍然保存在左右到數(shù)據(jù)存儲SRAM509,并向 硬件控制模塊501發(fā)送"完成"信號,跳入下一個解碼狀態(tài)。
硬件控制模塊501發(fā)送新的數(shù)據(jù)SRAM訪問請求,通過數(shù)據(jù)SRAM地址譯 碼器模塊508地址譯碼后從存儲輸入數(shù)據(jù)SRAM402讀取的關(guān)于動態(tài)擺幅功 能的基本控制數(shù)據(jù)進(jìn)行判斷,檢測該音頻文件是否需要啟動動態(tài)擺幅控制 模塊506,此模塊是對硬件輸出起協(xié)調(diào)和控制作用。如需啟動,如圖10所 示,則訪問左右道數(shù)據(jù)存儲SRAM509讀取頻帶數(shù)據(jù),計算當(dāng)前動態(tài)擺幅控 制處理的頻帶范圍,并訪問左右道數(shù)據(jù)存儲SRAM509讀取動態(tài)擺幅控制數(shù) 據(jù),根據(jù)此數(shù)據(jù)計算動態(tài)擺幅增益因子,以此對頻帶內(nèi)頻譜數(shù)據(jù)做動態(tài)擺 幅控制處理并寫回結(jié)果。如果當(dāng)前頻帶解碼完畢,則判斷是否己處理完當(dāng) 前幀的全部頻帶,如果沒有,則進(jìn)入下一頻帶的解碼;如果解碼完畢將處 理后的結(jié)果仍然存入左右道數(shù)據(jù)存儲SRAM509,并向硬件控制模塊501發(fā) 送"完成"信號,硬件控制模塊501收到該信號后,跳入下一個解碼狀態(tài)。 該模塊對于立體聲音頻文件可實現(xiàn)兩個聲道的數(shù)據(jù)同時進(jìn)行解碼,對于單
12聲道音頻文件則對一個聲道的數(shù)據(jù)進(jìn)行處理。
硬件控制模塊501向左右道數(shù)據(jù)存儲SRAM509發(fā)出指令,讀取采樣數(shù) 據(jù)流,此時輸入數(shù)據(jù)為頻譜數(shù)據(jù),硬件控制模塊305向濾波器組模塊507 發(fā)出指令,濾波器組模塊507從濾波器組參數(shù)存儲R0M512將運算參數(shù)取出, 對輸入數(shù)據(jù)做傅立葉變換計算,計算的中間值存在FFT臨時存儲RAM510 中,計算的結(jié)果在左右聲道窗數(shù)據(jù)疊加SRAM511中進(jìn)行去毛刺處理,最后 從濾波器組模塊中輸出16bit的PCM聲音數(shù)據(jù)流。
以上為本發(fā)明AAC解碼器對于立體聲、單聲道音頻文件中的一幀數(shù)據(jù) 的解碼過程。
步驟604:等待解碼器實現(xiàn)部分302中斷;
如圖6b所示步驟605:讀取AAC中斷狀態(tài)寄存器;步驟606:輸入 下一幀的音頻數(shù)據(jù),在啟動硬件進(jìn)行下一幀的解碼,這里當(dāng)硬件解碼305 部分工作時,DSP306將會先取下一幀的數(shù)據(jù)流進(jìn)行數(shù)據(jù)分析;步驟607: 下一幀的音頻數(shù)據(jù)輸入完畢后,先啟動硬件解碼部分,使之進(jìn)入工作狀態(tài); 步驟608:讀取當(dāng)前幀的解碼數(shù)據(jù)結(jié)果;步驟609:返回并等待解碼器實現(xiàn) 部分302的下一個中斷。這是一個循環(huán)處理過程當(dāng)硬件部分的解碼工作完 成后,硬件控制模塊向CPU304發(fā)出一個"處理完成"的中斷信號,CPU304 獲得硬件的中斷信號以后,開始配置音頻播放器,然后讀取由硬件解碼部 分處理后得出的結(jié)果,送到音頻播放器中,播放音頻文件,完成整個音頻 文件的解碼過程。,
另外,本發(fā)明所述AAC音頻解碼器的解碼過程中,除了上述處理過程 中采用CPU傳輸方式進(jìn)行解碼過程控制外,還可以采用DMA(Direct Memory Access,直接存儲器)存取傳輸方式進(jìn)行解碼過程控制,如圖7a所示,其 工作流程為
步驟701:配置揚聲器等播放工具的工作參數(shù);
步驟702:啟動MC解碼器軟件部分,檢查軟件得出數(shù)據(jù)是否放在DMA 可尋址單元內(nèi);如果沒有,則返回,再次執(zhí)行步驟702;如 果已存放,則進(jìn)入歩驟703;
步驟703:初始化DMA;
步驟704:啟動AAC解碼器硬件解碼模塊;
步驟705:等待AAC解碼器硬件解碼模塊部分發(fā)出中斷信號;在此步 驟中,如圖7b所示,當(dāng)AAC解碼器的硬件解碼模塊產(chǎn)生中斷信號后,跳入中斷處理過程,如圖7b所示,步驟706:由CPU讀取AAC中斷狀態(tài)寄存器 706;步驟707: CPU檢査下一幀軟件分析所得數(shù)據(jù)是否已放在DMA的指定 地址,如果沒有,則返回,再次檢査,如果己存放,則將下一幀的待解碼 數(shù)據(jù)流輸入硬件解碼模塊,并啟動硬件解碼模塊305,步驟709:再讀取前 一幀的輸出數(shù)據(jù);步驟710:返回并等待硬件部分302中斷。
采用DMA傳輸方式進(jìn)行解碼過程控制的具體解碼流程與采用CPU傳輸 方式的具體解碼流程中,硬件解碼模塊305內(nèi)部流程完全相同。
本發(fā)明所述一種基于片上系統(tǒng)的AAC音頻解碼器及其解碼方法,采用 軟、硬件結(jié)合協(xié)作的方式,克服了現(xiàn)有AAC音頻解碼器存在的因算法復(fù)雜 而占用系統(tǒng)資源、硬件工作效率無法優(yōu)化、能量消耗多以及MC解碼器兼 容性等問題,實現(xiàn)了4aac格式的多種文件頭格式兼容解碼,且使用硬件模 塊解碼,速度快,相比軟件解碼對數(shù)字信號處理器要求低,同時降低成本。 將比例因子解碼和反量化處理集成到一個模塊中,減少了硬件存儲和讀取 數(shù)據(jù)的時間;時域噪聲整形模塊,通過采用先判斷解碼范圍再解碼的處理 方式,減少了運算步驟,優(yōu)化算法并節(jié)省了運算時間;知覺噪聲整形模塊, 通過采用對雙聲道音頻文件進(jìn)行并行處理,優(yōu)化了算法節(jié)省了運算時間。 本發(fā)明通過以上方式提供了一種低功耗、低成本和兼容性良好的AAC解碼 器及解碼方法,在音視頻便攜式電子產(chǎn)品十分發(fā)達(dá)的今天,低功耗、低成 本和高兼容性的音頻播放系統(tǒng)已經(jīng)成為其必不可少的一部分。
以上內(nèi)容是結(jié)合具體的優(yōu)選實施方式對本發(fā)明所作的進(jìn)一步詳細(xì)說 明,不能認(rèn)定本發(fā)明具體實施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng) 域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干 簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種基于片上系統(tǒng)的AAC音頻解碼器,其特征在于,包括系統(tǒng)控制部分(301)和解碼實現(xiàn)部分(302),所述系統(tǒng)控制部分(301)和解碼實現(xiàn)部分(302)二者之間采用總線(303)進(jìn)行通信,所述系統(tǒng)控制部分(301)主要負(fù)責(zé)調(diào)整整個解碼器的解碼流程;所述硬件部分(302)主要負(fù)責(zé)AAC解碼器的軟件解碼和硬件解碼兩部分的工作;總線(303)主要負(fù)責(zé)系統(tǒng)控制部分(301)和解碼實現(xiàn)部分(302)之間的數(shù)據(jù)傳輸。
2、 如權(quán)力要求1所述一種基于片上系統(tǒng)的AAC音頻解碼器,其特征在 于,所述系統(tǒng)控制部分(301)包括中央處理單元和中斷控制單元(307), 中央處理單元用于控制協(xié)調(diào)整個系統(tǒng)的工作,中斷控制單元(307)用于控 制中斷信號。
3、 如權(quán)力要求1所述一種基于片上系統(tǒng)的MC音頻解碼器,其特征在 于,所述解碼實現(xiàn)部分(302)包括數(shù)字信號處理器和硬件解碼模塊(305), 所述硬件解碼模塊(305)包括存儲輸入數(shù)據(jù)SRAM (402)、兩組波形數(shù) 據(jù)輸出SRAM (403)和AAC解碼器硬件內(nèi)核(404),所述存儲輸入數(shù)據(jù)SRAM(402)和所述兩組波形數(shù)據(jù)輸出SRAM (403)位于AAC與總線接口 (401) 與AAC解碼器硬件內(nèi)核(404)之間。
4、 如權(quán)力要求3所述一種基于片上系統(tǒng)的AAC音頻解碼器,其特征在 于,所述AAC解碼器硬件內(nèi)核(404)包括:硬件控制模塊(501),保管AAC 解碼需要的一些塞本解碼參數(shù);比例因子解碼與反量化模塊(502),對數(shù) 據(jù)進(jìn)行比例因子反量化處理;知覺噪聲整形模塊(503),用于恢復(fù)自然噪 聲;濾波器組模塊(507),將頻譜數(shù)據(jù)變?yōu)闀r域數(shù)據(jù);濾波器組參數(shù)存儲 ROM (512);數(shù)據(jù)RAM地址譯碼模塊(504),保存所述存儲輸入數(shù)據(jù)SRAM(402)中數(shù)據(jù)地址譯碼;FFT臨時存儲RAM(510)、左右道數(shù)據(jù)存儲SRAM (509)和左右道窗數(shù)據(jù)疊加SRAM (511)。
5、 如權(quán)力要求4所述一種基于片上系統(tǒng)的AAC音頻解碼器,其特征在 于,所述比例因子解碼與反量化模塊(502)是將反量化和比例因子解碼模 塊集成為單一模塊。
6、 如權(quán)力要求4所述一種基于片上系統(tǒng)的AAC音頻解碼器,其特征在 于,所述知覺噪聲整形模塊(503),針對雙聲道音頻文件可采用并行處理。
7、 如權(quán)力要求4所述一種基于片上系統(tǒng)的AAC音頻解碼器,其特征在于,所述AAC解碼器硬件內(nèi)核(404)還包括M/S立體聲恢復(fù)模塊(504) 或動態(tài)擺幅控制模塊(506)或時域噪聲整形模塊(505)中的至少一個模 塊,其中所述M/S立體聲恢復(fù)模塊(504),用于實現(xiàn)Mid/Side立體聲恢復(fù); 所述動態(tài)擺幅控制模塊(506),用于協(xié)調(diào)和控制硬件輸出;所述時域噪聲 整形模塊(505),用于抑制前回聲的聲音處理方法。
8、 如權(quán)力要求7所述一種基于片上系統(tǒng)的AAC音頻解碼器,其特征在 于,所述時域噪聲整形模塊(505)中,對于采樣數(shù)據(jù)流先判斷當(dāng)前窗需解 碼范圍再進(jìn)行時域噪聲整形解碼。
9、 一種基于片上系統(tǒng)的AAC音頻解碼器的解碼方法,包括步驟l:數(shù)據(jù)信號處理部分對數(shù)據(jù)流進(jìn)行預(yù)處理;步驟2:硬件解碼模塊(305)對經(jīng)步驟1處理后的數(shù)據(jù)流進(jìn)行解碼;步驟3:硬件解碼模塊(305)中斷,輸出解碼后音頻文件。
10、 如權(quán)利要求9所述一種基于片上系統(tǒng)的AAC音頻解碼器的解碼方 法,其特征在于,所述步驟1所述預(yù)處理包括中央處理單元對解碼器系統(tǒng) 控制部分(301)初始化參數(shù)配置及系統(tǒng)控制部分(301)對數(shù)據(jù)流進(jìn)行分 析。
11、 如權(quán)利要求9所述一種基于片上系統(tǒng)的AAC音頻解碼器的解碼方 法,其特征在于,所述步驟2所述解碼步驟包括比例因子解碼與反量化和 濾波器組處理,以及知覺噪聲整形或M/S立體聲恢復(fù)或時域噪聲整形或動 態(tài)擺幅控制中任一處理步驟。
12、 如權(quán)力要求9所述一種基于片上系統(tǒng)的AAC音頻解碼器的解碼方 法,其特征在于,所述解碼過程中的數(shù)據(jù)流傳輸可采用CPU傳輸或采用DAM 傳輸任一實現(xiàn)方式。
13、 如權(quán)利要求10所述一種基于片上系統(tǒng)的AAC音頻解碼器的解碼方 法,其特征在于,在所述初始化參數(shù)配置后,解碼系統(tǒng)尋找指定需要解碼 的AAC音頻文件,并將之放入指定的存儲器中。
14、 如權(quán)利要求10所述一種基于片上系統(tǒng)的AAC音頻解碼器的解碼方 法,其特征在于,所述數(shù)據(jù)信號處理部分對數(shù)據(jù)流進(jìn)行分析包括對音頻頭 文件的分析、音頻格式分析以及分析段數(shù)據(jù)流。
全文摘要
本發(fā)明公開了一種基于片上系統(tǒng)的AAC音頻解碼器及其解碼方法,其解碼器特征在于,包括系統(tǒng)控制部分(301)和解碼實現(xiàn)部分(302)并通過總線(303)連接并進(jìn)行兩部分的通信。系統(tǒng)控制部分(301)主要負(fù)責(zé)協(xié)調(diào)整個解碼器的解碼流程,解碼實現(xiàn)部分(302)主要負(fù)責(zé)軟件解碼,即音頻文件的數(shù)據(jù)流分析和硬件解碼,即對分析后的數(shù)據(jù)流作音頻數(shù)據(jù)還原,音頻文件解碼完畢后,通過硬件解碼模塊(305)向中斷控制器(307)發(fā)出任務(wù)完成中斷,輸出解碼后的音頻文件。本發(fā)明采用軟、硬件結(jié)合協(xié)作的方式,實現(xiàn)了*aac格式的多種文件頭格式兼容解碼,解碼速度快,對數(shù)字信號處理器要求低,同時應(yīng)用方案成本低。
文檔編號G10L19/02GK101308658SQ20071007443
公開日2008年11月19日 申請日期2007年5月14日 優(yōu)先權(quán)日2007年5月14日
發(fā)明者琳 李, 湯加躍, 嶺 石 申請人:深圳艾科創(chuàng)新微電子有限公司