一直在搞camera,对v4l2也比较熟悉了,今天写文章说点自己的看法

对于v4l2,对多流的支持是比较弱的,只是一个流。但现在的camera 硬件,能支持多个流同事工作,所以又必要对v4l2的api进行扩展,加入多流的支持。

v4l2的团队们考虑了一种做法,可参考linuxtv的网页。

这里谈一下我自己的考虑。

1 先来考虑一个camera设备的构成

1  一个camera 用一个v4l2 设备来代表,然后导出一个vidoe节点来访问这个设备。

2  一个camera 有很多相关的模块组成,把这些模块组织成subdev,并导出video节点访问这些subdev

3  一个camera 应有若干流供用户空间访问,于是抽象出流,然后导出video 节点访问流,这些流是动态创建的,节点也是动态生成的

扩展几个v4l2 api, V4L2_CREAT_STREAM, V4L2_DESTRY_STREAM, get/set_STREAM_INFO

于是用户可以如下访问一个camera设备。

1 open camera v4L2 设备,得到fd。

2 用这个fd, 调用V4L2_CREAT_STREAM,得到stream 的设备节点,这时我们可以传递一个流的描述符来创建流,比如流的类型,预览,video snapshot等

一个流的描述符应该包括以下几点内容

1 流的类型

2 流的格式

3 流的维数w*h

4 流的帧数率范围

5 流数据在内存中的布局情况,

1 面板数

2 data offset

3 width, height

4 stride_width, scan_height

5 panel length

对每一个panel都做如上的描述,内存布局情况可以从驱动中获取。这些信息更加有效的和vb2_buffer 互补, 获取到的流buffer 任然用v4l2_buffer 代表。

3 打开这个节点 得到stream fd

4 配置这个fd,以使用这个stream。

5 用完后关闭fd

6 然后销毁流

这样的做法有连个好处,

1 保留了原来的操作方式,向下兼容

2 添加了多流操作,而且流的操作就是以前的操作方式。

v4l2中的多流机制的更多相关文章

  1. [转]as3事件流机制彻底理解

    题记: 看过网上一些as3事件流的教程,觉得大多都讲得不甚清楚,让人不能直观的理解事件流.而这篇教程以将事件流过程比喻成捕鱼过程,形象简单. 在此基础上对于as3事件流总算有了全面的理解.事件流机制说 ...

  2. Android IOS WebRTC 音视频开发总结(七五)-- WebRTC视频通信中的错误恢复机制

    本文主要介绍WebRTC视频通信中的错误恢复机制(我们翻译和整理的,译者:jiangpeng),最早发表在[这里] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blac ...

  3. STREAMS流机制

    STREAMS流机制 基本概念 STREAMS(流)是系统V提供的构造内核设备驱动程序和网络协议包的一种通用方法,对STREAMS进行讨论的目的是为了理解系统V的终端接口,I/O多路转接中poll(轮 ...

  4. Hadoop内部的限流机制

    前言 文章标题一開始提及到了一个令人感到有些抽象又显得有些非常"大"的词,限流.事实上这个词语在非常多行业都能够用到,比方近期春运,各大主要城市,火车站,地铁站都要做到限流吧,避免 ...

  5. K:java中的安全模型(沙箱机制)

    本博文整合自:Java安全--理解Java沙箱.Java 安全模型介绍.Java的沙箱机制原理入门 相关介绍:  我们都知道,程序员编写一个Java程序,默认的情况下可以访问该机器的任意资源,比如读取 ...

  6. Android中的常见通信机制和Linux中的通信机制

    Handler Handler是Android系统中的一种消息传递机制,起作用是应对多线程场景.将A进程的消息传递给B线程,实现异步消息处理.很多情况是将工作线程中需要更新UI的操作消息传递给UI主线 ...

  7. 深入理解Java流机制(一)

    一.前言 C语言本身没有输入输出语句,而是调用"stdio.h"库中的输入输出函数来实现.同样,C++语言本身也没有输入输出,不过有别于C语言,C++有一个面向对象的I/O流类库& ...

  8. 理解nodejs中的stream(流)

    阅读目录 一:nodeJS中的stream(流)的概念及作用? 二:fs.createReadStream() 可读流 三:fs.createWriteStream() 可写流 回到顶部 一:node ...

  9. java的Io流机制的学习

    IO流机制 File类的使用 File类的构造方法 File(URI uri) File(String pathname) File(File parent, String child) File(S ...

随机推荐

  1. android 性能測试CTS篇

    CTS介绍 一.CTS简单介绍 CTS 全称Compatibility Test Suite兼容性測试工具. 当电子产品开发出来.并定制了自己的Android系统后,必需要通过最新的CTS检測.以保证 ...

  2. Servlet及相关类和接口

    上一篇介绍了在Web项目中web.xml文件的配置信息,本篇主要介绍里面非常重要的配置——Servlet配置,重点介绍与Servlet相关的几个接口和类,包括Servlet接口.ServletConf ...

  3. hdu4328(经典dp用悬线法求最大子矩形)

    http://wenku.baidu.com/view/728cd5126edb6f1aff001fbb.html 关于悬线法,这里面有详解. 我当时只想到了记录最大长度,却没有想到如果连最左边和最右 ...

  4. JZOJ.3777【NOI2015模拟8.17】最短路(shortest)

    Description        小Y最近学得了最短路算法,一直想找个机会好好练习一下.话虽这么说,OJ上最短路的题目都被他刷光了.正巧他的好朋友小A正在研究一类奇怪的图,他也想凑上去求下它的最短 ...

  5. tomcat登录账户配置

    tomcat7和tomcat6的用户信息配置有些不一样,tomcat7中添加了manager=gui和admin-gui角色,配置参考如下: 再 tomcat 文件夹的conf文件夹中的 tomcat ...

  6. mysql中排序

    排序(默认:asc升序; desc降序 如:根据成绩从高到低排序 select * from stu_info order by mark desc; 根据成绩从低到高排序 select * from ...

  7. delphi ,安装插件

    一.安装 DevExpress52(VCL+Demo+Help+汉化ini)cxGrid技巧:DBGRIDEH 安装:点击devcl52.exe,安装,安装路径到D:\Program Files\Co ...

  8. mfc 对话框程序 托盘实现

    1 在头文件里面定义 消息 #define WM_SHOWTASK WM_USER+10 在主窗口类里面定义 一个变量 两个函数 a 变量 托盘结构体的变量 NOTIFYICONDATA m_nid; ...

  9. IO流入门-概述

    纲要 Java流概述 文件流 缓冲流 转换流 打印流 对象流 File类 流的概念 按方向划分:输入流和输出流,是相对内存而言的.从内存出来是输出,到内存中就是输入.输入流又叫做InputStream ...

  10. Sending 'ccColor4B' (aka 'struct_ccColor4B') to parameter of incompatible type

    今天遇到了如下的一个错误, Sending 'ccColor4B' (aka 'struct_ccColor4B') to parameter of incompatible type CiColor ...