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

Linux-v4l2框架

框架图在这里插入图片描述

从上图不难看出,v4l2_device作为顶层管理者,一方面通过嵌入到一个video_device中,暴露video设备节点给用户空间进行控制;另一方面,video_device内部会创建一个media_entity作为在media controller中的抽象体,被加入到media_device中的entities链表中。此外,为了保持对所从属子设备的控制,内部还维护了一个挂载了所有v4l2_subdev子设备的subdevs链表。
而对于其中每一个子设备而言,统一采用了v4l2_subdev结构体来进行描述,一方面通过嵌入到video_device,暴露v4l2_subdev子设备节点给用户空间进行控制,另一方面其内部也维护着在media controller中的对应的一个media_entity抽象体,而该抽象体也会链入到media_device中的entities链表中。
通过加入entities链表的方式,media_device保持了对所有的设备信息的查询和控制的能力,而该能力会通过media controller框架在用户空间创建meida设备节点,将这种能力暴露给用户进行控制。

Linux-v4l2框架

struct video_device {}		//创建用户层设备节点
struct media_device {} 		//media_device_init()media_device_cleanup()media_device_register()media_device_unregister()
struct v4l2_device {} 		//v4l2控制器	v4l2_device_register()v4l2_device_unregister()struct v4l2_subdev {} 		//摄像头等子设备v4l2_i2c_subdev_init()v4l2_spi_subdev_init()

media controller

媒体实体(Media Entity)
媒体端口(Media Pad)
媒体连接(Media Link)struct media_device {}
media_device_init()
media_device_cleanup()
media_device_register()
media_device_unregister()struct media_entity {}
media_entity_pads_init() //初始化entity pad
media_device_register_entity() //注册entity
media_device_unregister_entity()//卸载entitystruct media_pad {}
//分为sink pad输入端口和source pad输出端口
//输入端口负责接收数据,输出端口负责发送数据。struct media_link {}
media_create_pad_link()
media_entity_remove_links()
media_create_intf_link()
media_remove_intf_links()
http://www.lryc.cn/news/274850.html

相关文章:

  • VPC网络架构下的网络上数据采集
  • 模拟算法(模拟算法 == 依葫芦画瓢)万字
  • QtApplets-SystemInfo
  • vue3防抖函数封装与使用,以指令的形式使用
  • Hive学习(13)lag和lead函数取偏移量
  • Centos Unable to verify the graphical display setup
  • Java 说一下 synchronized 底层实现原理?
  • nginx访问路径匹配方法
  • 偌依 项目部署及上线步骤
  • PHP特性知识点扫盲 - 上篇
  • Docker一键极速安装Nacos,并配置数据库!
  • 交换机04_远程连接
  • ES6定义一个类(函数内部定义属性,,原型定义方法 ), 实现继承?
  • 使用 Process Explorer 和 Windbg 排查软件线程堵塞案例分享
  • “智慧”千里眼助力水泵站
  • C++多态性——(5)运算符重载(第二节)
  • ES -极客学习
  • 【大厂秘籍】系列 - Java多线程面试题
  • vue实现画笔回放,canvas转视频播放功能
  • Docker中镜像的相关操作
  • [python]python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频
  • 使用echarts的bmap配置项绘制区域轮廓遮罩
  • 第3章 【课后习题】(完整版)
  • redis安装与配置
  • kotlin first/last/indexOf/elementAt
  • 计算机网络——网络中要解决的问题
  • 初识STL
  • 程序员副业之无人直播助眠
  • imazing破解版百度云2.17.3(附激活许可证下载)
  • VS+QT五子棋游戏开发