V4L2 应用程序框架
较 有较大的改动,并已成为 的标准接口,函盖 ,多数驱动都在向 迁移。更好地
了解 先从应用入手,然后再深入到内 核中结合物理设备/接口的规范实现相应的驱动。本文先就 在视
频捕捉或 方面的应用框架。
采用流水线的方式,操作更简单直观,基本遵循打开视频设备、设置格式、处理数据、关闭设备,更多的具体操
作通过 函数来实现。
1.打开视频设备
在 中,视频设备被看做一个文件。使用 函数打开这个设备:
用非阻塞模式打开摄像头设备
!"#$%# &
如果用阻塞模式打开摄像头设备,上述代码变为:
!"#$%# &
应用程序能够使用阻塞模式或非阻塞模式打开视频设备,如果使用非阻塞模式调用视频设备,即使尚未捕获到信息,
驱动依旧会把缓存($'()里的东西返回给应用程序。
2. 设定属性及采集方式
打开视频设备后,可以设置该视频设备的属性,例如裁剪、缩放等。这一步是可选的。在 )* 编程中,一般使用
函数来对设备的 +! 通道进行管理:
"", )-..""/)- 0.-0&
在进行 开发中,常用的命令标志符如下-&:
+$+!1"#2'(3:分配内存
+$+!1"'2#4(:把 +$+!1"#2'(3 中分配的数据缓存转换成物理地址
+$+!1"'2#4156:查询驱动功能
+$+!1"27"8:获取当前驱动支持的视频格式
+$+!1"3"8:设置当前驱动的频捕获格式
+$+!1"9"8:读取当前驱动的频捕获格式
+$+!1"8#4"8:验证当前驱动的显示格式
+$+!1"1#!6156:查询驱动的修剪能力
+$+!1"3"1#!6:设置视频信号的边框
+$+!1"9"1#!6:读取视频信号的边框
+$+!1"'(:把数据从缓存中读取出来
+$+!1"$'(:把数据放回缓存队列
评论0