摘 要: 針對視頻監(jiān)控終端設備中的視頻實時顯示,、編碼數(shù)據(jù)本地存儲備份等雙重需求,設計了一種基于DM365視頻處理芯片,、H.264壓縮技術,、嵌入式Linux操作系統(tǒng)的雙碼流視頻監(jiān)控終端設備。給出了系統(tǒng)的總體軟硬件結構,,重點闡述了視頻處理子系統(tǒng)模塊(包括視頻前端采集模塊和視頻后端顯示模塊)以及視頻編碼模塊,。測試結果表明,系統(tǒng)實時監(jiān)測性能良好,,本地存儲的編碼數(shù)據(jù)清晰穩(wěn)定,,具有很強的實用性和廣闊的發(fā)展前景。
關鍵詞: 視頻監(jiān)控,;DM365,;ARM
0 引言
隨著網(wǎng)絡技術、視頻編解碼技術、信息處理技術在安防領域中的應用日趨成熟,,視頻監(jiān)控系統(tǒng)的發(fā)展也從最初的模擬視頻監(jiān)控系統(tǒng)發(fā)展到了如今的網(wǎng)絡數(shù)字視頻監(jiān)控系統(tǒng)[1],。以往視頻圖像處理算法主要由DSP處理,但是隨著算法復雜度的增加及視頻分辨率的提高,,傳統(tǒng)DSP逐漸無法勝任這方面的工作[2],。為此,需要新的處理器架構來提高視頻算法的并行性與帶寬,。當前TI公司已經推出相關的異構處理器與多核DSP,;英偉達公司推出了最新的SoC芯片Tegra4,其內含4個Cortex.A15和72個GeForceGPU[3-4],。最新的SoC制程也已經達到28 nm,,幾乎取得了相當于PC的頻率帶寬。由于視頻的數(shù)據(jù)量大,,占用帶寬多,,這不僅對網(wǎng)絡是個不小的負擔,對圖像本地存儲備份的能力也有很大的影響,,所以就需要采取一種高效的壓縮算法對視頻進行編碼,以降低其所占用的網(wǎng)絡帶寬和存儲空間[5],。近年來,,H.264、MJPGE等算法的研究使得網(wǎng)絡較實時傳輸和本地存儲備份成為了可能,。最新的H.265壓縮算法的出現(xiàn)大大提高了視頻傳輸效率,,但這需要相應的處理器能力的提高[6]。
本文所設計的多路數(shù)據(jù)流視頻監(jiān)控終端設備基于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ù)的實時顯示,。
1 系統(tǒng)總體設計框架
本文采用視頻采集芯片+多核芯片(ARM核+DSP核或編解碼協(xié)處理器組成)的方案來設計視頻監(jiān)控終端設備,這種方案將視頻采集芯片獲得的數(shù)據(jù)接入到多核芯片中,,再交由DSP核或編解碼協(xié)處理器完成視頻數(shù)據(jù)的編碼,,最終通過ARM核對系統(tǒng)進行控制,完成數(shù)據(jù)流的正確傳遞和其他必要操作,。這種方案成本較低,,性價比較高。
硬件框架方面,,選用了TI公司的基于DaVinci技術的TMS320DM365芯片作為處理器芯片,,以及同為TI公司出品的TVP5151芯片作為視頻前端采集芯片來搭建嵌入式視頻監(jiān)控設備。
系統(tǒng)硬件框架設計圖如圖1所示。
軟件框架方面,,采用多線程配合工作的方案進行設計,,多線程編程相較于多進程編程,它不僅在資源利用率方面有較大的優(yōu)勢,,同時也大大降低了程序員編程的難度,,加快了項目軟件的開發(fā)。
2 視頻處理子系統(tǒng)模塊
TMS320DM365芯片上提供了一個視頻處理子系統(tǒng)(VPSS),,用于視頻數(shù)據(jù)的實時采集,、播放等功能。VPSS內部集成了一個視頻處理前端模塊(VPFE)和一個視頻處理后端模塊(VPBE),,VPFE用來控制接入的外部圖像采集設備,,如圖像傳感器、視頻解碼器等,,本系統(tǒng)接入了TVP5151視頻解碼器,。VPBE則用來控制接入的顯示設備,如標清的模擬電視顯示器,、數(shù)字的LCD液晶顯示屏等,,本系統(tǒng)接入了RGB565LCD液晶顯示屏。此外,,VPSS還集成了內存緩存區(qū)和DMA(直接內存訪問)控制器,,用來保證有效地利用DDR2或mDDR,控制突發(fā)帶寬,。
2.1 驅動配置
2.1.1 VPFE采集驅動的配置
VPFE采集驅動通過標準的V4L2接口將底層硬件的功能暴露給了上層應用程序,,這樣,應用程序就能通過控制V4L2設備(/dev/Video0)來獲取由連接到VPFE的視頻解碼器(如TVP5151)采集到的一幀原始數(shù)據(jù),。VPFE硬件模塊支持以下兩種不同的數(shù)據(jù)管道[7],,如圖2所示。
?。?)輸入接口通過IPIPE接入到SDRAM,,所有型號的SoC都支持這個通道。
?。?)輸入接口通過IPIPE接入到Previewer,,并最終從Resizer輸出兩種不同分辨率大小的視頻數(shù)據(jù)到SDRAM,從RSZ-A輸出的是原始分辨率大小的圖像,,用于后續(xù)的數(shù)據(jù)編碼,,從RSZ-B輸出的是分辨率較小的圖像,用于后續(xù)的實時顯示,。
為了實現(xiàn)前文所述的視頻實時顯示功能,,通過VPFE驅動將VPFE硬件模塊配置成第二種數(shù)據(jù)流通道的采集方式,。
2.1.2 VPBE顯示驅動的配置
VPBE顯示驅動由更底層的V4L2(Video for Linux 2)驅動和FB(Frame Buffer)驅動構成,當內核加載V4L2驅動時,,它會向內核注冊/dev/Video2和/dev/Video3兩個設備,,而當內核加載FB驅動時,它會向內核注冊/dev/fb/0,、/dev/fb/1,、/dev/fb/2、/dev/fb/3 4個設備,,注冊的設備都對應了它們所能控制的圖層[8],,對應關系如表1所示。
可以通過設置系統(tǒng)啟動參數(shù)來決定VPBE驅動被加載時會向內核注冊的設備,,以此決定開啟的圖層以及圖層開啟后受何種設備控制[9],,例如,注冊/dev/fb/3設備,,VID1圖層將被開啟且只受/dev/fb/3設備控制,。在實際方案中,啟動參數(shù)指定VPBE向內核注冊/dev/Video2設備和/dev/fb/0設備,,分別開啟了VID0圖層和OSD0圖層,,其中VID0圖層受/dev/Video2設備控制,用于顯示采集到的視頻數(shù)據(jù),,而OSD0圖層受/dev/fb/0設備控制,,用于顯示QT等UI交互界面,其余圖層默認保持關閉狀態(tài),。
VID0圖層的數(shù)據(jù)和VID1圖層的數(shù)據(jù)會依次經過VPBE硬件模塊中的OSD部件和ENC部件,,最終由DAC模塊輸出模擬信號或者由LCD控制器輸出數(shù)字信號[10],,數(shù)據(jù)管道如圖3所示,。
在前文中已提到,LCD液晶屏被接入到了VPBE模塊,,所以VPBE驅動將VPBE硬件模塊配置成視頻數(shù)據(jù)由VID0圖層輸入,,并最終通過LCD控制器輸出到LCD液晶屏上。
2.2 應用程序設計
在VPFE驅動將VPFE硬件模塊配置為雙分辨率數(shù)據(jù)流的前提下,,將應用層程序設計為一路數(shù)據(jù)流用于視頻實時顯示,,另外一路數(shù)據(jù)流用于視頻編碼,Capture線程數(shù)據(jù)流程圖如圖4所示,。
?。?)第一路數(shù)據(jù)流
hCapture-->hCapBuf-->hDstBuf(D1:720x576)-->hOutFifo,用于視頻編碼存儲,。
?。?)第二路數(shù)據(jù)流
hCapture-->hCapBuf-->hRzbBuf-->hDisBuf(QVGA:320x240)-->hDisplay,,用于視頻實時顯示。
hCapBuf緩存用于存放VPFE采集驅動采集到的原始視頻數(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ù)視頻編碼上傳,。
3 視頻編碼模塊
原始視頻數(shù)據(jù)的編解碼需要用到達芬奇軟件框架的Codec Engine(編解碼引擎)技術來實現(xiàn),。Codec Engine定義了一組VISA(Video Image Speech Audio)APIs接口供應用程序調用。DM365的高清視頻協(xié)處理器(HDVICP)封裝了相應的編解碼算法,,ARM處理器中的應用程序可以通過VISA-APIs接口對編解碼算法進行調用,。ARM處理器負責執(zhí)行應用程序,視頻協(xié)處理器負責執(zhí)行編解碼算法,,這樣不僅大大降低了ARM處理器的CPU占用率,,還能提高編解碼的效率。本文采用H.264編碼標準進行編碼,,需要調用相應的H.264算法實例,。
3.1視頻編碼接口
H.264是一種高性能的視頻編解碼標準,繼承了H.263和MPEG1/2/4視頻編碼器的優(yōu)點,。H.264標準中定義了兩個層次:視頻編碼層(VCL)和網(wǎng)絡抽象層(NAL),,VCL負責高效的數(shù)字視頻數(shù)據(jù)壓縮,NAL提供適當?shù)慕涌趯?shù)據(jù)進行打包和傳送,。
為了得到H.264格式的視頻流,,需要配置alg_server.cfg文件來實現(xiàn)對已經編譯算法的調用,文件配置如下:
var H264ENC=xdc.useModule(′ti.sdo.codecs.h264enc.ce.H264ENC′),;//指定調用的算法
var myEngine=Engine.create("alg_server",,[{name:"h264enc",mod:H264ENC,,local:true,,groupId:1}]);
//創(chuàng)建引擎實例
在應用程序中能調用的接口函數(shù)有:VIDENC1_create,、VIDENC1_control,、VIDENC1_process和VIDENC1_delete,它們分別負責編碼實例的創(chuàng)建,、控制,、運行以及最終的清除。
3.2 應用程序設計
所設計的Video線程基于Capture線程,,Capture線程向Video線程輸入一路D1:720×576大小的數(shù)據(jù)流,,Video線程如圖5所示,。
4 測試結果
測試環(huán)境搭建方法如下:
(1)LCD液晶屏連接在以TMS320DM365為主芯片的產品板上,,TMS320DM365主芯片的CPU頻率為216 MHz,,板載Flash為1 GB,板載DDR2為128 MB,。
?。?)本地備份的視頻數(shù)據(jù)文件存儲在SD卡中,文件格式為H.264,,文件大小為6.2 MB,,總時長為1 min,使用VLC播放器播放,。
經測試,,視頻監(jiān)控終端設備能實時地顯示攝像頭采集到的視頻畫面,顯示畫面大小為QVGA(320×240),,如圖7(a)所示,。SD卡里存儲備份的視頻數(shù)據(jù)也成功紀錄了一段時間內的視頻畫面,分辨率大小為D1(720× 576),,如圖7(b)所示,。
5 結論
本文設計實現(xiàn)了基于TMS320DM365硬件平臺的視頻監(jiān)控終端設備,該視頻監(jiān)控終端設備不僅具有數(shù)據(jù)采集功能,,而且還集成了本地存儲備份以及原始數(shù)據(jù)實時顯示等核心功能,。采用TMS320DM365的ARM+DSP雙核模式,提高了編碼效率以及傳輸效率,,通過測試發(fā)現(xiàn),,實時圖像清晰流暢,ARM資源占有率低,,可擴展性大,,滿足系統(tǒng)實時性和穩(wěn)定性的要求。
參考文獻
[1] 張偉.視頻監(jiān)控技術的發(fā)展歷程和方向[J].中國交通信息產業(yè),,2007(6):139-142.
[2] 鄭磊.基于嵌入式Linux的網(wǎng)絡視頻監(jiān)控系統(tǒng)研究[D].武漢:武漢理工大學,,2011.
[3] 劉繼超.基于DM355的嵌入式網(wǎng)絡視頻監(jiān)控系統(tǒng)設計[D].青島:青島科技大學,,2012.
[4] 望重.嵌入式網(wǎng)絡視頻監(jiān)控系統(tǒng)的研究與實現(xiàn)[D].鎮(zhèn)江:江蘇大學,,2010.
[5] 胡攀.基于Linux的網(wǎng)絡視頻監(jiān)控系統(tǒng)設計[D].武漢:武漢理工大學,2012.
[6] 項昌晨,,王磊.基于TMS320DM365的網(wǎng)絡視頻監(jiān)控系統(tǒng)設計[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.