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