新聞中心

EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 基于V4L2視頻采集緩存機(jī)制應(yīng)用與實(shí)現(xiàn)

基于V4L2視頻采集緩存機(jī)制應(yīng)用與實(shí)現(xiàn)

作者: 時(shí)間:2010-12-24 來源:網(wǎng)絡(luò) 收藏

摘要:V4L是Linux針對(duì)設(shè)備的應(yīng)用程序接口,V4L2為其升級(jí)版本,它修復(fù)了第一版的很多設(shè)計(jì)缺陷。然而它提供的常規(guī)讀寫函數(shù)并不能滿足大數(shù)據(jù)量的高速傳輸,所以將緩存技術(shù)引入到采集領(lǐng)域可以提高系統(tǒng)的吞吐量。提出了一種雙幀內(nèi)存映射采集機(jī)制,由于不需要做數(shù)據(jù)拷貝動(dòng)作,減少了讀/寫時(shí)限,因而可以提高視頻采集性能。實(shí)驗(yàn)結(jié)果表明,采用雙幀內(nèi)存映射機(jī)制在視頻采集時(shí)速度快,效率高,達(dá)到了預(yù)期的實(shí)驗(yàn)效果。
關(guān)鍵詞:V4L2;Linux;視頻采集;內(nèi)存映射

0 引言
V4L(video for linux)是由Alan Cox開發(fā)的針對(duì)視頻設(shè)備的應(yīng)用程序接口(API),開始出現(xiàn)是在Linux 2.1.x版本內(nèi)核中,可以實(shí)現(xiàn)圖像采集、AM/FM廣播和圖像編解碼等功能。然而,由于它在擴(kuò)展性和靈活性上的缺陷,漸漸被Bill Dirks設(shè)計(jì)出的V4L的升級(jí)版本V4L2所替代,V4L2開始是在Linux 2.5.x版本內(nèi)核中集成的,在對(duì)視頻設(shè)備數(shù)據(jù)的讀/寫中,應(yīng)用程序可以通過read/write方法或者內(nèi)存映射來獲得位于內(nèi)核空間的圖像數(shù)據(jù)。 read/write方法是將數(shù)據(jù)在內(nèi)核空間和用戶空間之間進(jìn)行拷貝,而內(nèi)存映射使應(yīng)用程序可以直接訪問設(shè)備內(nèi)存,減少了從內(nèi)核態(tài)到用戶態(tài)的數(shù)據(jù)拷貝,因而可以顯著提高系統(tǒng)的吞吐量,下面討論視頻采集中緩存機(jī)制的應(yīng)用和實(shí)現(xiàn)。

1 V4L2的視頻采集框架
V4L2采用了分層架構(gòu),應(yīng)用程序接口為上層,而下層則是視頻設(shè)備的驅(qū)動(dòng)程序,一般研究領(lǐng)域都是編寫上層的應(yīng)用程序,通過編程接口來控制視頻設(shè)備完成相應(yīng)的操作和功能。利用V4L2開發(fā)的視頻采集程序具有設(shè)備無關(guān)性,任何支持V4L2的視頻采集設(shè)備都可以移植此類程序,因而也提高了視頻采集程序的可移植性。
當(dāng)視頻設(shè)備連接到主機(jī)后,驅(qū)動(dòng)程序會(huì)首先注冊(cè)一個(gè)主設(shè)備號(hào)為81的字符設(shè)備,它是硬件惟一的身份標(biāo)識(shí)。驅(qū)動(dòng)程序利用主設(shè)備號(hào)來識(shí)別硬件,而系統(tǒng)內(nèi)核則是利用主設(shè)備號(hào)讓設(shè)備與對(duì)應(yīng)的驅(qū)動(dòng)程序相結(jié)合,同時(shí)加載驅(qū)動(dòng)程序的成員函數(shù)、次設(shè)備號(hào)以及其他相關(guān)信息,使設(shè)備可以正常工作。使用表1中的函數(shù)可以訪問 V4L2設(shè)備,也可以在應(yīng)用程序中直接調(diào)用。具體功能如表1所示。
a.JPG

其中,ioctl函數(shù)的功能非常強(qiáng)大,它可以管理設(shè)備的I/O通道,設(shè)置視頻的制式和幀格式,還提供查詢當(dāng)前設(shè)備屬性的功能,主要的ioctl命令如表2所示。
b.JPG


上一頁 1 2 3 下一頁

關(guān)鍵詞: 視頻

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