吳 永
廣東工程職業(yè)技術(shù)學院,廣東 廣州 510520
視頻監(jiān)控系統(tǒng)近年來在人們的工作和生活環(huán)境中得到了廣泛的應用。但傳統(tǒng)的基于PC機和視頻電纜的視頻監(jiān)控系統(tǒng)存在著諸如安裝攜帶不便、不能在惡劣環(huán)境下使用、需要專門鋪設大量線纜等一些缺點。隨著近年來嵌入式軟硬件技術(shù)及互聯(lián)網(wǎng)絡技術(shù)的迅猛發(fā)展,特別是DSP、PowerPC等嵌入式芯片的出現(xiàn),將嵌入式處理器和網(wǎng)絡技術(shù)應用到視頻監(jiān)控系統(tǒng)中不僅克服了上述的一些缺點,而且其強大的功能加上豐富的外設接口和高度的可編程性使得視頻監(jiān)控的硬件和軟件都更容易實現(xiàn)。
本文介紹了一種基于單顆數(shù)字媒體處理器TMS320DM643(600MHz)的嵌入式網(wǎng)絡視頻監(jiān)控系統(tǒng)設計方案,按本方案設計的系統(tǒng)體積小巧、攜帶方便,并可直接通過RJ45接口連入IP網(wǎng)絡,在遠程主機的控制下實現(xiàn)監(jiān)控視頻的實時采集與傳輸。
嵌入式網(wǎng)絡視頻監(jiān)控系統(tǒng)的硬件部分采用模塊化設計方法,包括數(shù)字媒體處理器模塊、視頻解碼模塊、音頻編解碼模塊、以太網(wǎng)接口模塊、存儲器擴展模塊。
數(shù)字媒體處理器模塊采用TMS320DM643[1],其內(nèi)部集成了三個可配置視頻端口、一個10/100MBPS的以太網(wǎng)MAC(EMAC)、一個面向音頻應用的串行口(McASP),處理器核內(nèi)還有8個并行的處理單元,采用VLIW(甚長指令集)結(jié)構(gòu),處理能力高達4800MIPS,同時TMS320DM643的指令集設計得更有利于執(zhí)行圖象處理中的各種算法。
視頻解碼模塊采用Philips公司的SAA7115。攝像機輸人的模擬視頻信號在SAA7115內(nèi)部經(jīng)過鉗位、抗混疊濾波、A/D轉(zhuǎn)換、YuV分離電路之后,轉(zhuǎn)換成視頻數(shù)據(jù)流,通過DM643的視頻口VP0輸人到壓縮核心單元中。編程時,SAA7115內(nèi)部寄存器參數(shù)的配置和狀態(tài)的讀出均可通過I2C總線來完成。
音頻編解碼模塊使用TI的高性能立體聲編解碼器TLV320AIC23(以下簡稱AIC23),主要用于實現(xiàn)音頻信號的采集和播放。由于AIC23與DM643的輸入/輸出電壓兼容,連線時可實現(xiàn)AIC23與DM643的McASP接口的無縫連接。
由于網(wǎng)絡傳輸?shù)墓逃刑攸c,音頻數(shù)據(jù)和視頻數(shù)據(jù)傳輸?shù)浇邮辗綍r不可能是均勻的,為解決音視頻數(shù)據(jù)在接收方的同步輸出問題,本系統(tǒng)利用鎖相環(huán)LL1708來實現(xiàn)音頻和視頻的同步采樣。從SAA7115輸出的27MHz時鐘,經(jīng)PLL1708處理后變?yōu)?8.433MHz,并將它作為AIC23的輸人主時鐘,如此,由于音視頻采樣信號使用同一個時鐘源,就不會出現(xiàn)音視頻采集不同步的問題。
以太網(wǎng)接口模塊采用LXT971,它支持IEEE 802.3標準,提供了MII(media independent interface)接口,可以支持MAC,而DM643內(nèi)部正好集成有MAC控制器,所以LXT971和DM643可以實現(xiàn)無縫連接。
存儲器擴展模塊主要包括兩片32MB的SDRAM和一片4MB的FLASH,DM643的EMIF接口外接兩片32MB的SDRAM,主要用于存放原始圖像數(shù)據(jù),而擴展的那片4MB的FLASH,主要用于存放應用程序,二者都映射到DM643的外部數(shù)據(jù)空間。
系統(tǒng)工作時,TMS320DM643數(shù)字媒體處理器通過以太網(wǎng)接口模塊從網(wǎng)絡獲得遠程上位機發(fā)送來的控制數(shù)據(jù),然后啟動攝像機和麥克風開始采集數(shù)據(jù),從攝像機輸入的視頻信號和從麥克風輸入的音頻信號經(jīng)A/D轉(zhuǎn)換后送入DM643中的DSP,DSP對音視頻數(shù)據(jù)流進行壓縮編碼和合流,然后通過局域網(wǎng)或因特網(wǎng)將數(shù)據(jù)傳輸給上位機,上位機收到數(shù)據(jù)后通過監(jiān)控屏幕及揚聲器回放出來,以實現(xiàn)對現(xiàn)場的視音頻監(jiān)控目的。
通過互聯(lián)網(wǎng)絡來傳輸監(jiān)控視頻,必須考慮到網(wǎng)絡實際傳輸帶寬往往會比較小,而視頻數(shù)據(jù)量卻又非常龐大的現(xiàn)狀,因此必須對視頻數(shù)據(jù)進行壓縮,怎樣壓縮呢?視頻壓縮算法的選擇是關(guān)鍵,目前,較為常用的壓縮算法有:基于電話視頻會議的壓縮標準H.263系列、M-JPEG動態(tài)圖像壓縮方式(壓縮比為10-30:1左右)、MPEG-1活動影像壓縮方式(VCD壓縮標準,壓縮比為40-100:1左右)、MPEG-2 活動影像壓縮方式(DVD壓縮標準,壓縮比為10-30:1左右)、H.264視頻壓縮算法(一種新的窄帶傳輸方法,壓縮比為100:1左右,為許多電話線/網(wǎng)絡傳輸產(chǎn)品所采用)。
以上各種壓縮算法各有優(yōu)缺點,這決定了它們分別適用于不同的應用場所,H.263適合用于可視電話及視頻會議等對圖像大小和質(zhì)量要求不是很高的應用領(lǐng)域;M-JPEG可以獲得較高圖像質(zhì)量,但實時性不強; MPEG-1壓縮后的圖像質(zhì)量不是太好、MPEG-2的壓縮比不夠。根據(jù)信道的帶寬和對圖像質(zhì)量的要求,我們在圖像質(zhì)量和碼率之間綜合考慮后,決定本系統(tǒng)采用H.264壓縮標準。
分析表明,對于同等的圖象質(zhì)量,H.264算法比H.263算法雖然碼流降低了50%,但同時H.264算法比H.263算法復雜很多,需要更強的處理能力,以及做更多的軟件優(yōu)化工作。
另外,在基于分組交換的IP網(wǎng)絡中,數(shù)據(jù)分組一般需經(jīng)過多個路由、不同的路徑才能到達目的地,因此視音頻數(shù)據(jù)分組的到達時間、到達順序、同一視音頻數(shù)據(jù)報文到達的數(shù)量都將變得無從預測,就必將造成視音頻數(shù)據(jù)流在網(wǎng)絡上傳輸?shù)牟煌絾栴}。
以下就這兩個問題分別進行討論。
整個系統(tǒng)設計的難點和重點是H.264算法的軟件實現(xiàn)。在DM643上的實現(xiàn)H.264算法大致可分為以下三個階段[2,3]:
第一階段是編寫C代碼。
在編寫C代碼過程中,充分利用Tl公司為用戶提供的功能強大的函數(shù)庫[4],來完成DCT/IDCT變換、DCT量化、自適應濾波等功能,這些函數(shù)都是經(jīng)過優(yōu)化的,完全能夠?qū)崿F(xiàn)軟件流水,效率很高。
另外再靈活運用其他一些有用的程序優(yōu)化方法,例如對定點乘法,盡可能使用short型數(shù)據(jù),將一些需要通過計算得到結(jié)果的語句或函數(shù)用查找表或常數(shù)值來直接代替,等等。
第二階段是重點優(yōu)化C代碼。
使用profiling工具對第一階段的C代碼性能進行分析,確定可能存在的低效率段,然后使用適當?shù)姆椒ㄟM行優(yōu)化,優(yōu)化方法一般有使用編譯器選項、使用內(nèi)聯(lián)函數(shù)、使用軟件流水等[5,6,8]。
本系統(tǒng)設計中,DCT、IDCT、運動估計的運算量很大,是程序優(yōu)化的重點。本系統(tǒng)通過使用“-mt”等編譯器選項來指明程序中不相關(guān)的指令,使指令并行操作,大大提高了程序的執(zhí)行效率;還通過使用-o2選項和-o3選項,對循環(huán)代碼實現(xiàn)軟件流水;在算術(shù)操作中,通過使用intrinsics只需調(diào)用SADD,一個指令周期便可得到最終結(jié)果,不需要對計算結(jié)果再做飽和(saturation)處理,效率提高了很多。
第三階段是編寫線性匯編代碼。
再次使用profiling工具檢查經(jīng)過以上優(yōu)化后的C代碼性能,如果代碼仍達不到所期望的效果,則從中抽出對性能影響很大的C代碼段,用線性匯編重新編寫這段代碼,然后使用匯編優(yōu)化器做進一步的優(yōu)化[6,7,8]。
線性匯編代碼的編寫比匯編代碼更簡單,它不需要注明所使用的寄存器、指令的并行與否、指令的延遲周期和指令使用的功能單元等,匯編優(yōu)化器[9]能根據(jù)代碼的情況來自動確定這些信息。同時,可以事先畫出指令的相關(guān)圖,根據(jù)相關(guān)圖合理分配邏輯單元,來最大限度的保證指令的并行執(zhí)行。應充分使用C64x DSP提供的包處理指令來處理數(shù)據(jù)(包處理指令可同時處理2個l6位數(shù)據(jù)和4個8位數(shù)據(jù)),例如STDW(STNDW)、LDDW (LDNDW)、AVGU4、MIN2、MAX2、SPACKU4、PACK2、D0TP2、D0TPN2 和UNPKLU4 等指令,這樣可大大減少代碼長度,提高代碼執(zhí)行效率。對于兩重循環(huán)嵌套,可將內(nèi)層循環(huán)展開為外層循環(huán)內(nèi)部的條件指令,這樣可減少由內(nèi)層循環(huán)所帶來的循環(huán)前后的prolog和epilog的開銷。
如果我們將壓縮后獲取的視音頻復合流直接利用UDP套接字進行網(wǎng)絡傳輸,那么,接收方接收到的視音頻復合流就不能攜帶RTP協(xié)議的報文信息。由于UDP協(xié)議不能保證視音頻數(shù)據(jù)報文的有序和無重復,我們無法對接收到的視音頻數(shù)據(jù)包重新排序,原來的視頻圖像將不能重建,音視頻的同步傳輸更無從談起。
為解決網(wǎng)絡傳輸時視音頻數(shù)據(jù)流不同步的問題,我們采用RTP協(xié)議來封裝視音頻流。
在使用RTP協(xié)議對視音頻復合流進行封裝時,通行的做法是——在操作系統(tǒng)中裝載RTP協(xié)議的動態(tài)鏈接庫(DLL),然后將發(fā)送端的視頻編碼器輸出的數(shù)據(jù)流進行相應的成幀算法,形成適合于RTP協(xié)議格式的視頻流封裝,遞交給RTP協(xié)議分組處理模塊,加上此協(xié)議的分組報文頭,并根據(jù)當前的采樣時鐘打上時間戳,標記順序號,并給定幀頻、分辨率、相應的壓縮格式等參數(shù),經(jīng)多目地址傳輸來完成。
在接收端,當實時視頻數(shù)據(jù)到達后,去掉該層協(xié)議的頭標,根據(jù)套接字應用的端口號向上層遞交。RTP分組模塊處理遞交的數(shù)據(jù)分組,根據(jù)其會話標識和序列號進行鑒別,將有效的分組傳遞給相應的解碼緩沖區(qū),實現(xiàn)視頻流內(nèi)部的同步。
設計調(diào)試好硬件系統(tǒng),并在DM643上對整個系統(tǒng)軟件進行設計及優(yōu)化后,系統(tǒng)性能有了較大的提高。為測試與驗證本系統(tǒng),使用VC++語言編寫了一套運行于Windows XP操作系統(tǒng)的簡易遠程視頻監(jiān)控軟件,安裝在連入網(wǎng)絡的PC機中,將設計制作好的本系統(tǒng)連入網(wǎng)絡的另一端點。PC機中的遠程視頻監(jiān)控軟件通過網(wǎng)絡對本系統(tǒng)發(fā)出視頻采集請求,系統(tǒng)收到請求后按要求將采集到的視音頻實時傳輸?shù)絇C機上回放出來,測試表明本系統(tǒng)在網(wǎng)絡速度為30Kbps以上時能實時傳輸CIF圖像,并可實現(xiàn)視音頻同步,說明系統(tǒng)能夠滿足實際需要。
本文描述了基于單顆DM643芯片實現(xiàn)嵌入式網(wǎng)絡視頻監(jiān)控系統(tǒng)的整體設計方案,并通過自行設計的遠程視頻監(jiān)控程序?qū)ζ溥M行了測試,性能良好。隨著視頻編解碼技術(shù)的發(fā)展和嵌入式Internet技術(shù)的成熟,以低成本嵌入式網(wǎng)絡視頻監(jiān)控裝置為核心的大規(guī)模分布式網(wǎng)絡遠程視頻監(jiān)控系統(tǒng)必將廣泛應用于各領(lǐng)域之中。
[1]Texas Instruments.TMS320DM643 Video-ImagingFiexed-Point Signal Processor, ,2003,5.
[2]ITU-T Rec.H.264/ISO/IEC 1496-10.Advanced VideoCoding.Final Committee Draft,Document JVT-E022,2002,12(9).
[3]任麗香,馬淑芬,李方慧.TMS320C6000系列DSPs的原理與應用[M].北京:電子工業(yè)出版社,2000.
[4]TI公司.TMS320C62x Image-Video Processing LibraryProgrammer’s Reference[M],2000.
[5]Texas Instruments.TMS320C6x Optimizing C CompilerUser’s Guide, 1998.
[6]Texas Instruments.TMS320C6x Programmer’s Guide,1998.
[7]Texas Instruments.TMS320C6x Assembly LanguageTools User’s Guide, 1998.
[8]]Texas Instruments.TMS320C6x C Source Debugger,1998.