新聞中心

EEPW首頁 > 消費電子 > 設計應用 > 基于V4L2視頻采集緩存機制應用與實現(xiàn)

基于V4L2視頻采集緩存機制應用與實現(xiàn)

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

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

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

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

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


上一頁 1 2 3 下一頁

關鍵詞: 視頻

評論


相關推薦

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

關閉