• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2013 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 "testing/gtest/include/gtest/gtest.h"
12 #include "webrtc/base/scoped_ptr.h"
13 extern "C" {
14 #include "webrtc/modules/audio_processing/aec/aec_core.h"
15 }
16 #include "webrtc/modules/audio_processing/include/audio_processing.h"
17 
18 namespace webrtc {
19 
TEST(EchoCancellationInternalTest,ExtendedFilter)20 TEST(EchoCancellationInternalTest, ExtendedFilter) {
21   rtc::scoped_ptr<AudioProcessing> ap(AudioProcessing::Create());
22   EXPECT_TRUE(ap->echo_cancellation()->aec_core() == NULL);
23 
24   EXPECT_EQ(ap->kNoError, ap->echo_cancellation()->Enable(true));
25   EXPECT_TRUE(ap->echo_cancellation()->is_enabled());
26 
27   AecCore* aec_core = ap->echo_cancellation()->aec_core();
28   ASSERT_TRUE(aec_core != NULL);
29   // Disabled by default.
30   EXPECT_EQ(0, WebRtcAec_extended_filter_enabled(aec_core));
31 
32   Config config;
33   config.Set<ExtendedFilter>(new ExtendedFilter(true));
34   ap->SetExtraOptions(config);
35   EXPECT_EQ(1, WebRtcAec_extended_filter_enabled(aec_core));
36 
37   // Retains setting after initialization.
38   EXPECT_EQ(ap->kNoError, ap->Initialize());
39   EXPECT_EQ(1, WebRtcAec_extended_filter_enabled(aec_core));
40 
41   config.Set<ExtendedFilter>(new ExtendedFilter(false));
42   ap->SetExtraOptions(config);
43   EXPECT_EQ(0, WebRtcAec_extended_filter_enabled(aec_core));
44 
45   // Retains setting after initialization.
46   EXPECT_EQ(ap->kNoError, ap->Initialize());
47   EXPECT_EQ(0, WebRtcAec_extended_filter_enabled(aec_core));
48 }
49 
TEST(EchoCancellationInternalTest,DelayAgnostic)50 TEST(EchoCancellationInternalTest, DelayAgnostic) {
51   rtc::scoped_ptr<AudioProcessing> ap(AudioProcessing::Create());
52   EXPECT_TRUE(ap->echo_cancellation()->aec_core() == NULL);
53 
54   EXPECT_EQ(ap->kNoError, ap->echo_cancellation()->Enable(true));
55   EXPECT_TRUE(ap->echo_cancellation()->is_enabled());
56 
57   AecCore* aec_core = ap->echo_cancellation()->aec_core();
58   ASSERT_TRUE(aec_core != NULL);
59   // Enabled by default.
60   EXPECT_EQ(0, WebRtcAec_delay_agnostic_enabled(aec_core));
61 
62   Config config;
63   config.Set<DelayAgnostic>(new DelayAgnostic(true));
64   ap->SetExtraOptions(config);
65   EXPECT_EQ(1, WebRtcAec_delay_agnostic_enabled(aec_core));
66 
67   // Retains setting after initialization.
68   EXPECT_EQ(ap->kNoError, ap->Initialize());
69   EXPECT_EQ(1, WebRtcAec_delay_agnostic_enabled(aec_core));
70 
71   config.Set<DelayAgnostic>(new DelayAgnostic(false));
72   ap->SetExtraOptions(config);
73   EXPECT_EQ(0, WebRtcAec_delay_agnostic_enabled(aec_core));
74 
75   // Retains setting after initialization.
76   EXPECT_EQ(ap->kNoError, ap->Initialize());
77   EXPECT_EQ(0, WebRtcAec_delay_agnostic_enabled(aec_core));
78 }
79 
80 }  // namespace webrtc
81