天天看点

Linux v4l2架构学习

写在开始之前。

网上有很多文章讲v4l2架构,讲的都很好,但是很多都是讲讲主要的结构体已经注册接口这些,个人觉得入门还是要深入的去看代码,至少把整个流程粗略的看一遍,才能真正的了解架构是什么样的,调用流程是什么样的。

所以我看linux的子系统都是会去看代码,追代码,然后笔记中对代码中重要部分进行分析,这样一直追到最后,可能比较无聊,但是肯定会有收获。

建了一个qq群用于v4l2架构学习交流 :910606234

一,vivi结合v4l2应用学习v4l2架构

1.1--从vivi虚拟摄像头驱动开始分析v4l2

1.2--从应用调用vivi驱动分析v4l2 -- 应用代码编写

1.3--从应用调用vivi驱动分析v4l2 -- 应用open过程分析

1.4--从应用调用vivi驱动分析v4l2 -- 应用查询(VIDIOC_QUERYCAP)过程分析

1.5--从应用调用vivi驱动分析v4l2 -- 输入源列举(VIDIOC_ENUMINPUT)和设置(VIDIOC_S_INPUT)过程分析

1.6--从应用调用vivi驱动分析v4l2 -- 设置图像格式(VIDIOC_S_FMT)

1.7--从应用调用vivi驱动分析v4l2 -- 申请缓存(VIDIOC_REQBUFS)

1.7.1--记一次 VIDIOC_REQBUFS failed 问题

1.8--从应用调用vivi驱动分析v4l2 -- 查询(VIDIOC_QUERYBUF)缓存信息

1.9--从应用调用vivi驱动分析v4l2 -- 映射 mmap

1.10--从应用调用vivi驱动分析v4l2 -- 缓存放入队列(VIDIOC_QBUF)

1.11--从应用调用vivi驱动分析v4l2 -- 运行设备(VIDIOC_STREAMON)

1.12--从应用调用vivi驱动分析v4l2 -- select

1.13--从应用调用vivi驱动分析v4l2 -- 出队列(VIDIOC_DQBUF)

1.14--从应用调用vivi驱动分析v4l2 -- 获取camera数据

1.15--从应用调用vivi驱动分析v4l2 -- 停止设备(VIDIOC_STREAMOFF)

1.16--从应用调用vivi驱动分析v4l2 -- 应用close过程分析

1.17--从应用调用vivi驱动分析v4l2 -- 一个小的总结

二,v4l2 video 实例分析

2.1 -- 基于RV1126平台imx291分析 --- 写在开始

2.2 -- 基于RV1126平台imx291分析 --- 基于subdev的方式

2.3 -- 基于RV1126平台imx291分析 --- subdev imx291注册

2.4 -- 基于RV1126平台imx291分析 --- subdev mipi-csi-phy注册

2.5 -- 基于RV1126平台imx291分析 --- subdev mipi csi 注册

2.6 -- 基于RV1126平台imx291分析 --- subdev 回顾之前的注册

2.7 -- 基于RV1126平台imx291分析 --- video rkcif_mipi注册

2.8 -- 基于RV1126平台imx291分析 --- 统计已注册的设备信息

2.9 -- 基于RV1126平台imx291分析 --- 先研究media再分析应用调用

2.10 -- 基于RV1126平台imx291分析 --- media注册

2.11 -- 基于RV1126平台imx291分析 --- media部件注册 rkcif_mipi

2.12 -- 基于RV1126平台imx291分析 --- media部件注册 mipi csi

2.13 -- 基于RV1126平台imx291分析 --- media部件注册 mipi csi phy

2.14 -- 基于RV1126平台imx291分析 --- media部件注册 imx291

2.15 -- 基于RV1126平台imx291分析 --- media部件连接 一

2.16 -- 基于RV1126平台imx291分析 --- media部件连接 二

2.17 -- 基于RV1126平台imx291分析 --- media部件连接 三

2.18 -- 基于RV1126平台imx291分析 --- media部件连接 四

2.19 -- 基于RV1126平台imx291分析 --- open及media graph分析

2.20 -- 基于RV1126平台imx291分析 --- v4l2_pipeline_pm_use

2.21 -- 基于RV1126平台imx291分析 --- 运行设备(VIDIOC_STREAMON)

2.22 -- 基于RV1126平台imx291分析 --- 总结

三,v4l2 radio设备实例分析

        1.1 -- v4l2 radio设备分析准备工作

四,v4l2 loopback

1.1 -- v4l2loopback 简介

1.2 -- v4l2loopback -- 源码分析

1.3 -- v4l2loopback -- test例程测试及源码分析

五,v4l2 模块专题分析

        1. 模块crop及selection分析

1.1 -- v4l2架构专题模块crop及selection分析 --- 从一个camera测试说起

1.2 -- v4l2架构专题模块crop及selection分析 --- 基于rv1126平台分析

1.3 -- v4l2架构专题模块crop及selection分析 --- get_selection中V4L2_SEL_TGT_CROP_BOUNDS的目的

1.4 -- v4l2架构专题模块crop及selection分析 --- 帧数据怎么处理?

2. 模块handler分析

2.1 -- v4l2架构专题模块handler分析 --- handler的初始化及handler ctrl注册

2.2 -- v4l2架构专题模块handler分析 -- handler ctrl的注册2

2.3 -- v4l2架构专题模块handler分析 -- handler使能(1)cluster

2.4 -- v4l2架构专题模块handler分析 -- handler使能(2)s_ctrl

2.5 -- v4l2架构专题模块handler分析 -- ioctl分析

六,v4l2 疑难函数分析

       v4l2_async_notifier_parse_fwnode_endpoints_by_port 分析

v4l2_async_subdev_notifier_register 分析

七,mplane方式v4l2应用分析

1.1 为什么要分析mplane格式的v4l2应用?

1.2 mplane方式v4l2应用分析 -- VIDIOC_S_FMT(设置图像格式)

1.3 mplane方式v4l2应用分析 -- VIDIOC_REQBUFS(申请缓冲区)

1.4 mplane方式v4l2应用分析 -- VIDIOC_QUERYBUF(查询缓存信息)

1.5 mplane方式v4l2应用分析 -- mmap(映射)

1.6 mplane方式v4l2应用分析 -- VIDIOC_DQBUF(缓存放入队列)

1.7 mplane方式v4l2应用分析 -- 完整代码

继续阅读