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等。