V4l2框架基础知识(三)

news2024/12/27 12:48:33

V4L2框架概述
V4L2框架主要部分组成:
V4L2_device:管理所有设备;
media_device:media_device框架管理运行时的pipeline;

V4L2_device

这个是整个输入设备的总结构体,可以认为他是整个V4L2框架的入口,由该结构体引申出来v4L2_subdev。用于视频输入设备整体的管理,有多少输入设备就有多少个v4l2_device抽象(比如一个USB摄像头或者一个IPC等),再往下分时输入子设备例如:ISP,CSI,MIPI等。他们时从属于V4L2之下的。

struct v4l2_device {
         charname[V4L2_DEVICE_NAME_SIZE];    //device 名字
         structkref ref;      //引用计数
         structlist_head subdevs;    //用链表管理注册的subdev
         struct media_device *mdev;		//管理组成media link的媒体设备
         struct v4l2_ctrl_handler *ctrl_handler;		//该v4l2设备的控制接口
         ……
};

在这里插入图片描述

media_device

用于运行时数据流的管理,嵌在V4L2_device内部,运行时的意思就是:一个V4L2_device下属可能有非常多同类型的子设备(两个或者多个sensor、ISP等),那么在设备运行时我怎么知道我的数据流需要用到哪一个类型的哪一个子设备呢。这时就需要media_device出手了,它为这一坨子设备建立一条虚拟的连线,建立起来一个运行时的pipeline(管道),并且可以在运行时动太改变、管理接入的设备。
V4L2视频驱动框架—meida_device管理模块简述
理解:
media frame的引入就是为了将各个subdev抽象成单独的模块,并将各个模块以管道的概念连接起来,从而组装成一个完整的数据流。
作用:
提供实时的pipeline管理,pipeline就理解为管道,想象一下水管,里面的水就是数据流,输入设备中的csi->isp->video就组成一个pipeline线路。media frame提供pipeline的开启、关停、效果、节点控制等功能。
说明:
内核当中主要利用四个结构体来把众多的节点组织起来:media_device,media_entity,media_link,meida_pad。整个media framework都围绕这四个结构体来进行使用的。
media_entity:硬件模块抽象(类比芯片)
media_pad:硬件端口抽象(类比芯片管脚)
media_link:硬件设备的链接抽象,link的两端是pad(类比元器件管脚连线)
media_entity中包含多个media_pad,同时media_pad又会指向它所属的media_entity;

#------------#                #------------#
|          __|__            __|__          |
|         |  |  |   link   |  |  |         |
|         | pad |<-------->| pad |         |
|         |__|__|          |__|__|         |
|            |                |            |
|   entity   |                |   entity   |
#------------#                #------------# 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/350547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享53戏源代码总有一个是你想要的(亲测每一个均可用)

收集整理不容易老铁支持我动力&#xff01; 53戏源代码下载链接&#xff1a;https://pan.baidu.com/s/1MI_EvHNFKoUu-l8LR6MAmg?pwdass5 提取码&#xff1a;ass5 下面是项目的名字&#xff0c;我放了一些图片&#xff0c;大家下载后可以看到。 c#版植物大战僵尸 H5纸牌接龙…

猿人学 第十六题

使用XHR断点找到XHR发送位置向上跟栈&#xff0c;会发现在ajax中发现m已经生成&#xff0c;向上追踪代码继续向上追&#xff0c;发现m在i中出现&#xff0c;并在r.m中生成进入n[e(528)]方法&#xff0c;发现作用只是返回e(t)p_s为获取当时时间的方法 btoa为方法点击进入btoa方法…

玩机搞机------高级改良型高通工程线制作方法。

很多普通玩家对工程线的定义还停留在早期短接红绿端的操作认知上。例如这个 常规制作工程线 或者短接主板触点方式 今天给大家描述的是更高级改良型的工程线。因为前期的这种工程线对于米6或者其他同时期机型已经不起任何作用。后期机型进入高通edl模式就需要拆机手动短接主板触…

pytorch各种版本最简单安装,不用自己安装cuda cudnn

pytorch各种版本 pip 安装命令 查看官网 https://pytorch.org/get-started/previous-versions/ conda pytorch 安装 1、安装conda&#xff0c; 2、创建并并激活虚拟环境 - conda create -n pytorch_1.7 python3.7 - conda activate pytorch_1.7 3、虚拟环境中 pip 安装想要的…

升级Room引发的惨案!!

kotlin升级 在升级kotlin的时候&#xff0c;直接升级到大版本的kotlin&#xff08;比如1.7以上&#xff09;&#xff0c;直接报错&#xff0c;只是报错不知道原因。 koltin Release details 后来把koltin版本改成1.6.0&#xff0c;报如下的错&#xff0c;我们才知道gradle是需…

积水内涝监测——埋入式积水终端设备介绍

一、设备概述 埋入式积水终端是针对城市内涝推出的积水信息监测采集设备&#xff0c;采用超声波传感技术&#xff0c;对积水的深度进行精确的测量。产品能够在低温、腐蚀环境下可靠运行本产品特别适用于智慧城市中&#xff0c;对城市道路、社区低洼处的积水进行实时监测上报到…

