專利名稱:一種基于faac lc模式的多路音頻實時編碼軟件設(shè)計方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于FAAC LC模式的多路音頻實時編碼軟件設(shè)計方法,該軟件設(shè) 計方法可以使得FAAC編碼器能夠進行多路音頻編碼,屬于通信領(lǐng)域。
背景技術(shù):
先進音頻編碼(Advanced Audio Coding,簡稱AAC)是在MP3基礎(chǔ)上發(fā)展起來的新 一代感知音頻壓縮編解碼技術(shù),該技術(shù)綜合了多種主流音頻編解碼技術(shù)的優(yōu)點,具有信號 壓縮比高,重建音質(zhì)好,編解碼過程高度模塊化和聲道配置靈活等特點。FAAC是目前最好的 開源AAC編碼器,其編碼質(zhì)量完全能和商業(yè)性質(zhì)的編碼器相媲美。FAAC編碼器支持單路64通道音頻編碼,不支持多路音頻編碼,但在實際應用中, 經(jīng)常需要AAC編碼器能夠處理來自不同傳輸鏈路的多路音頻。
發(fā)明內(nèi)容
為了實現(xiàn)FAAC支持多路音頻編碼,本發(fā)明提供了一種基于FAAC LC模式的多路音 頻實時編碼軟件設(shè)計方法。該軟件設(shè)計方法主要包括多路音頻接收機制模塊,包含多路接 收傳輸緩沖區(qū),其中每路接收傳輸緩沖區(qū)能夠存儲2幀未編碼的PCM數(shù)據(jù),能夠防止接收數(shù) 據(jù)溢出,同時保證AAC編碼器正確接收多路音頻數(shù)據(jù);多路預存接收緩沖區(qū),其中每路預存 接收緩沖區(qū)用于存儲該鏈路需要預存的3幀數(shù)據(jù)及當前編碼數(shù)據(jù);多路窗型判定預留緩沖 區(qū),其中每路預留緩沖區(qū)用于存儲上一幀編碼數(shù)據(jù),利用當前鏈路預留緩沖區(qū)中的上一幀 編碼數(shù)據(jù)和當前編碼數(shù)據(jù)進行窗型判定;多路濾波器組預留緩沖區(qū),其中每路預留緩沖區(qū) 用于存儲上一幀編碼數(shù)據(jù),利用當前鏈路預留緩沖區(qū)中的上一幀編碼數(shù)據(jù)和當前編碼數(shù)據(jù) 進行MDCT變換;多路音頻發(fā)送機制模塊,包含多路發(fā)送傳輸緩沖區(qū),其中每路發(fā)送傳輸緩 沖區(qū)存儲1幀編碼后的AAC碼流,能夠保證AAC編碼器正確發(fā)送多路音頻數(shù)據(jù)。具體步驟 如下步驟一多路接收傳輸緩沖區(qū)主動地從多路數(shù)據(jù)鏈路中獲取未編碼的PCM數(shù)據(jù),多 路音頻接收機制模塊負責將接收到的數(shù)據(jù)正確地存入對應的預存接收緩沖區(qū);步驟二依據(jù)準則將預存接收緩沖區(qū)切換為當前編碼預存接收緩沖區(qū);步驟三利用當前鏈路預留緩沖區(qū)中的上一幀編碼數(shù)據(jù)和當前編碼數(shù)據(jù)進行窗型 判定;步驟四將當前編碼數(shù)據(jù)存入對應的窗型判定預留緩沖區(qū),覆蓋原有數(shù)據(jù);步驟五進行窗型切換,抑制預回聲;步驟六利用當前鏈路預留緩沖區(qū)中的上一幀編碼數(shù)據(jù)和當前編碼數(shù)據(jù)進行 MDCT ;步驟七將當前編碼數(shù)據(jù)存入對應的濾波器組預留緩沖區(qū),覆蓋原有數(shù)據(jù);步驟八AAC LC模式可選模塊及量化編碼,生成AAC碼流;步驟九AAC碼流存入對應的發(fā)送傳輸緩沖區(qū),多路音頻發(fā)送機制模塊負責將AAC
3碼流發(fā)送到對應的數(shù)據(jù)鏈路中。其中,所述的步驟一中當某路或某幾路接收傳輸緩沖區(qū)的數(shù)據(jù)滿一幀時,多路音 頻接收機制模塊將數(shù)據(jù)存入對應的預存接收緩沖區(qū)。其中,所述的步驟二中準則指將多路預存接收緩沖區(qū)進行編號,依次將預存接收 緩沖區(qū)切換為當前編碼預存接收緩沖區(qū),如果某預存接收緩沖區(qū)中的數(shù)據(jù)不滿4幀或未得 到更新,則此次跳過對該預存接收緩沖區(qū)的處理,繼續(xù)處理下一個預存接收緩沖區(qū)。其中,所述的步驟三中FAAC采用基于信號各短塊能量變化率和高頻比變換率的 窗型判定算法,需要預留上一幀的編碼數(shù)據(jù)。其中,所述的步驟四中窗型判定預留緩沖區(qū)初始數(shù)據(jù)為全零。其中,所述的步驟六中為消除時域混疊,需要預留上一幀的編碼數(shù)據(jù)。其中,所述的步驟七中濾波器組預留緩沖區(qū)初始數(shù)據(jù)為全零。本發(fā)明的原理在開源FAAC編碼器的基礎(chǔ)上,通過設(shè)置多路音頻接收機制模塊、 多路預存接收緩沖區(qū)、多路窗型判定預留緩沖區(qū)、多路濾波器組預留緩沖區(qū)及多路音頻發(fā) 送機制模塊來實現(xiàn)多路AAC編碼。本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于1、FAAC實現(xiàn)多路音頻編碼;2、FAAC程序修改量小;3、多路音頻接收發(fā)送機制模塊能夠正確地接收、發(fā)送多路音頻數(shù)據(jù),魯棒性高。
圖1是本發(fā)明提出的多路音頻實時編碼軟件設(shè)計方法的整體流程圖;圖2是本發(fā)明提出的多路音頻接收機制流程圖;圖3是本發(fā)明提出的多路接收傳輸緩沖區(qū)指定序號示意圖;圖4是本發(fā)明圖的當前編碼預存接收緩沖區(qū)切換示意圖;圖5是本發(fā)明圖的窗型判定預留緩沖區(qū)切換示意圖;圖6是本發(fā)明圖的濾波器組預留緩沖區(qū)切換示意圖;圖7是本發(fā)明提出的多路音頻發(fā)送機制流程圖。
具體實施例方式下面結(jié)合附圖,對本發(fā)明的技術(shù)方案做進一步說明。本發(fā)明提供了一種基于FAAC LC模式的多路音頻實時編碼軟件設(shè)計方法。該軟件 設(shè)計方法主要包括多路音頻接收機制模塊,包含多路接收傳輸緩沖區(qū),其中每路接收傳輸 緩沖區(qū)能夠存儲2幀未編碼的PCM數(shù)據(jù),能夠防止接收數(shù)據(jù)溢出,同時保證AAC編碼器正確 接收多路音頻數(shù)據(jù);多路預存接收緩沖區(qū),其中每路預存接收緩沖區(qū)用于存儲該鏈路需要 預存的3幀數(shù)據(jù)及當前編碼數(shù)據(jù);多路窗型判定預留緩沖區(qū),其中每路預留緩沖區(qū)用于存 儲上一幀編碼數(shù)據(jù),利用當前鏈路預留緩沖區(qū)中的上一幀編碼數(shù)據(jù)和當前編碼數(shù)據(jù)進行窗 型判定;多路濾波器組預留緩沖區(qū),其中每路預留緩沖區(qū)用于存儲上一幀編碼數(shù)據(jù),利用當 前鏈路預留緩沖區(qū)中的上一幀編 數(shù)據(jù)和當前編碼數(shù)據(jù)進行MDCT變換;多路音頻發(fā)送機 制模塊,包含多路發(fā)送傳輸緩沖區(qū),其中每路發(fā)送傳輸緩沖區(qū)存儲1幀編碼后的AAC碼流,能夠保證AAC編碼器正確發(fā)送多路音頻數(shù)據(jù)。參見附圖1,多路接收傳輸緩沖區(qū)接收來自不同傳輸鏈路中的多路未編碼PCM數(shù) 據(jù)(101);然后多路音頻接收機制模塊將接收到的PCM數(shù)據(jù)存入對應的預存接收緩沖區(qū) (102);接著根據(jù)chain(當前處理的鏈路)值使用指針對當前編碼預存接收緩沖區(qū)進行切 換(103);在進行窗型判定之前,先根據(jù)chain值使用指針對當前窗型判定預留緩沖區(qū)進行 切換(104);之后利用當前編碼數(shù)據(jù)與當前鏈路窗型判定預留緩沖區(qū)中的數(shù)據(jù)進行窗型 判定(105);切換窗型,達到抑制預回聲的目的(106);根據(jù)chain值使用指針對當前濾波 器組預留緩沖區(qū)進行切換(107);進而利用當前編碼數(shù)據(jù)與當前鏈路濾波器組預留緩沖區(qū) 中的數(shù)據(jù)進行MDCT (108);完成AAC可選模塊及量化編碼,生成AAC碼流(109);最后AAC碼 流存入對應的發(fā)送傳輸緩沖區(qū),多路音頻發(fā)送機制模塊負責將AAC碼流發(fā)送到對應的數(shù)據(jù) 鏈路中(110)。101是本發(fā)明提出的多路音頻接收機制模塊,是多路音頻實時編碼軟件設(shè)計方法 的核心模塊。參見附圖2,對多路接收傳輸緩沖區(qū)進行編號及初始化(201),編號指依次指 定接收傳輸緩沖區(qū)的序號(301),初始化指各接收傳輸緩沖區(qū)初始值全為零,且chain = 1 ; 之后各接收傳輸緩沖區(qū)接收數(shù)據(jù),直至某路或某幾路緩沖區(qū)中的數(shù)據(jù)滿一幀(202);然后 查詢AAC編碼器是否空閑(203);如果AAC編碼器當前狀態(tài)為忙,則返回到202,如果AAC編 碼器當前狀態(tài)為空閑,則檢測chain鏈路接收傳輸緩沖區(qū)(204);其數(shù)據(jù)是否滿一幀(205); 如不滿一幀則chain++(206),并返回到204 ;如滿一幀,則將chain鏈路傳輸緩沖區(qū)的數(shù)據(jù) 存入對應的chain鏈路預存接收緩沖區(qū)。本發(fā)明的多路音頻接收機制模塊的核心思想是 優(yōu)先處理chain鏈路接收傳輸緩沖區(qū),如chain鏈路接收傳輸緩沖區(qū)未準備就緒,則處理下 一鏈路接收傳輸緩沖區(qū),如此在突發(fā)狀態(tài)下,能夠避免因多路音頻接收機制模塊一直等待 chain鏈路數(shù)據(jù),進而造成不能及時處理其它鏈路數(shù)據(jù)的情況。103中的當前編碼預存接收緩沖區(qū)切換是通過指針的形式完成切換(401),105中 當前窗型判定預留緩沖區(qū)的切換是通過指針的形式完成切換(501),108中當前濾波器組 預留緩沖區(qū)的切換是通過指針的形式完成切換(601)。110是本發(fā)明提出的多路音頻發(fā)送機制模塊,是多路音頻實時編碼軟件設(shè)計方法 的核心模塊。參見附圖7,對多路發(fā)送傳輸緩沖區(qū)進行編號及初始化(701),編號指依次指 定發(fā)送傳輸緩沖區(qū)的序號,初始化指各發(fā)送傳輸緩沖區(qū)初始值全為零;之后多路音頻發(fā)送 機制模塊檢測AAC編碼器是否完成編碼(702);如未完成,則繼續(xù)檢測,直至完成,如完成, 則將編碼后的AAC碼流從chain鏈路發(fā)送傳輸緩沖區(qū)發(fā)送至對應的數(shù)據(jù)傳輸鏈路中。說明書附圖中出現(xiàn)的英文縮寫,其含義如下MDCT 改進型離散余弦變換;chain 當前處理鏈路。
權(quán)利要求
一種基于FAAC LC模式的多路音頻實時編碼軟件設(shè)計方法,其特征在于該方法具體包括以下步驟(1)多路接收傳輸緩沖區(qū)主動地從多路數(shù)據(jù)鏈路中獲取未編碼的PCM數(shù)據(jù),多路音頻接收機制模塊負責將接收到的數(shù)據(jù)正確地存入對應的預存接收緩沖區(qū);(2)依據(jù)準則將預存接收緩沖區(qū)切換為當前編碼預存接收緩沖區(qū);(3)利用當前鏈路預留緩沖區(qū)中的上一幀編碼數(shù)據(jù)和當前編碼數(shù)據(jù)進行窗型判定;(4)將當前編碼數(shù)據(jù)存入對應的窗型判定預留緩沖區(qū),覆蓋原有數(shù)據(jù);(5)進行窗型切換,抑制預回聲;(6)利用當前鏈路預留緩沖區(qū)中的上一幀編碼數(shù)據(jù)和當前編碼數(shù)據(jù)進行MDCT;(7)將當前編碼數(shù)據(jù)存入對應的濾波器組預留緩沖區(qū),覆蓋原有數(shù)據(jù);(8)AAC LC模式可選模塊及量化編碼,生成AAC碼流;(9)AAC碼流存入對應的發(fā)送傳輸緩沖區(qū),多路音頻發(fā)送機制模塊負責將AAC碼流發(fā)送到對應的數(shù)據(jù)鏈路中。
2.根據(jù)權(quán)利要求1所述的一種基于FAACLC模式的多路音頻實時編碼軟件設(shè)計方法, 其特征在于所述的步驟(1)中當某路或某幾路接收傳輸緩沖區(qū)的數(shù)據(jù)滿一幀時,多路音 頻接收機制模塊將數(shù)據(jù)存入對應的預存接收緩沖區(qū)。
3.根據(jù)權(quán)利要求1所述的一種基于FAACLC模式的多路音頻實時編碼軟件設(shè)計方法, 其特征在于所述的步驟(2)中準則指將多路預存接收緩沖區(qū)進行編號,依次將預存接收 緩沖區(qū)切換為當前編碼預存接收緩沖區(qū),如果某預存接收緩沖區(qū)中的數(shù)據(jù)不滿4幀或未得 到更新,則此次跳過對該預存接收緩沖區(qū)的處理,繼續(xù)處理下一個預存接收緩沖區(qū)。
4.根據(jù)權(quán)利要求1所述的一種基于FAACLC模式的多路音頻實時編碼軟件設(shè)計方法, 其特征在于所述的步驟(3)中FAAC采用基于信號各短塊能量變化率和高頻比變換率的 窗型判定算法,需要預留上一幀的編碼數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的一種基于FAACLC模式的多路音頻實時編碼軟件設(shè)計方法, 其特征在于所述的步驟(4)中窗型判定預留緩沖區(qū)初始數(shù)據(jù)為全零。
6.根據(jù)權(quán)利要求1所述的一種基于FAACLC模式的多路音頻實時編碼軟件設(shè)計方法, 其特征在于所述的步驟(6)中為消除時域混疊,需要預留上一幀的編碼數(shù)據(jù)。
7.根據(jù)權(quán)利要求1所述的一種基于FAACLC模式的多路音頻實時編碼軟件設(shè)計方法, 其特征在于所述的步驟(7)中濾波器組預留緩沖區(qū)初始數(shù)據(jù)為全零。
全文摘要
本發(fā)明提供了一種基于FAAC LC模式的多路音頻實時編碼軟件設(shè)計方法。該軟件設(shè)計方法主要包括多路音頻接收機制模塊,包含多路接收傳輸緩沖區(qū),其中每路接收傳輸緩沖區(qū)能夠存儲2幀未編碼的PCM數(shù)據(jù),能夠防止接收數(shù)據(jù)溢出,同時保證AAC編碼器正確接收多路音頻數(shù)據(jù);多路預存接收緩沖區(qū),其中每路預存接收緩沖區(qū)用于存儲該鏈路需要預存的3幀數(shù)據(jù)及當前編碼數(shù)據(jù);多路窗型判定預留緩沖區(qū),其中每路預留緩沖區(qū)用于存儲上一幀編碼數(shù)據(jù),利用當前鏈路預留緩沖區(qū)中的上一幀編碼數(shù)據(jù)和當前編碼數(shù)據(jù)進行窗型判定;多路濾波器組預留緩沖區(qū),其中每路預留緩沖區(qū)用于存儲上一幀編碼數(shù)據(jù),利用當前鏈路預留緩沖區(qū)中的上一幀編碼數(shù)據(jù)和當前編碼數(shù)據(jù)進行MDCT變換;多路音頻發(fā)送機制模塊,包含多路發(fā)送傳輸緩沖區(qū),其中每路發(fā)送傳輸緩沖區(qū)存儲1幀編碼后的AAC碼流,能夠保證AAC編碼器正確發(fā)送多路音頻數(shù)據(jù)。
文檔編號G10L19/00GK101968961SQ20101028773
公開日2011年2月9日 申請日期2010年9月19日 優(yōu)先權(quán)日2010年9月19日
發(fā)明者毛峽, 邵偉國 申請人:北京航空航天大學