summaryrefslogtreecommitdiff
path: root/original-kernel-headers/sound/audio_effects.h
blob: e922ff7324daca4d8aafb61e544ad63e3adf3b9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
/*
 * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef _AUDIO_EFFECTS_H
#define _AUDIO_EFFECTS_H

/** AUDIO EFFECTS **/


/* CONFIG GET/SET */
#define CONFIG_CACHE			0
#define CONFIG_SET			1
#define CONFIG_GET			2

/* CONFIG HEADER */
/*

	MODULE_ID,
	DEVICE,
	NUM_COMMANDS,
	COMMAND_ID_1,
	CONFIG_CACHE/SET/GET,
	OFFSET_1,
	LENGTH_1,
	VALUES_1,
	...,
	...,
	COMMAND_ID_2,
	CONFIG_CACHE/SET/GET,
	OFFSET_2,
	LENGTH_2,
	VALUES_2,
	...,
	...,
	COMMAND_ID_3,
	...
*/


/* CONFIG PARAM IDs */
#define VIRTUALIZER_MODULE		0x00001000
#define VIRTUALIZER_ENABLE		0x00001001
#define VIRTUALIZER_STRENGTH		0x00001002
#define VIRTUALIZER_OUT_TYPE		0x00001003
#define VIRTUALIZER_GAIN_ADJUST		0x00001004
#define VIRTUALIZER_ENABLE_PARAM_LEN		1
#define VIRTUALIZER_STRENGTH_PARAM_LEN		1
#define VIRTUALIZER_OUT_TYPE_PARAM_LEN		1
#define VIRTUALIZER_GAIN_ADJUST_PARAM_LEN	1

#define REVERB_MODULE			0x00002000
#define REVERB_ENABLE			0x00002001
#define REVERB_MODE			0x00002002
#define REVERB_PRESET			0x00002003
#define REVERB_WET_MIX			0x00002004
#define REVERB_GAIN_ADJUST		0x00002005
#define REVERB_ROOM_LEVEL		0x00002006
#define REVERB_ROOM_HF_LEVEL		0x00002007
#define REVERB_DECAY_TIME		0x00002008
#define REVERB_DECAY_HF_RATIO		0x00002009
#define REVERB_REFLECTIONS_LEVEL	0x0000200a
#define REVERB_REFLECTIONS_DELAY	0x0000200b
#define REVERB_LEVEL			0x0000200c
#define REVERB_DELAY			0x0000200d
#define REVERB_DIFFUSION		0x0000200e
#define REVERB_DENSITY			0x0000200f
#define REVERB_ENABLE_PARAM_LEN			1
#define REVERB_MODE_PARAM_LEN			1
#define REVERB_PRESET_PARAM_LEN			1
#define REVERB_WET_MIX_PARAM_LEN		1
#define REVERB_GAIN_ADJUST_PARAM_LEN		1
#define REVERB_ROOM_LEVEL_PARAM_LEN		1
#define REVERB_ROOM_HF_LEVEL_PARAM_LEN		1
#define REVERB_DECAY_TIME_PARAM_LEN		1
#define REVERB_DECAY_HF_RATIO_PARAM_LEN		1
#define REVERB_REFLECTIONS_LEVEL_PARAM_LEN	1
#define REVERB_REFLECTIONS_DELAY_PARAM_LEN	1
#define REVERB_LEVEL_PARAM_LEN			1
#define REVERB_DELAY_PARAM_LEN			1
#define REVERB_DIFFUSION_PARAM_LEN		1
#define REVERB_DENSITY_PARAM_LEN		1

#define BASS_BOOST_MODULE		0x00003000
#define BASS_BOOST_ENABLE		0x00003001
#define BASS_BOOST_MODE			0x00003002
#define BASS_BOOST_STRENGTH		0x00003003
#define BASS_BOOST_ENABLE_PARAM_LEN		1
#define BASS_BOOST_MODE_PARAM_LEN		1
#define BASS_BOOST_STRENGTH_PARAM_LEN		1

