新闻中心

EEPW首页>消费电子>设计应用> 基于V4L2视频采集缓存机制应用与实现

基于V4L2视频采集缓存机制应用与实现

作者: 时间:2010-12-24 来源:网络 收藏

摘要:V4L是Linux针对设备的应用程序接口,V4L2为其升级版本,它修复了第一版的很多设计缺陷。然而它提供的常规读写函数并不能满足大数据量的高速传输,所以将缓存技术引入到采集领域可以提高系统的吞吐量。提出了一种双帧内存映射采集机制,由于不需要做数据拷贝动作,减少了读/写时限,因而可以提高视频采集性能。实验结果表明,采用双帧内存映射机制在视频采集时速度快,效率高,达到了预期的实验效果。
关键词:V4L2;Linux;视频采集;内存映射

0 引言
V4L(video for linux)是由Alan Cox开发的针对视频设备的应用程序接口(API),开始出现是在Linux 2.1.x版本内核中,可以实现图像采集、AM/FM广播和图像编解码等功能。然而,由于它在扩展性和灵活性上的缺陷,渐渐被Bill Dirks设计出的V4L的升级版本V4L2所替代,V4L2开始是在Linux 2.5.x版本内核中集成的,在对视频设备数据的读/写中,应用程序可以通过read/write方法或者内存映射来获得位于内核空间的图像数据。 read/write方法是将数据在内核空间和用户空间之间进行拷贝,而内存映射使应用程序可以直接访问设备内存,减少了从内核态到用户态的数据拷贝,因而可以显著提高系统的吞吐量,下面讨论视频采集中缓存机制的应用和实现。

1 V4L2的视频采集框架
V4L2采用了分层架构,应用程序接口为上层,而下层则是视频设备的驱动程序,一般研究领域都是编写上层的应用程序,通过编程接口来控制视频设备完成相应的操作和功能。利用V4L2开发的视频采集程序具有设备无关性,任何支持V4L2的视频采集设备都可以移植此类程序,因而也提高了视频采集程序的可移植性。
当视频设备连接到主机后,驱动程序会首先注册一个主设备号为81的字符设备,它是硬件惟一的身份标识。驱动程序利用主设备号来识别硬件,而系统内核则是利用主设备号让设备与对应的驱动程序相结合,同时加载驱动程序的成员函数、次设备号以及其他相关信息,使设备可以正常工作。使用表1中的函数可以访问 V4L2设备,也可以在应用程序中直接调用。具体功能如表1所示。
a.JPG

其中,ioctl函数的功能非常强大,它可以管理设备的I/O通道,设置视频的制式和帧格式,还提供查询当前设备属性的功能,主要的ioctl命令如表2所示。
b.JPG


上一页 1 2 3 下一页

关键词:视频

评论


相关推荐

技术专区

关闭