999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于SIC8008的VoIP原型系統中iLBC的應用研究

2012-08-07 07:52:52許悅李強
電子測試 2012年2期
關鍵詞:優化

許悅,李強

(重慶郵電大學 重慶 400065)

0 引言

隨著工信部表示三網融合在“十二五”期間將有實質性的進展,使用于廣電網絡的數字高清電視機頂盒所具有的功能也將越來越豐富。除了能支持接收電視節目外,還可以支持VoD、Web瀏覽器、DVD、可視電話、遠程教育、遠程醫療、會議電視等多媒體,其功能正在向高檔化多媒體終端發展。通過高清機頂盒的硬件擴展接口(USB接口或RCA接口),結合軟件項目的開發,從而實現VoIP技術在機頂盒方面的應用。

1 數字高清電視機頂盒芯片SIC8008

SIC8008是重慶四聯微電子有限公司設計的一款高性能MPEG2/AVS/H264高清解碼芯片。SIC8008結構框圖如圖1所示。主CPU主要用于系統(Linux OS)應用,輔CPU實現音頻實時解碼功能及其它計算功能。

圖1 SIC8008結構框圖

2 基于SIC8008的VoIP原型系統整體設計

2.1 VoIP原型系統實現方式

文獻[2]中指出,關于機頂盒實現VoIP功能,業界一般有3種方式:

STB通過USB接口外接USB話機,USB話機完成電話按鍵的輸入、聲音的采集和播放,機頂盒內實現USB話機驅動和其它協議,控制軟件,從而實現機頂盒VoIP功能。

VoIP的輸入輸出主要通過機頂盒的RJ11接口,機頂盒設計時已經增加了RJ11電話機接口。電話機信號經過語音接口單元,送入語音處理單元完成語音編碼壓縮與解壓縮,以及一些語音協議處理,如SIP、H.323等協議,再通過主控制器處理后傳送給輸入端。

VoIP的輸入輸出接口通過機頂盒的音頻輸出和MIC輸入接口完成。

SIC8008整機設計本身沒有實現RJ11和MIC輸入接口,因此,第一種方式可以直接應用在VoIP原型系統。但是,由于市面上生產的USB話機不但價格很高,而且其驅動程序并不具有兼容性,同時如果自行開發SIC8008的USB話機驅動程序,即提高了開發成本,又延長了工作周期。為了節約研究成本并提高工作效率,最后采用在SIC8008整機外接USB聲卡并連接耳機與話筒的方式來實現此原型系統。其中,USB聲卡必須符合標準的USB audio協議。

在軟件實現的方法上,將用于PC的語音實時流處理的開源代碼經過修改后移植應用在SIC8008中,實現語音會話。采用的信令協議為SIP。VoIP原型系統結構如圖2所示。

圖2 數字高清電視機頂盒芯片SIC8008 VoIP原型系統結構

2.2 Linux內核的剪裁

SIC8008所用的操作系統是經過內核剪裁的linux-2.6.30。主要做了以下修改:在arch目錄下只保留了arm子目錄,并根據SIC8008的各項參數對此子目錄下的各文件進行重新定義,在內核中加入符合SIC8008高清數字電視機頂盒相關的時鐘、器件以及配置文件等。在fs路徑下,根據NAND FLASH模塊添加了ysffs2文件系統。Yaffs(Yet Another Flash File System)文件系統是專門針對NAND FLASH設計的嵌入式文件系統,yaffs2是此文件系統的第二個版本,能夠更好的支持大容量的NAND FLASH芯片。

經過對Linux內核的剪裁,主要增添了針對SIC8008數字高清電視機頂盒SoC的ARM系統類型SICMicro HDSoC。由于VoIP原型系統的需要,在對內核進行配置時,設備驅動的聲卡支持選項中要勾選USB聲音器件選項。

2.3 Mediastreamer2

Mediastreamer2是由Simon Morlat開發的一個輕量級的流技術引擎,可以對音頻和視頻進行實時流的制作與處理。該引擎基于ortp庫,全部由C語言編寫,完全符合SIC8008上VoIP原型系統處理聲音的需求。

正如在參考文獻[3]介紹,在基于Linux平臺的語音會話系統中,Mediastreamer2可以通過alsa或oss進行語音的讀寫,收發RTP包,完成語音編解碼,播放及錄制wav文件,利用FIR濾波器量化語音以及進行自動增益控制等[4]。其簡單的設計思想,給利用Mediastreamer2開發語音處理程序的工作提供了一個良好的平臺。

2.4 語音編碼方案iLBC

