| Index: talk/media/webrtc/webrtcvoiceengine_unittest.cc
|
| diff --git a/talk/media/webrtc/webrtcvoiceengine_unittest.cc b/talk/media/webrtc/webrtcvoiceengine_unittest.cc
|
| index f639e74b5c2d547127959d17c9aaad048a9585e7..a62bcb225fc7c6111fed44c0a43507f1ecf7b353 100644
|
| --- a/talk/media/webrtc/webrtcvoiceengine_unittest.cc
|
| +++ b/talk/media/webrtc/webrtcvoiceengine_unittest.cc
|
| @@ -80,7 +80,6 @@ class WebRtcVoiceEngineTestFake : public testing::Test {
|
| channel_(nullptr) {
|
| send_parameters_.codecs.push_back(kPcmuCodec);
|
| recv_parameters_.codecs.push_back(kPcmuCodec);
|
| - options_adjust_agc_.adjust_agc_delta = rtc::Optional<int>(-10);
|
| }
|
| bool SetupEngine() {
|
| if (!engine_.Init(rtc::Thread::Current())) {
|
| @@ -398,10 +397,8 @@ class WebRtcVoiceEngineTestFake : public testing::Test {
|
| cricket::FakeWebRtcVoiceEngine voe_;
|
| cricket::WebRtcVoiceEngine engine_;
|
| cricket::VoiceMediaChannel* channel_;
|
| -
|
| cricket::AudioSendParameters send_parameters_;
|
| cricket::AudioRecvParameters recv_parameters_;
|
| - cricket::AudioOptions options_adjust_agc_;
|
| };
|
|
|
| // Tests that our stub library "works".
|
| @@ -2161,96 +2158,17 @@ TEST_F(WebRtcVoiceEngineTestFake, PlayoutWithMultipleStreams) {
|
| EXPECT_FALSE(voe_.GetPlayout(channel_num1));
|
| }
|
|
|
| -// Test that we can set the devices to use.
|
| -TEST_F(WebRtcVoiceEngineTestFake, SetDevices) {
|
| - EXPECT_TRUE(SetupEngineWithSendStream());
|
| - int send_channel = voe_.GetLastChannel();
|
| - EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2)));
|
| - int recv_channel = voe_.GetLastChannel();
|
| - EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
|
| -
|
| - cricket::Device default_dev(cricket::kFakeDefaultDeviceName,
|
| - cricket::kFakeDefaultDeviceId);
|
| - cricket::Device dev(cricket::kFakeDeviceName,
|
| - cricket::kFakeDeviceId);
|
| -
|
| - // Test SetDevices() while not sending or playing.
|
| - EXPECT_TRUE(engine_.SetDevices(&default_dev, &default_dev));
|
| -
|
| - // Test SetDevices() while sending and playing.
|
| - EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE));
|
| - EXPECT_TRUE(channel_->SetPlayout(true));
|
| - EXPECT_TRUE(voe_.GetSend(send_channel));
|
| - EXPECT_TRUE(voe_.GetPlayout(recv_channel));
|
| -
|
| - EXPECT_TRUE(engine_.SetDevices(&dev, &dev));
|
| -
|
| - EXPECT_TRUE(voe_.GetSend(send_channel));
|
| - EXPECT_TRUE(voe_.GetPlayout(recv_channel));
|
| -
|
| - // Test that failure to open newly selected devices does not prevent opening
|
| - // ones after that.
|
| - voe_.set_playout_fail_channel(recv_channel);
|
| - voe_.set_send_fail_channel(send_channel);
|
| -
|
| - EXPECT_FALSE(engine_.SetDevices(&default_dev, &default_dev));
|
| -
|
| - EXPECT_FALSE(voe_.GetSend(send_channel));
|
| - EXPECT_FALSE(voe_.GetPlayout(recv_channel));
|
| -
|
| - voe_.set_playout_fail_channel(-1);
|
| - voe_.set_send_fail_channel(-1);
|
| -
|
| - EXPECT_TRUE(engine_.SetDevices(&dev, &dev));
|
| -
|
| - EXPECT_TRUE(voe_.GetSend(send_channel));
|
| - EXPECT_TRUE(voe_.GetPlayout(recv_channel));
|
| -}
|
| -
|
| -// Test that we can set the devices to use even if we failed to
|
| -// open the initial ones.
|
| -TEST_F(WebRtcVoiceEngineTestFake, SetDevicesWithInitiallyBadDevices) {
|
| - EXPECT_TRUE(SetupEngineWithSendStream());
|
| - int send_channel = voe_.GetLastChannel();
|
| - EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2)));
|
| - int recv_channel = voe_.GetLastChannel();
|
| - EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
|
| -
|
| - cricket::Device default_dev(cricket::kFakeDefaultDeviceName,
|
| - cricket::kFakeDefaultDeviceId);
|
| - cricket::Device dev(cricket::kFakeDeviceName,
|
| - cricket::kFakeDeviceId);
|
| -
|
| - // Test that failure to open devices selected before starting
|
| - // send/play does not prevent opening newly selected ones after that.
|
| - voe_.set_playout_fail_channel(recv_channel);
|
| - voe_.set_send_fail_channel(send_channel);
|
| -
|
| - EXPECT_TRUE(engine_.SetDevices(&default_dev, &default_dev));
|
| -
|
| - EXPECT_FALSE(channel_->SetSend(cricket::SEND_MICROPHONE));
|
| - EXPECT_FALSE(channel_->SetPlayout(true));
|
| - EXPECT_FALSE(voe_.GetSend(send_channel));
|
| - EXPECT_FALSE(voe_.GetPlayout(recv_channel));
|
| -
|
| - voe_.set_playout_fail_channel(-1);
|
| - voe_.set_send_fail_channel(-1);
|
| -
|
| - EXPECT_TRUE(engine_.SetDevices(&dev, &dev));
|
| -
|
| - EXPECT_TRUE(voe_.GetSend(send_channel));
|
| - EXPECT_TRUE(voe_.GetPlayout(recv_channel));
|
| -}
|
| -
|
| // Test that we can create a channel configured for Codian bridges,
|
| // and start sending on it.
|
| TEST_F(WebRtcVoiceEngineTestFake, CodianSend) {
|
| EXPECT_TRUE(SetupEngineWithSendStream());
|
| + cricket::AudioOptions options_adjust_agc;
|
| + options_adjust_agc.adjust_agc_delta = rtc::Optional<int>(-10);
|
| int channel_num = voe_.GetLastChannel();
|
| 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 = options_adjust_agc;
|
| EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
|
| EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE));
|
| EXPECT_TRUE(voe_.GetSend(channel_num));
|
| @@ -2259,7 +2177,6 @@ TEST_F(WebRtcVoiceEngineTestFake, CodianSend) {
|
| EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING));
|
| EXPECT_FALSE(voe_.GetSend(channel_num));
|
| EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
|
| - EXPECT_EQ(0, agc_config.targetLeveldBOv); // level was restored
|
| }
|
|
|
| TEST_F(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) {
|
| @@ -2267,14 +2184,12 @@ TEST_F(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) {
|
| webrtc::AgcConfig agc_config;
|
| EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
|
| EXPECT_EQ(0, agc_config.targetLeveldBOv);
|
| -
|
| - cricket::AudioOptions options;
|
| - options.tx_agc_target_dbov = rtc::Optional<uint16_t>(3);
|
| - options.tx_agc_digital_compression_gain = rtc::Optional<uint16_t>(9);
|
| - options.tx_agc_limiter = rtc::Optional<bool>(true);
|
| - options.auto_gain_control = rtc::Optional<bool>(true);
|
| - EXPECT_TRUE(engine_.SetOptions(options));
|
| -
|
| + 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_TRUE(channel_->SetSendParameters(send_parameters_));
|
| EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
|
| EXPECT_EQ(3, agc_config.targetLeveldBOv);
|
| EXPECT_EQ(9, agc_config.digitalCompressionGaindB);
|
| @@ -2282,19 +2197,18 @@ TEST_F(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) {
|
|
|
| // Check interaction with adjust_agc_delta. Both should be respected, for
|
| // backwards compatibility.
|
| - options.adjust_agc_delta = rtc::Optional<int>(-10);
|
| - EXPECT_TRUE(engine_.SetOptions(options));
|
| -
|
| + send_parameters_.options.adjust_agc_delta = rtc::Optional<int>(-10);
|
| + EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
|
| EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
|
| EXPECT_EQ(13, agc_config.targetLeveldBOv);
|
| }
|
|
|
| TEST_F(WebRtcVoiceEngineTestFake, SampleRatesViaOptions) {
|
| EXPECT_TRUE(SetupEngineWithSendStream());
|
| - cricket::AudioOptions options;
|
| - options.recording_sample_rate = rtc::Optional<uint32_t>(48000);
|
| - options.playout_sample_rate = rtc::Optional<uint32_t>(44100);
|
| - EXPECT_TRUE(engine_.SetOptions(options));
|
| + send_parameters_.options.recording_sample_rate =
|
| + rtc::Optional<uint32_t>(48000);
|
| + send_parameters_.options.playout_sample_rate = rtc::Optional<uint32_t>(44100);
|
| + EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
|
|
|
| unsigned int recording_sample_rate, playout_sample_rate;
|
| EXPECT_EQ(0, voe_.RecordingSampleRate(&recording_sample_rate));
|
| @@ -2638,10 +2552,12 @@ TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) {
|
| 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, so all ignored.
|
| - cricket::AudioOptions options;
|
| - ASSERT_TRUE(engine_.SetOptions(options));
|
| + // Nothing set in AudioOptions, so everything should be as default.
|
| + send_parameters_.options = cricket::AudioOptions();
|
| + EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
|
| voe_.GetEcStatus(ec_enabled, ec_mode);
|
| voe_.GetAecmMode(aecm_mode, cng_enabled);
|
| voe_.GetAgcStatus(agc_enabled, agc_mode);
|
| @@ -2661,20 +2577,19 @@ TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) {
|
| EXPECT_TRUE(typing_detection_enabled);
|
| EXPECT_EQ(ec_mode, webrtc::kEcConference);
|
| EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression);
|
| - EXPECT_EQ(50, voe_.GetNetEqCapacity()); // From GetDefaultEngineOptions().
|
| - EXPECT_FALSE(
|
| - voe_.GetNetEqFastAccelerate()); // From GetDefaultEngineOptions().
|
| + EXPECT_EQ(50, voe_.GetNetEqCapacity());
|
| + EXPECT_FALSE(voe_.GetNetEqFastAccelerate());
|
|
|
| // Turn echo cancellation off
|
| - options.echo_cancellation = rtc::Optional<bool>(false);
|
| - ASSERT_TRUE(engine_.SetOptions(options));
|
| + send_parameters_.options.echo_cancellation = rtc::Optional<bool>(false);
|
| + EXPECT_TRUE(channel_->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.
|
| - options.echo_cancellation = rtc::Optional<bool>(true);
|
| - ASSERT_TRUE(engine_.SetOptions(options));
|
| + send_parameters_.options.echo_cancellation = rtc::Optional<bool>(true);
|
| + EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
|
| voe_.GetEcStatus(ec_enabled, ec_mode);
|
| voe_.GetAecmMode(aecm_mode, cng_enabled);
|
| voe_.GetAgcStatus(agc_enabled, agc_mode);
|
| @@ -2696,8 +2611,8 @@ TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) {
|
|
|
| // Turn on delay agnostic aec and make sure nothing change w.r.t. echo
|
| // control.
|
| - options.delay_agnostic_aec = rtc::Optional<bool>(true);
|
| - ASSERT_TRUE(engine_.SetOptions(options));
|
| + send_parameters_.options.delay_agnostic_aec = rtc::Optional<bool>(true);
|
| + EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
|
| voe_.GetEcStatus(ec_enabled, ec_mode);
|
| voe_.GetAecmMode(aecm_mode, cng_enabled);
|
| EXPECT_TRUE(ec_enabled);
|
| @@ -2705,41 +2620,41 @@ TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) {
|
| EXPECT_EQ(ec_mode, webrtc::kEcConference);
|
|
|
| // Turn off echo cancellation and delay agnostic aec.
|
| - options.delay_agnostic_aec = rtc::Optional<bool>(false);
|
| - options.extended_filter_aec = rtc::Optional<bool>(false);
|
| - options.echo_cancellation = rtc::Optional<bool>(false);
|
| - ASSERT_TRUE(engine_.SetOptions(options));
|
| + 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);
|
| + EXPECT_TRUE(channel_->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.
|
| - options.delay_agnostic_aec = rtc::Optional<bool>(true);
|
| - ASSERT_TRUE(engine_.SetOptions(options));
|
| + send_parameters_.options.delay_agnostic_aec = rtc::Optional<bool>(true);
|
| + EXPECT_TRUE(channel_->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
|
| - options.auto_gain_control = rtc::Optional<bool>(false);
|
| - ASSERT_TRUE(engine_.SetOptions(options));
|
| + send_parameters_.options.auto_gain_control = rtc::Optional<bool>(false);
|
| + EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
|
| voe_.GetAgcStatus(agc_enabled, agc_mode);
|
| EXPECT_FALSE(agc_enabled);
|
|
|
| // Turn AGC back on
|
| - options.auto_gain_control = rtc::Optional<bool>(true);
|
| - options.adjust_agc_delta = rtc::Optional<int>();
|
| - ASSERT_TRUE(engine_.SetOptions(options));
|
| + send_parameters_.options.auto_gain_control = rtc::Optional<bool>(true);
|
| + send_parameters_.options.adjust_agc_delta = rtc::Optional<int>();
|
| + EXPECT_TRUE(channel_->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).
|
| - options.noise_suppression = rtc::Optional<bool>(false);
|
| - options.highpass_filter = rtc::Optional<bool>(false);
|
| - options.typing_detection = rtc::Optional<bool>(false);
|
| - options.stereo_swapping = rtc::Optional<bool>(true);
|
| - ASSERT_TRUE(engine_.SetOptions(options));
|
| + 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);
|
| + EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
|
| voe_.GetNsStatus(ns_enabled, ns_mode);
|
| highpass_filter_enabled = voe_.IsHighPassFilterEnabled();
|
| stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
|
| @@ -2750,7 +2665,7 @@ TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) {
|
| EXPECT_TRUE(stereo_swapping_enabled);
|
|
|
| // Set options again to ensure it has no impact.
|
| - ASSERT_TRUE(engine_.SetOptions(options));
|
| + EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
|
| voe_.GetEcStatus(ec_enabled, ec_mode);
|
| voe_.GetNsStatus(ns_enabled, ns_mode);
|
| EXPECT_TRUE(ec_enabled);
|
| @@ -2850,7 +2765,7 @@ TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) {
|
| expected_options.noise_suppression = rtc::Optional<bool>(true);
|
| EXPECT_EQ(expected_options, channel2->options());
|
|
|
| - ASSERT_TRUE(engine_.SetOptions(parameters_options_all.options));
|
| + ASSERT_TRUE(channel_->SetSendParameters(parameters_options_all));
|
| bool ec_enabled;
|
| webrtc::EcModes ec_mode;
|
| bool agc_enabled;
|
| @@ -2872,14 +2787,6 @@ TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) {
|
| EXPECT_TRUE(agc_enabled);
|
| EXPECT_FALSE(ns_enabled);
|
|
|
| - channel1->SetSend(cricket::SEND_NOTHING);
|
| - 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);
|
| -
|
| channel2->SetSend(cricket::SEND_MICROPHONE);
|
| voe_.GetEcStatus(ec_enabled, ec_mode);
|
| voe_.GetAgcStatus(agc_enabled, agc_mode);
|
| @@ -2888,16 +2795,8 @@ TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) {
|
| EXPECT_FALSE(agc_enabled);
|
| EXPECT_TRUE(ns_enabled);
|
|
|
| - channel2->SetSend(cricket::SEND_NOTHING);
|
| - 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);
|
| -
|
| // Make sure settings take effect while we are sending.
|
| - ASSERT_TRUE(engine_.SetOptions(parameters_options_all.options));
|
| + ASSERT_TRUE(channel_->SetSendParameters(parameters_options_all));
|
| cricket::AudioSendParameters parameters_options_no_agc_nor_ns =
|
| send_parameters_;
|
| parameters_options_no_agc_nor_ns.options.auto_gain_control =
|
| @@ -3072,13 +2971,12 @@ TEST_F(WebRtcVoiceEngineTestFake, ConfigureCombinedBweForNewRecvStreams) {
|
| send_parameters_.options.combined_audio_video_bwe = rtc::Optional<bool>(true);
|
| EXPECT_TRUE(media_channel->SetSendParameters(send_parameters_));
|
|
|
| - static const uint32_t kSsrcs[] = {1, 2, 3, 4};
|
| - for (unsigned int i = 0; i < arraysize(kSsrcs); ++i) {
|
| + for (uint32_t ssrc : kSsrcs4) {
|
| EXPECT_TRUE(media_channel->AddRecvStream(
|
| - cricket::StreamParams::CreateLegacy(kSsrcs[i])));
|
| - EXPECT_NE(nullptr, call_.GetAudioReceiveStream(kSsrcs[i]));
|
| + cricket::StreamParams::CreateLegacy(ssrc)));
|
| + EXPECT_NE(nullptr, call_.GetAudioReceiveStream(ssrc));
|
| }
|
| - EXPECT_EQ(arraysize(kSsrcs), call_.GetAudioReceiveStreams().size());
|
| + EXPECT_EQ(arraysize(kSsrcs4), call_.GetAudioReceiveStreams().size());
|
| }
|
|
|
| // TODO(solenberg): Remove, once recv streams are configured through Call.
|
| @@ -3207,18 +3105,6 @@ TEST_F(WebRtcVoiceEngineTestFake, AssociateChannelResetUponDeleteChannnel) {
|
| EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), -1);
|
| }
|
|
|
| -// Tests for the actual WebRtc VoE library.
|
| -
|
| -TEST(WebRtcVoiceEngineTest, TestDefaultOptionsBeforeInit) {
|
| - cricket::WebRtcVoiceEngine engine;
|
| - cricket::AudioOptions options = engine.GetOptions();
|
| - // The default options should have at least a few things set. We purposefully
|
| - // don't check the option values here, though.
|
| - EXPECT_TRUE(options.echo_cancellation);
|
| - EXPECT_TRUE(options.auto_gain_control);
|
| - EXPECT_TRUE(options.noise_suppression);
|
| -}
|
| -
|
| // Tests that the library initializes and shuts down properly.
|
| TEST(WebRtcVoiceEngineTest, StartupShutdown) {
|
| cricket::WebRtcVoiceEngine engine;
|
|
|