Android设备驱动之——V4L2


Video for Linux Two

V4L2的是V4L的第二个版本。原来的V4L被引入到Linux内核2.1.x的开发周期后期。Video4Linux2修正了一些设计缺陷,并开始出现在2.5.X内核。Video4Linux2驱动程序包括Video4Linux1应用的兼容模式,但实际上,支持是不完整的,并建议V4L2的设备使用V4L2的模式。现在,该项目的DVB-Wiki托管在LinuxTV的网站上。

要想了解 V4l2 有几个重要的文档是必须要读的,Documentation/video4linux目录下的V4L2-framework.txt和videobuf、V4L2的官方API文档V4L2 API Specification 、drivers/media/video目录下的vivi.c(虚拟视频驱动程序 -此代码模拟一个真正的视频设备V4L2 API)。

V4l2可以支持多种设备,它可以有以下几种接口:

1. 视频采集接口(video capture interface):这种应用的设备可以是高频头或者摄像头.V4L2的最初设计就是应用于这种功能的.

2. 视频输出接口(video output interface):可以驱动计算机的外围视频图像设备--像可以输出电视信号格式的设备.

3. 直接传输视频接口(video overlay interface):它的主要工作是把从视频采集设备采集过来的信号直接输出到输出设备之上,而不用经过系统的CPU.

4. 视频间隔消隐信号接口(VBI interface):它可以使应用可以访问传输消隐期的视频信号.

5. 收音机接口(radio interface):可用来处理从AM或FM高频头设备接收来的音频流.

V4L2 驱动核心

V4L2 的驱动源码在 drivers/media/video目录下,主要核心代码有:

              v4l2-dev.c                  //linux版本2视频捕捉接口,主要结构体 video_device 的注册

v4l2-common.c        //在Linux操作系统体系采用低级别的操作一套设备structures/vectors的通用视频设备接口。

                                  //此文件将替换videodev.c的文件配备常规的内核分配。

v4l2-device.c            //V4L2的设备支持。注册v4l2_device

v4l22-ioctl.c             //处理V4L2的ioctl命令的一个通用的框架。

v4l2-subdev.c          //v4l2子设备

v4l2-mem2mem.c  //内存到内存为Linux和videobuf视频设备的框架。设备的辅助函数,使用其源和目的地videobuf缓冲区。

头文件linux/videodev2.h、media/v4l2-common.h、media/v4l2-device.h、media/v4l2-ioctl.h、media/v4l2-dev.h、media/v4l2-ioctl.h等。

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容