DM6467之視頻采集(Linux)下MMAP

做dsp6467是在linux下做視頻采集,僅ARM端

一共有三種視頻采集方式

  1)使用read、write方式:直接使用 read 和 write 函數進行讀寫。這種方式最簡單,但是這種方式會在用戶空間和內核空間不斷拷貝數據 ,同時在用戶空間和內核空間占用 了 大量內存,效率不高。
  2)內存映射方式(mmap):把設備里的內存映射到應用程序中的內存控件,直接處理設備內存,這是一種有效的方式。上面的mmap函數就是使用這種方式。
  3)用戶指針模式內存由用戶空間的應用程序分配并把地址傳遞到內核中的驅動程序然后由 v4l2 驅動程序直接將數據填充到用戶空間的內存中。這點需要在v4l2_requestbuffers里將memory字段設置成V4L2_MEMORY_USERPTR。
  第一種方式效率是最低的,后面兩種方法都能提高執行的效率,但是對于mmap 方式,文檔中有這樣一句描述 –Remember the buffers are allocated in physical memory, as opposed to virtual memory which can be swapped out to disk。 Applications should free the buffers as soon as possible with the munmap () function 。(使用mmap方法的時候,buffers相當于是在內核空間中分配的,這種情況下,這些buffer是不能被交換到虛擬內存中,雖然這種方法不怎么影響讀寫效率,但是它一直占用著內核空間中的內存,當系統的內存有限的時候,如果同時運行有大量的進程,則對系統的整體性能會有一定的影響。)

  所以,對于三種視頻采集方式的選擇,推薦的順序是 userptr 、 mmap 、 read-write 。當使用 mmap 或 userptr 方式的時候,有一個環形緩沖隊列的概念,這個隊列中,有 n 個 buffer ,驅動程序采集到的視頻幀數據,就是存儲在每個 buffer 中。在每次用 VIDIOC_DQBUF 取出一個 buffer ,并且處理完數據后,一定要用 VIDIOC_QBUF 將這個 buffer 再次放回到環形緩沖隊列中。環形緩沖隊列,也使得這兩種視頻采集方式的效率高于直接 read/write 。

但在用mmap是要注意關閉線程是才可訪問

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253998.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253998.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253998.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QPS、TPS計算

QPS (Query per second) (每秒查詢量) TPS(Transaction per second) (每秒事務量,如果是InnoDB會顯示,沒有InnoDB就不會顯示) 計算方法 QPS Questions SHOW GLOBAL STATUS LIKE Questions; Uptime SHOW G…

QT 中textEdit 和 textBrowser 無法使用斜體及加粗等 解決辦法

編輯框的幾個種類 QT 中一共四個文本編輯框 分別是 Line Edit 、Text Edit、 Plait Text Edit和textBrowser四種文本編輯框架! 一、輸入內容不同 1、LineEdit:LineEdit的輸入內容為單行文本輸入。 2、TextEdit:TextEdit的輸入內容為多行文…

【select模塊】select IO多路復用和select實現FTP

select是全平臺通用的IO多路復用模塊。最大連接數:1024。poll和epoll沒有最大連接數限制,但只能用在linux平臺。selectors是再封裝模塊,推薦使用。下篇會討論。select.select(rlist, wlist, xlist[, timeout])This is a straightforward inte…

變量屬性

變量屬性 C語言的變量屬性 C語言中的變量可以有自己的屬性在定義變量的時候加上“屬性”關鍵字屬性關鍵字指明變量的特有意義auto關鍵字 auto即C語言中局部變量的默認屬性auto表明將被修飾的變量存儲在棧上編譯器默認所有的局部變量都是auto的register關鍵字 register關鍵字指明…

WPF:How to display a Bitmap on Image control

一個Bitmap文件,叫做screenShotFile, 你可以這樣顯示到Image控件上。 BitmapImage bi new BitmapImage(); bi.BeginInit(); bi.UriSource new Uri(this.screenShotFile, UriKind.Absolute); bi.EndInit(); this.scre…

QT中$$PWD的意思

$$PWD的意思為當前目錄 如pro文件中:INCLUDEPATH $$PWD/lib/x64-win64 $$PWD表示的意思就是pro文件所在的目錄。

Dubbo 整合 Pinpoint 做分布式服務請求跟蹤

