V4L2视频采集设备应用程序编程总结(原)

Linux2.x内核中,一部分视频设备(特别是视频输入和采集设备)采用了V4L2模型进行驱动编程。同时提供V4L2API函数及相关数据结构以供应用程序使用.这里对V4L2视频采集设备的应用程序编程进行总结.

1.       使用的头文件:  V4L2模型使用统一的头文件来包含相关的数据结构和宏,它存在于”Linux源码目录/include/linux/videodev.h”以及”Linux源码目录/include/linux/videodev2.h”.通常一个视频设备的驱动程序头文件会包含它.因此,编程时只需要包含视频驱动对应的头文件就可以了.在这里是“/media/davinci_vpfe.h.

2.       由于在应用程序编程中涉及到V4L2数据结构。而该文件包含于Linux源码中,因此在makefile文件中要包含源码头文件的路径“-I XXX/include.

3.       编程流程如下:

 

动作

函数

变量及参数

备注

1

打开视频设备(阻塞或非阻塞)

Open

设备对应路径和名称

一般为“/dev/videoXX=0,1,2…

2

询问设备的能力和性质

Ioctl

对于输入设备,必然要支持内存映射或用户指针

3

验证视频标准的有效性,并设置设备视频标准

Ioctl

 

验证标准为设备支持的标准并进行设置后要稍微延时并查询,检查设备是否已设置为相应的标准

4

设置采集设备采集格式

Ioctl

通过配置该结构体,驱动会根据硬件调整像素实际每行的字节个数一幅图像字节数四个参数。程序应根据实际情况修改返回的结果,重新赋值。

5

请求缓冲区,并通过mmap函数映射到用户进程内存空间

Ioctl

 

1.申请缓冲可能不成功。因此通过v4l2_requestbuffers.count返回值判断是否申请到足够的缓存.一般设置2—3buffers.DaVincivpfe驱动中默认就设置了3buffers.多余3个申请失败,少于三个依然使用三个.

2.映射内存出现失败的情况后一定要将已经映射的区域取消映射后再关闭设备

6

将申请到的buffers加入到缓冲队列当中,开始采集

Ioctl

 

 

 

进行采集时先通过VIDIOC_DQBUF将一个buffer从队列中取出来,然后得到它对应映射后的起始地址。进行必要的处理。完毕后一定要将该buffer重新放入队列中,否则程序到最后将无buffer可用。

 

PS:由于无论是数字视频还是模拟视频,都会有一个i2c配置的过程。从vpfe的驱动代码来看,当设置视频标准时,驱动程序将会调用i2c驱动配置视频源的输出格式。(对于模拟信号通常是TVP5150之类的解码芯片,通过I2C配置,而对于MT9T001之类的芯片则通过I2C直接对其进行配置.)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
本课程详细、全面地介绍了 Qt 开发中的各个技术细节,并且额外赠送在嵌入式端编写Qt程序的技巧。整个课程涵盖知识点非常多,知识模块囊括 Qt-Core 组件、QWidgets、多媒体、网络、绘图、数据库,超过200个 C++ 类的分析和使用,学完之后将拥有 Qt 图形界面开发的非常坚实的功底。 每个知识点不仅仅会通过视频讲解清楚,并且会配以精心安排的实验和作业,用来保证学习过程中切实掌握核心技术和概念,通过实验来巩固,通过实验来检验,实验与作业的目的是发现问题,发现技术盲点,通过答疑和沟通夯实技术技能。注意:本套视频教程来源于线下的实体班级,因此视频中有少量场景对话和学生问答,对此比较介意的亲们谨慎购买。注意:本套视频教程包含大量课堂源码,包含对应每个知识点的精心编排的作业。由于CSDN官方规定在课程介绍中不能出现作者的联系方式,因此在这里无法直接给出QQ答疑号,视频中的源码、资料和作业文档链接统一在购买后从CSDN平台跟我沟通,我会及时回复跟进。注意:本套视频教程包含全套10套作业题,覆盖所有视频知识点,循序渐进,各个击破,作业总纲如下:下面是部分作业题目展示,每道题都有知识点说明,是检验学习效果的一大利器:(部分作业展示,为了防止盗图盗题对题干做了模糊处理)(部分作业展示,为了防止盗图盗题对题干做了模糊处理)(部分作业展示,为了防止盗图盗题对题干做了模糊处理)(部分作业展示,为了防止盗图盗题对题干做了模糊处理)(部分作业展示,为了防止盗图盗题对题干做了模糊处理)…… ……

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值