linux v4l2 驱动框架,V4L2驱动程序架构.pdf

1 V4L2

1 V4L2简介

11 VV44LL22

video4linux2(V4L2)是Linux内核中关于视频设备的内核驱动,它为Linux

中视频设备访问提供了通用接口,在Linux系统中,V4L2驱动的Video设备节点

路径通常/dev/video/中的videoX

V4L2驱动对用户空间提供字符设备,主设备号为81,对于视频设备,其次设备号

为0-63。除此之外,次设备号为64-127的Radio设备,次设备号为192-223的是

Teletext设备,次设备号为224-255的是VBI设备

V4L2驱动的Video设备在用户空间通过各种ioctl调用进行控制,并且可以使用

mmap进行内存映射

1.1 V4L2驱动主要使用的ioctl

1.1 V4L2驱动主要使用的ioctl

11..11VV44LL22驱驱动动主主要要使使用用的的iiooccttll

命令值如下所示:

#define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability) /*查询能

力*/

#define VIDIO_G_FMT _IOWR('V', 4, struct v4l2_format) /*获得格式*/

#define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format) /*设置格式*/

#define VIDIOC_REQBUFS _IOWR('V', 8, strut v4l2_requestbuffers) /*申请

内存*/

#define VIDIOC_G_FBUF _IOW('V', 10, struct v4l2_framebuffer) /*获得

Framebuffer*/

#define VIDIOC_S_BUF _IOW('V', 11, struct v4l2_framebuffer) /*设置

Framebuffer*/

#define VIDIOC_OVERLAY _IOW('V', 14, int) /*设置Overlay*/

#define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer) /*将内存加入队

列*/

#define VIDIOC_DQBUF _IOWR('V', 17, strut v4l2_buffer) /*从队列取出内

存*/

#define VIDIOC_STREAMON _IOW('V', 18, int) /*开始流*/

#define VIDIOC_STREAMOFF _IOW('V', 19, int) /*停止流*/

#define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control) /*得到控制*/

#define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control) /*设置控制*/

1.2 重要结构

1.2 重要结构

11..22 重重要要结结构构

头文件 include/linux/videodev2.h

include/media/v4l2-dev.h

V4L2驱动核心实现文件:driver/media/video/v4l2-dev.c

v4l2-dev.h中定义的video_device 是V4L2驱动程序的核心数据结构

structvideo_device

{

const struct v4l2_file_operations *fops;

struct cdev*cdev;//字符设备

struct device *parent;//父设备

struct v4l2_device*v4l2_dev;//父v4l2_device

charname[32];//名称

int vfl_type;//类型

int minor;//次设备号

/*释放回调*/

void (*release)(structvideo_device *vdev);

/*ioctl 回调*/

const struct v4l2_ioctl_ops *ioctl_ops;

}

常用的结构

参见/include/linux/videodev2.h

1)设备能力结构

structv4l2_capability

{

__u8 driver[16];//驱动名

__u8 card[32];//例如Haup

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值