文章目录
1、V4L2简介
V4L2是Video for Linux 2的简称,是Linux中关于视频设备的内核驱动框架。视频设备驱动主要可以分为V4L2框架和硬件相关层两层。V4L2主要是将视频相关的共性操作框架提取出来,硬件相关层来对接各自的设备差异部分。在Linux系统中,视频捕获设备节点通常为/dev/videoX,例如/dev/video0、/dev/video1…
V4L2不仅仅是支持视频捕获设备,它还支持其他相关的设备,通常情况下它的主设备号为81,次设备号0~63对应grabber(视频捕捉)设备、次设备号64~127对应radio设备、次设备号224~255对应VBI设备、次设备号128~191对应其他设备,这点可以在后面驱动层的代码中验证。
1.1 来自内核文档的介绍
由于硬件的复杂性,V4L2驱动程序往往非常复杂:大多数设备有多个IC,在/dev中导出多个设备节点,还创建非V4L2设备,如DVB、ALSA、FB、I2C和输入(IR)设备。特别是V4L2驱动程序必须设置支持集成电路来做音频/视频混合/编码/解码,这使得它比大多数更加复杂。通常这些集成电路通过一个或多个I2C总线连接到主桥接驱动器,但也可以使用其他总线。这样的设备称为“子