1*793e52d4SMauro Carvalho Chehab.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2*793e52d4SMauro Carvalho Chehab
3*793e52d4SMauro Carvalho Chehab.. _audio_data_types:
4*793e52d4SMauro Carvalho Chehab
5*793e52d4SMauro Carvalho Chehab****************
6*793e52d4SMauro Carvalho ChehabAudio Data Types
7*793e52d4SMauro Carvalho Chehab****************
8*793e52d4SMauro Carvalho Chehab
9*793e52d4SMauro Carvalho ChehabThis section describes the structures, data types and defines used when
10*793e52d4SMauro Carvalho Chehabtalking to the audio device.
11*793e52d4SMauro Carvalho Chehab
12*793e52d4SMauro Carvalho Chehab.. c:type:: audio_stream_source
13*793e52d4SMauro Carvalho Chehab
14*793e52d4SMauro Carvalho ChehabThe audio stream source is set through the AUDIO_SELECT_SOURCE call
15*793e52d4SMauro Carvalho Chehaband can take the following values, depending on whether we are replaying
16*793e52d4SMauro Carvalho Chehabfrom an internal (demux) or external (user write) source.
17*793e52d4SMauro Carvalho Chehab
18*793e52d4SMauro Carvalho Chehab
19*793e52d4SMauro Carvalho Chehab.. code-block:: c
20*793e52d4SMauro Carvalho Chehab
21*793e52d4SMauro Carvalho Chehab    typedef enum {
22*793e52d4SMauro Carvalho Chehab	AUDIO_SOURCE_DEMUX,
23*793e52d4SMauro Carvalho Chehab	AUDIO_SOURCE_MEMORY
24*793e52d4SMauro Carvalho Chehab    } audio_stream_source_t;
25*793e52d4SMauro Carvalho Chehab
26*793e52d4SMauro Carvalho ChehabAUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the
27*793e52d4SMauro Carvalho Chehabfrontend or the DVR device) as the source of the video stream. If
28*793e52d4SMauro Carvalho ChehabAUDIO_SOURCE_MEMORY is selected the stream comes from the application
29*793e52d4SMauro Carvalho Chehabthrough the ``write()`` system call.
30*793e52d4SMauro Carvalho Chehab
31*793e52d4SMauro Carvalho Chehab
32*793e52d4SMauro Carvalho Chehab.. c:type:: audio_play_state
33*793e52d4SMauro Carvalho Chehab
34*793e52d4SMauro Carvalho ChehabThe following values can be returned by the AUDIO_GET_STATUS call
35*793e52d4SMauro Carvalho Chehabrepresenting the state of audio playback.
36*793e52d4SMauro Carvalho Chehab
37*793e52d4SMauro Carvalho Chehab
38*793e52d4SMauro Carvalho Chehab.. code-block:: c
39*793e52d4SMauro Carvalho Chehab
40*793e52d4SMauro Carvalho Chehab    typedef enum {
41*793e52d4SMauro Carvalho Chehab	AUDIO_STOPPED,
42*793e52d4SMauro Carvalho Chehab	AUDIO_PLAYING,
43*793e52d4SMauro Carvalho Chehab	AUDIO_PAUSED
44*793e52d4SMauro Carvalho Chehab    } audio_play_state_t;
45*793e52d4SMauro Carvalho Chehab
46*793e52d4SMauro Carvalho Chehab
47*793e52d4SMauro Carvalho Chehab.. c:type:: audio_channel_select
48*793e52d4SMauro Carvalho Chehab
49*793e52d4SMauro Carvalho ChehabThe audio channel selected via AUDIO_CHANNEL_SELECT is determined by
50*793e52d4SMauro Carvalho Chehabthe following values.
51*793e52d4SMauro Carvalho Chehab
52*793e52d4SMauro Carvalho Chehab
53*793e52d4SMauro Carvalho Chehab.. code-block:: c
54*793e52d4SMauro Carvalho Chehab
55*793e52d4SMauro Carvalho Chehab    typedef enum {
56*793e52d4SMauro Carvalho Chehab	AUDIO_STEREO,
57*793e52d4SMauro Carvalho Chehab	AUDIO_MONO_LEFT,
58*793e52d4SMauro Carvalho Chehab	AUDIO_MONO_RIGHT,
59*793e52d4SMauro Carvalho Chehab	AUDIO_MONO,
60*793e52d4SMauro Carvalho Chehab	AUDIO_STEREO_SWAPPED
61*793e52d4SMauro Carvalho Chehab    } audio_channel_select_t;
62*793e52d4SMauro Carvalho Chehab
63*793e52d4SMauro Carvalho Chehab
64*793e52d4SMauro Carvalho Chehab.. c:type:: audio_status
65*793e52d4SMauro Carvalho Chehab
66*793e52d4SMauro Carvalho ChehabThe AUDIO_GET_STATUS call returns the following structure informing
67*793e52d4SMauro Carvalho Chehababout various states of the playback operation.
68*793e52d4SMauro Carvalho Chehab
69*793e52d4SMauro Carvalho Chehab
70*793e52d4SMauro Carvalho Chehab.. code-block:: c
71*793e52d4SMauro Carvalho Chehab
72*793e52d4SMauro Carvalho Chehab    typedef struct audio_status {
73*793e52d4SMauro Carvalho Chehab	boolean AV_sync_state;
74*793e52d4SMauro Carvalho Chehab	boolean mute_state;
75*793e52d4SMauro Carvalho Chehab	audio_play_state_t play_state;
76*793e52d4SMauro Carvalho Chehab	audio_stream_source_t stream_source;
77*793e52d4SMauro Carvalho Chehab	audio_channel_select_t channel_select;
78*793e52d4SMauro Carvalho Chehab	boolean bypass_mode;
79*793e52d4SMauro Carvalho Chehab	audio_mixer_t mixer_state;
80*793e52d4SMauro Carvalho Chehab    } audio_status_t;
81*793e52d4SMauro Carvalho Chehab
82*793e52d4SMauro Carvalho Chehab
83*793e52d4SMauro Carvalho Chehab.. c:type:: audio_mixer
84*793e52d4SMauro Carvalho Chehab
85*793e52d4SMauro Carvalho ChehabThe following structure is used by the AUDIO_SET_MIXER call to set the
86*793e52d4SMauro Carvalho Chehabaudio volume.
87*793e52d4SMauro Carvalho Chehab
88*793e52d4SMauro Carvalho Chehab
89*793e52d4SMauro Carvalho Chehab.. code-block:: c
90*793e52d4SMauro Carvalho Chehab
91*793e52d4SMauro Carvalho Chehab    typedef struct audio_mixer {
92*793e52d4SMauro Carvalho Chehab	unsigned int volume_left;
93*793e52d4SMauro Carvalho Chehab	unsigned int volume_right;
94*793e52d4SMauro Carvalho Chehab    } audio_mixer_t;
95*793e52d4SMauro Carvalho Chehab
96*793e52d4SMauro Carvalho Chehab
97*793e52d4SMauro Carvalho Chehab.. _audio_encodings:
98*793e52d4SMauro Carvalho Chehab
99*793e52d4SMauro Carvalho Chehabaudio encodings
100*793e52d4SMauro Carvalho Chehab===============
101*793e52d4SMauro Carvalho Chehab
102*793e52d4SMauro Carvalho ChehabA call to AUDIO_GET_CAPABILITIES returns an unsigned integer with the
103*793e52d4SMauro Carvalho Chehabfollowing bits set according to the hardwares capabilities.
104*793e52d4SMauro Carvalho Chehab
105*793e52d4SMauro Carvalho Chehab
106*793e52d4SMauro Carvalho Chehab.. code-block:: c
107*793e52d4SMauro Carvalho Chehab
108*793e52d4SMauro Carvalho Chehab     #define AUDIO_CAP_DTS    1
109*793e52d4SMauro Carvalho Chehab     #define AUDIO_CAP_LPCM   2
110*793e52d4SMauro Carvalho Chehab     #define AUDIO_CAP_MP1    4
111*793e52d4SMauro Carvalho Chehab     #define AUDIO_CAP_MP2    8
112*793e52d4SMauro Carvalho Chehab     #define AUDIO_CAP_MP3   16
113*793e52d4SMauro Carvalho Chehab     #define AUDIO_CAP_AAC   32
114*793e52d4SMauro Carvalho Chehab     #define AUDIO_CAP_OGG   64
115*793e52d4SMauro Carvalho Chehab     #define AUDIO_CAP_SDDS 128
116*793e52d4SMauro Carvalho Chehab     #define AUDIO_CAP_AC3  256
117