软讯网络 > 操作系统 > Linux > usb驱动和usb摄像头驱动以及v4L之间的关系
【标 题】:usb驱动和usb摄像头驱动以及v4L之间的关系
【关键字】:
usb,usb,v4L
【来 源】:http://www.cublog.cn/u/16013/showart.php?id=145919
usb驱动和usb摄像头驱动以及v4L之间的关系
- usb摄像头驱动,需要usb驱动(host端的usb驱动)的支持,也就是说,要先安装usb驱动,然后安装摄像头驱动,好在新版本的linux内核都已经支持usb设备了,在makemenu的时候,选中进行配置。usb摄像头通过传感器获取图像数据信息,经过编码过程,最后到达usb控制器,最后传输到 pc host。在传输到pc host中是要用到urb(usb请求块)和usb设备进行通信。
- 由于usb摄像头本身也是usb设备,所以在开发驱动(设备端usb驱动)程序中,也用struct usb_device_id device_table[]={ {USB_DEVICE(idVendor,idProduct)},{}}
MODULE_DEVICE_TABLE(usb, device_table)
- v4l是linux中提供的一个音视频接口规范,所有的音视频设备的驱动编写要用的这些接口,例如:(1)程序中定义的数据结构
struct video_capability grab_cap;
struct video_picture grab_pic;
struct video_mmap grab_buf;
struct video_mbuf grab_vm;
这些数据结构都是Video4Linux 支持的,它们的用途
如下:
◆ video_capability 包含摄像头的基本信息,例如设
备名称、支持的最大最小分辨率、信号源信息等,分别
对应着结构体中成员变量n a m e [ 3 2 ] 、m a x w i d t h 、
maxheight、minwidth、minheight、channels(信号源个数)、
type 等;
◆ video_picture 包含设备采集图象的各种属性,如
brightness(亮度)、hue(色调)、contrast(对比度)、whiteness
(色度)、depth(深度)等;
◆ video_mmap 用于内存映射;
◆ video_mbuf 利用mmap 进行映射的帧信息,实际
上是输入到摄像头存储缓冲中的帧信息,包括size(帧的
大小)、frames(最多支持的帧数)、offsets(每帧相对基址
的偏移)。