mirror of https://gitee.com/openkylin/linux.git
86 lines
3.4 KiB
ReStructuredText
86 lines
3.4 KiB
ReStructuredText
.. -*- coding: utf-8; mode: rst -*-
|
|
|
|
.. _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 :ref:`v4l2_input <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 :ref:`v4l2_tuner <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 at all. 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 :ref:`v4l2_capability
|
|
<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, uh, modulating 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
|
|
:ref:`v4l2_output <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
|
|
:ref:`v4l2_capability <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 :ref:`v4l2_frequency <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.
|