[3]中對主要的語音壓縮算法G.728、G.723.1、G.729.A和iLBC做了比較,最終選擇iLBC作為最終的語音編碼方案。在Mediastreamer2中,默認的語音編碼方案為speex。iLBC和speex都是對CELP的發展,并且在算法復雜度及聲音質量上都不相上下。但是,由于speex需要ogg作為其容器格式,在將其移植在SIC8008的過程中,還需要首先移植libogg庫,這反而大大增加了整個系統開發的周期;而iLBC作為Mediastreamer2的默認語音編碼算法,則只需要修改較少部分的代碼并添加一個ilbc.c的文件即可。因此,iLBC最終作為此VoIP原型系統的語音壓縮算法。同樣,文獻[3]為使iLBC作為默認算法對Mediastreamer2的修改方法進行了詳細介紹。

3 iLBC編解碼原理

iLBC是一種基于獨立幀的利用線性預測方法對殘差信號進行編碼的算法,主要支持兩種幀長格式:20 ms和30 ms。對于20 ms幀,每幀的位數為304 bit,共有160個采樣點,分為4個子幀;對于30 ms,每幀的位數為400 bit,共有240個采樣點,分為6個子幀。通過使語音信號通過LPC濾波器后得到殘差信號,之后對幀中殘差信號能量最大的部分進行標量量化,搜索到開始狀態,建立動態碼書,用動態碼書對剩余的殘差信號進行編碼。這種編碼方法即為獨立幀編碼,這種方法增加了幀與幀之間的獨立性,從而消除了傳輸時由于丟包而引起的感知下降。

iLBC編碼器的輸入必須是采樣率為8 000 Hz,16 bit的PCM信號。

3.1 iLBC編碼原理

iLBC的編碼過程如圖3所示。

在文中的VoIP原型系統中,經過USB聲卡采集后得到的PCM信號首先通過高通濾波器,濾除直流分量和低頻噪音。用Levinson-Durbin算法求解LPC系數得到LPC-10的系數。每一次LPC分析,得到線性預測濾波器的系數之后都需要將其轉換為一個線譜頻率(LSF)的集合,量化內插后得到線譜對(LSP)集合。因為線譜對系數更利于量化、內插,其對量化誤差不敏感,具有良好的強健性[5]。得到PLC分析器后,計算出信號的殘差,從殘差中找到兩個能量最大的連續子幀,然后把能量值較小的首23/22個樣點(30 ms/20 ms)或尾23/22樣點從連續子幀中去除,剩余的57/58個被選定為本次處理的開始狀態。之后對開始狀態以基于DPCM的標量量化進行編碼[6]。已經編碼的殘差信號再經解碼得到的LPC激勵樣點集合作為自適應碼書。對于剩余的殘差信號,矢量量化將按下面順序進行:包含有初始狀態的兩個連續子幀中剩余的23/22個樣點;時間軸上在開始狀態后的各子幀;時間軸上在初始狀態前的各子幀。對于此矢量量化,每次碼書搜索的范圍是動態的,隨著最新的解碼結果,該動態碼書被更新。最后將編碼的語音信號打包放入有效載荷中。

3.2 iLBC解碼原理

iLBC的解碼模塊的運算量相對與編碼模塊要小。根據文獻[7]的介紹,解碼的主要過程如下:解包后提取參數。從得到的LSF參數進行內插,并轉化各子幀的LPC系數,以便進行合成操作。對開始狀態進行解碼,解碼結果一方面作為激勵信號暫時儲存,另一方面存入碼本存儲區,以構成動態碼本的初始值。對剩余的子幀部分,按照與編碼相同的次序進行殘差解碼,并用解碼結果更新動態碼本,重復此步驟直到所有子幀完成解碼。對于解碼得到的殘差信號,進行語音增強的操作。之后進行語音合成,形成解碼后的語音。最后通過高通濾波器,消除合成后的低頻語音。解碼模塊的流圖如圖4所示。

圖4 SIC8008 VoIP原型系統iLBC解碼模塊流圖

4 SIC8008 VoIP原型系統中iLBC編碼模塊的實現與優化

SIC8008是一套采用專用視頻硬件模塊處理高清視頻解碼的方案,并不是由嵌入式CPU或DSP加軟件的方式處理視頻編解碼,能夠有效降低芯片功耗。該高清機頂盒方案的視頻解碼核,在進行高清H.264解碼時的工作主頻約為250 MHz,遠低于CPU或DSP的600 M~1 000 MHz,可顯著降低功耗。釋放CPU的計算能力,用于實現其他功能。VoIP系統作為SIC8008數字電視高清機頂盒產品中的一項增值業務,要在不影響高清電視信號視頻解碼的情況下,來實現IP電話的應用。該原型系統主要利用SIC8008的輔CPU計算功能來實現其功能。

