V4l2:Video for Linux 2

全网最秀最好听的 DANCE MONKEY - Peter Bence (Piano Cover)

 

 

Video for Linux 2,简称V4l2,是Linux内核中关于视频设备的内核驱动框架,为上层的访问底层的视频设备提供了统一的接口。凡是内核中的子系统都有抽象底层硬件的差异,为上层提供统一的接口和提取出公共代码避免代码冗余等好处。

é£ç­

 

USB video class(又称为USB video device class or UVC)就是USB device class视频产品在不需要安装任何的驱动程序下即插即用,包括摄像头、数字摄影机、模拟视频转换器、电视卡及静态视频相机。

V4L2就是用来管理UVC设备的并且能够提供视频相关的一些API

我们以Linux kernel 4.8.17为例,分析下实现过程: 
drivers\media\usb\uvc\uvc_driver.c文件:

[CODE]

 

从代码的角度,简单来讲,uvc首先是usb协议的视频子类,所以:
首先是一个usb设备,对应一个usb驱动和设备;
然后,又是一个一个视频设备,在usb驱动的probe注册为一个视频设备,而这个视频可以通过linux的视频驱动架构v4l2来驱动。

                ---- JiMoKuangXiangQu

 

UVC的linux  kernel驱动程序和支持的硬件设备都在这里有相关的描述:http://www.ideasonboard.org/uvc/。

判断一个摄像头是否属于UVC规范可以使用如下方法:

1 使用lsusb命令或其他硬件信息查看工具,找出摄像头的设备号(Vendor ID)和产品号(Product ID)。

2 查找是否有视频类借口信息

lsusb -d VID:PID -v | grep "14 Video"

如果兼容UVC,则会输出类似信息

bFunctionClass 14 Video

bInterfaceClass 14 Video

bInterfaceClass 14 Video

bInterfaceClass 14 Video

如果没有以上信息,则是non-UVC设备。
 

 

 

Reference 

1  ...  losed ...

 

 

 

你可能感兴趣的:(图形)