| /* | |
| * Copyright 2018 The WebRTC Project Authors. All rights reserved. | |
| * | |
| * Use of this source code is governed by a BSD-style license | |
| * that can be found in the LICENSE file in the root of the source | |
| * tree. An additional intellectual property rights grant can be found | |
| * in the file PATENTS. All contributing project authors may | |
| * be found in the AUTHORS file in the root of the source tree. | |
| */ | |
| #include "modules/audio_processing/test/echo_canceller3_config_json.h" | |
| #include <string> | |
| #include "api/audio/echo_canceller3_config.h" | |
| #include "test/gtest.h" | |
| namespace webrtc { | |
| TEST(EchoCanceller3JsonHelpers, ToStringAndParseJson) { | |
| EchoCanceller3Config cfg; | |
| cfg.delay.down_sampling_factor = 1u; | |
| cfg.delay.log_warning_on_delay_changes = true; | |
| cfg.filter.refined.error_floor = 2.f; | |
| cfg.filter.coarse_initial.length_blocks = 3u; | |
| cfg.filter.high_pass_filter_echo_reference = | |
| !cfg.filter.high_pass_filter_echo_reference; | |
| cfg.comfort_noise.noise_floor_dbfs = 100.f; | |
| cfg.echo_model.model_reverb_in_nonlinear_mode = false; | |
| cfg.suppressor.normal_tuning.mask_hf.enr_suppress = .5f; | |
| cfg.suppressor.subband_nearend_detection.nearend_average_blocks = 3; | |
| cfg.suppressor.subband_nearend_detection.subband1 = {.low = 1, .high = 3}; | |
| cfg.suppressor.subband_nearend_detection.subband1 = {.low = 4, .high = 5}; | |
| cfg.suppressor.subband_nearend_detection.nearend_threshold = 2.f; | |
| cfg.suppressor.subband_nearend_detection.snr_threshold = 100.f; | |
| cfg.multi_channel.detect_stereo_content = | |
| !cfg.multi_channel.detect_stereo_content; | |
| cfg.multi_channel.stereo_detection_threshold += 1.0f; | |
| cfg.multi_channel.stereo_detection_timeout_threshold_seconds += 1; | |
| cfg.multi_channel.stereo_detection_hysteresis_seconds += 1; | |
| std::string json_string = Aec3ConfigToJsonString(cfg); | |
| EchoCanceller3Config cfg_transformed; | |
| bool parsing_successful; | |
| Aec3ConfigFromJsonString(json_string, &cfg_transformed, &parsing_successful); | |
| ASSERT_TRUE(parsing_successful); | |
| // Expect unchanged values to remain default. | |
| EXPECT_EQ(cfg.ep_strength.default_len, | |
| cfg_transformed.ep_strength.default_len); | |
| EXPECT_EQ(cfg.ep_strength.nearend_len, | |
| cfg_transformed.ep_strength.nearend_len); | |
| EXPECT_EQ(cfg.suppressor.normal_tuning.mask_lf.enr_suppress, | |
| cfg_transformed.suppressor.normal_tuning.mask_lf.enr_suppress); | |
| // Expect changed values to carry through the transformation. | |
| EXPECT_EQ(cfg.delay.down_sampling_factor, | |
| cfg_transformed.delay.down_sampling_factor); | |
| EXPECT_EQ(cfg.delay.log_warning_on_delay_changes, | |
| cfg_transformed.delay.log_warning_on_delay_changes); | |
| EXPECT_EQ(cfg.filter.coarse_initial.length_blocks, | |
| cfg_transformed.filter.coarse_initial.length_blocks); | |
| EXPECT_EQ(cfg.filter.refined.error_floor, | |
| cfg_transformed.filter.refined.error_floor); | |
| EXPECT_EQ(cfg.filter.high_pass_filter_echo_reference, | |
| cfg_transformed.filter.high_pass_filter_echo_reference); | |
| EXPECT_EQ(cfg.comfort_noise.noise_floor_dbfs, | |
| cfg_transformed.comfort_noise.noise_floor_dbfs); | |
| EXPECT_EQ(cfg.echo_model.model_reverb_in_nonlinear_mode, | |
| cfg_transformed.echo_model.model_reverb_in_nonlinear_mode); | |
| EXPECT_EQ(cfg.suppressor.normal_tuning.mask_hf.enr_suppress, | |
| cfg_transformed.suppressor.normal_tuning.mask_hf.enr_suppress); | |
| EXPECT_EQ(cfg.suppressor.subband_nearend_detection.nearend_average_blocks, | |
| cfg_transformed.suppressor.subband_nearend_detection | |
| .nearend_average_blocks); | |
| EXPECT_EQ(cfg.suppressor.subband_nearend_detection.subband1.low, | |
| cfg_transformed.suppressor.subband_nearend_detection.subband1.low); | |
| EXPECT_EQ(cfg.suppressor.subband_nearend_detection.subband1.high, | |
| cfg_transformed.suppressor.subband_nearend_detection.subband1.high); | |
| EXPECT_EQ(cfg.suppressor.subband_nearend_detection.subband2.low, | |
| cfg_transformed.suppressor.subband_nearend_detection.subband2.low); | |
| EXPECT_EQ(cfg.suppressor.subband_nearend_detection.subband2.high, | |
| cfg_transformed.suppressor.subband_nearend_detection.subband2.high); | |
| EXPECT_EQ( | |
| cfg.suppressor.subband_nearend_detection.nearend_threshold, | |
| cfg_transformed.suppressor.subband_nearend_detection.nearend_threshold); | |
| EXPECT_EQ(cfg.suppressor.subband_nearend_detection.snr_threshold, | |
| cfg_transformed.suppressor.subband_nearend_detection.snr_threshold); | |
| EXPECT_EQ(cfg.multi_channel.detect_stereo_content, | |
| cfg_transformed.multi_channel.detect_stereo_content); | |
| EXPECT_EQ(cfg.multi_channel.stereo_detection_threshold, | |
| cfg_transformed.multi_channel.stereo_detection_threshold); | |
| EXPECT_EQ( | |
| cfg.multi_channel.stereo_detection_timeout_threshold_seconds, | |
| cfg_transformed.multi_channel.stereo_detection_timeout_threshold_seconds); | |
| EXPECT_EQ(cfg.multi_channel.stereo_detection_hysteresis_seconds, | |
| cfg_transformed.multi_channel.stereo_detection_hysteresis_seconds); | |
| } | |
| } // namespace webrtc |