Android Camera HAL通过V4L2接口与内核Camera Driver交互。本文从Linux应用开发人员的角度审视Android
Camera子系统。

V4L2应用开发一般流程:

1. 打开设备文件。 int fd=open("/dev/videoX″,O_RDWR);

2.取得设备的capability。看看设备具有什么功能,比方是否具有视频输入,或者音频输入输出等。VIDIOC_QUERYCAP,structv4l2_capability

3.选择视频输入,一个视频设备能够有多个视频输入。

VIDIOC_S_INPUT,struct v4l2_input

4.设置视频的制式和帧格式,制式包含PAL。NTSC,帧的格式包含宽度和高度等。 VIDIOC_S_STD,VIDIOC_S_FMT,structv4l2_std_id,struct v4l2_format

5. 向驱动申请帧缓冲,一般不超过5个。VIDIOC_REQBUFS,
struct v4l2_requestbuffers

6.将申请到的帧缓冲映射到用户空间,这样就能够直接操作採集到的帧了,而不必去复制。mmap

7.将申请到的帧缓冲所有入队列。以便存放採集到的数据.VIDIOC_QBUF,struct v4l2_buffer

8.開始视频的採集。

VIDIOC_STREAMON

9.出队列以取得已採集数据的帧缓冲,取得原始採集数据。

VIDIOC_DQBUF

10.将缓冲又一次入队列尾,这样能够循环採集。

VIDIOC_QBUF

11.停止视频的採集。

VIDIOC_STREAMOFF

12.关闭视频设备。

close(fd);

Android Camera子系统之Linux C应用开发人员View的更多相关文章

  1. Android Camera子系统之源码View

    本文基于Android 4.2.2+Linux3.6.9+SAMA5D3 SoC从源码的角度审视Android Camera子系统. 应用层 Androd原生Camera应用 /system/app/ ...

  2. Hasen的linux设备驱动开发学习之旅--时钟

    /** * Author:hasen * 參考 :<linux设备驱动开发具体解释> * 简单介绍:android小菜鸟的linux * 设备驱动开发学习之旅 * 主题:时钟 * Date ...

  3. GDB调试:Linux开发人员必备技能

    开篇词:Linux C/C++ 开发人员要熟练掌握 GDB 调试 大家好,我是范蠡,目前在某知名互联网旅游公司基础框架业务部技术专家组任开发经理一职. 本系列课程的主题是 Linux 后台开发的 C/ ...

  4. 【经典】Linux开发人员必看资料+工具

    Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核.Linux可安装在各种计算机硬件设备中,比如手机.平板电脑.路由器.视频游戏控制台.台 ...

  5. Android开发人员必知的开发资源

    developer.android.com 官方开发人员网站推荐资源 在动手编写第一个 Android 应用之前,用心读一读 Android Design 章节.尤其是以下的这些文章: Devices ...

  6. Android Camera系列开发 (二)通过Intent录制视频

    Android Camera系列开发 (二)通过Intent录制视频 作者:雨水  2013-8-18 CSDN博客:http://blog.csdn.net/gobitan/ 概述 使用Camera ...

  7. Android Camera开发系列(下)——自定义Camera实现拍照查看图片等功能

    Android Camera开发系列(下)--自定义Camera实现拍照查看图片等功能 Android Camera开发系列(上)--Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片 上 ...

  8. Android Camera开发系列(上)——Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片

    Android Camera开发系列(上)--Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片 最近也是在搞个破相机,兼容性那叫一个不忍直视啊,于是自己翻阅了一些基本的资料,自己实现了一 ...

  9. Android Camera开发:周期性循环自动聚焦auto focus挂掉原因分析(preview is not enabled)

    参考:Android Camera开发:扫描二维码,周期性循环自动聚焦auto focus挂掉原因分析(preview is not enabled) 最近做Android人脸识别时,camera在自 ...

随机推荐

  1. static方法调用

    Static方法调用,类名.方法名 int number = Integer.ParseInt(String ); 将字符串参数作为有符号的十进制整数进行解析 将数字解析成字节数组 Character ...

  2. ASP.NET-MVC中Entity和Model之间的关系

    Entity 与 Model之间的关系图 ViewModel类是MVC中与浏览器交互的,Entity是后台与数据库交互的,这两者可以在MVC中的model类中转换 MVC基础框架 来自为知笔记(Wiz ...

  3. HDU 2841

    明显,当(X,Y)=1时,是可以看见的. 这题,记得POJ 上也有类似的一题... 不过比较奇怪的是,我以为会超时,因为范围达到了100000,但竟然直接枚举没超时.... #include < ...

  4. Azure RBAC(Roles Based Access Control)正式上线了

    期盼已久的Azure RBAC(Roles Based Access Control)正式上线了. 在非常多情况下.客户须要对各种类型的用户加以区分,以便做出适当的授权决定.基于角色的訪问控制 (RB ...

  5. apiCloud中实现头部与内容分离与操作规范,App头部header固定,头部与内容分离

    官方案例 1.头部拆分成一个页面比如news-text <!doctype html> <html> <head> <meta charset="u ...

  6. Java多线程编程模式实战指南(三):Two-phase Termination模式--转载

    本文由本人首次发布在infoq中文站上:http://www.infoq.com/cn/articles/java-multithreaded-programming-mode-two-phase-t ...

  7. C#post调用接口并上传文件

    /// <summary> /// C#调用接口上传json数据,并且带文件上传 /// </summary> /// <param name="url&quo ...

  8. Java获取环境变量和系统属性

    Java获取服务器环境变量和JVM系统变量    当程序中需要使用与操作系统相关的变量(例如:文件分隔符.换行符)时,Java提供了System类的静态方法getenv()和getProperty() ...

  9. jquery.gritter 提示

    首先引入css和js文件 <link rel="stylesheet" href="<%=basePath%>assets/css/jquery.gri ...

  10. HDU 1087 Super Jumping! Jumping! Jumping!【DP】

    解题思路:题目的大意是给出一列数,求这列数里面最长递增数列的和 dp[i]表示到达地点i的最大值,那么是如何达到i的呢,则我们可以考虑没有限制条件时候的跳跃,即可以从第1,2,3,---,i-1个地点 ...