Commit | Line | Data |
---|---|---|
5377d91f MH |
1 | .. -*- coding: utf-8; mode: rst -*- |
2 | ||
3 | .. _video: | |
4 | ||
5 | ************************ | |
6 | Video Inputs and Outputs | |
7 | ************************ | |
8 | ||
9 | Video inputs and outputs are physical connectors of a device. These can | |
10 | be for example RF connectors (antenna/cable), CVBS a.k.a. Composite | |
11 | Video, S-Video or RGB connectors. Video and VBI capture devices have | |
12 | inputs. Video and VBI output devices have outputs, at least one each. | |
13 | Radio devices have no video inputs or outputs. | |
14 | ||
15 | To learn about the number and attributes of the available inputs and | |
16 | outputs applications can enumerate them with the | |
7347081e MCC |
17 | :ref:`VIDIOC_ENUMINPUT` and |
18 | :ref:`VIDIOC_ENUMOUTPUT` ioctl, respectively. The | |
5377d91f | 19 | struct :ref:`v4l2_input <v4l2-input>` returned by the |
7347081e | 20 | :ref:`VIDIOC_ENUMINPUT` ioctl also contains signal |
234d5496 | 21 | :status information applicable when the current video input is queried. |
5377d91f | 22 | |
4e03cb76 MCC |
23 | The :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` and |
24 | :ref:`VIDIOC_G_OUTPUT <VIDIOC_G_OUTPUT>` ioctls return the index of | |
5377d91f | 25 | the current video input or output. To select a different input or output |
af4a4d0d MCC |
26 | applications call the :ref:`VIDIOC_S_INPUT <VIDIOC_G_INPUT>` and |
27 | :ref:`VIDIOC_S_OUTPUT <VIDIOC_G_OUTPUT>` ioctls. Drivers must | |
5377d91f MH |
28 | implement all the input ioctls when the device has one or more inputs, |
29 | all the output ioctls when the device has one or more outputs. | |
30 | ||
5377d91f | 31 | .. code-block:: c |
013504f5 | 32 | :caption: Example 1: Information about the current video input |
5377d91f MH |
33 | |
34 | struct v4l2_input input; | |
35 | int index; | |
36 | ||
37 | if (-1 == ioctl(fd, VIDIOC_G_INPUT, &index)) { | |
38 | perror("VIDIOC_G_INPUT"); | |
39 | exit(EXIT_FAILURE); | |
40 | } | |
41 | ||
42 | memset(&input, 0, sizeof(input)); | |
43 | input.index = index; | |
44 | ||
45 | if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) { | |
46 | perror("VIDIOC_ENUMINPUT"); | |
47 | exit(EXIT_FAILURE); | |
48 | } | |
49 | ||
50 | printf("Current input: %s\\n", input.name); | |
51 | ||
52 | ||
53 | .. code-block:: c | |
013504f5 | 54 | :caption: Example 2: Switching to the first video input |
5377d91f MH |
55 | |
56 | int index; | |
57 | ||
58 | index = 0; | |
59 | ||
60 | if (-1 == ioctl(fd, VIDIOC_S_INPUT, &index)) { | |
61 | perror("VIDIOC_S_INPUT"); | |
62 | exit(EXIT_FAILURE); | |
63 | } | |
64 | ||
65 | ||
66 | ||
67 | ||
68 | .. ------------------------------------------------------------------------------ | |
69 | .. This file was automatically converted from DocBook-XML with the dbxml | |
70 | .. library (https://github.com/return42/sphkerneldoc). The origin XML comes | |
71 | .. from the linux kernel, refer to: | |
72 | .. | |
73 | .. * https://github.com/torvalds/linux/tree/master/Documentation/DocBook | |
74 | .. ------------------------------------------------------------------------------ |