Skip to content

Commit 74c6b68

Browse files
committed
my c++ code is the best the world has ever seen
1 parent d7b37e5 commit 74c6b68

File tree

5 files changed

+499
-60
lines changed

5 files changed

+499
-60
lines changed

app/src/main/cpp/audio-legacy.h

Lines changed: 328 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,328 @@
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

Comments
 (0)