基于DM368的視頻捕獲與編解碼系統(tǒng)設(shè)計(jì)
計(jì)的結(jié)構(gòu)圖如圖5所示。
在本次視頻編解碼軟件設(shè)計(jì)中,DM368自帶了MPEG4和H.264視頻編解碼算法。在安裝好的開發(fā)環(huán)境中,進(jìn)入算法庫(kù)文件夾,查找MPEG4視頻壓縮算法與解壓算法。圖中顯示的庫(kù)文件提供的是可以直接被APP端使用的,下一步就是編寫相應(yīng)的應(yīng)用程序。
設(shè)計(jì)視頻處理應(yīng)用程序,主要需要編寫Capture、encodedecode和display3個(gè)部分的代碼。在Capture中主要使用前綴為 “Capture_”的函數(shù),這些函數(shù)直接使用了V4L2的相應(yīng)函數(shù)接口,從而幫助軟件從底層獲取與視頻處理相關(guān)的數(shù)據(jù)。其主要執(zhí)行流程如圖所示。
在視頻編解碼軟件部分中,主要使用了DM368自帶的視頻編解碼算法,在編程之前需要首先配置encodedecode.cfg文件。配置參數(shù)如下:
配置完成后,在應(yīng)用程序中便可以創(chuàng)建編碼算法句柄調(diào)用算法庫(kù)。編碼與解碼都需要首先打開engine,然后創(chuàng)建算法句柄,接著操作算法控制函數(shù)與算法處理函數(shù)。最后執(zhí)行完畢刪除編碼算法句柄,并關(guān)閉engine。以編碼為例,流程圖如圖所示。
在Linux下實(shí)現(xiàn)視頻輸出程序display,是通過操作framebuffer實(shí)現(xiàn)的。該幀緩存提供了個(gè)多種操作方法。開發(fā)者想要在顯示屏中顯示視頻其實(shí)就是將解壓后的視頻數(shù)據(jù)寫入framebuffer中來(lái)完成的。至此視頻處理應(yīng)用程序編寫完畢。
4 系統(tǒng)測(cè)試
在Linux開發(fā)環(huán)境中打開終端,更改路徑進(jìn)入源代碼文件夾:cd/dvsdk_2_10_01_18/drsdk_demos_2_10_00_17/dm365/encodedecode。輸入 make,Makefile文件會(huì)自動(dòng)編譯整個(gè)工程。將編譯好的整個(gè)文件夾復(fù)制到nfs共享路徑下。使用串口與網(wǎng)線,將電路板與開發(fā)主機(jī)相連。最后連接顯示器與模擬視頻輸出端口。上電之后更改當(dāng)前路徑到測(cè)試目錄,首先加載該視頻測(cè)試程序所需的驅(qū)動(dòng)模塊:./loadmodules_sd.sh。加載完成后打開運(yùn)行測(cè)試程序./video可以看到編解碼視頻的輸出情況,移動(dòng)攝像頭可以看到視頻有明顯延時(shí)。顯示情況如圖所示。
5 結(jié)論
經(jīng)實(shí)驗(yàn)表明,該系統(tǒng)可以對(duì)攝像頭采集到的模擬視頻信號(hào)進(jìn)行采樣量化,并實(shí)現(xiàn)對(duì)原始視頻數(shù)據(jù)MPEG4編解碼的功能,最終將視頻數(shù)據(jù)穩(wěn)定輸出到顯示屏上。本次設(shè)計(jì)達(dá)到了預(yù)期的目標(biāo)。DM368芯片功能比較全面,硬件設(shè)計(jì)相對(duì)更簡(jiǎn)便,又擁有豐富的軟件資源和算法庫(kù)支持,可以大大縮減相關(guān)視頻處理項(xiàng)目的開發(fā)周期,并同時(shí)在很大程度上增強(qiáng)系統(tǒng)可靠性。該設(shè)計(jì)除此之外該系統(tǒng)還支持H.264編解碼,可以通過網(wǎng)絡(luò)接口和Linux運(yùn)行平臺(tái)進(jìn)行網(wǎng)絡(luò)傳輸。整個(gè)平臺(tái)功能豐富可擴(kuò)展性高,為其他視頻處理設(shè)計(jì)提供了參考。
評(píng)論