162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
262306a36Sopenharmony_ci.. c:namespace:: V4L
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci.. _VIDIOC_G_TUNER:
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci************************************
762306a36Sopenharmony_ciioctl VIDIOC_G_TUNER, VIDIOC_S_TUNER
862306a36Sopenharmony_ci************************************
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciName
1162306a36Sopenharmony_ci====
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciVIDIOC_G_TUNER - VIDIOC_S_TUNER - Get or set tuner attributes
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciSynopsis
1662306a36Sopenharmony_ci========
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci.. c:macro:: VIDIOC_G_TUNER
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci``int ioctl(int fd, VIDIOC_G_TUNER, struct v4l2_tuner *argp)``
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci.. c:macro:: VIDIOC_S_TUNER
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci``int ioctl(int fd, VIDIOC_S_TUNER, const struct v4l2_tuner *argp)``
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciArguments
2762306a36Sopenharmony_ci=========
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci``fd``
3062306a36Sopenharmony_ci    File descriptor returned by :c:func:`open()`.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci``argp``
3362306a36Sopenharmony_ci    Pointer to struct :c:type:`v4l2_tuner`.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciDescription
3662306a36Sopenharmony_ci===========
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciTo query the attributes of a tuner applications initialize the ``index``
3962306a36Sopenharmony_cifield and zero out the ``reserved`` array of a struct
4062306a36Sopenharmony_ci:c:type:`v4l2_tuner` and call the ``VIDIOC_G_TUNER`` ioctl
4162306a36Sopenharmony_ciwith a pointer to this structure. Drivers fill the rest of the structure
4262306a36Sopenharmony_cior return an ``EINVAL`` error code when the index is out of bounds. To
4362306a36Sopenharmony_cienumerate all tuners applications shall begin at index zero,
4462306a36Sopenharmony_ciincrementing by one until the driver returns ``EINVAL``.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciTuners have two writable properties, the audio mode and the radio
4762306a36Sopenharmony_cifrequency. To change the audio mode, applications initialize the
4862306a36Sopenharmony_ci``index``, ``audmode`` and ``reserved`` fields and call the
4962306a36Sopenharmony_ci``VIDIOC_S_TUNER`` ioctl. This will *not* change the current tuner,
5062306a36Sopenharmony_ciwhich is determined by the current video input. Drivers may choose a
5162306a36Sopenharmony_cidifferent audio mode if the requested mode is invalid or unsupported.
5262306a36Sopenharmony_ciSince this is a write-only ioctl, it does not return the actually
5362306a36Sopenharmony_ciselected audio mode.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci:ref:`SDR <sdr>` specific tuner types are ``V4L2_TUNER_SDR`` and
5662306a36Sopenharmony_ci``V4L2_TUNER_RF``. For SDR devices ``audmode`` field must be initialized
5762306a36Sopenharmony_cito zero. The term 'tuner' means SDR receiver in this context.
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ciTo change the radio frequency the
6062306a36Sopenharmony_ci:ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl is available.
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci .. tabularcolumns:: |p{1.3cm}|p{3.0cm}|p{7.0cm}|p{5.8cm}|
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci.. c:type:: v4l2_tuner
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci.. cssclass:: longtable
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci.. flat-table:: struct v4l2_tuner
6962306a36Sopenharmony_ci    :header-rows:  0
7062306a36Sopenharmony_ci    :stub-columns: 0
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci    * - __u32
7362306a36Sopenharmony_ci      - ``index``
7462306a36Sopenharmony_ci      - :cspan:`1` Identifies the tuner, set by the application.
7562306a36Sopenharmony_ci    * - __u8
7662306a36Sopenharmony_ci      - ``name``\ [32]
7762306a36Sopenharmony_ci      - :cspan:`1`
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci	Name of the tuner, a NUL-terminated ASCII string.
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci	This information is intended for the user.
8262306a36Sopenharmony_ci    * - __u32
8362306a36Sopenharmony_ci      - ``type``
8462306a36Sopenharmony_ci      - :cspan:`1` Type of the tuner, see :c:type:`v4l2_tuner_type`.
8562306a36Sopenharmony_ci    * - __u32
8662306a36Sopenharmony_ci      - ``capability``
8762306a36Sopenharmony_ci      - :cspan:`1`
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci	Tuner capability flags, see :ref:`tuner-capability`. Audio flags
9062306a36Sopenharmony_ci	indicate the ability to decode audio subprograms. They will *not*
9162306a36Sopenharmony_ci	change, for example with the current video standard.
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci	When the structure refers to a radio tuner the
9462306a36Sopenharmony_ci	``V4L2_TUNER_CAP_LANG1``, ``V4L2_TUNER_CAP_LANG2`` and
9562306a36Sopenharmony_ci	``V4L2_TUNER_CAP_NORM`` flags can't be used.
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci	If multiple frequency bands are supported, then ``capability`` is
9862306a36Sopenharmony_ci	the union of all ``capability`` fields of each struct
9962306a36Sopenharmony_ci	:c:type:`v4l2_frequency_band`.
10062306a36Sopenharmony_ci    * - __u32
10162306a36Sopenharmony_ci      - ``rangelow``
10262306a36Sopenharmony_ci      - :cspan:`1` The lowest tunable frequency in units of 62.5 kHz, or
10362306a36Sopenharmony_ci	if the ``capability`` flag ``V4L2_TUNER_CAP_LOW`` is set, in units
10462306a36Sopenharmony_ci	of 62.5 Hz, or if the ``capability`` flag ``V4L2_TUNER_CAP_1HZ``
10562306a36Sopenharmony_ci	is set, in units of 1 Hz. If multiple frequency bands are
10662306a36Sopenharmony_ci	supported, then ``rangelow`` is the lowest frequency of all the
10762306a36Sopenharmony_ci	frequency bands.
10862306a36Sopenharmony_ci    * - __u32
10962306a36Sopenharmony_ci      - ``rangehigh``
11062306a36Sopenharmony_ci      - :cspan:`1` The highest tunable frequency in units of 62.5 kHz,
11162306a36Sopenharmony_ci	or if the ``capability`` flag ``V4L2_TUNER_CAP_LOW`` is set, in
11262306a36Sopenharmony_ci	units of 62.5 Hz, or if the ``capability`` flag
11362306a36Sopenharmony_ci	``V4L2_TUNER_CAP_1HZ`` is set, in units of 1 Hz. If multiple
11462306a36Sopenharmony_ci	frequency bands are supported, then ``rangehigh`` is the highest
11562306a36Sopenharmony_ci	frequency of all the frequency bands.
11662306a36Sopenharmony_ci    * - __u32
11762306a36Sopenharmony_ci      - ``rxsubchans``
11862306a36Sopenharmony_ci      - :cspan:`1`
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci	Some tuners or audio decoders can determine the received audio
12162306a36Sopenharmony_ci	subprograms by analyzing audio carriers, pilot tones or other
12262306a36Sopenharmony_ci	indicators. To pass this information drivers set flags defined in
12362306a36Sopenharmony_ci	:ref:`tuner-rxsubchans` in this field. For example:
12462306a36Sopenharmony_ci    * -
12562306a36Sopenharmony_ci      -
12662306a36Sopenharmony_ci      - ``V4L2_TUNER_SUB_MONO``
12762306a36Sopenharmony_ci      - receiving mono audio
12862306a36Sopenharmony_ci    * -
12962306a36Sopenharmony_ci      -
13062306a36Sopenharmony_ci      - ``STEREO | SAP``
13162306a36Sopenharmony_ci      - receiving stereo audio and a secondary audio program
13262306a36Sopenharmony_ci    * -
13362306a36Sopenharmony_ci      -
13462306a36Sopenharmony_ci      - ``MONO | STEREO``
13562306a36Sopenharmony_ci      - receiving mono or stereo audio, the hardware cannot distinguish
13662306a36Sopenharmony_ci    * -
13762306a36Sopenharmony_ci      -
13862306a36Sopenharmony_ci      - ``LANG1 | LANG2``
13962306a36Sopenharmony_ci      - receiving bilingual audio
14062306a36Sopenharmony_ci    * -
14162306a36Sopenharmony_ci      -
14262306a36Sopenharmony_ci      - ``MONO | STEREO | LANG1 | LANG2``
14362306a36Sopenharmony_ci      - receiving mono, stereo or bilingual audio
14462306a36Sopenharmony_ci    * -
14562306a36Sopenharmony_ci      -
14662306a36Sopenharmony_ci      - :cspan:`1`
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci	When the ``V4L2_TUNER_CAP_STEREO``, ``_LANG1``, ``_LANG2`` or
14962306a36Sopenharmony_ci	``_SAP`` flag is cleared in the ``capability`` field, the
15062306a36Sopenharmony_ci	corresponding ``V4L2_TUNER_SUB_`` flag must not be set here.
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci	This field is valid only if this is the tuner of the current video
15362306a36Sopenharmony_ci	input, or when the structure refers to a radio tuner.
15462306a36Sopenharmony_ci    * - __u32
15562306a36Sopenharmony_ci      - ``audmode``
15662306a36Sopenharmony_ci      - :cspan:`1`
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci	The selected audio mode, see :ref:`tuner-audmode` for valid
15962306a36Sopenharmony_ci	values. The audio mode does not affect audio subprogram detection,
16062306a36Sopenharmony_ci	and like a :ref:`control` it does not automatically
16162306a36Sopenharmony_ci	change unless the requested mode is invalid or unsupported. See
16262306a36Sopenharmony_ci	:ref:`tuner-matrix` for possible results when the selected and
16362306a36Sopenharmony_ci	received audio programs do not match.
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci	Currently this is the only field of struct
16662306a36Sopenharmony_ci	struct :c:type:`v4l2_tuner` applications can change.
16762306a36Sopenharmony_ci    * - __u32
16862306a36Sopenharmony_ci      - ``signal``
16962306a36Sopenharmony_ci      - :cspan:`1` The signal strength if known.
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci	Ranging from 0 to 65535. Higher values indicate a better signal.
17262306a36Sopenharmony_ci    * - __s32
17362306a36Sopenharmony_ci      - ``afc``
17462306a36Sopenharmony_ci      - :cspan:`1` Automatic frequency control.
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci	When the ``afc`` value is negative, the frequency is too
17762306a36Sopenharmony_ci	low, when positive too high.
17862306a36Sopenharmony_ci    * - __u32
17962306a36Sopenharmony_ci      - ``reserved``\ [4]
18062306a36Sopenharmony_ci      - :cspan:`1` Reserved for future extensions.
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci	Drivers and applications must set the array to zero.
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm}|
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ci.. c:type:: v4l2_tuner_type
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci.. flat-table:: enum v4l2_tuner_type
19062306a36Sopenharmony_ci    :header-rows:  0
19162306a36Sopenharmony_ci    :stub-columns: 0
19262306a36Sopenharmony_ci    :widths:       3 1 6
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci    * - ``V4L2_TUNER_RADIO``
19562306a36Sopenharmony_ci      - 1
19662306a36Sopenharmony_ci      - Tuner supports radio
19762306a36Sopenharmony_ci    * - ``V4L2_TUNER_ANALOG_TV``
19862306a36Sopenharmony_ci      - 2
19962306a36Sopenharmony_ci      - Tuner supports analog TV
20062306a36Sopenharmony_ci    * - ``V4L2_TUNER_SDR``
20162306a36Sopenharmony_ci      - 4
20262306a36Sopenharmony_ci      - Tuner controls the A/D and/or D/A block of a
20362306a36Sopenharmony_ci	Software Digital Radio (SDR)
20462306a36Sopenharmony_ci    * - ``V4L2_TUNER_RF``
20562306a36Sopenharmony_ci      - 5
20662306a36Sopenharmony_ci      - Tuner controls the RF part of a Software Digital Radio (SDR)
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ci.. tabularcolumns:: |p{7.0cm}|p{2.2cm}|p{8.1cm}|
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci.. _tuner-capability:
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ci.. cssclass:: longtable
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci.. flat-table:: Tuner and Modulator Capability Flags
21562306a36Sopenharmony_ci    :header-rows:  0
21662306a36Sopenharmony_ci    :stub-columns: 0
21762306a36Sopenharmony_ci    :widths:       3 1 4
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_LOW``
22062306a36Sopenharmony_ci      - 0x0001
22162306a36Sopenharmony_ci      - When set, tuning frequencies are expressed in units of 62.5 Hz
22262306a36Sopenharmony_ci	instead of 62.5 kHz.
22362306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_NORM``
22462306a36Sopenharmony_ci      - 0x0002
22562306a36Sopenharmony_ci      - This is a multi-standard tuner; the video standard can or must be
22662306a36Sopenharmony_ci	switched. (B/G PAL tuners for example are typically not considered
22762306a36Sopenharmony_ci	multi-standard because the video standard is automatically
22862306a36Sopenharmony_ci	determined from the frequency band.) The set of supported video
22962306a36Sopenharmony_ci	standards is available from the struct
23062306a36Sopenharmony_ci	:c:type:`v4l2_input` pointing to this tuner, see the
23162306a36Sopenharmony_ci	description of ioctl :ref:`VIDIOC_ENUMINPUT`
23262306a36Sopenharmony_ci	for details. Only ``V4L2_TUNER_ANALOG_TV`` tuners can have this
23362306a36Sopenharmony_ci	capability.
23462306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_HWSEEK_BOUNDED``
23562306a36Sopenharmony_ci      - 0x0004
23662306a36Sopenharmony_ci      - If set, then this tuner supports the hardware seek functionality
23762306a36Sopenharmony_ci	where the seek stops when it reaches the end of the frequency
23862306a36Sopenharmony_ci	range.
23962306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_HWSEEK_WRAP``
24062306a36Sopenharmony_ci      - 0x0008
24162306a36Sopenharmony_ci      - If set, then this tuner supports the hardware seek functionality
24262306a36Sopenharmony_ci	where the seek wraps around when it reaches the end of the
24362306a36Sopenharmony_ci	frequency range.
24462306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_STEREO``
24562306a36Sopenharmony_ci      - 0x0010
24662306a36Sopenharmony_ci      - Stereo audio reception is supported.
24762306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_LANG1``
24862306a36Sopenharmony_ci      - 0x0040
24962306a36Sopenharmony_ci      - Reception of the primary language of a bilingual audio program is
25062306a36Sopenharmony_ci	supported. Bilingual audio is a feature of two-channel systems,
25162306a36Sopenharmony_ci	transmitting the primary language monaural on the main audio
25262306a36Sopenharmony_ci	carrier and a secondary language monaural on a second carrier.
25362306a36Sopenharmony_ci	Only ``V4L2_TUNER_ANALOG_TV`` tuners can have this capability.
25462306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_LANG2``
25562306a36Sopenharmony_ci      - 0x0020
25662306a36Sopenharmony_ci      - Reception of the secondary language of a bilingual audio program
25762306a36Sopenharmony_ci	is supported. Only ``V4L2_TUNER_ANALOG_TV`` tuners can have this
25862306a36Sopenharmony_ci	capability.
25962306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_SAP``
26062306a36Sopenharmony_ci      - 0x0020
26162306a36Sopenharmony_ci      - Reception of a secondary audio program is supported. This is a
26262306a36Sopenharmony_ci	feature of the BTSC system which accompanies the NTSC video
26362306a36Sopenharmony_ci	standard. Two audio carriers are available for mono or stereo
26462306a36Sopenharmony_ci	transmissions of a primary language, and an independent third
26562306a36Sopenharmony_ci	carrier for a monaural secondary language. Only
26662306a36Sopenharmony_ci	``V4L2_TUNER_ANALOG_TV`` tuners can have this capability.
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ci	.. note::
26962306a36Sopenharmony_ci
27062306a36Sopenharmony_ci	   The ``V4L2_TUNER_CAP_LANG2`` and ``V4L2_TUNER_CAP_SAP``
27162306a36Sopenharmony_ci	   flags are synonyms. ``V4L2_TUNER_CAP_SAP`` applies when the tuner
27262306a36Sopenharmony_ci	   supports the ``V4L2_STD_NTSC_M`` video standard.
27362306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_RDS``
27462306a36Sopenharmony_ci      - 0x0080
27562306a36Sopenharmony_ci      - RDS capture is supported. This capability is only valid for radio
27662306a36Sopenharmony_ci	tuners.
27762306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_RDS_BLOCK_IO``
27862306a36Sopenharmony_ci      - 0x0100
27962306a36Sopenharmony_ci      - The RDS data is passed as unparsed RDS blocks.
28062306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_RDS_CONTROLS``
28162306a36Sopenharmony_ci      - 0x0200
28262306a36Sopenharmony_ci      - The RDS data is parsed by the hardware and set via controls.
28362306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_FREQ_BANDS``
28462306a36Sopenharmony_ci      - 0x0400
28562306a36Sopenharmony_ci      - The :ref:`VIDIOC_ENUM_FREQ_BANDS`
28662306a36Sopenharmony_ci	ioctl can be used to enumerate the available frequency bands.
28762306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_HWSEEK_PROG_LIM``
28862306a36Sopenharmony_ci      - 0x0800
28962306a36Sopenharmony_ci      - The range to search when using the hardware seek functionality is
29062306a36Sopenharmony_ci	programmable, see
29162306a36Sopenharmony_ci	:ref:`VIDIOC_S_HW_FREQ_SEEK` for
29262306a36Sopenharmony_ci	details.
29362306a36Sopenharmony_ci    * - ``V4L2_TUNER_CAP_1HZ``
29462306a36Sopenharmony_ci      - 0x1000
29562306a36Sopenharmony_ci      - When set, tuning frequencies are expressed in units of 1 Hz
29662306a36Sopenharmony_ci	instead of 62.5 kHz.
29762306a36Sopenharmony_ci
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_ci.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm}|
30062306a36Sopenharmony_ci
30162306a36Sopenharmony_ci.. _tuner-rxsubchans:
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_ci.. flat-table:: Tuner Audio Reception Flags
30462306a36Sopenharmony_ci    :header-rows:  0
30562306a36Sopenharmony_ci    :stub-columns: 0
30662306a36Sopenharmony_ci    :widths:       3 1 4
30762306a36Sopenharmony_ci
30862306a36Sopenharmony_ci    * - ``V4L2_TUNER_SUB_MONO``
30962306a36Sopenharmony_ci      - 0x0001
31062306a36Sopenharmony_ci      - The tuner receives a mono audio signal.
31162306a36Sopenharmony_ci    * - ``V4L2_TUNER_SUB_STEREO``
31262306a36Sopenharmony_ci      - 0x0002
31362306a36Sopenharmony_ci      - The tuner receives a stereo audio signal.
31462306a36Sopenharmony_ci    * - ``V4L2_TUNER_SUB_LANG1``
31562306a36Sopenharmony_ci      - 0x0008
31662306a36Sopenharmony_ci      - The tuner receives the primary language of a bilingual audio
31762306a36Sopenharmony_ci	signal. Drivers must clear this flag when the current video
31862306a36Sopenharmony_ci	standard is ``V4L2_STD_NTSC_M``.
31962306a36Sopenharmony_ci    * - ``V4L2_TUNER_SUB_LANG2``
32062306a36Sopenharmony_ci      - 0x0004
32162306a36Sopenharmony_ci      - The tuner receives the secondary language of a bilingual audio
32262306a36Sopenharmony_ci	signal (or a second audio program).
32362306a36Sopenharmony_ci    * - ``V4L2_TUNER_SUB_SAP``
32462306a36Sopenharmony_ci      - 0x0004
32562306a36Sopenharmony_ci      - The tuner receives a Second Audio Program.
32662306a36Sopenharmony_ci
32762306a36Sopenharmony_ci	.. note::
32862306a36Sopenharmony_ci
32962306a36Sopenharmony_ci	   The ``V4L2_TUNER_SUB_LANG2`` and ``V4L2_TUNER_SUB_SAP``
33062306a36Sopenharmony_ci	   flags are synonyms. The ``V4L2_TUNER_SUB_SAP`` flag applies
33162306a36Sopenharmony_ci	   when the current video standard is ``V4L2_STD_NTSC_M``.
33262306a36Sopenharmony_ci    * - ``V4L2_TUNER_SUB_RDS``
33362306a36Sopenharmony_ci      - 0x0010
33462306a36Sopenharmony_ci      - The tuner receives an RDS channel.
33562306a36Sopenharmony_ci
33662306a36Sopenharmony_ci
33762306a36Sopenharmony_ci.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm}|
33862306a36Sopenharmony_ci
33962306a36Sopenharmony_ci.. _tuner-audmode:
34062306a36Sopenharmony_ci
34162306a36Sopenharmony_ci.. flat-table:: Tuner Audio Modes
34262306a36Sopenharmony_ci    :header-rows:  0
34362306a36Sopenharmony_ci    :stub-columns: 0
34462306a36Sopenharmony_ci    :widths:       3 1 4
34562306a36Sopenharmony_ci
34662306a36Sopenharmony_ci    * - ``V4L2_TUNER_MODE_MONO``
34762306a36Sopenharmony_ci      - 0
34862306a36Sopenharmony_ci      - Play mono audio. When the tuner receives a stereo signal this a
34962306a36Sopenharmony_ci	down-mix of the left and right channel. When the tuner receives a
35062306a36Sopenharmony_ci	bilingual or SAP signal this mode selects the primary language.
35162306a36Sopenharmony_ci    * - ``V4L2_TUNER_MODE_STEREO``
35262306a36Sopenharmony_ci      - 1
35362306a36Sopenharmony_ci      - Play stereo audio. When the tuner receives bilingual audio it may
35462306a36Sopenharmony_ci	play different languages on the left and right channel or the
35562306a36Sopenharmony_ci	primary language is played on both channels.
35662306a36Sopenharmony_ci
35762306a36Sopenharmony_ci	Playing different languages in this mode is deprecated. New
35862306a36Sopenharmony_ci	drivers should do this only in ``MODE_LANG1_LANG2``.
35962306a36Sopenharmony_ci
36062306a36Sopenharmony_ci	When the tuner receives no stereo signal or does not support
36162306a36Sopenharmony_ci	stereo reception the driver shall fall back to ``MODE_MONO``.
36262306a36Sopenharmony_ci    * - ``V4L2_TUNER_MODE_LANG1``
36362306a36Sopenharmony_ci      - 3
36462306a36Sopenharmony_ci      - Play the primary language, mono or stereo. Only
36562306a36Sopenharmony_ci	``V4L2_TUNER_ANALOG_TV`` tuners support this mode.
36662306a36Sopenharmony_ci    * - ``V4L2_TUNER_MODE_LANG2``
36762306a36Sopenharmony_ci      - 2
36862306a36Sopenharmony_ci      - Play the secondary language, mono. When the tuner receives no
36962306a36Sopenharmony_ci	bilingual audio or SAP, or their reception is not supported the
37062306a36Sopenharmony_ci	driver shall fall back to mono or stereo mode. Only
37162306a36Sopenharmony_ci	``V4L2_TUNER_ANALOG_TV`` tuners support this mode.
37262306a36Sopenharmony_ci    * - ``V4L2_TUNER_MODE_SAP``
37362306a36Sopenharmony_ci      - 2
37462306a36Sopenharmony_ci      - Play the Second Audio Program. When the tuner receives no
37562306a36Sopenharmony_ci	bilingual audio or SAP, or their reception is not supported the
37662306a36Sopenharmony_ci	driver shall fall back to mono or stereo mode. Only
37762306a36Sopenharmony_ci	``V4L2_TUNER_ANALOG_TV`` tuners support this mode.
37862306a36Sopenharmony_ci
37962306a36Sopenharmony_ci	.. note:: The ``V4L2_TUNER_MODE_LANG2`` and ``V4L2_TUNER_MODE_SAP``
38062306a36Sopenharmony_ci	   are synonyms.
38162306a36Sopenharmony_ci    * - ``V4L2_TUNER_MODE_LANG1_LANG2``
38262306a36Sopenharmony_ci      - 4
38362306a36Sopenharmony_ci      - Play the primary language on the left channel, the secondary
38462306a36Sopenharmony_ci	language on the right channel. When the tuner receives no
38562306a36Sopenharmony_ci	bilingual audio or SAP, it shall fall back to ``MODE_LANG1`` or
38662306a36Sopenharmony_ci	``MODE_MONO``. Only ``V4L2_TUNER_ANALOG_TV`` tuners support this
38762306a36Sopenharmony_ci	mode.
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ci.. raw:: latex
39062306a36Sopenharmony_ci
39162306a36Sopenharmony_ci    \scriptsize
39262306a36Sopenharmony_ci
39362306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{1.5cm}|p{2.9cm}|p{2.9cm}|p{2.9cm}|p{2.9cm}|
39462306a36Sopenharmony_ci
39562306a36Sopenharmony_ci.. _tuner-matrix:
39662306a36Sopenharmony_ci
39762306a36Sopenharmony_ci.. flat-table:: Tuner Audio Matrix
39862306a36Sopenharmony_ci    :header-rows:  2
39962306a36Sopenharmony_ci    :stub-columns: 0
40062306a36Sopenharmony_ci    :widths: 7 7 14 14 14 14
40162306a36Sopenharmony_ci
40262306a36Sopenharmony_ci    * -
40362306a36Sopenharmony_ci      - :cspan:`4` Selected ``V4L2_TUNER_MODE_``
40462306a36Sopenharmony_ci    * - Received ``V4L2_TUNER_SUB_``
40562306a36Sopenharmony_ci      - ``MONO``
40662306a36Sopenharmony_ci      - ``STEREO``
40762306a36Sopenharmony_ci      - ``LANG1``
40862306a36Sopenharmony_ci      - ``LANG2 = SAP``
40962306a36Sopenharmony_ci      - ``LANG1_LANG2``\ [#f1]_
41062306a36Sopenharmony_ci    * - ``MONO``
41162306a36Sopenharmony_ci      - Mono
41262306a36Sopenharmony_ci      - Mono/Mono
41362306a36Sopenharmony_ci      - Mono
41462306a36Sopenharmony_ci      - Mono
41562306a36Sopenharmony_ci      - Mono/Mono
41662306a36Sopenharmony_ci    * - ``MONO | SAP``
41762306a36Sopenharmony_ci      - Mono
41862306a36Sopenharmony_ci      - Mono/Mono
41962306a36Sopenharmony_ci      - Mono
42062306a36Sopenharmony_ci      - SAP
42162306a36Sopenharmony_ci      - Mono/SAP (preferred) or Mono/Mono
42262306a36Sopenharmony_ci    * - ``STEREO``
42362306a36Sopenharmony_ci      - L+R
42462306a36Sopenharmony_ci      - L/R
42562306a36Sopenharmony_ci      - Stereo L/R (preferred) or Mono L+R
42662306a36Sopenharmony_ci      - Stereo L/R (preferred) or Mono L+R
42762306a36Sopenharmony_ci      - L/R (preferred) or L+R/L+R
42862306a36Sopenharmony_ci    * - ``STEREO | SAP``
42962306a36Sopenharmony_ci      - L+R
43062306a36Sopenharmony_ci      - L/R
43162306a36Sopenharmony_ci      - Stereo L/R (preferred) or Mono L+R
43262306a36Sopenharmony_ci      - SAP
43362306a36Sopenharmony_ci      - L+R/SAP (preferred) or L/R or L+R/L+R
43462306a36Sopenharmony_ci    * - ``LANG1 | LANG2``
43562306a36Sopenharmony_ci      - Language 1
43662306a36Sopenharmony_ci      - Lang1/Lang2 (deprecated\ [#f2]_) or Lang1/Lang1
43762306a36Sopenharmony_ci      - Language 1
43862306a36Sopenharmony_ci      - Language 2
43962306a36Sopenharmony_ci      - Lang1/Lang2 (preferred) or Lang1/Lang1
44062306a36Sopenharmony_ci
44162306a36Sopenharmony_ci.. raw:: latex
44262306a36Sopenharmony_ci
44362306a36Sopenharmony_ci    \normalsize
44462306a36Sopenharmony_ci
44562306a36Sopenharmony_ciReturn Value
44662306a36Sopenharmony_ci============
44762306a36Sopenharmony_ci
44862306a36Sopenharmony_ciOn success 0 is returned, on error -1 and the ``errno`` variable is set
44962306a36Sopenharmony_ciappropriately. The generic error codes are described at the
45062306a36Sopenharmony_ci:ref:`Generic Error Codes <gen-errors>` chapter.
45162306a36Sopenharmony_ci
45262306a36Sopenharmony_ciEINVAL
45362306a36Sopenharmony_ci    The struct :c:type:`v4l2_tuner` ``index`` is out of
45462306a36Sopenharmony_ci    bounds.
45562306a36Sopenharmony_ci
45662306a36Sopenharmony_ci.. [#f1]
45762306a36Sopenharmony_ci   This mode has been added in Linux 2.6.17 and may not be supported by
45862306a36Sopenharmony_ci   older drivers.
45962306a36Sopenharmony_ci
46062306a36Sopenharmony_ci.. [#f2]
46162306a36Sopenharmony_ci   Playback of both languages in ``MODE_STEREO`` is deprecated. In the
46262306a36Sopenharmony_ci   future drivers should produce only the primary language in this mode.
46362306a36Sopenharmony_ci   Applications should request ``MODE_LANG1_LANG2`` to record both
46462306a36Sopenharmony_ci   languages or a stereo signal.
465