《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于DM365的雙碼流視頻監(jiān)控設(shè)備的設(shè)計(jì)與實(shí)現(xiàn)
基于DM365的雙碼流視頻監(jiān)控設(shè)備的設(shè)計(jì)與實(shí)現(xiàn)
2015年微型機(jī)與應(yīng)用第10期
潘力策1,孟利民2
(1.浙江工業(yè)大學(xué) 信息工程學(xué)院,浙江 杭州 310023; 2.浙江省通信網(wǎng)技術(shù)應(yīng)用研究重點(diǎn)實(shí)驗(yàn)室,浙江 杭州 310023)
摘要: 針對(duì)視頻監(jiān)控終端設(shè)備中的視頻實(shí)時(shí)顯示、編碼數(shù)據(jù)本地存儲(chǔ)備份等雙重需求,設(shè)計(jì)了一種基于DM365視頻處理芯片、H.264壓縮技術(shù)、嵌入式Linux操作系統(tǒng)的雙碼流視頻監(jiān)控終端設(shè)備。給出了系統(tǒng)的總體軟硬件結(jié)構(gòu),重點(diǎn)闡述了視頻處理子系統(tǒng)模塊(包括視頻前端采集模塊和視頻后端顯示模塊)以及視頻編碼模塊。測(cè)試結(jié)果表明,系統(tǒng)實(shí)時(shí)監(jiān)測(cè)性能良好,本地存儲(chǔ)的編碼數(shù)據(jù)清晰穩(wěn)定,具有很強(qiáng)的實(shí)用性和廣闊的發(fā)展前景。
關(guān)鍵詞: 視頻監(jiān)控 DM365 ARM 芯片
Abstract:
Key words :

  摘  要: 針對(duì)視頻監(jiān)控終端設(shè)備中的視頻實(shí)時(shí)顯示、編碼數(shù)據(jù)本地存儲(chǔ)備份等雙重需求,設(shè)計(jì)了一種基于DM365視頻處理芯片、H.264壓縮技術(shù)、嵌入式Linux操作系統(tǒng)的雙碼流視頻監(jiān)控終端設(shè)備。給出了系統(tǒng)的總體軟硬件結(jié)構(gòu),重點(diǎn)闡述了視頻處理子系統(tǒng)模塊(包括視頻前端采集模塊和視頻后端顯示模塊)以及視頻編碼模塊。測(cè)試結(jié)果表明,系統(tǒng)實(shí)時(shí)監(jiān)測(cè)性能良好,本地存儲(chǔ)的編碼數(shù)據(jù)清晰穩(wěn)定,具有很強(qiáng)的實(shí)用性和廣闊的發(fā)展前景。

  關(guān)鍵詞: 視頻監(jiān)控;DM365;ARM

0 引言

  隨著網(wǎng)絡(luò)技術(shù)、視頻編解碼技術(shù)、信息處理技術(shù)在安防領(lǐng)域中的應(yīng)用日趨成熟,視頻監(jiān)控系統(tǒng)的發(fā)展也從最初的模擬視頻監(jiān)控系統(tǒng)發(fā)展到了如今的網(wǎng)絡(luò)數(shù)字視頻監(jiān)控系統(tǒng)[1]。以往視頻圖像處理算法主要由DSP處理,但是隨著算法復(fù)雜度的增加及視頻分辨率的提高,傳統(tǒng)DSP逐漸無法勝任這方面的工作[2]。為此,需要新的處理器架構(gòu)來提高視頻算法的并行性與帶寬。當(dāng)前TI公司已經(jīng)推出相關(guān)的異構(gòu)處理器與多核DSP;英偉達(dá)公司推出了最新的SoC芯片Tegra4,其內(nèi)含4個(gè)Cortex.A15和72個(gè)GeForceGPU[3-4]。最新的SoC制程也已經(jīng)達(dá)到28 nm,幾乎取得了相當(dāng)于PC的頻率帶寬。由于視頻的數(shù)據(jù)量大,占用帶寬多,這不僅對(duì)網(wǎng)絡(luò)是個(gè)不小的負(fù)擔(dān),對(duì)圖像本地存儲(chǔ)備份的能力也有很大的影響,所以就需要采取一種高效的壓縮算法對(duì)視頻進(jìn)行編碼,以降低其所占用的網(wǎng)絡(luò)帶寬和存儲(chǔ)空間[5]。近年來,H.264、MJPGE等算法的研究使得網(wǎng)絡(luò)較實(shí)時(shí)傳輸和本地存儲(chǔ)備份成為了可能。最新的H.265壓縮算法的出現(xiàn)大大提高了視頻傳輸效率,但這需要相應(yīng)的處理器能力的提高[6]。

  本文所設(shè)計(jì)的多路數(shù)據(jù)流視頻監(jiān)控終端設(shè)備基于TI公司的TMS320DM365芯片,支持雙路不同分辨率大小的數(shù)據(jù)流,分別實(shí)現(xiàn)兩種不同的功能,第一路數(shù)據(jù)流實(shí)現(xiàn)D1(720×576)分辨率大小H.264編碼數(shù)據(jù)的本地存儲(chǔ)備份,第二路數(shù)據(jù)流實(shí)現(xiàn)QVGA(320×240)分辨率大小原始數(shù)據(jù)的實(shí)時(shí)顯示。

