分类: LINUX
2009-06-11 11:25:39
1.4 视频输入和输出
视频的输入和输出是一个设备的物理连接体。他们可以是RF connectors (antenna/cable),CVBS a.k.a. Composite Video,S-Video或RGB connectors。只有视频和VBI捕获设备具有至少一个输入端,输出设备有至少一个输出端。广播设备没有视频输入和输出。
应用程序可以通过各自调用VIDIOC_ENUMINPUT和VIDIOC_ENUMOUTPUT的ioctl这种枚举的方法来获取可用的输入和输出的编号和属性。当当前的视频输入被询问时,由VIDIOC_ENUMINPUT ioctl返回的结构体v4l2_input也包含了恰当的信号状态信息。
VIDIOC_G_INPUT和VIDIOC_G_OUTPUT ioctl返回当前输入或输出的索引。应用程序调用VIDIOC_S_INPUT 和VIDIOC_S_OUTPUT ioctl来选择不同的输入或输出。当设备具有一个或多个输入或输出时,驱动程序必须执行所有的输入或输出。
例1-1 当前视频输入的信息
struct v4l2_input input;
int index;
if (-1 == ioctl (fd, VIDIOC_G_INPUT, &index))
{
perror ("VIDIOC_G_INPUT");
exit (EXIT_FAILURE);
}
memset (&input, 0, sizeof (input));
input.index = index;
if (-1 == ioctl (fd, VIDIOC_ENUMINPUT, &input))
{
perror ("VIDIOC_ENUMINPUT");
exit (EXIT_FAILURE);
}
printf ("Current input: %s\n", input.name);
例1-2 转换为第一个视频输入
int index;
index = 0;
if (-1 == ioctl (fd, VIDIOC_S_INPUT, &index))
{
perror ("VIDIOC_S_INPUT");
exit (EXIT_FAILURE);