一、V4L2应用层调用流程
二、V4L2设备注册
三、video设备初始化
四、V4L2 control结构框架图
五、v4l2 ctrl 函数初始化—增加标准接口v4l2_ctrl_new_std
六、v4l2 ctrl 函数初始化—增加自定义接口v4l2_ctrl_new_custom
七、V4L2 ioctl 标准接口 调用流程
八、V4L2 ioctl 控制接口 调用流程
首先介绍下几个核心的结构体
struct v4l2_ctrl:control的结构体抽象,一个control就用一个实例化的v4l2_ctrl变量来表示
struct v4l2_ctrl_ref:一个实例化的v4l2_ctrl的引用,可以看到该结构体里面包含一个struct v4l2_ctrl*类型的指针变量,该指针成员指向的就是与之一一对应的v4l2_ctrl实例化对象
struct v4l2_ctrl_handler:control的集合,就比如一个设备他有很多个control,这些这些众多的control被实例化为一个个的v4l2_ctrl变量,然后一一对应一个v4l2_ctrl_ref实例化对象,最后所有的v4l2_ctrl_ref都归属到同一个v4l2_ctrl_handler实例化对象中,并且受到v4l2框架与设备驱动的管理