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