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