summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHsin-Yu Chao <hychao@chromium.org>2018-08-22 17:20:26 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-08-31 15:08:40 -0700
commit400399da40785d27b86863f81d14d296ebe993dc (patch)
tree690189882d7b3350d151f4ccd48a3f9647773940
parent205aff6cd98f5a33caf24cd450f2d4ecf1b950e5 (diff)
downloadadhd-400399da40785d27b86863f81d14d296ebe993dc.tar.gz
CRAS: config - Update aec_config to latest webrtc-apm
Some parameters are added and some removed. A few of them changed default value. BUG=chromium:874787 TEST=apply all config files and test on nocturne CQ-DEPEND=CL:1194561 Change-Id: I0e47e330b0aaf002d8338f064f0052cc87ff261c Reviewed-on: https://chromium-review.googlesource.com/1196304 Commit-Ready: Hsinyu Chao <hychao@chromium.org> Tested-by: Hsinyu Chao <hychao@chromium.org> Reviewed-by: Hsinyu Chao <hychao@chromium.org>
-rw-r--r--cras/src/server/config/aec_config.c291
-rw-r--r--cras/src/server/config/aec_config.h256
2 files changed, 276 insertions, 271 deletions
diff --git a/cras/src/server/config/aec_config.c b/cras/src/server/config/aec_config.c
index 51d77ead..d51d4b83 100644
--- a/cras/src/server/config/aec_config.c
+++ b/cras/src/server/config/aec_config.c
@@ -58,6 +58,8 @@ struct aec_config *aec_config_get(const char *device_config_dir)
AEC_GET_INT(ini, DELAY, HYSTERESIS_LIMIT_2_BLOCKS);
config->delay.skew_hysteresis_blocks =
AEC_GET_INT(ini, DELAY, SKEW_HYSTERESIS_BLOCKS);
+ config->delay.fixed_capture_delay_samples =
+ AEC_GET_INT(ini, DELAY, FIXED_CAPTURE_DELAY_SAMPLES);
config->filter.main.length_blocks =
AEC_GET_INT(ini, FILTER_MAIN, LENGTH_BLOCKS);
@@ -97,6 +99,12 @@ struct aec_config *aec_config_get(const char *device_config_dir)
config->filter.config_change_duration_blocks =
AEC_GET_INT(ini, FILTER, CONFIG_CHANGE_DURATION_BLOCKS);
+ config->filter.initial_state_seconds =
+ AEC_GET_FLOAT(ini, FILTER, INITIAL_STATE_SECONDS);
+ config->filter.conservative_initial_phase =
+ AEC_GET_INT(ini, FILTER, CONSERVATIVE_INITIAL_PHASE);
+ config->filter.enable_shadow_filter_output_usage =
+ AEC_GET_INT(ini, FILTER, ENABLE_SHADOW_FILTER_OUTPUT_USAGE);
config->erle.min =
AEC_GET_FLOAT(ini, ERLE, MIN);
@@ -104,6 +112,8 @@ struct aec_config *aec_config_get(const char *device_config_dir)
AEC_GET_FLOAT(ini, ERLE, MAX_L);
config->erle.max_h =
AEC_GET_FLOAT(ini, ERLE, MAX_H);
+ config->erle.onset_detection =
+ AEC_GET_INT(ini, ERLE, ONSET_DETECTION);
config->ep_strength.lf =
AEC_GET_FLOAT(ini, EP_STRENGTH, LF);
@@ -171,77 +181,6 @@ struct aec_config *aec_config_get(const char *device_config_dir)
config->render_levels.poor_excitation_render_limit_ds8 =
AEC_GET_FLOAT(ini, RENDER_LEVELS, POOR_EXCITATION_RENDER_LIMIT_DS8);
- config->gain_updates.low_noise.max_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_LOW_NOISE, MAX_INC);
- config->gain_updates.low_noise.max_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_LOW_NOISE, MAX_DEC);
- config->gain_updates.low_noise.rate_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_LOW_NOISE, RATE_INC);
- config->gain_updates.low_noise.rate_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_LOW_NOISE, RATE_DEC);
- config->gain_updates.low_noise.min_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_LOW_NOISE, MIN_INC);
- config->gain_updates.low_noise.min_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_LOW_NOISE, MIN_DEC);
-
- config->gain_updates.initial.max_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_INITIAL, MAX_INC);
- config->gain_updates.initial.max_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_INITIAL, MAX_DEC);
- config->gain_updates.initial.rate_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_INITIAL, RATE_INC);
- config->gain_updates.initial.rate_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_INITIAL, RATE_DEC);
- config->gain_updates.initial.min_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_INITIAL, MIN_INC);
- config->gain_updates.initial.min_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_INITIAL, MIN_DEC);
-
- config->gain_updates.normal.max_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_NORMAL, MAX_INC);
- config->gain_updates.normal.max_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_NORMAL, MAX_DEC);
- config->gain_updates.normal.rate_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_NORMAL, RATE_INC);
- config->gain_updates.normal.rate_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_NORMAL, RATE_DEC);
- config->gain_updates.normal.min_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_NORMAL, MIN_INC);
- config->gain_updates.normal.min_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_NORMAL, MIN_DEC);
-
- config->gain_updates.saturation.max_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_SATURATION, MAX_INC);
- config->gain_updates.saturation.max_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_SATURATION, MAX_DEC);
- config->gain_updates.saturation.rate_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_SATURATION, RATE_INC);
- config->gain_updates.saturation.rate_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_SATURATION, RATE_DEC);
- config->gain_updates.saturation.min_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_SATURATION, MIN_INC);
- config->gain_updates.saturation.min_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_SATURATION, MIN_DEC);
-
- config->gain_updates.nonlinear.max_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_NONLINEAR, MAX_INC);
- config->gain_updates.nonlinear.max_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_NONLINEAR, MAX_DEC);
- config->gain_updates.nonlinear.rate_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_NONLINEAR, RATE_INC);
- config->gain_updates.nonlinear.rate_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_NONLINEAR, RATE_DEC);
- config->gain_updates.nonlinear.min_inc =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_NONLINEAR, MIN_INC);
- config->gain_updates.nonlinear.min_dec =
- AEC_GET_FLOAT(ini, GAIN_UPDATES_NONLINEAR, MIN_DEC);
- config->gain_updates.max_inc_factor =
- AEC_GET_FLOAT(ini, GAIN_UPDATES, MAX_INC_FACTOR);
- config->gain_updates.max_dec_factor_lf =
- AEC_GET_FLOAT(ini, GAIN_UPDATES, MAX_DEC_FACTOR_LF);
- config->gain_updates.floor_first_increase =
- AEC_GET_FLOAT(ini, GAIN_UPDATES, FLOOR_FIRST_INCREASE);
-
config->echo_removal_control.gain_rampup.initial_gain =
AEC_GET_FLOAT(ini, ECHO_REMOVAL_CTL, INITIAL_GAIN);
config->echo_removal_control.gain_rampup.first_non_zero_gain =
@@ -278,22 +217,81 @@ struct aec_config *aec_config_get(const char *device_config_dir)
config->echo_model.nonlinear_release =
AEC_GET_FLOAT(ini, ECHO_MODEL, NONLINEAR_RELEASE);
- config->suppressor.bands_with_reliable_coherence =
- AEC_GET_INT(ini, SUPPRESSOR, BANDS_WITH_RELIABLE_COHERENCE);
config->suppressor.nearend_average_blocks =
AEC_GET_INT(ini, SUPPRESSOR, NEAREND_AVERAGE_BLOCKS);
- config->suppressor.mask_lf_enr_transparent =
- AEC_GET_FLOAT(ini, SUPPRESSOR, MASK_LF_ENR_TRANSPARENT);
- config->suppressor.mask_lf_enr_suppress =
- AEC_GET_FLOAT(ini, SUPPRESSOR, MASK_LF_ENR_SUPPRESS);
- config->suppressor.mask_lf_emr_transparent =
- AEC_GET_FLOAT(ini, SUPPRESSOR, MASK_LF_EMR_TRANSPARENT);
- config->suppressor.mask_hf_enr_transparent =
- AEC_GET_FLOAT(ini, SUPPRESSOR, MASK_HF_ENR_TRANSPARENT);
- config->suppressor.mask_hf_enr_suppress =
- AEC_GET_FLOAT(ini, SUPPRESSOR, MASK_HF_ENR_SUPPRESS);
- config->suppressor.mask_hf_emr_transparent =
- AEC_GET_FLOAT(ini, SUPPRESSOR, MASK_HF_EMR_TRANSPARENT);
+
+ config->suppressor.normal_tuning.mask_lf.enr_transparent =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NORMAL_TUNING,
+ MASK_LF_ENR_TRANSPARENT);
+ config->suppressor.normal_tuning.mask_lf.enr_suppress =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NORMAL_TUNING,
+ MASK_LF_ENR_SUPPRESS);
+ config->suppressor.normal_tuning.mask_lf.emr_transparent =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NORMAL_TUNING,
+ MASK_LF_EMR_TRANSPARENT);
+ config->suppressor.normal_tuning.mask_hf.enr_transparent =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NORMAL_TUNING,
+ MASK_HF_ENR_TRANSPARENT);
+ config->suppressor.normal_tuning.mask_hf.enr_suppress =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NORMAL_TUNING,
+ MASK_HF_ENR_SUPPRESS);
+ config->suppressor.normal_tuning.mask_hf.emr_transparent =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NORMAL_TUNING,
+ MASK_HF_EMR_TRANSPARENT);
+ config->suppressor.normal_tuning.max_inc_factor =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NORMAL_TUNING, MAX_INC_FACTOR);
+ config->suppressor.normal_tuning.max_dec_factor_lf =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NORMAL_TUNING, MAX_DEC_FACTOR_LF);
+
+ config->suppressor.nearend_tuning.mask_lf.enr_transparent =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NEAREND_TUNING,
+ MASK_LF_ENR_TRANSPARENT);
+ config->suppressor.nearend_tuning.mask_lf.enr_suppress =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NEAREND_TUNING,
+ MASK_LF_ENR_SUPPRESS);
+ config->suppressor.nearend_tuning.mask_lf.emr_transparent =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NEAREND_TUNING,
+ MASK_LF_EMR_TRANSPARENT);
+ config->suppressor.nearend_tuning.mask_hf.enr_transparent =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NEAREND_TUNING,
+ MASK_HF_ENR_TRANSPARENT);
+ config->suppressor.nearend_tuning.mask_hf.enr_suppress =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NEAREND_TUNING,
+ MASK_HF_ENR_SUPPRESS);
+ config->suppressor.nearend_tuning.mask_hf.emr_transparent =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NEAREND_TUNING,
+ MASK_HF_EMR_TRANSPARENT);
+ config->suppressor.nearend_tuning.max_inc_factor =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NEAREND_TUNING, MAX_INC_FACTOR);
+ config->suppressor.nearend_tuning.max_dec_factor_lf =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_NEAREND_TUNING, MAX_DEC_FACTOR_LF);
+
+ config->suppressor.dominant_nearend_detection.enr_threshold =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_DOMINANT_NEAREND_DETECTION,
+ ENR_THRESHOLD);
+ config->suppressor.dominant_nearend_detection.snr_threshold =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_DOMINANT_NEAREND_DETECTION,
+ SNR_THRESHOLD);
+ config->suppressor.dominant_nearend_detection.hold_duration =
+ AEC_GET_INT(ini, SUPPRESSOR_DOMINANT_NEAREND_DETECTION,
+ HOLD_DURATION);
+ config->suppressor.dominant_nearend_detection.trigger_threshold =
+ AEC_GET_INT(ini, SUPPRESSOR_DOMINANT_NEAREND_DETECTION,
+ TRIGGER_THRESHOLD);
+
+ config->suppressor.high_bands_suppression.enr_threshold =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_HIGH_BANDS_SUPPRESSION,
+ ENR_THRESHOLD);
+ config->suppressor.high_bands_suppression.max_gain_during_echo =
+ AEC_GET_FLOAT(ini, SUPPRESSOR_HIGH_BANDS_SUPPRESSION,
+ MAX_GAIN_DURING_ECHO);
+
+ config->suppressor.floor_first_increase =
+ AEC_GET_FLOAT(ini, SUPPRESSOR, FLOOR_FIRST_INCREASE);
+ config->suppressor.enforce_transparent =
+ AEC_GET_INT(ini, SUPPRESSOR, ENFORCE_TRANSPARENT);
+ config->suppressor.enforce_empty_higher_bands =
+ AEC_GET_INT(ini, SUPPRESSOR, ENFORCE_EMPTY_HIGHER_BANDS);
return config;
}
@@ -315,6 +313,8 @@ void aec_config_dump(struct aec_config *config)
syslog(LOG_ERR, " hysteresis_limit_2_blocks %zu, skew_hysteresis_blocks %zu",
config->delay.hysteresis_limit_2_blocks,
config->delay.skew_hysteresis_blocks);
+ syslog(LOG_ERR, " fixed_capture_delay_samples %zu",
+ config->delay.fixed_capture_delay_samples);
syslog(LOG_ERR, "Filter main configuration:");
syslog(LOG_ERR, " length_blocks %zu, leakage_converged %f, leakage_diverged %f",
@@ -344,9 +344,15 @@ void aec_config_dump(struct aec_config *config)
config->filter.shadow_initial.noise_gate);
syslog(LOG_ERR, "Filter: config_change_duration_blocks %d",
config->filter.config_change_duration_blocks);
- syslog(LOG_ERR, "Erle: min %f max_l %f max_h %f",
+ syslog(LOG_ERR, " initial_state_seconds %f",
+ config->filter.initial_state_seconds);
+ syslog(LOG_ERR, " conservative_initial_phase %d",
+ config->filter.conservative_initial_phase);
+ syslog(LOG_ERR, " enable_shadow_filter_output_usage %d",
+ config->filter.enable_shadow_filter_output_usage);
+ syslog(LOG_ERR, "Erle: min %f max_l %f max_h %f onset_detection %d",
config->erle.min, config->erle.max_l,
- config->erle.max_h);
+ config->erle.max_h, config->erle.onset_detection);
syslog(LOG_ERR, "Ep strength: lf %f mf %f hf %f default_len %f",
config->ep_strength.lf,
config->ep_strength.mf,
@@ -396,62 +402,6 @@ void aec_config_dump(struct aec_config *config)
config->render_levels.poor_excitation_render_limit);
syslog(LOG_ERR, " poor_excitation_render_limit_ds8 %f",
config->render_levels.poor_excitation_render_limit_ds8);
- syslog(LOG_ERR, "Gain updates:");
- syslog(LOG_ERR, " low_noise:");
- syslog(LOG_ERR, " max_inc %f max_dec %f",
- config->gain_updates.low_noise.max_inc,
- config->gain_updates.low_noise.max_dec);
- syslog(LOG_ERR, " rate_inc %f rate_dec %f",
- config->gain_updates.low_noise.rate_inc,
- config->gain_updates.low_noise.rate_dec);
- syslog(LOG_ERR, " min_inc %f min_dec %f",
- config->gain_updates.low_noise.min_inc,
- config->gain_updates.low_noise.min_dec);
- syslog(LOG_ERR, " initial:");
- syslog(LOG_ERR, " max_inc %f max_dec %f",
- config->gain_updates.initial.max_inc,
- config->gain_updates.initial.max_dec);
- syslog(LOG_ERR, " rate_inc %f rate_dec %f",
- config->gain_updates.initial.rate_inc,
- config->gain_updates.initial.rate_dec);
- syslog(LOG_ERR, " min_inc %f min_dec %f",
- config->gain_updates.initial.min_inc,
- config->gain_updates.initial.min_dec);
- syslog(LOG_ERR, " normal:");
- syslog(LOG_ERR, " max_inc %f max_dec %f",
- config->gain_updates.normal.max_inc,
- config->gain_updates.normal.max_dec);
- syslog(LOG_ERR, " rate_inc %f rate_dec %f",
- config->gain_updates.normal.rate_inc,
- config->gain_updates.normal.rate_dec);
- syslog(LOG_ERR, " min_inc %f min_dec %f",
- config->gain_updates.normal.min_inc,
- config->gain_updates.normal.min_dec);
- syslog(LOG_ERR, " saturation:");
- syslog(LOG_ERR, " max_inc %f max_dec %f",
- config->gain_updates.saturation.max_inc,
- config->gain_updates.saturation.max_dec);
- syslog(LOG_ERR, " rate_inc %f rate_dec %f",
- config->gain_updates.saturation.rate_inc,
- config->gain_updates.saturation.rate_dec);
- syslog(LOG_ERR, " min_inc %f min_dec %f",
- config->gain_updates.saturation.min_inc,
- config->gain_updates.saturation.min_dec);
- syslog(LOG_ERR, " nonlinear:");
- syslog(LOG_ERR, " max_inc %f max_dec %f",
- config->gain_updates.nonlinear.max_inc,
- config->gain_updates.nonlinear.max_dec);
- syslog(LOG_ERR, " rate_inc %f rate_dec %f",
- config->gain_updates.nonlinear.rate_inc,
- config->gain_updates.nonlinear.rate_dec);
- syslog(LOG_ERR, " min_inc %f min_dec %f",
- config->gain_updates.nonlinear.min_inc,
- config->gain_updates.nonlinear.min_dec);
- syslog(LOG_ERR, " max_inc_factor %f max_dec_factor_lf %f",
- config->gain_updates.max_inc_factor,
- config->gain_updates.max_dec_factor_lf);
- syslog(LOG_ERR, " floor_first_increase %f",
- config->gain_updates.floor_first_increase);
syslog(LOG_ERR, "Echo removal control:");
syslog(LOG_ERR, " gain rampup:");
syslog(LOG_ERR, " initial_gain %f, first_non_zero_gain %f",
@@ -483,20 +433,47 @@ void aec_config_dump(struct aec_config *config)
config->echo_model.render_post_window_size_init);
syslog(LOG_ERR, " nonlinear_release %f",
config->echo_model.nonlinear_release);
- syslog(LOG_ERR, "Suppressor: bands_with_reliable_coherence %zu",
- config->suppressor.bands_with_reliable_coherence);
+ syslog(LOG_ERR, "Suppressor:");
syslog(LOG_ERR, " nearend_average_blocks %u",
config->suppressor.nearend_average_blocks);
- syslog(LOG_ERR, " mask_lf_enr_transparent %f",
- config->suppressor.mask_lf_enr_transparent);
- syslog(LOG_ERR, " mask_lf_enr_suppress %f",
- config->suppressor.mask_lf_enr_suppress);
- syslog(LOG_ERR, " mask_lf_emr_transparent %f",
- config->suppressor.mask_lf_emr_transparent);
- syslog(LOG_ERR, " mask_hf_enr_transparent %f",
- config->suppressor.mask_hf_enr_transparent);
- syslog(LOG_ERR, " mask_hf_enr_suppress %f",
- config->suppressor.mask_hf_enr_suppress);
- syslog(LOG_ERR, " mask_hf_emr_transparent %f",
- config->suppressor.mask_hf_emr_transparent);
+ syslog(LOG_ERR, " Normal tuning, mask_lf %f %f %f",
+ config->suppressor.normal_tuning.mask_lf.enr_transparent,
+ config->suppressor.normal_tuning.mask_lf.enr_suppress,
+ config->suppressor.normal_tuning.mask_lf.emr_transparent);
+ syslog(LOG_ERR, " mask_hf %f %f %f",
+ config->suppressor.normal_tuning.mask_hf.enr_transparent,
+ config->suppressor.normal_tuning.mask_hf.enr_suppress,
+ config->suppressor.normal_tuning.mask_hf.emr_transparent);
+ syslog(LOG_ERR, " max_inc_factor %f max_dec_factor_lf %f",
+ config->suppressor.normal_tuning.max_inc_factor,
+ config->suppressor.normal_tuning.max_dec_factor_lf);
+ syslog(LOG_ERR, " Nearend tuning, mask_lf %f %f %f",
+ config->suppressor.nearend_tuning.mask_lf.enr_transparent,
+ config->suppressor.nearend_tuning.mask_lf.enr_suppress,
+ config->suppressor.nearend_tuning.mask_lf.emr_transparent);
+ syslog(LOG_ERR, " mask_hf %f %f %f",
+ config->suppressor.nearend_tuning.mask_hf.enr_transparent,
+ config->suppressor.nearend_tuning.mask_hf.enr_suppress,
+ config->suppressor.nearend_tuning.mask_hf.emr_transparent);
+ syslog(LOG_ERR, " max_inc_factor %f max_dec_factor_lf %f",
+ config->suppressor.nearend_tuning.max_inc_factor,
+ config->suppressor.nearend_tuning.max_dec_factor_lf);
+ syslog(LOG_ERR, " Dominant nearend detection:");
+ syslog(LOG_ERR, " enr_threshold %f",
+ config->suppressor.dominant_nearend_detection.enr_threshold);
+ syslog(LOG_ERR, " snr_threshold %f",
+ config->suppressor.dominant_nearend_detection.snr_threshold);
+ syslog(LOG_ERR, " hold_duration %d",
+ config->suppressor.dominant_nearend_detection.hold_duration);
+ syslog(LOG_ERR, " trigger_threshold %d",
+ config->suppressor.dominant_nearend_detection.trigger_threshold);
+ syslog(LOG_ERR, " High bands suppression:");
+ syslog(LOG_ERR, " enr_threshold %f max_gain_during_echo %f",
+ config->suppressor.high_bands_suppression.enr_threshold,
+ config->suppressor.high_bands_suppression.max_gain_during_echo);
+ syslog(LOG_ERR, " floor_first_increase %f, enforce_transparent %d",
+ config->suppressor.floor_first_increase,
+ config->suppressor.enforce_transparent);
+ syslog(LOG_ERR, " enforce_empty_higher_bands %f",
+ config->suppressor.enforce_empty_higher_bands);
}
diff --git a/cras/src/server/config/aec_config.h b/cras/src/server/config/aec_config.h
index 799accdd..015ca766 100644
--- a/cras/src/server/config/aec_config.h
+++ b/cras/src/server/config/aec_config.h
@@ -26,6 +26,9 @@
#define AEC_DELAY_HYSTERESIS_LIMIT_2_BLOCKS_VALUE 1
#define AEC_DELAY_SKEW_HYSTERESIS_BLOCKS "delay:skew_hysteresis_blocks"
#define AEC_DELAY_SKEW_HYSTERESIS_BLOCKS_VALUE 3
+#define AEC_DELAY_FIXED_CAPTURE_DELAY_SAMPLES \
+ "delay:fixed_capture_delay_samples"
+#define AEC_DELAY_FIXED_CAPTURE_DELAY_SAMPLES_VALUE 0
// Filter Main configuration
#define AEC_FILTER_MAIN_LENGTH_BLOCKS "filter.main:length_blocks"
@@ -50,24 +53,37 @@
// Filter Main initial configuration
#define AEC_FILTER_MAIN_INIT_LENGTH_BLOCKS "filter.main_initial:length_blocks"
#define AEC_FILTER_MAIN_INIT_LENGTH_BLOCKS_VALUE 12
-#define AEC_FILTER_MAIN_INIT_LEAKAGE_CONVERGED "filter.main_initial:leakage_converged"
-#define AEC_FILTER_MAIN_INIT_LEAKAGE_CONVERGED_VALUE 0.05f
-#define AEC_FILTER_MAIN_INIT_LEAKAGE_DIVERGED "filter.main_initial:leakage_diverged"
-#define AEC_FILTER_MAIN_INIT_LEAKAGE_DIVERGED_VALUE 5.f
+#define AEC_FILTER_MAIN_INIT_LEAKAGE_CONVERGED \
+ "filter.main_initial:leakage_converged"
+#define AEC_FILTER_MAIN_INIT_LEAKAGE_CONVERGED_VALUE 0.005f
+#define AEC_FILTER_MAIN_INIT_LEAKAGE_DIVERGED \
+ "filter.main_initial:leakage_diverged"
+#define AEC_FILTER_MAIN_INIT_LEAKAGE_DIVERGED_VALUE 0.5f
#define AEC_FILTER_MAIN_INIT_ERROR_FLOOR "filter.main_initial:error_floor"
#define AEC_FILTER_MAIN_INIT_ERROR_FLOOR_VALUE 0.001f
#define AEC_FILTER_MAIN_INIT_NOISE_GATE "filter.main_initial:noise_gate"
#define AEC_FILTER_MAIN_INIT_NOISE_GATE_VALUE 20075344.f
// Filter Shadow initial configuration
-#define AEC_FILTER_SHADOW_INIT_LENGTH_BLOCKS "filter.shadow_initial:length_blocks"
+#define AEC_FILTER_SHADOW_INIT_LENGTH_BLOCKS \
+ "filter.shadow_initial:length_blocks"
#define AEC_FILTER_SHADOW_INIT_LENGTH_BLOCKS_VALUE 12
#define AEC_FILTER_SHADOW_INIT_RATE "filter.shadow_initial:rate"
#define AEC_FILTER_SHADOW_INIT_RATE_VALUE 0.9f
#define AEC_FILTER_SHADOW_INIT_NOISE_GATE "filter.shadow_initial:noise_gate"
#define AEC_FILTER_SHADOW_INIT_NOISE_GATE_VALUE 20075344.f
-#define AEC_FILTER_CONFIG_CHANGE_DURATION_BLOCKS "filter:config_change_duration_blocks"
+
+#define AEC_FILTER_CONFIG_CHANGE_DURATION_BLOCKS \
+ "filter:config_change_duration_blocks"
#define AEC_FILTER_CONFIG_CHANGE_DURATION_BLOCKS_VALUE 250
+#define AEC_FILTER_INITIAL_STATE_SECONDS "filter:initial_state_seconds"
+#define AEC_FILTER_INITIAL_STATE_SECONDS_VALUE 2.5f
+#define AEC_FILTER_CONSERVATIVE_INITIAL_PHASE \
+ "filter:conservative_initial_phase"
+#define AEC_FILTER_CONSERVATIVE_INITIAL_PHASE_VALUE 0
+#define AEC_FILTER_ENABLE_SHADOW_FILTER_OUTPUT_USAGE \
+ "filter:enable_shadow_filter_output_usage"
+#define AEC_FILTER_ENABLE_SHADOW_FILTER_OUTPUT_USAGE_VALUE 1
// Erle
#define AEC_ERLE_MIN "erle:min"
@@ -76,6 +92,8 @@
#define AEC_ERLE_MAX_L_VALUE 4.f
#define AEC_ERLE_MAX_H "erle:max_h"
#define AEC_ERLE_MAX_H_VALUE 1.5f
+#define AEC_ERLE_ONSET_DETECTION "erle:onset_detection"
+#define AEC_ERLE_ONSET_DETECTION_VALUE 1
// EpStrength
#define AEC_EP_STRENGTH_LF "ep_strength:lf"
@@ -86,12 +104,13 @@
#define AEC_EP_STRENGTH_HF_VALUE 1.f
#define AEC_EP_STRENGTH_DEFAULT_LEN "ep_strength:default_len"
#define AEC_EP_STRENGTH_DEFAULT_LEN_VALUE 0.88f
-#define AEC_EP_STRENGTH_REVERB_BASED_ON_RENDER "ep_strength:reverb_based_on_render"
+#define AEC_EP_STRENGTH_REVERB_BASED_ON_RENDER \
+ "ep_strength:reverb_based_on_render"
#define AEC_EP_STRENGTH_REVERB_BASED_ON_RENDER_VALUE 1
-#define AEC_EP_STRENGTH_BOUNDED_ERL "ep_strength:bounded_erl"
-#define AEC_EP_STRENGTH_BOUNDED_ERL_VALUE 0
#define AEC_EP_STRENGTH_ECHO_CAN_SATURATE "ep_strength:echo_can_saturate"
#define AEC_EP_STRENGTH_ECHO_CAN_SATURATE_VALUE 1
+#define AEC_EP_STRENGTH_BOUNDED_ERL "ep_strength:bounded_erl"
+#define AEC_EP_STRENGTH_BOUNDED_ERL_VALUE 0
// Gain mask
#define AEC_GAIN_MASK_M0 "gain_mask:m0"
@@ -122,26 +141,33 @@
#define AEC_GAIN_MASK_TEMPORAL_MASKING_LF_VALUE 0.9f
#define AEC_GAIN_MASK_TEMPORAL_MASKING_HF "gain_mask:temporal_masking_hf"
#define AEC_GAIN_MASK_TEMPORAL_MASKING_HF_VALUE 0.6f
-#define AEC_GAIN_MASK_TEMPORAL_MASKING_LF_BANDS "gain_mask:temporal_masking_lf_bands"
+#define AEC_GAIN_MASK_TEMPORAL_MASKING_LF_BANDS \
+ "gain_mask:temporal_masking_lf_bands"
#define AEC_GAIN_MASK_TEMPORAL_MASKING_LF_BANDS_VALUE 3
#define AEC_ECHO_AUDIBILITY_LOW_RENDER_LIMIT "echo_audibility:low_render_limit"
#define AEC_ECHO_AUDIBILITY_LOW_RENDER_LIMIT_VALUE 4 * 64.f
-#define AEC_ECHO_AUDIBILITY_NORMAL_RENDER_LIMIT "echo_audibility:normal_render_limit"
+#define AEC_ECHO_AUDIBILITY_NORMAL_RENDER_LIMIT \
+ "echo_audibility:normal_render_limit"
#define AEC_ECHO_AUDIBILITY_NORMAL_RENDER_LIMIT_VALUE 64.f
#define AEC_ECHO_AUDIBILITY_FLOOR_POWER "echo_audibility:floor_power"
#define AEC_ECHO_AUDIBILITY_FLOOR_POWER_VALUE 2 * 64.f
-#define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_LF "echo_audibility:audibility_threshold_lf"
+#define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_LF \
+ "echo_audibility:audibility_threshold_lf"
#define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_LF_VALUE 10
-#define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_MF "echo_audibility:audibility_threshold_mf"
+#define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_MF \
+ "echo_audibility:audibility_threshold_mf"
#define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_MF_VALUE 10
-#define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_HF "echo_audibility:audibility_threshold_hf"
+#define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_HF \
+ "echo_audibility:audibility_threshold_hf"
#define AEC_ECHO_AUDIBILITY_AUDIBILITY_THRESHOLD_HF_VALUE 10
-#define AEC_ECHO_AUDIBILITY_USE_STATIONARY_PROPERTIES "echo_audibility:use_stationary_properties"
+#define AEC_ECHO_AUDIBILITY_USE_STATIONARY_PROPERTIES \
+ "echo_audibility:use_stationary_properties"
#define AEC_ECHO_AUDIBILITY_USE_STATIONARY_PROPERTIES_VALUE 1
// Rendering levels
-#define AEC_RENDER_LEVELS_ACTIVE_RENDER_LIMIT "render_levels:active_render_limit"
+#define AEC_RENDER_LEVELS_ACTIVE_RENDER_LIMIT \
+ "render_levels:active_render_limit"
#define AEC_RENDER_LEVELS_ACTIVE_RENDER_LIMIT_VALUE 100.f
#define AEC_RENDER_LEVELS_POOR_EXCITATION_RENDER_LIMIT \
"render_levels:poor_excitation_render_limit"
@@ -150,89 +176,20 @@
"render_levels:poor_excitation_render_limit_ds8"
#define AEC_RENDER_LEVELS_POOR_EXCITATION_RENDER_LIMIT_DS8_VALUE 20.f
-// GainUpdates
-#define AEC_GAIN_UPDATES_LOW_NOISE_MAX_INC "gain_updates.low_noise:max_inc"
-#define AEC_GAIN_UPDATES_LOW_NOISE_MAX_INC_VALUE 2.f
-#define AEC_GAIN_UPDATES_LOW_NOISE_MAX_DEC "gain_updates.low_noise:max_dec"
-#define AEC_GAIN_UPDATES_LOW_NOISE_MAX_DEC_VALUE 2.f
-#define AEC_GAIN_UPDATES_LOW_NOISE_RATE_INC "gain_updates.low_noise:rate_inc"
-#define AEC_GAIN_UPDATES_LOW_NOISE_RATE_INC_VALUE 1.4f
-#define AEC_GAIN_UPDATES_LOW_NOISE_RATE_DEC "gain_updates.low_noise:rate_dec"
-#define AEC_GAIN_UPDATES_LOW_NOISE_RATE_DEC_VALUE 1.4f
-#define AEC_GAIN_UPDATES_LOW_NOISE_MIN_INC "gain_updates.low_noise:min_inc"
-#define AEC_GAIN_UPDATES_LOW_NOISE_MIN_INC_VALUE 1.1f
-#define AEC_GAIN_UPDATES_LOW_NOISE_MIN_DEC "gain_updates.low_noise:min_dec"
-#define AEC_GAIN_UPDATES_LOW_NOISE_MIN_DEC_VALUE 1.1f
-
-#define AEC_GAIN_UPDATES_INITIAL_MAX_INC "gain_updates.initial:max_inc"
-#define AEC_GAIN_UPDATES_INITIAL_MAX_INC_VALUE 2.f
-#define AEC_GAIN_UPDATES_INITIAL_MAX_DEC "gain_updates.initial:max_dec"
-#define AEC_GAIN_UPDATES_INITIAL_MAX_DEC_VALUE 2.f
-#define AEC_GAIN_UPDATES_INITIAL_RATE_INC "gain_updates.initial:rate_inc"
-#define AEC_GAIN_UPDATES_INITIAL_RATE_INC_VALUE 1.5f
-#define AEC_GAIN_UPDATES_INITIAL_RATE_DEC "gain_updates.initial:rate_dec"
-#define AEC_GAIN_UPDATES_INITIAL_RATE_DEC_VALUE 1.5f
-#define AEC_GAIN_UPDATES_INITIAL_MIN_INC "gain_updates.initial:min_inc"
-#define AEC_GAIN_UPDATES_INITIAL_MIN_INC_VALUE 1.2f
-#define AEC_GAIN_UPDATES_INITIAL_MIN_DEC "gain_updates.initial:min_dec"
-#define AEC_GAIN_UPDATES_INITIAL_MIN_DEC_VALUE 1.2f
-
-#define AEC_GAIN_UPDATES_NORMAL_MAX_INC "gain_updates.normal:max_inc"
-#define AEC_GAIN_UPDATES_NORMAL_MAX_INC_VALUE 2.f
-#define AEC_GAIN_UPDATES_NORMAL_MAX_DEC "gain_updates.normal:max_dec"
-#define AEC_GAIN_UPDATES_NORMAL_MAX_DEC_VALUE 2.f
-#define AEC_GAIN_UPDATES_NORMAL_RATE_INC "gain_updates.normal:rate_inc"
-#define AEC_GAIN_UPDATES_NORMAL_RATE_INC_VALUE 1.5f
-#define AEC_GAIN_UPDATES_NORMAL_RATE_DEC "gain_updates.normal:rate_dec"
-#define AEC_GAIN_UPDATES_NORMAL_RATE_DEC_VALUE 1.5f
-#define AEC_GAIN_UPDATES_NORMAL_MIN_INC "gain_updates.normal:min_inc"
-#define AEC_GAIN_UPDATES_NORMAL_MIN_INC_VALUE 1.2f
-#define AEC_GAIN_UPDATES_NORMAL_MIN_DEC "gain_updates.normal:min_dec"
-#define AEC_GAIN_UPDATES_NORMAL_MIN_DEC_VALUE 1.2f
-
-#define AEC_GAIN_UPDATES_SATURATION_MAX_INC "gain_updates.saturation:max_inc"
-#define AEC_GAIN_UPDATES_SATURATION_MAX_INC_VALUE 1.2f
-#define AEC_GAIN_UPDATES_SATURATION_MAX_DEC "gain_updates.saturation:max_dec"
-#define AEC_GAIN_UPDATES_SATURATION_MAX_DEC_VALUE 1.2f
-#define AEC_GAIN_UPDATES_SATURATION_RATE_INC "gain_updates.saturation:rate_inc"
-#define AEC_GAIN_UPDATES_SATURATION_RATE_INC_VALUE 1.5f
-#define AEC_GAIN_UPDATES_SATURATION_RATE_DEC "gain_updates.saturation:rate_dec"
-#define AEC_GAIN_UPDATES_SATURATION_RATE_DEC_VALUE 1.5f
-#define AEC_GAIN_UPDATES_SATURATION_MIN_INC "gain_updates.saturation:min_inc"
-#define AEC_GAIN_UPDATES_SATURATION_MIN_INC_VALUE 1.f
-#define AEC_GAIN_UPDATES_SATURATION_MIN_DEC "gain_updates.saturation:min_dec"
-#define AEC_GAIN_UPDATES_SATURATION_MIN_DEC_VALUE 1.f
-
-#define AEC_GAIN_UPDATES_NONLINEAR_MAX_INC "gain_updates.nonlinear:max_inc"
-#define AEC_GAIN_UPDATES_NONLINEAR_MAX_INC_VALUE 1.5f
-#define AEC_GAIN_UPDATES_NONLINEAR_MAX_DEC "gain_updates.nonlinear:max_dec"
-#define AEC_GAIN_UPDATES_NONLINEAR_MAX_DEC_VALUE 1.5f
-#define AEC_GAIN_UPDATES_NONLINEAR_RATE_INC "gain_updates.nonlinear:rate_inc"
-#define AEC_GAIN_UPDATES_NONLINEAR_RATE_INC_VALUE 1.2f
-#define AEC_GAIN_UPDATES_NONLINEAR_RATE_DEC "gain_updates.nonlinear:rate_dec"
-#define AEC_GAIN_UPDATES_NONLINEAR_RATE_DEC_VALUE 1.2f
-#define AEC_GAIN_UPDATES_NONLINEAR_MIN_INC "gain_updates.nonlinear:min_inc"
-#define AEC_GAIN_UPDATES_NONLINEAR_MIN_INC_VALUE 1.1f
-#define AEC_GAIN_UPDATES_NONLINEAR_MIN_DEC "gain_updates.nonlinear:min_dec"
-#define AEC_GAIN_UPDATES_NONLINEAR_MIN_DEC_VALUE 1.1f
-
-#define AEC_GAIN_UPDATES_MAX_INC_FACTOR "gain_updates:max_inc_factor"
-#define AEC_GAIN_UPDATES_MAX_INC_FACTOR_VALUE 2.0f
-#define AEC_GAIN_UPDATES_MAX_DEC_FACTOR_LF "gain_updates:max_dec_factor_lf"
-#define AEC_GAIN_UPDATES_MAX_DEC_FACTOR_LF_VALUE 0.25f
-#define AEC_GAIN_UPDATES_FLOOR_FIRST_INCREASE "gain_updates:floor_first_increase"
-#define AEC_GAIN_UPDATES_FLOOR_FIRST_INCREASE_VALUE 0.00001f
-
// Echo removal controls
#define AEC_ECHO_REMOVAL_CTL_INITIAL_GAIN "echo_removal_control:initial_gain"
#define AEC_ECHO_REMOVAL_CTL_INITIAL_GAIN_VALUE 0.0f
-#define AEC_ECHO_REMOVAL_CTL_FIRST_NON_ZERO_GAIN "echo_removal_control:first_non_zero_gain"
+#define AEC_ECHO_REMOVAL_CTL_FIRST_NON_ZERO_GAIN \
+ "echo_removal_control:first_non_zero_gain"
#define AEC_ECHO_REMOVAL_CTL_FIRST_NON_ZERO_GAIN_VALUE 0.001f
-#define AEC_ECHO_REMOVAL_CTL_NON_ZERO_GAIN_BLOCKS "echo_removal_control:non_zero_gain_blocks"
+#define AEC_ECHO_REMOVAL_CTL_NON_ZERO_GAIN_BLOCKS \
+ "echo_removal_control:non_zero_gain_blocks"
#define AEC_ECHO_REMOVAL_CTL_NON_ZERO_GAIN_BLOCKS_VALUE 187
-#define AEC_ECHO_REMOVAL_CTL_FULL_GAIN_BLOCKS "echo_removal_control:full_gain_blocks"
+#define AEC_ECHO_REMOVAL_CTL_FULL_GAIN_BLOCKS \
+ "echo_removal_control:full_gain_blocks"
#define AEC_ECHO_REMOVAL_CTL_FULL_GAIN_BLOCKS_VALUE 312
-#define AEC_ECHO_REMOVAL_CTL_HAS_CLOCK_DRIFT "echo_removal_control:has_clock_drift"
+#define AEC_ECHO_REMOVAL_CTL_HAS_CLOCK_DRIFT \
+ "echo_removal_control:has_clock_drift"
#define AEC_ECHO_REMOVAL_CTL_HAS_CLOCK_DRIFT_VALUE 0
#define AEC_ECHO_REMOVAL_CTL_LINEAR_AND_STABLE_ECHO_PATH \
"echo_removal_control:linear_and_stable_echo_path"
@@ -249,42 +206,113 @@
#define AEC_ECHO_MODEL_NOISE_GATE_POWER_VALUE 27509.42f
#define AEC_ECHO_MODEL_NOISE_GATE_SLOPE "echo_model:noise_gate_slope"
#define AEC_ECHO_MODEL_NOISE_GATE_SLOPE_VALUE 0.3f
-#define AEC_ECHO_MODEL_RENDER_PRE_WINDOW_SIZE "echo_model:render_pre_window_size"
+#define AEC_ECHO_MODEL_RENDER_PRE_WINDOW_SIZE \
+ "echo_model:render_pre_window_size"
#define AEC_ECHO_MODEL_RENDER_PRE_WINDOW_SIZE_VALUE 1
-#define AEC_ECHO_MODEL_RENDER_POST_WINDOW_SIZE "echo_model:render_post_window_size"
+#define AEC_ECHO_MODEL_RENDER_POST_WINDOW_SIZE \
+ "echo_model:render_post_window_size"
#define AEC_ECHO_MODEL_RENDER_POST_WINDOW_SIZE_VALUE 1
-#define AEC_ECHO_MODEL_RENDER_PRE_WINDOW_SIZE_INIT "echo_model:render_pre_window_size_init"
+#define AEC_ECHO_MODEL_RENDER_PRE_WINDOW_SIZE_INIT \
+ "echo_model:render_pre_window_size_init"
#define AEC_ECHO_MODEL_RENDER_PRE_WINDOW_SIZE_INIT_VALUE 10
-#define AEC_ECHO_MODEL_RENDER_POST_WINDOW_SIZE_INIT "echo_model:render_post_window_size_init"
+#define AEC_ECHO_MODEL_RENDER_POST_WINDOW_SIZE_INIT \
+ "echo_model:render_post_window_size_init"
#define AEC_ECHO_MODEL_RENDER_POST_WINDOW_SIZE_INIT_VALUE 10
#define AEC_ECHO_MODEL_NONLINEAR_HOLD "echo_model:nonlinear_hold"
#define AEC_ECHO_MODEL_NONLINEAR_HOLD_VALUE 1
#define AEC_ECHO_MODEL_NONLINEAR_RELEASE "echo_model:nonlinear_release"
#define AEC_ECHO_MODEL_NONLINEAR_RELEASE_VALUE 0.001f
-#define AEC_SUPPRESSOR_BANDS_WITH_RELIABLE_COHERENCE "suppressor:bands_with_reliable_coherence"
-#define AEC_SUPPRESSOR_BANDS_WITH_RELIABLE_COHERENCE_VALUE 5
-#define AEC_SUPPRESSOR_NEAREND_AVERAGE_BLOCKS "suppressor:nearend_average_blocks"
+#define AEC_SUPPRESSOR_NEAREND_AVERAGE_BLOCKS \
+ "suppressor:nearend_average_blocks"
#define AEC_SUPPRESSOR_NEAREND_AVERAGE_BLOCKS_VALUE 4
-#define AEC_SUPPRESSOR_MASK_LF_ENR_TRANSPARENT "suppressor:mask_lf_enr_transparent"
-#define AEC_SUPPRESSOR_MASK_LF_ENR_TRANSPARENT_VALUE .2f
-#define AEC_SUPPRESSOR_MASK_LF_ENR_SUPPRESS "suppressor:mask_lf_enr_suppress"
-#define AEC_SUPPRESSOR_MASK_LF_ENR_SUPPRESS_VALUE .3f
-#define AEC_SUPPRESSOR_MASK_LF_EMR_TRANSPARENT "suppressor:mask_lf_emr_transparent"
-#define AEC_SUPPRESSOR_MASK_LF_EMR_TRANSPARENT_VALUE .3f
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_LF_ENR_TRANSPARENT \
+ "suppressor.normal_tuning:mask_lf_enr_transparent"
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_LF_ENR_TRANSPARENT_VALUE .2f
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_LF_ENR_SUPPRESS \
+ "suppressor.normal_tuning:mask_lf_enr_suppress"
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_LF_ENR_SUPPRESS_VALUE .3f
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_LF_EMR_TRANSPARENT \
+ "suppressor.normal_tuning:mask_lf_emr_transparent"
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_LF_EMR_TRANSPARENT_VALUE .3f
+
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_HF_ENR_TRANSPARENT \
+ "suppressor.normal_tuning:mask_hf_enr_transparent"
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_HF_ENR_TRANSPARENT_VALUE .07f
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_HF_ENR_SUPPRESS \
+ "suppressor.normal_tuning:mask_hf_enr_suppress"
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_HF_ENR_SUPPRESS_VALUE .1f
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_HF_EMR_TRANSPARENT \
+ "suppressor.normal_tuning:mask_hf_emr_transparent"
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MASK_HF_EMR_TRANSPARENT_VALUE .3f
+
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MAX_INC_FACTOR \
+ "suppressor.normal_tuning:max_inc_factor"
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MAX_INC_FACTOR_VALUE 2.0f
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MAX_DEC_FACTOR_LF \
+ "suppressor.normal_tuning:max_dec_factor_lf"
+#define AEC_SUPPRESSOR_NORMAL_TUNING_MAX_DEC_FACTOR_LF_VALUE 0.25f
+
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_LF_ENR_TRANSPARENT \
+ "suppressor.nearend_tuning:mask_lf_enr_transparent"
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_LF_ENR_TRANSPARENT_VALUE .2f
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_LF_ENR_SUPPRESS \
+ "suppressor.nearend_tuning:mask_lf_enr_suppress"
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_LF_ENR_SUPPRESS_VALUE .3f
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_LF_EMR_TRANSPARENT \
+ "suppressor.nearend_tuning:mask_lf_emr_transparent"
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_LF_EMR_TRANSPARENT_VALUE .3f
+
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_HF_ENR_TRANSPARENT \
+ "suppressor.nearend_tuning:mask_hf_enr_transparent"
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_HF_ENR_TRANSPARENT_VALUE .07f
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_HF_ENR_SUPPRESS \
+ "suppressor.nearend_tuning:mask_hf_enr_suppress"
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_HF_ENR_SUPPRESS_VALUE .1f
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_HF_EMR_TRANSPARENT \
+ "suppressor.nearend_tuning:mask_hf_emr_transparent"
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MASK_HF_EMR_TRANSPARENT_VALUE .3f
+
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MAX_INC_FACTOR \
+ "suppressor.nearend_tuning:max_inc_factor"
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MAX_INC_FACTOR_VALUE 2.0f
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MAX_DEC_FACTOR_LF \
+ "suppressor.nearend_tuning:max_dec_factor_lf"
+#define AEC_SUPPRESSOR_NEAREND_TUNING_MAX_DEC_FACTOR_LF_VALUE 0.25f
+
+#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_ENR_THRESHOLD \
+ "suppressor.dominant_nearend_detection:enr_threshold"
+#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_ENR_THRESHOLD_VALUE 10.f
+#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_SNR_THRESHOLD \
+ "suppressor.dominant_nearend_detection:snr_threshold"
+#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_SNR_THRESHOLD_VALUE 10.f
+#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_HOLD_DURATION \
+ "suppressor.dominant_nearend_detection:hold_duration"
+#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_HOLD_DURATION_VALUE 25
+#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_TRIGGER_THRESHOLD \
+ "suppressor.dominant_nearend_detection:trigger_threshold"
+#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_TRIGGER_THRESHOLD_VALUE 15
+
+#define AEC_SUPPRESSOR_HIGH_BANDS_SUPPRESSION_ENR_THRESHOLD \
+ "suppressor.high_bands_suppression:enr_threshold"
+#define AEC_SUPPRESSOR_HIGH_BANDS_SUPPRESSION_ENR_THRESHOLD_VALUE 1.f
+#define AEC_SUPPRESSOR_HIGH_BANDS_SUPPRESSION_MAX_GAIN_DURING_ECHO \
+ "suppressor.high_bands_suppression:max_gain_during_echo"
+#define AEC_SUPPRESSOR_HIGH_BANDS_SUPPRESSION_MAX_GAIN_DURING_ECHO_VALUE 1.f
-#define AEC_SUPPRESSOR_MASK_HF_ENR_TRANSPARENT "suppressor:mask_hf_enr_transparent"
-#define AEC_SUPPRESSOR_MASK_HF_ENR_TRANSPARENT_VALUE .07f
-#define AEC_SUPPRESSOR_MASK_HF_ENR_SUPPRESS "suppressor:mask_hf_enr_suppress"
-#define AEC_SUPPRESSOR_MASK_HF_ENR_SUPPRESS_VALUE .1f
-#define AEC_SUPPRESSOR_MASK_HF_EMR_TRANSPARENT "suppressor:mask_hf_emr_transparent"
-#define AEC_SUPPRESSOR_MASK_HF_EMR_TRANSPARENT_VALUE .3f
+#define AEC_SUPPRESSOR_FLOOR_FIRST_INCREASE "suppressor:floor_first_increase"
+#define AEC_SUPPRESSOR_FLOOR_FIRST_INCREASE_VALUE 0.00001f
+#define AEC_SUPPRESSOR_ENFORCE_TRANSPARENT "suppressor:enforce_transparent"
+#define AEC_SUPPRESSOR_ENFORCE_TRANSPARENT_VALUE 0
+#define AEC_SUPPRESSOR_ENFORCE_EMPTY_HIGHER_BANDS \
+ "suppressor:enforce_empty_higher_bands"
+#define AEC_SUPPRESSOR_ENFORCE_EMPTY_HIGHER_BANDS_VALUE 0
-/* */
+/* Gets the aec config from given config directory. */
struct aec_config *aec_config_get(const char *device_config_dir);
-/* */
+/* Prints the config content to syslog. */
void aec_config_dump(struct aec_config *config);
#endif /* AEC_CONFIG_H_ */