#define EQ_MODULE			0x00004000
#define EQ_ENABLE			0x00004001
#define EQ_CONFIG			0x00004002
#define EQ_NUM_BANDS			0x00004003
#define EQ_BAND_LEVELS			0x00004004
#define EQ_BAND_LEVEL_RANGE		0x00004005
#define EQ_BAND_FREQS			0x00004006
#define EQ_SINGLE_BAND_FREQ_RANGE	0x00004007
#define EQ_SINGLE_BAND_FREQ		0x00004008
#define EQ_BAND_INDEX			0x00004009
#define EQ_PRESET_ID			0x0000400a
#define EQ_NUM_PRESETS			0x0000400b
#define EQ_PRESET_NAME			0x0000400c
#define EQ_ENABLE_PARAM_LEN			1
#define EQ_CONFIG_PARAM_LEN			3
#define EQ_CONFIG_PER_BAND_PARAM_LEN		5
#define EQ_NUM_BANDS_PARAM_LEN			1
#define EQ_BAND_LEVELS_PARAM_LEN		13
#define EQ_BAND_LEVEL_RANGE_PARAM_LEN		2
#define EQ_BAND_FREQS_PARAM_LEN			13
#define EQ_SINGLE_BAND_FREQ_RANGE_PARAM_LEN	2
#define EQ_SINGLE_BAND_FREQ_PARAM_LEN		1
#define EQ_BAND_INDEX_PARAM_LEN			1
#define EQ_PRESET_ID_PARAM_LEN			1
#define EQ_NUM_PRESETS_PARAM_LEN		1
#define EQ_PRESET_NAME_PARAM_LEN		32

#define EQ_TYPE_NONE	0
#define EQ_BASS_BOOST	1
#define EQ_BASS_CUT	2
#define EQ_TREBLE_BOOST	3
#define EQ_TREBLE_CUT	4
#define EQ_BAND_BOOST	5
#define EQ_BAND_CUT	6

#define SOFT_VOLUME_MODULE		0x00006000
#define SOFT_VOLUME_ENABLE		0x00006001
#define SOFT_VOLUME_GAIN_2CH		0x00006002
#define SOFT_VOLUME_GAIN_MASTER		0x00006003
#define SOFT_VOLUME_ENABLE_PARAM_LEN		1
#define SOFT_VOLUME_GAIN_2CH_PARAM_LEN		2
#define SOFT_VOLUME_GAIN_MASTER_PARAM_LEN	1

#define SOFT_VOLUME2_MODULE		0x00007000
#define SOFT_VOLUME2_ENABLE		0x00007001
#define SOFT_VOLUME2_GAIN_2CH		0x00007002
#define SOFT_VOLUME2_GAIN_MASTER	0x00007003
#define SOFT_VOLUME2_ENABLE_PARAM_LEN		SOFT_VOLUME_ENABLE_PARAM_LEN
#define SOFT_VOLUME2_GAIN_2CH_PARAM_LEN		SOFT_VOLUME_GAIN_2CH_PARAM_LEN
#define SOFT_VOLUME2_GAIN_MASTER_PARAM_LEN	\
					SOFT_VOLUME_GAIN_MASTER_PARAM_LEN

#define COMMAND_PAYLOAD_LEN	3
#define COMMAND_PAYLOAD_SZ	(COMMAND_PAYLOAD_LEN * sizeof(uint32_t))
#define MAX_INBAND_PARAM_SZ	4096
#define Q27_UNITY		(1 << 27)
#define Q8_UNITY		(1 << 8)
#define CUSTOM_OPENSL_PRESET	18

#define VIRTUALIZER_ENABLE_PARAM_SZ	\
			(VIRTUALIZER_ENABLE_PARAM_LEN*sizeof(uint32_t))
#define VIRTUALIZER_STRENGTH_PARAM_SZ	\
			(VIRTUALIZER_STRENGTH_PARAM_LEN*sizeof(uint32_t))
#define VIRTUALIZER_OUT_TYPE_PARAM_SZ	\
			(VIRTUALIZER_OUT_TYPE_PARAM_LEN*sizeof(uint32_t))
#define VIRTUALIZER_GAIN_ADJUST_PARAM_SZ	\
			(VIRTUALIZER_GAIN_ADJUST_PARAM_LEN*sizeof(uint32_t))
