​ 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管理模块简述相关推荐

  1. V4L2视频驱动框架---v4l2_device管理模块简述

    ​ v4l2框架由4个主要的部分(数据结构)组成: v4l2_devices(包括v4l2_subdev) :v4l2_device管理所有的设备 media_device : meida_devic ...

  2. V4L2视频驱动框架简述(转载)

    摘自:https://blog.csdn.net/LinuxArmbiggod/article/details/80310445 V4L2视频驱动框架简述 奶牛养殖场小马 2018-05-14 15: ...

  3. Linux驱动框架之v4l2视频驱动框架解析

    1.简介 v4l2是专门为linux设备设计的一套视频框架,其主体框架在linux内核,可以理解为是整个 linux 系统上面的视频源捕获驱动框架.其广泛应用在嵌入式设备以及移动端.个人电脑设备上面, ...

  4. DM6446开发攻略:V4L2视频驱动和应用分析

    针对DAVINCI DM6446平台,网络上也有很多网友写了V4L2的驱动,但只是解析Montavistalinux-2.6.10 V4L2的原理.结构和函数,深度不够.本文决定把Montavista ...

  5. 【Linux驱动】Linux--V4L2视频驱动框架

    Linux--V4L2视频驱动框架 Linux--V4L2驱动框架 一.V4L2 框架 二.V4L2驱动主要数据结构 三.V4L2提供的外部接口 四.V4L2驱动框架模板 五.虚拟摄像头驱动 参考资料 ...

  6. 【genius_platform软件平台开发】第五十二讲:Linux系统之V4L2视频驱动详解

    V4L2视频驱动详解 刚建的微信群欢迎加入一起学习.讨论: 1. 简介 1.1 视频输入输出设备(video capture device,video output device) 1.2 VBI设备 ...

  7. 【genius_platform软件平台开发】第五十八讲:Linux系统之V4L2视频驱动-VIDIOC_REQBUFS向驱动申请帧缓冲代码详解

    VIDIOC_REQBUFS向驱动申请帧缓冲代码详解 1. 概述 2. 应用层 3. 内核驱动 3.1 vb2_ioctl_reqbufs函数 3.2 vb2_core_reqbufs函数 3.3 _ ...

  8. Linux V4l2驱动 -- 框架概述

    V4l2框架简述 1 硬件 常用的电脑摄像头是USB接口,主流的智能手机摄像头是MIPI接口,另外还有像树莓派等硬件使用的CSI接口的设备.常用的智能手机Camera采用的MIPI接口,电路框架以及电 ...

  9. 深入学习Linux摄像头(二)v4l2驱动框架

    深入学习Linux摄像头系列 深入学习Linux摄像头(一)v4l2应用编程 深入学习Linux摄像头(二)v4l2驱动框架 深入学习Linux摄像头(三)虚拟摄像头驱动分析 深入学习Linux摄像头 ...

最新文章

  1. 机器人视觉三维成像技术全解析
  2. 谭浩强《C++程序设计》学习
  3. java中class对象的理解 讲得相当不错 很接地气 引用下
  4. JDK之jstat的用法
  5. bzoj1046[HAOI2007]上升序列
  6. Intel qsv + ffmpeg 硬解h264
  7. 科技、体育、创业,三者碰撞是真的野!
  8. 计算机在线问答,网络信息安全知识:公安机关发现影响计算机信息系统安全的隐患时,()。...
  9. java自动化测试_Java自动化测试(一)
  10. 用python自动办公 麻瓜_(视频教程)下载:麻瓜编程Python商业爬虫学徒计划python自动化办公麻瓜麻瓜编程...
  11. Android WIFI 分析
  12. 301. 删除无效的括号【我亦无他唯手熟尔】
  13. re匹配电话号码、邮箱地址
  14. 《LeetCode刷题》—121. 买卖股票的最佳时机
  15. 手机app网易邮箱服务器设置,网易邮箱手机上设置Exchange服务教程
  16. 敏捷mini培训总结
  17. 病案系统实施-基本知识-持续更新
  18. 写了一个增量式的爬虫,但是并不完美,希望大牛们可以指正指正!
  19. 为什么选择分布式垂直架构
  20. 电信网络性能质量测量

热门文章

  1. 程序员必做50题的解答
  2. abap bdc附加选项
  3. 电源完整性系统设计总结
  4. 榕树说技术支持(Rong Zhiyun technical support)
  5. 银行资产负债表-分科目详细解释
  6. minecraft有自带服务器吗,Minecraft服务器优化教程 —— 让多带50%的玩家不再是梦...
  7. MongoDB 5.0.8版本的使用
  8. RIA 阅读法 是什么
  9. 往事依稀浑似梦 都随风雨到心头 ——OI回忆录
  10. sqlserver 人名_SQLserver运维必备:T-SQL语句练习