Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(748)

Unified Diff: webrtc/media/engine/webrtcvoiceengine_unittest.cc

Issue 2681033010: Remove usage of VoEAudioProcessing from WVoE/MC. (Closed)
Patch Set: one more Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/media/engine/webrtcvoiceengine.cc ('k') | webrtc/voice_engine/include/voe_base.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/media/engine/webrtcvoiceengine_unittest.cc
diff --git a/webrtc/media/engine/webrtcvoiceengine_unittest.cc b/webrtc/media/engine/webrtcvoiceengine_unittest.cc
index 0bb350133933a0fc477b0644b620337535999990..a08ac6a92e24ad744fe3adcd48b1a91467f8fbff 100644
--- a/webrtc/media/engine/webrtcvoiceengine_unittest.cc
+++ b/webrtc/media/engine/webrtcvoiceengine_unittest.cc
@@ -13,7 +13,6 @@
#include "webrtc/api/audio_codecs/builtin_audio_decoder_factory.h"
#include "webrtc/base/arraysize.h"
#include "webrtc/base/byteorder.h"
-#include "webrtc/base/gunit.h"
#include "webrtc/base/safe_conversions.h"
#include "webrtc/call/call.h"
#include "webrtc/logging/rtc_event_log/rtc_event_log.h"
@@ -29,6 +28,8 @@
#include "webrtc/modules/audio_processing/include/mock_audio_processing.h"
#include "webrtc/pc/channel.h"
#include "webrtc/test/field_trial.h"
+#include "webrtc/test/gtest.h"
+#include "webrtc/voice_engine/transmit_mixer.h"
using testing::Return;
using testing::StrictMock;
@@ -58,14 +59,20 @@ constexpr int kRtpHistoryMs = 5000;
class FakeVoEWrapper : public cricket::VoEWrapper {
public:
explicit FakeVoEWrapper(cricket::FakeWebRtcVoiceEngine* engine)
- : cricket::VoEWrapper(engine, // processing
- engine, // base
+ : cricket::VoEWrapper(engine, // base
engine, // codec
engine, // hw
engine) { // volume
}
};
+class MockTransmitMixer : public webrtc::voe::TransmitMixer {
+ public:
+ MockTransmitMixer() = default;
+ virtual ~MockTransmitMixer() = default;
+
+ MOCK_METHOD1(EnableStereoChannelSwapping, void(bool enable));
+};
} // namespace
// Tests that our stub library "works".
@@ -76,11 +83,14 @@ TEST(WebRtcVoiceEngineTestStubLibrary, StartupShutdown) {
EXPECT_CALL(adm, BuiltInAECIsAvailable()).WillOnce(Return(false));
EXPECT_CALL(adm, BuiltInAGCIsAvailable()).WillOnce(Return(false));
EXPECT_CALL(adm, BuiltInNSIsAvailable()).WillOnce(Return(false));
+ EXPECT_CALL(adm, SetAGC(true)).WillOnce(Return(0));
StrictMock<webrtc::test::MockAudioProcessing> apm;
EXPECT_CALL(apm, ApplyConfig(testing::_));
EXPECT_CALL(apm, SetExtraOptions(testing::_));
EXPECT_CALL(apm, Initialize()).WillOnce(Return(0));
- cricket::FakeWebRtcVoiceEngine voe(&apm);
+ StrictMock<MockTransmitMixer> transmit_mixer;
+ EXPECT_CALL(transmit_mixer, EnableStereoChannelSwapping(false));
+ cricket::FakeWebRtcVoiceEngine voe(&apm, &transmit_mixer);
EXPECT_FALSE(voe.IsInited());
{
cricket::WebRtcVoiceEngine engine(
@@ -105,16 +115,35 @@ class WebRtcVoiceEngineTestFake : public testing::Test {
WebRtcVoiceEngineTestFake() : WebRtcVoiceEngineTestFake("") {}
explicit WebRtcVoiceEngineTestFake(const char* field_trials)
- : call_(webrtc::Call::Config(&event_log_)), voe_(&apm_),
+ : apm_gc_(*apm_.gain_control()), apm_ec_(*apm_.echo_cancellation()),
+ apm_ns_(*apm_.noise_suppression()), apm_vd_(*apm_.voice_detection()),
+ call_(webrtc::Call::Config(&event_log_)), voe_(&apm_, &transmit_mixer_),
override_field_trials_(field_trials) {
+ // AudioDeviceModule.
EXPECT_CALL(adm_, AddRef()).WillOnce(Return(0));
EXPECT_CALL(adm_, Release()).WillOnce(Return(0));
EXPECT_CALL(adm_, BuiltInAECIsAvailable()).WillOnce(Return(false));
EXPECT_CALL(adm_, BuiltInAGCIsAvailable()).WillOnce(Return(false));
EXPECT_CALL(adm_, BuiltInNSIsAvailable()).WillOnce(Return(false));
+ EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
+ // AudioProcessing.
EXPECT_CALL(apm_, ApplyConfig(testing::_));
EXPECT_CALL(apm_, SetExtraOptions(testing::_));
EXPECT_CALL(apm_, Initialize()).WillOnce(Return(0));
+ // Default Options.
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ns_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_vd_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(transmit_mixer_, EnableStereoChannelSwapping(false));
+ // Init does not overwrite default AGC config.
+ EXPECT_CALL(apm_gc_, target_level_dbfs()).WillOnce(Return(1));
+ EXPECT_CALL(apm_gc_, compression_gain_db()).WillRepeatedly(Return(5));
+ EXPECT_CALL(apm_gc_, is_limiter_enabled()).WillRepeatedly(Return(true));
+ EXPECT_CALL(apm_gc_, set_target_level_dbfs(1)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, set_compression_gain_db(5)).WillRepeatedly(Return(0));
+ EXPECT_CALL(apm_gc_, enable_limiter(true)).WillRepeatedly(Return(0));
// TODO(kwiberg): We should use a mock AudioDecoderFactory, but a bunch of
// the tests here probe the specific set of codecs provided by the builtin
// factory. Those tests should probably be moved elsewhere.
@@ -123,6 +152,8 @@ class WebRtcVoiceEngineTestFake : public testing::Test {
new FakeVoEWrapper(&voe_)));
send_parameters_.codecs.push_back(kPcmuCodec);
recv_parameters_.codecs.push_back(kPcmuCodec);
+ // Default Options.
+ EXPECT_TRUE(IsHighPassFilterEnabled());
}
bool SetupChannel() {
@@ -607,6 +638,11 @@ class WebRtcVoiceEngineTestFake : public testing::Test {
protected:
StrictMock<webrtc::test::MockAudioDeviceModule> adm_;
StrictMock<webrtc::test::MockAudioProcessing> apm_;
+ webrtc::test::MockGainControl& apm_gc_;
+ webrtc::test::MockEchoCancellation& apm_ec_;
+ webrtc::test::MockNoiseSuppression& apm_ns_;
+ webrtc::test::MockVoiceDetection& apm_vd_;
+ StrictMock<MockTransmitMixer> transmit_mixer_;
webrtc::RtcEventLogNullImpl event_log_;
cricket::FakeCall call_;
cricket::FakeWebRtcVoiceEngine voe_;
@@ -2450,46 +2486,37 @@ TEST_F(WebRtcVoiceEngineTestFake, PlayoutWithMultipleStreams) {
// and start sending on it.
TEST_F(WebRtcVoiceEngineTestFake, CodianSend) {
EXPECT_TRUE(SetupSendStream());
- cricket::AudioOptions options_adjust_agc;
- options_adjust_agc.adjust_agc_delta = rtc::Optional<int>(-10);
- webrtc::AgcConfig agc_config;
- EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
- EXPECT_EQ(0, agc_config.targetLeveldBOv);
- send_parameters_.options = options_adjust_agc;
+ send_parameters_.options.adjust_agc_delta = rtc::Optional<int>(-10);
+ EXPECT_CALL(apm_gc_,
+ set_target_level_dbfs(11)).Times(2).WillRepeatedly(Return(0));
SetSendParameters(send_parameters_);
SetSend(true);
EXPECT_TRUE(GetSendStream(kSsrc1).IsSending());
- EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
- EXPECT_EQ(agc_config.targetLeveldBOv, 10); // level was attenuated
SetSend(false);
EXPECT_FALSE(GetSendStream(kSsrc1).IsSending());
- EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
}
TEST_F(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) {
EXPECT_TRUE(SetupSendStream());
EXPECT_CALL(adm_,
BuiltInAGCIsAvailable()).Times(2).WillRepeatedly(Return(false));
- webrtc::AgcConfig agc_config;
- EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
- EXPECT_EQ(0, agc_config.targetLeveldBOv);
+ EXPECT_CALL(adm_, SetAGC(true)).Times(2).WillRepeatedly(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(true)).Times(2).WillOnce(Return(0));
send_parameters_.options.tx_agc_target_dbov = rtc::Optional<uint16_t>(3);
send_parameters_.options.tx_agc_digital_compression_gain =
rtc::Optional<uint16_t>(9);
send_parameters_.options.tx_agc_limiter = rtc::Optional<bool>(true);
send_parameters_.options.auto_gain_control = rtc::Optional<bool>(true);
+ EXPECT_CALL(apm_gc_, set_target_level_dbfs(3)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, set_compression_gain_db(9)).WillRepeatedly(Return(0));
+ EXPECT_CALL(apm_gc_, enable_limiter(true)).WillRepeatedly(Return(0));
SetSendParameters(send_parameters_);
- EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
- EXPECT_EQ(3, agc_config.targetLeveldBOv);
- EXPECT_EQ(9, agc_config.digitalCompressionGaindB);
- EXPECT_TRUE(agc_config.limiterEnable);
// Check interaction with adjust_agc_delta. Both should be respected, for
// backwards compatibility.
send_parameters_.options.adjust_agc_delta = rtc::Optional<int>(-10);
+ EXPECT_CALL(apm_gc_, set_target_level_dbfs(13)).WillOnce(Return(0));
SetSendParameters(send_parameters_);
- EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
- EXPECT_EQ(13, agc_config.targetLeveldBOv);
}
TEST_F(WebRtcVoiceEngineTestFake, SampleRatesViaOptions) {
@@ -2957,202 +2984,102 @@ TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) {
BuiltInAGCIsAvailable()).Times(4).WillRepeatedly(Return(false));
EXPECT_CALL(adm_,
BuiltInNSIsAvailable()).Times(2).WillRepeatedly(Return(false));
- bool ec_enabled;
- webrtc::EcModes ec_mode;
- webrtc::AecmModes aecm_mode;
- bool cng_enabled;
- bool agc_enabled;
- webrtc::AgcModes agc_mode;
- webrtc::AgcConfig agc_config;
- bool ns_enabled;
- webrtc::NsModes ns_mode;
- bool stereo_swapping_enabled;
- bool typing_detection_enabled;
- voe_.GetEcStatus(ec_enabled, ec_mode);
- voe_.GetAecmMode(aecm_mode, cng_enabled);
- voe_.GetAgcStatus(agc_enabled, agc_mode);
- voe_.GetAgcConfig(agc_config);
- voe_.GetNsStatus(ns_enabled, ns_mode);
- stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
- voe_.GetTypingDetectionStatus(typing_detection_enabled);
- EXPECT_TRUE(ec_enabled);
- EXPECT_TRUE(voe_.ec_metrics_enabled());
- EXPECT_FALSE(cng_enabled);
- EXPECT_TRUE(agc_enabled);
- EXPECT_EQ(0, agc_config.targetLeveldBOv);
- EXPECT_TRUE(ns_enabled);
- EXPECT_TRUE(IsHighPassFilterEnabled());
- EXPECT_FALSE(stereo_swapping_enabled);
- EXPECT_TRUE(typing_detection_enabled);
- EXPECT_EQ(ec_mode, webrtc::kEcConference);
- EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression);
+
EXPECT_EQ(50, voe_.GetNetEqCapacity());
EXPECT_FALSE(voe_.GetNetEqFastAccelerate());
// Nothing set in AudioOptions, so everything should be as default.
send_parameters_.options = cricket::AudioOptions();
SetSendParameters(send_parameters_);
- voe_.GetEcStatus(ec_enabled, ec_mode);
- voe_.GetAecmMode(aecm_mode, cng_enabled);
- voe_.GetAgcStatus(agc_enabled, agc_mode);
- voe_.GetAgcConfig(agc_config);
- voe_.GetNsStatus(ns_enabled, ns_mode);
- stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
- voe_.GetTypingDetectionStatus(typing_detection_enabled);
- EXPECT_TRUE(ec_enabled);
- EXPECT_TRUE(voe_.ec_metrics_enabled());
- EXPECT_FALSE(cng_enabled);
- EXPECT_TRUE(agc_enabled);
- EXPECT_EQ(0, agc_config.targetLeveldBOv);
- EXPECT_TRUE(ns_enabled);
EXPECT_TRUE(IsHighPassFilterEnabled());
- EXPECT_FALSE(stereo_swapping_enabled);
- EXPECT_TRUE(typing_detection_enabled);
- EXPECT_EQ(ec_mode, webrtc::kEcConference);
- EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression);
EXPECT_EQ(50, voe_.GetNetEqCapacity());
EXPECT_FALSE(voe_.GetNetEqFastAccelerate());
// Turn echo cancellation off
+ EXPECT_CALL(apm_ec_, Enable(false)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(false)).WillOnce(Return(0));
send_parameters_.options.echo_cancellation = rtc::Optional<bool>(false);
SetSendParameters(send_parameters_);
- voe_.GetEcStatus(ec_enabled, ec_mode);
- EXPECT_FALSE(ec_enabled);
// Turn echo cancellation back on, with settings, and make sure
// nothing else changed.
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
send_parameters_.options.echo_cancellation = rtc::Optional<bool>(true);
SetSendParameters(send_parameters_);
- voe_.GetEcStatus(ec_enabled, ec_mode);
- voe_.GetAecmMode(aecm_mode, cng_enabled);
- voe_.GetAgcStatus(agc_enabled, agc_mode);
- voe_.GetAgcConfig(agc_config);
- voe_.GetNsStatus(ns_enabled, ns_mode);
- stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
- voe_.GetTypingDetectionStatus(typing_detection_enabled);
- EXPECT_TRUE(ec_enabled);
- EXPECT_TRUE(voe_.ec_metrics_enabled());
- EXPECT_TRUE(agc_enabled);
- EXPECT_EQ(0, agc_config.targetLeveldBOv);
- EXPECT_TRUE(ns_enabled);
- EXPECT_TRUE(IsHighPassFilterEnabled());
- EXPECT_FALSE(stereo_swapping_enabled);
- EXPECT_TRUE(typing_detection_enabled);
- EXPECT_EQ(ec_mode, webrtc::kEcConference);
- EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression);
// Turn on delay agnostic aec and make sure nothing change w.r.t. echo
// control.
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
send_parameters_.options.delay_agnostic_aec = rtc::Optional<bool>(true);
SetSendParameters(send_parameters_);
- voe_.GetEcStatus(ec_enabled, ec_mode);
- voe_.GetAecmMode(aecm_mode, cng_enabled);
- EXPECT_TRUE(ec_enabled);
- EXPECT_TRUE(voe_.ec_metrics_enabled());
- EXPECT_EQ(ec_mode, webrtc::kEcConference);
// Turn off echo cancellation and delay agnostic aec.
+ EXPECT_CALL(apm_ec_, Enable(false)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(false)).WillOnce(Return(0));
send_parameters_.options.delay_agnostic_aec = rtc::Optional<bool>(false);
send_parameters_.options.extended_filter_aec = rtc::Optional<bool>(false);
send_parameters_.options.echo_cancellation = rtc::Optional<bool>(false);
SetSendParameters(send_parameters_);
- voe_.GetEcStatus(ec_enabled, ec_mode);
- EXPECT_FALSE(ec_enabled);
+
// Turning delay agnostic aec back on should also turn on echo cancellation.
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
send_parameters_.options.delay_agnostic_aec = rtc::Optional<bool>(true);
SetSendParameters(send_parameters_);
- voe_.GetEcStatus(ec_enabled, ec_mode);
- EXPECT_TRUE(ec_enabled);
- EXPECT_TRUE(voe_.ec_metrics_enabled());
- EXPECT_EQ(ec_mode, webrtc::kEcConference);
// Turn off AGC
+ EXPECT_CALL(adm_, SetAGC(false)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(false)).WillOnce(Return(0));
send_parameters_.options.auto_gain_control = rtc::Optional<bool>(false);
SetSendParameters(send_parameters_);
- voe_.GetAgcStatus(agc_enabled, agc_mode);
- EXPECT_FALSE(agc_enabled);
// Turn AGC back on
+ EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
send_parameters_.options.auto_gain_control = rtc::Optional<bool>(true);
send_parameters_.options.adjust_agc_delta = rtc::Optional<int>();
SetSendParameters(send_parameters_);
- voe_.GetAgcStatus(agc_enabled, agc_mode);
- EXPECT_TRUE(agc_enabled);
- voe_.GetAgcConfig(agc_config);
- EXPECT_EQ(0, agc_config.targetLeveldBOv);
// Turn off other options (and stereo swapping on).
+ EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ns_, Enable(false)).WillOnce(Return(0));
+ EXPECT_CALL(apm_vd_, Enable(false)).WillOnce(Return(0));
+ EXPECT_CALL(transmit_mixer_, EnableStereoChannelSwapping(true));
send_parameters_.options.noise_suppression = rtc::Optional<bool>(false);
send_parameters_.options.highpass_filter = rtc::Optional<bool>(false);
send_parameters_.options.typing_detection = rtc::Optional<bool>(false);
send_parameters_.options.stereo_swapping = rtc::Optional<bool>(true);
SetSendParameters(send_parameters_);
- voe_.GetNsStatus(ns_enabled, ns_mode);
- stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
- voe_.GetTypingDetectionStatus(typing_detection_enabled);
- EXPECT_FALSE(ns_enabled);
EXPECT_FALSE(IsHighPassFilterEnabled());
- EXPECT_FALSE(typing_detection_enabled);
- EXPECT_TRUE(stereo_swapping_enabled);
// Set options again to ensure it has no impact.
+ EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ns_, Enable(false)).WillOnce(Return(0));
+ EXPECT_CALL(apm_vd_, Enable(false)).WillOnce(Return(0));
+ EXPECT_CALL(transmit_mixer_, EnableStereoChannelSwapping(true));
SetSendParameters(send_parameters_);
- voe_.GetEcStatus(ec_enabled, ec_mode);
- voe_.GetNsStatus(ns_enabled, ns_mode);
- EXPECT_TRUE(ec_enabled);
- EXPECT_EQ(webrtc::kEcConference, ec_mode);
- EXPECT_FALSE(ns_enabled);
- EXPECT_EQ(webrtc::kNsHighSuppression, ns_mode);
-}
-
-TEST_F(WebRtcVoiceEngineTestFake, DefaultOptions) {
- EXPECT_TRUE(SetupSendStream());
-
- bool ec_enabled;
- webrtc::EcModes ec_mode;
- bool agc_enabled;
- webrtc::AgcModes agc_mode;
- bool ns_enabled;
- webrtc::NsModes ns_mode;
- bool stereo_swapping_enabled;
- bool typing_detection_enabled;
-
- voe_.GetEcStatus(ec_enabled, ec_mode);
- voe_.GetAgcStatus(agc_enabled, agc_mode);
- voe_.GetNsStatus(ns_enabled, ns_mode);
- stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
- voe_.GetTypingDetectionStatus(typing_detection_enabled);
- EXPECT_TRUE(ec_enabled);
- EXPECT_TRUE(agc_enabled);
- EXPECT_TRUE(ns_enabled);
- EXPECT_TRUE(IsHighPassFilterEnabled());
- EXPECT_TRUE(typing_detection_enabled);
- EXPECT_FALSE(stereo_swapping_enabled);
-}
-
-TEST_F(WebRtcVoiceEngineTestFake, InitDoesNotOverwriteDefaultAgcConfig) {
- webrtc::AgcConfig set_config = {0};
- set_config.targetLeveldBOv = 3;
- set_config.digitalCompressionGaindB = 9;
- set_config.limiterEnable = true;
- EXPECT_EQ(0, voe_.SetAgcConfig(set_config));
-
- webrtc::AgcConfig config = {0};
- EXPECT_EQ(0, voe_.GetAgcConfig(config));
- EXPECT_EQ(set_config.targetLeveldBOv, config.targetLeveldBOv);
- EXPECT_EQ(set_config.digitalCompressionGaindB,
- config.digitalCompressionGaindB);
- EXPECT_EQ(set_config.limiterEnable, config.limiterEnable);
}
TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) {
EXPECT_TRUE(SetupSendStream());
EXPECT_CALL(adm_,
- BuiltInAECIsAvailable()).Times(9).WillRepeatedly(Return(false));
+ BuiltInAECIsAvailable()).Times(8).WillRepeatedly(Return(false));
EXPECT_CALL(adm_,
- BuiltInAGCIsAvailable()).Times(9).WillRepeatedly(Return(false));
+ BuiltInAGCIsAvailable()).Times(8).WillRepeatedly(Return(false));
EXPECT_CALL(adm_,
- BuiltInNSIsAvailable()).Times(9).WillRepeatedly(Return(false));
+ BuiltInNSIsAvailable()).Times(8).WillRepeatedly(Return(false));
EXPECT_CALL(adm_,
RecordingIsInitialized()).Times(2).WillRepeatedly(Return(false));
EXPECT_CALL(adm_, Recording()).Times(2).WillRepeatedly(Return(false));
@@ -3180,6 +3107,11 @@ TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) {
parameters_options_all.options.echo_cancellation = rtc::Optional<bool>(true);
parameters_options_all.options.auto_gain_control = rtc::Optional<bool>(true);
parameters_options_all.options.noise_suppression = rtc::Optional<bool>(true);
+ EXPECT_CALL(adm_, SetAGC(true)).Times(2).WillRepeatedly(Return(0));
+ EXPECT_CALL(apm_ec_, Enable(true)).Times(2).WillRepeatedly(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).Times(2).WillRepeatedly(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(true)).Times(2).WillRepeatedly(Return(0));
+ EXPECT_CALL(apm_ns_, Enable(true)).Times(2).WillRepeatedly(Return(0));
EXPECT_TRUE(channel1->SetSendParameters(parameters_options_all));
EXPECT_EQ(parameters_options_all.options, channel1->options());
EXPECT_TRUE(channel2->SetSendParameters(parameters_options_all));
@@ -3189,6 +3121,11 @@ TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) {
cricket::AudioSendParameters parameters_options_no_ns = send_parameters_;
parameters_options_no_ns.options.noise_suppression =
rtc::Optional<bool>(false);
+ EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ns_, Enable(false)).WillOnce(Return(0));
EXPECT_TRUE(channel1->SetSendParameters(parameters_options_no_ns));
cricket::AudioOptions expected_options = parameters_options_all.options;
expected_options.echo_cancellation = rtc::Optional<bool>(true);
@@ -3200,64 +3137,55 @@ TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) {
cricket::AudioSendParameters parameters_options_no_agc = send_parameters_;
parameters_options_no_agc.options.auto_gain_control =
rtc::Optional<bool>(false);
+ EXPECT_CALL(adm_, SetAGC(false)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(false)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ns_, Enable(true)).WillOnce(Return(0));
EXPECT_TRUE(channel2->SetSendParameters(parameters_options_no_agc));
expected_options.echo_cancellation = rtc::Optional<bool>(true);
expected_options.auto_gain_control = rtc::Optional<bool>(false);
expected_options.noise_suppression = rtc::Optional<bool>(true);
EXPECT_EQ(expected_options, channel2->options());
+ EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ns_, Enable(true)).WillOnce(Return(0));
EXPECT_TRUE(channel_->SetSendParameters(parameters_options_all));
- bool ec_enabled;
- webrtc::EcModes ec_mode;
- bool agc_enabled;
- webrtc::AgcModes agc_mode;
- bool ns_enabled;
- webrtc::NsModes ns_mode;
- voe_.GetEcStatus(ec_enabled, ec_mode);
- voe_.GetAgcStatus(agc_enabled, agc_mode);
- voe_.GetNsStatus(ns_enabled, ns_mode);
- EXPECT_TRUE(ec_enabled);
- EXPECT_TRUE(agc_enabled);
- EXPECT_TRUE(ns_enabled);
+ EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ns_, Enable(false)).WillOnce(Return(0));
channel1->SetSend(true);
- voe_.GetEcStatus(ec_enabled, ec_mode);
- voe_.GetAgcStatus(agc_enabled, agc_mode);
- voe_.GetNsStatus(ns_enabled, ns_mode);
- EXPECT_TRUE(ec_enabled);
- EXPECT_TRUE(agc_enabled);
- EXPECT_FALSE(ns_enabled);
+ EXPECT_CALL(adm_, SetAGC(false)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(false)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ns_, Enable(true)).WillOnce(Return(0));
channel2->SetSend(true);
- voe_.GetEcStatus(ec_enabled, ec_mode);
- voe_.GetAgcStatus(agc_enabled, agc_mode);
- voe_.GetNsStatus(ns_enabled, ns_mode);
- EXPECT_TRUE(ec_enabled);
- EXPECT_FALSE(agc_enabled);
- EXPECT_TRUE(ns_enabled);
// Make sure settings take effect while we are sending.
- EXPECT_TRUE(channel_->SetSendParameters(parameters_options_all));
- EXPECT_CALL(apm_, ApplyConfig(testing::_));
- EXPECT_CALL(apm_, SetExtraOptions(testing::_));
cricket::AudioSendParameters parameters_options_no_agc_nor_ns =
send_parameters_;
parameters_options_no_agc_nor_ns.options.auto_gain_control =
rtc::Optional<bool>(false);
parameters_options_no_agc_nor_ns.options.noise_suppression =
rtc::Optional<bool>(false);
- channel2->SetSend(true);
+ EXPECT_CALL(adm_, SetAGC(false)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+ EXPECT_CALL(apm_gc_, Enable(false)).WillOnce(Return(0));
+ EXPECT_CALL(apm_ns_, Enable(false)).WillOnce(Return(0));
EXPECT_TRUE(channel2->SetSendParameters(parameters_options_no_agc_nor_ns));
expected_options.echo_cancellation = rtc::Optional<bool>(true);
expected_options.auto_gain_control = rtc::Optional<bool>(false);
expected_options.noise_suppression = rtc::Optional<bool>(false);
EXPECT_EQ(expected_options, channel2->options());
- voe_.GetEcStatus(ec_enabled, ec_mode);
- voe_.GetAgcStatus(agc_enabled, agc_mode);
- voe_.GetNsStatus(ns_enabled, ns_mode);
- EXPECT_TRUE(ec_enabled);
- EXPECT_FALSE(agc_enabled);
- EXPECT_FALSE(ns_enabled);
}
// This test verifies DSCP settings are properly applied on voice media channel.
« no previous file with comments | « webrtc/media/engine/webrtcvoiceengine.cc ('k') | webrtc/voice_engine/include/voe_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698