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 v4l2_input returned by the VIDIOC_ENUMINPUT
ioctl is set to
V4L2_INPUT_TYPE_TUNER
and its
tuner
field contains the index number of
the tuner.
Radio devices have exactly one tuner with index zero, no video inputs.
To query and change tuner properties applications use the
VIDIOC_G_TUNER
and VIDIOC_S_TUNER
ioctl, respectively. The
struct v4l2_tuner returned by VIDIOC_G_TUNER
also
contains signal status information applicable when the tuner of the
current video input, or a radio tuner is queried. Note that
VIDIOC_S_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 v4l2_capability
returned by the VIDIOC_QUERYCAP
ioctl when the device has one or
more tuners.
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 v4l2_output returned by the VIDIOC_ENUMOUTPUT
ioctl is
set to V4L2_OUTPUT_TYPE_MODULATOR
and its
modulator
field contains the index number
of the modulator. This specification does not define radio output
devices.
To query and change modulator properties applications use
the VIDIOC_G_MODULATOR
and VIDIOC_S_MODULATOR
ioctl. Note that
VIDIOC_S_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_TUNER
(sic) flag in
the struct v4l2_capability returned by the VIDIOC_QUERYCAP
ioctl when the
device has one or more modulators.
To get and set the tuner or modulator radio frequency
applications use the VIDIOC_G_FREQUENCY
and VIDIOC_S_FREQUENCY
ioctl which both take a pointer to a struct 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.
To be discussed. See also proposals by Peter Schlaf, video4linux-list@redhat.com on 23 Oct 2002, subject: "Re: [V4L] Re: v4l2 api".