V4L2 架构简单分析

5 篇文章 0 订阅

目前只是对自己理解的V4L2核心做一下简单的分析与总结

剩下的就是一些 ioctl函数的操作了

 

 

2.1 VIDIOC_QUERYCAP 查询设备能力

2.2 VIDIOC_ENUM_FMT 枚举(查询)设备支持的视频格式

2.3 VIDIOC_S_FMT 设置视频格式

 2.4 VIDIOC_G_FMT 获得设置好的视频格式

 2.5 VIDIOC_REQBUFS 请求在内核空间分配视频缓冲区

2.6 VIDIOC_QUERYBUF 查询分配好的 buffer 信息

2.7 mmap

2.8 VIDIOC_QBUF 

2.9 VIDIOC_STREAMON

2.10 select

2.11 VIDIOC_DQBUF

详情参考

LINK:https://blog.csdn.net/lizuobin2/article/details/53006927#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一般来说,使用v4l2架构可以分为以下几个步骤: 1. 设备的初始化和打开:首先需要初始化并打开视频设备。这可以通过在应用程序中调用v4l2 API来完成。应用程序需要指定设备的路径或标识符,并使用v4l2_open()函数打开设备。 2. 查询和设置设备参数:一旦设备打开,应用程序可以使用v4l2 API查询和设置设备的参数。这包括视频格式、分辨率、帧率、曝光时间等。通过调用v4l2_querycap()和v4l2_ioctl()等函数,应用程序可以获取设备的能力信息,并使用v4l2_s_fmt()和v4l2_g_fmt()等函数设置和获取设备参数。 3. 请求和分配内存缓冲区:接下来,应用程序需要请求和分配内存缓冲区,用于存储从设备采集的视频数据或将视频数据输出到设备。通过调用v4l2_requestbuffers()和v4l2_mmap()等函数,应用程序可以向内核请求分配内存缓冲区,并将其映射到应用程序的地址空间。 4. 采集和输出数据:一旦内存缓冲区准备就绪,应用程序可以开始进行数据的采集和输出。通过调用v4l2_queuebuf()将空闲的缓冲区加入采集队列,然后通过v4l2_dqbuf()从采集队列中获取已经填充数据的缓冲区。类似地,对于数据输出,应用程序可以将填充了数据的缓冲区加入输出队列,然后使用v4l2_qbuf()和v4l2_dqbuf()函数进行操作。 5. 设备的关闭和资源释放:最后,当应用程序不再需要使用视频设备时,需要关闭设备并释放相关的资源。通过调用v4l2_close()函数关闭设备,并使用v4l2_munmap()函数释放内存缓冲区的映射。 需要注意的是,具体的操作步骤可能会因应用程序的需求和设备的特性而有所不同。但是整体上,这些步骤涵盖了使用v4l2架构进行视频设备访问和控制的基本流程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值