| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2008 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2008 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 engine) { // volume | 60 engine) { // volume |
| 61 } | 61 } |
| 62 }; | 62 }; |
| 63 } // namespace | 63 } // namespace |
| 64 | 64 |
| 65 // Tests that our stub library "works". | 65 // Tests that our stub library "works". |
| 66 TEST(WebRtcVoiceEngineTestStubLibrary, StartupShutdown) { | 66 TEST(WebRtcVoiceEngineTestStubLibrary, StartupShutdown) { |
| 67 StrictMock<webrtc::test::MockAudioDeviceModule> adm; | 67 StrictMock<webrtc::test::MockAudioDeviceModule> adm; |
| 68 EXPECT_CALL(adm, AddRef()).WillOnce(Return(0)); | 68 EXPECT_CALL(adm, AddRef()).WillOnce(Return(0)); |
| 69 EXPECT_CALL(adm, Release()).WillOnce(Return(0)); | 69 EXPECT_CALL(adm, Release()).WillOnce(Return(0)); |
| 70 EXPECT_CALL(adm, BuiltInAECIsAvailable()).WillOnce(Return(false)); |
| 71 EXPECT_CALL(adm, BuiltInAGCIsAvailable()).WillOnce(Return(false)); |
| 72 EXPECT_CALL(adm, BuiltInNSIsAvailable()).WillOnce(Return(false)); |
| 70 cricket::FakeWebRtcVoiceEngine voe; | 73 cricket::FakeWebRtcVoiceEngine voe; |
| 71 EXPECT_FALSE(voe.IsInited()); | 74 EXPECT_FALSE(voe.IsInited()); |
| 72 { | 75 { |
| 73 cricket::WebRtcVoiceEngine engine(&adm, new FakeVoEWrapper(&voe)); | 76 cricket::WebRtcVoiceEngine engine(&adm, new FakeVoEWrapper(&voe)); |
| 74 EXPECT_TRUE(voe.IsInited()); | 77 EXPECT_TRUE(voe.IsInited()); |
| 75 } | 78 } |
| 76 EXPECT_FALSE(voe.IsInited()); | 79 EXPECT_FALSE(voe.IsInited()); |
| 77 } | 80 } |
| 78 | 81 |
| 79 class FakeAudioSink : public webrtc::AudioSinkInterface { | 82 class FakeAudioSink : public webrtc::AudioSinkInterface { |
| 80 public: | 83 public: |
| 81 void OnData(const Data& audio) override {} | 84 void OnData(const Data& audio) override {} |
| 82 }; | 85 }; |
| 83 | 86 |
| 84 class FakeAudioSource : public cricket::AudioSource { | 87 class FakeAudioSource : public cricket::AudioSource { |
| 85 void SetSink(Sink* sink) override {} | 88 void SetSink(Sink* sink) override {} |
| 86 }; | 89 }; |
| 87 | 90 |
| 88 class WebRtcVoiceEngineTestFake : public testing::Test { | 91 class WebRtcVoiceEngineTestFake : public testing::Test { |
| 89 public: | 92 public: |
| 90 WebRtcVoiceEngineTestFake() : WebRtcVoiceEngineTestFake("") {} | 93 WebRtcVoiceEngineTestFake() : WebRtcVoiceEngineTestFake("") {} |
| 91 | 94 |
| 92 explicit WebRtcVoiceEngineTestFake(const char* field_trials) | 95 explicit WebRtcVoiceEngineTestFake(const char* field_trials) |
| 93 : call_(webrtc::Call::Config()), override_field_trials_(field_trials) { | 96 : call_(webrtc::Call::Config()), override_field_trials_(field_trials) { |
| 94 EXPECT_CALL(adm_, AddRef()).WillOnce(Return(0)); | 97 EXPECT_CALL(adm_, AddRef()).WillOnce(Return(0)); |
| 95 EXPECT_CALL(adm_, Release()).WillOnce(Return(0)); | 98 EXPECT_CALL(adm_, Release()).WillOnce(Return(0)); |
| 99 EXPECT_CALL(adm_, BuiltInAECIsAvailable()).WillOnce(Return(false)); |
| 100 EXPECT_CALL(adm_, BuiltInAGCIsAvailable()).WillOnce(Return(false)); |
| 101 EXPECT_CALL(adm_, BuiltInNSIsAvailable()).WillOnce(Return(false)); |
| 96 engine_.reset(new cricket::WebRtcVoiceEngine(&adm_, | 102 engine_.reset(new cricket::WebRtcVoiceEngine(&adm_, |
| 97 new FakeVoEWrapper(&voe_))); | 103 new FakeVoEWrapper(&voe_))); |
| 98 send_parameters_.codecs.push_back(kPcmuCodec); | 104 send_parameters_.codecs.push_back(kPcmuCodec); |
| 99 recv_parameters_.codecs.push_back(kPcmuCodec); | 105 recv_parameters_.codecs.push_back(kPcmuCodec); |
| 100 } | 106 } |
| 101 bool SetupChannel() { | 107 bool SetupChannel() { |
| 102 channel_ = engine_->CreateChannel(&call_, cricket::MediaConfig(), | 108 channel_ = engine_->CreateChannel(&call_, cricket::MediaConfig(), |
| 103 cricket::AudioOptions()); | 109 cricket::AudioOptions()); |
| 104 return (channel_ != nullptr); | 110 return (channel_ != nullptr); |
| 105 } | 111 } |
| (...skipping 2289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2395 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); | 2401 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); |
| 2396 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); | 2402 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); |
| 2397 EXPECT_EQ(agc_config.targetLeveldBOv, 10); // level was attenuated | 2403 EXPECT_EQ(agc_config.targetLeveldBOv, 10); // level was attenuated |
| 2398 channel_->SetSend(false); | 2404 channel_->SetSend(false); |
| 2399 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); | 2405 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); |
| 2400 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); | 2406 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); |
| 2401 } | 2407 } |
| 2402 | 2408 |
| 2403 TEST_F(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) { | 2409 TEST_F(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) { |
| 2404 EXPECT_TRUE(SetupSendStream()); | 2410 EXPECT_TRUE(SetupSendStream()); |
| 2411 EXPECT_CALL(adm_, |
| 2412 BuiltInAGCIsAvailable()).Times(2).WillRepeatedly(Return(false)); |
| 2405 webrtc::AgcConfig agc_config; | 2413 webrtc::AgcConfig agc_config; |
| 2406 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); | 2414 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); |
| 2407 EXPECT_EQ(0, agc_config.targetLeveldBOv); | 2415 EXPECT_EQ(0, agc_config.targetLeveldBOv); |
| 2408 send_parameters_.options.tx_agc_target_dbov = rtc::Optional<uint16_t>(3); | 2416 send_parameters_.options.tx_agc_target_dbov = rtc::Optional<uint16_t>(3); |
| 2409 send_parameters_.options.tx_agc_digital_compression_gain = | 2417 send_parameters_.options.tx_agc_digital_compression_gain = |
| 2410 rtc::Optional<uint16_t>(9); | 2418 rtc::Optional<uint16_t>(9); |
| 2411 send_parameters_.options.tx_agc_limiter = rtc::Optional<bool>(true); | 2419 send_parameters_.options.tx_agc_limiter = rtc::Optional<bool>(true); |
| 2412 send_parameters_.options.auto_gain_control = rtc::Optional<bool>(true); | 2420 send_parameters_.options.auto_gain_control = rtc::Optional<bool>(true); |
| 2413 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2421 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
| 2414 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); | 2422 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); |
| 2415 EXPECT_EQ(3, agc_config.targetLeveldBOv); | 2423 EXPECT_EQ(3, agc_config.targetLeveldBOv); |
| 2416 EXPECT_EQ(9, agc_config.digitalCompressionGaindB); | 2424 EXPECT_EQ(9, agc_config.digitalCompressionGaindB); |
| 2417 EXPECT_TRUE(agc_config.limiterEnable); | 2425 EXPECT_TRUE(agc_config.limiterEnable); |
| 2418 | 2426 |
| 2419 // Check interaction with adjust_agc_delta. Both should be respected, for | 2427 // Check interaction with adjust_agc_delta. Both should be respected, for |
| 2420 // backwards compatibility. | 2428 // backwards compatibility. |
| 2421 send_parameters_.options.adjust_agc_delta = rtc::Optional<int>(-10); | 2429 send_parameters_.options.adjust_agc_delta = rtc::Optional<int>(-10); |
| 2422 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2430 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
| 2423 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); | 2431 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); |
| 2424 EXPECT_EQ(13, agc_config.targetLeveldBOv); | 2432 EXPECT_EQ(13, agc_config.targetLeveldBOv); |
| 2425 } | 2433 } |
| 2426 | 2434 |
| 2427 TEST_F(WebRtcVoiceEngineTestFake, SampleRatesViaOptions) { | 2435 TEST_F(WebRtcVoiceEngineTestFake, SampleRatesViaOptions) { |
| 2428 EXPECT_TRUE(SetupSendStream()); | 2436 EXPECT_TRUE(SetupSendStream()); |
| 2437 EXPECT_CALL(adm_, SetRecordingSampleRate(48000)).WillOnce(Return(0)); |
| 2438 EXPECT_CALL(adm_, SetPlayoutSampleRate(44100)).WillOnce(Return(0)); |
| 2429 send_parameters_.options.recording_sample_rate = | 2439 send_parameters_.options.recording_sample_rate = |
| 2430 rtc::Optional<uint32_t>(48000); | 2440 rtc::Optional<uint32_t>(48000); |
| 2431 send_parameters_.options.playout_sample_rate = rtc::Optional<uint32_t>(44100); | 2441 send_parameters_.options.playout_sample_rate = rtc::Optional<uint32_t>(44100); |
| 2432 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2442 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
| 2433 | |
| 2434 unsigned int recording_sample_rate, playout_sample_rate; | |
| 2435 EXPECT_EQ(0, voe_.RecordingSampleRate(&recording_sample_rate)); | |
| 2436 EXPECT_EQ(0, voe_.PlayoutSampleRate(&playout_sample_rate)); | |
| 2437 EXPECT_EQ(48000u, recording_sample_rate); | |
| 2438 EXPECT_EQ(44100u, playout_sample_rate); | |
| 2439 } | 2443 } |
| 2440 | 2444 |
| 2441 // Test that we can set the outgoing SSRC properly. | 2445 // Test that we can set the outgoing SSRC properly. |
| 2442 // SSRC is set in SetupSendStream() by calling AddSendStream. | 2446 // SSRC is set in SetupSendStream() by calling AddSendStream. |
| 2443 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrc) { | 2447 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrc) { |
| 2444 EXPECT_TRUE(SetupSendStream()); | 2448 EXPECT_TRUE(SetupSendStream()); |
| 2445 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); | 2449 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); |
| 2446 } | 2450 } |
| 2447 | 2451 |
| 2448 TEST_F(WebRtcVoiceEngineTestFake, GetStats) { | 2452 TEST_F(WebRtcVoiceEngineTestFake, GetStats) { |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2732 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2736 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); |
| 2733 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); | 2737 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); |
| 2734 EXPECT_TRUE(channel_->SetPlayout(true)); | 2738 EXPECT_TRUE(channel_->SetPlayout(true)); |
| 2735 voe_.set_playout_fail_channel(voe_.GetLastChannel() - 1); | 2739 voe_.set_playout_fail_channel(voe_.GetLastChannel() - 1); |
| 2736 EXPECT_TRUE(channel_->SetPlayout(false)); | 2740 EXPECT_TRUE(channel_->SetPlayout(false)); |
| 2737 EXPECT_FALSE(channel_->SetPlayout(true)); | 2741 EXPECT_FALSE(channel_->SetPlayout(true)); |
| 2738 } | 2742 } |
| 2739 | 2743 |
| 2740 TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) { | 2744 TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) { |
| 2741 EXPECT_TRUE(SetupSendStream()); | 2745 EXPECT_TRUE(SetupSendStream()); |
| 2742 | 2746 EXPECT_CALL(adm_, |
| 2747 BuiltInAECIsAvailable()).Times(9).WillRepeatedly(Return(false)); |
| 2748 EXPECT_CALL(adm_, |
| 2749 BuiltInAGCIsAvailable()).Times(4).WillRepeatedly(Return(false)); |
| 2750 EXPECT_CALL(adm_, |
| 2751 BuiltInNSIsAvailable()).Times(2).WillRepeatedly(Return(false)); |
| 2743 bool ec_enabled; | 2752 bool ec_enabled; |
| 2744 webrtc::EcModes ec_mode; | 2753 webrtc::EcModes ec_mode; |
| 2745 webrtc::AecmModes aecm_mode; | 2754 webrtc::AecmModes aecm_mode; |
| 2746 bool cng_enabled; | 2755 bool cng_enabled; |
| 2747 bool agc_enabled; | 2756 bool agc_enabled; |
| 2748 webrtc::AgcModes agc_mode; | 2757 webrtc::AgcModes agc_mode; |
| 2749 webrtc::AgcConfig agc_config; | 2758 webrtc::AgcConfig agc_config; |
| 2750 bool ns_enabled; | 2759 bool ns_enabled; |
| 2751 webrtc::NsModes ns_mode; | 2760 webrtc::NsModes ns_mode; |
| 2752 bool highpass_filter_enabled; | 2761 bool highpass_filter_enabled; |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2930 webrtc::AgcConfig config = {0}; | 2939 webrtc::AgcConfig config = {0}; |
| 2931 EXPECT_EQ(0, voe_.GetAgcConfig(config)); | 2940 EXPECT_EQ(0, voe_.GetAgcConfig(config)); |
| 2932 EXPECT_EQ(set_config.targetLeveldBOv, config.targetLeveldBOv); | 2941 EXPECT_EQ(set_config.targetLeveldBOv, config.targetLeveldBOv); |
| 2933 EXPECT_EQ(set_config.digitalCompressionGaindB, | 2942 EXPECT_EQ(set_config.digitalCompressionGaindB, |
| 2934 config.digitalCompressionGaindB); | 2943 config.digitalCompressionGaindB); |
| 2935 EXPECT_EQ(set_config.limiterEnable, config.limiterEnable); | 2944 EXPECT_EQ(set_config.limiterEnable, config.limiterEnable); |
| 2936 } | 2945 } |
| 2937 | 2946 |
| 2938 TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) { | 2947 TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) { |
| 2939 EXPECT_TRUE(SetupSendStream()); | 2948 EXPECT_TRUE(SetupSendStream()); |
| 2949 EXPECT_CALL(adm_, |
| 2950 BuiltInAECIsAvailable()).Times(9).WillRepeatedly(Return(false)); |
| 2951 EXPECT_CALL(adm_, |
| 2952 BuiltInAGCIsAvailable()).Times(9).WillRepeatedly(Return(false)); |
| 2953 EXPECT_CALL(adm_, |
| 2954 BuiltInNSIsAvailable()).Times(9).WillRepeatedly(Return(false)); |
| 2955 |
| 2940 std::unique_ptr<cricket::WebRtcVoiceMediaChannel> channel1( | 2956 std::unique_ptr<cricket::WebRtcVoiceMediaChannel> channel1( |
| 2941 static_cast<cricket::WebRtcVoiceMediaChannel*>(engine_->CreateChannel( | 2957 static_cast<cricket::WebRtcVoiceMediaChannel*>(engine_->CreateChannel( |
| 2942 &call_, cricket::MediaConfig(), cricket::AudioOptions()))); | 2958 &call_, cricket::MediaConfig(), cricket::AudioOptions()))); |
| 2943 std::unique_ptr<cricket::WebRtcVoiceMediaChannel> channel2( | 2959 std::unique_ptr<cricket::WebRtcVoiceMediaChannel> channel2( |
| 2944 static_cast<cricket::WebRtcVoiceMediaChannel*>(engine_->CreateChannel( | 2960 static_cast<cricket::WebRtcVoiceMediaChannel*>(engine_->CreateChannel( |
| 2945 &call_, cricket::MediaConfig(), cricket::AudioOptions()))); | 2961 &call_, cricket::MediaConfig(), cricket::AudioOptions()))); |
| 2946 | 2962 |
| 2947 // Have to add a stream to make SetSend work. | 2963 // Have to add a stream to make SetSend work. |
| 2948 cricket::StreamParams stream1; | 2964 cricket::StreamParams stream1; |
| 2949 stream1.ssrcs.push_back(1); | 2965 stream1.ssrcs.push_back(1); |
| (...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3477 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { | 3493 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { |
| 3478 cricket::WebRtcVoiceEngine engine(nullptr); | 3494 cricket::WebRtcVoiceEngine engine(nullptr); |
| 3479 std::unique_ptr<webrtc::Call> call( | 3495 std::unique_ptr<webrtc::Call> call( |
| 3480 webrtc::Call::Create(webrtc::Call::Config())); | 3496 webrtc::Call::Create(webrtc::Call::Config())); |
| 3481 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), | 3497 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), |
| 3482 cricket::AudioOptions(), call.get()); | 3498 cricket::AudioOptions(), call.get()); |
| 3483 cricket::AudioRecvParameters parameters; | 3499 cricket::AudioRecvParameters parameters; |
| 3484 parameters.codecs = engine.codecs(); | 3500 parameters.codecs = engine.codecs(); |
| 3485 EXPECT_TRUE(channel.SetRecvParameters(parameters)); | 3501 EXPECT_TRUE(channel.SetRecvParameters(parameters)); |
| 3486 } | 3502 } |
| OLD | NEW |