/* 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 "apm_config.h"

#define APM_CONFIG_NAME "apm.ini"

#define APM_GET_INT(ini, key)	\
	iniparser_getint(	\
		ini, key,	\
		key ## _VALUE)
#define APM_GET_FLOAT(ini, key)	\
	iniparser_getdouble(	\
		ini, key,	\
		key ## _VALUE)

typedef webrtc::AudioProcessing::Config ApConfig;

void apm_config_apply(dictionary *ini, webrtc::AudioProcessing *apm)
{
	ApConfig config;
	int level_estimator;

	if (ini == NULL)
		return;

	config.residual_echo_detector.enabled =
			APM_GET_INT(ini, APM_RESIDUAL_ECHO_DETECTOR_ENABLED);
	config.high_pass_filter.enabled =
			APM_GET_INT(ini, APM_HIGH_PASS_FILTER_ENABLED);
	config.high_pass_filter.apply_in_full_band =
			APM_GET_INT(ini, APM_HIGH_PASS_FILTER_APPLY_IN_FULL_BAND);
	config.pre_amplifier.enabled =
			APM_GET_INT(ini, APM_PRE_AMPLIFIER_ENABLED);
	config.pre_amplifier.fixed_gain_factor =
			APM_GET_FLOAT(ini, APM_PRE_AMPLIFIER_FIXED_GAIN_FACTOR);

	config.echo_canceller.enabled =
		APM_GET_INT(ini, APM_ECHO_CANCELLER_ENABLED);
	config.echo_canceller.mobile_mode =
		APM_GET_INT(ini, APM_ECHO_CANCELLER_MOBILE_MODE);
	config.echo_canceller.export_linear_aec_output =
		APM_GET_INT(ini, APM_ECHO_CANCELLER_EXPORT_LINEAR_AEC_OUTPUT);
	config.echo_canceller.enforce_high_pass_filtering =
		APM_GET_INT(ini, APM_ECHO_CANCELLER_ENFORCE_HIGH_PASS_FILTERING);

	config.transient_suppression.enabled =
		APM_GET_INT(ini, APM_TRANSIENT_SUPPRESSION_ENABLED);

	config.voice_detection.enabled =
		APM_GET_INT(ini, APM_VOICE_DETECTION_ENABLED);

	config.gain_controller1.enabled =
		APM_GET_INT(ini, APM_GAIN_CONTROL_ENABLED);
	config.gain_controller1.mode = static_cast<ApConfig::GainController1::Mode>(
		APM_GET_INT(ini, APM_GAIN_CONTROL_MODE));
	config.gain_controller1.compression_gain_db =
		APM_GET_INT(ini, APM_GAIN_CONTROL_COMPRESSION_GAIN_DB);
	config.gain_controller1.target_level_dbfs =
		APM_GET_INT(ini, APM_GAIN_CONTROL_TARGET_LEVEL_DBFS);
	config.gain_controller1.enable_limiter =
		APM_GET_INT(ini, APM_GAIN_CONTROL_ENABLE_LIMITER);
	config.gain_controller1.analog_level_minimum =
		APM_GET_INT(ini, APM_GAIN_CONTROL_ANALOG_LEVEL_MINIMUM);
	config.gain_controller1.analog_level_maximum =
		APM_GET_INT(ini, APM_GAIN_CONTROL_ANALOG_LEVEL_MAXIMUM);

	/* GainController1::AnalogGainController */
	config.gain_controller1.analog_gain_controller.enabled =
		APM_GET_INT(ini, APM_ANALOG_GAIN_CONTROLLER_ENABLED);
	config.gain_controller1.analog_gain_controller.startup_min_volume =
		APM_GET_INT(ini, APM_ANALOG_GAIN_CONTROLLER_STARTUP_MIN_VOLUME);
	config.gain_controller1.analog_gain_controller.clipped_level_min =
		APM_GET_INT(ini, APM_ANALOG_GAIN_CONTROLLER_CLIPPED_LEVEL_MIN);
	config.gain_controller1.analog_gain_controller.enable_agc2_level_estimator =
		APM_GET_INT(ini, APM_ANALOG_GAIN_CONTROLLER_ENABLE_AGC2_LEVEL_ESTIMATOR);
	config.gain_controller1.analog_gain_controller.enable_digital_adaptive =
		APM_GET_INT(ini, APM_ANALOG_GAIN_CONTROLLER_ENABLE_DIGITAL_ADAPTIVE);

	config.gain_controller2.enabled =
			APM_GET_INT(ini, APM_GAIN_CONTROLLER2_ENABLED);
	config.gain_controller2.adaptive_digital.enabled =
		APM_GET_INT(ini, ADAPTIVE_DIGITAL_ENABLED);
	config.gain_controller2.adaptive_digital.vad_probability_attack =
		APM_GET_FLOAT(ini, ADAPTIVE_DIGITAL_VAD_PROBABILITY_ATTACK);
	config.gain_controller2.adaptive_digital.level_estimator_adjacent_speech_frames_threshold =
		APM_GET_INT(ini, ADAPTIVE_DIGITAL_LEVEL_ESTIMATOR_ADJACENT_SPEECH_FRAMES_THRESHOLD);
	config.gain_controller2.adaptive_digital.initial_saturation_margin_db =
		APM_GET_FLOAT(ini, ADAPTIVE_DIGITAL_INITIAL_SATURATION_MARGIN_DB);
	config.gain_controller2.adaptive_digital.gain_applier_adjacent_speech_frames_threshold =
		APM_GET_INT(ini, ADAPTIVE_DIGITAL_GAIN_APPLIER_ADJACENT_SPEECH_FRAMES_THRESHOLD);
	config.gain_controller2.adaptive_digital.max_gain_change_db_per_second =
		APM_GET_FLOAT(ini, ADAPTIVE_DIGITAL_MAX_GAIN_CHANGE_DB_PER_SECOND);
	config.gain_controller2.adaptive_digital.max_output_noise_level_dbfs =
		APM_GET_FLOAT(ini, ADAPTIVE_DIGITAL_MAX_OUTPUT_NOISE_LEVEL_DBFS);
	config.gain_controller2.adaptive_digital.extra_saturation_margin_db =
		APM_GET_FLOAT(ini, ADAPTIVE_DIGITAL_EXTRA_SATURATION_MARGIN_DB);
	level_estimator = APM_GET_INT(
		ini, ADAPTIVE_DIGITAL_LEVEL_ESTIMATOR);
	config.gain_controller2.adaptive_digital.level_estimator =
		static_cast<ApConfig::GainController2::LevelEstimator>(
			level_estimator);
	config.gain_controller2.adaptive_digital.use_saturation_protector =
		APM_GET_INT(ini, ADAPTIVE_DIGITAL_USE_SATURATION_PROTECTOR);
	config.gain_controller2.fixed_digital.gain_db =
		APM_GET_FLOAT(ini, APM_GAIN_CONTROLLER2_FIXED_DIGITAL_GAIN_DB);

	config.level_estimation.enabled =
		APM_GET_INT(ini, APM_LEVEL_ESTIMATION_ENABLED);

	config.noise_suppression.enabled =
		APM_GET_INT(ini, APM_NOISE_SUPPRESSION_ENABLED);
	config.noise_suppression.level = static_cast<ApConfig::NoiseSuppression::Level>(
		APM_GET_INT(ini, APM_NOISE_SUPPRESSION_LEVEL));
	config.noise_suppression.analyze_linear_aec_output_when_available =
		APM_GET_INT(ini, APM_NOISE_SUPPRESSION_ANALYZE_LINEAR_AEC_OUTPUT_WHEN_AVAILABLE);

	apm->ApplyConfig(config);
}