1 系統(tǒng)總體設(shè)計(jì)框架

  本文采用視頻采集芯片+多核芯片(ARM核+DSP核或編解碼協(xié)處理器組成)的方案來設(shè)計(jì)視頻監(jiān)控終端設(shè)備,這種方案將視頻采集芯片獲得的數(shù)據(jù)接入到多核芯片中,再交由DSP核或編解碼協(xié)處理器完成視頻數(shù)據(jù)的編碼,最終通過ARM核對(duì)系統(tǒng)進(jìn)行控制,完成數(shù)據(jù)流的正確傳遞和其他必要操作。這種方案成本較低,性價(jià)比較高。

  硬件框架方面,選用了TI公司的基于DaVinci技術(shù)的TMS320DM365芯片作為處理器芯片,以及同為TI公司出品的TVP5151芯片作為視頻前端采集芯片來搭建嵌入式視頻監(jiān)控設(shè)備。

  系統(tǒng)硬件框架設(shè)計(jì)圖如圖1所示。

001.jpg

  軟件框架方面,采用多線程配合工作的方案進(jìn)行設(shè)計(jì),多線程編程相較于多進(jìn)程編程,它不僅在資源利用率方面有較大的優(yōu)勢(shì),同時(shí)也大大降低了程序員編程的難度,加快了項(xiàng)目軟件的開發(fā)。

2 視頻處理子系統(tǒng)模塊

  TMS320DM365芯片上提供了一個(gè)視頻處理子系統(tǒng)(VPSS),用于視頻數(shù)據(jù)的實(shí)時(shí)采集、播放等功能。VPSS內(nèi)部集成了一個(gè)視頻處理前端模塊(VPFE)和一個(gè)視頻處理后端模塊(VPBE),VPFE用來控制接入的外部圖像采集設(shè)備,如圖像傳感器、視頻解碼器等,本系統(tǒng)接入了TVP5151視頻解碼器。VPBE則用來控制接入的顯示設(shè)備,如標(biāo)清的模擬電視顯示器、數(shù)字的LCD液晶顯示屏等,本系統(tǒng)接入了RGB565LCD液晶顯示屏。此外,VPSS還集成了內(nèi)存緩存區(qū)和DMA(直接內(nèi)存訪問)控制器,用來保證有效地利用DDR2或mDDR,控制突發(fā)帶寬。

  2.1 驅(qū)動(dòng)配置

  2.1.1 VPFE采集驅(qū)動(dòng)的配置

  VPFE采集驅(qū)動(dòng)通過標(biāo)準(zhǔn)的V4L2接口將底層硬件的功能暴露給了上層應(yīng)用程序,這樣,應(yīng)用程序就能通過控制V4L2設(shè)備(/dev/Video0)來獲取由連接到VPFE的視頻解碼器(如TVP5151)采集到的一幀原始數(shù)據(jù)。VPFE硬件模塊支持以下兩種不同的數(shù)據(jù)管道[7],如圖2所示。

002.jpg

  (1)輸入接口通過IPIPE接入到SDRAM,所有型號(hào)的SoC都支持這個(gè)通道。

 ?。?)輸入接口通過IPIPE接入到Previewer,并最終從Resizer輸出兩種不同分辨率大小的視頻數(shù)據(jù)到SDRAM,從RSZ-A輸出的是原始分辨率大小的圖像,用于后續(xù)的數(shù)據(jù)編碼,從RSZ-B輸出的是分辨率較小的圖像,用于后續(xù)的實(shí)時(shí)顯示。

  為了實(shí)現(xiàn)前文所述的視頻實(shí)時(shí)顯示功能,通過VPFE驅(qū)動(dòng)將VPFE硬件模塊配置成第二種數(shù)據(jù)流通道的采集方式。

  2.1.2 VPBE顯示驅(qū)動(dòng)的配置

  VPBE顯示驅(qū)動(dòng)由更底層的V4L2(Video for Linux 2)驅(qū)動(dòng)和FB(Frame Buffer)驅(qū)動(dòng)構(gòu)成,當(dāng)內(nèi)核加載V4L2驅(qū)動(dòng)時(shí),它會(huì)向內(nèi)核注冊(cè)/dev/Video2和/dev/Video3兩個(gè)設(shè)備,而當(dāng)內(nèi)核加載FB驅(qū)動(dòng)時(shí),它會(huì)向內(nèi)核注冊(cè)/dev/fb/0、/dev/fb/1、/dev/fb/2、/dev/fb/3 4個(gè)設(shè)備,注冊(cè)的設(shè)備都對(duì)應(yīng)了它們所能控制的圖層[8],對(duì)應(yīng)關(guān)系如表1所示。