struct virtualizer_params {
	uint32_t device;
	uint32_t enable_flag;
	uint32_t strength;
	uint32_t out_type;
	int32_t gain_adjust;
};

#define NUM_OSL_REVERB_PRESETS_SUPPORTED	6
#define REVERB_ENABLE_PARAM_SZ		\
			(REVERB_ENABLE_PARAM_LEN*sizeof(uint32_t))
#define REVERB_MODE_PARAM_SZ		\
			(REVERB_MODE_PARAM_LEN*sizeof(uint32_t))
#define REVERB_PRESET_PARAM_SZ		\
			(REVERB_PRESET_PARAM_LEN*sizeof(uint32_t))
#define REVERB_WET_MIX_PARAM_SZ		\
			(REVERB_WET_MIX_PARAM_LEN*sizeof(uint32_t))
#define REVERB_GAIN_ADJUST_PARAM_SZ	\
			(REVERB_GAIN_ADJUST_PARAM_LEN*sizeof(uint32_t))
#define REVERB_ROOM_LEVEL_PARAM_SZ	\
			(REVERB_ROOM_LEVEL_PARAM_LEN*sizeof(uint32_t))
#define REVERB_ROOM_HF_LEVEL_PARAM_SZ	\
			(REVERB_ROOM_HF_LEVEL_PARAM_LEN*sizeof(uint32_t))
#define REVERB_DECAY_TIME_PARAM_SZ	\
			(REVERB_DECAY_TIME_PARAM_LEN*sizeof(uint32_t))
#define REVERB_DECAY_HF_RATIO_PARAM_SZ	\
			(REVERB_DECAY_HF_RATIO_PARAM_LEN*sizeof(uint32_t))
#define REVERB_REFLECTIONS_LEVEL_PARAM_SZ	\
			(REVERB_REFLECTIONS_LEVEL_PARAM_LEN*sizeof(uint32_t))
#define REVERB_REFLECTIONS_DELAY_PARAM_SZ	\
			(REVERB_REFLECTIONS_DELAY_PARAM_LEN*sizeof(uint32_t))
#define REVERB_LEVEL_PARAM_SZ		\
			(REVERB_LEVEL_PARAM_LEN*sizeof(uint32_t))
#define REVERB_DELAY_PARAM_SZ		\
			(REVERB_DELAY_PARAM_LEN*sizeof(uint32_t))
#define REVERB_DIFFUSION_PARAM_SZ	\
			(REVERB_DIFFUSION_PARAM_LEN*sizeof(uint32_t))
#define REVERB_DENSITY_PARAM_SZ		\
			(REVERB_DENSITY_PARAM_LEN*sizeof(uint32_t))
struct reverb_params {
	uint32_t device;
	uint32_t enable_flag;
	uint32_t mode;
	uint32_t preset;
	uint32_t wet_mix;
	int32_t  gain_adjust;
	int32_t  room_level;
	int32_t  room_hf_level;
	uint32_t decay_time;
	uint32_t decay_hf_ratio;
	int32_t  reflections_level;
	uint32_t reflections_delay;
	int32_t  level;
	uint32_t delay;
	uint32_t diffusion;
	uint32_t density;
};

#define BASS_BOOST_ENABLE_PARAM_SZ	\
			(BASS_BOOST_ENABLE_PARAM_LEN*sizeof(uint32_t))
#define BASS_BOOST_MODE_PARAM_SZ	\
			(BASS_BOOST_MODE_PARAM_LEN*sizeof(uint32_t))
#define BASS_BOOST_STRENGTH_PARAM_SZ	\
			(BASS_BOOST_STRENGTH_PARAM_LEN*sizeof(uint32_t))
struct bass_boost_params {
	uint32_t device;
	uint32_t enable_flag;
	uint32_t mode;
	uint32_t strength;
};


#define MAX_EQ_BANDS 12
#define MAX_OSL_EQ_BANDS 5
#define EQ_ENABLE_PARAM_SZ			\
			(EQ_ENABLE_PARAM_LEN*sizeof(uint32_t))
