基于DSP的視頻采集驅(qū)動程序的設(shè)計
在隔行掃描模式下,每幀分為兩場,兩場在時域上是分開的,但在數(shù)據(jù)處理時需要將兩場合成一幀進(jìn)行處理,因此要進(jìn)行大量的數(shù)據(jù)搬移,占用了大量的CPU時間。通過EDMA鏈表可自動實(shí)現(xiàn)場合成,不需占用額外的CPU時間。
EDMA的參數(shù)RAM存放了有關(guān)的傳輸參數(shù),這些參數(shù)用于產(chǎn)生EDMA讀寫操作所需要的地址。如圖4所示,在使用EDMA通道傳輸奇數(shù)場與偶數(shù)場時,分別使用不同的EDMA參數(shù)RAM。兩組參數(shù)RAM的目的地址分別指向存儲圖像的第一行與第二行象素的首地址,并且兩組參數(shù)RAM通過鏈接地址循環(huán)相連。在EDMA通道的傳輸中,奇數(shù)場傳輸任務(wù)的結(jié)束會自動地根據(jù)當(dāng)前參數(shù)RAM的鏈接地址裝載傳輸偶數(shù)場的參數(shù)RAM,又由兩組參數(shù)RAM的目的地址可知,奇數(shù)場與偶數(shù)場分別經(jīng)EDMA通道傳輸至幀緩沖區(qū)后被隔行存儲,這樣在無需占用額外CPU時間的前提下就實(shí)現(xiàn)了場合成。
4 視頻采集驅(qū)動程序的調(diào)用實(shí)例
DSP/BIOS應(yīng)用程序通過GIO類驅(qū)動調(diào)用微驅(qū)動之前,需使用DSP/BIOS配置工具注冊微驅(qū)動,將其命名為VP_CAPTURE,并啟動GIO模塊。
在應(yīng)用程序中,GIO_create函數(shù)使用已注冊的微驅(qū)動VP_CAPTURE創(chuàng)建GIO通道,通過調(diào)用GIO_submit函數(shù)完成應(yīng)用程序?qū)?a class="contentlabel" href="http://cafeforensic.com/news/listbylabel/label/視頻">視頻數(shù)據(jù)的采集操作。部分源代碼如下:
(1) 創(chuàng)建通道
GIO_Handle capChan;
int status;
capChan = GIO_create('VP_CAPTURE'),
IOM_INPUT, status, (Ptr)DM642_vCapParams, NULL);
(2) 發(fā)送獲取圖像的數(shù)據(jù)包
GIO_submit(capChan, IOM_READ, bufp, NULL, NULL);其中,DM642_vCapParams包含了視頻采集的初始化參數(shù),如圖像大小、同步方式等;bufp用于指出采集圖像的存儲地址。不同的視頻應(yīng)用程序在使用類驅(qū)動時,可以通過改變這兩個變量復(fù)用視頻設(shè)備。這樣,極大地提高了驅(qū)動程序的工作效率,對視頻外設(shè)的控制也大大簡化了。
使用類/微驅(qū)動模型開發(fā)的視頻采集驅(qū)動程序,有效地解決了圖像采集和圖像實(shí)時處理之間的關(guān)系,在幾乎不需要CPU的干涉下,利用EDMA完成了數(shù)字視頻圖像數(shù)據(jù)的高速傳輸;通過使用類驅(qū)動復(fù)用驅(qū)動程序,視頻應(yīng)用程序的開發(fā)效率獲得了極大的提高。視頻采集驅(qū)動程序現(xiàn)已在自主開發(fā)的視頻處理板卡上運(yùn)行良好,為進(jìn)一步開發(fā)遠(yuǎn)程視頻監(jiān)控系統(tǒng)、可視電話等視頻應(yīng)用打下了堅(jiān)實(shí)的基礎(chǔ)。
評論