Commit | Line | Data |
---|---|---|
5377d91f MH |
1 | .. -*- coding: utf-8; mode: rst -*- |
2 | ||
3 | .. _tuner: | |
4 | ||
5 | ********************* | |
6 | Tuners and Modulators | |
7 | ********************* | |
8 | ||
9 | ||
10 | Tuners | |
11 | ====== | |
12 | ||
13 | Video input devices can have one or more tuners demodulating a RF | |
14 | signal. Each tuner is associated with one or more video inputs, | |
15 | depending on the number of RF connectors on the tuner. The ``type`` | |
e8be7e97 | 16 | field of the respective struct :c:type:`v4l2_input` |
7347081e | 17 | returned by the :ref:`VIDIOC_ENUMINPUT` ioctl is |
5377d91f MH |
18 | set to ``V4L2_INPUT_TYPE_TUNER`` and its ``tuner`` field contains the |
19 | index number of the tuner. | |
20 | ||
21 | Radio input devices have exactly one tuner with index zero, no video | |
22 | inputs. | |
23 | ||
24 | To query and change tuner properties applications use the | |
4e03cb76 | 25 | :ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>` and |
af4a4d0d | 26 | :ref:`VIDIOC_S_TUNER <VIDIOC_G_TUNER>` ioctls, respectively. The |
e8be7e97 | 27 | struct :c:type:`v4l2_tuner` returned by :ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>` |
5377d91f | 28 | also contains signal status information applicable when the tuner of the |
706f8a99 MCC |
29 | current video or radio input is queried. |
30 | ||
b6b6e678 MCC |
31 | .. note:: |
32 | ||
33 | :ref:`VIDIOC_S_TUNER <VIDIOC_G_TUNER>` does not switch the | |
706f8a99 MCC |
34 | current tuner, when there is more than one at all. The tuner is solely |
35 | determined by the current video input. Drivers must support both ioctls | |
56683d7d MCC |
36 | and set the ``V4L2_CAP_TUNER`` flag in the struct :c:type:`v4l2_capability` |
37 | returned by the :ref:`VIDIOC_QUERYCAP` ioctl when the | |
706f8a99 | 38 | device has one or more tuners. |
5377d91f MH |
39 | |
40 | ||
41 | Modulators | |
42 | ========== | |
43 | ||
44 | Video output devices can have one or more modulators, uh, modulating a | |
45 | video signal for radiation or connection to the antenna input of a TV | |
46 | set or video recorder. Each modulator is associated with one or more | |
47 | video outputs, depending on the number of RF connectors on the | |
48 | modulator. The ``type`` field of the respective struct | |
e8be7e97 | 49 | :c:type:`v4l2_output` returned by the |
7347081e | 50 | :ref:`VIDIOC_ENUMOUTPUT` ioctl is set to |
5377d91f MH |
51 | ``V4L2_OUTPUT_TYPE_MODULATOR`` and its ``modulator`` field contains the |
52 | index number of the modulator. | |
53 | ||
54 | Radio output devices have exactly one modulator with index zero, no | |
55 | video outputs. | |
56 | ||
57 | A video or radio device cannot support both a tuner and a modulator. Two | |
58 | separate device nodes will have to be used for such hardware, one that | |
59 | supports the tuner functionality and one that supports the modulator | |
60 | functionality. The reason is a limitation with the | |
af4a4d0d | 61 | :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl where you |
5377d91f MH |
62 | cannot specify whether the frequency is for a tuner or a modulator. |
63 | ||
64 | To query and change modulator properties applications use the | |
4e03cb76 | 65 | :ref:`VIDIOC_G_MODULATOR <VIDIOC_G_MODULATOR>` and |
af4a4d0d | 66 | :ref:`VIDIOC_S_MODULATOR <VIDIOC_G_MODULATOR>` ioctl. Note that |
2212ff25 | 67 | :ref:`VIDIOC_S_MODULATOR <VIDIOC_G_MODULATOR>` does not switch the current modulator, when there |
5377d91f MH |
68 | is more than one at all. The modulator is solely determined by the |
69 | current video output. Drivers must support both ioctls and set the | |
70 | ``V4L2_CAP_MODULATOR`` flag in the struct | |
e8be7e97 | 71 | :c:type:`v4l2_capability` returned by the |
7347081e | 72 | :ref:`VIDIOC_QUERYCAP` ioctl when the device has |
5377d91f MH |
73 | one or more modulators. |
74 | ||
75 | ||
76 | Radio Frequency | |
77 | =============== | |
78 | ||
79 | To get and set the tuner or modulator radio frequency applications use | |
4e03cb76 | 80 | the :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` and |
af4a4d0d | 81 | :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl which both take |
e8be7e97 | 82 | a pointer to a struct :c:type:`v4l2_frequency`. These |
5377d91f MH |
83 | ioctls are used for TV and radio devices alike. Drivers must support |
84 | both ioctls when the tuner or modulator ioctls are supported, or when | |
85 | the device is a radio device. |