當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]基于V4L2視頻采集緩存機制應用與實現(xiàn)

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

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

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


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

    這些函數(shù)原型一般定義在include/linux/videodev2.h或者videodev.h中。
    視頻采集的具體過程描述如下:
    (1)打開設備。通過open()函數(shù)打開設備文件,返回文件描述符。
    (2)初始化設備。首先通過VIDIOC_QUERYCAP查詢設備屬性,判斷該設備是否為一個合法的視頻采集設備,并確定其支持的功能有哪些;然后通過 VIDIOC_S_FMT設置圖像的格式,例如圖像的大小等;通過VIDIOC_REQBUFS和malloc()分別在內核空間和用戶空間分配內存緩沖區(qū);最后通過mmap()函數(shù)進行內存映射。
    (3)圖像采集循環(huán)。首先通過VIDIOC_QBUF將空緩沖區(qū)移入待處理隊列,準備接收圖像數(shù)據(jù);然后通過VIDIOC_QBUF將滿緩沖區(qū)移出已處理隊列,進行圖像的顯示和處理;最后通過VIDIOC_STREAMON和VIDIOC_STREAMOFF啟動和停止采集。
    (4)關閉設備。通過close()函數(shù)關閉設備文件。

2 雙幀緩存數(shù)據(jù)傳輸
    在視頻采集中,首先在內核空間建立2個圖像緩沖區(qū),不斷將采集到的圖像存放到緩沖區(qū)中。當應用程序需要圖像時,驅動程序并不做拷貝操作,而是建立內核緩沖區(qū)到用戶空間的映射,也就是利用mmap()函數(shù),存取其返回的指針,相當于存取內核中的圖像緩沖區(qū)。由于不需要做額外的復制操作,效率大大提高了,圖像采集流程如圖1所示。


    具體說明如下:
    (1)程序首先使用VIDIOC_REQBUFS向驅動程序請求圖像緩沖區(qū),v412_requestbuffers結構體包含了所要求緩沖區(qū)的類型及數(shù)量,但驅動程序有權決定最后返回的數(shù)量,因此程序仍需要使用系統(tǒng)返回的緩沖區(qū)數(shù)量,在這里程序返回2個緩沖區(qū)。
    (2)由于緩沖區(qū)數(shù)量有2個,調用2次mmap()建立起用戶空間和內核空間緩沖區(qū)的對應關系,然后讀取mmap()所返回的指針就相當于讀取圖像緩沖區(qū)。
    (3)此時驅動程序仍然不能對圖像緩沖區(qū)做讀取,調用2次VIDIOC_QBUF ioctl將緩沖區(qū)加入到驅動程序內部的采集序列,之后采集的圖像就會被儲存到這些緩沖區(qū)內。
    (4)調用VIDIOC_STREAM ioctl后,驅動程序開始采集圖像,并將圖像放置到緩沖區(qū)內。
    (5)雖然緩沖區(qū)內已經(jīng)存放有圖像了,但直接去讀取某個緩沖區(qū)還是需要非常小心的,因為緩沖區(qū)仍然在驅動程序的圖像采集序列中,有可能讀取到一半,驅動程序又使用該緩沖區(qū)儲存新的圖像,而圖1中的(5)是最后調用VIDIOC_STREAMOFF,以停止圖像采集,此時驅動程序會自動將所有緩沖區(qū)從圖像采集序列中移除,所以不需要手動調用VIDIOC_DQBUF,接著使用munmap()清除所有的存儲區(qū)映射導致圖像前后不一致。因此要在讀取緩沖區(qū)前,先調用VIDIOC_DQBUG ioctl,通知驅動程序不要使用此緩沖區(qū),在這個階段中,通常是以如圖2所示的順序來讀取每個緩沖區(qū)的。[!--empirenews.page--]



3 實驗結果
    當視頻采集程序編制完成后需要以模塊形式插入內核,再通過make modules對模塊進行編譯,未采用雙幀緩存技術的視頻采集幀速為6 f/s,應用本實驗的方法可以達到8.3 f/s,視頻采集結果截圖如圖3所示:



4 結語
    視頻采集是目前遠程教學、遠程診斷、視頻監(jiān)控和視頻會議等技術的基礎。在實時性要求越來越高,工作性能越來越突出的今天,采用雙幀緩存映射機制可以在數(shù)據(jù)采集方面實現(xiàn)高速化,滿足一般性應用要求,但是,使用內存映射現(xiàn)在還存在2個限制:一是面向流的設備不能使用內存映射,如串口;二是映射區(qū)域的起始地址和大小都必須是PAGE_SIZE的整數(shù)倍,即內存映射是以PAGE_SIZE為單位進行操作的。這些都是后期研究中需要解決的問題。
 

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