1.4. Video Inputs and Outputs¶
Video inputs and outputs are physical connectors of a device. These can be for example: RF connectors (antenna/cable), CVBS a.k.a. Composite Video, S-Video and RGB connectors. Camera sensors are also considered to be a video input. Video and VBI capture devices have inputs. Video and VBI output devices have outputs, at least one each. Radio devices have no video inputs or outputs.
To learn about the number and attributes of the available inputs and
outputs applications can enumerate them with the
ioctl VIDIOC_ENUMINPUT and
ioctl VIDIOC_ENUMOUTPUT ioctl, respectively. The
struct v4l2_input
returned by the
ioctl VIDIOC_ENUMINPUT ioctl also contains signal
status information applicable when the current video input is queried.
The VIDIOC_G_INPUT and VIDIOC_G_OUTPUT ioctls return the index of the current video input or output. To select a different input or output applications call the VIDIOC_S_INPUT and VIDIOC_S_OUTPUT ioctls. Drivers must implement all the input ioctls when the device has one or more inputs, all the output ioctls when the device has one or more outputs.
1.4.1. Example: Information about the current video input¶
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.4.2. Example: Switching to the first video input¶
int index;
index = 0;
if (-1 == ioctl(fd, VIDIOC_S_INPUT, &index)) {
perror("VIDIOC_S_INPUT");
exit(EXIT_FAILURE);
}