李昊然,谷源濤
(清華大學(xué) 電子工程系,北京100084)
視頻會議系統(tǒng)因其便捷、高效、經(jīng)濟(jì)、安全等特點(diǎn),在政府、軍事、商貿(mào)、醫(yī)療、教育等部門有著廣泛的應(yīng)用和需求。隨著通信技術(shù)和計算機(jī)技術(shù)的不斷發(fā)展,實現(xiàn)高集成度、低成本的嵌入式視頻會議系統(tǒng)方案已成為可能[1]。
在基于TMS320DM8168達(dá)芬奇多核處理器的嵌入式視頻會議媒體服務(wù)器的語音編解碼器解決方案中,視頻流的編解碼處理可以使用芯片內(nèi)部的專用高清視頻協(xié)處理器(HVICP2)高效完成[2]。而語音流的編解碼處理需要在DSP中自行設(shè)計編解碼處理算法完成。此外,還需要提供一種支持ARM端遠(yuǎn)程控制并調(diào)用DSP端算法的解決方案。
本文討論G.722編解碼器在DM8168上的C674x DSP核的實現(xiàn)和優(yōu)化策略,并將實現(xiàn)的G.722編解碼算法封裝為標(biāo)準(zhǔn)的xDM模塊。此外,本文還介紹一種ARM端調(diào)用DSP執(zhí)行該算法的方案:利用達(dá)芬奇技術(shù)的特性,通過遠(yuǎn)程處理器執(zhí)行(RPE)機(jī)制,在ARM端成功調(diào)用DSP上的編解碼模塊。實驗和測試結(jié)果表明,該算法和集成方案可以滿足視頻會議媒體服務(wù)器中的語音編解碼處理的功能需求。
本設(shè)計中,嵌入式視頻會議媒體服務(wù)器主芯片選用德州儀器公司新近推出的達(dá)芬奇系列多媒體處理芯片TMS320DM8168。該芯片上集成了1個1.2 GHz的ARM Cortex A8、1個 1 GHz的浮定點(diǎn)兼容的 C674x DSP、3個高清視頻圖像協(xié)處理器 (HDVICP2)以及大量的外設(shè)單元。其中片上集成的3個HDVICP2處理器可以進(jìn)行3路獨(dú)立的1 080 p、60 f/s的H.264編碼或解碼,或者更多路低分辨率、低幀速率的編碼或解碼。DSP則用來做定制算法的開發(fā)。在嵌入式視頻會議媒體服務(wù)器的系統(tǒng)設(shè)計中采用ARM+HVICP2+DSP的異質(zhì)多核架構(gòu),既能夠保持系統(tǒng)構(gòu)建的靈活性,又能提供強(qiáng)大的處理能力。
嵌入式視頻會議媒體服務(wù)器的主要功能是:從會議預(yù)先商定的多個網(wǎng)絡(luò)端口獲取來自不同會議終端的視頻流,并將遵循H.264編碼標(biāo)準(zhǔn)的視頻流解碼后進(jìn)行混合拼接,將拼接結(jié)果重新編碼后通過指定網(wǎng)絡(luò)端口分別發(fā)至各會議終端。語音流的處理類似,媒體服務(wù)器將來自各終端的G.722語音流解碼后,完成混音疊加,再將不同的混音結(jié)果按照G.722標(biāo)準(zhǔn)編碼發(fā)送至各與會終端。
本系統(tǒng)的處理框圖如圖1所示。以太網(wǎng)上解包獲得的多路H.264視頻流的編解碼處理全交由片上的HVICP2處理器來完成。ARM端負(fù)責(zé)系統(tǒng)高層信息流控制和各通道解碼后YUV視頻流的混合拼接,以及語音流的混音疊加功能。本文將著重介紹DSP端的G.722編解碼算法實現(xiàn)、優(yōu)化,以及在ARM端的調(diào)用框架。
圖1 視頻會議媒體服務(wù)器處理框圖
G.722編碼器框圖如圖 2所示,G.722編碼器核心部分由正交鏡像濾波器QMF(Quadrature Mirror Filter)和2個結(jié)構(gòu)相似的子帶自適應(yīng)脈沖調(diào)制編碼器(Subband ADPCM)組成[3]。其中,編碼器正交鏡像濾波器由數(shù)字濾波器實現(xiàn),將0~8 kHz的輸入語音信號xin分成高(4 kHz~8 kHz)和低(0~4 kHz)2個采樣率為8 kHz的子帶信號xH(n)和xL(n):
其中:
式(3)、(4)中的h(i)表示正交鏡像濾波器系數(shù)。2個子帶信號xH(n)和xL(n)分別經(jīng)過各自的子帶自適應(yīng)脈沖調(diào)制編碼器后,經(jīng)合路生成最終的G.722碼流I。
圖 2 G.722編碼器框圖
圖 3所示為 G.722解碼器框圖[3],由于解碼器的構(gòu)成與編碼器的構(gòu)成有較強(qiáng)的對稱性,在此不再贅述。
圖 3 G.722解碼器框圖
在本設(shè)計中,系統(tǒng)同時存在多路語音輸入,需要實例化多個G.722解碼模塊。為在保證實時性的同時節(jié)省計算資源,有必要研究提升算法性能的方法。由于G.722算法是在DM8168內(nèi)部集成的C674x DSP內(nèi)核上實現(xiàn),所以可以通過改進(jìn)算法的數(shù)據(jù)結(jié)構(gòu)和DSP操作順序,充分利用C674x內(nèi)核的并行性和按字處理的機(jī)制,提高算法執(zhí)行效率。
G.722編碼器和解碼器的正交鏡像濾波器具有一定的對稱性,結(jié)合C674x DSP的特點(diǎn),可以對正交鏡像濾波器進(jìn)行改進(jìn)。
圖4 G.722編碼正交鏡像濾波器優(yōu)化結(jié)構(gòu)
如圖4所示,以編碼端為例,編碼正交鏡像濾波器執(zhí)行子帶采樣和濾波,需要按照式(1)~式(4)對輸入xin進(jìn)行濾波處理,生成xL和xH,即兩個子帶自適應(yīng)脈沖調(diào)制編碼器的輸入。系統(tǒng)輸入的xin為16 bit寬度的有符號整型變量,在內(nèi)存空間中連續(xù)存儲,可以直接使用DSP 32 bit內(nèi)存訪問指令,一次載入兩個16 bit數(shù)據(jù)(圖4中I)。同時注意到在系統(tǒng)中,奇數(shù)序號的移位寄存器單元(x[2k+1])僅影響奇數(shù)部分(圖4左半部分)濾波器的輸出xodd,偶數(shù)移位寄存器單元僅影響偶數(shù)部分(圖4右半部分)濾波器輸出xeven,移位寄存器工作時也可以按照32 bit數(shù)直接處理(圖4中II)。此外,在進(jìn)行濾波的乘累加運(yùn)算時,若將兩個相鄰的16 bit奇數(shù)寄存器(如:x[23]和x[21])數(shù)據(jù)和兩個相鄰的濾波器系數(shù)(如:h[0]和h[1])數(shù)據(jù)分組后,分別以 32 bit形式存儲,則可運(yùn)用 C674x DSP提供的半字乘加運(yùn)算DOTP2,用一個指令完成兩次乘運(yùn)算和一個加運(yùn)算(圖4中III、IV)。使用圖4的結(jié)構(gòu)可以減少DSP在進(jìn)行編碼正交鏡像濾波時的所需的指令數(shù)。同樣,改進(jìn)手段也適用于解碼部分的正交鏡像濾波器。
表1列出了幾種不同優(yōu)化情況下,編解碼器核心處理函數(shù)處理長度為10 ms的單幀語音數(shù)據(jù)時,C674x DSP上的執(zhí)行指令數(shù)對比。
表1 不同優(yōu)化條件下的算法核心函數(shù)運(yùn)行指令數(shù)
從運(yùn)行指令數(shù)可以看出,結(jié)合-o2編譯選項和本文提出的代碼優(yōu)化方案后可以大幅度縮減算法執(zhí)行所需的周期,提高算法性能。
出于系統(tǒng)開發(fā)和集成的考慮,在達(dá)芬奇平臺上進(jìn)行DSP算法開發(fā)時需要遵循一定的標(biāo)準(zhǔn)規(guī)范,即TI提出的DSP算法標(biāo)準(zhǔn)xDAIS。xDAIS標(biāo)準(zhǔn)是一個龐大的體系,TI在此基礎(chǔ)上進(jìn)行擴(kuò)展,提供一個輕量級的算法標(biāo)準(zhǔn)框架xDM(xDAIS for Digital Media)。使用xDM標(biāo)準(zhǔn)可以較快速地將一個開發(fā)者自定義的算法實體集成至達(dá)芬奇系統(tǒng)。
本設(shè)計中,按照xDMiUniversal接口標(biāo)準(zhǔn),通過修改數(shù)據(jù)結(jié)構(gòu)和上層處理調(diào)用接口,將G.722語音編解碼算法代碼分別封裝為G722ENC和G722DEC兩個xDM算法包。
圖5 遠(yuǎn)程處理器執(zhí)行框架RPE
在達(dá)芬奇處理器的軟件結(jié)構(gòu)中,ARM負(fù)責(zé)運(yùn)行嵌入式Linux操作系統(tǒng),主控系統(tǒng)信流,調(diào)度資源并分配任務(wù)。在如上以ARM為主核的機(jī)制下,為使ARM能夠調(diào)度DSP執(zhí)行特定的算法操作,需要一種跨內(nèi)核的算法調(diào)度機(jī)制?;赥I提供的Codec Engine(CE)方案是實現(xiàn)該跨核調(diào)度機(jī)制的一種方法[4]。然而,在本視頻會議系統(tǒng)中,由于多路視頻處理的需要,底層選取的多通道處理框架 McFw(Multichannel Framework)與 Codec Engine并不兼容。因此,本設(shè)計方案選取了遠(yuǎn)程處理器執(zhí)行框架RPE(Remote Processor Execution)來實現(xiàn)ARM對DSP的跨核調(diào)度功能。
如圖5所示,虛線框內(nèi)是RPE框架。RPE客戶端可以通過xDM解編函數(shù)將RPE操作接口執(zhí)行的操作傳輸?shù)较㈥犃?;DSP端的RPE根服務(wù)器和RPE實例服務(wù)器將檢查消息隊列并控制xDM算法服務(wù)器,創(chuàng)建或調(diào)用某個特定的xDM算法實例。所以ARM調(diào)用DSP執(zhí)行算法的實質(zhì)是:ARM端通過本地調(diào)用RPE操作接口,RPE通過底層的消息隊列機(jī)制傳輸操作消息,由xDM解編函數(shù)完成地址轉(zhuǎn)換和參數(shù)傳遞,控制DSP端RPE服務(wù)器框架加載并執(zhí)行指定的xDM算法實例。
實際系統(tǒng)中需要在ARM端完成對G.722編解碼器的調(diào)用,同時統(tǒng)計RPE框架和DSP語音數(shù)據(jù)處理的實際性能,以確保系統(tǒng)對語音處理的實時性。測試中選取的語音測試向量單幀緩存長度為10 ms,對應(yīng)的編碼器和解碼器輸入數(shù)據(jù)緩存長度分別為320 B和80 B。ARM端通過RPE機(jī)制分別調(diào)用G.722編解碼模塊處理對應(yīng)長度緩存的10 000幀數(shù)據(jù),統(tǒng)計計算RPE調(diào)用和G.722編解碼所需的總時間以及處理單幀所需的平均時間。測試方法如圖6所示。
圖6 算法測試流程
表2展示了編碼器和解碼器在不同優(yōu)化條件下的處理單幀語音數(shù)據(jù)所需時間的統(tǒng)計結(jié)果對比。
表2 ARM端調(diào)用G.722算法所需單幀處理時間統(tǒng)計
實際測試結(jié)果表明,使用本文提出的代碼優(yōu)化方案后編解碼處理效率有明顯提高,所需計算資源減少。而且處理單幀數(shù)據(jù)所需時間遠(yuǎn)小于數(shù)據(jù)間隔(10 ms),可以滿足系統(tǒng)實時性的要求,在多線程的處理處理條件下,可以更大程度上節(jié)省DSP的計算開銷。
利用TMS320DM8168達(dá)芬奇處理器構(gòu)建嵌入式視頻會議媒體服務(wù)器時,視頻流編解碼處理可以由專用的視頻協(xié)處理器HVICP2完成,而語音G.722編解碼器則需要利用片上資源自行設(shè)計實現(xiàn)。本文介紹了G.722編碼器和解碼器在片內(nèi)DSP核上的實現(xiàn),并根據(jù)TI C674x DSP核的特點(diǎn)改進(jìn)了正交鏡像濾波的流程,提升了算法運(yùn)行效率。同時還介紹了G.722編解碼器的xDM算法封裝技術(shù),通過RPE架構(gòu),成功在ARM端應(yīng)用程序調(diào)用DSP執(zhí)行G.722編解碼。編解碼實驗和嵌入式視頻會議系統(tǒng)實際運(yùn)行測試表明,該集成框架和編解碼算法處理數(shù)據(jù)速度快,精度高,完全能夠滿足嵌入式視頻會議系統(tǒng)中多路語音實時編解碼處理功能的要求。
[1]TALLA D,GOLSTON J.Using DaVinci technology for digital video devices[J].IEEE Journals&Magazines,2007(40):53-61.
[2]Texas Instrument Incorporated.TMS320DM816x DaVinci video processors(Rev D)[R].Dallas:Texas Instruments Inc.2013.
[3]ITU.Recommendation ITU-T G.722:7 kHz audio-coding within 64 kbit/s[S].Geneva,2012.
[4]Kong Xiangping,Lin Hezhi,Huang Lianfen.Implementation of G.729 codec based on DaVinci technology[C].International Conference on Multimedia and Information Technology,Chiang Tailand,2008:11-40.
[5]陳發(fā)堂,郭麗強(qiáng).ARM+DSP嵌入式系統(tǒng) BootLoader在LTE中的實現(xiàn)[J].電子技術(shù)應(yīng)用,2013,39(5):25-28.