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.mzph.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)技术把视频信号编码成分层的形式,当带宽不足时只对基本层的码流进行传输和解码,但这时解码的视频质量不高。当带宽慢慢变大时,可以传输和解码增强层的码流来提高视频的解码…