写在开始之前。
网上有很多文章讲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应用分析 -- 完整代码