2019獨角獸企業重金招聘Python工程師標準>>> 在使用Dubbo進行服務化或者整合應用后,假設某個服務后臺日志顯示有異常,這個服務又被多個應用調用的情況下,我們通常很難判斷是哪個應用調用的,問題的起因是什么&#xff0…

Linux 進程詳解

Linux內核的七大區間 1.進程管理(進程創建,進程的三種狀態,進程間的調度,調度算法...) 2.內存管理(段式管理(Linux所有段都從0開始),頁式管理--地址偏移量) 3…

C#2.0 委托

委托 委托是一個非常不錯的設計,允許我們把方法做為參數傳遞,實現了開放閉放原則。在方法中我們只要有一個委托占位,調用者就可以傳入符合簽名的方法來做不同的操作,這也面向對象開發中多態的魅力。 但是在C#1.0的時候&#xff…

qt亂碼Could not decode“xxx.cpp“ with “UTF-8“-encoding.Editing not possible問題處理

問題描述:如題: 解決方法: 1、點擊Select Encoding按鈕 2、選擇按照系統編碼 3、選中System后點擊按編碼重新載入 4、問題解決

bootargs中的環境變量說明和一些常用的uboot命令

bootargs中的環境變量說明和一些常用的uboot命令 一些常見的uboot命令: Help [command]在屏幕上打印命令的說明 Boom [addr]啟動在內存儲器的內核 Tftpboot通過tftp啟動內核 Saveenv保存環境變量 setenv name [value] 設置環境變量 bootargs中的環境變量 co…

特斯拉自動駕駛系統秘密,來自特斯拉AI總監爆料

據外媒報道,特斯拉汽車公司人工智能(AI)總監安德烈卡帕西(Andrej Karpathy)日前參加2018年TRAIN AI大會時,剖析了該公司構建自動駕駛儀(Autopilot)計算機視覺解決方案的方法。據介紹,Autopilot編…

快捷鍵匯總

navicat 運行選中代碼 ctrshiftr navicat 運行所有代碼 ctrr 快速顯示桌面 wind 轉載于:https://www.cnblogs.com/caer/p/6064571.html

js做倒計時

var dinshiqi setInterval(timerun,1000) function timerun(){ //timegundong var now_time new Date(); var hours now_time.getHours(); //時 var minutes now_time.getMinutes(); //分 var seconds now_time.getSeconds(); //秒 //秒鐘 show_seconds 59 - parseInt(s…

QT右鍵點擊添加庫不響應的解決辦法

問題描述 QT在pro右鍵點擊添加庫不響應 解決方案 雙擊打開pro文件 在pro文件界面里單擊鼠標右鍵,并選擇添加庫。 解決問題

爬取前塵無憂python職位信息并保存到mongo數據庫

1.re實現 1 import re,os2 import requests3 from requests.exceptions import RequestException4 5 MAX_PAGE 10 #最大頁數6 KEYWORD python7 headers {8 User-Agent:9 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, lik…

實驗八——函數定義及調用總結

1.本次課學習到的知識點: (1)學習了數字金字塔。pyramid ()函數功能,函數定義時,形參n決定數字金字塔的層數; (2)不返回結果的函數定義: (3)復數運算: c1x1(y1) i,c2x2(y…

Apache JMeter 記一次使用HTTP工具POST提交JSON數據進行送積分高并發壓測(二)

一、前言 前面文章已經介紹Apache JMeter的基本概率和如果使用,但作為一個開發人員,自己寫的代碼都應該要好好的COD EREVIEW,好好的自測吧。但是有些場景比如高并發、負載和性能測試的時候,不借助工具是不好進行測試的。Jmter工具設計之初是用…

QT pro文件詳解

1.QT pro文件配置項說明 注釋:注釋是從一行的#開始,到這一行的結束。QT :這個是添加QT項目需要的模塊的,若項目中要排除某個模塊,也可用QT -配置項。TEMPLATE : 這個配置項確定qmake為這個應用程序生成哪種makefile …

可伸縮視頻編碼svc

可伸縮視頻編碼(Scalable Video Coding, SVC)技術把視頻信號編碼成分層的形式,當帶寬不足時只對基本層的碼流進行傳輸和解碼,但這時解碼的視頻質量不高。當帶寬慢慢變大時,可以傳輸和解碼增強層的碼流來提高視頻的解碼…