做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是要注意关闭线程是才可访问

DM6467之视频采集(Linux)下MMAP相关推荐

  1. linux服务器视频转换,linux下视频格式转换工具

    原文 地址: http://www.cpplive.com/html/1415.html mencoder是Linux下的开源软件MPlayer以及它附带的视频工具,也可以独立安装.Windows下的 ...

  2. mmap函数linux,linux下mmap()函数

    最近看完了Beginning Linux Programming的文件系统部分,感觉还是有颇多收获,对系统调用有了一个初步的概念,同时也了解了标准I/O库和Linux系统调用函数的关系.不过关于mma ...

  3. linux监控覆盖视频恢复,linux下使用inotify实时监控文件变更,做完整性检查

    linux下使用inotify实时监控文件变更,做完整性检查 完整性检查是HIDS的重要组成部分之一,linux下做完整性检查的思路有3个 1.哈希对比 2.签名校验 3.inotify 方法有2个: ...

  4. linux下mmap的使用

    http://blog.csdn.net/adcxf/archive/2009/03/14/3989725.aspx 共 享内存可以说是最有用的进程间通信方式,也是最快的IPC形式.两个不同进程A.B ...

  5. linux双屏播放视频,Ubuntu Linux下双屏显示解决方案

    Ubuntu从起后居然把Windows的设置给记住了.显示ok.我晕.以前倒是也有过这问题,在双系统情况下,外接键盘的灯会继承Windows的 早就有心弄个显示器,把笔记本的外接上,倒不是说非要2个屏 ...

  6. linux 解压 视频插件,linux下压缩解压缩命令

    zip/gzip 命令 linux zip命令参数列表: -a 将文件转成ASCII模式 -F 尝试修复损坏的压缩文件 -h 显示帮助界面 -m 将文件压缩之后,删除源文件 -n 特定字符串 不压缩具 ...

  7. linux命令音乐视频合并,Linux下基于命令行的音乐播放器 (1)

    按照同事的话说,我是一个十足的命令控. 利用最近项目通宵发布的空闲时间中,写了一个命令行下的音乐播放器,以满足我在linux命令下的需求. 播放器利用技术: Python+GST(http://gst ...

  8. linux视频处理速度,Linux下视频处理

    常见的视频封装格式: AVI, MKV, MPE, MPG, MPEG MP4, WMV, MOV, 3GP M2V, M1V, M4V, OGM RM, RMS, RMM, RMVB, IFO SW ...

  9. linux firefox 无法播放视频,关于linux下firefox无法播放mp3文件

    集线器hub.交换机switch.路由器router 的区别 原文链接:http://blog.csdn.net/thq0201/article/details/7782319 首先说HUB,也就是集 ...

最新文章

  1. RPC 笔记(08)— socket 通信(多进程多线程服务器)
  2. 10个有趣的javascript和css库(2019年5月最新)
  3. hadoop的两大核心之一:HDFS总结
  4. fork()子进程与父进程之间的文件描述符问题
  5. html5 canvas 学习
  6. PHP RSA2加密和解密以及接口签名和验签
  7. [渝粤教育] 西南科技大学 服务管理 在线考试复习资料
  8. WebApi单元测试记录
  9. 对接融云记录几点问题
  10. 你的功夫真的夠了嗎?
  11. Microsoft Office Excel 已停止工作
  12. CentOS 7.9命令行配置有线网卡
  13. java坦克大战互相碰撞_加强版坦克大战(java版)
  14. 夜曲歌词 拼音_周杰伦夜曲歌词
  15. 在linux4.19内核下的UPD720201驱动里添加固件下载的代码
  16. 迈向高算力、跨域融合新拐点,智能座舱各路玩家如何卡位?
  17. MFC对话框美化四(自绘标题栏)
  18. python中的除法、取整和求模_python中的除法,取整和求模
  19. VUE + Element-UI 表单校验input框数据已存在
  20. 【USACO题库】1.2.1 Milking Cows挤牛奶

热门文章

  1. [转载]MATLAB movie 函数动态绘图
  2. Debian下IPv6设定主地址 Set primary IPv6 address under Debian Linux
  3. UIScrollViewDelegate-代理API详解
  4. docker实战系列之搭建rabbitmq
  5. C++成员访问限定符 private public
  6. [luoguP1029] 最大公约数和最小公倍数问题(数论)
  7. 系统:Centos 7.2 内核3.10.0-327.el7.x86_64 # 内核需要高于2.6.32
  8. Rsyslog 日志相关内容
  9. asp.net 加载xml到menu
  10. SDL 库 无法解析的外部符号 __imp__fprintf