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