Linux
?/p>
V4L2
编程小结
一.设置采集方式,格式
常用命令标志
打开视频设备后,可以设置该视频设备的属性,例如裁剪、缩放等。这一步是可选的?/p>
?/p>
Linux
编程中,一般使?/p>
ioctl
函数来对设备?/p>
I/O
通道进行管理?/p>
extern int ioctl (int __fd, unsigned long int __request, ? __THROW;
__fd
:设备的
ID
,例如刚才用
open
函数打开视频通道后返回的
cameraFd
?/p>
__request
:具体的命令标志符?/p>
在进?/p>
V4L2
开发中,一般会用到以下的命令标志符?/p>
1.
VIDIOC_REQBUFS
:分配内?/p>
2.
VIDIOC_QUERYBUF
:把
VIDIOC_REQBUFS
中分配的数据缓存转换成物理地址
3.
VIDIOC_QUERYCAP
:查询驱动功?/p>
4.
VIDIOC_ENUM_FMT
:获取当前驱动支持的视频格式
5.
VIDIOC_S_FMT
:设置当前驱动的频捕获格?/p>
6.
VIDIOC_G_FMT
:读取当前驱动的频捕获格?/p>
7.
VIDIOC_TRY_FMT
:验证当前驱动的显示格式
8.
VIDIOC_CROPCAP
:查询驱动的修剪能力
9.
VIDIOC_S_CROP
:设置视频信号的边框
10.
V
IDIOC_G_CROP
:读取视频信号的边框
11.
V
IDIOC_QBUF
:把数据从缓存中读取出来
12.
V
IDIOC_DQBUF
:把数据放回缓存队列
13.
V
IDIOC_STREAMON
:开始视频显示函?/p>
14.
V
IDIOC_STREAMOFF
:结束视频显示函?/p>
15.
V
IDIOC_QUERYSTD
:检查当前视频设备支持的标准,例?/p>
PAL
?/p>
NTSC
?/p>
这些
IO
调用,有些是必须的,有些是可选择的?/p>
?/p>
.
一般操作流程(视频设备?/p>
1.
打开设备文件?/p>
int fd=open(?dev/video0?O_RDWR);
2.
取得设备?/p>
capability
?/p>
看看设备具有什么功能,
比如是否具有视频输入
,
或者音频输?/p>
输出等?/p>
VIDIOC_QUERYCAP,struct v4l2_capability
v4l2_std_id std;
do {