void apm_config_dump(dictionary *ini)
{
	syslog(LOG_ERR, "---- apm config dump ----");
	syslog(LOG_ERR, "residual_echo_detector_enabled %u",
		APM_GET_INT(ini, APM_RESIDUAL_ECHO_DETECTOR_ENABLED));
	syslog(LOG_ERR, "high_pass_filter_enabled %u",
		APM_GET_INT(ini, APM_HIGH_PASS_FILTER_ENABLED));
	syslog(LOG_ERR, "high_pass_filter_apply_in_full_band %d",
		APM_GET_INT(ini, APM_HIGH_PASS_FILTER_APPLY_IN_FULL_BAND));
	syslog(LOG_ERR, "pre_amplifier_enabled %u",
		APM_GET_INT(ini, APM_PRE_AMPLIFIER_ENABLED));
	syslog(LOG_ERR, "pre_amplifier_fixed_gain_factor %f",
		APM_GET_FLOAT(ini, APM_PRE_AMPLIFIER_FIXED_GAIN_FACTOR));

	syslog(LOG_ERR, "echo_canceller_enabled %d",
		APM_GET_INT(ini, APM_ECHO_CANCELLER_ENABLED));
	syslog(LOG_ERR, "echo_canceller_mobile_mode %d",
		APM_GET_INT(ini, APM_ECHO_CANCELLER_MOBILE_MODE));
	syslog(LOG_ERR, "echo_canceller_export_linear_aec_output %d",
		APM_GET_INT(ini, APM_ECHO_CANCELLER_EXPORT_LINEAR_AEC_OUTPUT));
	syslog(LOG_ERR, "echo_canceller_enforce_high_pass_filtering %d",
		APM_GET_INT(ini, APM_ECHO_CANCELLER_ENFORCE_HIGH_PASS_FILTERING));

	syslog(LOG_ERR, "transient_suppression_enabled %d",
		APM_GET_INT(ini, APM_TRANSIENT_SUPPRESSION_ENABLED));

	syslog(LOG_ERR, "voice_detection_enabled %d",
		APM_GET_INT(ini, APM_VOICE_DETECTION_ENABLED));

	syslog(LOG_ERR, "gain_controller2_enabled %u",
		APM_GET_INT(ini, APM_GAIN_CONTROLLER2_ENABLED));
	syslog(LOG_ERR, "adaptive_digital_enabled %d",
		APM_GET_INT(ini, ADAPTIVE_DIGITAL_ENABLED));
	syslog(LOG_ERR, "adaptive_digital_vad_probability_attack %f",
		APM_GET_FLOAT(ini, ADAPTIVE_DIGITAL_VAD_PROBABILITY_ATTACK));
	syslog(LOG_ERR, "adaptive_digital_level_estimator_adjacent_speech_frames_threshold %d",
		APM_GET_INT(ini, ADAPTIVE_DIGITAL_LEVEL_ESTIMATOR_ADJACENT_SPEECH_FRAMES_THRESHOLD));
	syslog(LOG_ERR, "adaptive_digital_initial_saturation_margin_db %f",
		APM_GET_FLOAT(ini, ADAPTIVE_DIGITAL_INITIAL_SATURATION_MARGIN_DB));
	syslog(LOG_ERR, "adaptive_digital_gain_applier_adjacent_speech_frames_threshold %d",
		APM_GET_INT(ini, ADAPTIVE_DIGITAL_GAIN_APPLIER_ADJACENT_SPEECH_FRAMES_THRESHOLD));
	syslog(LOG_ERR, "adaptive_digital_max_gain_change_db_per_second %f",
		APM_GET_FLOAT(ini, ADAPTIVE_DIGITAL_MAX_GAIN_CHANGE_DB_PER_SECOND));
	syslog(LOG_ERR, "adaptive_digital_max_output_noise_level_dbfs %f",
		APM_GET_FLOAT(ini, ADAPTIVE_DIGITAL_MAX_OUTPUT_NOISE_LEVEL_DBFS));
	syslog(LOG_ERR, "adaptive_digital_extra_saturation_margin_db %f",
		APM_GET_FLOAT(ini,
			ADAPTIVE_DIGITAL_EXTRA_SATURATION_MARGIN_DB));
	syslog(LOG_ERR, "adaptive_digital_level_estimator %d",
		APM_GET_INT(ini, ADAPTIVE_DIGITAL_LEVEL_ESTIMATOR));
	syslog(LOG_ERR, "adaptive_digital_use_saturation_protector %d",
		APM_GET_INT(ini, ADAPTIVE_DIGITAL_USE_SATURATION_PROTECTOR));
	syslog(LOG_ERR, "adaptive_digital_sse2_allowed %d",
		APM_GET_INT(ini, ADAPTIVE_DIGITAL_SSE2_ALLOWED));
	syslog(LOG_ERR, "adaptive_digital_avx2_allowed %d",
		APM_GET_INT(ini, ADAPTIVE_DIGITAL_AVX2_ALLOWED));
	syslog(LOG_ERR, "adaptive_digital_neon_allowed %d",
		APM_GET_INT(ini, ADAPTIVE_DIGITAL_NEON_ALLOWED));
	syslog(LOG_ERR, "gain_controller2_fixed_digital_gain_db %f",
		APM_GET_FLOAT(ini, APM_GAIN_CONTROLLER2_FIXED_DIGITAL_GAIN_DB));

	syslog(LOG_ERR, "level_estimation_enabled %d",
		APM_GET_INT(ini, APM_LEVEL_ESTIMATION_ENABLED));

	syslog(LOG_ERR, "gain_control_compression_gain_db %u",
		APM_GET_INT(ini, APM_GAIN_CONTROL_COMPRESSION_GAIN_DB));
	syslog(LOG_ERR, "gain_control_target_level_dbfs %d",
		APM_GET_INT(ini, APM_GAIN_CONTROL_TARGET_LEVEL_DBFS));
	syslog(LOG_ERR, "gain_control_enable_limiter %d",
		APM_GET_INT(ini, APM_GAIN_CONTROL_ENABLE_LIMITER));
	syslog(LOG_ERR, "gain_control_analog_level_minimum %d",
		APM_GET_INT(ini, APM_GAIN_CONTROL_ANALOG_LEVEL_MINIMUM));
	syslog(LOG_ERR, "gain_control_analog_level_maximumc %d",
		APM_GET_INT(ini, APM_GAIN_CONTROL_ANALOG_LEVEL_MAXIMUM));
	syslog(LOG_ERR, "gain_control_mode %u",
		APM_GET_INT(ini, APM_GAIN_CONTROL_MODE));
	syslog(LOG_ERR, "gain_control_enabled %u",
		APM_GET_INT(ini, APM_GAIN_CONTROL_ENABLED));

	syslog(LOG_ERR, "analog_gain_controller_enabled %d",
		APM_GET_INT(ini, APM_ANALOG_GAIN_CONTROLLER_ENABLED));
	syslog(LOG_ERR, "analog_gain_controller_startup_min_volume %d",
		APM_GET_INT(ini, APM_ANALOG_GAIN_CONTROLLER_STARTUP_MIN_VOLUME));
	syslog(LOG_ERR, "analog_gain_controller_clipped_level_min %d",
		APM_GET_INT(ini, APM_ANALOG_GAIN_CONTROLLER_CLIPPED_LEVEL_MIN));
	syslog(LOG_ERR, "analog_gain_controller_enable_agc2_level_estimator %d",
		APM_GET_INT(ini, APM_ANALOG_GAIN_CONTROLLER_ENABLE_AGC2_LEVEL_ESTIMATOR));
	syslog(LOG_ERR, "analog_gain_controller_enable_digital_adaptive %d",
		APM_GET_INT(ini, APM_ANALOG_GAIN_CONTROLLER_ENABLE_DIGITAL_ADAPTIVE));

	syslog(LOG_ERR, "noise_suppression_level %u",
		APM_GET_INT(ini, APM_NOISE_SUPPRESSION_LEVEL));
	syslog(LOG_ERR, "noise_suppression_enabled %u",
		APM_GET_INT(ini, APM_NOISE_SUPPRESSION_ENABLED));
}
