常國(guó)柱,何 維,田增山,譚宇玲
(重慶郵電大學(xué) 移動(dòng)通信技術(shù)重點(diǎn)實(shí)驗(yàn)室,重慶 400065)
視頻傳輸是一種應(yīng)用非常廣泛的系統(tǒng),它綜合利用了視頻、計(jì)算機(jī)、通信、網(wǎng)絡(luò)等多項(xiàng)技術(shù)。近年來(lái),隨著網(wǎng)絡(luò)和多媒體技術(shù)的飛速發(fā)展,視頻傳輸系統(tǒng)因其信息全面性和適時(shí)性的特點(diǎn),在各個(gè)行業(yè)得到很廣泛的應(yīng)用,并且市場(chǎng)潛力巨大。
但是由于第2代無(wú)線通信網(wǎng)絡(luò)帶寬的限制,無(wú)法實(shí)現(xiàn)實(shí)時(shí)流暢的動(dòng)態(tài)視頻傳輸效果。隨著第3代無(wú)線通信技術(shù)的發(fā)展,傳輸帶寬已經(jīng)有了很大的改善。從理論上講,CDMA20001x網(wǎng)絡(luò)可以實(shí)現(xiàn)上行最大1.8Mbit/s、下行最大3.1Mbit/s的數(shù)據(jù)業(yè)務(wù),其完全可以實(shí)現(xiàn)清晰流暢的視頻傳輸效果[1]。筆者設(shè)計(jì)時(shí)采用了第3代移動(dòng)通信模塊MC8630A,可有效地解決第2代無(wú)線通信網(wǎng)絡(luò)在視頻傳輸中帶寬不足的問(wèn)題。
本系統(tǒng)主要功能模塊分為CPU、智能電源管理、無(wú)線網(wǎng)絡(luò)通信和攝像頭等部分,系統(tǒng)結(jié)構(gòu)框圖如圖1所示。

在圖1中,CPU選用的是采用達(dá)芬奇技術(shù)的具有ARM+DSP雙核的OMAP3530芯片。DSP核負(fù)責(zé)視頻信號(hào)的處理,由其完成視頻壓縮算法,在本系統(tǒng)中采用的是H.264算法[2];ARM核完成系統(tǒng)的控制功能和整體調(diào)度。由于獨(dú)特的設(shè)計(jì)使得其具有非常明顯的優(yōu)勢(shì),DSP子系統(tǒng)中C64X+新型DSP內(nèi)核的引入極大地提升了它的運(yùn)算能力,從而提高了視頻編解碼的速度。達(dá)芬奇技術(shù)的雙核結(jié)構(gòu)中引入了ARM處理器、相應(yīng)的配套操作系統(tǒng)、驅(qū)動(dòng)程序以及軟件方面的參考結(jié)構(gòu),極大地增強(qiáng)了系統(tǒng)的控制功能。而且針對(duì)DSP與ARM的雙核結(jié)構(gòu),達(dá)芬奇技術(shù)設(shè)計(jì)了2個(gè)處理核之間通信接口的解決方案,保證2個(gè)處理器的協(xié)同工作。在保持DSP強(qiáng)大計(jì)算能力的基礎(chǔ)上,使芯片能適應(yīng)更多應(yīng)用場(chǎng)合的需要[3]。
TPS65930是TI公司設(shè)計(jì)的專(zhuān)門(mén)針對(duì)OMAP3530的電源管理芯片。CDMA20001x無(wú)線網(wǎng)絡(luò)通信模塊選用的是中興通訊開(kāi)發(fā)的MC8630A無(wú)線通信模塊。
MIC2551A芯片是USB單片收發(fā)器,對(duì)OMAP3530和CDMA20001x之間的USB信號(hào)進(jìn)行轉(zhuǎn)接,通過(guò)它給TDM330提供驅(qū)動(dòng)能力和電平轉(zhuǎn)換,而且可根據(jù)CPU忙閑狀態(tài)來(lái)操控信號(hào)傳輸速度,最大限度地提高CPU的使用效率,完成USB通信[4]。
達(dá)芬奇參考軟件框架分為應(yīng)用層、信號(hào)處理層和外設(shè)驅(qū)動(dòng)3部分,如圖2所示。

