• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright 2018 The WebRTC Project Authors. All rights reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include "api/audio/echo_canceller3_config_json.h"
12 
13 #include "api/audio/echo_canceller3_config.h"
14 #include "test/gtest.h"
15 
16 namespace webrtc {
17 
TEST(EchoCanceller3JsonHelpers,ToStringAndParseJson)18 TEST(EchoCanceller3JsonHelpers, ToStringAndParseJson) {
19   EchoCanceller3Config cfg;
20   cfg.delay.down_sampling_factor = 1u;
21   cfg.delay.log_warning_on_delay_changes = true;
22   cfg.filter.refined.error_floor = 2.f;
23   cfg.filter.coarse_initial.length_blocks = 3u;
24   cfg.comfort_noise.noise_floor_dbfs = 100.f;
25   cfg.suppressor.normal_tuning.mask_hf.enr_suppress = .5f;
26   cfg.suppressor.subband_nearend_detection.nearend_average_blocks = 3;
27   cfg.suppressor.subband_nearend_detection.subband1 = {1, 3};
28   cfg.suppressor.subband_nearend_detection.subband1 = {4, 5};
29   cfg.suppressor.subband_nearend_detection.nearend_threshold = 2.f;
30   cfg.suppressor.subband_nearend_detection.snr_threshold = 100.f;
31   std::string json_string = Aec3ConfigToJsonString(cfg);
32   EchoCanceller3Config cfg_transformed = Aec3ConfigFromJsonString(json_string);
33 
34   // Expect unchanged values to remain default.
35   EXPECT_EQ(cfg.ep_strength.default_len,
36             cfg_transformed.ep_strength.default_len);
37   EXPECT_EQ(cfg.suppressor.normal_tuning.mask_lf.enr_suppress,
38             cfg_transformed.suppressor.normal_tuning.mask_lf.enr_suppress);
39 
40   // Expect changed values to carry through the transformation.
41   EXPECT_EQ(cfg.delay.down_sampling_factor,
42             cfg_transformed.delay.down_sampling_factor);
43   EXPECT_EQ(cfg.delay.log_warning_on_delay_changes,
44             cfg_transformed.delay.log_warning_on_delay_changes);
45   EXPECT_EQ(cfg.filter.coarse_initial.length_blocks,
46             cfg_transformed.filter.coarse_initial.length_blocks);
47   EXPECT_EQ(cfg.filter.refined.error_floor,
48             cfg_transformed.filter.refined.error_floor);
49   EXPECT_EQ(cfg.comfort_noise.noise_floor_dbfs,
50             cfg_transformed.comfort_noise.noise_floor_dbfs);
51   EXPECT_EQ(cfg.suppressor.normal_tuning.mask_hf.enr_suppress,
52             cfg_transformed.suppressor.normal_tuning.mask_hf.enr_suppress);
53   EXPECT_EQ(cfg.suppressor.subband_nearend_detection.nearend_average_blocks,
54             cfg_transformed.suppressor.subband_nearend_detection
55                 .nearend_average_blocks);
56   EXPECT_EQ(cfg.suppressor.subband_nearend_detection.subband1.low,
57             cfg_transformed.suppressor.subband_nearend_detection.subband1.low);
58   EXPECT_EQ(cfg.suppressor.subband_nearend_detection.subband1.high,
59             cfg_transformed.suppressor.subband_nearend_detection.subband1.high);
60   EXPECT_EQ(cfg.suppressor.subband_nearend_detection.subband2.low,
61             cfg_transformed.suppressor.subband_nearend_detection.subband2.low);
62   EXPECT_EQ(cfg.suppressor.subband_nearend_detection.subband2.high,
63             cfg_transformed.suppressor.subband_nearend_detection.subband2.high);
64   EXPECT_EQ(
65       cfg.suppressor.subband_nearend_detection.nearend_threshold,
66       cfg_transformed.suppressor.subband_nearend_detection.nearend_threshold);
67   EXPECT_EQ(cfg.suppressor.subband_nearend_detection.snr_threshold,
68             cfg_transformed.suppressor.subband_nearend_detection.snr_threshold);
69 }
70 }  // namespace webrtc
71