基于TI達(dá)芬奇技術(shù)的高速網(wǎng)絡(luò)攝像機(jī)設(shè)計(jì)方案
本系統(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模塊則主要通過兩線接口完成對(duì)物理層芯片的配置,工作狀態(tài)檢測(cè)等工作。
串口模塊采用TI公司的MAX322ICPW,主要用來負(fù)責(zé)開發(fā)板與計(jì)算機(jī)之間的通信。通過超級(jí)終端,完成Linux內(nèi)核的下載以及相關(guān)參數(shù)的設(shè)置,完成系統(tǒng)的開發(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通過I2C與之通信,實(shí)現(xiàn)各路輸出電源電壓的控制,為內(nèi)核存儲(chǔ)器和I/O接口提供1.3,1.8,3.3 V的工作電壓;也可通過5 V穩(wěn)壓器直流供電,通過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模塊,從而可以通過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由于沒有為實(shí)時(shí)服務(wù)提供資源預(yù)留功能,所以不能保證QoS(服務(wù)質(zhì)量)。RTCP作為一種控制協(xié)議,通過擴(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)的改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,他們能以有效地反饋和量小的開銷使傳輸效率最佳化,RTCP利用主要的兩種控制包SR和RR反饋的信息如數(shù)據(jù)包丟失比,數(shù)據(jù)包丟失率,吞吐量和吞吐率,數(shù)據(jù)包到達(dá)時(shí)延抖動(dòng)和往返傳播時(shí)延等來調(diào)節(jié)實(shí)時(shí)傳輸,并調(diào)整系統(tǒng)的打包格式,發(fā)包速率來保證流暢地傳輸數(shù)據(jù)和清晰的播放視頻,因此特別適合傳送網(wǎng)上的實(shí)時(shí)數(shù)據(jù)。
JRTPLIB作為一個(gè)RTP協(xié)議的庫(kù),用來開發(fā)多媒體的應(yīng)用十分方便。通過JRTPLIB庫(kù)發(fā)送或接收RTP數(shù)據(jù),而不用考慮SSRC的沖突、調(diào)度,連RTCP的數(shù)據(jù)也不需要用戶來發(fā)送。用戶只需要使用相應(yīng)的類來發(fā)送和接收媒體數(shù)據(jù)。下面介紹RTP相關(guān)代碼的具體實(shí)現(xiàn)。
在使用JRTPLIB傳輸多媒體數(shù)據(jù)之前,首先應(yīng)該創(chuàng)建一個(gè)RTPSession類的一個(gè)對(duì)象來標(biāo)識(shí)此次會(huì)話。然后通過RTPSession實(shí)例的create()方法來對(duì)其進(jìn)行初始化操作。在create()時(shí),需要兩個(gè)參數(shù)sessparams和transparams,分別為RTPSessionParams和RTPUDPv4Trans mission Params的實(shí)例。在create()成功以后,需要設(shè)置目標(biāo)地址、凈荷類型、時(shí)間戳增量等信息。在RTP會(huì)話建立起來以后,我們就可以進(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)行組裝過程的。
5 結(jié)束語(yǔ)
實(shí)現(xiàn)了基于達(dá)芬奇技術(shù)TMS320DM365的高速網(wǎng)絡(luò)攝像機(jī)系統(tǒng)。該系統(tǒng)采用了最新的
評(píng)論