V4L2
文章平均质量分 95
yasin墨染锦年
嵌入式软件工程师,欢迎骚扰
展开
-
【V4L2】V4L2框架-control的数据结构
假设说现在有八个 id 值是从 1~8 的 contorl,如果是采用除法来进行「桶」查找的话,这八个 contorl 都会被放到第一个「桶」里面(下标为0),这样子就失去了「桶」的优化作用(想象一下桶排序的原则),而如果是取模的话这八个 contorl 就会均匀分布在八个「桶」里面,这就有点桶排序的意思了,查找的时候也非常快。原创 2024-03-15 08:41:40 · 699 阅读 · 0 评论 -
【V4L2】V4L2框架-control(二)
实现结构体通常情况下需要设置s_ctrlbreak;break;return 0;添加至里面添加自定义的配置结构体.flags = V4L2_CTRL_FLAG_SLIDER, // 必要的.max = 15,.step = 1,其中菜单类型、普通类型、不同标志位的 ctrl 都可以通过结构体来进行配置。原创 2024-03-14 15:36:06 · 1156 阅读 · 0 评论 -
【V4L2】V4L2框架-control(一)
既然涉及到视频输入,就会有很多与 ISP 相关的效果,比如对比度、饱和度、色温、白平衡等等,这些都是通用的、必须的控制项,并且大多数仅需要设置一个整数值即可。V4L2 很贴心地为我们提供了这样一些接口以供使用(可以说是非常贴心的了),在内核里面,这些控制项被抽象为一个个的控制 ID,分别以来命名。有许多控制函数并不是单个驱动特定的,这些通用的控制 API 可以挪到 V4L2 内核框架里面。而留给驱动开发者的问题只是以下几个点:明确自己需要什么样的 control怎样去添加一个 control。原创 2024-03-14 15:22:42 · 771 阅读 · 0 评论 -
【v4l2】V4L2框架-videobuf2(一)
videobuf2 用于连接 V4L2 驱动层与用户空间层,提供数据交流的通道,它可以分配并管理视频帧数据。videobuf 层实现了很多 ioctl 函数,包括 buffer 分配、入队、出队和数据流控制。为什么要有videobuf2?因为 videobuf1 存在者下面的问题(原文收录于赫尔欣基峰会会议的 PPT 文档中,摘录如下)不完善的以及错误的内存管理a. 不能停止 streaming(在 streamoff 的时候,buffer 被释放,从而无法灵活地再次开启 stream);原创 2024-03-12 10:30:52 · 843 阅读 · 0 评论 -
【v4l2】V4L2框架-videobuf2(二)
【V4L2】V4L2框架简述【V4L2】V4L2框架之驱动结构体【V4L2】V4L2子设备【V4L2】V4L2框架-media device【V4L2】V4L2框架-videobuf2。原创 2024-03-12 10:40:43 · 1094 阅读 · 0 评论 -
【V4L2】V4L2框架-media device
【V4L2】V4L2框架简述【V4L2】V4L2框架之驱动结构体【V4L2】V4L2子设备【V4L2】V4L2框架-media device。原创 2024-02-06 15:05:14 · 755 阅读 · 0 评论 -
【V4L2】V4L2框架-v4l2 device
【V4L2】V4L2框架-v4l2 device。原创 2023-09-01 10:16:23 · 2642 阅读 · 0 评论 -
【V4L2】V4L2子设备
【V4L2】V4L2框架简述【V4L2】V4L2框架之驱动结构体【V4L2】V4L2子设备。原创 2023-09-01 10:16:16 · 2792 阅读 · 0 评论 -
【V4L2】V4L2框架之驱动结构体
第一章 Python 机器学习入门之pandas的使用第二章 V4L2框架之驱动结构体。原创 2023-09-01 10:15:59 · 2501 阅读 · 0 评论 -
【V4L2】V4L2框架简述
几乎所有的设备都有多个 IC 模块,它们可能是实体的(例如 USB 摄像头里面包含 ISP、sensor 等)、也可能是抽象的(如 USB 设备里面的抽象拓扑结构),它们在 /dev 目录下面生成了多个设备节点,并且这些 IC 模块还创建了一些非 v4l2 设备:DVB、ALSA、FB、I2C 和输入设备。正是由于硬件的复杂性,v4l2 的驱动也变得非常复杂。特别是 v4l2 驱动要支持 IC 模块来进行音/视频的混合/编解码操作,这就更加使得 v4l2 驱动变得异常复杂。原创 2023-09-01 10:15:37 · 715 阅读 · 0 评论