blob: 344447787782578933e0a55c777ccc427515f874 [file] [log] [blame]
Subhash Chandra Bose Naripeddyd773de72013-10-10 21:53:00 -07001/*
2 * Copyright (c) 2013, The Linux Foundation. All rights reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 and
6 * only version 2 as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#ifndef _AUDIO_EFFECTS_H
15#define _AUDIO_EFFECTS_H
16
17/** AUDIO EFFECTS **/
18
19
20/* CONFIG GET/SET */
21#define CONFIG_CACHE 0
22#define CONFIG_SET 1
23#define CONFIG_GET 2
24
25/* CONFIG HEADER */
26/*
27
28 MODULE_ID,
29 DEVICE,
30 NUM_COMMANDS,
31 COMMAND_ID_1,
32 CONFIG_CACHE/SET/GET,
33 OFFSET_1,
34 LENGTH_1,
35 VALUES_1,
36 ...,
37 ...,
38 COMMAND_ID_2,
39 CONFIG_CACHE/SET/GET,
40 OFFSET_2,
41 LENGTH_2,
42 VALUES_2,
43 ...,
44 ...,
45 COMMAND_ID_3,
46 ...
47*/
48
49
50/* CONFIG PARAM IDs */
51#define VIRTUALIZER_MODULE 0x00001000
52#define VIRTUALIZER_ENABLE 0x00001001
53#define VIRTUALIZER_STRENGTH 0x00001002
54#define VIRTUALIZER_OUT_TYPE 0x00001003
55#define VIRTUALIZER_GAIN_ADJUST 0x00001004
56#define VIRTUALIZER_ENABLE_PARAM_LEN 1
57#define VIRTUALIZER_STRENGTH_PARAM_LEN 1
58#define VIRTUALIZER_OUT_TYPE_PARAM_LEN 1
59#define VIRTUALIZER_GAIN_ADJUST_PARAM_LEN 1
60
61#define REVERB_MODULE 0x00002000
62#define REVERB_ENABLE 0x00002001
63#define REVERB_MODE 0x00002002
64#define REVERB_PRESET 0x00002003
65#define REVERB_WET_MIX 0x00002004
66#define REVERB_GAIN_ADJUST 0x00002005
67#define REVERB_ROOM_LEVEL 0x00002006
68#define REVERB_ROOM_HF_LEVEL 0x00002007
69#define REVERB_DECAY_TIME 0x00002008
70#define REVERB_DECAY_HF_RATIO 0x00002009
71#define REVERB_REFLECTIONS_LEVEL 0x0000200a
72#define REVERB_REFLECTIONS_DELAY 0x0000200b
73#define REVERB_LEVEL 0x0000200c
74#define REVERB_DELAY 0x0000200d
75#define REVERB_DIFFUSION 0x0000200e
76#define REVERB_DENSITY 0x0000200f
77#define REVERB_ENABLE_PARAM_LEN 1
78#define REVERB_MODE_PARAM_LEN 1
79#define REVERB_PRESET_PARAM_LEN 1
80#define REVERB_WET_MIX_PARAM_LEN 1
81#define REVERB_GAIN_ADJUST_PARAM_LEN 1
82#define REVERB_ROOM_LEVEL_PARAM_LEN 1
83#define REVERB_ROOM_HF_LEVEL_PARAM_LEN 1
84#define REVERB_DECAY_TIME_PARAM_LEN 1
85#define REVERB_DECAY_HF_RATIO_PARAM_LEN 1
86#define REVERB_REFLECTIONS_LEVEL_PARAM_LEN 1
87#define REVERB_REFLECTIONS_DELAY_PARAM_LEN 1
88#define REVERB_LEVEL_PARAM_LEN 1
89#define REVERB_DELAY_PARAM_LEN 1
90#define REVERB_DIFFUSION_PARAM_LEN 1
91#define REVERB_DENSITY_PARAM_LEN 1
92
93#define BASS_BOOST_MODULE 0x00003000
94#define BASS_BOOST_ENABLE 0x00003001
95#define BASS_BOOST_MODE 0x00003002
96#define BASS_BOOST_STRENGTH 0x00003003
97#define BASS_BOOST_ENABLE_PARAM_LEN 1
98#define BASS_BOOST_MODE_PARAM_LEN 1
99#define BASS_BOOST_STRENGTH_PARAM_LEN 1
100
101#define EQ_MODULE 0x00004000
102#define EQ_ENABLE 0x00004001
103#define EQ_CONFIG 0x00004002
104#define EQ_NUM_BANDS 0x00004003
105#define EQ_BAND_LEVELS 0x00004004
106#define EQ_BAND_LEVEL_RANGE 0x00004005
107#define EQ_BAND_FREQS 0x00004006
108#define EQ_SINGLE_BAND_FREQ_RANGE 0x00004007
109#define EQ_SINGLE_BAND_FREQ 0x00004008
110#define EQ_BAND_INDEX 0x00004009
111#define EQ_PRESET_ID 0x0000400a
112#define EQ_NUM_PRESETS 0x0000400b
113#define EQ_PRESET_NAME 0x0000400c
114#define EQ_ENABLE_PARAM_LEN 1
115#define EQ_CONFIG_PARAM_LEN 3
116#define EQ_CONFIG_PER_BAND_PARAM_LEN 5
117#define EQ_NUM_BANDS_PARAM_LEN 1
118#define EQ_BAND_LEVELS_PARAM_LEN 13
119#define EQ_BAND_LEVEL_RANGE_PARAM_LEN 2
120#define EQ_BAND_FREQS_PARAM_LEN 13
121#define EQ_SINGLE_BAND_FREQ_RANGE_PARAM_LEN 2
122#define EQ_SINGLE_BAND_FREQ_PARAM_LEN 1
123#define EQ_BAND_INDEX_PARAM_LEN 1
124#define EQ_PRESET_ID_PARAM_LEN 1
125#define EQ_NUM_PRESETS_PARAM_LEN 1
126#define EQ_PRESET_NAME_PARAM_LEN 32
127
128#define EQ_TYPE_NONE 0
129#define EQ_BASS_BOOST 1
130#define EQ_BASS_CUT 2
131#define EQ_TREBLE_BOOST 3
132#define EQ_TREBLE_CUT 4
133#define EQ_BAND_BOOST 5
134#define EQ_BAND_CUT 6
135
136
137
138#define COMMAND_PAYLOAD_LEN 3
139#define COMMAND_PAYLOAD_SZ (COMMAND_PAYLOAD_LEN * sizeof(uint32_t))
140#define MAX_INBAND_PARAM_SZ 4096
141#define Q27_UNITY (1 << 27)
142#define Q8_UNITY (1 << 8)
143#define CUSTOM_OPENSL_PRESET 18
144
145#define VIRTUALIZER_ENABLE_PARAM_SZ \
146 (VIRTUALIZER_ENABLE_PARAM_LEN*sizeof(uint32_t))
147#define VIRTUALIZER_STRENGTH_PARAM_SZ \
148 (VIRTUALIZER_STRENGTH_PARAM_LEN*sizeof(uint32_t))
149#define VIRTUALIZER_OUT_TYPE_PARAM_SZ \
150 (VIRTUALIZER_OUT_TYPE_PARAM_LEN*sizeof(uint32_t))
151#define VIRTUALIZER_GAIN_ADJUST_PARAM_SZ \
152 (VIRTUALIZER_GAIN_ADJUST_PARAM_LEN*sizeof(uint32_t))
153struct virtualizer_params {
154 uint32_t device;
155 uint32_t enable_flag;
156 uint32_t strength;
157 uint32_t out_type;
158 int32_t gain_adjust;
159};
160
161#define NUM_OSL_REVERB_PRESETS_SUPPORTED 6
162#define REVERB_ENABLE_PARAM_SZ \
163 (REVERB_ENABLE_PARAM_LEN*sizeof(uint32_t))
164#define REVERB_MODE_PARAM_SZ \
165 (REVERB_MODE_PARAM_LEN*sizeof(uint32_t))
166#define REVERB_PRESET_PARAM_SZ \
167 (REVERB_PRESET_PARAM_LEN*sizeof(uint32_t))
168#define REVERB_WET_MIX_PARAM_SZ \
169 (REVERB_WET_MIX_PARAM_LEN*sizeof(uint32_t))
170#define REVERB_GAIN_ADJUST_PARAM_SZ \
171 (REVERB_GAIN_ADJUST_PARAM_LEN*sizeof(uint32_t))
172#define REVERB_ROOM_LEVEL_PARAM_SZ \
173 (REVERB_ROOM_LEVEL_PARAM_LEN*sizeof(uint32_t))
174#define REVERB_ROOM_HF_LEVEL_PARAM_SZ \
175 (REVERB_ROOM_HF_LEVEL_PARAM_LEN*sizeof(uint32_t))
176#define REVERB_DECAY_TIME_PARAM_SZ \
177 (REVERB_DECAY_TIME_PARAM_LEN*sizeof(uint32_t))
178#define REVERB_DECAY_HF_RATIO_PARAM_SZ \
179 (REVERB_DECAY_HF_RATIO_PARAM_LEN*sizeof(uint32_t))
180#define REVERB_REFLECTIONS_LEVEL_PARAM_SZ \
181 (REVERB_REFLECTIONS_LEVEL_PARAM_LEN*sizeof(uint32_t))
182#define REVERB_REFLECTIONS_DELAY_PARAM_SZ \
183 (REVERB_REFLECTIONS_DELAY_PARAM_LEN*sizeof(uint32_t))
184#define REVERB_LEVEL_PARAM_SZ \
185 (REVERB_LEVEL_PARAM_LEN*sizeof(uint32_t))
186#define REVERB_DELAY_PARAM_SZ \
187 (REVERB_DELAY_PARAM_LEN*sizeof(uint32_t))
188#define REVERB_DIFFUSION_PARAM_SZ \
189 (REVERB_DIFFUSION_PARAM_LEN*sizeof(uint32_t))
190#define REVERB_DENSITY_PARAM_SZ \
191 (REVERB_DENSITY_PARAM_LEN*sizeof(uint32_t))
192struct reverb_params {
193 uint32_t device;
194 uint32_t enable_flag;
195 uint32_t mode;
196 uint32_t preset;
197 uint32_t wet_mix;
198 int32_t gain_adjust;
199 int32_t room_level;
200 int32_t room_hf_level;
201 uint32_t decay_time;
202 uint32_t decay_hf_ratio;
203 int32_t reflections_level;
204 uint32_t reflections_delay;
205 int32_t level;
206 uint32_t delay;
207 uint32_t diffusion;
208 uint32_t density;
209};
210
211#define BASS_BOOST_ENABLE_PARAM_SZ \
212 (BASS_BOOST_ENABLE_PARAM_LEN*sizeof(uint32_t))
213#define BASS_BOOST_MODE_PARAM_SZ \
214 (BASS_BOOST_MODE_PARAM_LEN*sizeof(uint32_t))
215#define BASS_BOOST_STRENGTH_PARAM_SZ \
216 (BASS_BOOST_STRENGTH_PARAM_LEN*sizeof(uint32_t))
217struct bass_boost_params {
218 uint32_t device;
219 uint32_t enable_flag;
220 uint32_t mode;
221 uint32_t strength;
222};
223
224
225#define MAX_EQ_BANDS 12
226#define MAX_OSL_EQ_BANDS 5
227#define EQ_ENABLE_PARAM_SZ \
228 (EQ_ENABLE_PARAM_LEN*sizeof(uint32_t))
229#define EQ_CONFIG_PARAM_SZ \
230 (EQ_CONFIG_PARAM_LEN*sizeof(uint32_t))
231#define EQ_CONFIG_PER_BAND_PARAM_SZ \
232 (EQ_CONFIG_PER_BAND_PARAM_LEN*sizeof(uint32_t))
233#define EQ_CONFIG_PARAM_MAX_LEN (EQ_CONFIG_PARAM_LEN+\
234 MAX_EQ_BANDS*EQ_CONFIG_PER_BAND_PARAM_LEN)
235#define EQ_CONFIG_PARAM_MAX_SZ \
236 (EQ_CONFIG_PARAM_MAX_LEN*sizeof(uint32_t))
237#define EQ_NUM_BANDS_PARAM_SZ \
238 (EQ_NUM_BANDS_PARAM_LEN*sizeof(uint32_t))
239#define EQ_BAND_LEVELS_PARAM_SZ \
240 (EQ_BAND_LEVELS_PARAM_LEN*sizeof(uint32_t))
241#define EQ_BAND_LEVEL_RANGE_PARAM_SZ \
242 (EQ_BAND_LEVEL_RANGE_PARAM_LEN*sizeof(uint32_t))
243#define EQ_BAND_FREQS_PARAM_SZ \
244 (EQ_BAND_FREQS_PARAM_LEN*sizeof(uint32_t))
245#define EQ_SINGLE_BAND_FREQ_RANGE_PARAM_SZ \
246 (EQ_SINGLE_BAND_FREQ_RANGE_PARAM_LEN*sizeof(uint32_t))
247#define EQ_SINGLE_BAND_FREQ_PARAM_SZ \
248 (EQ_SINGLE_BAND_FREQ_PARAM_LEN*sizeof(uint32_t))
249#define EQ_BAND_INDEX_PARAM_SZ \
250 (EQ_BAND_INDEX_PARAM_LEN*sizeof(uint32_t))
251#define EQ_PRESET_ID_PARAM_SZ \
252 (EQ_PRESET_ID_PARAM_LEN*sizeof(uint32_t))
253#define EQ_NUM_PRESETS_PARAM_SZ \
254 (EQ_NUM_PRESETS_PARAM_LEN*sizeof(uint8_t))
255struct eq_config_t {
256 int32_t eq_pregain;
257 int32_t preset_id;
258 uint32_t num_bands;
259};
260struct eq_per_band_config_t {
261 int32_t band_idx;
262 uint32_t filter_type;
263 uint32_t freq_millihertz;
264 int32_t gain_millibels;
265 uint32_t quality_factor;
266};
267struct eq_per_band_freq_range_t {
268 uint32_t band_index;
269 uint32_t min_freq_millihertz;
270 uint32_t max_freq_millihertz;
271};
272
273struct eq_params {
274 uint32_t device;
275 uint32_t enable_flag;
276 struct eq_config_t config;
277 struct eq_per_band_config_t per_band_cfg[MAX_EQ_BANDS];
278 struct eq_per_band_freq_range_t per_band_freq_range[MAX_EQ_BANDS];
279 uint32_t band_index;
280 uint32_t freq_millihertz;
281};
282
283#endif /*_MSM_AUDIO_EFFECTS_H*/