4.1 iLBC編碼模塊優化前的測試結果

文件xend.c是基于Mediastreamer2和oRTP開發的功能測試文件,用來模擬語音信號從接收到iLBC編碼,之后通過RTP包發送的過程。其運行結果如圖5所示。

有圖5中可以看出,在測試程序運行過程中,延遲告警隨著運行時間持續增大,并不能達到預期的效果。究其原因,參考圖6的輔CPU占用情況可以看出,是因為測試程序中PID為354的線程對CPU的占用率過高。此PID正是圖5中名為ms_ticker_run的線程ID,即語音處理時的線程。

PID為354的線程所實現功能主要是對語音進行iLBC編碼壓縮及RTP打包發送(發送地址為127.0.0.1)。初步認為是由于iLBC壓縮算法復雜度而引起的CPU占用過高。通過對iLBC庫中的編碼測試文件ilbc_encoder.c來進一步試驗,證實了上述判斷,測試結果見圖7。

圖5 由xend.c編譯生成的xend_original.elf運行情況

圖6 xend_original.elf運行時輔CPU占用情況

圖7 iLBC編碼測試

圖7中,第二個參數為iLBC編碼時使用幀長的選擇;第三個參數為輸入文件,即采樣率為8000Hz,16bit的PCM信號;第三個參數為編碼后的輸出文件。從圖中可以看出,PCM輸入文件時長30.24秒,經iLBC編碼的時間為36.79秒,是實際語音時間的121.7%,超出了6.55秒,遠遠不能達到語音處理的實時性。

4.2 iLBC編碼模塊的優化

為了使VoIP原型系統的編碼模塊在SIC8008上盡可能的降低其對輔CPU的占用率,在實際開發應用的過程中,對iLBC編碼算法代碼進行優化改進。

文獻[8]針對編碼算法提出了三個改進方案,并在Windows XP上驗證了優化的可行性。其中,文獻[8]中提出的減少自適應碼書比較次數和搜索范圍是有效降低算法復雜度的方法,即考慮到擴展碼書與基本碼書的相關性,在基本碼書中搜索時取定一個步長跳躍式地搜索,并且在第一級搜索時,編碼的目標向量具有較大能量,而第二、第三級搜索時的目標向量能量逐級減小,可以將步長繼續增大,節約編碼時間。

由于第二和第三級搜索時目標向量的能量越來越小,和第一級搜索時相比處于次要地位,SIC8008上iLBC編碼模塊的實際應用過程中,在基本碼書和擴展碼書搜索中只保留第一級的搜索,同時使用步長為2的跳躍式搜索。

4.3 優化結果

根據上一節的優化方法和文獻[8]中提到的其他方案,修改iLBC的代碼,在SIC8008上測試相關功能。

iLBC編碼模塊優化后,其編碼測試結果如圖8所示。在參數不變的情況下,編碼時間為實際語音時間的57.5%,比優化前縮短了19.39 s。

圖8 iLBC代碼優化后的編碼測試

應用于實時聲音處理并以RTP包發送的程序中,xend.elf測試結果如圖9所示。圖9中結果沒有延遲告警,正常顯示發送帶寬。

此時,輔CPU占用率降低了40%左右,如圖10所示。

最后,基于優化后的iLBC編碼模塊將文獻[3]中提到的IP電話語音留言功能移植在SIC8008中,進行語音留言測試,所得new message.wav聲音質量略有下降,但是依然具有很強的可懂度和清晰度。

通過優化,證明了iLBC編碼模塊在SIC8008芯片上開發VoIP原型系統的可實現性,符合實時語音處理的要求;同時,證明了iLBC編碼優化方案在嵌入式軟件開發過程中的可行性。

圖9 iLBC代碼優化后xend.elf的運行情況

圖10 iLBC代碼優化后xend.elf運行時輔CPU的占用情況

5 結論

基于SIC8008芯片開發的VoIP原型系統,在保證不能影響輔CPU進行高清視頻解碼的情況下,盡可能的降低對其資源的占用。其中,對語音進行實時編碼處理的模塊設計及優化是解決問題的關鍵所在。經過對iLBC編碼模塊代碼的改進與優化,測試結果與為優化前的模塊相比,CPU占用率降低了40%左右,并且語音質量仍然清晰,具有很強的可懂度。雖然,在自適應碼書搜索中采用步長不等于1和只進行一級搜索的方法從理論上不能保證最優解,但是在應用過程中其實驗結果對信噪比的影響不大,因此,iLBC模塊的優化方案在VoIP原型系統開發中還是值得的。

