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 |
11 #include <memory> | 11 #include <memory> |
12 | 12 |
13 #include "webrtc/pc/channel.h" | 13 #include "webrtc/pc/channel.h" |
14 #include "webrtc/base/arraysize.h" | 14 #include "webrtc/base/arraysize.h" |
15 #include "webrtc/base/byteorder.h" | 15 #include "webrtc/base/byteorder.h" |
16 #include "webrtc/base/gunit.h" | 16 #include "webrtc/base/gunit.h" |
17 #include "webrtc/call.h" | 17 #include "webrtc/call.h" |
18 #include "webrtc/p2p/base/faketransportcontroller.h" | 18 #include "webrtc/p2p/base/faketransportcontroller.h" |
19 #include "webrtc/test/field_trial.h" | 19 #include "webrtc/test/field_trial.h" |
20 #include "webrtc/media/base/fakemediaengine.h" | 20 #include "webrtc/media/base/fakemediaengine.h" |
21 #include "webrtc/media/base/fakenetworkinterface.h" | 21 #include "webrtc/media/base/fakenetworkinterface.h" |
22 #include "webrtc/media/base/fakertp.h" | 22 #include "webrtc/media/base/fakertp.h" |
23 #include "webrtc/media/base/mediaconstants.h" | 23 #include "webrtc/media/base/mediaconstants.h" |
24 #include "webrtc/media/engine/fakewebrtccall.h" | 24 #include "webrtc/media/engine/fakewebrtccall.h" |
25 #include "webrtc/media/engine/fakewebrtcvoiceengine.h" | 25 #include "webrtc/media/engine/fakewebrtcvoiceengine.h" |
26 #include "webrtc/media/engine/webrtcvoiceengine.h" | 26 #include "webrtc/media/engine/webrtcvoiceengine.h" |
| 27 #include "webrtc/modules/audio_device/include/mock_audio_device.h" |
27 | 28 |
28 using cricket::kRtpAudioLevelHeaderExtension; | 29 using cricket::kRtpAudioLevelHeaderExtension; |
29 using cricket::kRtpAbsoluteSenderTimeHeaderExtension; | 30 using cricket::kRtpAbsoluteSenderTimeHeaderExtension; |
| 31 using testing::Return; |
| 32 using testing::StrictMock; |
30 | 33 |
31 namespace { | 34 namespace { |
32 | 35 |
33 const cricket::AudioCodec kPcmuCodec(0, "PCMU", 8000, 64000, 1, 0); | 36 const cricket::AudioCodec kPcmuCodec(0, "PCMU", 8000, 64000, 1, 0); |
34 const cricket::AudioCodec kIsacCodec(103, "ISAC", 16000, 32000, 1, 0); | 37 const cricket::AudioCodec kIsacCodec(103, "ISAC", 16000, 32000, 1, 0); |
35 const cricket::AudioCodec kOpusCodec(111, "opus", 48000, 64000, 2, 0); | 38 const cricket::AudioCodec kOpusCodec(111, "opus", 48000, 64000, 2, 0); |
36 const cricket::AudioCodec kG722CodecVoE(9, "G722", 16000, 64000, 1, 0); | 39 const cricket::AudioCodec kG722CodecVoE(9, "G722", 16000, 64000, 1, 0); |
37 const cricket::AudioCodec kG722CodecSdp(9, "G722", 8000, 64000, 1, 0); | 40 const cricket::AudioCodec kG722CodecSdp(9, "G722", 8000, 64000, 1, 0); |
38 const cricket::AudioCodec kRedCodec(117, "red", 8000, 0, 1, 0); | 41 const cricket::AudioCodec kRedCodec(117, "red", 8000, 0, 1, 0); |
39 const cricket::AudioCodec kCn8000Codec(13, "CN", 8000, 0, 1, 0); | 42 const cricket::AudioCodec kCn8000Codec(13, "CN", 8000, 0, 1, 0); |
(...skipping 14 matching lines...) Expand all Loading... |
54 engine, // hw | 57 engine, // hw |
55 engine, // network | 58 engine, // network |
56 engine, // rtp | 59 engine, // rtp |
57 engine) { // volume | 60 engine) { // volume |
58 } | 61 } |
59 }; | 62 }; |
60 } // namespace | 63 } // namespace |
61 | 64 |
62 // Tests that our stub library "works". | 65 // Tests that our stub library "works". |
63 TEST(WebRtcVoiceEngineTestStubLibrary, StartupShutdown) { | 66 TEST(WebRtcVoiceEngineTestStubLibrary, StartupShutdown) { |
| 67 StrictMock<webrtc::test::MockAudioDeviceModule> adm; |
| 68 EXPECT_CALL(adm, AddRef()).WillOnce(Return(0)); |
| 69 EXPECT_CALL(adm, Release()).WillOnce(Return(0)); |
64 cricket::FakeWebRtcVoiceEngine voe; | 70 cricket::FakeWebRtcVoiceEngine voe; |
65 EXPECT_FALSE(voe.IsInited()); | 71 EXPECT_FALSE(voe.IsInited()); |
66 { | 72 { |
67 cricket::WebRtcVoiceEngine engine(nullptr, new FakeVoEWrapper(&voe)); | 73 cricket::WebRtcVoiceEngine engine(&adm, new FakeVoEWrapper(&voe)); |
68 EXPECT_TRUE(voe.IsInited()); | 74 EXPECT_TRUE(voe.IsInited()); |
69 } | 75 } |
70 EXPECT_FALSE(voe.IsInited()); | 76 EXPECT_FALSE(voe.IsInited()); |
71 } | 77 } |
72 | 78 |
73 class FakeAudioSink : public webrtc::AudioSinkInterface { | 79 class FakeAudioSink : public webrtc::AudioSinkInterface { |
74 public: | 80 public: |
75 void OnData(const Data& audio) override {} | 81 void OnData(const Data& audio) override {} |
76 }; | 82 }; |
77 | 83 |
78 class FakeAudioSource : public cricket::AudioSource { | 84 class FakeAudioSource : public cricket::AudioSource { |
79 void SetSink(Sink* sink) override {} | 85 void SetSink(Sink* sink) override {} |
80 }; | 86 }; |
81 | 87 |
82 class WebRtcVoiceEngineTestFake : public testing::Test { | 88 class WebRtcVoiceEngineTestFake : public testing::Test { |
83 public: | 89 public: |
84 WebRtcVoiceEngineTestFake() : WebRtcVoiceEngineTestFake("") {} | 90 WebRtcVoiceEngineTestFake() : WebRtcVoiceEngineTestFake("") {} |
85 | 91 |
86 explicit WebRtcVoiceEngineTestFake(const char* field_trials) | 92 explicit WebRtcVoiceEngineTestFake(const char* field_trials) |
87 : call_(webrtc::Call::Config()), | 93 : call_(webrtc::Call::Config()), override_field_trials_(field_trials) { |
88 engine_(nullptr, new FakeVoEWrapper(&voe_)), | 94 EXPECT_CALL(adm_, AddRef()).WillOnce(Return(0)); |
89 override_field_trials_(field_trials) { | 95 EXPECT_CALL(adm_, Release()).WillOnce(Return(0)); |
| 96 engine_.reset(new cricket::WebRtcVoiceEngine(&adm_, |
| 97 new FakeVoEWrapper(&voe_))); |
90 send_parameters_.codecs.push_back(kPcmuCodec); | 98 send_parameters_.codecs.push_back(kPcmuCodec); |
91 recv_parameters_.codecs.push_back(kPcmuCodec); | 99 recv_parameters_.codecs.push_back(kPcmuCodec); |
92 } | 100 } |
93 bool SetupChannel() { | 101 bool SetupChannel() { |
94 channel_ = engine_.CreateChannel(&call_, cricket::MediaConfig(), | 102 channel_ = engine_->CreateChannel(&call_, cricket::MediaConfig(), |
95 cricket::AudioOptions()); | 103 cricket::AudioOptions()); |
96 return (channel_ != nullptr); | 104 return (channel_ != nullptr); |
97 } | 105 } |
98 bool SetupRecvStream() { | 106 bool SetupRecvStream() { |
99 if (!SetupChannel()) { | 107 if (!SetupChannel()) { |
100 return false; | 108 return false; |
101 } | 109 } |
102 return channel_->AddRecvStream( | 110 return channel_->AddRecvStream( |
103 cricket::StreamParams::CreateLegacy(kSsrc1)); | 111 cricket::StreamParams::CreateLegacy(kSsrc1)); |
104 } | 112 } |
105 bool SetupSendStream() { | 113 bool SetupSendStream() { |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 stats.decoding_calls_to_silence_generator); | 402 stats.decoding_calls_to_silence_generator); |
395 EXPECT_EQ(info.decoding_calls_to_neteq, stats.decoding_calls_to_neteq); | 403 EXPECT_EQ(info.decoding_calls_to_neteq, stats.decoding_calls_to_neteq); |
396 EXPECT_EQ(info.decoding_normal, stats.decoding_normal); | 404 EXPECT_EQ(info.decoding_normal, stats.decoding_normal); |
397 EXPECT_EQ(info.decoding_plc, stats.decoding_plc); | 405 EXPECT_EQ(info.decoding_plc, stats.decoding_plc); |
398 EXPECT_EQ(info.decoding_cng, stats.decoding_cng); | 406 EXPECT_EQ(info.decoding_cng, stats.decoding_cng); |
399 EXPECT_EQ(info.decoding_plc_cng, stats.decoding_plc_cng); | 407 EXPECT_EQ(info.decoding_plc_cng, stats.decoding_plc_cng); |
400 EXPECT_EQ(info.capture_start_ntp_time_ms, stats.capture_start_ntp_time_ms); | 408 EXPECT_EQ(info.capture_start_ntp_time_ms, stats.capture_start_ntp_time_ms); |
401 } | 409 } |
402 | 410 |
403 protected: | 411 protected: |
| 412 StrictMock<webrtc::test::MockAudioDeviceModule> adm_; |
404 cricket::FakeCall call_; | 413 cricket::FakeCall call_; |
405 cricket::FakeWebRtcVoiceEngine voe_; | 414 cricket::FakeWebRtcVoiceEngine voe_; |
406 cricket::WebRtcVoiceEngine engine_; | 415 std::unique_ptr<cricket::WebRtcVoiceEngine> engine_; |
407 cricket::VoiceMediaChannel* channel_ = nullptr; | 416 cricket::VoiceMediaChannel* channel_ = nullptr; |
408 cricket::AudioSendParameters send_parameters_; | 417 cricket::AudioSendParameters send_parameters_; |
409 cricket::AudioRecvParameters recv_parameters_; | 418 cricket::AudioRecvParameters recv_parameters_; |
410 FakeAudioSource fake_source_; | 419 FakeAudioSource fake_source_; |
411 | |
412 private: | 420 private: |
413 webrtc::test::ScopedFieldTrials override_field_trials_; | 421 webrtc::test::ScopedFieldTrials override_field_trials_; |
414 }; | 422 }; |
415 | 423 |
416 // Tests that we can create and destroy a channel. | 424 // Tests that we can create and destroy a channel. |
417 TEST_F(WebRtcVoiceEngineTestFake, CreateChannel) { | 425 TEST_F(WebRtcVoiceEngineTestFake, CreateChannel) { |
418 EXPECT_TRUE(SetupChannel()); | 426 EXPECT_TRUE(SetupChannel()); |
419 } | 427 } |
420 | 428 |
421 // Tests that the list of supported codecs is created properly and ordered | 429 // Tests that the list of supported codecs is created properly and ordered |
422 // correctly | 430 // correctly |
423 TEST_F(WebRtcVoiceEngineTestFake, CodecPreference) { | 431 TEST_F(WebRtcVoiceEngineTestFake, CodecPreference) { |
424 const std::vector<cricket::AudioCodec>& codecs = engine_.codecs(); | 432 const std::vector<cricket::AudioCodec>& codecs = engine_->codecs(); |
425 ASSERT_FALSE(codecs.empty()); | 433 ASSERT_FALSE(codecs.empty()); |
426 EXPECT_STRCASEEQ("opus", codecs[0].name.c_str()); | 434 EXPECT_STRCASEEQ("opus", codecs[0].name.c_str()); |
427 EXPECT_EQ(48000, codecs[0].clockrate); | 435 EXPECT_EQ(48000, codecs[0].clockrate); |
428 EXPECT_EQ(2, codecs[0].channels); | 436 EXPECT_EQ(2, codecs[0].channels); |
429 EXPECT_EQ(64000, codecs[0].bitrate); | 437 EXPECT_EQ(64000, codecs[0].bitrate); |
430 int pref = codecs[0].preference; | 438 int pref = codecs[0].preference; |
431 for (size_t i = 1; i < codecs.size(); ++i) { | 439 for (size_t i = 1; i < codecs.size(); ++i) { |
432 EXPECT_GT(pref, codecs[i].preference); | 440 EXPECT_GT(pref, codecs[i].preference); |
433 pref = codecs[i].preference; | 441 pref = codecs[i].preference; |
434 } | 442 } |
435 } | 443 } |
436 | 444 |
437 TEST_F(WebRtcVoiceEngineTestFake, OpusSupportsTransportCc) { | 445 TEST_F(WebRtcVoiceEngineTestFake, OpusSupportsTransportCc) { |
438 const std::vector<cricket::AudioCodec>& codecs = engine_.codecs(); | 446 const std::vector<cricket::AudioCodec>& codecs = engine_->codecs(); |
439 bool opus_found = false; | 447 bool opus_found = false; |
440 for (cricket::AudioCodec codec : codecs) { | 448 for (cricket::AudioCodec codec : codecs) { |
441 if (codec.name == "opus") { | 449 if (codec.name == "opus") { |
442 EXPECT_TRUE(HasTransportCc(codec)); | 450 EXPECT_TRUE(HasTransportCc(codec)); |
443 opus_found = true; | 451 opus_found = true; |
444 } | 452 } |
445 } | 453 } |
446 EXPECT_TRUE(opus_found); | 454 EXPECT_TRUE(opus_found); |
447 } | 455 } |
448 | 456 |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
720 TestSendBandwidth(kPcmuCodec, 32000, false, 64000); | 728 TestSendBandwidth(kPcmuCodec, 32000, false, 64000); |
721 TestSendBandwidth(kPcmuCodec, 64000, true, 64000); | 729 TestSendBandwidth(kPcmuCodec, 64000, true, 64000); |
722 TestSendBandwidth(kPcmuCodec, 63999, false, 64000); | 730 TestSendBandwidth(kPcmuCodec, 63999, false, 64000); |
723 TestSendBandwidth(kPcmuCodec, 64001, true, 64000); | 731 TestSendBandwidth(kPcmuCodec, 64001, true, 64000); |
724 } | 732 } |
725 | 733 |
726 TEST_F(WebRtcVoiceEngineTestFake, SetMaxSendBandwidthMultiRateAsCallee) { | 734 TEST_F(WebRtcVoiceEngineTestFake, SetMaxSendBandwidthMultiRateAsCallee) { |
727 EXPECT_TRUE(SetupChannel()); | 735 EXPECT_TRUE(SetupChannel()); |
728 const int kDesiredBitrate = 128000; | 736 const int kDesiredBitrate = 128000; |
729 cricket::AudioSendParameters parameters; | 737 cricket::AudioSendParameters parameters; |
730 parameters.codecs = engine_.codecs(); | 738 parameters.codecs = engine_->codecs(); |
731 parameters.max_bandwidth_bps = kDesiredBitrate; | 739 parameters.max_bandwidth_bps = kDesiredBitrate; |
732 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 740 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
733 | 741 |
734 EXPECT_TRUE(channel_->AddSendStream( | 742 EXPECT_TRUE(channel_->AddSendStream( |
735 cricket::StreamParams::CreateLegacy(kSsrc1))); | 743 cricket::StreamParams::CreateLegacy(kSsrc1))); |
736 | 744 |
737 int channel_num = voe_.GetLastChannel(); | 745 int channel_num = voe_.GetLastChannel(); |
738 webrtc::CodecInst codec; | 746 webrtc::CodecInst codec; |
739 EXPECT_EQ(0, voe_.GetSendCodec(channel_num, codec)); | 747 EXPECT_EQ(0, voe_.GetSendCodec(channel_num, codec)); |
740 EXPECT_EQ(kDesiredBitrate, codec.rate); | 748 EXPECT_EQ(kDesiredBitrate, codec.rate); |
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1298 | 1306 |
1299 cricket::AudioRecvParameters recv_parameters; | 1307 cricket::AudioRecvParameters recv_parameters; |
1300 recv_parameters.codecs.push_back(kIsacCodec); | 1308 recv_parameters.codecs.push_back(kIsacCodec); |
1301 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters)); | 1309 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters)); |
1302 EXPECT_TRUE( | 1310 EXPECT_TRUE( |
1303 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc1))); | 1311 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc1))); |
1304 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrc1) != nullptr); | 1312 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrc1) != nullptr); |
1305 EXPECT_FALSE( | 1313 EXPECT_FALSE( |
1306 call_.GetAudioReceiveStream(kSsrc1)->GetConfig().rtp.transport_cc); | 1314 call_.GetAudioReceiveStream(kSsrc1)->GetConfig().rtp.transport_cc); |
1307 | 1315 |
1308 send_parameters.codecs = engine_.codecs(); | 1316 send_parameters.codecs = engine_->codecs(); |
1309 EXPECT_TRUE(channel_->SetSendParameters(send_parameters)); | 1317 EXPECT_TRUE(channel_->SetSendParameters(send_parameters)); |
1310 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrc1) != nullptr); | 1318 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrc1) != nullptr); |
1311 EXPECT_TRUE( | 1319 EXPECT_TRUE( |
1312 call_.GetAudioReceiveStream(kSsrc1)->GetConfig().rtp.transport_cc); | 1320 call_.GetAudioReceiveStream(kSsrc1)->GetConfig().rtp.transport_cc); |
1313 } | 1321 } |
1314 | 1322 |
1315 // Test maxplaybackrate <= 8000 triggers Opus narrow band mode. | 1323 // Test maxplaybackrate <= 8000 triggers Opus narrow band mode. |
1316 TEST_F(WebRtcVoiceEngineTestFake, SetOpusMaxPlaybackRateNb) { | 1324 TEST_F(WebRtcVoiceEngineTestFake, SetOpusMaxPlaybackRateNb) { |
1317 EXPECT_TRUE(SetupSendStream()); | 1325 EXPECT_TRUE(SetupSendStream()); |
1318 int channel_num = voe_.GetLastChannel(); | 1326 int channel_num = voe_.GetLastChannel(); |
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1970 } | 1978 } |
1971 | 1979 |
1972 class WebRtcVoiceEngineWithSendSideBweTest : public WebRtcVoiceEngineTestFake { | 1980 class WebRtcVoiceEngineWithSendSideBweTest : public WebRtcVoiceEngineTestFake { |
1973 public: | 1981 public: |
1974 WebRtcVoiceEngineWithSendSideBweTest() | 1982 WebRtcVoiceEngineWithSendSideBweTest() |
1975 : WebRtcVoiceEngineTestFake("WebRTC-Audio-SendSideBwe/Enabled/") {} | 1983 : WebRtcVoiceEngineTestFake("WebRTC-Audio-SendSideBwe/Enabled/") {} |
1976 }; | 1984 }; |
1977 | 1985 |
1978 TEST_F(WebRtcVoiceEngineWithSendSideBweTest, | 1986 TEST_F(WebRtcVoiceEngineWithSendSideBweTest, |
1979 SupportsTransportSequenceNumberHeaderExtension) { | 1987 SupportsTransportSequenceNumberHeaderExtension) { |
1980 cricket::RtpCapabilities capabilities = engine_.GetCapabilities(); | 1988 cricket::RtpCapabilities capabilities = engine_->GetCapabilities(); |
1981 ASSERT_FALSE(capabilities.header_extensions.empty()); | 1989 ASSERT_FALSE(capabilities.header_extensions.empty()); |
1982 for (const cricket::RtpHeaderExtension& extension : | 1990 for (const cricket::RtpHeaderExtension& extension : |
1983 capabilities.header_extensions) { | 1991 capabilities.header_extensions) { |
1984 if (extension.uri == cricket::kRtpTransportSequenceNumberHeaderExtension) { | 1992 if (extension.uri == cricket::kRtpTransportSequenceNumberHeaderExtension) { |
1985 EXPECT_EQ(cricket::kRtpTransportSequenceNumberHeaderExtensionDefaultId, | 1993 EXPECT_EQ(cricket::kRtpTransportSequenceNumberHeaderExtensionDefaultId, |
1986 extension.id); | 1994 extension.id); |
1987 return; | 1995 return; |
1988 } | 1996 } |
1989 } | 1997 } |
1990 FAIL() << "Transport sequence number extension not in header-extension list."; | 1998 FAIL() << "Transport sequence number extension not in header-extension list."; |
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2791 EXPECT_EQ(0, voe_.GetAgcConfig(config)); | 2799 EXPECT_EQ(0, voe_.GetAgcConfig(config)); |
2792 EXPECT_EQ(set_config.targetLeveldBOv, config.targetLeveldBOv); | 2800 EXPECT_EQ(set_config.targetLeveldBOv, config.targetLeveldBOv); |
2793 EXPECT_EQ(set_config.digitalCompressionGaindB, | 2801 EXPECT_EQ(set_config.digitalCompressionGaindB, |
2794 config.digitalCompressionGaindB); | 2802 config.digitalCompressionGaindB); |
2795 EXPECT_EQ(set_config.limiterEnable, config.limiterEnable); | 2803 EXPECT_EQ(set_config.limiterEnable, config.limiterEnable); |
2796 } | 2804 } |
2797 | 2805 |
2798 TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) { | 2806 TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) { |
2799 EXPECT_TRUE(SetupSendStream()); | 2807 EXPECT_TRUE(SetupSendStream()); |
2800 std::unique_ptr<cricket::WebRtcVoiceMediaChannel> channel1( | 2808 std::unique_ptr<cricket::WebRtcVoiceMediaChannel> channel1( |
2801 static_cast<cricket::WebRtcVoiceMediaChannel*>(engine_.CreateChannel( | 2809 static_cast<cricket::WebRtcVoiceMediaChannel*>(engine_->CreateChannel( |
2802 &call_, cricket::MediaConfig(), cricket::AudioOptions()))); | 2810 &call_, cricket::MediaConfig(), cricket::AudioOptions()))); |
2803 std::unique_ptr<cricket::WebRtcVoiceMediaChannel> channel2( | 2811 std::unique_ptr<cricket::WebRtcVoiceMediaChannel> channel2( |
2804 static_cast<cricket::WebRtcVoiceMediaChannel*>(engine_.CreateChannel( | 2812 static_cast<cricket::WebRtcVoiceMediaChannel*>(engine_->CreateChannel( |
2805 &call_, cricket::MediaConfig(), cricket::AudioOptions()))); | 2813 &call_, cricket::MediaConfig(), cricket::AudioOptions()))); |
2806 | 2814 |
2807 // Have to add a stream to make SetSend work. | 2815 // Have to add a stream to make SetSend work. |
2808 cricket::StreamParams stream1; | 2816 cricket::StreamParams stream1; |
2809 stream1.ssrcs.push_back(1); | 2817 stream1.ssrcs.push_back(1); |
2810 channel1->AddSendStream(stream1); | 2818 channel1->AddSendStream(stream1); |
2811 cricket::StreamParams stream2; | 2819 cricket::StreamParams stream2; |
2812 stream2.ssrcs.push_back(2); | 2820 stream2.ssrcs.push_back(2); |
2813 channel2->AddSendStream(stream2); | 2821 channel2->AddSendStream(stream2); |
2814 | 2822 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2895 EXPECT_FALSE(ns_enabled); | 2903 EXPECT_FALSE(ns_enabled); |
2896 } | 2904 } |
2897 | 2905 |
2898 // This test verifies DSCP settings are properly applied on voice media channel. | 2906 // This test verifies DSCP settings are properly applied on voice media channel. |
2899 TEST_F(WebRtcVoiceEngineTestFake, TestSetDscpOptions) { | 2907 TEST_F(WebRtcVoiceEngineTestFake, TestSetDscpOptions) { |
2900 EXPECT_TRUE(SetupSendStream()); | 2908 EXPECT_TRUE(SetupSendStream()); |
2901 cricket::FakeNetworkInterface network_interface; | 2909 cricket::FakeNetworkInterface network_interface; |
2902 cricket::MediaConfig config; | 2910 cricket::MediaConfig config; |
2903 std::unique_ptr<cricket::VoiceMediaChannel> channel; | 2911 std::unique_ptr<cricket::VoiceMediaChannel> channel; |
2904 | 2912 |
2905 channel.reset(engine_.CreateChannel(&call_, config, cricket::AudioOptions())); | 2913 channel.reset( |
| 2914 engine_->CreateChannel(&call_, config, cricket::AudioOptions())); |
2906 channel->SetInterface(&network_interface); | 2915 channel->SetInterface(&network_interface); |
2907 // Default value when DSCP is disabled should be DSCP_DEFAULT. | 2916 // Default value when DSCP is disabled should be DSCP_DEFAULT. |
2908 EXPECT_EQ(rtc::DSCP_DEFAULT, network_interface.dscp()); | 2917 EXPECT_EQ(rtc::DSCP_DEFAULT, network_interface.dscp()); |
2909 | 2918 |
2910 config.enable_dscp = true; | 2919 config.enable_dscp = true; |
2911 channel.reset(engine_.CreateChannel(&call_, config, cricket::AudioOptions())); | 2920 channel.reset( |
| 2921 engine_->CreateChannel(&call_, config, cricket::AudioOptions())); |
2912 channel->SetInterface(&network_interface); | 2922 channel->SetInterface(&network_interface); |
2913 EXPECT_EQ(rtc::DSCP_EF, network_interface.dscp()); | 2923 EXPECT_EQ(rtc::DSCP_EF, network_interface.dscp()); |
2914 | 2924 |
2915 // Verify that setting the option to false resets the | 2925 // Verify that setting the option to false resets the |
2916 // DiffServCodePoint. | 2926 // DiffServCodePoint. |
2917 config.enable_dscp = false; | 2927 config.enable_dscp = false; |
2918 channel.reset(engine_.CreateChannel(&call_, config, cricket::AudioOptions())); | 2928 channel.reset( |
| 2929 engine_->CreateChannel(&call_, config, cricket::AudioOptions())); |
2919 channel->SetInterface(&network_interface); | 2930 channel->SetInterface(&network_interface); |
2920 // Default value when DSCP is disabled should be DSCP_DEFAULT. | 2931 // Default value when DSCP is disabled should be DSCP_DEFAULT. |
2921 EXPECT_EQ(rtc::DSCP_DEFAULT, network_interface.dscp()); | 2932 EXPECT_EQ(rtc::DSCP_DEFAULT, network_interface.dscp()); |
2922 | 2933 |
2923 channel->SetInterface(nullptr); | 2934 channel->SetInterface(nullptr); |
2924 } | 2935 } |
2925 | 2936 |
2926 TEST_F(WebRtcVoiceEngineTestFake, TestGetReceiveChannelId) { | 2937 TEST_F(WebRtcVoiceEngineTestFake, TestGetReceiveChannelId) { |
2927 EXPECT_TRUE(SetupChannel()); | 2938 EXPECT_TRUE(SetupChannel()); |
2928 cricket::WebRtcVoiceMediaChannel* media_channel = | 2939 cricket::WebRtcVoiceMediaChannel* media_channel = |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3022 } | 3033 } |
3023 | 3034 |
3024 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); | 3035 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); |
3025 for (uint32_t ssrc : ssrcs) { | 3036 for (uint32_t ssrc : ssrcs) { |
3026 const auto* s = call_.GetAudioReceiveStream(ssrc); | 3037 const auto* s = call_.GetAudioReceiveStream(ssrc); |
3027 EXPECT_NE(nullptr, s); | 3038 EXPECT_NE(nullptr, s); |
3028 EXPECT_EQ(0, s->GetConfig().rtp.extensions.size()); | 3039 EXPECT_EQ(0, s->GetConfig().rtp.extensions.size()); |
3029 } | 3040 } |
3030 | 3041 |
3031 // Set up receive extensions. | 3042 // Set up receive extensions. |
3032 cricket::RtpCapabilities capabilities = engine_.GetCapabilities(); | 3043 cricket::RtpCapabilities capabilities = engine_->GetCapabilities(); |
3033 cricket::AudioRecvParameters recv_parameters; | 3044 cricket::AudioRecvParameters recv_parameters; |
3034 recv_parameters.extensions = capabilities.header_extensions; | 3045 recv_parameters.extensions = capabilities.header_extensions; |
3035 channel_->SetRecvParameters(recv_parameters); | 3046 channel_->SetRecvParameters(recv_parameters); |
3036 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); | 3047 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); |
3037 for (uint32_t ssrc : ssrcs) { | 3048 for (uint32_t ssrc : ssrcs) { |
3038 const auto* s = call_.GetAudioReceiveStream(ssrc); | 3049 const auto* s = call_.GetAudioReceiveStream(ssrc); |
3039 EXPECT_NE(nullptr, s); | 3050 EXPECT_NE(nullptr, s); |
3040 const auto& s_exts = s->GetConfig().rtp.extensions; | 3051 const auto& s_exts = s->GetConfig().rtp.extensions; |
3041 EXPECT_EQ(capabilities.header_extensions.size(), s_exts.size()); | 3052 EXPECT_EQ(capabilities.header_extensions.size(), s_exts.size()); |
3042 for (const auto& e_ext : capabilities.header_extensions) { | 3053 for (const auto& e_ext : capabilities.header_extensions) { |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3200 cricket::WebRtcVoiceEngine engine(nullptr); | 3211 cricket::WebRtcVoiceEngine engine(nullptr); |
3201 std::unique_ptr<webrtc::Call> call( | 3212 std::unique_ptr<webrtc::Call> call( |
3202 webrtc::Call::Create(webrtc::Call::Config())); | 3213 webrtc::Call::Create(webrtc::Call::Config())); |
3203 cricket::VoiceMediaChannel* channel = engine.CreateChannel( | 3214 cricket::VoiceMediaChannel* channel = engine.CreateChannel( |
3204 call.get(), cricket::MediaConfig(), cricket::AudioOptions()); | 3215 call.get(), cricket::MediaConfig(), cricket::AudioOptions()); |
3205 EXPECT_TRUE(channel != nullptr); | 3216 EXPECT_TRUE(channel != nullptr); |
3206 delete channel; | 3217 delete channel; |
3207 } | 3218 } |
3208 | 3219 |
3209 // Tests that reference counting on the external ADM is correct. | 3220 // Tests that reference counting on the external ADM is correct. |
3210 TEST(WebRtcVoiceEngineTest, StartupShutdownWithExternADM) { | 3221 TEST(WebRtcVoiceEngineTest, StartupShutdownWithExternalADM) { |
3211 cricket::FakeAudioDeviceModule adm; | 3222 testing::NiceMock<webrtc::test::MockAudioDeviceModule> adm; |
| 3223 EXPECT_CALL(adm, AddRef()).Times(3).WillRepeatedly(Return(0)); |
| 3224 EXPECT_CALL(adm, Release()).Times(3).WillRepeatedly(Return(0)); |
3212 { | 3225 { |
3213 cricket::WebRtcVoiceEngine engine(&adm); | 3226 cricket::WebRtcVoiceEngine engine(&adm); |
3214 std::unique_ptr<webrtc::Call> call( | 3227 std::unique_ptr<webrtc::Call> call( |
3215 webrtc::Call::Create(webrtc::Call::Config())); | 3228 webrtc::Call::Create(webrtc::Call::Config())); |
3216 cricket::VoiceMediaChannel* channel = engine.CreateChannel( | 3229 cricket::VoiceMediaChannel* channel = engine.CreateChannel( |
3217 call.get(), cricket::MediaConfig(), cricket::AudioOptions()); | 3230 call.get(), cricket::MediaConfig(), cricket::AudioOptions()); |
3218 EXPECT_TRUE(channel != nullptr); | 3231 EXPECT_TRUE(channel != nullptr); |
3219 delete channel; | 3232 delete channel; |
3220 } | 3233 } |
3221 } | 3234 } |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3332 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { | 3345 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { |
3333 cricket::WebRtcVoiceEngine engine(nullptr); | 3346 cricket::WebRtcVoiceEngine engine(nullptr); |
3334 std::unique_ptr<webrtc::Call> call( | 3347 std::unique_ptr<webrtc::Call> call( |
3335 webrtc::Call::Create(webrtc::Call::Config())); | 3348 webrtc::Call::Create(webrtc::Call::Config())); |
3336 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), | 3349 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), |
3337 cricket::AudioOptions(), call.get()); | 3350 cricket::AudioOptions(), call.get()); |
3338 cricket::AudioRecvParameters parameters; | 3351 cricket::AudioRecvParameters parameters; |
3339 parameters.codecs = engine.codecs(); | 3352 parameters.codecs = engine.codecs(); |
3340 EXPECT_TRUE(channel.SetRecvParameters(parameters)); | 3353 EXPECT_TRUE(channel.SetRecvParameters(parameters)); |
3341 } | 3354 } |
OLD | NEW |