
(This reverts commit 3fbf3f8841b5460503fb646eaedcb063620434a8.) The original submission was reverted because it broke the Chrome build. This is fixed in patch set 2 of this change by keeping the old MediaConstraintsInterface string kExperimentalEchoCancellation. It will be removed once the Chrome code has been updated. Original description: "We use this Config struct for enabling/disabling Extended filter mode in AEC. This change renames it to ExtendedFilter for readability reasons. The corresponding media constraint is also renamed to kExtendedFilterEchoCancellation. The old Config is kept in parallel with the new during a transition period. This is to avoid problems with API breakages. During this period, if any of the two Configs are enabled, the extended filter mode is engaged in APM. That is, the two Configs are combined with an "OR" operation. This change also renames experimental_aec in AudioOptions to extended_filter_aec." BUG=webrtc:4696 R=bjornv@webrtc.org, tommi@webrtc.org Review URL: https://codereview.webrtc.org/1151573021. Cr-Commit-Position: refs/heads/master@{#9401}
82 lines
2.9 KiB
C++
82 lines
2.9 KiB
C++
/*
|
|
* Copyright (c) 2013 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 "testing/gtest/include/gtest/gtest.h"
|
|
#include "webrtc/base/scoped_ptr.h"
|
|
extern "C" {
|
|
#include "webrtc/modules/audio_processing/aec/aec_core.h"
|
|
}
|
|
#include "webrtc/modules/audio_processing/include/audio_processing.h"
|
|
#include "webrtc/test/testsupport/gtest_disable.h"
|
|
|
|
namespace webrtc {
|
|
|
|
TEST(EchoCancellationInternalTest, ExtendedFilter) {
|
|
rtc::scoped_ptr<AudioProcessing> ap(AudioProcessing::Create());
|
|
EXPECT_TRUE(ap->echo_cancellation()->aec_core() == NULL);
|
|
|
|
EXPECT_EQ(ap->kNoError, ap->echo_cancellation()->Enable(true));
|
|
EXPECT_TRUE(ap->echo_cancellation()->is_enabled());
|
|
|
|
AecCore* aec_core = ap->echo_cancellation()->aec_core();
|
|
ASSERT_TRUE(aec_core != NULL);
|
|
// Disabled by default.
|
|
EXPECT_EQ(0, WebRtcAec_extended_filter_enabled(aec_core));
|
|
|
|
Config config;
|
|
config.Set<ExtendedFilter>(new ExtendedFilter(true));
|
|
ap->SetExtraOptions(config);
|
|
EXPECT_EQ(1, WebRtcAec_extended_filter_enabled(aec_core));
|
|
|
|
// Retains setting after initialization.
|
|
EXPECT_EQ(ap->kNoError, ap->Initialize());
|
|
EXPECT_EQ(1, WebRtcAec_extended_filter_enabled(aec_core));
|
|
|
|
config.Set<ExtendedFilter>(new ExtendedFilter(false));
|
|
ap->SetExtraOptions(config);
|
|
EXPECT_EQ(0, WebRtcAec_extended_filter_enabled(aec_core));
|
|
|
|
// Retains setting after initialization.
|
|
EXPECT_EQ(ap->kNoError, ap->Initialize());
|
|
EXPECT_EQ(0, WebRtcAec_extended_filter_enabled(aec_core));
|
|
}
|
|
|
|
TEST(EchoCancellationInternalTest, ReportedDelay) {
|
|
rtc::scoped_ptr<AudioProcessing> ap(AudioProcessing::Create());
|
|
EXPECT_TRUE(ap->echo_cancellation()->aec_core() == NULL);
|
|
|
|
EXPECT_EQ(ap->kNoError, ap->echo_cancellation()->Enable(true));
|
|
EXPECT_TRUE(ap->echo_cancellation()->is_enabled());
|
|
|
|
AecCore* aec_core = ap->echo_cancellation()->aec_core();
|
|
ASSERT_TRUE(aec_core != NULL);
|
|
// Enabled by default.
|
|
EXPECT_EQ(1, WebRtcAec_reported_delay_enabled(aec_core));
|
|
|
|
Config config;
|
|
config.Set<ReportedDelay>(new ReportedDelay(false));
|
|
ap->SetExtraOptions(config);
|
|
EXPECT_EQ(0, WebRtcAec_reported_delay_enabled(aec_core));
|
|
|
|
// Retains setting after initialization.
|
|
EXPECT_EQ(ap->kNoError, ap->Initialize());
|
|
EXPECT_EQ(0, WebRtcAec_reported_delay_enabled(aec_core));
|
|
|
|
config.Set<ReportedDelay>(new ReportedDelay(true));
|
|
ap->SetExtraOptions(config);
|
|
EXPECT_EQ(1, WebRtcAec_reported_delay_enabled(aec_core));
|
|
|
|
// Retains setting after initialization.
|
|
EXPECT_EQ(ap->kNoError, ap->Initialize());
|
|
EXPECT_EQ(1, WebRtcAec_reported_delay_enabled(aec_core));
|
|
}
|
|
|
|
} // namespace webrtc
|