007.jpg

  可以通過設(shè)置系統(tǒng)啟動(dòng)參數(shù)來決定VPBE驅(qū)動(dòng)被加載時(shí)會(huì)向內(nèi)核注冊(cè)的設(shè)備,以此決定開啟的圖層以及圖層開啟后受何種設(shè)備控制[9],例如,注冊(cè)/dev/fb/3設(shè)備,VID1圖層將被開啟且只受/dev/fb/3設(shè)備控制。在實(shí)際方案中,啟動(dòng)參數(shù)指定VPBE向內(nèi)核注冊(cè)/dev/Video2設(shè)備和/dev/fb/0設(shè)備,分別開啟了VID0圖層和OSD0圖層,其中VID0圖層受/dev/Video2設(shè)備控制,用于顯示采集到的視頻數(shù)據(jù),而OSD0圖層受/dev/fb/0設(shè)備控制,用于顯示QT等UI交互界面,其余圖層默認(rèn)保持關(guān)閉狀態(tài)。

  VID0圖層的數(shù)據(jù)和VID1圖層的數(shù)據(jù)會(huì)依次經(jīng)過VPBE硬件模塊中的OSD部件和ENC部件,最終由DAC模塊輸出模擬信號(hào)或者由LCD控制器輸出數(shù)字信號(hào)[10],數(shù)據(jù)管道如圖3所示。

003.jpg

  在前文中已提到,LCD液晶屏被接入到了VPBE模塊,所以VPBE驅(qū)動(dòng)將VPBE硬件模塊配置成視頻數(shù)據(jù)由VID0圖層輸入,并最終通過LCD控制器輸出到LCD液晶屏上。

  2.2 應(yīng)用程序設(shè)計(jì)

  在VPFE驅(qū)動(dòng)將VPFE硬件模塊配置為雙分辨率數(shù)據(jù)流的前提下,將應(yīng)用層程序設(shè)計(jì)為一路數(shù)據(jù)流用于視頻實(shí)時(shí)顯示,另外一路數(shù)據(jù)流用于視頻編碼,Capture線程數(shù)據(jù)流程圖如圖4所示。

004.jpg

 ?。?)第一路數(shù)據(jù)流

  hCapture-->hCapBuf-->hDstBuf(D1:720x576)-->hOutFifo,用于視頻編碼存儲(chǔ)。

 ?。?)第二路數(shù)據(jù)流

  hCapture-->hCapBuf-->hRzbBuf-->hDisBuf(QVGA:320x240)-->hDisplay,用于視頻實(shí)時(shí)顯示。

  hCapBuf緩存用于存放VPFE采集驅(qū)動(dòng)采集到的原始視頻數(shù)據(jù),存放著736×576大小的數(shù)據(jù),hDstBuf緩存中的數(shù)據(jù)用于供后續(xù)視頻編碼存儲(chǔ),存放著D1:720×576大小的數(shù)據(jù),hDisBuf緩存中的數(shù)據(jù)用于供后續(xù)視頻顯示回放,存放著QVGA:320×240大小的數(shù)據(jù),hRzbBuf緩存中的數(shù)據(jù)用于供后續(xù)視頻編碼上傳。

