Markus Heiser | 5377d91 | 2016-06-30 15:18:56 +0200 | [diff] [blame] | 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 |
| 17 | :ref:`VIDIOC_ENUMINPUT <vidioc-enuminput>` and |
| 18 | :ref:`VIDIOC_ENUMOUTPUT <vidioc-enumoutput>` ioctl, respectively. The |
| 19 | struct :ref:`v4l2_input <v4l2-input>` returned by the |
Mauro Carvalho Chehab | 234d549 | 2016-06-30 22:17:31 -0300 | [diff] [blame] | 20 | :ref:`VIDIOC_ENUMINPUT <vidioc-enuminput>` ioctl also contains signal |
| 21 | :status information applicable when the current video input is queried. |
Markus Heiser | 5377d91 | 2016-06-30 15:18:56 +0200 | [diff] [blame] | 22 | |
| 23 | The :ref:`VIDIOC_G_INPUT <vidioc-g-input>` and |
| 24 | :ref:`VIDIOC_G_OUTPUT <vidioc-g-output>` ioctls return the index of |
| 25 | the current video input or output. To select a different input or output |
| 26 | applications call the :ref:`VIDIOC_S_INPUT <vidioc-g-input>` and |
| 27 | :ref:`VIDIOC_S_OUTPUT <vidioc-g-output>` ioctls. Drivers must |
| 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 | |
Markus Heiser | 5377d91 | 2016-06-30 15:18:56 +0200 | [diff] [blame] | 31 | .. code-block:: c |
Mauro Carvalho Chehab | 013504f5 | 2016-06-30 22:45:08 -0300 | [diff] [blame] | 32 | :caption: Example 1: Information about the current video input |
Markus Heiser | 5377d91 | 2016-06-30 15:18:56 +0200 | [diff] [blame] | 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 |
Mauro Carvalho Chehab | 013504f5 | 2016-06-30 22:45:08 -0300 | [diff] [blame] | 54 | :caption: Example 2: Switching to the first video input |
Markus Heiser | 5377d91 | 2016-06-30 15:18:56 +0200 | [diff] [blame] | 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 | .. ------------------------------------------------------------------------------ |