日期:2014-05-16 浏览次数:20675 次
书房网原文链接
笔者最近有机会写了一个摄像头的驱动,是“One laptop per child”项目的中摄像头专用的。这个驱动使用了为此目的而设计的内核API:the Video4Linux2 API。在写这个驱动的过程中,笔者发现了一个惊人的问题:这个API的文档工作做得并不是很好,而用户层的文档则写的,实际上,相当不错。为了补救现在的状况,LWN将在未来的内个月里写一系列文章,告诉大家如何写V4L2接口的驱动。V4L2有一段历史了。大约在1998的秋天,灵感第一次出现在Bill Dirks的眼中。经过长足的发展,它于2002年11月,内核发布2.5.46时,融入了内核主干之中。然而直到今天,仍有一部分内核驱动不支持新的API,这种新旧API的转换工作仍在进行。同时,V4L2 API也在发展,并在2.6.18版本中进行了一些重大的改变。支持V4L2的应用依旧相对较少。
V4L2在设计时,是要支持很多广泛的设备的,它们之中只有一部分在本质上是真正的视频设备:
?video capture interface(影像捕获接口)从调谐器或是摄像头上获取视频数据。对很多人来讲,影像捕获(video capture)是V4L2的基本应用。由于笔者在这方面的经验是强项,这一系列文章也趋于强调捕获API,但V4L2不止这些。
?video output interface(视频输出接口)允许应用使用PC的外设,让其提供视频图像。有可能是通过电视信号的形式。
?捕获接口还有一个变体,存在于videooverlay interface(视频覆盖接口)之中。它的工作是方便视频显示设备直接从捕获设备上获取数据。视频数据直接从捕获设备传到显示设备,无需经过