3 視頻編碼模塊

  原始視頻數(shù)據(jù)的編解碼需要用到達(dá)芬奇軟件框架的Codec Engine(編解碼引擎)技術(shù)來實(shí)現(xiàn)。Codec Engine定義了一組VISA(Video Image Speech Audio)APIs接口供應(yīng)用程序調(diào)用。DM365的高清視頻協(xié)處理器(HDVICP)封裝了相應(yīng)的編解碼算法,ARM處理器中的應(yīng)用程序可以通過VISA-APIs接口對(duì)編解碼算法進(jìn)行調(diào)用。ARM處理器負(fù)責(zé)執(zhí)行應(yīng)用程序,視頻協(xié)處理器負(fù)責(zé)執(zhí)行編解碼算法,這樣不僅大大降低了ARM處理器的CPU占用率,還能提高編解碼的效率。本文采用H.264編碼標(biāo)準(zhǔn)進(jìn)行編碼,需要調(diào)用相應(yīng)的H.264算法實(shí)例。

  3.1視頻編碼接口

  H.264是一種高性能的視頻編解碼標(biāo)準(zhǔn),繼承了H.263和MPEG1/2/4視頻編碼器的優(yōu)點(diǎn)。H.264標(biāo)準(zhǔn)中定義了兩個(gè)層次:視頻編碼層(VCL)和網(wǎng)絡(luò)抽象層(NAL),VCL負(fù)責(zé)高效的數(shù)字視頻數(shù)據(jù)壓縮,NAL提供適當(dāng)?shù)慕涌趯?duì)數(shù)據(jù)進(jìn)行打包和傳送。

  為了得到H.264格式的視頻流,需要配置alg_server.cfg文件來實(shí)現(xiàn)對(duì)已經(jīng)編譯算法的調(diào)用,文件配置如下:

  var H264ENC=xdc.useModule(′ti.sdo.codecs.h264enc.ce.H264ENC′);//指定調(diào)用的算法

  var myEngine=Engine.create("alg_server",[{name:"h264enc",mod:H264ENC,local:true,groupId:1}]);

  //創(chuàng)建引擎實(shí)例

  在應(yīng)用程序中能調(diào)用的接口函數(shù)有:VIDENC1_create、VIDENC1_control、VIDENC1_process和VIDENC1_delete,它們分別負(fù)責(zé)編碼實(shí)例的創(chuàng)建、控制、運(yùn)行以及最終的清除。

  3.2 應(yīng)用程序設(shè)計(jì)

  所設(shè)計(jì)的Video線程基于Capture線程,Capture線程向Video線程輸入一路D1:720×576大小的數(shù)據(jù)流,Video線程如圖5所示。

005.jpg

4 測(cè)試結(jié)果

  測(cè)試環(huán)境搭建方法如下:

 ?。?)LCD液晶屏連接在以TMS320DM365為主芯片的產(chǎn)品板上,TMS320DM365主芯片的CPU頻率為216 MHz,板載Flash為1 GB,板載DDR2為128 MB。

 ?。?)本地備份的視頻數(shù)據(jù)文件存儲(chǔ)在SD卡中,文件格式為H.264,文件大小為6.2 MB,總時(shí)長(zhǎng)為1 min,使用VLC播放器播放。

  經(jīng)測(cè)試,視頻監(jiān)控終端設(shè)備能實(shí)時(shí)地顯示攝像頭采集到的視頻畫面,顯示畫面大小為QVGA(320×240),如圖7(a)所示。SD卡里存儲(chǔ)備份的視頻數(shù)據(jù)也成功紀(jì)錄了一段時(shí)間內(nèi)的視頻畫面,分辨率大小為D1(720×       576),如圖7(b)所示。

006.jpg

5 結(jié)論

  本文設(shè)計(jì)實(shí)現(xiàn)了基于TMS320DM365硬件平臺(tái)的視頻監(jiān)控終端設(shè)備,該視頻監(jiān)控終端設(shè)備不僅具有數(shù)據(jù)采集功能,而且還集成了本地存儲(chǔ)備份以及原始數(shù)據(jù)實(shí)時(shí)顯示等核心功能。采用TMS320DM365的ARM+DSP雙核模式,提高了編碼效率以及傳輸效率,通過測(cè)試發(fā)現(xiàn),實(shí)時(shí)圖像清晰流暢,ARM資源占有率低,可擴(kuò)展性大,滿足系統(tǒng)實(shí)時(shí)性和穩(wěn)定性的要求。

  參考文獻(xiàn)

  [1] 張偉.視頻監(jiān)控技術(shù)的發(fā)展歷程和方向[J].中國交通信息產(chǎn)業(yè),2007(6):139-142.

  [2] 鄭磊.基于嵌入式Linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)研究[D].武漢:武漢理工大學(xué),2011.

  [3] 劉繼超.基于DM355的嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計(jì)[D].青島:青島科技大學(xué),2012.

  [4] 望重.嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[D].鎮(zhèn)江:江蘇大學(xué),2010.

  [5] 胡攀.基于Linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計(jì)[D].武漢:武漢理工大學(xué),2012.

  [6] 項(xiàng)昌晨,王磊.基于TMS320DM365的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].機(jī)電一體化,2011,17(12):58-63.

  [7] Texas Instruments. Davinci Linux VPFE Capture Driver[EB/OL].[2014-12-15].http://www.ti.com/lit/an/sprs566a/sprs566a.pdf.

  [8] Texas Instruments, Video Processing Back End(VPBE)[EB/OL].[2014-12-15].http://www.ti.com.cn/cn/lit/ug/sprufg9c/sprufg9c.pdf.

  [9] Texas Instruments, LSP 2.10 DaVinci Linux VPBE Frame Buffer Driver[EB/OL]. [2014-12-15]. http://www.ti.com/lit/ug/spruek9/spruek9.pdf.

  [10] Texas Instruments, LSP 2.10 DaVinci Linux V4L2 Display Driver[EB/OL]. [2014-12-15]. http://www.ti.com/lit/ug/spruel3/spruel3.pdf.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。