| /* Copyright 2018 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include <syslog.h> |
| |
| #include "aec_config.h" |
| |
| #define AEC_CONFIG_NAME "aec.ini" |
| |
| #define AEC_GET_INT(ini, category, key) \ |
| iniparser_getint( \ |
| ini, AEC_ ## category ## _ ## key, \ |
| AEC_ ## category ## _ ## key ## _VALUE) |
| |
| #define AEC_GET_FLOAT(ini, category, key) \ |
| iniparser_getdouble( \ |
| ini, AEC_ ## category ## _ ## key, \ |
| AEC_ ## category ## _ ## key ## _VALUE) |
| |
| void aec_config_get(dictionary *ini, webrtc::EchoCanceller3Config *config) |
| { |
| if (ini == NULL) |
| return; |
| |
| config->buffering.excess_render_detection_interval_blocks = |
| AEC_GET_INT(ini, BUFFERING, |
| EXCESS_RENDER_DETECTION_INTERVAL_BLOCKS); |
| config->buffering.max_allowed_excess_render_blocks = |
| AEC_GET_INT(ini, BUFFERING, MAX_ALLOWED_EXCESS_RENDER_BLOCKS); |
| |
| config->delay.default_delay = |
| AEC_GET_INT(ini, DELAY, DEFAULT_DELAY); |
| config->delay.down_sampling_factor = |
| AEC_GET_INT(ini, DELAY, DOWN_SAMPLING_FACTOR); |
| config->delay.num_filters = |
| AEC_GET_INT(ini, DELAY, NUM_FILTERS); |
| config->delay.delay_headroom_samples = |
| AEC_GET_INT(ini, DELAY, DELAY_HEADROOM_SAMPLES); |
| config->delay.hysteresis_limit_blocks = |
| AEC_GET_INT(ini, DELAY, HYSTERESIS_LIMIT_BLOCKS); |
| config->delay.fixed_capture_delay_samples = |
| AEC_GET_INT(ini, DELAY, FIXED_CAPTURE_DELAY_SAMPLES); |
| config->delay.delay_estimate_smoothing = |
| AEC_GET_FLOAT(ini, DELAY, DELAY_ESTIMATE_SMOOTHING); |
| config->delay.delay_candidate_detection_threshold = |
| AEC_GET_FLOAT(ini, DELAY, DELAY_CANDIDATE_DETECTION_THRESHOLD); |
| config->delay.delay_selection_thresholds.initial = |
| AEC_GET_INT(ini, DELAY, DELAY_SELECTION_THRESHOLD_INITIAL); |
| config->delay.delay_selection_thresholds.converged = |
| AEC_GET_INT(ini, DELAY, DELAY_SELECTION_THRESHOLD_CONVERGED); |
| config->delay.use_external_delay_estimator = |
| AEC_GET_INT(ini, DELAY, USE_EXTERNAL_DELAY_ESTIMATOR); |
| |
| config->delay.log_warning_on_delay_changes = |
| AEC_GET_INT(ini, DELAY, LOG_WARNING_ON_DELAY_CHANGES); |
| config->delay.render_alignment_mixing.downmix = |
| AEC_GET_INT(ini, DELAY, RENDER_ALIGNMENT_MIXING_DOWNMIX); |
| config->delay.render_alignment_mixing.adaptive_selection = |
| AEC_GET_INT(ini, DELAY, RENDER_ALIGNMENT_MIXING_ADAPTIVE_SELECTION); |
| config->delay.render_alignment_mixing.activity_power_threshold = |
| AEC_GET_FLOAT(ini, DELAY, |
| RENDER_ALIGNMENT_MIXING_ACTIVITY_POWER_THRESHOLD); |
| config->delay.render_alignment_mixing.prefer_first_two_channels = |
| AEC_GET_INT(ini, DELAY, |
| RENDER_ALIGNMENT_MIXING_PREFER_FIRST_TWO_CHANNELS); |
| config->delay.capture_alignment_mixing.downmix = |
| AEC_GET_INT(ini, DELAY, CAPTURE_ALIGNMENT_MIXING_DOWNMIX); |
| config->delay.capture_alignment_mixing.adaptive_selection = |
| AEC_GET_INT(ini, DELAY, CAPTURE_ALIGNMENT_MIXING_ADAPTIVE_SELECTION); |
| config->delay.capture_alignment_mixing.activity_power_threshold = |
| AEC_GET_FLOAT(ini, DELAY, |
| CAPTURE_ALIGNMENT_MIXING_ACTIVITY_POWER_THRESHOLD); |
| config->delay.capture_alignment_mixing.prefer_first_two_channels = |
| AEC_GET_INT(ini, DELAY, |
| CAPTURE_ALIGNMENT_MIXING_PREFER_FIRST_TWO_CHANNELS); |
| |
| config->filter.refined.length_blocks = |
| AEC_GET_INT(ini, FILTER_REFINED, LENGTH_BLOCKS); |
| config->filter.refined.leakage_converged = |
| AEC_GET_FLOAT(ini, FILTER_REFINED, LEAKAGE_CONVERGED); |
| config->filter.refined.leakage_diverged = |
| AEC_GET_FLOAT(ini, FILTER_REFINED, LEAKAGE_DIVERGED); |
| config->filter.refined.error_floor = |
| AEC_GET_FLOAT(ini, FILTER_REFINED, ERROR_FLOOR); |
| config->filter.refined.error_ceil = |
| AEC_GET_FLOAT(ini, FILTER_REFINED, ERROR_CEIL); |
| config->filter.refined.noise_gate = |
| AEC_GET_FLOAT(ini, FILTER_REFINED, NOISE_GATE); |
| |
| config->filter.coarse.length_blocks = |
| AEC_GET_INT(ini, FILTER_COARSE, LENGTH_BLOCKS); |
| config->filter.coarse.rate = |
| AEC_GET_FLOAT(ini, FILTER_COARSE, RATE); |
| config->filter.coarse.noise_gate = |
| AEC_GET_FLOAT(ini, FILTER_COARSE, NOISE_GATE); |
| |
| config->filter.refined_initial.length_blocks = |
| AEC_GET_INT(ini, FILTER_REFINED_INIT, LENGTH_BLOCKS); |
| config->filter.refined_initial.leakage_converged = |
| AEC_GET_FLOAT(ini, FILTER_REFINED_INIT, LEAKAGE_CONVERGED); |
| config->filter.refined_initial.leakage_diverged = |
| AEC_GET_FLOAT(ini, FILTER_REFINED_INIT, LEAKAGE_DIVERGED); |
| config->filter.refined_initial.error_floor = |
| AEC_GET_FLOAT(ini, FILTER_REFINED_INIT, ERROR_FLOOR); |
| config->filter.refined_initial.error_ceil = |
| AEC_GET_FLOAT(ini, FILTER_REFINED_INIT, ERROR_CEIL); |
| config->filter.refined_initial.noise_gate = |
| AEC_GET_FLOAT(ini, FILTER_REFINED_INIT, NOISE_GATE); |
| |
| config->filter.coarse_initial.length_blocks = |
| AEC_GET_INT(ini, FILTER_COARSE_INIT, LENGTH_BLOCKS); |
| config->filter.coarse_initial.rate = |
| AEC_GET_FLOAT(ini, FILTER_COARSE_INIT, RATE); |
| config->filter.coarse_initial.noise_gate = |
| AEC_GET_FLOAT(ini, FILTER_COARSE_INIT, NOISE_GATE); |
| |
| 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.coarse_reset_hangover_blocks = |
| AEC_GET_INT(ini, FILTER, COARSE_RESET_HANGOVER_BLOCKS);; |
| config->filter.conservative_initial_phase = |
| AEC_GET_INT(ini, FILTER, CONSERVATIVE_INITIAL_PHASE); |
| config->filter.enable_coarse_filter_output_usage = |
| AEC_GET_INT(ini, FILTER, ENABLE_COARSE_FILTER_OUTPUT_USAGE); |
| config->filter.use_linear_filter = |
| AEC_GET_INT(ini, FILTER, USE_LINEAR_FILTER); |
| config->filter.export_linear_aec_output = |
| AEC_GET_INT(ini, FILTER, EXPORT_LINEAR_AEC_OUTPUT); |
| |
| config->erle.min = |
| AEC_GET_FLOAT(ini, ERLE, MIN); |
| config->erle.max_l = |
| 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->erle.num_sections = |
| AEC_GET_INT(ini, ERLE, NUM_SECTIONS); |
| config->erle.clamp_quality_estimate_to_zero = |
| AEC_GET_INT(ini, ERLE, CLAMP_QUALITY_ESTIMATE_TO_ZERO); |
| config->erle.clamp_quality_estimate_to_one = |
| AEC_GET_INT(ini, ERLE, CLAMP_QUALITY_ESTIMATE_TO_ONE); |
| |
| config->ep_strength.default_gain = |
| AEC_GET_FLOAT(ini, EP_STRENGTH, DEFAULT_GAIN); |
| config->ep_strength.default_len = |
| AEC_GET_FLOAT(ini, EP_STRENGTH, DEFAULT_LEN); |
| config->ep_strength.bounded_erl = |
| AEC_GET_INT(ini, EP_STRENGTH, BOUNDED_ERL); |
| config->ep_strength.echo_can_saturate = |
| AEC_GET_INT(ini, EP_STRENGTH, ECHO_CAN_SATURATE); |
| |
| config->echo_audibility.low_render_limit = |
| AEC_GET_FLOAT(ini, ECHO_AUDIBILITY, LOW_RENDER_LIMIT); |
| config->echo_audibility.normal_render_limit = |
| AEC_GET_FLOAT(ini, ECHO_AUDIBILITY, NORMAL_RENDER_LIMIT); |
| config->echo_audibility.floor_power = |
| AEC_GET_FLOAT(ini, ECHO_AUDIBILITY, FLOOR_POWER); |
| config->echo_audibility.audibility_threshold_lf = |
| AEC_GET_FLOAT(ini, ECHO_AUDIBILITY, AUDIBILITY_THRESHOLD_LF); |
| config->echo_audibility.audibility_threshold_mf = |
| AEC_GET_FLOAT(ini, ECHO_AUDIBILITY, AUDIBILITY_THRESHOLD_MF); |
| config->echo_audibility.audibility_threshold_hf = |
| AEC_GET_FLOAT(ini, ECHO_AUDIBILITY, AUDIBILITY_THRESHOLD_HF); |
| config->echo_audibility.use_stationarity_properties = |
| AEC_GET_INT(ini, ECHO_AUDIBILITY, USE_STATIONARITY_PROPERTIES); |
| config->echo_audibility.use_stationarity_properties_at_init = |
| AEC_GET_INT(ini, ECHO_AUDIBILITY, |
| USE_STATIONARITY_PROPERTIES_AT_INIT); |
| |
| config->render_levels.active_render_limit = |
| AEC_GET_FLOAT(ini, RENDER_LEVELS, ACTIVE_RENDER_LIMIT); |
| config->render_levels.poor_excitation_render_limit = |
| AEC_GET_FLOAT(ini, RENDER_LEVELS, POOR_EXCITATION_RENDER_LIMIT); |
| config->render_levels.poor_excitation_render_limit_ds8 = |
| AEC_GET_FLOAT(ini, RENDER_LEVELS, POOR_EXCITATION_RENDER_LIMIT_DS8); |
| config->render_levels.render_power_gain_db = |
| AEC_GET_FLOAT(ini, RENDER_LEVELS, RENDER_POWER_GAIN_DB); |
| |
| config->echo_removal_control.has_clock_drift = |
| AEC_GET_INT(ini, ECHO_REMOVAL_CTL, HAS_CLOCK_DRIFT); |
| config->echo_removal_control.linear_and_stable_echo_path = |
| AEC_GET_INT(ini, ECHO_REMOVAL_CTL, LINEAR_AND_STABLE_ECHO_PATH); |
| |
| config->echo_model.noise_floor_hold = |
| AEC_GET_INT(ini, ECHO_MODEL, NOISE_FLOOR_HOLD); |
| config->echo_model.min_noise_floor_power = |
| AEC_GET_FLOAT(ini, ECHO_MODEL, MIN_NOISE_FLOOR_POWER); |
| config->echo_model.stationary_gate_slope = |
| AEC_GET_FLOAT(ini, ECHO_MODEL, STATIONARY_GATE_SLOPE); |
| config->echo_model.noise_gate_power = |
| AEC_GET_FLOAT(ini, ECHO_MODEL, NOISE_GATE_POWER); |
| config->echo_model.noise_gate_slope = |
| AEC_GET_FLOAT(ini, ECHO_MODEL, NOISE_GATE_SLOPE); |
| config->echo_model.render_pre_window_size = |
| AEC_GET_INT(ini, ECHO_MODEL, RENDER_PRE_WINDOW_SIZE); |
| config->echo_model.render_post_window_size = |
| AEC_GET_INT(ini, ECHO_MODEL, RENDER_POST_WINDOW_SIZE); |
| config->echo_model.model_reverb_in_nonlinear_mode = |
| AEC_GET_INT(ini, ECHO_MODEL, MODEL_REVERB_IN_NONLINEAR_MODE); |
| |
| config->comfort_noise.noise_floor_dbfs = |
| AEC_GET_FLOAT(ini, COMFORT_NOISE, NOISE_FLOOR_DBFS); |
| |
| config->suppressor.nearend_average_blocks = |
| AEC_GET_INT(ini, SUPPRESSOR, NEAREND_AVERAGE_BLOCKS); |
| |
| 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.enr_exit_threshold = |
| AEC_GET_FLOAT(ini, SUPPRESSOR_DOMINANT_NEAREND_DETECTION, |
| ENR_EXIT_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.dominant_nearend_detection.use_during_initial_phase = |
| AEC_GET_INT(ini, SUPPRESSOR_DOMINANT_NEAREND_DETECTION, |
| USE_DURING_INITIAL_PHASE); |
| |
| config->suppressor.subband_nearend_detection.nearend_average_blocks = |
| AEC_GET_INT(ini, SUPPRESSOR_SUBBAND_NEAREND_DETECTION, |
| NEAREND_AVERAGE_BLOCKS); |
| config->suppressor.subband_nearend_detection.subband1.low = |
| AEC_GET_INT(ini, SUPPRESSOR_SUBBAND_NEAREND_DETECTION, |
| SUBBAND1_LOW); |
| config->suppressor.subband_nearend_detection.subband1.high = |
| AEC_GET_INT(ini, SUPPRESSOR_SUBBAND_NEAREND_DETECTION, |
| SUBBAND1_HIGH); |
| config->suppressor.subband_nearend_detection.subband2.low = |
| AEC_GET_INT(ini, SUPPRESSOR_SUBBAND_NEAREND_DETECTION, |
| SUBBAND2_LOW); |
| config->suppressor.subband_nearend_detection.subband2.high = |
| AEC_GET_INT(ini, SUPPRESSOR_SUBBAND_NEAREND_DETECTION, |
| SUBBAND2_HIGH); |
| config->suppressor.subband_nearend_detection.nearend_threshold = |
| AEC_GET_FLOAT(ini, SUPPRESSOR_SUBBAND_NEAREND_DETECTION, |
| NEAREND_THRESHOLD); |
| config->suppressor.subband_nearend_detection.snr_threshold = |
| AEC_GET_FLOAT(ini, SUPPRESSOR_SUBBAND_NEAREND_DETECTION, |
| SNR_THRESHOLD); |
| |
| config->suppressor.use_subband_nearend_detection = |
| AEC_GET_INT(ini, SUPPRESSOR, USE_SUBBAND_NEAREND_DETECTION); |
| |
| 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.high_bands_suppression.anti_howling_activation_threshold = |
| AEC_GET_FLOAT(ini, SUPPRESSOR_HIGH_BANDS_SUPPRESSION, |
| ANTI_HOWLING_ACTIVATION_THRESHOLD); |
| config->suppressor.high_bands_suppression.anti_howling_gain = |
| AEC_GET_FLOAT(ini, SUPPRESSOR_HIGH_BANDS_SUPPRESSION, |
| ANTI_HOWLING_GAIN); |
| |
| config->suppressor.floor_first_increase = |
| AEC_GET_FLOAT(ini, SUPPRESSOR, FLOOR_FIRST_INCREASE); |
| |
| config->suppressor.conservative_hf_suppression = |
| AEC_GET_INT(ini, SUPPRESSOR, CONSERVATIVE_HF_SUPPRESSION); |
| } |
| |
| void aec_config_dump(dictionary *ini) |
| { |
| webrtc::EchoCanceller3Config config; |
| |
| aec_config_get(ini, &config); |
| |
| syslog(LOG_ERR, "---- aec config dump ----"); |
| syslog(LOG_ERR, "Buffering:"); |
| syslog(LOG_ERR, " excess_render_detection_interval_blocks %zu", |
| config.buffering.excess_render_detection_interval_blocks); |
| syslog(LOG_ERR, " max_allowed_excess_render_blocks %zu", |
| config.buffering.max_allowed_excess_render_blocks); |
| |
| syslog(LOG_ERR, "Delay:"); |
| syslog(LOG_ERR, " default_delay %zu sampling_factor %zu num_filters %zu", |
| config.delay.default_delay, |
| config.delay.down_sampling_factor, |
| config.delay.num_filters); |
| syslog(LOG_ERR, " delay_headroom_samples %zu, hysteresis_limit_blocks %zu", |
| config.delay.delay_headroom_samples, |
| config.delay.hysteresis_limit_blocks); |
| syslog(LOG_ERR, " fixed_capture_delay_samples %zu", |
| config.delay.fixed_capture_delay_samples); |
| syslog(LOG_ERR, " delay_estimate_smoothing %f", |
| config.delay.delay_estimate_smoothing); |
| syslog(LOG_ERR, " delay_candidate_detection_threshold %f", |
| config.delay.delay_candidate_detection_threshold); |
| syslog(LOG_ERR, " delay_selection_thresholds.initial %d", |
| config.delay.delay_selection_thresholds.initial); |
| syslog(LOG_ERR, " delay_selection_thresholds.converged %d", |
| config.delay.delay_selection_thresholds.converged); |
| syslog(LOG_ERR, " use_external_delay_estimator %d", |
| config.delay.use_external_delay_estimator); |
| syslog(LOG_ERR, " log_warning_on_delay_changes %d", |
| config.delay.log_warning_on_delay_changes); |
| syslog(LOG_ERR, " render_alignment_mixing.downmix %d", |
| config.delay.render_alignment_mixing.downmix); |
| syslog(LOG_ERR, " render_alignment_mixing.adaptive_selection %d", |
| config.delay.render_alignment_mixing.adaptive_selection); |
| syslog(LOG_ERR, " render_alignment_mixing.activity_power_threshold %f", |
| config.delay.render_alignment_mixing.activity_power_threshold); |
| syslog(LOG_ERR, " render_alignment_mixing.prefer_first_two_channels %d", |
| config.delay.render_alignment_mixing.prefer_first_two_channels); |
| syslog(LOG_ERR, " capture_alignment_mixing.downmix %d", |
| config.delay.capture_alignment_mixing.downmix); |
| syslog(LOG_ERR, " capture_alignment_mixing.adaptive_selection %d", |
| config.delay.capture_alignment_mixing.adaptive_selection); |
| syslog(LOG_ERR, " capture_alignment_mixing.activity_power_threshold %f", |
| config.delay.capture_alignment_mixing.activity_power_threshold); |
| syslog(LOG_ERR, " capture_alignment_mixing.prefer_first_two_channels %d", |
| config.delay.capture_alignment_mixing.prefer_first_two_channels); |
| |
| syslog(LOG_ERR, "Filter refined configuration:"); |
| syslog(LOG_ERR, " length_blocks %zu, leakage_converged %f, leakage_diverged %f", |
| config.filter.refined.length_blocks, |
| config.filter.refined.leakage_converged, |
| config.filter.refined.leakage_diverged); |
| syslog(LOG_ERR, " error_floor %f, error_ceil %f, noise_gate %f", |
| config.filter.refined.error_floor, |
| config.filter.refined.error_ceil, |
| config.filter.refined.noise_gate); |
| syslog(LOG_ERR, "Filter coarse configuration:"); |
| syslog(LOG_ERR, " length_blocks %zu, rate %f, noise_gate %f", |
| config.filter.coarse.length_blocks, |
| config.filter.coarse.rate, |
| config.filter.coarse.noise_gate); |
| syslog(LOG_ERR, "Filter refined initial configuration:"); |
| syslog(LOG_ERR, " length_blocks %zu, leakage_converged %f leakage_diverged %f", |
| config.filter.refined_initial.length_blocks, |
| config.filter.refined_initial.leakage_converged, |
| config.filter.refined_initial.leakage_diverged); |
| syslog(LOG_ERR, " error_floor %f, error_ceil %f, noise_gate %f", |
| config.filter.refined_initial.error_floor, |
| config.filter.refined_initial.error_ceil, |
| config.filter.refined_initial.noise_gate); |
| syslog(LOG_ERR, "Filter coarse initial configuration:"); |
| syslog(LOG_ERR, " length_blocks %zu, rate %f, noise_gate %f", |
| config.filter.coarse_initial.length_blocks, |
| config.filter.coarse_initial.rate, |
| config.filter.coarse_initial.noise_gate); |
| syslog(LOG_ERR, "Filter: config_change_duration_blocks %zd", |
| config.filter.config_change_duration_blocks); |
| syslog(LOG_ERR, " initial_state_seconds %f", |
| config.filter.initial_state_seconds); |
| |
| syslog(LOG_ERR, " coarse_reset_hangover_blocks %d", |
| config.filter.coarse_reset_hangover_blocks); |
| syslog(LOG_ERR, " conservative_initial_phase %d", |
| config.filter.conservative_initial_phase); |
| syslog(LOG_ERR, " enable_coarse_filter_output_usage %d", |
| config.filter.enable_coarse_filter_output_usage); |
| syslog(LOG_ERR, " use_linear_filter %d", |
| config.filter.use_linear_filter); |
| syslog(LOG_ERR, " export_linear_aec_output %d", |
| config.filter.export_linear_aec_output); |
| |
| 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.onset_detection); |
| syslog(LOG_ERR, " num_sections %zu clamp_quality_estimate_to_zero %d", |
| config.erle.num_sections, |
| config.erle.clamp_quality_estimate_to_zero); |
| syslog(LOG_ERR, " clamp_quality_estimate_to_one %d", |
| config.erle.clamp_quality_estimate_to_one); |
| |
| syslog(LOG_ERR, "Ep strength: default_gain %f default_len %f", |
| config.ep_strength.default_gain, |
| config.ep_strength.default_len); |
| syslog(LOG_ERR, " echo_can_saturate %d, bounded_erl %d,", |
| config.ep_strength.echo_can_saturate, |
| config.ep_strength.bounded_erl); |
| syslog(LOG_ERR, "Echo audibility:"); |
| syslog(LOG_ERR, " low_render_limit %f, normal_render_limit %f", |
| config.echo_audibility.low_render_limit, |
| config.echo_audibility.normal_render_limit); |
| syslog(LOG_ERR, " floor_power %f, audibility_threshold_lf %f", |
| config.echo_audibility.floor_power, |
| config.echo_audibility.audibility_threshold_lf); |
| syslog(LOG_ERR, " audibility_threshold_mf %f", |
| config.echo_audibility.audibility_threshold_mf); |
| syslog(LOG_ERR, " audibility_threshold_hf %f", |
| config.echo_audibility.audibility_threshold_hf); |
| syslog(LOG_ERR, " use_stationarity_properties %d", |
| config.echo_audibility.use_stationarity_properties); |
| syslog(LOG_ERR, " use_stationarity_properties_at_init %d", |
| config.echo_audibility.use_stationarity_properties_at_init); |
| |
| syslog(LOG_ERR, "Render levels:"); |
| syslog(LOG_ERR, " active_render_limit %f", |
| config.render_levels.active_render_limit); |
| syslog(LOG_ERR, " poor_excitation_render_limit %f", |
| 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, " render_power_gain_db %f", |
| config.render_levels.render_power_gain_db); |
| syslog(LOG_ERR, "Echo removal control:"); |
| syslog(LOG_ERR, " gain rampup:"); |
| syslog(LOG_ERR, " has_clock_drift %d", |
| config.echo_removal_control.has_clock_drift); |
| syslog(LOG_ERR, " linear_and_stable_echo_path %d", |
| config.echo_removal_control.linear_and_stable_echo_path); |
| syslog(LOG_ERR, "Echo model:"); |
| syslog(LOG_ERR, " noise_floor_hold %zu, min_noise_floor_power %f", |
| config.echo_model.noise_floor_hold, |
| config.echo_model.min_noise_floor_power); |
| syslog(LOG_ERR, " stationary_gate_slope %f, noise_gate_power %f", |
| config.echo_model.stationary_gate_slope, |
| config.echo_model.noise_gate_power); |
| syslog(LOG_ERR, " noise_gate_slope %f, render_pre_window_size %zu", |
| config.echo_model.noise_gate_slope, |
| config.echo_model.render_pre_window_size); |
| syslog(LOG_ERR, "Suppressor:"); |
| syslog(LOG_ERR, " nearend_average_blocks %zu", |
| config.suppressor.nearend_average_blocks); |
| 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, " enr_exit_threshold %f", |
| config.suppressor.dominant_nearend_detection.enr_exit_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, " use_during_initial_phase %d", |
| config.suppressor.dominant_nearend_detection.use_during_initial_phase); |
| syslog(LOG_ERR, " Subband nearend detection:"); |
| syslog(LOG_ERR, " nearend_average_blocks %zu", |
| config.suppressor.subband_nearend_detection.nearend_average_blocks); |
| syslog(LOG_ERR, " subband1.low %zu subband1.high %zu", |
| config.suppressor.subband_nearend_detection.subband1.low, |
| config.suppressor.subband_nearend_detection.subband1.high); |
| syslog(LOG_ERR, " subband2.low %zu subband2.high %zu", |
| config.suppressor.subband_nearend_detection.subband2.low, |
| config.suppressor.subband_nearend_detection.subband2.high); |
| syslog(LOG_ERR, " nearend_threshold %f snr_threshold %f", |
| config.suppressor.subband_nearend_detection.nearend_threshold, |
| config.suppressor.subband_nearend_detection.snr_threshold); |
| syslog(LOG_ERR, " use_subband_nearend_detection %d", |
| config.suppressor.use_subband_nearend_detection); |
| |
| 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, " anti_howling_activation_threshold %f", |
| config.suppressor.high_bands_suppression.anti_howling_activation_threshold); |
| syslog(LOG_ERR, " anti_howling_gain %f", |
| config.suppressor.high_bands_suppression.anti_howling_gain); |
| syslog(LOG_ERR, " floor_first_increase %f", |
| config.suppressor.floor_first_increase); |
| syslog(LOG_ERR, " conservative_hf_suppression %d", |
| config.suppressor.conservative_hf_suppression); |
| } |