blob: fcf4f560f035a6665bd9e639713200e30311ff3c [file] [log] [blame]
/* 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.
*/
#ifndef AEC_CONFIG_H_
#define AEC_CONFIG_H_
#include <iniparser.h>
#include "api/audio/echo_canceller3_config.h"
#define AEC_BUFFERING_EXCESS_RENDER_DETECTION_INTERVAL_BLOCKS \
"buffering:excess_render_detection_interval_blocks"
#define AEC_BUFFERING_EXCESS_RENDER_DETECTION_INTERVAL_BLOCKS_VALUE 250
#define AEC_BUFFERING_MAX_ALLOWED_EXCESS_RENDER_BLOCKS \
"buffering:max_allowed_excess_render_blocks"
#define AEC_BUFFERING_MAX_ALLOWED_EXCESS_RENDER_BLOCKS_VALUE 8
#define AEC_DELAY_DEFAULT_DELAY "delay:default_delay"
#define AEC_DELAY_DEFAULT_DELAY_VALUE 5
#define AEC_DELAY_DOWN_SAMPLING_FACTOR "delay:down_sampling_factor"
#define AEC_DELAY_DOWN_SAMPLING_FACTOR_VALUE 4
#define AEC_DELAY_NUM_FILTERS "delay:num_filters"
#define AEC_DELAY_NUM_FILTERS_VALUE 5
#define AEC_DELAY_DELAY_HEADROOM_SAMPLES "delay:delay_headroom_samples"
#define AEC_DELAY_DELAY_HEADROOM_SAMPLES_VALUE 32
#define AEC_DELAY_HYSTERESIS_LIMIT_BLOCKS "delay:hysteresis_limit_blocks"
#define AEC_DELAY_HYSTERESIS_LIMIT_BLOCKS_VALUE 1
#define AEC_DELAY_FIXED_CAPTURE_DELAY_SAMPLES \
"delay:fixed_capture_delay_samples"
#define AEC_DELAY_FIXED_CAPTURE_DELAY_SAMPLES_VALUE 0
#define AEC_DELAY_DELAY_ESTIMATE_SMOOTHING "delay:delay_estimate_smoothing"
#define AEC_DELAY_DELAY_ESTIMATE_SMOOTHING_VALUE 0.7f
#define AEC_DELAY_DELAY_CANDIDATE_DETECTION_THRESHOLD \
"delay:delay_candidate_detection_threshold"
#define AEC_DELAY_DELAY_CANDIDATE_DETECTION_THRESHOLD_VALUE 0.2f
#define AEC_DELAY_DELAY_SELECTION_THRESHOLD_INITIAL \
"delay:delay_selection_thresholds_initial"
#define AEC_DELAY_DELAY_SELECTION_THRESHOLD_INITIAL_VALUE 5
#define AEC_DELAY_DELAY_SELECTION_THRESHOLD_CONVERGED \
"delay:delay_selection_thresholds_converged"
#define AEC_DELAY_DELAY_SELECTION_THRESHOLD_CONVERGED_VALUE 20
#define AEC_DELAY_USE_EXTERNAL_DELAY_ESTIMATOR \
"delay:use_external_delay_estimator"
#define AEC_DELAY_USE_EXTERNAL_DELAY_ESTIMATOR_VALUE 0
#define AEC_DELAY_LOG_WARNING_ON_DELAY_CHANGES \
"delay:log_warning_on_delay_changes"
#define AEC_DELAY_LOG_WARNING_ON_DELAY_CHANGES_VALUE 0
#define AEC_DELAY_RENDER_ALIGNMENT_MIXING_DOWNMIX \
"delay:render_alignment_mixing_downmix"
#define AEC_DELAY_RENDER_ALIGNMENT_MIXING_DOWNMIX_VALUE 0
#define AEC_DELAY_RENDER_ALIGNMENT_MIXING_ADAPTIVE_SELECTION \
"delay:render_alignment_mixing_adaptive_selection"
#define AEC_DELAY_RENDER_ALIGNMENT_MIXING_ADAPTIVE_SELECTION_VALUE 1
#define AEC_DELAY_RENDER_ALIGNMENT_MIXING_ACTIVITY_POWER_THRESHOLD \
"delay:render_alignment_mixing_activity_power_threshold"
#define AEC_DELAY_RENDER_ALIGNMENT_MIXING_ACTIVITY_POWER_THRESHOLD_VALUE 10000.f
#define AEC_DELAY_RENDER_ALIGNMENT_MIXING_PREFER_FIRST_TWO_CHANNELS \
"delay:render_alignment_mixing_prefer_first_two_channels"
#define AEC_DELAY_RENDER_ALIGNMENT_MIXING_PREFER_FIRST_TWO_CHANNELS_VALUE 1
#define AEC_DELAY_CAPTURE_ALIGNMENT_MIXING_DOWNMIX \
"delay:capture_alignment_mixing_downmix"
#define AEC_DELAY_CAPTURE_ALIGNMENT_MIXING_DOWNMIX_VALUE 0
#define AEC_DELAY_CAPTURE_ALIGNMENT_MIXING_ADAPTIVE_SELECTION \
"delay:capture_alignment_mixing_adaptive_selection"
#define AEC_DELAY_CAPTURE_ALIGNMENT_MIXING_ADAPTIVE_SELECTION_VALUE 1
#define AEC_DELAY_CAPTURE_ALIGNMENT_MIXING_ACTIVITY_POWER_THRESHOLD \
"delay:capture_alignment_mixing_activity_power_threshold"
#define AEC_DELAY_CAPTURE_ALIGNMENT_MIXING_ACTIVITY_POWER_THRESHOLD_VALUE 10000.f
#define AEC_DELAY_CAPTURE_ALIGNMENT_MIXING_PREFER_FIRST_TWO_CHANNELS \
"delay:capture_alignment_mixing_prefer_first_two_channels"
#define AEC_DELAY_CAPTURE_ALIGNMENT_MIXING_PREFER_FIRST_TWO_CHANNELS_VALUE 0
// Filter refined configuration
#define AEC_FILTER_REFINED_LENGTH_BLOCKS "filter.refined:length_blocks"
#define AEC_FILTER_REFINED_LENGTH_BLOCKS_VALUE 13
#define AEC_FILTER_REFINED_LEAKAGE_CONVERGED "filter.refined:leakage_converged"
#define AEC_FILTER_REFINED_LEAKAGE_CONVERGED_VALUE 0.00005f
#define AEC_FILTER_REFINED_LEAKAGE_DIVERGED "filter.refined:leakage_diverged"
#define AEC_FILTER_REFINED_LEAKAGE_DIVERGED_VALUE 0.05f
#define AEC_FILTER_REFINED_ERROR_FLOOR "filter.refined:error_floor"
#define AEC_FILTER_REFINED_ERROR_FLOOR_VALUE 0.001f
#define AEC_FILTER_REFINED_ERROR_CEIL "filter.refined:error_ceil"
#define AEC_FILTER_REFINED_ERROR_CEIL_VALUE 2.f
#define AEC_FILTER_REFINED_NOISE_GATE "filter.refined:noise_gate"
#define AEC_FILTER_REFINED_NOISE_GATE_VALUE 20075344.f
// Filter coarse configuration
#define AEC_FILTER_COARSE_LENGTH_BLOCKS "filter.coarse:length_blocks"
#define AEC_FILTER_COARSE_LENGTH_BLOCKS_VALUE 13
#define AEC_FILTER_COARSE_RATE "filter.coarse:rate"
#define AEC_FILTER_COARSE_RATE_VALUE 0.7f
#define AEC_FILTER_COARSE_NOISE_GATE "filter.coarse:noise_gate"
#define AEC_FILTER_COARSE_NOISE_GATE_VALUE 20075344.f
// Filter refined initial configuration
#define AEC_FILTER_REFINED_INIT_LENGTH_BLOCKS "filter.refined_initial:length_blocks"
#define AEC_FILTER_REFINED_INIT_LENGTH_BLOCKS_VALUE 12
#define AEC_FILTER_REFINED_INIT_LEAKAGE_CONVERGED \
"filter.refined_initial:leakage_converged"
#define AEC_FILTER_REFINED_INIT_LEAKAGE_CONVERGED_VALUE 0.005f
#define AEC_FILTER_REFINED_INIT_LEAKAGE_DIVERGED \
"filter.refined_initial:leakage_diverged"
#define AEC_FILTER_REFINED_INIT_LEAKAGE_DIVERGED_VALUE 0.5f
#define AEC_FILTER_REFINED_INIT_ERROR_FLOOR "filter.refined_initial:error_floor"
#define AEC_FILTER_REFINED_INIT_ERROR_FLOOR_VALUE 0.001f
#define AEC_FILTER_REFINED_INIT_ERROR_CEIL "filter.refined_initial:error_ceil"
#define AEC_FILTER_REFINED_INIT_ERROR_CEIL_VALUE 2.f
#define AEC_FILTER_REFINED_INIT_NOISE_GATE "filter.refined_initial:noise_gate"
#define AEC_FILTER_REFINED_INIT_NOISE_GATE_VALUE 20075344.f
// Filter coarse initial configuration
#define AEC_FILTER_COARSE_INIT_LENGTH_BLOCKS \
"filter.coarse_initial:length_blocks"
#define AEC_FILTER_COARSE_INIT_LENGTH_BLOCKS_VALUE 12
#define AEC_FILTER_COARSE_INIT_RATE "filter.coarse_initial:rate"
#define AEC_FILTER_COARSE_INIT_RATE_VALUE 0.9f
#define AEC_FILTER_COARSE_INIT_NOISE_GATE "filter.coarse_initial:noise_gate"
#define AEC_FILTER_COARSE_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_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_COARSE_FILTER_OUTPUT_USAGE \
"filter:enable_coarse_filter_output_usage"
#define AEC_FILTER_ENABLE_COARSE_FILTER_OUTPUT_USAGE_VALUE 1
#define AEC_FILTER_USE_LINEAR_FILTER \
"filter:use_linear_filter"
#define AEC_FILTER_USE_LINEAR_FILTER_VALUE 1
#define AEC_FILTER_EXPORT_LINEAR_AEC_OUTPUT \
"filter:export_linear_aec_output"
#define AEC_FILTER_EXPORT_LINEAR_AEC_OUTPUT_VALUE 0
// Erle
#define AEC_ERLE_MIN "erle:min"
#define AEC_ERLE_MIN_VALUE 1.f
#define AEC_ERLE_MAX_L "erle:max_l"
#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
#define AEC_ERLE_NUM_SECTIONS "erle:num_sections"
#define AEC_ERLE_NUM_SECTIONS_VALUE 1
#define AEC_ERLE_CLAMP_QUALITY_ESTIMATE_TO_ZERO \
"erle:clamp_quality_estimate_to_zero"
#define AEC_ERLE_CLAMP_QUALITY_ESTIMATE_TO_ZERO_VALUE 1
#define AEC_ERLE_CLAMP_QUALITY_ESTIMATE_TO_ONE \
"erle:clamp_quality_estimate_to_one"
#define AEC_ERLE_CLAMP_QUALITY_ESTIMATE_TO_ONE_VALUE 1
// EpStrength
#define AEC_EP_STRENGTH_DEFAULT_GAIN "ep_strength:default_gain"
#define AEC_EP_STRENGTH_DEFAULT_GAIN_VALUE 1.f
#define AEC_EP_STRENGTH_DEFAULT_LEN "ep_strength:default_len"
#define AEC_EP_STRENGTH_DEFAULT_LEN_VALUE 0.83f
#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
#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_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_VALUE 10
#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_VALUE 10
#define AEC_ECHO_AUDIBILITY_USE_STATIONARITY_PROPERTIES \
"echo_audibility:use_stationarity_properties"
#define AEC_ECHO_AUDIBILITY_USE_STATIONARITY_PROPERTIES_VALUE 0
#define AEC_ECHO_AUDIBILITY_USE_STATIONARITY_PROPERTIES_AT_INIT \
"echo_audibility:use_stationarity_properties_at_init"
#define AEC_ECHO_AUDIBILITY_USE_STATIONARITY_PROPERTIES_AT_INIT_VALUE 0
// Rendering levels
#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"
#define AEC_RENDER_LEVELS_POOR_EXCITATION_RENDER_LIMIT_VALUE 150.f
#define AEC_RENDER_LEVELS_POOR_EXCITATION_RENDER_LIMIT_DS8 \
"render_levels:poor_excitation_render_limit_ds8"
#define AEC_RENDER_LEVELS_POOR_EXCITATION_RENDER_LIMIT_DS8_VALUE 20.f
#define AEC_RENDER_LEVELS_RENDER_POWER_GAIN_DB \
"render_levels:render_power_gain_db"
#define AEC_RENDER_LEVELS_RENDER_POWER_GAIN_DB_VALUE 0.f
// Echo removal controls
#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"
#define AEC_ECHO_REMOVAL_CTL_LINEAR_AND_STABLE_ECHO_PATH_VALUE 0
// EchoModel
#define AEC_ECHO_MODEL_NOISE_FLOOR_HOLD "echo_model:noise_floor_hold"
#define AEC_ECHO_MODEL_NOISE_FLOOR_HOLD_VALUE 50
#define AEC_ECHO_MODEL_MIN_NOISE_FLOOR_POWER "echo_model:min_noise_floor_power"
#define AEC_ECHO_MODEL_MIN_NOISE_FLOOR_POWER_VALUE 1638400.f
#define AEC_ECHO_MODEL_STATIONARY_GATE_SLOPE "echo_model:stationary_gate_slope"
#define AEC_ECHO_MODEL_STATIONARY_GATE_SLOPE_VALUE 10.f
#define AEC_ECHO_MODEL_NOISE_GATE_POWER "echo_model:noise_gate_power"
#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_VALUE 1
#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_MODEL_REVERB_IN_NONLINEAR_MODE \
"echo_model:model_reverb_in_nonlinear_mode"
#define AEC_ECHO_MODEL_MODEL_REVERB_IN_NONLINEAR_MODE_VALUE 1
#define AEC_COMFORT_NOISE_NOISE_FLOOR_DBFS "comfort_noise:noise_floor_dbfs"
#define AEC_COMFORT_NOISE_NOISE_FLOOR_DBFS_VALUE -96.03406f
#define AEC_SUPPRESSOR_NEAREND_AVERAGE_BLOCKS \
"suppressor:nearend_average_blocks"
#define AEC_SUPPRESSOR_NEAREND_AVERAGE_BLOCKS_VALUE 4
#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 .3f
#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 .4f
#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 1.09f
#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 1.1f
#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 .1f
#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 .3f
#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 .25f
#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_ENR_EXIT_THRESHOLD \
"suppressor.dominant_nearend_detection:enr_exit_threshold"
#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_ENR_EXIT_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 30.f
#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_HOLD_DURATION \
"suppressor.dominant_nearend_detection:hold_duration"
#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_HOLD_DURATION_VALUE 50
#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_TRIGGER_THRESHOLD \
"suppressor.dominant_nearend_detection:trigger_threshold"
#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_TRIGGER_THRESHOLD_VALUE 12
#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_USE_DURING_INITIAL_PHASE \
"suppressor.dominant_nearend_detection:use_during_initial_phase"
#define AEC_SUPPRESSOR_DOMINANT_NEAREND_DETECTION_USE_DURING_INITIAL_PHASE_VALUE 1
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_NEAREND_AVERAGE_BLOCKS \
"suppressor.subband_nearend_detection:nearend_average_blocks"
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_NEAREND_AVERAGE_BLOCKS_VALUE 1
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_SUBBAND1_LOW \
"suppressor.subband_nearend_detection:subband1.low"
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_SUBBAND1_LOW_VALUE 1
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_SUBBAND1_HIGH \
"suppressor.subband_nearend_detection:subband1.high"
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_SUBBAND1_HIGH_VALUE 1
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_SUBBAND2_LOW \
"suppressor.subband_nearend_detection:subband2.low"
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_SUBBAND2_LOW_VALUE 1
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_SUBBAND2_HIGH \
"suppressor.subband_nearend_detection:subband2.high"
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_SUBBAND2_HIGH_VALUE 1
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_NEAREND_THRESHOLD \
"suppressor.subband_nearend_detection:nearend_threshold"
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_NEAREND_THRESHOLD_VALUE 1.f
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_SNR_THRESHOLD \
"suppressor.subband_nearend_detection:snr_threshold"
#define AEC_SUPPRESSOR_SUBBAND_NEAREND_DETECTION_SNR_THRESHOLD_VALUE 1.f
#define AEC_SUPPRESSOR_USE_SUBBAND_NEAREND_DETECTION \
"suppressor:use_subband_nearend_detection"
#define AEC_SUPPRESSOR_USE_SUBBAND_NEAREND_DETECTION_VALUE 0
#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_HIGH_BANDS_SUPPRESSION_ANTI_HOWLING_ACTIVATION_THRESHOLD \
"suppressor.high_bands_suppression:anti_howling_activation_threshold"
#define AEC_SUPPRESSOR_HIGH_BANDS_SUPPRESSION_ANTI_HOWLING_ACTIVATION_THRESHOLD_VALUE \
400.f
#define AEC_SUPPRESSOR_HIGH_BANDS_SUPPRESSION_ANTI_HOWLING_GAIN \
"suppressor.high_bands_suppression:anti_howling_gain"
#define AEC_SUPPRESSOR_HIGH_BANDS_SUPPRESSION_ANTI_HOWLING_GAIN_VALUE 1.f
#define AEC_SUPPRESSOR_FLOOR_FIRST_INCREASE "suppressor:floor_first_increase"
#define AEC_SUPPRESSOR_FLOOR_FIRST_INCREASE_VALUE 0.00001f
#define AEC_SUPPRESSOR_CONSERVATIVE_HF_SUPPRESSION \
"suppressor:CONSERVATIVE_HF_SUPPRESSION"
#define AEC_SUPPRESSOR_CONSERVATIVE_HF_SUPPRESSION_VALUE 0
/* Gets the aec config from given config directory. */
void aec_config_get(dictionary *ini, webrtc::EchoCanceller3Config *config);
/* Prints the config content to syslog. */
void aec_config_dump(dictionary *config);
#endif /* AEC_CONFIG_H_ */