V4L2视频驱动框架---meida_device管理模块简述
v4l2框架由4个主要的部分(数据结构)组成:
v4l2_devices(包括v4l2_subdev) :v4l2_device管理所有的设备
media_device : meida_device框架管理运行时的pipeline
videobuf2:videobuf存储缓冲的数据
controls :controls包含主要控制接口
理解:
media framework 的引入是为了 将各个 subdev 抽象为单独的模块,并将各个模块以管道的概念连接起来,从而组装成一个完整的数据流。 media framework 就是为了可以方便的抽象并连接自己想要的模块,组成自己想要的数据流。
作用
提供实时的 pipeline 管理,pipeline 就理解为管道,想象一下水管,里面的水就是数据流,输入设备中的 csi->isp->video 就组成一个 pipeline 线路。media framework 提供 pipeline 的开启、关停、效果控制、节点控制等功能。
说明
内核当中主要利用四个结构体把众多的节点组织起来: media_device ,media_entity, media_link ,media_pad 。整个 media framework 都围绕这四个结构体来进行使用的,下文会对这些进行详细介绍。
1、media_entity:硬件设备模块抽象(类比电路板上面的各个元器件、芯片)
2、media_pad :硬件设备端口抽象(类比元器件、芯片上面的管脚)
3、media_link :硬件设备的连接抽象,link 的两端是 pad(类比元器件管脚之间的连线)
media_entity、media_pad、media_link等结构体会添加到media_device的链表中,同时它们结构体的开始字段都需是struct media_gobj,该结构中的mdev将会指向它所属的media_device。这种设计方便结构之间的查找;
media_entity中包含多个media_pad,同时media_pad又会指向它所属的media_entity;
#------------# #------------#
| __|__ __|__ |
| | | | link | | | |
| | pad |<-------->| pad | |
| |__|__| |__|__| |
| | | |
| entity | | entity |
#------------# #------------#
可以想象一下,如果各个 entity 之间需要建立连接的话,就需要在 pad 中存储 link 以及 entity 信息,link 中需要存储 pad 与 entity 信息,entity 里面需要存储 link 与 pad 信息,属于你中有我,我中有你的情况。
4、media_device: 与v4l2_device类似,也是负责将各个子模块集中进行管理,同时在注 册的时候,会向系统注册设备节点,方便用户层进行操作
media_device 主要有下面几个部件构成:
media_entity :media_device基本构件块
media_pad:pad是一个连接端点,通过它可以保证entity之间通信,pad分source pad和sink pad
media_link:link在两个pad之间定向连接,数据由source pad 流向 sink pad|---------------------------------------------------------------|
| media_device(多媒体设备) |
| |
| #------------# #------------# |
| | __|__ __|__ | |
| | | | | link | | | | |
| | | pad |<-------->| pad | | |
| | |__|__| |__|__| | |
| | | | | |
| | entity | | entity | |
| #------------# #------------# |
| |
| |
|---------------------------------------------------------------|
V4L2视频驱动框架---meida_device管理模块简述相关推荐
- V4L2视频驱动框架---v4l2_device管理模块简述
v4l2框架由4个主要的部分(数据结构)组成: v4l2_devices(包括v4l2_subdev) :v4l2_device管理所有的设备 media_device : meida_devic ...
- V4L2视频驱动框架简述(转载)
摘自:https://blog.csdn.net/LinuxArmbiggod/article/details/80310445 V4L2视频驱动框架简述 奶牛养殖场小马 2018-05-14 15: ...
- Linux驱动框架之v4l2视频驱动框架解析
1.简介 v4l2是专门为linux设备设计的一套视频框架,其主体框架在linux内核,可以理解为是整个 linux 系统上面的视频源捕获驱动框架.其广泛应用在嵌入式设备以及移动端.个人电脑设备上面, ...
- DM6446开发攻略:V4L2视频驱动和应用分析
针对DAVINCI DM6446平台,网络上也有很多网友写了V4L2的驱动,但只是解析Montavistalinux-2.6.10 V4L2的原理.结构和函数,深度不够.本文决定把Montavista ...
- 【Linux驱动】Linux--V4L2视频驱动框架
Linux--V4L2视频驱动框架 Linux--V4L2驱动框架 一.V4L2 框架 二.V4L2驱动主要数据结构 三.V4L2提供的外部接口 四.V4L2驱动框架模板 五.虚拟摄像头驱动 参考资料 ...
- 【genius_platform软件平台开发】第五十二讲:Linux系统之V4L2视频驱动详解
V4L2视频驱动详解 刚建的微信群欢迎加入一起学习.讨论: 1. 简介 1.1 视频输入输出设备(video capture device,video output device) 1.2 VBI设备 ...
- 【genius_platform软件平台开发】第五十八讲:Linux系统之V4L2视频驱动-VIDIOC_REQBUFS向驱动申请帧缓冲代码详解
VIDIOC_REQBUFS向驱动申请帧缓冲代码详解 1. 概述 2. 应用层 3. 内核驱动 3.1 vb2_ioctl_reqbufs函数 3.2 vb2_core_reqbufs函数 3.3 _ ...
- Linux V4l2驱动 -- 框架概述
V4l2框架简述 1 硬件 常用的电脑摄像头是USB接口,主流的智能手机摄像头是MIPI接口,另外还有像树莓派等硬件使用的CSI接口的设备.常用的智能手机Camera采用的MIPI接口,电路框架以及电 ...
- 深入学习Linux摄像头(二)v4l2驱动框架
深入学习Linux摄像头系列 深入学习Linux摄像头(一)v4l2应用编程 深入学习Linux摄像头(二)v4l2驱动框架 深入学习Linux摄像头(三)虚拟摄像头驱动分析 深入学习Linux摄像头 ...
最新文章
- 机器人视觉三维成像技术全解析
- 谭浩强《C++程序设计》学习
- java中class对象的理解 讲得相当不错 很接地气 引用下
- JDK之jstat的用法
- bzoj1046[HAOI2007]上升序列
- Intel qsv + ffmpeg 硬解h264
- 科技、体育、创业,三者碰撞是真的野!
- 计算机在线问答,网络信息安全知识:公安机关发现影响计算机信息系统安全的隐患时,()。...
- java自动化测试_Java自动化测试(一)
- 用python自动办公 麻瓜_(视频教程)下载:麻瓜编程Python商业爬虫学徒计划python自动化办公麻瓜麻瓜编程...
- Android WIFI 分析
- 301. 删除无效的括号【我亦无他唯手熟尔】
- re匹配电话号码、邮箱地址
- 《LeetCode刷题》—121. 买卖股票的最佳时机
- 手机app网易邮箱服务器设置,网易邮箱手机上设置Exchange服务教程
- 敏捷mini培训总结
- 病案系统实施-基本知识-持续更新
- 写了一个增量式的爬虫,但是并不完美,希望大牛们可以指正指正!
- 为什么选择分布式垂直架构
- 电信网络性能质量测量
热门文章
- 程序员必做50题的解答
- abap bdc附加选项
- 电源完整性系统设计总结
- 榕树说技术支持(Rong Zhiyun technical support)
- 银行资产负债表-分科目详细解释
- minecraft有自带服务器吗,Minecraft服务器优化教程 —— 让多带50%的玩家不再是梦...
- MongoDB 5.0.8版本的使用
- RIA 阅读法 是什么
- 往事依稀浑似梦 都随风雨到心头 ——OI回忆录
- sqlserver 人名_SQLserver运维必备:T-SQL语句练习