camera: V4l2 data struct
来源:互联网 发布:wifi网络超时怎么解决 编辑:程序博客网 时间:2024/06/07 23:58
控制器组成的相关数据结构:
在linux3.0以上的内核对这些结构的定义,从定义当中就可以窥探整个v4l2的框架。这些结构体有:
struct v4l2_device;
用来描述一个v4l2设备实例
描述整个host端的camera控制器的驱动
struct v4l2_subdev,
用来描述一个v4l2的子设备实例
描述控制器上的子设备,这些设备实际上完成了所有的任务,比如说(通过v4l2_subdev_ops)音视频的合成,编码,解码。对于webcam来说,子设备就是sensor和camera控制器。通常这些都是I2C设备,但也不是必须的。为了给这些子设备提供一个一致的接口,v4l2_subdev结构才应运而生。
v4l2_subdev_ops
subdev的ops种类:
struct v4l2_subdev_ops {
const struct v4l2_subdev_core_ops *core;
const struct v4l2_subdev_tuner_ops *tuner;
const struct v4l2_subdev_audio_ops *audio;
const struct v4l2_subdev_video_ops *video;
const struct v4l2_subdev_vbi_ops *vbi;
const struct v4l2_subdev_ir_ops *ir;
const struct v4l2_subdev_sensor_ops *sensor;
const struct v4l2_subdev_pad_ops *pad;
};
相关的注册包括两部分,例如:
1) v4l2_subdev相关的ops:
fimc_register_capture_device()--->fimc_create_capture_subdev()--->
v4l2_subdev_init()注册pad(host端的pad配置)的ops
static struct v4l2_subdev_ops fimc_subdev_ops = {
.pad = &fimc_subdev_pad_ops,
};
2)mipi-csis.c mipi总线的驱动:完成subdev(也就是sensor相关的ops注册)
@s5pcsis_probe(struct platform_device *pdev)----》v4l2_subdev_init(&state->sd, &s5pcsis_subdev_ops);
struct video_device;
用来创建设备节点/dev/videoX
提供给用户的操作接口,用户通过它获得v4l2设备的控制方法ops
struct v4l2_fh;
用来跟踪文件句柄实例
在打开/dev/videoX设备的时候,才注册,例如:static int fimc_capture_open(struct file *file)-----》v4l2_fh_open(file);
v4l2_ctrl_handler
是用于保存子设备控制方法集(也就是说用来控制sensor的)的结构体,对于视频设备这些ctrls包括设置亮度、饱和度、对比度和清晰度等,用链表的方式来保存ctrls,可以通过v4l2_ctrl_new_std函数向链表添加ctrls。
V4l2_fh是每个子设备的文件句柄,在打开设备节点文件时设置,方便上层索引到v4l2_ctrl_handler,v4l2_ctrl_handler管理设备的ctrls。
也是在在打开/dev/videoX设备的时候,才创建: fimc_capture_open()----》》》fimc_capture_ctrls_create(fimc);
v4l2_ctrl_add_handler()
其ops定义在:
fimc-core.c
static const struct v4l2_ctrl_ops fimc_ctrl_ops = {
.s_ctrl = fimc_s_ctrl,
};
至于可以控制那些功能,取决于cam控制?如
fimc_ctx{
....
struct v4l2_ctrl *ctrl_rotate;
struct v4l2_ctrl *ctrl_hflip;
struct v4l2_ctrl *ctrl_vflip;
struct v4l2_ctrl *ctrl_alpha;
….
}
基本的camif注册相关v4l2相关控制的数据顺序:(也就是基于v4l2的平台的video模块的驱动注册流程):
///step1 注册v4l2_device:v4l2_device
//step2:完成输入和输出设备操作的ops注册:v4l2_ioctl_ops 和 v4l2_file_operations
---1)完成输出io的ops注册,也就是输出到dispalay;
---2)完成输入io的ops注册,也就是采集camera的数据。
//step3 :注册subdev节点用来描述一个v4l2的子设备实例 v4l2_subdev
//step4:注册video_device供用户层操作。video_device
//step5:mipi-csis总线. mipi总线的驱动:完成subdev(也就是sensor控制相关的ops注册)
- camera: V4l2 data struct
- camera-------V4L2
- V4L2 soc-camera 子系统
- v4l2,camera笔记
- V4L2 soc-camera 数据结构
- camera V4L2 FIMC
- V4L2 soc-camera 数据结构
- V4L2 soc-camera 子系统
- camera V4L2 FIMC
- camera v4l2 fimc介绍
- camera驱动 v4l2/fimc
- 深入浅出,camera v4l2理解
- v4l2,camera笔记
- v4l2 camera测试程序
- v4l2,camera笔记
- v4l2,camera笔记
- Camera V4L2 架构分析
- V4L2 soc-camera 数据结构
- Scala学习笔记5 (集合 Collections)
- vim中做简单运算
- javascript 点击<div> javascript 点击链接 用javaScript点击id、点击className、再点击一个tagName
- Scala学习笔记6 (io)
- VC获得本机网络连接状态
- camera: V4l2 data struct
- 炮炮兵可爱桌面壁纸 高清
- Hibernate4在开发当中的一些改变
- 李克强晤罗马尼亚总理:加快高铁项目研究
- 定制iOS 7中的导航栏和状态栏
- Visual Studio 2013 添加MSDN+WDK Document
- 山西换帅高规格:政治局常委罕见坐镇
- 2.4 函数式类型和值
- 测试理论总结