參考文獻

[1]重慶四聯微電子. SIC8008產品說明[R]. 重慶四聯微電子,2011.

[2]于文華.基于網絡機頂盒實現VOIP終端[J].電腦知識與技術,2010,6(3).

[3]許悅.基于Mediastreamer2的IP電話語音信箱功能的設計與實現[J].電子測試,2011(12).

[4]Simon Morlat, Mediastreamer2 Documentation 2.4.0[EB/OL]. May 19, 2010. http://download-mirror.savannah.gnu.org/releases/linphone/mediastreamer/doc/index.html.

[5]楊拯. iLBC語音算法研究及DSP實現[D].北京:北京郵電大學,2008.

[6]S. V. Anderson. Internet Low Bit Rate Codec (iLBC)[EB/OL]. December 2004. http://tools.ietf.org/html/rfc3951.

[7]郭廷廷,李 敬.iLBC編碼算法及其在VoIP中的應用[JOL].電子技術應用,2006(7).

[8]肖博,劉炯鑫,黃永峰.iLBC語音編解碼器的實現與優化[J].計算機研究與發展,2007,44(z1).

猜你喜歡
優化
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
PEMFC流道的多目標優化
能源工程(2022年1期)2022-03-29 01:06:28
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
由“形”啟“數”優化運算——以2021年解析幾何高考題為例
圍繞“地、業、人”優化產業扶貧
今日農業(2020年16期)2020-12-14 15:04:59
事業單位中固定資產會計處理的優化
消費導刊(2018年8期)2018-05-25 13:20:08
4K HDR性能大幅度優化 JVC DLA-X8 18 BC
幾種常見的負載均衡算法的優化
電子制作(2017年20期)2017-04-26 06:57:45
主站蜘蛛池模板: 国产成人福利在线| 久久精品视频亚洲| 国产在线视频导航| 成人在线第一页| 亚洲男女天堂| 亚洲成a人片77777在线播放| 国产新AV天堂| 国产精品吹潮在线观看中文| 动漫精品啪啪一区二区三区| 欧美日本二区| 国产精品无码影视久久久久久久| 久久婷婷六月| av一区二区三区高清久久| 浮力影院国产第一页| 欧美日本在线一区二区三区| 国产91高清视频| 欧美日韩一区二区三| 午夜色综合| 2021国产v亚洲v天堂无码| 2024av在线无码中文最新| 亚洲欧美成人在线视频| 先锋资源久久| 永久天堂网Av| 欧美区一区二区三| 精品伊人久久久香线蕉| 午夜高清国产拍精品| 综合色在线| av在线无码浏览| 老司机午夜精品视频你懂的| 亚洲精品老司机| 国产va在线观看免费| 欧美a在线| 97精品国产高清久久久久蜜芽| 久久这里只精品国产99热8| 久久久91人妻无码精品蜜桃HD| 国产高潮流白浆视频| 中文字幕人妻无码系列第三区| 在线日韩日本国产亚洲| 亚洲无码视频图片| 日韩欧美中文字幕在线韩免费 | a级毛片一区二区免费视频| 久久频这里精品99香蕉久网址| 国产尤物jk自慰制服喷水| 在线国产毛片手机小视频| 亚洲精品国产综合99| 日韩成人在线网站| 精品国产成人高清在线| 成人91在线| 精品国产乱码久久久久久一区二区| 日韩第一页在线| 日本亚洲国产一区二区三区| 91青草视频| 永久天堂网Av| 成人国产精品一级毛片天堂| 亚洲成人网在线观看| 九色最新网址| 亚洲男人天堂2020| 欧美亚洲欧美| 国产伦精品一区二区三区视频优播 | 九九这里只有精品视频| 精品超清无码视频在线观看| 亚洲精品天堂自在久久77| 丁香五月亚洲综合在线| 久久国语对白| 亚洲综合二区| 国产成人亚洲无吗淙合青草| 亚洲一道AV无码午夜福利| 久久一本日韩精品中文字幕屁孩| 国产日韩精品欧美一区灰| 欧美在线免费| 亚洲欧美日韩中文字幕一区二区三区 | 午夜天堂视频| 一边摸一边做爽的视频17国产| 精品视频在线一区| 国产精品自在线天天看片| 在线99视频| a亚洲视频| 欧美精品影院| 国产aⅴ无码专区亚洲av综合网 | 欧美精品综合视频一区二区| 国产尤物视频网址导航| 国产原创自拍不卡第一页|