在系統(tǒng)的用戶空間可以添加自己的程序,通過(guò)Codecs Engine 的 VISA(Video,Image,Speech,Audio) API來(lái)調(diào)用DSP端的算法,通過(guò)EPSI(Easy Peripheral Software Interface)API來(lái)訪問(wèn)和操作DaVinci的外設(shè);信號(hào)處理層通常運(yùn)行在DSP上,負(fù)責(zé)信號(hào)處理、音視頻編解碼算法、Codecs Engine、DSP的實(shí)時(shí)操作系統(tǒng)DSP/BIOS和ARM通信的模塊;驅(qū)動(dòng)層是外設(shè)模塊的驅(qū)動(dòng)程序[5]。具體實(shí)現(xiàn)分以下3個(gè)步驟完成[6]:算法封裝、算法打包和算法調(diào)用。
達(dá)芬奇技術(shù)的算法封裝需要支持XDAIS(eXpressDSP Algorithm Interface Standard) 和 XDM(eXpressDSP Digital Media)。XDAIS和XDM繼承了TI DSP在單個(gè)處理器上執(zhí)行各種媒體功能的能力,通過(guò)執(zhí)行這些標(biāo)準(zhǔn)來(lái)和eXpressDSP保持一致。
XDM 標(biāo)準(zhǔn)定義了control()和 process()這 2 個(gè)API(Application Programming Interface)。control()提供了一個(gè)標(biāo)準(zhǔn)的方法,它控制算法實(shí)例,實(shí)時(shí)地從算法中接收狀態(tài)信息。process()則是進(jìn)行數(shù)據(jù)處理的API。
除了為多媒體Codecs定義標(biāo)準(zhǔn)化的API外,XDM也標(biāo)準(zhǔn)化了從應(yīng)用程序傳到這些API的基本參數(shù)。應(yīng)用程序可以通過(guò)擴(kuò)展數(shù)據(jù)結(jié)構(gòu),定義額外的參數(shù)。XDM是XDAIS的擴(kuò)展,它們一起組成了應(yīng)用程序和Codecs組件的接口。XDM把應(yīng)用程序和Codecs組件隔離開(kāi)來(lái),不必隨著Codecs的改變而改變。
本系統(tǒng)實(shí)現(xiàn)了一個(gè)視頻編碼器通用接口IVIDENC,實(shí)現(xiàn)結(jié)構(gòu)體IVIDENC_Fxns如下:
IVIDENC_Fxns VIDENC_X264={
{IALG_Fxns},
VIDENC_X264_process,
VIDENC_X264_control};
其中 VIDENC_X264_process,VIDENC_X264_control,IALG_Fxns實(shí)現(xiàn)了IALG的接口以及算法和框架的交互。
編解碼服務(wù)器(Codec Server)是一個(gè)二進(jìn)制文件,它集成了編解碼器、框架組件和一些系統(tǒng)代碼。當(dāng)Codec Server運(yùn)行在DSP上時(shí),使用DSP/BIOS作為其內(nèi)核。Codec Server同時(shí)包含了對(duì)客戶請(qǐng)求的相關(guān)DSP/BIOS線程。Codec Server可以代表實(shí)際的DSP硬件,導(dǎo)入到DSP上的鏡像文件以及正在運(yùn)行的任務(wù),其配置需要以下2個(gè)步驟:
1)通過(guò)TCF腳本配置DSP/BIOS;
2) 通過(guò) XDC(eXpress DSP Components)配置其他組件, 比如 Framework Components,DSP/BIOS Link,Codecs Engine等。
設(shè)計(jì)合理的內(nèi)存映射是系統(tǒng)運(yùn)行的關(guān)鍵。本系統(tǒng)采用的128 Mbyte DDR2存儲(chǔ)器,其由ARM端和DSP端共享使用,那么需要分配的內(nèi)存范圍為0x80000000~0x88000000,需要將存儲(chǔ)器分為L(zhǎng)inux,CMEM,DDRALGHEAP,DSPLINKMEM和RESET_VECTOR 5個(gè)部分。設(shè)計(jì)存儲(chǔ)器映射如表1所示。

