專利名稱:一種在dsp上實現先進音頻編碼算法的內存優化方法
技術領域:
本發明涉及DSP音頻編碼領域,特別是涉及一種在DSP上實現先進音頻編碼算法 的內存優化方法。
背景技術:
先進音頻編碼算法(Advanced Audio Coding),簡稱為AAC,是ISO MPEG組織在 MPEG-2基礎上發展起來的一種新一代感知音頻壓縮編碼技術,該技術綜合了多種主流音頻 編碼技術的優點,具有信號壓縮比高,重建音質好,編碼過程高度模塊化和聲道配置靈活等 特點。但在DSP實時音頻編碼應用領域,AAC始終沒有取得領先地位,究其原因,一方面是 由于AAC編碼算法本身的高復雜度,一方面是由于DSP系統資源有限導致AAC編碼算法在 該系統上的實現存在困難。當前的優化方法主要是對AAC快速編碼算法的研究,這些優化算法降低了 AAC編 碼本身的復雜度,但并沒有解決在DSP有限資源條件下充分實現AAC編碼算法的問題。
發明內容
為了克服AAC編碼算法在DSP系統上實現困難的缺點,本發明提出一種在DSP上 實現AAC音頻編碼的內存優化方法,使得AAC編碼算法在DSP有限的系統資源條件下得以 實現。為了達到以上目的,本發明采用如下技術方案步驟一使用直接內存訪問機制實現采樣音頻數據到AAC編碼器的搬運,包括將 PCM音頻碼流以每幀1024個采樣點的形式傳輸到DSP中進行AAC編碼;步驟二對編碼結構體進行外部靜態內存分配,在編碼函數中使用指針的形式調 用該結構體,編碼結構體中應包含用戶配置信息、心理聲學模型配置信息、濾波器系數、窗 函數信息、頻譜系數、量化模塊信息。步驟三由于AAC編碼過程中棧的大小相對于堆是相對可控的,于是在棧的內存 分配過程中,首先通過仿真測試的方法精確測量棧的使用深度,然后設定棧的大小以節約 內存資源,棧的計算式(1)所示Stack = addr (Stack_end)-min (Sp)(1)其中addr(StaCk_end)指測試得出的棧底地址,min (Sp)指指針的最小值即棧頂 地址。步驟四編碼完成后,使用直接內存訪問機制實現編碼數據到下級設備的搬運,即 將AAC碼流以幀的形式傳輸到下級設備中,幀的大小由下級設備與編碼器約定。本發明的優點以及積極效果在于該內存優化方法減少了 DSP系統內存碎片的產 生概率,對棧的合理分配節約了內存的使用量,并提高了數據傳輸以及內存訪問的效率,使 得AAC編碼算法在DSP有限的系統資源條件下得以實現。
圖1是本發明中的AAC編碼內存優化流程圖;圖2是本發明中的DSP與外圍設備通信原理圖;圖3是本發明中的編碼程序棧深度測試原理具體實施例方式本發明是一種在DSP上實現AAC音頻編碼的內存優化方法,為使本發明的目的、技 術方案和優點更加清楚,以下結合具體實例以及附圖,對本發明的技術方案做進一步說明。 主要內容如下本發明流程如圖1所示,以下分別就圖1中101-104分四個步驟詳細說明。步驟一如圖2中201所示,將DSP(本例中為TI系列的C6727系列DSP)的EMIF 總線與外圍設備(本例中為FPGA)相連,由外圍設備控制音頻PCM碼流以1024個采樣數據 為一幀的形式傳輸到DSP中,此過程中,使用DSP的直接內存訪問機制以實現數據的高效傳輸。步驟二 如圖1中的102所示,對于AAC編碼中頻繁使用的數據結構使用靜態內存 分配代替動態內存分配。具體方法是對編碼結構體進行外部靜態內存分配,并在編碼函數中使用指針的形 式調用該結構體,編碼結構體中包含用戶配置信息、心理聲學模型配置信息、濾波器系數、 窗函數信息、頻譜系數、量化模塊信息。步驟三如圖1中的103所示,在棧的內存分配過程中,首先通過仿真測試的方 法精確測量棧的使用深度,然后設定棧的大小以節約內存資源。本例中使用CCS(C6727 系列DSP開發平臺)提供的HWI (硬件中斷)對象的monitor,將其屬性域配置為stack pointer (堆棧指針)來追蹤系統的堆棧指針,monitor的統計模塊可以精確的得出硬件中 斷發生時指針指向的堆棧位置。如圖3所示,棧的計算公式如下所示Stack = addr (Stack_end)-min (Sp)(1)其中addr(StaCk_end)指測試得出的棧底地址,min (Sp)指指針的最小值即棧頂 地址。步驟三編碼完成后,如圖2中202所示,使用直接內存訪問機制實現編碼數據到 下級設備的搬運,即將AAC碼流以幀的形式傳輸到下級設備中,幀的大小由下級設備與編 碼器約定以適應不同傳輸碼率需要。說明書附圖中出現的英文縮寫,其含義如下DMA:直接內存訪問EMIF =DSP配備的外部存儲器接口 ;PCM:脈沖編碼調制。Stack_end:編碼程序的棧底位置。
權利要求
一種在DSP上實現先進音頻編碼算法的內存優化方法,其主要特征為步驟一使用直接內存訪問機制實現音頻數據到編碼DSP的搬運;步驟二對編碼結構體進行外部靜態內存分配,并在編碼函數中使用指針的形式調用該結構體,該結構體包含用戶配置信息、心理聲學模型配置信息、濾波器系數、窗函數信息、頻譜系數、量化模塊信息;步驟三在AAC編碼程序棧的內存分配過程中,首先通過仿真測試的方法由式(1)得出棧的使用深度,然后設定棧的大小以節約內存資源;Stack=addr(Stack_end) min(Sp)(1)步驟四編碼完成后,使用直接內存訪問機制實現編碼數據到下級設備的搬運。
2.根據權利要求1所述方法,其步驟一中的主要特征為使用直接內存訪問機制實現 采樣音頻數據到AAC編碼器的搬運,包括將PCM音頻碼流以每幀1024個采樣點的形式傳輸 到DSP中進行AAC編碼。
3.根據權利要求1所述方法,其步驟三中的主要特征為式(1)中的addr(Stack_end) 指測試得出的棧底地址,min(Sp)指指針的最小值即棧頂地址。
4.根據權利要求1所述方法,其步驟四中的主要特征為編碼完成后,使用直接內存訪 問機制實現編碼數據到下級設備的搬運,即將AAC碼流以幀的形式傳輸到下級設備中,幀 的大小由下級設備與編碼器約定以適應不同傳輸碼率需要。
全文摘要
本發明提出一種在DSP上實現先進音頻編碼算法的內存優化方法。包括使用直接內存訪問機制實現數據及碼流搬運;對編碼過程中頻繁編碼結構體進行外部靜態內存分配,并在編碼函數中使用指針的形式調用該結構體以減少內存碎片的產生;在棧的內存分配過程中,先確定棧的使用深度,以此作為在DSP配置文件中給棧分配內存大小的依據。本發明不但節約了DSP系統內存的使用,而且提高了數據傳輸以及內存使用效率,使得先進音頻編碼算法在DSP有限的系統資源條件下得以實現。
文檔編號G06F12/02GK101968771SQ20101028573
公開日2011年2月9日 申請日期2010年9月16日 優先權日2010年9月16日
發明者李碩, 毛峽 申請人:北京航空航天大學