1+ /*
2+ * Copyright (C) 2011 The Android Open Source Project
3+ *
4+ * Licensed under the Apache License, Version 2.0 (the "License");
5+ * you may not use this file except in compliance with the License.
6+ * You may obtain a copy of the License at
7+ *
8+ * http://www.apache.org/licenses/LICENSE-2.0
9+ *
10+ * Unless required by applicable law or agreed to in writing, software
11+ * distributed under the License is distributed on an "AS IS" BASIS,
12+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+ * See the License for the specific language governing permissions and
14+ * limitations under the License.
15+ */
16+
17+
18+ #ifndef ANDROID_AUDIO_CORE_H
19+ #define ANDROID_AUDIO_CORE_H
20+
21+ /*
22+ * Stripped down audio.h for audio_port structs of Android 5-7 and 8.
23+ */
24+
25+ #ifdef __cplusplus
26+ extern "C" {
27+ #endif
28+
29+ #include <stdbool.h>
30+ #include <stdint.h>
31+ #include <stdio.h>
32+ #include <sys/cdefs.h>
33+ #include <sys/types.h>
34+
35+ typedef enum {
36+ LEGACY_AUDIO_STREAM_DEFAULT = -1 , // (-1)
37+ LEGACY_AUDIO_STREAM_MIN = 0 ,
38+ LEGACY_AUDIO_STREAM_VOICE_CALL = 0 ,
39+ LEGACY_AUDIO_STREAM_SYSTEM = 1 ,
40+ LEGACY_AUDIO_STREAM_RING = 2 ,
41+ LEGACY_AUDIO_STREAM_MUSIC = 3 ,
42+ LEGACY_AUDIO_STREAM_ALARM = 4 ,
43+ LEGACY_AUDIO_STREAM_NOTIFICATION = 5 ,
44+ LEGACY_AUDIO_STREAM_BLUETOOTH_SCO = 6 ,
45+ LEGACY_AUDIO_STREAM_ENFORCED_AUDIBLE = 7 ,
46+ LEGACY_AUDIO_STREAM_DTMF = 8 ,
47+ LEGACY_AUDIO_STREAM_TTS = 9 ,
48+ LEGACY_AUDIO_STREAM_ACCESSIBILITY = 10 ,
49+ LEGACY_AUDIO_STREAM_REROUTING = 11 ,
50+ LEGACY_AUDIO_STREAM_PATCH = 12 ,
51+ LEGACY_AUDIO_STREAM_PUBLIC_CNT = 11 , // (ACCESSIBILITY + 1)
52+ LEGACY_AUDIO_STREAM_FOR_POLICY_CNT = 12 , // PATCH
53+ LEGACY_AUDIO_STREAM_CNT = 13 , // (PATCH + 1)
54+ } LEGACY_audio_stream_type_t ;
55+
56+ typedef enum {
57+ LEGACY_AUDIO_SOURCE_DEFAULT = 0 ,
58+ LEGACY_AUDIO_SOURCE_MIC = 1 ,
59+ LEGACY_AUDIO_SOURCE_VOICE_UPLINK = 2 ,
60+ LEGACY_AUDIO_SOURCE_VOICE_DOWNLINK = 3 ,
61+ LEGACY_AUDIO_SOURCE_VOICE_CALL = 4 ,
62+ LEGACY_AUDIO_SOURCE_CAMCORDER = 5 ,
63+ LEGACY_AUDIO_SOURCE_VOICE_RECOGNITION = 6 ,
64+ LEGACY_AUDIO_SOURCE_VOICE_COMMUNICATION = 7 ,
65+ LEGACY_AUDIO_SOURCE_REMOTE_SUBMIX = 8 ,
66+ LEGACY_AUDIO_SOURCE_UNPROCESSED = 9 ,
67+ LEGACY_AUDIO_SOURCE_CNT = 10 ,
68+ LEGACY_AUDIO_SOURCE_MAX = 9 , // (CNT - 1)
69+ LEGACY_AUDIO_SOURCE_FM_TUNER = 1998 ,
70+ LEGACY_AUDIO_SOURCE_HOTWORD = 1999 ,
71+ } LEGACY_audio_source_t ;
72+
73+ typedef enum {
74+ LEGACY_AUDIO_SESSION_OUTPUT_STAGE = -1 , // (-1)
75+ LEGACY_AUDIO_SESSION_OUTPUT_MIX = 0 ,
76+ LEGACY_AUDIO_SESSION_ALLOCATE = 0 ,
77+ LEGACY_AUDIO_SESSION_NONE = 0 ,
78+ } LEGACY_audio_session_t ;
79+
80+ typedef enum {
81+ LEGACY_AUDIO_FORMAT_INVALID = 4294967295u , // 0xFFFFFFFFUL
82+ LEGACY_AUDIO_FORMAT_DEFAULT = 0u , // 0
83+ LEGACY_AUDIO_FORMAT_PCM = 0u , // 0x00000000UL
84+ LEGACY_AUDIO_FORMAT_MP3 = 16777216u , // 0x01000000UL
85+ LEGACY_AUDIO_FORMAT_AMR_NB = 33554432u , // 0x02000000UL
86+ LEGACY_AUDIO_FORMAT_AMR_WB = 50331648u , // 0x03000000UL
87+ LEGACY_AUDIO_FORMAT_AAC = 67108864u , // 0x04000000UL
88+ LEGACY_AUDIO_FORMAT_HE_AAC_V1 = 83886080u , // 0x05000000UL
89+ LEGACY_AUDIO_FORMAT_HE_AAC_V2 = 100663296u , // 0x06000000UL
90+ LEGACY_AUDIO_FORMAT_VORBIS = 117440512u , // 0x07000000UL
91+ LEGACY_AUDIO_FORMAT_OPUS = 134217728u , // 0x08000000UL
92+ LEGACY_AUDIO_FORMAT_AC3 = 150994944u , // 0x09000000UL
93+ LEGACY_AUDIO_FORMAT_E_AC3 = 167772160u , // 0x0A000000UL
94+ LEGACY_AUDIO_FORMAT_DTS = 184549376u , // 0x0B000000UL
95+ LEGACY_AUDIO_FORMAT_DTS_HD = 201326592u , // 0x0C000000UL
96+ LEGACY_AUDIO_FORMAT_IEC61937 = 218103808u , // 0x0D000000UL
97+ LEGACY_AUDIO_FORMAT_DOLBY_TRUEHD = 234881024u , // 0x0E000000UL
98+ LEGACY_AUDIO_FORMAT_EVRC = 268435456u , // 0x10000000UL
99+ LEGACY_AUDIO_FORMAT_EVRCB = 285212672u , // 0x11000000UL
100+ LEGACY_AUDIO_FORMAT_EVRCWB = 301989888u , // 0x12000000UL
101+ LEGACY_AUDIO_FORMAT_EVRCNW = 318767104u , // 0x13000000UL
102+ LEGACY_AUDIO_FORMAT_AAC_ADIF = 335544320u , // 0x14000000UL
103+ LEGACY_AUDIO_FORMAT_WMA = 352321536u , // 0x15000000UL
104+ LEGACY_AUDIO_FORMAT_WMA_PRO = 369098752u , // 0x16000000UL
105+ LEGACY_AUDIO_FORMAT_AMR_WB_PLUS = 385875968u , // 0x17000000UL
106+ LEGACY_AUDIO_FORMAT_MP2 = 402653184u , // 0x18000000UL
107+ LEGACY_AUDIO_FORMAT_QCELP = 419430400u , // 0x19000000UL
108+ LEGACY_AUDIO_FORMAT_DSD = 436207616u , // 0x1A000000UL
109+ LEGACY_AUDIO_FORMAT_FLAC = 452984832u , // 0x1B000000UL
110+ LEGACY_AUDIO_FORMAT_ALAC = 469762048u , // 0x1C000000UL
111+ LEGACY_AUDIO_FORMAT_APE = 486539264u , // 0x1D000000UL
112+ LEGACY_AUDIO_FORMAT_AAC_ADTS = 503316480u , // 0x1E000000UL
113+ LEGACY_AUDIO_FORMAT_SBC = 520093696u , // 0x1F000000UL
114+ LEGACY_AUDIO_FORMAT_APTX = 536870912u , // 0x20000000UL
115+ LEGACY_AUDIO_FORMAT_APTX_HD = 553648128u , // 0x21000000UL
116+ LEGACY_AUDIO_FORMAT_AC4 = 570425344u , // 0x22000000UL
117+ LEGACY_AUDIO_FORMAT_LDAC = 587202560u , // 0x23000000UL
118+ LEGACY_AUDIO_FORMAT_MAIN_MASK = 4278190080u , // 0xFF000000UL
119+ LEGACY_AUDIO_FORMAT_SUB_MASK = 16777215u , // 0x00FFFFFFUL
120+ LEGACY_AUDIO_FORMAT_PCM_SUB_16_BIT = 1u , // 0x1
121+ LEGACY_AUDIO_FORMAT_PCM_SUB_8_BIT = 2u , // 0x2
122+ LEGACY_AUDIO_FORMAT_PCM_SUB_32_BIT = 3u , // 0x3
123+ LEGACY_AUDIO_FORMAT_PCM_SUB_8_24_BIT = 4u , // 0x4
124+ LEGACY_AUDIO_FORMAT_PCM_SUB_FLOAT = 5u , // 0x5
125+ LEGACY_AUDIO_FORMAT_PCM_SUB_24_BIT_PACKED = 6u , // 0x6
126+ LEGACY_AUDIO_FORMAT_MP3_SUB_NONE = 0u , // 0x0
127+ LEGACY_AUDIO_FORMAT_AMR_SUB_NONE = 0u , // 0x0
128+ LEGACY_AUDIO_FORMAT_AAC_SUB_MAIN = 1u , // 0x1
129+ LEGACY_AUDIO_FORMAT_AAC_SUB_LC = 2u , // 0x2
130+ LEGACY_AUDIO_FORMAT_AAC_SUB_SSR = 4u , // 0x4
131+ LEGACY_AUDIO_FORMAT_AAC_SUB_LTP = 8u , // 0x8
132+ LEGACY_AUDIO_FORMAT_AAC_SUB_HE_V1 = 16u , // 0x10
133+ LEGACY_AUDIO_FORMAT_AAC_SUB_SCALABLE = 32u , // 0x20
134+ LEGACY_AUDIO_FORMAT_AAC_SUB_ERLC = 64u , // 0x40
135+ LEGACY_AUDIO_FORMAT_AAC_SUB_LD = 128u , // 0x80
136+ LEGACY_AUDIO_FORMAT_AAC_SUB_HE_V2 = 256u , // 0x100
137+ LEGACY_AUDIO_FORMAT_AAC_SUB_ELD = 512u , // 0x200
138+ LEGACY_AUDIO_FORMAT_VORBIS_SUB_NONE = 0u , // 0x0
139+ LEGACY_AUDIO_FORMAT_PCM_16_BIT = 1u , // (PCM | PCM_SUB_16_BIT)
140+ LEGACY_AUDIO_FORMAT_PCM_8_BIT = 2u , // (PCM | PCM_SUB_8_BIT)
141+ LEGACY_AUDIO_FORMAT_PCM_32_BIT = 3u , // (PCM | PCM_SUB_32_BIT)
142+ LEGACY_AUDIO_FORMAT_PCM_8_24_BIT = 4u , // (PCM | PCM_SUB_8_24_BIT)
143+ LEGACY_AUDIO_FORMAT_PCM_FLOAT = 5u , // (PCM | PCM_SUB_FLOAT)
144+ LEGACY_AUDIO_FORMAT_PCM_24_BIT_PACKED = 6u , // (PCM | PCM_SUB_24_BIT_PACKED)
145+ LEGACY_AUDIO_FORMAT_AAC_MAIN = 67108865u , // (AAC | AAC_SUB_MAIN)
146+ LEGACY_AUDIO_FORMAT_AAC_LC = 67108866u , // (AAC | AAC_SUB_LC)
147+ LEGACY_AUDIO_FORMAT_AAC_SSR = 67108868u , // (AAC | AAC_SUB_SSR)
148+ LEGACY_AUDIO_FORMAT_AAC_LTP = 67108872u , // (AAC | AAC_SUB_LTP)
149+ LEGACY_AUDIO_FORMAT_AAC_HE_V1 = 67108880u , // (AAC | AAC_SUB_HE_V1)
150+ LEGACY_AUDIO_FORMAT_AAC_SCALABLE = 67108896u , // (AAC | AAC_SUB_SCALABLE)
151+ LEGACY_AUDIO_FORMAT_AAC_ERLC = 67108928u , // (AAC | AAC_SUB_ERLC)
152+ LEGACY_AUDIO_FORMAT_AAC_LD = 67108992u , // (AAC | AAC_SUB_LD)
153+ LEGACY_AUDIO_FORMAT_AAC_HE_V2 = 67109120u , // (AAC | AAC_SUB_HE_V2)
154+ LEGACY_AUDIO_FORMAT_AAC_ELD = 67109376u , // (AAC | AAC_SUB_ELD)
155+ LEGACY_AUDIO_FORMAT_AAC_ADTS_MAIN = 503316481u , // (AAC_ADTS | AAC_SUB_MAIN)
156+ LEGACY_AUDIO_FORMAT_AAC_ADTS_LC = 503316482u , // (AAC_ADTS | AAC_SUB_LC)
157+ LEGACY_AUDIO_FORMAT_AAC_ADTS_SSR = 503316484u , // (AAC_ADTS | AAC_SUB_SSR)
158+ LEGACY_AUDIO_FORMAT_AAC_ADTS_LTP = 503316488u , // (AAC_ADTS | AAC_SUB_LTP)
159+ LEGACY_AUDIO_FORMAT_AAC_ADTS_HE_V1 = 503316496u , // (AAC_ADTS | AAC_SUB_HE_V1)
160+ LEGACY_AUDIO_FORMAT_AAC_ADTS_SCALABLE = 503316512u , // (AAC_ADTS | AAC_SUB_SCALABLE)
161+ LEGACY_AUDIO_FORMAT_AAC_ADTS_ERLC = 503316544u , // (AAC_ADTS | AAC_SUB_ERLC)
162+ LEGACY_AUDIO_FORMAT_AAC_ADTS_LD = 503316608u , // (AAC_ADTS | AAC_SUB_LD)
163+ LEGACY_AUDIO_FORMAT_AAC_ADTS_HE_V2 = 503316736u , // (AAC_ADTS | AAC_SUB_HE_V2)
164+ LEGACY_AUDIO_FORMAT_AAC_ADTS_ELD = 503316992u , // (AAC_ADTS | AAC_SUB_ELD)
165+ } LEGACY_audio_format_t ;
166+
167+ typedef enum {
168+ LEGACY_AUDIO_MODE_INVALID = -2 , // (-2)
169+ LEGACY_AUDIO_MODE_CURRENT = -1 , // (-1)
170+ LEGACY_AUDIO_MODE_NORMAL = 0 ,
171+ LEGACY_AUDIO_MODE_RINGTONE = 1 ,
172+ LEGACY_AUDIO_MODE_IN_CALL = 2 ,
173+ LEGACY_AUDIO_MODE_IN_COMMUNICATION = 3 ,
174+ LEGACY_AUDIO_MODE_CNT = 4 ,
175+ LEGACY_AUDIO_MODE_MAX = 3 , // (CNT - 1)
176+ } LEGACY_audio_mode_t ;
177+
178+ typedef enum {
179+ LEGACY_AUDIO_USAGE_UNKNOWN = 0 ,
180+ LEGACY_AUDIO_USAGE_MEDIA = 1 ,
181+ LEGACY_AUDIO_USAGE_VOICE_COMMUNICATION = 2 ,
182+ LEGACY_AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING = 3 ,
183+ LEGACY_AUDIO_USAGE_ALARM = 4 ,
184+ LEGACY_AUDIO_USAGE_NOTIFICATION = 5 ,
185+ LEGACY_AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE = 6 ,
186+ LEGACY_AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST = 7 ,
187+ LEGACY_AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT = 8 ,
188+ LEGACY_AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED = 9 ,
189+ LEGACY_AUDIO_USAGE_NOTIFICATION_EVENT = 10 ,
190+ LEGACY_AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY = 11 ,
191+ LEGACY_AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE = 12 ,
192+ LEGACY_AUDIO_USAGE_ASSISTANCE_SONIFICATION = 13 ,
193+ LEGACY_AUDIO_USAGE_GAME = 14 ,
194+ LEGACY_AUDIO_USAGE_VIRTUAL_SOURCE = 15 ,
195+ LEGACY_AUDIO_USAGE_ASSISTANT = 16 ,
196+ LEGACY_AUDIO_USAGE_CNT = 17 ,
197+ LEGACY_AUDIO_USAGE_MAX = 16 , // (CNT - 1)
198+ } LEGACY_audio_usage_t ;
199+
200+ typedef enum {
201+ LEGACY_AUDIO_PORT_ROLE_NONE = 0 ,
202+ LEGACY_AUDIO_PORT_ROLE_SOURCE = 1 ,
203+ LEGACY_AUDIO_PORT_ROLE_SINK = 2 ,
204+ } LEGACY_audio_port_role_t ;
205+
206+ typedef enum {
207+ LEGACY_AUDIO_PORT_TYPE_NONE = 0 ,
208+ LEGACY_AUDIO_PORT_TYPE_DEVICE = 1 ,
209+ LEGACY_AUDIO_PORT_TYPE_MIX = 2 ,
210+ LEGACY_AUDIO_PORT_TYPE_SESSION = 3 ,
211+ } LEGACY_audio_port_type_t ;
212+
213+ typedef enum {
214+ LEGACY_AUDIO_LATENCY_LOW = 0 ,
215+ LEGACY_AUDIO_LATENCY_NORMAL = 1 ,
216+ } LEGACY_audio_mix_latency_class_t ;
217+
218+ #define audio_port_config { \
219+ int id; \
220+ LEGACY_audio_port_role_t role; \
221+ LEGACY_audio_port_type_t type; \
222+ unsigned int config_mask; \
223+ unsigned int sample_rate; \
224+ uint32_t channel_mask; \
225+ LEGACY_audio_format_t format; \
226+ struct { \
227+ int index; \
228+ uint32_t mode; \
229+ uint32_t channel_mask; \
230+ int values[sizeof(uint32_t) * 8]; \
231+ unsigned int ramp_duration_ms; \
232+ } gain; \
233+ union { \
234+ struct { \
235+ int hw_module; \
236+ uint32_t type; \
237+ char address[32]; \
238+ } device; \
239+ struct { \
240+ int hw_module; \
241+ int handle; \
242+ union { \
243+ LEGACY_audio_stream_type_t stream; \
244+ LEGACY_audio_source_t source; \
245+ } usecase; \
246+ } mix; \
247+ struct { \
248+ LEGACY_audio_session_t session; \
249+ } session; \
250+ } ext; \
251+ }
252+
253+ #define audio_gain { \
254+ uint32_t mode; \
255+ uint32_t channel_mask; \
256+ int min_value; \
257+ int max_value; \
258+ int default_value; \
259+ unsigned int step_value; \
260+ unsigned int min_ramp_ms; \
261+ unsigned int max_ramp_ms; \
262+ }
263+ #define audio_port_device_ext { \
264+ int hw_module; \
265+ uint32_t type; \
266+ char address[32]; \
267+ }
268+ #define audio_port_mix_ext { \
269+ int hw_module; \
270+ int handle; \
271+ LEGACY_audio_mix_latency_class_t latency_class; \
272+ }
273+ #define audio_port_session_ext { \
274+ LEGACY_audio_session_t session; \
275+ }
276+
277+ struct audio_port_legacy {
278+ int id ;
279+ LEGACY_audio_port_role_t role ;
280+ LEGACY_audio_port_type_t type ;
281+ char name [128 ];
282+ unsigned int num_sample_rates ;
283+ unsigned int sample_rates [16 ];
284+ unsigned int num_channel_masks ;
285+ uint32_t channel_masks [16 ];
286+ unsigned int num_formats ;
287+ LEGACY_audio_format_t formats [16 ];
288+ unsigned int num_gains ;
289+ struct audio_gain gains [16 ];
290+ struct audio_port_config active_config ;
291+ union {
292+ struct audio_port_device_ext device ;
293+ struct audio_port_mix_ext mix ;
294+ struct audio_port_session_ext session ;
295+ } ext ;
296+ };
297+
298+ struct audio_port_oreo {
299+ int id ;
300+ LEGACY_audio_port_role_t role ;
301+ LEGACY_audio_port_type_t type ;
302+ char name [128 ];
303+ unsigned int num_sample_rates ;
304+ unsigned int sample_rates [32 ];
305+ unsigned int num_channel_masks ;
306+ uint32_t channel_masks [32 ];
307+ unsigned int num_formats ;
308+ LEGACY_audio_format_t formats [32 ];
309+ unsigned int num_gains ;
310+ struct audio_gain gains [16 ];
311+ struct audio_port_config active_config ;
312+ union {
313+ struct audio_port_device_ext device ;
314+ struct audio_port_mix_ext mix ;
315+ struct audio_port_session_ext session ;
316+ } ext ;
317+ };
318+ #undef audio_port_config
319+ #undef audio_gain
320+ #undef audio_port_device_ext
321+ #undef audio_port_mix_ext
322+ #undef audio_port_session_ext
323+
324+ #ifdef __cplusplus
325+ }
326+ #endif
327+
328+ #endif // ANDROID_AUDIO_CORE_H
0 commit comments