当前位置: 首页 > news >正文

Linux源码阅读笔记-V4L2框架基础介绍

V4L2视频设备驱动基础

  • V4L2 是专门为 Linux 设备设计的整套视频框架(其主要核心在 Linux 内核,相当于 Linux 操作系统上层的视频源捕获驱动框架)。为上层访问系统底层的视频设备提供一个统一的标准接口。V4L2 驱动框架能够支持多种类型设备:如视频 IO、radio 设备、VBI 设备。具体架构如下:

  • V4L2 对 uvc 免驱 usb 设备的编程框架,主要用于采集 USB 摄像头。

  • 采集方式:打开视频设备(设备视频设备的属性:绽放、裁剪等。在 Linux 编程中,直接使用 ioctl() 函数对设备 IO 通道进行管理)。
  • V4L2 操作流程:打开设备-获取设备 capability-选择视频输入-设备视频制式及帧格式-向驱动申请帧缓冲(不超过 5 个)-申请物理内存-开始视频采集-出队列以取得已经采集数据的帧缓冲,获取原始采集数据-停止视频采集 -关闭视频设备。

V4L2 驱动框架及常用数据结构

v4l2_device

  • 整个输入设备的总体结构体,有多少输入设备就会有多少 v4l2 抽象。

v4l2_file_operations

v4l2_ioctl_ops

v4l2_subdev

  • 基于 v4l2_device 之下,代表一个 v4l2 设备的子设备。
  • video_device:专门用于为用户空间提供设备节点,就相当于提供系统调用的 API 函数(ioctl、open 等)。

v4l2_subdev_ops

  • vb2_queue:v4l2 设备的缓存管理操作。


参考资料:https://it.0voice.com

http://www.lryc.cn/news/483623.html

相关文章:

  • 列表(list)
  • 使用Python抓取数据的实战指南
  • GIC寄存器介绍
  • c++实现B树(下)
  • 外星人入侵
  • 【数据仓库】hbase的安装与简单操作
  • 为什么RNN(循环神经网络)存在梯度消失和梯度爆炸?
  • 【数据库】数据库迁移的注意事项有哪些?
  • MQTT协议解析 : 物联网领域的最佳选择
  • pycharm中from[本地包]import文件/模块出现问题(最最最全方法!)
  • MongoDB在现代Web开发中的应用
  • Python Bokeh 数据可视化教程
  • (一)<江科大STM32>——软件环境搭建+新建工程步骤
  • 内存大小的单位转换
  • 如何在 Spring MVC 中使用 `@PostMapping`? 如何在 Spring MVC 中使用 `@PutMapping`?
  • AIGC Agent(智能体)应用开发高级工程师实战培训 —— 线上8周系统教学课程学习路线图
  • GDSC、CTRP数据库学习
  • 【嵌入式】ESP32开发(一)ESP-IDF概述
  • 最新6.7分非肿瘤纯生信,使用机器学习筛选慢阻肺中的关键基因。机器学习在非肿瘤生信文章中正火,可重复!
  • vue 提交表单抹除字段为空的数据
  • web实验3:虚拟主机基于不同端口、目录、IP、域名访问不同页面
  • 英伟达Isaac Manipulator产品体验
  • 网安加·百家讲坛 | 仝辉:金融机构鸿蒙应用安全合规建设方案
  • PHP Session
  • 泷羽sec学习打卡-Linux基础2
  • # 【STM32F1】——无线收发模块RF200与串口通信
  • 计算机网络:运输层 —— TCP 协议概述与 TCP 报文段首部格式
  • python正则表达式和递归
  • JAVA后端生成图片滑块验证码 springboot+js完整案例
  • Spring Boot中的自动装配机制