表1 存儲(chǔ)器映射表
達(dá)芬奇技術(shù)應(yīng)用程序開(kāi)發(fā)一般是借助Codec Engine來(lái)調(diào)用算法包。Codecs Engine是一組用來(lái)配置運(yùn)行XDAIS算法的API,它提供VISA接口,用來(lái)與符合XDM的XDAIS算法互動(dòng)。不管算法是運(yùn)行在ARM端,還是DSP端, 也不管操作系統(tǒng)是 Linux,VxWorks,DSP/BIOS或者WinCE,對(duì)算法的接口調(diào)用都是一致的。通過(guò)配置*.cfg可以決定自己的Codecs是運(yùn)行在ARM端還是DSP端。
應(yīng)用程序的代碼(或者其使用的中間件)被稱(chēng)作Codecs Engine API,其包括核心引擎API和VISA API。
本系統(tǒng)使用的算法是符合XDM標(biāo)準(zhǔn)的視頻壓縮算法,引擎名在*.cfg文件中指定為videnc_x264。下面描述如何在應(yīng)用程序中調(diào)用算法:
1)調(diào)用核心引擎API中的初始化模塊CERuntime_init()來(lái)初始化引擎。
2)調(diào)用核心引擎API中的Engine_open()來(lái)打開(kāi)編解碼引擎。
3)調(diào)用VISA API中的VIDENC_create(Engine_Handle e,String name,VIDENC_Params*params)來(lái)創(chuàng)建一個(gè)編碼算法實(shí)例。
4) 調(diào)用 VISA API中的 VIDENC_control(VIDENC_Handle handle, VIDENC_Cmd id, VIDENC_Dynamic-Params*params, VIDENC_Status*status)來(lái)控制算法實(shí)例。
5)調(diào)用 VISA API中的 VIDENC_process(VIDENC_Handle handle,XDM_BufDesc*inBufs,XDM_BufDesc*out-Bufs,VIDENC_InArgs*inArgs,VIDENC_OutArgs*out Args)來(lái)處理算法。
在CDMA20001x模塊準(zhǔn)備網(wǎng)絡(luò)通信之前,需要通過(guò)AT+GSN指令獲得該CDMA20001x模塊的ESN,從CDMA20001x模塊的回碼中提取出8位的ESN字符串,轉(zhuǎn)為長(zhǎng)整型值后將其保存,作為該模塊的標(biāo)識(shí)。然后通過(guò)執(zhí)行 system(“pppd call unicom_ttyUSBS1&”)來(lái)進(jìn)行 CDMA20001x模塊的撥號(hào)連接。最后進(jìn)行PPP撥號(hào),以便程序控制該模塊的網(wǎng)絡(luò)通信[7]。
交叉編譯環(huán)境的搭建主要分為以下4個(gè)步驟:
1)安裝目標(biāo)板的Linux支持包軟件。
2)安裝包含實(shí)例、演示程序、Codecs Engine組件、DSP/BIOS Link、XDAIS、XDM頭文件、本地電源管理模塊、Framwork Componeents和 CMEME(contiguous memory allocator)的DVSDK軟件。
3)安裝arm-2009q1-203-arm-none-linux-gnueabii686-pc-linux-gnu.tar.bz2工具鏈。
4)建立NFS。盡管NAND Flash包含文件系統(tǒng),但是在開(kāi)發(fā)過(guò)程中,為了方便開(kāi)發(fā)和調(diào)試,要在主機(jī)和目標(biāo)系統(tǒng)之間建立NFS。
完成之后,對(duì)U-Boot、Linux內(nèi)核、DVSDK軟件進(jìn)行編譯,最后編譯應(yīng)用軟件并復(fù)制文件到目標(biāo)板上運(yùn)行。
經(jīng)過(guò)測(cè)試,性能指標(biāo)如表2所示。從表2中能看出在采用CDMA20001x進(jìn)行視頻傳輸時(shí)速度高于GSM傳輸,可以克服第2代無(wú)線通信在視頻傳輸中帶寬不足的問(wèn)題,而且傳輸?shù)恼_性和系統(tǒng)延時(shí)等性能指標(biāo)也有了明顯的改善。

表2 視頻傳輸效果對(duì)比
筆者設(shè)計(jì)實(shí)現(xiàn)的視頻傳輸系統(tǒng)充分利用了第3代移動(dòng)通信系統(tǒng)帶寬寬、傳輸快的特點(diǎn)克服了帶寬不足的問(wèn)題。通過(guò)實(shí)測(cè),本系統(tǒng)可以提供流暢清晰的視頻傳輸效果,隨著第3代移動(dòng)通信網(wǎng)絡(luò)進(jìn)一步的完善和優(yōu)化,無(wú)線視頻傳輸系統(tǒng)將會(huì)有更大的發(fā)展。
[1]楊大成.CDMA20001x移動(dòng)通信系統(tǒng)[M].北京:機(jī)械工業(yè)出版社,2003.
[2]畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)——H.264/AVC[M].北京:人民郵電出版社,2005.
[3]彭啟琮.達(dá)芬奇技術(shù)——數(shù)字圖像/視頻信號(hào)處理新平臺(tái)[M].北京:電子工業(yè)出版社,2008.
[4]OMAP35X applications processor technical reference manual[EB/OL].[2010-05-24].http://focus.ti.com/docs/prod/folders/print/omap 3530.html.
[5]TALLA D,GOBTON J.Using davinci technology for digital video devices[EB/OL].[2010-05-24].http://www.inf.pucrs.br/~calazans/graduate/SESD/Seminarios/Using%20DaVinci%20Technology%20for%20Digital%20Video%20Devices.pdf.
[6]成嘉,張文雄,李善勁.基于達(dá)芬奇技術(shù)的H.264視頻編碼器的實(shí)現(xiàn)[J]. 電視技術(shù),2007,31(12):34-36.
[7]中興通訊股份有限公司.MC8630A模塊用戶硬件設(shè)計(jì)手冊(cè)V1.0[EB/OL].[2010-05-24].http://www.szsiso.com/UploadFiles/2010426117535 36.pdf.