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