v4l2 驱动

v4l2驱动的switch结构是在kernel/drivers/media/video/v4l2-ioctl.c 文件里头实现的。

一、BUFFER REQUEST:VIDIOC_REQBUFS

1.__video_do_ioctl(path: .../v4l2-ioctl.c)

In v4l2-ioctl.c file,there is a function:__video_do_ioctl, commands form user space distributed according to different macros,through ops->XXX(arg1,arg2),such as 

ops->vidioc_g_priority(file, fh, p),

2.fimc_capture_ioctl_ops(path:kernel/drivers/media/video/s5p-fimc/fimc-capture.c)

functions in structrue fimc_capture_ioctl_ops,whic in kernel/drivers/media/video/s5p-fimc/fimc-capture.c ,will be incoked.

Then  fimc_cap_reqbufs invoked,key funcition in fimc_cap_reqbufs is vb2_reqbufs

3.vb2_reqbufs (path:kernel/drivers/media/video/vidoebuf2-core.c)

in vb2_reqbufs,__vb2_queue_alloc be used to allocate a memory.

二.VIDIOC_STREAMON:streamon (start data collection),users use the command to start data collection

Base on the above procedure(beginning is :__video_do_ioctl)

1.vb2_streamon(struct vb2_queue *q, enum v4l2_buf_type type) (path: kernel/drivers/media/video/videobuf2-core.c)

In this function ret = call_qop(q, start_streaming, q, atomic_read(&q->queued_count)); is key function.start_streaming decleared in kernel/drivers/media/video/videobuf2-core.h, and be realized in file fimc-capture.c (drivers/media/video/s5p-fimc)。

FIMC is a camera controll interface,it is also undertake output function adn overlay function.

2.static int start_streaming(struct vb2_queue *q, unsigned int count)(path:kernel/drivers/media/video/s5p-fimc/fimc-capture.c)

in start_stream function ,key function fimc_pipeline_s_stream(fimc, 1); be invoked.

3.int fimc_pipeline_s_stream(struct fimc_dev *fimc, int on) (path:kernel/drivers/media/video/s5p-fimc/fimc-mdevices.c)

in this function ,ret = v4l2_subdev_call(on ? p->sensor : p->csis,video, s_stream, on);  we use this function to call subdevice's function,the subdevices function was defined in driver file,such as XXX_v4l2.c file. s_stream is a function of  v4l2_subdev_ops.now ,data collection is beginning.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
v4l2是Video for Linux 2的缩写,是Linux操作系统中用于视频设备驱动程序的接口。v4l2驱动Linux内核中的一部分,用于支持和管理视频设备的输入和输出。 v4l2驱动的功能非常丰富,主要有以下几个方面的作用: 1. 确定和管理视频设备:v4l2驱动可以识别和配置连接到计算机的各种视频设备,例如摄像头,视频采集卡等。它可以自动检测设备,并提供一个统一的接口来管理这些设备。 2. 控制视频设备的设置:v4l2驱动允许用户控制视频设备的各种参数,例如亮度、对比度、色调等。这些设置可以通过调用v4l2的API函数来进行配置,并且可以根据需要进行实时更新。 3. 数据采集和传输:v4l2驱动负责从视频设备中采集原始视频数据,并将其传输到应用程序或其他处理单元。它提供了一个缓冲区队列,用于存储采集到的数据,并且可以根据需要进行数据传输和处理。 4. 视频捕获和显示:v4l2驱动可以将采集到的视频数据传输到用户空间的应用程序中,以便进行进一步的处理或展示。它提供了丰富的功能和API来实现视频捕获和显示,如视频帧的捕获、显示大小的变换、图像处理等。 综上所述,v4l2驱动Linux系统中起着重要的作用,它提供了一种标准化的接口,使得开发者能够更方便地与各种视频设备进行交互和控制。无论是用于视频采集、视频处理还是视频展示,v4l2驱动都是不可或缺的一部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值