| .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later |
| .. c:namespace:: V4L |
| |
| .. _VIDIOC_G_AUDIO: |
| |
| ************************************ |
| ioctl VIDIOC_G_AUDIO, VIDIOC_S_AUDIO |
| ************************************ |
| |
| Name |
| ==== |
| |
| VIDIOC_G_AUDIO - VIDIOC_S_AUDIO - Query or select the current audio input and its attributes |
| |
| Synopsis |
| ======== |
| |
| .. c:macro:: VIDIOC_G_AUDIO |
| |
| ``int ioctl(int fd, VIDIOC_G_AUDIO, struct v4l2_audio *argp)`` |
| |
| .. c:macro:: VIDIOC_S_AUDIO |
| |
| ``int ioctl(int fd, VIDIOC_S_AUDIO, const struct v4l2_audio *argp)`` |
| |
| Arguments |
| ========= |
| |
| ``fd`` |
| File descriptor returned by :c:func:`open()`. |
| |
| ``argp`` |
| Pointer to struct :c:type:`v4l2_audio`. |
| |
| Description |
| =========== |
| |
| To query the current audio input applications zero out the ``reserved`` |
| array of a struct :c:type:`v4l2_audio` and call the |
| :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` ioctl with a pointer to this structure. Drivers fill |
| the rest of the structure or return an ``EINVAL`` error code when the device |
| has no audio inputs, or none which combine with the current video input. |
| |
| Audio inputs have one writable property, the audio mode. To select the |
| current audio input *and* change the audio mode, applications initialize |
| the ``index`` and ``mode`` fields, and the ``reserved`` array of a |
| struct :c:type:`v4l2_audio` structure and call the :ref:`VIDIOC_S_AUDIO <VIDIOC_G_AUDIO>` |
| ioctl. Drivers may switch to a different audio mode if the request |
| cannot be satisfied. However, this is a write-only ioctl, it does not |
| return the actual new audio mode. |
| |
| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.5cm}| |
| |
| .. c:type:: v4l2_audio |
| |
| .. flat-table:: struct v4l2_audio |
| :header-rows: 0 |
| :stub-columns: 0 |
| :widths: 1 1 2 |
| |
| * - __u32 |
| - ``index`` |
| - Identifies the audio input, set by the driver or application. |
| * - __u8 |
| - ``name``\ [32] |
| - Name of the audio input, a NUL-terminated ASCII string, for |
| example: "Line In". This information is intended for the user, |
| preferably the connector label on the device itself. |
| * - __u32 |
| - ``capability`` |
| - Audio capability flags, see :ref:`audio-capability`. |
| * - __u32 |
| - ``mode`` |
| - Audio mode flags set by drivers and applications (on |
| :ref:`VIDIOC_S_AUDIO <VIDIOC_G_AUDIO>` ioctl), see :ref:`audio-mode`. |
| * - __u32 |
| - ``reserved``\ [2] |
| - Reserved for future extensions. Drivers and applications must set |
| the array to zero. |
| |
| |
| .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm}| |
| |
| .. _audio-capability: |
| |
| .. flat-table:: Audio Capability Flags |
| :header-rows: 0 |
| :stub-columns: 0 |
| :widths: 3 1 4 |
| |
| * - ``V4L2_AUDCAP_STEREO`` |
| - 0x00001 |
| - This is a stereo input. The flag is intended to automatically |
| disable stereo recording etc. when the signal is always monaural. |
| The API provides no means to detect if stereo is *received*, |
| unless the audio input belongs to a tuner. |
| * - ``V4L2_AUDCAP_AVL`` |
| - 0x00002 |
| - Automatic Volume Level mode is supported. |
| |
| |
| .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm}| |
| |
| .. _audio-mode: |
| |
| .. flat-table:: Audio Mode Flags |
| :header-rows: 0 |
| :stub-columns: 0 |
| :widths: 3 1 4 |
| |
| * - ``V4L2_AUDMODE_AVL`` |
| - 0x00001 |
| - AVL mode is on. |
| |
| Return Value |
| ============ |
| |
| On success 0 is returned, on error -1 and the ``errno`` variable is set |
| appropriately. The generic error codes are described at the |
| :ref:`Generic Error Codes <gen-errors>` chapter. |
| |
| EINVAL |
| No audio inputs combine with the current video input, or the number |
| of the selected audio input is out of bounds or it does not combine. |