一種基於g726編碼的多路音頻實時編碼軟硬體方案的製作方法
2023-12-04 23:48:11 3
專利名稱:一種基於g726編碼的多路音頻實時編碼軟硬體方案的製作方法
技術領域:
本發明涉及一種基於G726編碼的多路音頻實時編碼軟硬體方案,該軟硬體設計方案可以使得G726編碼器能夠進行可改變路數的多路音頻編碼,屬於通信領域和嵌入式系統領域。
背景技術:
G. 726 語音編碼是國際電信聯盟(International Telecommunications Union ;ITU)在1990年12月提出的一種自適應量化ADPCM編碼。該編碼有四種編碼速率可選16/24/32/40kbps,可將音頻PCM信號編碼為上述碼率的碼流。具有編碼質量好,算法複雜度適中的優點。G726編碼是目前監控行業通用的幾種編碼中最重要的一種。G726編碼是對音頻信號進行量化編碼,一般的編碼器並不能處理多路音頻,但在實際應用中,經常需要對多路的音頻信號同時編碼。目前的G726及類似編碼的多路實時音頻編碼方案中,主要的技術有兩種,第一種是整體通過專用集成電路來實現,二是使用軟體編碼器來實現。這兩種方案中,前者是在數據處理性能方面具有較好的表現,而後者是在使用成本以及由編碼方式變更時帶來的靈活性上體現優勢。本發明提供了一種將以上兩者的優勢相結合的實現方案,即在多路音頻信號的接收機制上採用軟體控制的硬體模塊來實現可變路數的接收這樣一種靈活的接收方式,在編碼器上則採用復用一塊專用集成電路編碼器來實現多路信號的編碼,當編碼需要變更時,可以直接將舊的編碼器替換成新的。這樣可以達到編碼路數,編碼方式的靈活性以及生產、使用方便、成本低,而又達到實時編碼所需要的性能。本發明的意義在於,在多路編碼的應用要求下,可以節省作為核心部件的音頻編碼器的數量和系統開銷,且方案易變通,具有普適性。
發明內容
為了實現G. 726多路編碼,本發明提供了一種基於G726編碼的多路音頻實時編碼軟硬體方案。該方案主要包括多路音頻接收機制模塊,包含一個多路模擬信號轉換一路數位訊號硬體(其中每路信號經過轉換後可以得到一條分時復用的信號,周期性的依次呈現各路信號),信號緩衝硬體(其可將分時復用的的信號存入其硬體FIFO,當數據多過設定值時,硬體會發出數據滿信號,以阻止FIFO的寫操作繼續向FIFO中寫數據而造成溢出);數據搬移模塊,這是由一個DMA控制器來構成的,由軟體設置源地址和目的地址,並向Linux系統發出DMA傳輸開始命令,將先前存在FIFO中的音頻數據傳輸到指定地址的內存中;數據整合模塊,這個模塊是用來將每一次傳輸到內存的分時復用數據拼接為各路連續數據的,由軟體來完成;多路音頻編碼模塊,該模塊是一塊編碼器硬體,對內存中各路數據的每一幀進行編碼並存入軟體指定的地址。具體步驟如下 步驟一多路音頻接收機制模塊將多路音頻模擬信號轉換為數位訊號,按照路數順序排列每個通道一個採樣點的數據,下一個採樣點再按照上次的順序排列,每一個採樣點用16bit 二進位表示。步驟二 軟體發出命令控制硬體FIFO開始接收上述信號並存儲,利用寄存器實時顯示所接收數據的數量。步驟三軟體配置源數據地址為上述硬體FIFO,目的地址為指定內存地址,軟體控制DMA控制器啟動,並在中斷處理程序中啟動下一次,這樣不斷啟動DMA傳輸,將連續的音頻信號存到內存中。步驟四軟體程序對上述內存中的混合音頻數據進行整合,將固定順序的數據整 合為其一路的音頻數據,存至另外的多塊內存。步驟五將各路待編碼的數據地址,各路編碼後數據要存到的地址,各路編碼的方式(G726編碼有4種速率的編碼),按照鍊表的方式連結起來。步驟六多路編碼硬體讀鍊表的第一個節點,獲得第一路音頻的待編碼地址,編碼後地址,編碼方式,對該路數據進行G726編碼和存儲。多路編碼硬體讀鍊表的第二個節點,後面的操作與第一節點一致,一直編碼到最後一個節點。此時,各路的一幀音頻數據編碼完畢,編碼硬體發出編碼完成中斷。步驟七軟體再次配置鍊表,進行第二幀的編碼,如此反覆。步驟八為了進行實時編碼,採用的編碼硬體的工作頻率設置在能夠在一幀音頻數據時間內將多路音頻數據編碼完畢,為了支持更多路數的編碼,可以在硬體工作允許頻率範圍內增大工作頻率,保證實時編碼。其中,所述的步驟一中將多路音頻模擬信號轉換為數位訊號,按照路數順序排列每個通道一個採樣點的數據。其中,所述的步驟三中軟體控制DMA控制器啟動,並在中斷處理程序中啟動下一次,這樣不斷啟動DMA傳輸,將連續的音頻信號存到內存中。其中,所述的步驟四中軟體程序對上述內存中的混合音頻數據進行整合,將固定順序的數據整合為其一路的音頻數據,存至另外的多塊內存。其中,所述的步驟五中將各路待編碼的數據地址,各路編碼後數據要存到的地 址,各路編碼的方式(G726編碼有4種速率的編碼),按照鍊表的方式連結起來。其中,所述的步驟六中多路編碼硬體讀鍊表的第一個節點,獲得第一路音頻的待編碼地址,編碼後地址,編碼方式,對該路數據進行G726編碼和存儲。多路編碼硬體讀鍊表的第二個節點,後面的操作與第一節點一致,一直編碼到最後一個節點。編碼硬體發出編碼完成中斷。其中,所述的步驟八中為了支持更多路數的編碼,可以在硬體工作允許頻率範圍內增大工作頻率,保證實時編碼。本發明的原理在開源的G726編碼算法的基礎上設計出實際完成編碼工作的硬體,並將其置於Linux嵌入式系統環境下,利用其軟體,對多路音頻系統進行控制和操作。使得接收到的多路音頻信號分時排列,並緩存到硬體FIFO中,再控制DMA傳輸該數據,利用軟體模塊對數據進行整合,將參數寫入鍊表,編碼器硬體讀取鍊表並對各路分幀進行編碼並輸出到指定的內存。其中頻率擴展是路數擴展的關鍵技術。本發明與現有技術相比優點在於
I. G726實現多路實時編碼,且路數可配置可擴展。2.軟體與硬體分配合理,便於系統的擴展和修改3.編碼效率高各路可採用不同的編碼方式,只要在編碼器硬體中添加新的編碼器,便可支持更多種編碼方式的多路編碼。
圖I是本發明提出的多路音頻實時編碼軟硬體方案整體流程2是本發明提出的多路音頻實時編碼音頻接收機制流程3是本發明提出的多路音頻實時編碼音頻整合模塊4是本發明提出的多路音頻實時編碼音頻編碼模塊流程圖
具體實施例方式
下面結合附圖,對本發明的技術方案做進一步的說明。本發明提供了一種基於G726編碼,但不限於本編碼模式的多路音頻實時編碼軟硬體方案。該方案設計方法主要包括多路音頻接收機制模塊,包含一個多路模擬信號轉換一路數位訊號硬體(其中每路信號經過轉換後可以得到一條分時復用的信號,周期性的依次呈現各路信號),信號緩衝硬體(其可將分時復用的的信號存入其硬體FIFO,當數據多過設定值時,硬體會發出數據滿信號,以阻止FIFO的寫操作繼續向FIFO中寫數據而造成溢出);數據搬移模塊,這是由一個DMA控制器來構成的,由軟體設置源地址和目的地址,並向Linux系統發出DMA傳輸開始命令,將先前存在FIFO中的音頻數據傳輸到指定地址的內存中;數據整合模塊,這個模塊是用來將每一次傳輸到內存的分時復用數據拼接為各路連續數據的,由軟體來完成;多路音頻編碼模塊,該模塊是一塊編碼器硬體,對內存中各路數據的每一幀進行編碼並存入軟體指定的地址。參見附圖2,多路音頻接受機制模塊將多路的音頻信號自多路AD轉換器量化、整合為一路分時復用的碼流。最多可復用的數據量安排為16路X16bit,如果需要支持更多路,則只要增加對應數量的多路AD轉換器即可。此條復用碼流經過I2S總線來傳輸,緩存到FIFO硬體中。這部分數據是要被取走的,然而如果沒有來得及取走,FIFO的數據量就會離FIFO水線越來越高,超出水線時,硬體會置位FIFO滿標誌,不再存入新的復用碼流。本系統中使用DMA控制器來取出碼流,在時序上可以保證取數據的速度大於數據產生的速度,因而只要系統正常工作,可以保證數據不會丟失。經過這些操作之後,多路音頻數據就按照分時復用碼流的形式存到內存中去了。附圖3是音頻整合模塊,在內存中進行。通過多路復用的對應關係,這裡由軟體來將內存中的數據去復用,分別存到指定的各路內存區域中。因為接收的數據是按照採樣點來進行多路復用的,g726音頻編碼雖然也是按每採樣點來進行編碼,但是編碼需要逐幀輸出編碼後數據,且幀長度可變,因而復用和去復用兩重操作是必要的。附圖4是音頻編碼模塊。指定一小塊內存,作為鍊表存儲空間,每幀的多路編碼都會根據當前鍊表提供的數據地址和編碼參數進行編碼。
權利要求
1.一種基於G726編碼的多路音頻實時編碼軟硬體方案,其特徵在於該方法具體包括以下步驟 (1)多路音頻接收機制模塊將多路音頻模擬信號轉換為數位訊號,按照路數順序排列每個通道一個採樣點的數據,下一個採樣點再按照上次的順序排列,每ー個採樣點用16bitニ進位表示。
(2)軟體發出命令控制硬體FIFO開始接收上述信號並存儲,利用寄存器實時顯示所接收數據的數量。
(3)軟體配置源數據地址為上述硬體FIFO,目的地址為指定內存地址,軟體控制DMA控制器啟動,並在中斷處理程序中啟動下一次,這樣不斷啟動DMA傳輸,將連續的音頻信號存到內存中。
(4)軟體程序對上述內存中的混合音頻數據進行整合,將固定順序的數據整合為其ー路的音頻數據,存至另外的多塊內存。
(5)將各路待編碼的數據地址,各路編碼後數據要存到的地址,各路編碼的方式(G726編碼有4種速率的編碼),按照鍊表的方式連結起來。
(6)多路編碼硬體讀鍊表的第一個節點,獲得第一路音頻的待編碼地址,編碼後地址,編碼方式,對該路數據進行G726編碼和存儲。多路編碼硬體讀鍊表的第二個節點,後面的操作與第一節點一致,一直編碼到最後ー個節點。此時,各路的ー幀音頻數據編碼完畢,編碼硬體發出編碼完成中斷。
(7)軟體再次配置鍊表,進行第二幀的編碼,如此反覆。
(8)為了進行實時編碼,採用的編碼硬體的工作頻率設置在能夠在ー幀音頻數據時間內將多路音頻數據編碼完畢,為了支持更多路數的編碼,可以在硬體工作允許頻率範圍內増大工作頻率,保證實時編碼。
2.根據權利要求I所述的ー種基於G726編碼的多路音頻實時編碼軟硬體方案,其特徵在於所述步驟(I)中將多路音頻模擬信號轉換為數位訊號,按照路數順序排列每個通道一個採樣點的數據。
3.根據權利要求I所述的ー種基於G726編碼的多路音頻實時編碼軟硬體方案,其特徵在幹所述步驟(3)中軟體控制DMA控制器啟動,並在中斷處理程序中啟動下一次,這樣不斷啟動DMA傳輸,將連續的音頻信號存到內存中。
4.根據權利要求I所述的ー種基於G726編碼的多路音頻實時編碼軟硬體方案,其特徵在於所述步驟(4)中軟體程序對上述內存中的混合音頻數據進行整合,將固定順序的數據整合為其一路的音頻數據,存至另外的多塊內存。
5.根據權利要求I所述的ー種基於G726編碼的多路音頻實時編碼軟硬體方案,其特徵在於所述步驟(5)中將各路待編碼的數據地址,各路編碼後數據要存到的地址,各路編碼的方式(G726編碼有4種速率的編碼),按照鍊表的方式連結起來。
6.根據權利要求I所述的ー種基於G726編碼的多路音頻實時編碼軟硬體方案,其特徵在於所述步驟出)中多路編碼硬體讀鍊表的第一個節點,獲得第一路音頻的待編碼地址,編碼後地址,編碼方式,對該路數據進行G726編碼和存儲。多路編碼硬體讀鍊表的第二個節點,後面的操作與第一節點一致,一直編碼到最後ー個節點。編碼硬體發出編碼完成中斷。
7.根據權利要求I所述的ー種基於G726編碼的多路音頻實時編碼軟硬體方案,其特徵在於所述步驟(8)中為了支持更多路數的編碼,可以在硬體工作允許頻率範圍內增大工作頻率,保證實時編碼。
8.本發明涉及所有採用或部分採用權利要求1-7所述技術的代碼、軟體和設備等。
全文摘要
本發明提供了一種基於G726編碼的多路音頻實時編碼軟硬體方案。該方案主要包括多路音頻接收機制模塊,包含一個多路模擬信號轉換一路數位訊號硬體(其中每路信號經過轉換後可得到一條分時復用信號),信號緩衝硬體(可將分時復用的信號存入其硬體FIFO,當數據多過設定值時,硬體會發出數據滿信號);數據搬移模塊,由DMA控制器來構成,由軟體設置源地址和目的地址,並向系統發出DMA傳輸開始命令,將先前存在FIFO中的數據傳輸到指定地址中;數據整合模塊,該模塊用於將每次傳輸到內存的數據拼接為各路連續數據,由軟體完成;多路音頻編碼模塊為一塊編碼器硬體,編碼內存中各路數據的每一幀並存入指定的地址。
文檔編號H04B14/06GK102664015SQ201210114658
公開日2012年9月12日 申請日期2012年4月18日 優先權日2012年4月18日
發明者唐玲, 孟繁宇, 徐峰, 王正鑫 申請人:王正鑫