uvc-driver.c分析
来源:互联网 发布:spss sas r python 编辑:程序博客网 时间:2024/06/10 21:38
该程序为USB摄像头驱动程序。
在编写驱动程序之前需要先了解UVC相关的规则, 推荐USB_Video_Payload_MJPEG_1.5文档。UVC规范中说明了一个UVC设备需要实现一个VC(Video Control)接口和若干个VS(Video Streaming)接口,其中VC接口用于控制设备的功能,而VS接口用于传输视频数据流。
程序分析:
uvc_driver.c
从uvc_init函数开始看:
usb_register(&uvc_driver.driver); //注册usb设备
.driver = {
.name= "uvcvideo",
.probe= uvc_probe,
.disconnect= uvc_disconnect,
.suspend= uvc_suspend,
.resume= uvc_resume,
.reset_resume= uvc_reset_resume,
.id_table= uvc_ids,
.supports_autosuspend = 1,
},
对于uvc_probe函数:
uvc_register_chains(dev)
uvc_register_terms(dev, chain);
uvc_register_video(dev, stream);
vdev->fops = &uvc_fops; / /在uvc_v4l2.c里定义
const struct v4l2_file_operations uvc_fops = {
.owner = THIS_MODULE,
.open = uvc_v4l2_open,
.release = uvc_v4l2_release,
.unlocked_ioctl= uvc_v4l2_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl32= uvc_v4l2_compat_ioctl32,
#endif
.read = uvc_v4l2_read,
.mmap = uvc_v4l2_mmap,
.poll = uvc_v4l2_poll,
#ifndef CONFIG_MMU
.get_unmapped_area = uvc_v4l2_get_unmapped_area,
#endif
};
video_register_device(vdev, VFL_TYPE_GRABBER, -1); / /进入到v4l2_dev.c进行注册,cdev_alloc( );cdev_add( );
uvc_v4l2.c:
const struct v4l2_file_operations uvc_fops = {
.owner = THIS_MODULE,
.open = uvc_v4l2_open,
.release = uvc_v4l2_release,
.unlocked_ioctl= uvc_v4l2_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl32= uvc_v4l2_compat_ioctl32,
#endif
.read = uvc_v4l2_read,
.mmap = uvc_v4l2_mmap,
.poll = uvc_v4l2_poll,
#ifndef CONFIG_MMU
.get_unmapped_area = uvc_v4l2_get_unmapped_area,
#endif
};
static long uvc_v4l2_ioctl
return video_usercopy(file, cmd, arg, uvc_v4l2_do_ioctl);
uvc_v4l2_do_ioctl
case VIDIOC_QUERYCAP:
case VIDIOC_QUERYCTRL:
...... / /对ioctl控制指令进行处理
- uvc-driver.c分析
- usb gadget uvc driver的code分析
- Linux UVC driver
- Linux UVC driver
- linux uvc camera driver
- linux uvc usb camera driver
- Linux uvc驱动分析
- uvc 协议分析
- Linux USB Video Class (UVC) driver
- Linux UVC driver 独立交叉编译记录
- The Linux USB Video Class (UVC) driver
- UVC
- UVC
- uvc
- Linux uvc cameras driver (arm,mips ,x86 or others)
- uvc driver驱动移植-原创-2014-7-19
- UVC设备驱动之描述符分析
- Android USB Camera(2) : UVC协议分析
- hdu 4183 Pahom on Water (最大流)
- Java Session的简单运用 可用于自动登录以及保存需要的数据等
- PHP数组交集函数的实例讲解
- c++ set使用(增删查遍历)
- Tomcat服务器集群与负载均衡实现
- uvc-driver.c分析
- Android Framework与AOSP源码对应关系
- Eclipse使用Maven创建普通Java工程时错误:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-
- [ DP 树状数组 dfs序 倍增 ] Codeforces856D Masha and Cactus
- spring cloud 配置中心的部署
- 在java中使用log4j
- 苹果手机点击输入框页面自动放大
- 自动化运维工具Saltstack学习笔记(salt-ssh/salt-api/salt-syndic)
- 【LCA+打标记】BZOJ4719(UOJ#261) [Noip2016]天天爱跑步