#define EQ_CONFIG_PARAM_SZ			\
			(EQ_CONFIG_PARAM_LEN*sizeof(uint32_t))
#define EQ_CONFIG_PER_BAND_PARAM_SZ		\
			(EQ_CONFIG_PER_BAND_PARAM_LEN*sizeof(uint32_t))
#define EQ_CONFIG_PARAM_MAX_LEN			(EQ_CONFIG_PARAM_LEN+\
			MAX_EQ_BANDS*EQ_CONFIG_PER_BAND_PARAM_LEN)
#define EQ_CONFIG_PARAM_MAX_SZ			\
			(EQ_CONFIG_PARAM_MAX_LEN*sizeof(uint32_t))
#define EQ_NUM_BANDS_PARAM_SZ			\
			(EQ_NUM_BANDS_PARAM_LEN*sizeof(uint32_t))
#define EQ_BAND_LEVELS_PARAM_SZ			\
			(EQ_BAND_LEVELS_PARAM_LEN*sizeof(uint32_t))
#define EQ_BAND_LEVEL_RANGE_PARAM_SZ		\
			(EQ_BAND_LEVEL_RANGE_PARAM_LEN*sizeof(uint32_t))
#define EQ_BAND_FREQS_PARAM_SZ			\
			(EQ_BAND_FREQS_PARAM_LEN*sizeof(uint32_t))
#define EQ_SINGLE_BAND_FREQ_RANGE_PARAM_SZ	\
			(EQ_SINGLE_BAND_FREQ_RANGE_PARAM_LEN*sizeof(uint32_t))
#define EQ_SINGLE_BAND_FREQ_PARAM_SZ		\
			(EQ_SINGLE_BAND_FREQ_PARAM_LEN*sizeof(uint32_t))
#define EQ_BAND_INDEX_PARAM_SZ			\
			(EQ_BAND_INDEX_PARAM_LEN*sizeof(uint32_t))
#define EQ_PRESET_ID_PARAM_SZ			\
			(EQ_PRESET_ID_PARAM_LEN*sizeof(uint32_t))
#define EQ_NUM_PRESETS_PARAM_SZ			\
			(EQ_NUM_PRESETS_PARAM_LEN*sizeof(uint8_t))
struct eq_config_t {
	int32_t eq_pregain;
	int32_t preset_id;
	uint32_t num_bands;
};
struct eq_per_band_config_t {
	int32_t band_idx;
	uint32_t filter_type;
	uint32_t freq_millihertz;
	int32_t  gain_millibels;
	uint32_t quality_factor;
};
struct eq_per_band_freq_range_t {
	uint32_t band_index;
	uint32_t min_freq_millihertz;
	uint32_t max_freq_millihertz;
};

struct eq_params {
	uint32_t device;
	uint32_t enable_flag;
	struct eq_config_t config;
	struct eq_per_band_config_t per_band_cfg[MAX_EQ_BANDS];
	struct eq_per_band_freq_range_t per_band_freq_range[MAX_EQ_BANDS];
	uint32_t band_index;
	uint32_t freq_millihertz;
};

#define SOFT_VOLUME_ENABLE_PARAM_SZ		\
			(SOFT_VOLUME_ENABLE_PARAM_LEN*sizeof(uint32_t))
#define SOFT_VOLUME_GAIN_MASTER_PARAM_SZ	\
			(SOFT_VOLUME_GAIN_MASTER_PARAM_LEN*sizeof(uint32_t))
#define SOFT_VOLUME_GAIN_2CH_PARAM_SZ		\
			(SOFT_VOLUME_GAIN_2CH_PARAM_LEN*sizeof(uint16_t))
struct soft_volume_params {
	uint32_t device;
	uint32_t enable_flag;
	uint32_t master_gain;
	uint32_t left_gain;
	uint32_t right_gain;
};

struct msm_nt_eff_all_config {
	struct bass_boost_params bass_boost;
	struct virtualizer_params virtualizer;
	struct reverb_params reverb;
	struct eq_params equalizer;
	struct soft_volume_params saplus_vol;
	struct soft_volume_params topo_switch_vol;
};

#endif /*_MSM_AUDIO_EFFECTS_H*/