酆祥龍,魏本杰,姜秀杰
(1.中國科學院 空間科學與應用研究中心,北京100190;2.中國科學院大學 北京100049)
基于DM 368的視頻捕獲與編解碼系統設計
酆祥龍1,2,魏本杰1,姜秀杰1
(1.中國科學院 空間科學與應用研究中心,北京100190;2.中國科學院大學 北京100049)
為了實現對視頻進行捕獲后壓縮,文中提出一種基于DM368的視頻捕獲壓縮方案,并設計完成相應的硬件與軟件。該系統主要使用TI達芬奇DM368片上系統作為主控芯片,采用TVP5158作為視頻采集前端。采用1G容量的DDR2內存作為易失性存儲器。采用1GFlash作為系統內核與文件系統的存儲介質。軟件部分在Linux平臺中使用達芬奇DVSDK進行編程。壓縮規(guī)格上使用目前較為流行的MPEG4算法。從而實現視頻的捕獲與壓縮。經實際測試顯示,使用該平臺進行視頻捕獲壓縮開發(fā)較以往DSP和FPGA方案更加成熟穩(wěn)定,并可以通過TI的開發(fā)工具和現有軟件庫大大減少開發(fā)周期。
DM368;MPEG4;視頻;TI達芬奇
隨著人類社會的進步,視頻技術越來越發(fā)揮著重要的作用。視頻的傳輸也經歷了由模擬到數字的轉變。數字視頻的分辨率也隨著感光元器件的革新而不斷增加,在給人們提供越來越清晰額視覺享受的同時產生了更大的視頻數據。針對海量的視頻數據,人們通過改進壓縮算法使得視頻數據所需的存儲空間大大減小。時至今日,ITU-T已經公布了H.264壓縮標準,并且在推進H.265壓縮標準。在MPEG會議的努力下,MPEG-4壓縮標準也開始應用于數字視頻領域。這些標準都使得高分辨率的視頻數據以非常高的壓縮率壓縮。最明顯的成果便是以網絡為媒體的實時視頻傳輸技術。而在硬件方面隨著微電子技術的進步,微處理器體積變得越來越小但是處理能力如摩爾定律那樣快速增長。這些技術的進步使得嵌入式設備實現數字視頻的捕獲壓縮成為可能。目前常用的設計方案常用DSP+FPGA或者DSP+ARM組合實現。鑒于嵌入式設備對數字視頻壓縮的要求,誕生了許多現成的壓縮芯片,只需要發(fā)送指令和數據就可以完成原始視頻數據的壓縮[1-2]。
多處理器組合,雖然可以既利用DSP芯片的數字信號處理能力,又利用協處理器的邏輯處理能力,但是這種組合屬于板級連接設計者在設計過程中難免會引入連接錯誤,給項目開發(fā)帶來許多不穩(wěn)定因素,大大延長開發(fā)周期。同時兩種不同公司的芯片在設計過程中,接口邏輯會有或多或少的不同,也會給設計者帶來意想不到的問題。近年來許多芯片公司將核心處理器如ARM、DSP和其他外圍硬件內核集成到一塊芯片中,這種System On Chip(SOC)技術大大增強了新的嵌入式視頻處理器的穩(wěn)定性。在其中TI公司開發(fā)出達芬奇系列視頻處理SOC,并提供了相應的開發(fā)環(huán)境與成熟的視頻處理算法。2010年4月TI推出DM368視頻處理芯片。與之前DM365視頻庫軟件兼容,但提供了更為豐富的接口。
文中介紹一種使用達芬奇DM368SOC實現數字視頻的捕獲并按照MPEG4標準進行壓縮的設計。本設計將對模擬視頻信號進行采樣量化,將原始的視頻數據按照MPEG4壓縮標準進行編碼。最后將編碼后的壓縮視頻解碼輸出,從而驗證視頻的編解碼及視頻輸出功能。
該嵌入式視頻處理設備整體結構如圖1所示,模擬攝像頭采集的視頻信號經過視頻處理前端,進行按照一定視頻格式進行采樣量化,將模擬視頻信號轉換為數字信號。這些視頻原始數據被傳輸到視頻處理模塊。然后通過該模塊將原始視頻數據進行相關的視頻壓縮處理。本設計預留網口和模擬視頻輸出端口,可以將壓縮的視頻解壓輸出,并通過模擬視頻輸出端顯示在微計算機終端或者嵌入式顯示設備。
圖1 系統總體結構圖Fig.1 Structure diagram of the video process system
嵌入式視頻處理的硬件設計由視頻前端、視頻處理模塊、電源部分和外部接口四個部分組成。電源部分是一個嵌入式設備的最基礎模塊,是一個設備能夠穩(wěn)定運行的基礎。該設備由于使用了多個芯片,每個芯片需要的供電電壓不同,這就需要使用多個電源芯片進行電壓轉換產生對應的供電電壓。本次設計中將輸入的12 V電源經第一次電平轉換產生5 V電源。5 V電源經兩個芯片轉換產生1.1 V、1.2 V、1.8 V和3.3 V電源。最后產生的3.3 V電源經轉換產生1.24 V電源。如圖2所示。
圖2 電源模塊設計Fig.2 Design of power
模擬視頻接入端連接至TVP5158進行初步處理。TI公司的TVP5158是四路NTSC/PAL視頻譯碼器,具有單獨的定標器,降噪,自動對比度調整,以及靈活的輸出格式編制器。TVP5158提供和DaVinc處理器的音頻和視頻連接接口,視頻輸出端支持8位ITU-R BT.656和16位4:2:2 YCbCr。輸出端連接DM368視頻處理器。
在DM368的片上系統中有許多硬件設備。對于視頻處理來說最重要的是其中的VPSS,即視頻子系統(結構如圖3所示)。該系統有若干硬件組件支持對視頻的處理,可以實現從YUV422到YUV420的格式轉換等具體處理操作。其中的VPFE(視頻處理前端)和VPBE(視頻處理后端)可以實現視頻數據的預處理和解碼輸出功能。除此之外,該系統中還有一個緩沖器和一個DMA控制器,可以充分使用外部DDR2存儲器[3]。本次設計采用一片1G容量DDR2存儲器,該RAM與DM368的內存引腳相連,為該芯片處理大數據視頻提供了足夠的運行空間。使用三星公司的1G容量FLASH作為Linux系統內核、文件系統和視頻應用程序的存儲區(qū)域。
圖3 VPSS框圖Fig.3 Block diagram of VPSS
在視頻輸出部分,DM368自帶了模擬視頻輸出接口,另外考慮到嵌入式Linux的開發(fā)調試需求和目前常用的視頻傳輸方法,本次設計還添加了網絡和串口。網卡主控芯片采用AR8032,串口部分采用MAX3221實現通信電平轉換。整個視頻處理模塊硬件設計如圖4所示。
圖4 視頻處理模塊設計Fig.4 Design of video process
TI公司為達芬奇系列視頻處理器設計了軟件開發(fā)構架,方便開發(fā)者在這個構架上開發(fā)自己的視頻處理程序。該軟件開發(fā)構架核心為CODE ENGINE編程框架,它能夠自動地請求和實現符合eXpress DSP的Codec算法。在code engine中為開發(fā)人員提供3種開發(fā)方向。作為算法開發(fā)人員,可以將設計好的視頻處理算法通過Codec部分,按照TI通用的視頻處理算法標準生成算法庫,并進行打包。視頻應用程序開發(fā)人員可以在APP部分調用已經打包好的算法庫,開發(fā)自己的視頻處理應用程序。在應用程序與算法庫之間是sever部分,該部分可以實現Codec算法庫被APP調用。Server為Codec提供APP調用過程中所必須的組件 (例如BIOS、Framework Component、DSPLink等),并生成可執(zhí)行文件[dv]。系統軟件設計的結構圖如圖5所示。
圖5 CODE ENGINE結構圖Fig.5 The structure of CODE ENGINE
在本次視頻編解碼軟件設計中,DM368自帶了MPEG4和H.264視頻編解碼算法。在安裝好的開發(fā)環(huán)境中,進入算法庫文件夾,查找MPEG4視頻壓縮算法與解壓算法。圖中顯示的庫文件提供的是可以直接被APP端使用的,下一步就是編寫相應的應用程序。
圖6 DM368自帶視頻算法庫Fig.6 The algorithm of video process for DM368
設計視頻處理應用程序,主要需要編寫 Capture、encodedecode和display3個部分的代碼。在Capture中主要使用前綴為“Capture_”的函數,這些函數直接使用了V4L2的相應函數接口,從而幫助軟件從底層獲取與視頻處理相關的數據[5-6]。其主要執(zhí)行流程如圖所示[7]。
圖7 捕獲軟件的流程圖Fig.7 Flow chart of the software of capture
在視頻編解碼軟件部分中,主要使用了DM368自帶的視頻編解碼算法,在編程之前需要首先配置encodedecode.cfg文件。配置參數如下:
配置完成后,在應用程序中便可以創(chuàng)建編碼算法句柄調用算法庫。編碼與解碼都需要首先打開engine,然后創(chuàng)建算法句柄,接著操作算法控制函數與算法處理函數。最后執(zhí)行完畢刪除編碼算法句柄,并關閉engine。以編碼為例,流程圖如圖所示。
圖8 編碼軟件的流程圖Fig.8 Flow chart of the software of encoding
在 Linux下實現視頻輸出程序 display,是通過操作framebuffer實現的。該幀緩存提供了個多種操作方法。開發(fā)者想要在顯示屏中顯示視頻其實就是將解壓后的視頻數據寫入framebuffer中來完成的。至此視頻處理應用程序編寫完畢。
在Linux開發(fā)環(huán)境中打開終端,更改路徑進入源代碼文件 夾 :cd /dvsdk_2_10_01_18/dvsdk_demos_2_10_00_17/dm365/encodedecode。輸入make,Makefile文件會自動編譯整個工程。將編譯好的整個文件夾復制到nfs共享路徑下。使用串口與網線,將電路板與開發(fā)主機相連。最后連接顯示器與模擬視頻輸出端口。上電之后更改當前路徑到測試目錄,首先加載該視頻測試程序所需的驅動模塊:./loadmodules_sd.sh。加載完成后打開運行測試程序./video可以看到編解碼視頻的輸出情況,移動攝像頭可以看到視頻有明顯延時。顯示情況如圖所示。
Design of video capture and codec based on DM 368
FENG Xiang-long1,2,WEI Ben-jie1,JIANG Xiu-jie1
(1.Center for Space Science and Applied Research,Chinese Academy of Sciences,Beijing 100190,China;2.University of Chinese Academy of Sciences,Beijing 100049,China)
In order to achieve the capture and codec of video,a design based on DM368 is described with its both hardware and software.In this design,DM368 from TI Davinci is the main control and process unit.TVP5158 is added to capture the analog video signal.A DDR2 with volume of 1GB is used as RAM of this system.Besides a Flash from SAMSUNG with volume of 1GB is worked as the memory to store the kernel and file system of Linux.The software is developed on Linux with DVSDK from Davinci.MPEG-4 is chosen as the standard of video compression.By real test,this platform can perform MPEG-4 much better than the platform with DSP and FPGA.This design is much mature and reliable.With the help from the tools of TI and all the algorithm library people could develop the software much faster.
DM368;MPEG4;video;Davinci TI
TN919.82
A
1674-6236(2015)10-0166-03
2014-10-24 稿件編號:201410176
863國家支持項目(Y28021A220)
酆祥龍(1989—),男,山東淄博人,碩士研究生。研究方向:嵌入式,視頻編解碼。