潘力策,孟利民(.浙江工業(yè)大學(xué) 信息工程學(xué)院,浙江 杭州 3003;.浙江省通信網(wǎng)技術(shù)應(yīng)用研究重點實驗室,浙江 杭州 3003)
基于DM365的雙碼流視頻監(jiān)控設(shè)備的設(shè)計與實現(xiàn)*
潘力策1,孟利民2
(1.浙江工業(yè)大學(xué)信息工程學(xué)院,浙江杭州310023;2.浙江省通信網(wǎng)技術(shù)應(yīng)用研究重點實驗室,浙江杭州310023)
針對視頻監(jiān)控終端設(shè)備中的視頻實時顯示、編碼數(shù)據(jù)本地存儲備份等雙重需求,設(shè)計了一種基于DM365視頻處理芯片、H.264壓縮技術(shù)、嵌入式Linux操作系統(tǒng)的雙碼流視頻監(jiān)控終端設(shè)備。給出了系統(tǒng)的總體軟硬件結(jié)構(gòu),重點闡述了視頻處理子系統(tǒng)模塊(包括視頻前端采集模塊和視頻后端顯示模塊)以及視頻編碼模塊。測試結(jié)果表明,系統(tǒng)實時監(jiān)測性能良好,本地存儲的編碼數(shù)據(jù)清晰穩(wěn)定,具有很強的實用性和廣闊的發(fā)展前景。
視頻監(jiān)控;DM365;ARM
隨著網(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個Cortex.A15和72個GeForceGPU[3-4]。最新的SoC制程也已經(jīng)達(dá)到28nm,幾乎取得了相當(dāng)于PC的頻率帶寬。由于視頻的數(shù)據(jù)量大,占用帶寬多,這不僅對網(wǎng)絡(luò)是個不小的負(fù)擔(dān),對圖像本地存儲備份的能力也有很大的影響,所以就需要采取一種高效的壓縮算法對視頻進(jìn)行編碼,以降低其所占用的網(wǎng)絡(luò)帶寬和存儲空間[5]。近年來,H.264、MJPGE等算法的研究使得網(wǎng)絡(luò)較實時傳輸和本地存儲備份成為了可能。最新的H.265壓縮算法的出現(xiàn)大大提高了視頻傳輸效率,但這需要相應(yīng)的處理器能力的提高[6]。
本文所設(shè)計的多路數(shù)據(jù)流視頻監(jiān)控終端設(shè)備基于TI公司的TMS320DM365芯片,支持雙路不同分辨率大小的數(shù)據(jù)流,分別實現(xiàn)兩種不同的功能,第一路數(shù)據(jù)流實現(xiàn)D1(720×576)分辨率大小H.264編碼數(shù)據(jù)的本地存儲備份,第二路數(shù)據(jù)流實現(xiàn)QVGA(320×240)分辨率大小原始數(shù)據(jù)的實時顯示。
本文采用視頻采集芯片+多核芯片(ARM核+DSP核或編解碼協(xié)處理器組成)的方案來設(shè)計視頻監(jiān)控終端設(shè)備,這種方案將視頻采集芯片獲得的數(shù)據(jù)接入到多核芯片中,再交由DSP核或編解碼協(xié)處理器完成視頻數(shù)據(jù)的編碼,最終通過ARM核對系統(tǒng)進(jìn)行控制,完成數(shù)據(jù)流的正確傳遞和其他必要操作。這種方案成本較低,性價比較高。
硬件框架方面,選用了TI公司的基于DaVinci技術(shù)的TMS320DM365芯片作為處理器芯片,以及同為TI公司出品的TVP5151芯片作為視頻前端采集芯片來搭建嵌入式視頻監(jiān)控設(shè)備。
系統(tǒng)硬件框架設(shè)計圖如圖1所示。
圖1 硬件框架設(shè)計圖
軟件框架方面,采用多線程配合工作的方案進(jìn)行設(shè)計,多線程編程相較于多進(jìn)程編程,它不僅在資源利用率方面有較大的優(yōu)勢,同時也大大降低了程序員編程的難度,加快了項目軟件的開發(fā)。
TMS320DM365芯片上提供了一個視頻處理子系統(tǒng)(VPSS),用于視頻數(shù)據(jù)的實時采集、播放等功能。VPSS內(nèi)部集成了一個視頻處理前端模塊(VPFE)和一個視頻處理后端模塊(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ū)動配置
2.1.1VPFE采集驅(qū)動的配置
VPFE采集驅(qū)動通過標(biāo)準(zhǔn)的V4L2接口將底層硬件的功能暴露給了上層應(yīng)用程序,這樣,應(yīng)用程序就能通過控制V4L2設(shè)備(/dev/Video0)來獲取由連接到VPFE的視頻解碼器(如TVP5151)采集到的一幀原始數(shù)據(jù)。VPFE硬件模塊支持以下兩種不同的數(shù)據(jù)管道[7],如圖2所示。
圖2 VPFE硬件模塊數(shù)據(jù)管道圖
(1)輸入接口通過IPIPE接入到SDRAM,所有型號的SoC都支持這個通道。
(2)輸入接口通過IPIPE接入到Previewer,并最終從Resizer輸出兩種不同分辨率大小的視頻數(shù)據(jù)到SDRAM,從RSZ-A輸出的是原始分辨率大小的圖像,用于后續(xù)的數(shù)據(jù)編碼,從RSZ-B輸出的是分辨率較小的圖像,用于后續(xù)的實時顯示。
為了實現(xiàn)前文所述的視頻實時顯示功能,通過VPFE驅(qū)動將VPFE硬件模塊配置成第二種數(shù)據(jù)流通道的采集方式。
2.1.2VPBE顯示驅(qū)動的配置
VPBE顯示驅(qū)動由更底層的V4L2(Video for Linux 2)驅(qū)動和FB(Frame Buffer)驅(qū)動構(gòu)成,當(dāng)內(nèi)核加載V4L2驅(qū)動時,它會向內(nèi)核注冊/dev/Video2和/dev/Video3兩個設(shè)備,而當(dāng)內(nèi)核加載FB驅(qū)動時,它會向內(nèi)核注冊/dev/fb/0、/dev/fb/1、/dev/fb/2、/dev/fb/34個設(shè)備,注冊的設(shè)備都對應(yīng)了它們所能控制的圖層[8],對應(yīng)關(guān)系如表1所示。
表1 圖層與設(shè)備對應(yīng)關(guān)系表
可以通過設(shè)置系統(tǒng)啟動參數(shù)來決定VPBE驅(qū)動被加載時會向內(nèi)核注冊的設(shè)備,以此決定開啟的圖層以及圖層開啟后受何種設(shè)備控制[9],例如,注冊/dev/fb/3設(shè)備,VID1圖層將被開啟且只受/dev/fb/3設(shè)備控制。在實際方案中,啟動參數(shù)指定VPBE向內(nèi)核注冊/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ù)會依次經(jīng)過VPBE硬件模塊中的OSD部件和ENC部件,最終由DAC模塊輸出模擬信號或者由LCD控制器輸出數(shù)字信號[10],數(shù)據(jù)管道如圖3所示。
圖3 VPBE硬件模塊數(shù)據(jù)管道圖
在前文中已提到,LCD液晶屏被接入到了VPBE模塊,所以VPBE驅(qū)動將VPBE硬件模塊配置成視頻數(shù)據(jù)由VID0圖層輸入,并最終通過LCD控制器輸出到LCD液晶屏上。
2.2應(yīng)用程序設(shè)計
在VPFE驅(qū)動將VPFE硬件模塊配置為雙分辨率數(shù)據(jù)流的前提下,將應(yīng)用層程序設(shè)計為一路數(shù)據(jù)流用于視頻實時顯示,另外一路數(shù)據(jù)流用于視頻編碼,Capture線程數(shù)據(jù)流程圖如圖4所示。
圖4 Capture線程數(shù)據(jù)流圖
(1)第一路數(shù)據(jù)流
hCapture-->hCapBuf-->hDstBuf(D1:720x576)-->hOutFifo,用于視頻編碼存儲。
(2)第二路數(shù)據(jù)流
hCapture-->hCapBuf-->hRzbBuf-->hDisBuf(QVGA:320x240)-->hDisplay,用于視頻實時顯示。
hCapBuf緩存用于存放VPFE采集驅(qū)動采集到的原始視頻數(shù)據(jù),存放著736×576大小的數(shù)據(jù),hDstBuf緩存中的數(shù)據(jù)用于供后續(xù)視頻編碼存儲,存放著D1:720×576大小的數(shù)據(jù),hDisBuf緩存中的數(shù)據(jù)用于供后續(xù)視頻顯示回放,存放著QVGA:320×240大小的數(shù)據(jù),hRzbBuf緩存中的數(shù)據(jù)用于供后續(xù)視頻編碼上傳。
原始視頻數(shù)據(jù)的編解碼需要用到達(dá)芬奇軟件框架的Codec Engine(編解碼引擎)技術(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接口對編解碼算法進(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算法實例。
3.1視頻編碼接口
H.264是一種高性能的視頻編解碼標(biāo)準(zhǔn),繼承了H.263和MPEG1/2/4視頻編碼器的優(yōu)點。H.264標(biāo)準(zhǔn)中定義了兩個層次:視頻編碼層(VCL)和網(wǎng)絡(luò)抽象層(NAL),VCL負(fù)責(zé)高效的數(shù)字視頻數(shù)據(jù)壓縮,NAL提供適當(dāng)?shù)慕涌趯?shù)據(jù)進(jìn)行打包和傳送。
為了得到H.264格式的視頻流,需要配置alg_server.cfg文件來實現(xiàn)對已經(jīng)編譯算法的調(diào)用,文件配置如下:
在應(yīng)用程序中能調(diào)用的接口函數(shù)有:VIDENC1_cre ate、VIDENC1_control、VIDENC1_process和VIDENC1_delete,它們分別負(fù)責(zé)編碼實例的創(chuàng)建、控制、運行以及最終的清除。
3.2應(yīng)用程序設(shè)計
所設(shè)計的Video線程基于Capture線程,Capture線程向Video線程輸入一路D1:720×576大小的數(shù)據(jù)流,Video線程如圖5所示。
圖5 Video線程數(shù)據(jù)流圖
測試環(huán)境搭建方法如下:
(1)LCD液晶屏連接在以TMS320DM365為主芯片的產(chǎn)品板上,TMS320DM365主芯片的CPU頻率為216MHz,板載Flash為1GB,板載DDR2為128MB。
(2)本地備份的視頻數(shù)據(jù)文件存儲在SD卡中,文件格式為H.264,文件大小為6.2MB,總時長為1min,使用VLC播放器播放。
經(jīng)測試,視頻監(jiān)控終端設(shè)備能實時地顯示攝像頭采集到的視頻畫面,顯示畫面大小為QVGA(320×240),如圖7(a)所示。SD卡里存儲備份的視頻數(shù)據(jù)也成功紀(jì)錄了一段時間內(nèi)的視頻畫面,分辨率大小為D1(720×576),如圖7(b)所示。
圖7 測試結(jié)果圖
本文設(shè)計實現(xiàn)了基于TMS320DM365硬件平臺的視頻監(jiān)控終端設(shè)備,該視頻監(jiān)控終端設(shè)備不僅具有數(shù)據(jù)采集功能,而且還集成了本地存儲備份以及原始數(shù)據(jù)實時顯示等核心功能。采用TMS320DM365的ARM+DSP雙核模式,提高了編碼效率以及傳輸效率,通過測試發(fā)現(xiàn),實時圖像清晰流暢,ARM資源占有率低,可擴展性大,滿足系統(tǒng)實時性和穩(wě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è)計[D].青島:青島科技大學(xué),2012.
[4]望重.嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的研究與實現(xiàn)[D].鎮(zhèn)江:江蘇大學(xué),2010.
[5]胡攀.基于Linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計[D].武漢:武漢理工大學(xué),2012.
[6]項昌晨,王磊.基于TMS320DM365的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計[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.
Design and implementation of multiple streaming video monitoring device based on DM365
Pan Lice1,Meng Limin2
(1.College of Information Engineering,Zhejiang University of Technology,Hangzhou 310023,China;2.Zhejiang Provincial Key Laboratory of Communication Networks and Applications,Hangzhou 310023,China)
This paper introduces the design of a multiple streaming video monitoring device based on the video processing chip DM365,H.264 encoding technology and embedded Linux.It elaborated on the overall structure of the system hardware and software modules,especially on the video processing subsystem module(including video processing front end and video processing back end)and video encoding module.The client has real-time monitoring of the scene after receiving,and the device has real-time displaying of the captured video and backup the encoded video data.Experimental results show that the system is stable and reliable,and has a wide range of application.
video monitoring;DM365;ARM
TP37
A
1674-7720(2015)10-0041-03
2014-12-23)
潘力策(1989-),男,碩士研究生,主要研究方向:多媒體數(shù)字通信與網(wǎng)絡(luò)。
國家自然科學(xué)基金項目(61372087)
孟利民(1963-),女,博士,教授,主要研究方向:無線通信與網(wǎng)絡(luò)、智能信息系統(tǒng)、網(wǎng)絡(luò)管理、多媒體數(shù)字通信與網(wǎng)絡(luò)。