1/* 2 * Copyright (c) 2013-2014, 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#define SOFT_VOLUME_MODULE 0x00006000 137#define SOFT_VOLUME_ENABLE 0x00006001 138#define SOFT_VOLUME_GAIN_2CH 0x00006002 139#define SOFT_VOLUME_GAIN_MASTER 0x00006003 140#define SOFT_VOLUME_ENABLE_PARAM_LEN 1 141#define SOFT_VOLUME_GAIN_2CH_PARAM_LEN 2 142#define SOFT_VOLUME_GAIN_MASTER_PARAM_LEN 1 143 144#define SOFT_VOLUME2_MODULE 0x00007000 145#define SOFT_VOLUME2_ENABLE 0x00007001 146#define SOFT_VOLUME2_GAIN_2CH 0x00007002 147#define SOFT_VOLUME2_GAIN_MASTER 0x00007003 148#define SOFT_VOLUME2_ENABLE_PARAM_LEN SOFT_VOLUME_ENABLE_PARAM_LEN 149#define SOFT_VOLUME2_GAIN_2CH_PARAM_LEN SOFT_VOLUME_GAIN_2CH_PARAM_LEN 150#define SOFT_VOLUME2_GAIN_MASTER_PARAM_LEN \ 151 SOFT_VOLUME_GAIN_MASTER_PARAM_LEN 152 153#define COMMAND_PAYLOAD_LEN 3 154#define COMMAND_PAYLOAD_SZ (COMMAND_PAYLOAD_LEN * sizeof(uint32_t)) 155#define MAX_INBAND_PARAM_SZ 4096 156#define Q27_UNITY (1 << 27) 157#define Q8_UNITY (1 << 8) 158#define CUSTOM_OPENSL_PRESET 18 159 160#define VIRTUALIZER_ENABLE_PARAM_SZ \ 161 (VIRTUALIZER_ENABLE_PARAM_LEN*sizeof(uint32_t)) 162#define VIRTUALIZER_STRENGTH_PARAM_SZ \ 163 (VIRTUALIZER_STRENGTH_PARAM_LEN*sizeof(uint32_t)) 164#define VIRTUALIZER_OUT_TYPE_PARAM_SZ \ 165 (VIRTUALIZER_OUT_TYPE_PARAM_LEN*sizeof(uint32_t)) 166#define VIRTUALIZER_GAIN_ADJUST_PARAM_SZ \ 167 (VIRTUALIZER_GAIN_ADJUST_PARAM_LEN*sizeof(uint32_t)) 168struct virtualizer_params { 169 uint32_t device; 170 uint32_t enable_flag; 171 uint32_t strength; 172 uint32_t out_type; 173 int32_t gain_adjust; 174}; 175 176#define NUM_OSL_REVERB_PRESETS_SUPPORTED 6 177#define REVERB_ENABLE_PARAM_SZ \ 178 (REVERB_ENABLE_PARAM_LEN*sizeof(uint32_t)) 179#define REVERB_MODE_PARAM_SZ \ 180 (REVERB_MODE_PARAM_LEN*sizeof(uint32_t)) 181#define REVERB_PRESET_PARAM_SZ \ 182 (REVERB_PRESET_PARAM_LEN*sizeof(uint32_t)) 183#define REVERB_WET_MIX_PARAM_SZ \ 184 (REVERB_WET_MIX_PARAM_LEN*sizeof(uint32_t)) 185#define REVERB_GAIN_ADJUST_PARAM_SZ \ 186 (REVERB_GAIN_ADJUST_PARAM_LEN*sizeof(uint32_t)) 187#define REVERB_ROOM_LEVEL_PARAM_SZ \ 188 (REVERB_ROOM_LEVEL_PARAM_LEN*sizeof(uint32_t)) 189#define REVERB_ROOM_HF_LEVEL_PARAM_SZ \ 190 (REVERB_ROOM_HF_LEVEL_PARAM_LEN*sizeof(uint32_t)) 191#define REVERB_DECAY_TIME_PARAM_SZ \ 192 (REVERB_DECAY_TIME_PARAM_LEN*sizeof(uint32_t)) 193#define REVERB_DECAY_HF_RATIO_PARAM_SZ \ 194 (REVERB_DECAY_HF_RATIO_PARAM_LEN*sizeof(uint32_t)) 195#define REVERB_REFLECTIONS_LEVEL_PARAM_SZ \ 196 (REVERB_REFLECTIONS_LEVEL_PARAM_LEN*sizeof(uint32_t)) 197#define REVERB_REFLECTIONS_DELAY_PARAM_SZ \ 198 (REVERB_REFLECTIONS_DELAY_PARAM_LEN*sizeof(uint32_t)) 199#define REVERB_LEVEL_PARAM_SZ \ 200 (REVERB_LEVEL_PARAM_LEN*sizeof(uint32_t)) 201#define REVERB_DELAY_PARAM_SZ \ 202 (REVERB_DELAY_PARAM_LEN*sizeof(uint32_t)) 203#define REVERB_DIFFUSION_PARAM_SZ \ 204 (REVERB_DIFFUSION_PARAM_LEN*sizeof(uint32_t)) 205#define REVERB_DENSITY_PARAM_SZ \ 206 (REVERB_DENSITY_PARAM_LEN*sizeof(uint32_t)) 207struct reverb_params { 208 uint32_t device; 209 uint32_t enable_flag; 210 uint32_t mode; 211 uint32_t preset; 212 uint32_t wet_mix; 213 int32_t gain_adjust; 214 int32_t room_level; 215 int32_t room_hf_level; 216 uint32_t decay_time; 217 uint32_t decay_hf_ratio; 218 int32_t reflections_level; 219 uint32_t reflections_delay; 220 int32_t level; 221 uint32_t delay; 222 uint32_t diffusion; 223 uint32_t density; 224}; 225 226#define BASS_BOOST_ENABLE_PARAM_SZ \ 227 (BASS_BOOST_ENABLE_PARAM_LEN*sizeof(uint32_t)) 228#define BASS_BOOST_MODE_PARAM_SZ \ 229 (BASS_BOOST_MODE_PARAM_LEN*sizeof(uint32_t)) 230#define BASS_BOOST_STRENGTH_PARAM_SZ \ 231 (BASS_BOOST_STRENGTH_PARAM_LEN*sizeof(uint32_t)) 232struct bass_boost_params { 233 uint32_t device; 234 uint32_t enable_flag; 235 uint32_t mode; 236 uint32_t strength; 237}; 238 239 240#define MAX_EQ_BANDS 12 241#define MAX_OSL_EQ_BANDS 5 242#define EQ_ENABLE_PARAM_SZ \ 243 (EQ_ENABLE_PARAM_LEN*sizeof(uint32_t)) 244#define EQ_CONFIG_PARAM_SZ \ 245 (EQ_CONFIG_PARAM_LEN*sizeof(uint32_t)) 246#define EQ_CONFIG_PER_BAND_PARAM_SZ \ 247 (EQ_CONFIG_PER_BAND_PARAM_LEN*sizeof(uint32_t)) 248#define EQ_CONFIG_PARAM_MAX_LEN (EQ_CONFIG_PARAM_LEN+\ 249 MAX_EQ_BANDS*EQ_CONFIG_PER_BAND_PARAM_LEN) 250#define EQ_CONFIG_PARAM_MAX_SZ \ 251 (EQ_CONFIG_PARAM_MAX_LEN*sizeof(uint32_t)) 252#define EQ_NUM_BANDS_PARAM_SZ \ 253 (EQ_NUM_BANDS_PARAM_LEN*sizeof(uint32_t)) 254#define EQ_BAND_LEVELS_PARAM_SZ \ 255 (EQ_BAND_LEVELS_PARAM_LEN*sizeof(uint32_t)) 256#define EQ_BAND_LEVEL_RANGE_PARAM_SZ \ 257 (EQ_BAND_LEVEL_RANGE_PARAM_LEN*sizeof(uint32_t)) 258#define EQ_BAND_FREQS_PARAM_SZ \ 259 (EQ_BAND_FREQS_PARAM_LEN*sizeof(uint32_t)) 260#define EQ_SINGLE_BAND_FREQ_RANGE_PARAM_SZ \ 261 (EQ_SINGLE_BAND_FREQ_RANGE_PARAM_LEN*sizeof(uint32_t)) 262#define EQ_SINGLE_BAND_FREQ_PARAM_SZ \ 263 (EQ_SINGLE_BAND_FREQ_PARAM_LEN*sizeof(uint32_t)) 264#define EQ_BAND_INDEX_PARAM_SZ \ 265 (EQ_BAND_INDEX_PARAM_LEN*sizeof(uint32_t)) 266#define EQ_PRESET_ID_PARAM_SZ \ 267 (EQ_PRESET_ID_PARAM_LEN*sizeof(uint32_t)) 268#define EQ_NUM_PRESETS_PARAM_SZ \ 269 (EQ_NUM_PRESETS_PARAM_LEN*sizeof(uint8_t)) 270struct eq_config_t { 271 int32_t eq_pregain; 272 int32_t preset_id; 273 uint32_t num_bands; 274}; 275struct eq_per_band_config_t { 276 int32_t band_idx; 277 uint32_t filter_type; 278 uint32_t freq_millihertz; 279 int32_t gain_millibels; 280 uint32_t quality_factor; 281}; 282struct eq_per_band_freq_range_t { 283 uint32_t band_index; 284 uint32_t min_freq_millihertz; 285 uint32_t max_freq_millihertz; 286}; 287 288struct eq_params { 289 uint32_t device; 290 uint32_t enable_flag; 291 struct eq_config_t config; 292 struct eq_per_band_config_t per_band_cfg[MAX_EQ_BANDS]; 293 struct eq_per_band_freq_range_t per_band_freq_range[MAX_EQ_BANDS]; 294 uint32_t band_index; 295 uint32_t freq_millihertz; 296}; 297 298#define SOFT_VOLUME_ENABLE_PARAM_SZ \ 299 (SOFT_VOLUME_ENABLE_PARAM_LEN*sizeof(uint32_t)) 300#define SOFT_VOLUME_GAIN_MASTER_PARAM_SZ \ 301 (SOFT_VOLUME_GAIN_MASTER_PARAM_LEN*sizeof(uint32_t)) 302#define SOFT_VOLUME_GAIN_2CH_PARAM_SZ \ 303 (SOFT_VOLUME_GAIN_2CH_PARAM_LEN*sizeof(uint16_t)) 304struct soft_volume_params { 305 uint32_t device; 306 uint32_t enable_flag; 307 uint32_t master_gain; 308 uint32_t left_gain; 309 uint32_t right_gain; 310}; 311 312struct msm_nt_eff_all_config { 313 struct bass_boost_params bass_boost; 314 struct virtualizer_params virtualizer; 315 struct reverb_params reverb; 316 struct eq_params equalizer; 317 struct soft_volume_params saplus_vol; 318 struct soft_volume_params topo_switch_vol; 319}; 320 321#endif /*_MSM_AUDIO_EFFECTS_H*/ 322