(十)、通过云对象修改阅读量+点赞功能的实现【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1&#xff0c;通过云对象importObj修改阅读量 1.1 新建云对象 1.2 云对象中写自增自减方法 封装云对象utilsObj中的自增自减方法&#xff0c;方法名取为operation&#xff0c;传递4个参数。 // 云对象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj // jsdoc语法提…

火山引擎数智平台的这款产品,正在帮助 APP 提升用户活跃度

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 你有没有关注过 APP 给你推送的消息&#xff1f; 出于提升用户活跃度的考虑&#xff0c;APP 会定期在应用内面向用户进行内通推送&#xff0c;推送形式既包括 APP …

查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决

查看jdk安装路径&#xff0c; 在windows上实现多个java jdk的共存解决办法&#xff0c; 安装java19后终端乱码的解决 目录 一、查看jdk&#xff08;java开发工具包&#xff09;安装路径的方法 二、在windows上实现多个java jdk的共存 &#xff08;1&#xff09;、安装好多…

【数据宝应用场景】智慧工地哪些场景需要用到哪些大数据?

近几年来&#xff0c;我国施工安全管理日趋严格&#xff0c;人力成本逐渐提升&#xff0c;人力成本压力逐渐增加&#xff0c;通过大数据、物联网、云计算和智能设备等软硬件信息化技术能有效提升工地的生产效率、管理效率等&#xff0c;实现工地的数字化、精细化、智慧化管理&a…

WGCNA | 值得你深入学习的生信分析方法!~(网状分析-第四步-模块的功能注释)

1写在前面 前面我们用WGCNA分析得到多个模块&#xff0c;其中有一些模块和我们感兴趣的表型或者临床特征是相关的。&#x1f973; 接着就是要做模块的富集分析了&#xff0c;帮助我们了解这些模块的基因都有哪些已知的功能&#xff0c;涉及到哪些通路&#xff0c;在哪些疾病中最…

贪心算法-蓝桥杯

一、贪心算法的优缺点优点&#xff1a;1.容易理解:生活常见。2.操作简单:在每一步都选局部最优。3.效率高: 复杂度常常是O(1)的。缺点&#xff1a;1.局部最优不一定是全局最优。二、例子: 最少硬币问题硬币面值1、2、5。支付13元&#xff0c;要求硬币数量最少。贪心法: (1) 5元…

工程项目管理系统源码之工程项目管理系统面临的挑战

​ ​工程项目管理系统是指从事工程项目管理的企业&#xff08;以下简称工程项目管理企业&#xff09;受业主委托&#xff0c;按照合同约定&#xff0c;代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 ​系统定义 工程项目管理企业不直接与该工程项目的总承包…

电商项目之电子账户的收单模式

文章目录1 问题背景2 前言3 什么是电子账户支付方式4 什么是收单模式5 电子账户有哪些收单模式5.1 Direct Pay模式5.2 Auth Capture模式5.3 ESCOW模式6 区别1 问题背景 笔者从事电商开发有1年多&#xff0c;对接了10几个信用卡支付方式&#xff0c;也接触了像PayPal这种电子账户…

零基础学习测试还是开发?

软件测试作为IT行业的刚需职位&#xff0c;其实是非常适合0基础的小白同学加入学习的但是具体选择测试还是开发还是要看你个人的兴趣爱好以及学习能力&#xff0c;对哪个感兴趣&#xff0c;哪个能学的会就选择哪个就可以了 平时说起程序员印象中大都是做Java、做前端、做后端&…

春招Leetcode刷题日记-D4-双指针算法-滑动窗口快慢指针

D4-双指针算法-滑动窗口&&快慢指针快慢指针算力扣141. 环形链表思路代码力扣142. 环形链表 II思路代码滑动窗口力扣76. 最小覆盖子串思路代码力扣424. 替换后的最长重复字符思路代码快慢指针算 快慢指针算法&#xff0c;多用于链表当中&#xff0c;常见的如&#xff1…

Java锁相关知识

目录 线程安全 对象头Mark 偏向锁 轻量级锁 减少锁持有时间 减小锁粒度 锁分离 锁粗化 锁消除 无锁自旋锁 线程安全 多线程访问ArrayList 多线程网站统计访问人数,是否需要精确统计&#xff1f;如果不需要&#xff0c;可以不进行加锁 public static List<Integ…

ROS2 humble安装-chatgpt版本

如果按照chatgpt版本可能不合适。请一定要参考官网。ROS (Robot Operating System) 是一个开源的机器人操作系统&#xff0c;提供了一系列软件库和工具&#xff0c;用于构建机器人应用程序。以下是在 Ubuntu 系统中安装 ROS Humble 的详细步骤和方法&#xff1a;首先&#xff0…

网络安全入门必备:渗透常用命令速查手册

系统信息 arch #显示机器的处理器架构(1) uname -m #显示机器的处理器架构(2) uname -r #显示正在使用的内核版本 dmidecode -q #显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda #罗列一个磁盘的架构特性 hdparm -tT /dev/sda #在磁盘…

CMake系列:正确使用多配置编译系统

目录 常见错误 问题现象 正确做法 if指令应该什么时候使用 活学活用 把IF指令用于多配置编译系统是很多初学者容易犯下的错误。这篇文章启示性的教你如何正确理解、使用CMake的多配置编译系统。 常见错误 以Debug和Release配置有不同的宏定义为例&#xff0c;如下所示&a…