多媒體技術(shù)和網(wǎng)絡(luò)與移動(dòng)通信的飛速發(fā)展激發(fā)了人們進(jìn)行視頻信息交流的需求。隨著視頻監(jiān)控系統(tǒng)逐步向數(shù)字化發(fā)展.開(kāi)發(fā)新一代基于計(jì)算機(jī)網(wǎng)絡(luò)以及多媒體壓縮算法的視頻監(jiān)控系統(tǒng)成為行業(yè)的主流方向。然而隨著視頻應(yīng)用的迅速增加,開(kāi)發(fā)者往往需要花費(fèi)很多時(shí)間來(lái)熟悉各種多媒體的標(biāo)準(zhǔn),最終只能通過(guò)編寫(xiě)與改進(jìn)代碼來(lái)進(jìn)行開(kāi)發(fā)與改變。隨著美國(guó)TI公司推出達(dá)芬奇(DaVinci)平臺(tái)后,這一切都在發(fā)生改變。
1 達(dá)芬奇技術(shù)的主要特點(diǎn)
達(dá)芬奇平臺(tái)是典型的基于共享存儲(chǔ)的嵌入式多處理(ARM,DSP,VICP,視頻前端和后端等)環(huán)境,支持的關(guān)鍵技術(shù)是片內(nèi)實(shí)現(xiàn)了多通道的交換中心資源(Switch Central Resources,SCR)?;谄瑑?nèi)SCR,達(dá)芬奇平臺(tái)在片內(nèi)多處理器之間形成了典型的C/S架構(gòu):計(jì)算能力強(qiáng)大的DSP可以作為服務(wù)器提供算法的實(shí)時(shí)計(jì)算服務(wù);帶有JAVA處理能力的ARM9實(shí)現(xiàn)網(wǎng)絡(luò),硬盤(pán)音視頻I/O等用戶界面。美國(guó)TI公司在達(dá)芬奇平臺(tái)上專(zhuān)門(mén)為音視頻編解碼(Codec)多媒體應(yīng)用精心設(shè)計(jì)了系統(tǒng)框架,提供了豐富的系統(tǒng)程序接口SPI,應(yīng)用程序接口API以及視頻,圖像,話音和音頻千余種流媒體算法組件。他們與操作系統(tǒng),中間件構(gòu)成了一個(gè)應(yīng)用系統(tǒng)的大部分內(nèi)容,應(yīng)用系統(tǒng)開(kāi)發(fā)團(tuán)隊(duì)只需要將他們封裝成運(yùn)行包,就能得到高可用性和高可靠性的產(chǎn)品。
達(dá)芬奇平臺(tái)的最大特點(diǎn)就是基于DSP與ARM的SOC芯片,和與之相關(guān)的相關(guān)軟件,如圖1所示。
對(duì)達(dá)芬奇平臺(tái),硬件上給與雙核架構(gòu)強(qiáng)有力的支持,在DSP端用DPS/BIOS來(lái)支持音/視頻算法的運(yùn)行,在ARM端用MontaVistaLinux(MV)來(lái)支持其對(duì)外設(shè)的管理。對(duì)于ARM與DSP之間的數(shù)據(jù)交叉,則用Codec Engine和Codec Server來(lái)加以管理。達(dá)芬奇平臺(tái)的先進(jìn)性,對(duì)高端音/視頻系統(tǒng)來(lái)說(shuō),無(wú)疑是開(kāi)發(fā)平臺(tái)的最好選擇。
2 TMS320DM365介紹
TI公司的TMS320DM365是一款面向多媒體技術(shù)應(yīng)用的高性能芯片。TM320DM365功能框圖如圖2所示。
內(nèi)核方面TMS320DM365集成ARM926EJ-S.H.264協(xié)處理器(HDVICP),MPEG4/JPEG協(xié)處理器(MJCP),能以1080p格式與10幀/s的速度提供H.264編解碼功能,和以1080p格式與24幀/s的速度提供MPEG4編解碼功能,以及以720p格式與30幀/s的速度提供H.264或MPEG4編解碼功能。存儲(chǔ)方面擴(kuò)展存儲(chǔ)器接口EMIFs包括1個(gè)16位256 M地址空間的DDR2和mDDR,以及1個(gè)16/8位的AEMIF,可擴(kuò)展的類(lèi)型有8/16位NAND Flash,16Mb NOR Flash,SRAM,16位OneNAND等。其他外圍擴(kuò)展控制器還包括16位HPI(Host-Port Interface),2個(gè)MMC(Multimedia Card)/SD(Secure Digital)/SDIO接口,1個(gè)16位的WDT(Watch DogTimer),5個(gè)SPI(Serial Port Interface)接口其中每個(gè)具有兩個(gè)片選,1個(gè)主/從I2C(Inter-Integrated Circuit)總線控制器,1個(gè)支持2.0USB OTG接口控制器等。
TMS320DM365集成的ARM926EJ-S處理器包括32 kBRAM、16 kB ROM(用于非AEMIF啟動(dòng)模式下的ARMbootloader)、16 kB指令緩存、8 kB數(shù)據(jù)緩存、CP15及MMU等。其中CP15用來(lái)對(duì)指令、數(shù)據(jù)緩存、MMU以及其他ARM子系統(tǒng)進(jìn)行配置及控制。MMU使用統(tǒng)一的TLB來(lái)對(duì)頁(yè)表中存儲(chǔ)的信息進(jìn)行緩存,并為類(lèi)似Linux、WindowsCE、ultron以及ThreadX等操作系統(tǒng)提供虛擬內(nèi)存。該處理器的寫(xiě)緩沖數(shù)據(jù)容量高達(dá)17 kB,使其可以大幅提高內(nèi)核的性能。
TMS320DM365中的視頻處理子系統(tǒng)(VPSS)由兩個(gè)接口,分別用于視頻捕獲的視頻前段(VPFE)輸入接口和用于圖像顯示的視頻后端(VPBE)輸出接口。圖3為視頻處理子系統(tǒng)系統(tǒng)框圖。
VPFE模塊主要用于捕獲視頻信號(hào),也可以直接從前端輸入已有的視頻信號(hào)。VPFE輸入接口有1個(gè)CCD控制器(CCDC)、1個(gè)預(yù)處理器、柱狀模塊、自動(dòng)曝光/白平衡/聚焦模塊(H3A)和寄存器組成。CCDC可以與視頻解碼器、CMOS傳感器或電荷耦合裝置連接;預(yù)處理器是一個(gè)實(shí)時(shí)的圖像處理器,它把來(lái)自CMOS或CCD的原始圖像從RGB轉(zhuǎn)變?yōu)閅UV422的編碼;柱狀模塊和H3A模塊實(shí)現(xiàn)基于原始圖像信息的硬件操作。
VPBE輸出接口由1個(gè)OSD引擎和1個(gè)視頻編碼器組成。OSD引擎能夠顯示兩組獨(dú)立的視頻窗口或兩組獨(dú)立的OSD窗口,還可以以2個(gè)視頻窗口、1個(gè)OSD窗口和一個(gè)屬性窗口的形式顯示。OSD用于在視頻圖像上疊加音量,圖標(biāo)等位圖或圖像信息。視頻編碼模塊提供數(shù)字輸出和模擬輸出。數(shù)字輸出支持24bitRGB888格式、8/16bit BT.656以及具有獨(dú)立的水平和垂直同步功能的CCIT.601輸出;模擬輸出支持4路10bit DAC,均工作于54 MHz,支持復(fù)合NTSC/PAL、S端子和分量視頻。
3 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)硬件結(jié)構(gòu)如圖4所示,本系統(tǒng)選擇以TMS320DM365為嵌入式處理器,外圍電路包括有音頻、視頻信號(hào)采集電路,以太網(wǎng)絡(luò)電路,電源接口,JTFAG,UART,NAND Flash,SD卡,DDR2,USB2.0 OTG以及I2C。
網(wǎng)絡(luò)攝像機(jī)系統(tǒng)的信息處理流程主要分為圖像的獲取、圖像的處理傳輸以及圖像的顯示3部分。本系統(tǒng)中,前端攝像頭負(fù)責(zé)圖像的捕捉,將獲取的未經(jīng)壓縮處理的圖像信號(hào)傳輸至電路板中通過(guò)TMS320DM365芯片進(jìn)行壓縮處理以及SD卡的相應(yīng)存儲(chǔ),再由以太網(wǎng)接口或其他接口將處理過(guò)圖像進(jìn)行傳輸,在遠(yuǎn)端監(jiān)視器上將圖像進(jìn)行顯示。
本系統(tǒng)的視頻采集模塊采用TVP5146。傳統(tǒng)NTSC/PAL攝像頭的輸出信號(hào)格式為模擬信號(hào),由于TMS320DM365的視頻輸入信號(hào)是通過(guò)VPFE的CCDC以ITU-R BT.601/BT.656格式進(jìn)行輸入的,所以首先需要通過(guò)視頻前段濾波放大器OPA361對(duì)采集到的模擬信號(hào)進(jìn)行放大,經(jīng)過(guò)視頻解碼芯片TVPS146將模擬信號(hào)進(jìn)行圖像的抗混疊濾波預(yù)處理、模擬數(shù)字化轉(zhuǎn)換及亮度/色度、水平/垂直同步信號(hào)的分離,實(shí)現(xiàn)模擬視頻信號(hào)轉(zhuǎn)換為數(shù)字并行信號(hào)BT.656碼流格式,隨后通過(guò)2個(gè)12位2選1的FET多路復(fù)用器對(duì)4路視頻信號(hào)選擇1路作為輸入從而完成VPFE的視頻輸入工作。 TVP5146是一種高性能單片數(shù)字視頻解碼器,它可將所有常見(jiàn)的基帶模擬視頻信號(hào),例如NTSC,PAL,SECAM混合信號(hào)數(shù)字化并解碼為數(shù)字視頻信號(hào)。該解碼器還包括了具有模擬預(yù)處理功能的4路10位30MSPS的模數(shù)轉(zhuǎn)換器。高達(dá)10組的視頻輸入終端可以用來(lái)配置作為RGB,YPbPr,CVBS分量信號(hào)或者S端子視頻輸入。
網(wǎng)絡(luò)控制模塊主要包括EMAC模塊和MDIO模塊,原理圖如圖5所示。
本系統(tǒng)采用TI公司出品的TSB43EA42作為以太網(wǎng)收發(fā)器。TSB43EA42支持10 MB/100 MB基帶傳輸,提供與MAC層相接的MII接口。它與DM3 65通信的主要引腳有:發(fā)送、接收數(shù)據(jù)線、時(shí)鐘、使能信號(hào)、錯(cuò)誤指示、管理數(shù)據(jù)接口、控制/指示引腳等。EMAC控制模塊內(nèi)部集成了8 kB的RAM,主要功能使存放緩沖描述符和以太網(wǎng)數(shù)據(jù)包。MDIO模塊則主要通過(guò)兩線接口完成對(duì)物理層芯片的配置,工作狀態(tài)檢測(cè)等工作。
串口模塊采用TI公司的MAX322ICPW,主要用來(lái)負(fù)責(zé)開(kāi)發(fā)板與計(jì)算機(jī)之間的通信。通過(guò)超級(jí)終端,完成Linux內(nèi)核的下載以及相關(guān)參數(shù)的設(shè)置,完成系統(tǒng)的開(kāi)發(fā)以及調(diào)試。存儲(chǔ)模塊包括了2個(gè)擴(kuò)展存儲(chǔ)接口EMIF和2個(gè)MMC/SD卡接口。前者包括DDR控制器和異步擴(kuò)展存儲(chǔ)接口AEMIF分別用于擴(kuò)展連接對(duì)DDR存儲(chǔ)器和Flash存儲(chǔ)器;后者實(shí)現(xiàn)了2個(gè)SD卡存儲(chǔ)器的擴(kuò)展連接。
電源模塊采用了TI公司的TPS65023作為電源管理芯片。該芯片包括3個(gè)DC/DC轉(zhuǎn)換器以及2個(gè)200mA線性穩(wěn)壓器LDO。每路LDO由TMS320DM3 65通過(guò)I2C與之通信,實(shí)現(xiàn)各路輸出電源電壓的控制,為內(nèi)核存儲(chǔ)器和I/O接口提供1.3,1.8,3.3 V的工作電壓;也可通過(guò)5 V穩(wěn)壓器直流供電,通過(guò)DC/DC轉(zhuǎn)換器提供1.3,1.8,3.3 V供電。
4 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)的視頻采集模塊負(fù)責(zé)從攝像頭中讀取視頻流數(shù)據(jù),讀出的圖像數(shù)據(jù)交由壓縮模塊處理。攝像頭驅(qū)動(dòng)程序加載完成后為了進(jìn)行視頻采集必須加入Video4Linux模塊,從而可以通過(guò)Video4Linux模塊提供的編程接口從攝像頭設(shè)備中獲取圖像幀。基于V4L的視頻采集流程圖如圖6所示。
本系統(tǒng)采用RTP實(shí)時(shí)傳輸協(xié)議以及RTCP實(shí)時(shí)傳輸控制協(xié)議作為視頻傳輸?shù)膮f(xié)議。RTP在多點(diǎn)傳送或單點(diǎn)傳送的網(wǎng)絡(luò)服務(wù)上,提供端對(duì)端的網(wǎng)絡(luò)傳輸功能,適合應(yīng)用程序傳輸實(shí)時(shí)數(shù)據(jù),如:音頻、視頻或者仿真數(shù)據(jù)。RTP由于沒(méi)有為實(shí)時(shí)服務(wù)提供資源預(yù)留功能,所以不能保證QoS(服務(wù)質(zhì)量)。RTCP作為一種控制協(xié)議,通過(guò)擴(kuò)展可以升級(jí)為大型的多點(diǎn)傳送網(wǎng)絡(luò),并提供最小限度的控制和鑒別功能。在RTP會(huì)話期間,各參與者周期性的傳送RTCP包,RTCP包中含有已發(fā)送的數(shù)據(jù)包的數(shù)據(jù)、丟失的數(shù)據(jù)包的數(shù)量等統(tǒng)計(jì)資料,因此服務(wù)器可以利用這些信息動(dòng)態(tài)的改變傳輸速率,甚至改變有效載荷類(lèi)型。RTP和RTCP配合使用,他們能以有效地反饋和量小的開(kāi)銷(xiāo)使傳輸效率最佳化,RTCP利用主要的兩種控制包SR和RR反饋的信息如數(shù)據(jù)包丟失比,數(shù)據(jù)包丟失率,吞吐量和吞吐率,數(shù)據(jù)包到達(dá)時(shí)延抖動(dòng)和往返傳播時(shí)延等來(lái)調(diào)節(jié)實(shí)時(shí)傳輸,并調(diào)整系統(tǒng)的打包格式,發(fā)包速率來(lái)保證流暢地傳輸數(shù)據(jù)和清晰的播放視頻,因此特別適合傳送網(wǎng)上的實(shí)時(shí)數(shù)據(jù)。
JRTPLIB作為一個(gè)RTP協(xié)議的庫(kù),用來(lái)開(kāi)發(fā)多媒體的應(yīng)用十分方便。通過(guò)JRTPLIB庫(kù)發(fā)送或接收RTP數(shù)據(jù),而不用考慮SSRC的沖突、調(diào)度,連RTCP的數(shù)據(jù)也不需要用戶來(lái)發(fā)送。用戶只需要使用相應(yīng)的類(lèi)來(lái)發(fā)送和接收媒體數(shù)據(jù)。下面介紹RTP相關(guān)代碼的具體實(shí)現(xiàn)。
在使用JRTPLIB傳輸多媒體數(shù)據(jù)之前,首先應(yīng)該創(chuàng)建一個(gè)RTPSession類(lèi)的一個(gè)對(duì)象來(lái)標(biāo)識(shí)此次會(huì)話。然后通過(guò)RTPSession實(shí)例的create()方法來(lái)對(duì)其進(jìn)行初始化操作。在create()時(shí),需要兩個(gè)參數(shù)sessparams和transparams,分別為RTPSessionParams和RTPUDPv4Trans mission Params的實(shí)例。在create()成功以后,需要設(shè)置目標(biāo)地址、凈荷類(lèi)型、時(shí)間戳增量等信息。在RTP會(huì)話建立起來(lái)以后,我們就可以進(jìn)行媒體數(shù)據(jù)的傳輸。傳輸凈荷數(shù)據(jù)的方法很簡(jiǎn)單,只需要調(diào)用RTPSession實(shí)例的SendPacker()方法就可以了。同時(shí)為了適應(yīng)在網(wǎng)上的傳輸,還需對(duì)凈荷數(shù)據(jù)進(jìn)行分割。為了方便的使用,我們需進(jìn)一步的封裝。對(duì)于RTP分組的接收部分,由于給出的是拆分了的數(shù)據(jù)幀,我們需要組合成完整的數(shù)據(jù)幀。這里需要注意的是由于本攝像機(jī)采用的H.264解碼算法,所以分流式接收方式以及RTP分組接收方式兩種模式,對(duì)于流式傳輸,有的組合成完整的數(shù)據(jù)幀的步驟放在了H.264的NAL層。但對(duì)有些音頻和JPEG等應(yīng)用,還是需要進(jìn)行組裝過(guò)程的。
5 結(jié)束語(yǔ)
提出一種基于TMS320DM365的高速網(wǎng)絡(luò)攝像機(jī)系統(tǒng)設(shè)計(jì)。網(wǎng)絡(luò)攝像機(jī)接入局域網(wǎng)后,在局域網(wǎng)內(nèi)部的PC機(jī)上通過(guò)IE輸入網(wǎng)絡(luò)攝像機(jī)的IP地址,通過(guò)第三方軟件便可以觀看到攝像機(jī)捕捉到的圖像以及網(wǎng)絡(luò)攝像機(jī)的相關(guān)數(shù)據(jù)流量信息。當(dāng)獲得圖像質(zhì)量要求較高時(shí),相應(yīng)的圖像數(shù)據(jù)量也會(huì)增高,反之減小。在640X480的分辨率下,測(cè)得數(shù)據(jù)流量約為960 kb/s,可以滿足對(duì)監(jiān)控視頻流暢性的要求。
本文首先介紹了視頻監(jiān)控系統(tǒng)的發(fā)展趨勢(shì)以及嵌入式處理器TMS320DM365的特點(diǎn),之后通過(guò)對(duì)該系統(tǒng)的硬件設(shè)計(jì)以及軟件設(shè)計(jì)的詳細(xì)分析,實(shí)現(xiàn)了基于達(dá)芬奇技術(shù)TMS320DM365的高速網(wǎng)絡(luò)攝像機(jī)系統(tǒng)。該系統(tǒng)采用了最新的技術(shù),降低了產(chǎn)品的成本,具有很強(qiáng)的實(shí)用性,是一種比較理想的網(wǎng)絡(luò)攝像機(jī)解決方案,可廣泛應(yīng)用于視頻監(jiān)控系統(tǒng)。