93 lines
3.7 KiB
ReStructuredText
93 lines
3.7 KiB
ReStructuredText
|
.. Permission is granted to copy, distribute and/or modify this
|
||
|
.. document under the terms of the GNU Free Documentation License,
|
||
|
.. Version 1.1 or any later version published by the Free Software
|
||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||
|
..
|
||
|
.. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
|
||
|
|
||
|
.. _tuner:
|
||
|
|
||
|
*********************
|
||
|
Tuners and Modulators
|
||
|
*********************
|
||
|
|
||
|
|
||
|
Tuners
|
||
|
======
|
||
|
|
||
|
Video input devices can have one or more tuners demodulating a RF
|
||
|
signal. Each tuner is associated with one or more video inputs,
|
||
|
depending on the number of RF connectors on the tuner. The ``type``
|
||
|
field of the respective struct :c:type:`v4l2_input`
|
||
|
returned by the :ref:`VIDIOC_ENUMINPUT` ioctl is
|
||
|
set to ``V4L2_INPUT_TYPE_TUNER`` and its ``tuner`` field contains the
|
||
|
index number of the tuner.
|
||
|
|
||
|
Radio input devices have exactly one tuner with index zero, no video
|
||
|
inputs.
|
||
|
|
||
|
To query and change tuner properties applications use the
|
||
|
:ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>` and
|
||
|
:ref:`VIDIOC_S_TUNER <VIDIOC_G_TUNER>` ioctls, respectively. The
|
||
|
struct :c:type:`v4l2_tuner` returned by :ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>`
|
||
|
also contains signal status information applicable when the tuner of the
|
||
|
current video or radio input is queried.
|
||
|
|
||
|
.. note::
|
||
|
|
||
|
:ref:`VIDIOC_S_TUNER <VIDIOC_G_TUNER>` does not switch the
|
||
|
current tuner, when there is more than one. The tuner is solely
|
||
|
determined by the current video input. Drivers must support both ioctls
|
||
|
and set the ``V4L2_CAP_TUNER`` flag in the struct :c:type:`v4l2_capability`
|
||
|
returned by the :ref:`VIDIOC_QUERYCAP` ioctl when the
|
||
|
device has one or more tuners.
|
||
|
|
||
|
|
||
|
Modulators
|
||
|
==========
|
||
|
|
||
|
Video output devices can have one or more modulators, that modulate a
|
||
|
video signal for radiation or connection to the antenna input of a TV
|
||
|
set or video recorder. Each modulator is associated with one or more
|
||
|
video outputs, depending on the number of RF connectors on the
|
||
|
modulator. The ``type`` field of the respective struct
|
||
|
:c:type:`v4l2_output` returned by the
|
||
|
:ref:`VIDIOC_ENUMOUTPUT` ioctl is set to
|
||
|
``V4L2_OUTPUT_TYPE_MODULATOR`` and its ``modulator`` field contains the
|
||
|
index number of the modulator.
|
||
|
|
||
|
Radio output devices have exactly one modulator with index zero, no
|
||
|
video outputs.
|
||
|
|
||
|
A video or radio device cannot support both a tuner and a modulator. Two
|
||
|
separate device nodes will have to be used for such hardware, one that
|
||
|
supports the tuner functionality and one that supports the modulator
|
||
|
functionality. The reason is a limitation with the
|
||
|
:ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl where you
|
||
|
cannot specify whether the frequency is for a tuner or a modulator.
|
||
|
|
||
|
To query and change modulator properties applications use the
|
||
|
:ref:`VIDIOC_G_MODULATOR <VIDIOC_G_MODULATOR>` and
|
||
|
:ref:`VIDIOC_S_MODULATOR <VIDIOC_G_MODULATOR>` ioctl. Note that
|
||
|
:ref:`VIDIOC_S_MODULATOR <VIDIOC_G_MODULATOR>` does not switch the current modulator, when there
|
||
|
is more than one at all. The modulator is solely determined by the
|
||
|
current video output. Drivers must support both ioctls and set the
|
||
|
``V4L2_CAP_MODULATOR`` flag in the struct
|
||
|
:c:type:`v4l2_capability` returned by the
|
||
|
:ref:`VIDIOC_QUERYCAP` ioctl when the device has
|
||
|
one or more modulators.
|
||
|
|
||
|
|
||
|
Radio Frequency
|
||
|
===============
|
||
|
|
||
|
To get and set the tuner or modulator radio frequency applications use
|
||
|
the :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` and
|
||
|
:ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl which both take
|
||
|
a pointer to a struct :c:type:`v4l2_frequency`. These
|
||
|
ioctls are used for TV and radio devices alike. Drivers must support
|
||
|
both ioctls when the tuner or modulator ioctls are supported, or when
|
||
|
the device is a radio device.
|