1643 lines
28 KiB
ReStructuredText
1643 lines
28 KiB
ReStructuredText
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later OR GPL-2.0
|
||
|
||
.. c:namespace:: dtv.legacy.audio
|
||
|
||
.. _dvb_audio:
|
||
|
||
================
|
||
DVB Audio Device
|
||
================
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
The DVB audio device controls the MPEG2 audio decoder of the DVB
|
||
hardware. It can be accessed through ``/dev/dvb/adapter?/audio?``. Data
|
||
types and ioctl definitions can be accessed by including
|
||
``linux/dvb/audio.h`` in your application.
|
||
|
||
Please note that most DVB cards don’t have their own MPEG decoder, which
|
||
results in the omission of the audio and video device.
|
||
|
||
These ioctls were also used by V4L2 to control MPEG decoders implemented
|
||
in V4L2. The use of these ioctls for that purpose has been made obsolete
|
||
and proper V4L2 ioctls or controls have been created to replace that
|
||
functionality. Use :ref:`V4L2 ioctls<audio>` for new drivers!
|
||
|
||
|
||
Audio Data Types
|
||
================
|
||
|
||
This section describes the structures, data types and defines used when
|
||
talking to the audio device.
|
||
|
||
|
||
-----
|
||
|
||
|
||
audio_stream_source_t
|
||
---------------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:enum:: audio_stream_source_t
|
||
|
||
.. code-block:: c
|
||
|
||
typedef enum {
|
||
AUDIO_SOURCE_DEMUX,
|
||
AUDIO_SOURCE_MEMORY
|
||
} audio_stream_source_t;
|
||
|
||
Constants
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_SOURCE_DEMUX``
|
||
|
||
- :cspan:`1` Selects the demultiplexer (fed either by the frontend
|
||
or the DVR device) as the source of the video stream.
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_SOURCE_MEMORY``
|
||
|
||
- Selects the stream from the application that comes through
|
||
the `write()`_ system call.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
The audio stream source is set through the `AUDIO_SELECT_SOURCE`_ call
|
||
and can take the following values, depending on whether we are replaying
|
||
from an internal (demux) or external (user write) source.
|
||
|
||
The data fed to the decoder is also controlled by the PID-filter.
|
||
Output selection: :c:type:`dmx_output` ``DMX_OUT_DECODER``.
|
||
|
||
|
||
-----
|
||
|
||
|
||
audio_play_state_t
|
||
------------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:enum:: audio_play_state_t
|
||
|
||
.. code-block:: c
|
||
|
||
typedef enum {
|
||
AUDIO_STOPPED,
|
||
AUDIO_PLAYING,
|
||
AUDIO_PAUSED
|
||
} audio_play_state_t;
|
||
|
||
Constants
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_STOPPED``
|
||
|
||
- Audio is stopped.
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_PLAYING``
|
||
|
||
- Audio is currently playing.
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_PAUSE``
|
||
|
||
- Audio is frozen.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
This values can be returned by the `AUDIO_GET_STATUS`_ call
|
||
representing the state of audio playback.
|
||
|
||
|
||
-----
|
||
|
||
|
||
audio_channel_select_t
|
||
----------------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:enum:: audio_channel_select_t
|
||
|
||
.. code-block:: c
|
||
|
||
typedef enum {
|
||
AUDIO_STEREO,
|
||
AUDIO_MONO_LEFT,
|
||
AUDIO_MONO_RIGHT,
|
||
AUDIO_MONO,
|
||
AUDIO_STEREO_SWAPPED
|
||
} audio_channel_select_t;
|
||
|
||
Constants
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_STEREO``
|
||
|
||
- Stereo.
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_MONO_LEFT``
|
||
|
||
- Mono, select left stereo channel as source.
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_MONO_RIGHT``
|
||
|
||
- Mono, select right stereo channel as source.
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_MONO``
|
||
|
||
- Mono source only.
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_STEREO_SWAPPED``
|
||
|
||
- Stereo, swap L & R.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
The audio channel selected via `AUDIO_CHANNEL_SELECT`_ is determined by
|
||
this values.
|
||
|
||
|
||
-----
|
||
|
||
|
||
audio_mixer_t
|
||
-------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:struct:: audio_mixer
|
||
|
||
.. code-block:: c
|
||
|
||
typedef struct audio_mixer {
|
||
unsigned int volume_left;
|
||
unsigned int volume_right;
|
||
} audio_mixer_t;
|
||
|
||
Variables
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``unsigned int volume_left``
|
||
|
||
- Volume left channel.
|
||
Valid range: 0 ... 255
|
||
|
||
- ..
|
||
|
||
- ``unsigned int volume_right``
|
||
|
||
- Volume right channel.
|
||
Valid range: 0 ... 255
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
This structure is used by the `AUDIO_SET_MIXER`_ call to set the
|
||
audio volume.
|
||
|
||
|
||
-----
|
||
|
||
|
||
audio_status
|
||
------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:struct:: audio_status
|
||
|
||
.. code-block:: c
|
||
|
||
typedef struct audio_status {
|
||
int AV_sync_state;
|
||
int mute_state;
|
||
audio_play_state_t play_state;
|
||
audio_stream_source_t stream_source;
|
||
audio_channel_select_t channel_select;
|
||
int bypass_mode;
|
||
audio_mixer_t mixer_state;
|
||
} audio_status_t;
|
||
|
||
Variables
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- :rspan:`2` ``int AV_sync_state``
|
||
|
||
- :cspan:`1` Shows if A/V synchronization is ON or OFF.
|
||
|
||
- ..
|
||
|
||
- TRUE ( != 0 )
|
||
|
||
- AV-sync ON.
|
||
|
||
- ..
|
||
|
||
- FALSE ( == 0 )
|
||
|
||
- AV-sync OFF.
|
||
|
||
- ..
|
||
|
||
- :rspan:`2` ``int mute_state``
|
||
|
||
- :cspan:`1` Indicates if audio is muted or not.
|
||
|
||
- ..
|
||
|
||
- TRUE ( != 0 )
|
||
|
||
- mute audio
|
||
|
||
- ..
|
||
|
||
- FALSE ( == 0 )
|
||
|
||
- unmute audio
|
||
|
||
- ..
|
||
|
||
- `audio_play_state_t`_ ``play_state``
|
||
|
||
- Current playback state.
|
||
|
||
- ..
|
||
|
||
- `audio_stream_source_t`_ ``stream_source``
|
||
|
||
- Current source of the data.
|
||
|
||
- ..
|
||
|
||
- :rspan:`2` ``int bypass_mode``
|
||
|
||
- :cspan:`1` Is the decoding of the current Audio stream in
|
||
the DVB subsystem enabled or disabled.
|
||
|
||
- ..
|
||
|
||
- TRUE ( != 0 )
|
||
|
||
- Bypass disabled.
|
||
|
||
- ..
|
||
|
||
- FALSE ( == 0 )
|
||
|
||
- Bypass enabled.
|
||
|
||
- ..
|
||
|
||
- `audio_mixer_t`_ ``mixer_state``
|
||
|
||
- Current volume settings.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
The `AUDIO_GET_STATUS`_ call returns this structure as information
|
||
about various states of the playback operation.
|
||
|
||
|
||
-----
|
||
|
||
|
||
audio encodings
|
||
---------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. code-block:: c
|
||
|
||
#define AUDIO_CAP_DTS 1
|
||
#define AUDIO_CAP_LPCM 2
|
||
#define AUDIO_CAP_MP1 4
|
||
#define AUDIO_CAP_MP2 8
|
||
#define AUDIO_CAP_MP3 16
|
||
#define AUDIO_CAP_AAC 32
|
||
#define AUDIO_CAP_OGG 64
|
||
#define AUDIO_CAP_SDDS 128
|
||
#define AUDIO_CAP_AC3 256
|
||
|
||
Constants
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_CAP_DTS``
|
||
|
||
- :cspan:`1` The hardware accepts DTS audio tracks.
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_CAP_LPCM``
|
||
|
||
- The hardware accepts uncompressed audio with
|
||
Linear Pulse-Code Modulation (LPCM)
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_CAP_MP1``
|
||
|
||
- The hardware accepts MPEG-1 Audio Layer 1.
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_CAP_MP2``
|
||
|
||
- The hardware accepts MPEG-1 Audio Layer 2.
|
||
Also known as MUSICAM.
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_CAP_MP3``
|
||
|
||
- The hardware accepts MPEG-1 Audio Layer III.
|
||
Commomly known as .mp3.
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_CAP_AAC``
|
||
|
||
- The hardware accepts AAC (Advanced Audio Coding).
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_CAP_OGG``
|
||
|
||
- The hardware accepts Vorbis audio tracks.
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_CAP_SDDS``
|
||
|
||
- The hardware accepts Sony Dynamic Digital Sound (SDDS).
|
||
|
||
- ..
|
||
|
||
- ``AUDIO_CAP_AC3``
|
||
|
||
- The hardware accepts Dolby Digital ATSC A/52 audio.
|
||
Also known as AC-3.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
A call to `AUDIO_GET_CAPABILITIES`_ returns an unsigned integer with the
|
||
following bits set according to the hardwares capabilities.
|
||
|
||
|
||
-----
|
||
|
||
|
||
Audio Function Calls
|
||
====================
|
||
|
||
|
||
AUDIO_STOP
|
||
----------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_STOP
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_STOP)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- File descriptor returned by a previous call to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- :cspan:`1` Equals ``AUDIO_STOP`` for this command.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl call asks the Audio Device to stop playing the current
|
||
stream.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_PLAY
|
||
----------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_PLAY
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_PLAY)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- File descriptor returned by a previous call to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- :cspan:`1` Equals ``AUDIO_PLAY`` for this command.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl call asks the Audio Device to start playing an audio stream
|
||
from the selected source.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_PAUSE
|
||
-----------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_PAUSE
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_PAUSE)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- Equals ``AUDIO_PAUSE`` for this command.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl call suspends the audio stream being played. Decoding and
|
||
playing are paused. It is then possible to restart again decoding and
|
||
playing process of the audio stream using `AUDIO_CONTINUE`_ command.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_CONTINUE
|
||
--------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_CONTINUE
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_CONTINUE)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- Equals ``AUDIO_CONTINUE`` for this command.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl restarts the decoding and playing process previously paused
|
||
with `AUDIO_PAUSE`_ command.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_SELECT_SOURCE
|
||
-------------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_SELECT_SOURCE
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_SELECT_SOURCE,
|
||
audio_stream_source_t source)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- Equals ``AUDIO_SELECT_SOURCE`` for this command.
|
||
|
||
- ..
|
||
|
||
- `audio_stream_source_t`_ ``source``
|
||
|
||
- Indicates the source that shall be used for the Audio stream.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl call informs the audio device which source shall be used for
|
||
the input data. The possible sources are demux or memory. If
|
||
``AUDIO_SOURCE_MEMORY`` is selected, the data is fed to the Audio Device
|
||
through the write command. If ``AUDIO_SOURCE_DEMUX`` is selected, the data
|
||
is directly transferred from the onboard demux-device to the decoder.
|
||
Note: This only supports DVB-devices with one demux and one decoder so far.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_SET_MUTE
|
||
--------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_SET_MUTE
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_SET_MUTE, int state)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- :cspan:`1` Equals ``AUDIO_SET_MUTE`` for this command.
|
||
|
||
- ..
|
||
|
||
- :rspan:`2` ``int state``
|
||
|
||
- :cspan:`1` Indicates if audio device shall mute or not.
|
||
|
||
- ..
|
||
|
||
- TRUE ( != 0 )
|
||
|
||
- mute audio
|
||
|
||
- ..
|
||
|
||
- FALSE ( == 0 )
|
||
|
||
- unmute audio
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl is for DVB devices only. To control a V4L2 decoder use the
|
||
V4L2 :ref:`VIDIOC_DECODER_CMD` with the
|
||
``V4L2_DEC_CMD_START_MUTE_AUDIO`` flag instead.
|
||
|
||
This ioctl call asks the audio device to mute the stream that is
|
||
currently being played.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_SET_AV_SYNC
|
||
-----------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_SET_AV_SYNC
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_SET_AV_SYNC, int state)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- :cspan:`1` Equals ``AUDIO_AV_SYNC`` for this command.
|
||
|
||
- ..
|
||
|
||
- :rspan:`2` ``int state``
|
||
|
||
- :cspan:`1` Tells the DVB subsystem if A/V synchronization
|
||
shall be ON or OFF.
|
||
|
||
- ..
|
||
|
||
- TRUE ( != 0 )
|
||
|
||
- AV-sync ON.
|
||
|
||
- ..
|
||
|
||
- FALSE ( == 0 )
|
||
|
||
- AV-sync OFF.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl call asks the Audio Device to turn ON or OFF A/V
|
||
synchronization.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_SET_BYPASS_MODE
|
||
---------------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_SET_BYPASS_MODE
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_SET_BYPASS_MODE, int mode)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- :cspan:`1` Equals ``AUDIO_SET_BYPASS_MODE`` for this command.
|
||
|
||
- ..
|
||
|
||
- :rspan:`2` ``int mode``
|
||
|
||
- :cspan:`1` Enables or disables the decoding of the current
|
||
Audio stream in the DVB subsystem.
|
||
- ..
|
||
|
||
- TRUE ( != 0 )
|
||
|
||
- Disable bypass
|
||
|
||
- ..
|
||
|
||
- FALSE ( == 0 )
|
||
|
||
- Enable bypass
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl call asks the Audio Device to bypass the Audio decoder and
|
||
forward the stream without decoding. This mode shall be used if streams
|
||
that can’t be handled by the DVB system shall be decoded. Dolby
|
||
DigitalTM streams are automatically forwarded by the DVB subsystem if
|
||
the hardware can handle it.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_CHANNEL_SELECT
|
||
--------------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_CHANNEL_SELECT
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_CHANNEL_SELECT,
|
||
audio_channel_select_t)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- Equals ``AUDIO_CHANNEL_SELECT`` for this command.
|
||
|
||
- ..
|
||
|
||
- `audio_channel_select_t`_ ``ch``
|
||
|
||
- Select the output format of the audio (mono left/right, stereo).
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl is for DVB devices only. To control a V4L2 decoder use the
|
||
V4L2 ``V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK`` control instead.
|
||
|
||
This ioctl call asks the Audio Device to select the requested channel if
|
||
possible.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_GET_STATUS
|
||
----------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_GET_STATUS
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_GET_STATUS,
|
||
struct audio_status *status)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- Equals AUDIO_GET_STATUS for this command.
|
||
|
||
- ..
|
||
|
||
- ``struct`` `audio_status`_ ``*status``
|
||
|
||
- Returns the current state of Audio Device.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl call asks the Audio Device to return the current state of the
|
||
Audio Device.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_GET_CAPABILITIES
|
||
----------------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_GET_CAPABILITIES
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_GET_CAPABILITIES,
|
||
unsigned int *cap)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- Equals ``AUDIO_GET_CAPABILITIES`` for this command.
|
||
|
||
- ..
|
||
|
||
- ``unsigned int *cap``
|
||
|
||
- Returns a bit array of supported sound formats.
|
||
Bits are defined in `audio encodings`_.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl call asks the Audio Device to tell us about the decoding
|
||
capabilities of the audio hardware.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_CLEAR_BUFFER
|
||
------------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_CLEAR_BUFFER
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_CLEAR_BUFFER)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- Equals ``AUDIO_CLEAR_BUFFER`` for this command.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl call asks the Audio Device to clear all software and hardware
|
||
buffers of the audio decoder device.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_SET_ID
|
||
------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_SET_ID
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_SET_ID, int id)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- Equals ``AUDIO_SET_ID`` for this command.
|
||
|
||
- ..
|
||
|
||
- ``int id``
|
||
|
||
- Audio sub-stream id.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl selects which sub-stream is to be decoded if a program or
|
||
system stream is sent to the video device.
|
||
|
||
If no audio stream type is set the id has to be in range [0xC0,0xDF]
|
||
for MPEG sound, in [0x80,0x87] for AC3 and in [0xA0,0xA7] for LPCM.
|
||
See ITU-T H.222.0 | ISO/IEC 13818-1 for further description.
|
||
|
||
If the stream type is set with `AUDIO_SET_STREAMTYPE`_, specifies the
|
||
id just the sub-stream id of the audio stream and only the first 5 bits
|
||
(& 0x1F) are recognized.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_SET_MIXER
|
||
---------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_SET_MIXER
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_SET_MIXER, audio_mixer_t *mix)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- Equals ``AUDIO_SET_MIXER`` for this command.
|
||
|
||
- ..
|
||
|
||
- ``audio_mixer_t *mix``
|
||
|
||
- Mixer settings.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl lets you adjust the mixer settings of the audio decoder.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_SET_STREAMTYPE
|
||
--------------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_SET_STREAMTYPE
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(fd, int request = AUDIO_SET_STREAMTYPE, int type)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- Equals ``AUDIO_SET_STREAMTYPE`` for this command.
|
||
|
||
- ..
|
||
|
||
- ``int type``
|
||
|
||
- Stream type.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl tells the driver which kind of audio stream to expect. This
|
||
is useful if the stream offers several audio sub-streams like LPCM and
|
||
AC3.
|
||
|
||
Stream types defined in ITU-T H.222.0 | ISO/IEC 13818-1 are used.
|
||
|
||
|
||
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.
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``EINVAL``
|
||
|
||
- Type is not a valid or supported stream type.
|
||
|
||
|
||
-----
|
||
|
||
|
||
AUDIO_BILINGUAL_CHANNEL_SELECT
|
||
------------------------------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:macro:: AUDIO_BILINGUAL_CHANNEL_SELECT
|
||
|
||
.. code-block:: c
|
||
|
||
int ioctl(int fd, int request = AUDIO_BILINGUAL_CHANNEL_SELECT,
|
||
audio_channel_select_t)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``int request``
|
||
|
||
- Equals ``AUDIO_BILINGUAL_CHANNEL_SELECT`` for this command.
|
||
|
||
- ..
|
||
|
||
- ``audio_channel_select_t ch``
|
||
|
||
- Select the output format of the audio (mono left/right, stereo).
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
.. attention:: Do **not** use in new drivers!
|
||
See: :ref:`legacy_dvb_decoder_notes`
|
||
|
||
This ioctl has been replaced by the V4L2
|
||
``V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK`` control
|
||
for MPEG decoders controlled through V4L2.
|
||
|
||
This ioctl call asks the Audio Device to select the requested channel
|
||
for bilingual streams if possible.
|
||
|
||
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.
|
||
|
||
|
||
-----
|
||
|
||
|
||
open()
|
||
------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. code-block:: c
|
||
|
||
#include <fcntl.h>
|
||
|
||
.. c:function:: int open(const char *deviceName, int flags)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``const char *deviceName``
|
||
|
||
- Name of specific audio device.
|
||
|
||
- ..
|
||
|
||
- :rspan:`3` ``int flags``
|
||
|
||
- :cspan:`1` A bit-wise OR of the following flags:
|
||
|
||
- ..
|
||
|
||
- ``O_RDONLY``
|
||
|
||
- read-only access
|
||
|
||
- ..
|
||
|
||
- ``O_RDWR``
|
||
|
||
- read/write access
|
||
|
||
- ..
|
||
|
||
- ``O_NONBLOCK``
|
||
- | Open in non-blocking mode
|
||
| (blocking mode is the default)
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
This system call opens a named audio device (e.g.
|
||
``/dev/dvb/adapter0/audio0``) for subsequent use. When an open() call has
|
||
succeeded, the device will be ready for use. The significance of
|
||
blocking or non-blocking mode is described in the documentation for
|
||
functions where there is a difference. It does not affect the semantics
|
||
of the open() call itself. A device opened in blocking mode can later be
|
||
put into non-blocking mode (and vice versa) using the F_SETFL command
|
||
of the fcntl system call. This is a standard system call, documented in
|
||
the Linux manual page for fcntl. Only one user can open the Audio Device
|
||
in O_RDWR mode. All other attempts to open the device in this mode will
|
||
fail, and an error code will be returned. If the Audio Device is opened
|
||
in O_RDONLY mode, the only ioctl call that can be used is
|
||
`AUDIO_GET_STATUS`_. All other call will return with an error code.
|
||
|
||
Return Value
|
||
~~~~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``ENODEV``
|
||
|
||
- Device driver not loaded/available.
|
||
|
||
- ..
|
||
|
||
- ``EBUSY``
|
||
|
||
- Device or resource busy.
|
||
|
||
- ..
|
||
|
||
- ``EINVAL``
|
||
|
||
- Invalid argument.
|
||
|
||
|
||
-----
|
||
|
||
|
||
close()
|
||
-------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. c:function:: int close(int fd)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
This system call closes a previously opened audio device.
|
||
|
||
Return Value
|
||
~~~~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``EBADF``
|
||
|
||
- Fd is not a valid open file descriptor.
|
||
|
||
-----
|
||
|
||
|
||
write()
|
||
-------
|
||
|
||
Synopsis
|
||
~~~~~~~~
|
||
|
||
.. code-block:: c
|
||
|
||
size_t write(int fd, const void *buf, size_t count)
|
||
|
||
Arguments
|
||
~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``int fd``
|
||
|
||
- :cspan:`1` File descriptor returned by a previous call
|
||
to `open()`_.
|
||
|
||
- ..
|
||
|
||
- ``void *buf``
|
||
|
||
- Pointer to the buffer containing the PES data.
|
||
|
||
- ..
|
||
|
||
- ``size_t count``
|
||
|
||
- Size of buf.
|
||
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
This system call can only be used if ``AUDIO_SOURCE_MEMORY`` is selected
|
||
in the ioctl call `AUDIO_SELECT_SOURCE`_. The data provided shall be in
|
||
PES format. If ``O_NONBLOCK`` is not specified the function will block
|
||
until buffer space is available. The amount of data to be transferred is
|
||
implied by count.
|
||
|
||
Return Value
|
||
~~~~~~~~~~~~
|
||
|
||
.. flat-table::
|
||
:header-rows: 0
|
||
:stub-columns: 0
|
||
|
||
- ..
|
||
|
||
- ``EPERM``
|
||
|
||
- :cspan:`1` Mode ``AUDIO_SOURCE_MEMORY`` not selected.
|
||
|
||
- ..
|
||
|
||
- ``ENOMEM``
|
||
|
||
- Attempted to write more data than the internal buffer can hold.
|
||
|
||
- ..
|
||
|
||
- ``EBADF``
|
||
|
||
- Fd is not a valid open file descriptor.
|