1 .. SPDX-License-Identifier: GFDL-1.1-no-invari !! 1 .. Permission is granted to copy, distribute and/or modify this >> 2 .. document under the terms of the GNU Free Documentation License, >> 3 .. Version 1.1 or any later version published by the Free Software >> 4 .. Foundation, with no Invariant Sections, no Front-Cover Texts >> 5 .. and no Back-Cover Texts. A copy of the license is included at >> 6 .. Documentation/userspace-api/media/fdl-appendix.rst. >> 7 .. >> 8 .. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections 2 9 3 .. _video: 10 .. _video: 4 11 5 ************************ 12 ************************ 6 Video Inputs and Outputs 13 Video Inputs and Outputs 7 ************************ 14 ************************ 8 15 9 Video inputs and outputs are physical connecto 16 Video inputs and outputs are physical connectors of a device. These can 10 be for example: RF connectors (antenna/cable), 17 be for example: RF connectors (antenna/cable), CVBS a.k.a. Composite 11 Video, S-Video and RGB connectors. Camera sens 18 Video, S-Video and RGB connectors. Camera sensors are also considered to 12 be a video input. Video and VBI capture device 19 be a video input. Video and VBI capture devices have inputs. Video and 13 VBI output devices have outputs, at least one 20 VBI output devices have outputs, at least one each. Radio devices have 14 no video inputs or outputs. 21 no video inputs or outputs. 15 22 16 To learn about the number and attributes of th 23 To learn about the number and attributes of the available inputs and 17 outputs applications can enumerate them with t 24 outputs applications can enumerate them with the 18 :ref:`VIDIOC_ENUMINPUT` and 25 :ref:`VIDIOC_ENUMINPUT` and 19 :ref:`VIDIOC_ENUMOUTPUT` ioctl, respectively. 26 :ref:`VIDIOC_ENUMOUTPUT` ioctl, respectively. The 20 struct :c:type:`v4l2_input` returned by the 27 struct :c:type:`v4l2_input` returned by the 21 :ref:`VIDIOC_ENUMINPUT` ioctl also contains si 28 :ref:`VIDIOC_ENUMINPUT` ioctl also contains signal 22 status information applicable when the current 29 status information applicable when the current video input is queried. 23 30 24 The :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` and 31 The :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` and 25 :ref:`VIDIOC_G_OUTPUT <VIDIOC_G_OUTPUT>` ioctl 32 :ref:`VIDIOC_G_OUTPUT <VIDIOC_G_OUTPUT>` ioctls return the index of 26 the current video input or output. To select a 33 the current video input or output. To select a different input or output 27 applications call the :ref:`VIDIOC_S_INPUT <VI 34 applications call the :ref:`VIDIOC_S_INPUT <VIDIOC_G_INPUT>` and 28 :ref:`VIDIOC_S_OUTPUT <VIDIOC_G_OUTPUT>` ioctl 35 :ref:`VIDIOC_S_OUTPUT <VIDIOC_G_OUTPUT>` ioctls. Drivers must 29 implement all the input ioctls when the device 36 implement all the input ioctls when the device has one or more inputs, 30 all the output ioctls when the device has one 37 all the output ioctls when the device has one or more outputs. 31 38 32 Example: Information about the current video i 39 Example: Information about the current video input 33 ============================================== 40 ================================================== 34 41 35 .. code-block:: c 42 .. code-block:: c 36 43 37 struct v4l2_input input; 44 struct v4l2_input input; 38 int index; 45 int index; 39 46 40 if (-1 == ioctl(fd, VIDIOC_G_INPUT, &index 47 if (-1 == ioctl(fd, VIDIOC_G_INPUT, &index)) { 41 perror("VIDIOC_G_INPUT"); 48 perror("VIDIOC_G_INPUT"); 42 exit(EXIT_FAILURE); 49 exit(EXIT_FAILURE); 43 } 50 } 44 51 45 memset(&input, 0, sizeof(input)); 52 memset(&input, 0, sizeof(input)); 46 input.index = index; 53 input.index = index; 47 54 48 if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &inp 55 if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) { 49 perror("VIDIOC_ENUMINPUT"); 56 perror("VIDIOC_ENUMINPUT"); 50 exit(EXIT_FAILURE); 57 exit(EXIT_FAILURE); 51 } 58 } 52 59 53 printf("Current input: %s\\n", input.name) 60 printf("Current input: %s\\n", input.name); 54 61 55 62 56 Example: Switching to the first video input 63 Example: Switching to the first video input 57 =========================================== 64 =========================================== 58 65 59 .. code-block:: c 66 .. code-block:: c 60 67 61 int index; 68 int index; 62 69 63 index = 0; 70 index = 0; 64 71 65 if (-1 == ioctl(fd, VIDIOC_S_INPUT, &index 72 if (-1 == ioctl(fd, VIDIOC_S_INPUT, &index)) { 66 perror("VIDIOC_S_INPUT"); 73 perror("VIDIOC_S_INPUT"); 67 exit(EXIT_FAILURE); 74 exit(EXIT_FAILURE); 68 } 75 }
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.