1 /* Copyright 2018 The Chromium OS Authors. All rights reserved.
2  * Use of this source code is governed by a BSD-style license that can be
3  * found in the LICENSE file.
4  */
5 
6 #ifndef AEC_CONFIG_H_
7 #define AEC_CONFIG_H_
8 
9 #include <webrtc-apm/webrtc_apm.h>
10 
11 #define AEC_DELAY_DEFAULT_DELAY "delay:default_delay"
12 #define AEC_DELAY_DEFAULT_DELAY_VALUE 5
13 #define AEC_DELAY_DOWN_SAMPLING_FACTOR "delay:down_sampling_factor"
14 #define AEC_DELAY_DOWN_SAMPLING_FACTOR_VALUE 4
15 #define AEC_DELAY_NUM_FILTERS "delay:num_filters"
16 #define AEC_DELAY_NUM_FILTERS_VALUE 6
17 #define AEC_DELAY_API_CALL_JITTER_BLOCKS "delay:api_call_jitter_blocks"
18 #define AEC_DELAY_API_CALL_JITTER_BLOCKS_VALUE 26
19 #define AEC_DELAY_MIN_ECHO_PATH_DELAY_BLOCKS "delay:min_echo_path_delay_blocks"
20 #define AEC_DELAY_MIN_ECHO_PATH_DELAY_BLOCKS_VALUE 0
21 #define AEC_DELAY_DELAY_HEADROOM_BLOCKS "delay:delay_headroom_blocks"
22 #define AEC_DELAY_DELAY_HEADROOM_BLOCKS_VALUE 2
23 #define AEC_DELAY_HYSTERESIS_LIMIT_1_BLOCKS "delay:hysteresis_limit_1_blocks"
24 #define AEC_DELAY_HYSTERESIS_LIMIT_1_BLOCKS_VALUE 1
25 #define AEC_DELAY_HYSTERESIS_LIMIT_2_BLOCKS "delay:hysteresis_limit_2_blocks"
26 #define AEC_DELAY_HYSTERESIS_LIMIT_2_BLOCKS_VALUE 1
27 #define AEC_DELAY_SKEW_HYSTERESIS_BLOCKS "delay:skew_hysteresis_blocks"
28 #define AEC_DELAY_SKEW_HYSTERESIS_BLOCKS_VALUE 3
29 #define AEC_DELAY_FIXED_CAPTURE_DELAY_SAMPLES \
30 	"delay:fixed_capture_delay_samples"
31 #define AEC_DELAY_FIXED_CAPTURE_DELAY_SAMPLES_VALUE 0
32 
33 // Filter Main configuration
34 #define AEC_FILTER_MAIN_LENGTH_BLOCKS "filter.main:length_blocks"
35 #define AEC_FILTER_MAIN_LENGTH_BLOCKS_VALUE 13
36 #define AEC_FILTER_MAIN_LEAKAGE_CONVERGED "filter.main:leakage_converged"
37 #define AEC_FILTER_MAIN_LEAKAGE_CONVERGED_VALUE 0.00005f
38 #define AEC_FILTER_MAIN_LEAKAGE_DIVERGED "filter.main:leakage_diverged"
39 #define AEC_FILTER_MAIN_LEAKAGE_DIVERGED_VALUE 0.01f
40 #define AEC_FILTER_MAIN_ERROR_FLOOR "filter.main:error_floor"
41 #define AEC_FILTER_MAIN_ERROR_FLOOR_VALUE 0.1f
42 #define AEC_FILTER_MAIN_NOISE_GATE "filter.main:noise_gate"
43 #define AEC_FILTER_MAIN_NOISE_GATE_VALUE 20075344.f
44 
45 // Filter Shadow configuration
46 #define AEC_FILTER_SHADOW_LENGTH_BLOCKS "filter.shadow:length_blocks"
47 #define AEC_FILTER_SHADOW_LENGTH_BLOCKS_VALUE 13
48 #define AEC_FILTER_SHADOW_RATE "filter.shadow:rate"
49 #define AEC_FILTER_SHADOW_RATE_VALUE 0.7f
50 #define AEC_FILTER_SHADOW_NOISE_GATE "filter.shadow:noise_gate"
51 #define AEC_FILTER_SHADOW_NOISE_GATE_VALUE 20075344.f
52 
53 // Filter Main initial configuration
54 #define AEC_FILTER_MAIN_INIT_LENGTH_BLOCKS "filter.main_initial:length_blocks"
55 #define AEC_FILTER_MAIN_INIT_LENGTH_BLOCKS_VALUE 12
56 #define AEC_FILTER_MAIN_INIT_LEAKAGE_CONVERGED \
57 	"filter.main_initial:leakage_converged"
58 #define AEC_FILTER_MAIN_INIT_LEAKAGE_CONVERGED_VALUE 0.005f
59 #define AEC_FILTER_MAIN_INIT_LEAKAGE_DIVERGED \
60 	"filter.main_initial:leakage_diverged"
61 #define AEC_FILTER_MAIN_INIT_LEAKAGE_DIVERGED_VALUE 0.5f
62 #define AEC_FILTER_MAIN_INIT_ERROR_FLOOR "filter.main_initial:error_floor"
63 #define AEC_FILTER_MAIN_INIT_ERROR_FLOOR_VALUE 0.001f
64 #define AEC_FILTER_MAIN_INIT_NOISE_GATE "filter.main_initial:noise_gate"
65 #define AEC_FILTER_MAIN_INIT_NOISE_GATE_VALUE 20075344.f
66 
67 // Filter Shadow initial configuration
68 #define AEC_FILTER_SHADOW_INIT_LENGTH_BLOCKS \
69 	"filter.shadow_initial:length_blocks"
70 #define AEC_FILTER_SHADOW_INIT_LENGTH_BLOCKS_VALUE 12
71 #define AEC_FILTER_SHADOW_INIT_RATE "filter.shadow_initial:rate"
72 #define AEC_FILTER_SHADOW_INIT_RATE_VALUE 0.9f
73 #define AEC_FILTER_SHADOW_INIT_NOISE_GATE "filter.shadow_initial:noise_gate"
74 #define AEC_FILTER_SHADOW_INIT_NOISE_GATE_VALUE 20075344.f
75 
76 #define AEC_FILTER_CONFIG_CHANGE_DURATION_BLOCKS \
77 	"filter:config_change_duration_blocks"
78 #define AEC_FILTER_CONFIG_CHANGE_DURATION_BLOCKS_VALUE 250
79 #define AEC_FILTER_INITIAL_STATE_SECONDS "filter:initial_state_seconds"
80 #define AEC_FILTER_INITIAL_STATE_SECONDS_VALUE 2.5f
81 #define AEC_FILTER_CONSERVATIVE_INITIAL_PHASE \
82 	"filter:conservative_initial_phase"
83 #define AEC_FILTER_CONSERVATIVE_INITIAL_PHASE_VALUE 0
84 #define AEC_FILTER_ENABLE_SHADOW_FILTER_OUTPUT_USAGE \
85 	"filter:enable_shadow_filter_output_usage"
86 #define AEC_FILTER_ENABLE_SHADOW_FILTER_OUTPUT_USAGE_VALUE 1
87 
88 // Erle
89 #define AEC_ERLE_MIN "erle:min"
90 #define AEC_ERLE_MIN_VALUE 1.f
91 #define AEC_ERLE_MAX_L "erle:max_l"
92 #define AEC_ERLE_MAX_L_VALUE 4.f
93 #define AEC_ERLE_MAX_H "erle:max_h"
94 #define AEC_ERLE_MAX_H_VALUE 1.5f
95 #define AEC_ERLE_ONSET_DETECTION "erle:onset_detection"
96 #define AEC_ERLE_ONSET_DETECTION_VALUE 1
97 
98 // EpStrength
99 #define AEC_EP_STRENGTH_LF "ep_strength:lf"
100 #define AEC_EP_STRENGTH_LF_VALUE 1.f
101 #define AEC_EP_STRENGTH_MF "ep_strength:mf"
102 #define AEC_EP_STRENGTH_MF_VALUE 1.f
103 #define AEC_EP_STRENGTH_HF "ep_strength:hf"
104 #define AEC_EP_STRENGTH_HF_VALUE 1.f
105 #define AEC_EP_STRENGTH_DEFAULT_LEN "ep_strength:default_len"
106 #define AEC_EP_STRENGTH_DEFAULT_LEN_VALUE 0.88f
107 #define AEC_EP_STRENGTH_REVERB_BASED_ON_RENDER \
108 	"ep_strength:reverb_based_on_render"
109 #define AEC_EP_STRENGTH_REVERB_BASED_ON_RENDER_VALUE 1
110 #define AEC_EP_STRENGTH_ECHO_CAN_SATURATE "ep_strength:echo_can_saturate"
111 #define AEC_EP_STRENGTH_ECHO_CAN_SATURATE_VALUE 1
112 #define AEC_EP_STRENGTH_BOUNDED_ERL "ep_strength:bounded_erl"
113 #define AEC_EP_STRENGTH_BOUNDED_ERL_VALUE 0
114 
115 // Gain mask
116 #define AEC_GAIN_MASK_M0 "gain_mask:m0"
117 #define AEC_GAIN_MASK_M0_VALUE 0.1f
118 #define AEC_GAIN_MASK_M1 "gain_mask:m1"
119 #define AEC_GAIN_MASK_M1_VALUE 0.01f
120 #define AEC_GAIN_MASK_M2 "gain_mask:m2"
121 #define AEC_GAIN_MASK_M2_VALUE 0.0001f
122 #define AEC_GAIN_MASK_M3 "gain_mask:m3"
123 #define AEC_GAIN_MASK_M3_VALUE 0.01f
124 // m4 was removed intentionally.
125 // https://webrtc-review.googlesource.com/c/src/+/70421
126 #define AEC_GAIN_MASK_M5 "gain_mask:m5"
127 #define AEC_GAIN_MASK_M5_VALUE 0.01f
128 #define AEC_GAIN_MASK_M6 "gain_mask:m6"
129 #define AEC_GAIN_MASK_M6_VALUE 0.0001f
130 #define AEC_GAIN_MASK_M7 "gain_mask:m7"
131 #define AEC_GAIN_MASK_M7_VALUE 0.01f
132 #define AEC_GAIN_MASK_M8 "gain_mask:m8"
133 #define AEC_GAIN_MASK_M8_VALUE 0.0001f
134 #define AEC_GAIN_MASK_M9 "gain_mask:m9"
135 #define AEC_GAIN_MASK_M9_VALUE 0.1f
136 #define AEC_GAIN_MASK_GAIN_CURVE_OFFSET "gain_mask:gain_curve_offset"
137 #define AEC_GAIN_MASK_GAIN_CURVE_OFFSET_VALUE 1.45f
138 #define AEC_GAIN_MASK_GAIN_CURVE_SLOPE "gain_mask:gain_curve_slope"
139 #define AEC_GAIN_MASK_GAIN_CURVE_SLOPE_VALUE 5.f
140 #define AEC_GAIN_MASK_TEMPORAL_MASKING_LF "gain_mask:temporal_masking_lf"
141 #define AEC_GAIN_MASK_TEMPORAL_MASKING_LF_VALUE 0.9f
142 #define AEC_GAIN_MASK_TEMPORAL_MASKING_HF "gain_mask:temporal_masking_hf"
143 #define AEC_GAIN_MASK_TEMPORAL_MASKING_HF_VALUE 0.6f
144 #define AEC_GAIN_MASK_TEMPORAL_MASKING_LF_BANDS \
145 	"gain_mask:temporal_masking_lf_bands"
146 #define AEC_GAIN_MASK_TEMPORAL_MASKING_LF_BANDS_VALUE 3
147 
148 #define AEC_ECHO_AUDIBILITY_LOW_RENDER_LIMIT "echo_audibility:low_render_limit"
149 #define AEC_ECHO_AUDIBILITY_LOW_RENDER_LIMIT_VALUE 4 * 64.f
150 #define AEC_ECHO_AUDIBILITY_NORMAL_RENDER_LIMIT \
151 	"echo_audibility:normal_render_limit"
152 #define AEC_ECHO_AUDIBILITY_NORMAL_RENDER_LIMIT_VALUE 64.f
153 #define AEC_ECHO_AUDIBILITY_FLOOR_POWER "echo_audibility:floor_power"
154 #define AEC_ECHO_AUDIBILITY_FLOOR_POWER_VALUE 2 * 64.f
155 #define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_LF \
156 	"echo_audibility:audibility_threshold_lf"
157 #define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_LF_VALUE 10
158 #define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_MF \
159 	"echo_audibility:audibility_threshold_mf"
160 #define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_MF_VALUE 10
161 #define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_HF \
162 	"echo_audibility:audibility_threshold_hf"
163 #define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_HF_VALUE 10
164 #define AEC_ECHO_AUDIBILITY_USE_STATIONARY_PROPERTIES \
165 	"echo_audibility:use_stationary_properties"
166 #define AEC_ECHO_AUDIBILITY_USE_STATIONARY_PROPERTIES_VALUE 1
167 
168 // Rendering levels
169 #define AEC_RENDER_LEVELS_ACTIVE_RENDER_LIMIT \
170 	"render_levels:active_render_limit"
171 #define AEC_RENDER_LEVELS_ACTIVE_RENDER_LIMIT_VALUE 100.f
172 #define AEC_RENDER_LEVELS_POOR_EXCITATION_RENDER_LIMIT \
173 	"render_levels:poor_excitation_render_limit"
174 #define AEC_RENDER_LEVELS_POOR_EXCITATION_RENDER_LIMIT_VALUE 150.f
175 #define AEC_RENDER_LEVELS_POOR_EXCITATION_RENDER_LIMIT_DS8 \
176 	"render_levels:poor_excitation_render_limit_ds8"
177 #define AEC_RENDER_LEVELS_POOR_EXCITATION_RENDER_LIMIT_DS8_VALUE 20.f
178 
179 // Echo removal controls
180 #define AEC_ECHO_REMOVAL_CTL_INITIAL_GAIN "echo_removal_control:initial_gain"
181 #define AEC_ECHO_REMOVAL_CTL_INITIAL_GAIN_VALUE 0.0f
182 #define AEC_ECHO_REMOVAL_CTL_FIRST_NON_ZERO_GAIN \
183 	"echo_removal_control:first_non_zero_gain"
184 #define AEC_ECHO_REMOVAL_CTL_FIRST_NON_ZERO_GAIN_VALUE 0.001f
185 #define AEC_ECHO_REMOVAL_CTL_NON_ZERO_GAIN_BLOCKS \
186 	"echo_removal_control:non_zero_gain_blocks"
187 #define AEC_ECHO_REMOVAL_CTL_NON_ZERO_GAIN_BLOCKS_VALUE 187
188 #define AEC_ECHO_REMOVAL_CTL_FULL_GAIN_BLOCKS \
189 	"echo_removal_control:full_gain_blocks"
190 #define AEC_ECHO_REMOVAL_CTL_FULL_GAIN_BLOCKS_VALUE 312
191 #define AEC_ECHO_REMOVAL_CTL_HAS_CLOCK_DRIFT \
192 	"echo_removal_control:has_clock_drift"
193 #define AEC_ECHO_REMOVAL_CTL_HAS_CLOCK_DRIFT_VALUE 0
194 #define AEC_ECHO_REMOVAL_CTL_LINEAR_AND_STABLE_ECHO_PATH \
195 	"echo_removal_control:linear_and_stable_echo_path"
196 #define AEC_ECHO_REMOVAL_CTL_LINEAR_AND_STABLE_ECHO_PATH_VALUE 0
197 
198 // EchoModel
199 #define AEC_ECHO_MODEL_NOISE_FLOOR_HOLD "echo_model:noise_floor_hold"
200 #define AEC_ECHO_MODEL_NOISE_FLOOR_HOLD_VALUE 50
201 #define AEC_ECHO_MODEL_MIN_NOISE_FLOOR_POWER "echo_model:min_noise_floor_power"
202 #define AEC_ECHO_MODEL_MIN_NOISE_FLOOR_POWER_VALUE 1638400.f
203 #define AEC_ECHO_MODEL_STATIONARY_GATE_SLOPE "echo_model:stationary_gate_slope"
204 #define AEC_ECHO_MODEL_STATIONARY_GATE_SLOPE_VALUE 10.f
205 #define AEC_ECHO_MODEL_NOISE_GATE_POWER "echo_model:noise_gate_power"
206 #define AEC_ECHO_MODEL_NOISE_GATE_POWER_VALUE 27509.42f
207 #define AEC_ECHO_MODEL_NOISE_GATE_SLOPE "echo_model:noise_gate_slope"
208 #define AEC_ECHO_MODEL_NOISE_GATE_SLOPE_VALUE 0.3f
209 #define AEC_ECHO_MODEL_RENDER_PRE_WINDOW_SIZE \
210 	"echo_model:render_pre_window_size"
211 #define AEC_ECHO_MODEL_RENDER_PRE_WINDOW_SIZE_VALUE 1
212 #define AEC_ECHO_MODEL_RENDER_POST_WINDOW_SIZE \
213 	"echo_model:render_post_window_size"
214 #define AEC_ECHO_MODEL_RENDER_POST_WINDOW_SIZE_VALUE 1
215 #define AEC_ECHO_MODEL_RENDER_PRE_WINDOW_SIZE_INIT \
216 	"echo_model:render_pre_window_size_init"
217 #define AEC_ECHO_MODEL_RENDER_PRE_WINDOW_SIZE_INIT_VALUE 10
218 #define AEC_ECHO_MODEL_RENDER_POST_WINDOW_SIZE_INIT \
219 	"echo_model:render_post_window_size_init"
220 #define AEC_ECHO_MODEL_RENDER_POST_WINDOW_SIZE_INIT_VALUE 10
221 #define AEC_ECHO_MODEL_NONLINEAR_HOLD "echo_model:nonlinear_hold"
222 #define AEC_ECHO_MODEL_NONLINEAR_HOLD_VALUE 1
223 #define AEC_ECHO_MODEL_NONLINEAR_RELEASE "echo_model:nonlinear_release"
224 #define AEC_ECHO_MODEL_NONLINEAR_RELEASE_VALUE 0.001f
225 
226 #define AEC_SUPPRESSOR_NEAREND_AVERAGE_BLOCKS \
227 	"suppressor:nearend_average_blocks"
228 #define AEC_SUPPRESSOR_NEAREND_AVERAGE_BLOCKS_VALUE 4
229 
230 #define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_LF_ENR_TRANSPARENT \
231 	"suppressor.normal_tuning:mask_lf_enr_transparent"
232 #define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_LF_ENR_TRANSPARENT_VALUE .2f
233 #define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_LF_ENR_SUPPRESS \
234 	"suppressor.normal_tuning:mask_lf_enr_suppress"
235 #define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_LF_ENR_SUPPRESS_VALUE .3f
236 #define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_LF_EMR_TRANSPARENT \
237 	"suppressor.normal_tuning:mask_lf_emr_transparent"
238 #define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_LF_EMR_TRANSPARENT_VALUE .3f
239 
240 #define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_HF_ENR_TRANSPARENT \
241 	"suppressor.normal_tuning:mask_hf_enr_transparent"
242 #define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_HF_ENR_TRANSPARENT_VALUE .07f
243 #define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_HF_ENR_SUPPRESS \
244 	"suppressor.normal_tuning:mask_hf_enr_suppress"
245 #define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_HF_ENR_SUPPRESS_VALUE .1f
246 #define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_HF_EMR_TRANSPARENT \
247 	"suppressor.normal_tuning:mask_hf_emr_transparent"
248 #define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_HF_EMR_TRANSPARENT_VALUE .3f
249 
250 #define AEC_SUPPRESSOR_NORMAL_TUNING_MAX_INC_FACTOR \
251 	"suppressor.normal_tuning:max_inc_factor"
252 #define AEC_SUPPRESSOR_NORMAL_TUNING_MAX_INC_FACTOR_VALUE 2.0f
253 #define AEC_SUPPRESSOR_NORMAL_TUNING_MAX_DEC_FACTOR_LF \
254 	"suppressor.normal_tuning:max_dec_factor_lf"
255 #define AEC_SUPPRESSOR_NORMAL_TUNING_MAX_DEC_FACTOR_LF_VALUE 0.25f
256 
257 #define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_LF_ENR_TRANSPARENT \
258 	"suppressor.nearend_tuning:mask_lf_enr_transparent"
259 #define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_LF_ENR_TRANSPARENT_VALUE .2f
260 #define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_LF_ENR_SUPPRESS \
261 	"suppressor.nearend_tuning:mask_lf_enr_suppress"
262 #define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_LF_ENR_SUPPRESS_VALUE .3f
263 #define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_LF_EMR_TRANSPARENT \
264 	"suppressor.nearend_tuning:mask_lf_emr_transparent"
265 #define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_LF_EMR_TRANSPARENT_VALUE .3f
266 
267 #define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_HF_ENR_TRANSPARENT \
268 	"suppressor.nearend_tuning:mask_hf_enr_transparent"
269 #define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_HF_ENR_TRANSPARENT_VALUE .07f
270 #define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_HF_ENR_SUPPRESS \
271 	"suppressor.nearend_tuning:mask_hf_enr_suppress"
272 #define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_HF_ENR_SUPPRESS_VALUE .1f
273 #define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_HF_EMR_TRANSPARENT \
274 	"suppressor.nearend_tuning:mask_hf_emr_transparent"
275 #define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_HF_EMR_TRANSPARENT_VALUE .3f
276 
277 #define AEC_SUPPRESSOR_NEAREND_TUNING_MAX_INC_FACTOR \
278 	"suppressor.nearend_tuning:max_inc_factor"
279 #define AEC_SUPPRESSOR_NEAREND_TUNING_MAX_INC_FACTOR_VALUE 2.0f
280 #define AEC_SUPPRESSOR_NEAREND_TUNING_MAX_DEC_FACTOR_LF \
281 	"suppressor.nearend_tuning:max_dec_factor_lf"
282 #define AEC_SUPPRESSOR_NEAREND_TUNING_MAX_DEC_FACTOR_LF_VALUE 0.25f
283 
284 #define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_ENR_THRESHOLD \
285 	"suppressor.dominant_nearend_detection:enr_threshold"
286 #define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_ENR_THRESHOLD_VALUE 10.f
287 #define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_SNR_THRESHOLD \
288 	"suppressor.dominant_nearend_detection:snr_threshold"
289 #define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_SNR_THRESHOLD_VALUE 10.f
290 #define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_HOLD_DURATION \
291 	"suppressor.dominant_nearend_detection:hold_duration"
292 #define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_HOLD_DURATION_VALUE 25
293 #define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_TRIGGER_THRESHOLD \
294 	"suppressor.dominant_nearend_detection:trigger_threshold"
295 #define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_TRIGGER_THRESHOLD_VALUE 15
296 
297 #define AEC_SUPPRESSOR_HIGH_BANDS_SUPPRESSION_ENR_THRESHOLD \
298 	"suppressor.high_bands_suppression:enr_threshold"
299 #define AEC_SUPPRESSOR_HIGH_BANDS_SUPPRESSION_ENR_THRESHOLD_VALUE 1.f
300 #define AEC_SUPPRESSOR_HIGH_BANDS_SUPPRESSION_MAX_GAIN_DURING_ECHO \
301 	"suppressor.high_bands_suppression:max_gain_during_echo"
302 #define AEC_SUPPRESSOR_HIGH_BANDS_SUPPRESSION_MAX_GAIN_DURING_ECHO_VALUE 1.f
303 
304 #define AEC_SUPPRESSOR_FLOOR_FIRST_INCREASE "suppressor:floor_first_increase"
305 #define AEC_SUPPRESSOR_FLOOR_FIRST_INCREASE_VALUE 0.00001f
306 #define AEC_SUPPRESSOR_ENFORCE_TRANSPARENT "suppressor:enforce_transparent"
307 #define AEC_SUPPRESSOR_ENFORCE_TRANSPARENT_VALUE 0
308 #define AEC_SUPPRESSOR_ENFORCE_EMPTY_HIGHER_BANDS \
309 	"suppressor:enforce_empty_higher_bands"
310 #define AEC_SUPPRESSOR_ENFORCE_EMPTY_HIGHER_BANDS_VALUE 0
311 
312 /* Gets the aec config from given config directory. */
313 struct aec_config *aec_config_get(const char *device_config_dir);
314 
315 /* Prints the config content to syslog. */
316 void aec_config_dump(struct aec_config *config);
317 
318 #endif /* AEC_CONFIG_H_ */
319