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 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
99 EXPECT_CALL(adm_, AddRef()).WillOnce(Return(0)); | 99 EXPECT_CALL(adm_, AddRef()).WillOnce(Return(0)); |
100 EXPECT_CALL(adm_, Release()).WillOnce(Return(0)); | 100 EXPECT_CALL(adm_, Release()).WillOnce(Return(0)); |
101 EXPECT_CALL(adm_, BuiltInAECIsAvailable()).WillOnce(Return(false)); | 101 EXPECT_CALL(adm_, BuiltInAECIsAvailable()).WillOnce(Return(false)); |
102 EXPECT_CALL(adm_, BuiltInAGCIsAvailable()).WillOnce(Return(false)); | 102 EXPECT_CALL(adm_, BuiltInAGCIsAvailable()).WillOnce(Return(false)); |
103 EXPECT_CALL(adm_, BuiltInNSIsAvailable()).WillOnce(Return(false)); | 103 EXPECT_CALL(adm_, BuiltInNSIsAvailable()).WillOnce(Return(false)); |
104 engine_.reset(new cricket::WebRtcVoiceEngine(&adm_, | 104 engine_.reset(new cricket::WebRtcVoiceEngine(&adm_, |
105 new FakeVoEWrapper(&voe_))); | 105 new FakeVoEWrapper(&voe_))); |
106 send_parameters_.codecs.push_back(kPcmuCodec); | 106 send_parameters_.codecs.push_back(kPcmuCodec); |
107 recv_parameters_.codecs.push_back(kPcmuCodec); | 107 recv_parameters_.codecs.push_back(kPcmuCodec); |
108 } | 108 } |
109 | |
109 bool SetupChannel() { | 110 bool SetupChannel() { |
110 channel_ = engine_->CreateChannel(&call_, cricket::MediaConfig(), | 111 channel_ = engine_->CreateChannel(&call_, cricket::MediaConfig(), |
111 cricket::AudioOptions()); | 112 cricket::AudioOptions()); |
112 return (channel_ != nullptr); | 113 return (channel_ != nullptr); |
113 } | 114 } |
115 | |
114 bool SetupRecvStream() { | 116 bool SetupRecvStream() { |
115 if (!SetupChannel()) { | 117 if (!SetupChannel()) { |
116 return false; | 118 return false; |
117 } | 119 } |
118 return channel_->AddRecvStream( | 120 return AddRecvStream(kSsrc1); |
119 cricket::StreamParams::CreateLegacy(kSsrc1)); | |
120 } | 121 } |
122 | |
121 bool SetupSendStream() { | 123 bool SetupSendStream() { |
122 if (!SetupChannel()) { | 124 if (!SetupChannel()) { |
123 return false; | 125 return false; |
124 } | 126 } |
125 if (!channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc1))) { | 127 if (!channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc1))) { |
126 return false; | 128 return false; |
127 } | 129 } |
128 return channel_->SetAudioSend(kSsrc1, true, nullptr, &fake_source_); | 130 return channel_->SetAudioSend(kSsrc1, true, nullptr, &fake_source_); |
129 } | 131 } |
132 | |
133 bool AddRecvStream(uint32_t ssrc) { | |
134 EXPECT_TRUE(channel_); | |
135 return channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(ssrc)); | |
136 } | |
kwiberg-webrtc
2016/06/13 13:47:47
Nice simplification, but it makes the diff harder
the sun
2016/06/13 16:55:38
Acknowledged.
| |
137 | |
130 void SetupForMultiSendStream() { | 138 void SetupForMultiSendStream() { |
131 EXPECT_TRUE(SetupSendStream()); | 139 EXPECT_TRUE(SetupSendStream()); |
132 // Remove stream added in Setup. | 140 // Remove stream added in Setup. |
133 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); | 141 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); |
134 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc1)); | 142 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc1)); |
135 // Verify the channel does not exist. | 143 // Verify the channel does not exist. |
136 EXPECT_FALSE(call_.GetAudioSendStream(kSsrc1)); | 144 EXPECT_FALSE(call_.GetAudioSendStream(kSsrc1)); |
137 } | 145 } |
146 | |
138 void DeliverPacket(const void* data, int len) { | 147 void DeliverPacket(const void* data, int len) { |
139 rtc::CopyOnWriteBuffer packet(reinterpret_cast<const uint8_t*>(data), len); | 148 rtc::CopyOnWriteBuffer packet(reinterpret_cast<const uint8_t*>(data), len); |
140 channel_->OnPacketReceived(&packet, rtc::PacketTime()); | 149 channel_->OnPacketReceived(&packet, rtc::PacketTime()); |
141 } | 150 } |
151 | |
142 void TearDown() override { | 152 void TearDown() override { |
143 delete channel_; | 153 delete channel_; |
144 } | 154 } |
145 | 155 |
146 const cricket::FakeAudioSendStream& GetSendStream(uint32_t ssrc) { | 156 const cricket::FakeAudioSendStream& GetSendStream(uint32_t ssrc) { |
147 const auto* send_stream = call_.GetAudioSendStream(ssrc); | 157 const auto* send_stream = call_.GetAudioSendStream(ssrc); |
148 EXPECT_TRUE(send_stream); | 158 EXPECT_TRUE(send_stream); |
149 return *send_stream; | 159 return *send_stream; |
150 } | 160 } |
151 | 161 |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
343 | 353 |
344 // Ensure extension is set properly. | 354 // Ensure extension is set properly. |
345 const int id = 2; | 355 const int id = 2; |
346 recv_parameters_.extensions.push_back(webrtc::RtpExtension(ext, id)); | 356 recv_parameters_.extensions.push_back(webrtc::RtpExtension(ext, id)); |
347 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 357 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
348 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); | 358 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); |
349 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].uri); | 359 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].uri); |
350 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].id); | 360 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].id); |
351 | 361 |
352 // Ensure extension is set properly on new stream. | 362 // Ensure extension is set properly on new stream. |
353 EXPECT_TRUE(channel_->AddRecvStream( | 363 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
354 cricket::StreamParams::CreateLegacy(kSsrc2))); | |
355 EXPECT_NE(call_.GetAudioReceiveStream(kSsrc1), | 364 EXPECT_NE(call_.GetAudioReceiveStream(kSsrc1), |
356 call_.GetAudioReceiveStream(kSsrc2)); | 365 call_.GetAudioReceiveStream(kSsrc2)); |
357 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc2).rtp.extensions.size()); | 366 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc2).rtp.extensions.size()); |
358 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].uri); | 367 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].uri); |
359 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].id); | 368 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].id); |
360 | 369 |
361 // Ensure all extensions go back off with an empty list. | 370 // Ensure all extensions go back off with an empty list. |
362 recv_parameters_.extensions.clear(); | 371 recv_parameters_.extensions.clear(); |
363 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 372 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
364 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); | 373 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
503 EXPECT_EQ(kSsrc1, config.rtp.ssrc); | 512 EXPECT_EQ(kSsrc1, config.rtp.ssrc); |
504 EXPECT_EQ("", config.rtp.c_name); | 513 EXPECT_EQ("", config.rtp.c_name); |
505 EXPECT_EQ(0u, config.rtp.extensions.size()); | 514 EXPECT_EQ(0u, config.rtp.extensions.size()); |
506 EXPECT_EQ(static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_), | 515 EXPECT_EQ(static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_), |
507 config.send_transport); | 516 config.send_transport); |
508 } | 517 } |
509 | 518 |
510 // Test that we can add a receive stream and that it has the correct defaults. | 519 // Test that we can add a receive stream and that it has the correct defaults. |
511 TEST_F(WebRtcVoiceEngineTestFake, CreateRecvStream) { | 520 TEST_F(WebRtcVoiceEngineTestFake, CreateRecvStream) { |
512 EXPECT_TRUE(SetupChannel()); | 521 EXPECT_TRUE(SetupChannel()); |
513 EXPECT_TRUE( | 522 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
514 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc1))); | |
515 const webrtc::AudioReceiveStream::Config& config = | 523 const webrtc::AudioReceiveStream::Config& config = |
516 GetRecvStreamConfig(kSsrc1); | 524 GetRecvStreamConfig(kSsrc1); |
517 EXPECT_EQ(kSsrc1, config.rtp.remote_ssrc); | 525 EXPECT_EQ(kSsrc1, config.rtp.remote_ssrc); |
518 EXPECT_EQ(0xFA17FA17, config.rtp.local_ssrc); | 526 EXPECT_EQ(0xFA17FA17, config.rtp.local_ssrc); |
519 EXPECT_FALSE(config.rtp.transport_cc); | 527 EXPECT_FALSE(config.rtp.transport_cc); |
520 EXPECT_EQ(0u, config.rtp.extensions.size()); | 528 EXPECT_EQ(0u, config.rtp.extensions.size()); |
521 EXPECT_EQ(static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_), | 529 EXPECT_EQ(static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_), |
522 config.rtcp_send_transport); | 530 config.rtcp_send_transport); |
523 EXPECT_EQ("", config.sync_group); | 531 EXPECT_EQ("", config.sync_group); |
524 } | 532 } |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
586 // Test that we set our inbound codecs properly, including changing PT. | 594 // Test that we set our inbound codecs properly, including changing PT. |
587 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecs) { | 595 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecs) { |
588 EXPECT_TRUE(SetupChannel()); | 596 EXPECT_TRUE(SetupChannel()); |
589 cricket::AudioRecvParameters parameters; | 597 cricket::AudioRecvParameters parameters; |
590 parameters.codecs.push_back(kIsacCodec); | 598 parameters.codecs.push_back(kIsacCodec); |
591 parameters.codecs.push_back(kPcmuCodec); | 599 parameters.codecs.push_back(kPcmuCodec); |
592 parameters.codecs.push_back(kTelephoneEventCodec); | 600 parameters.codecs.push_back(kTelephoneEventCodec); |
593 parameters.codecs[0].id = 106; // collide with existing telephone-event | 601 parameters.codecs[0].id = 106; // collide with existing telephone-event |
594 parameters.codecs[2].id = 126; | 602 parameters.codecs[2].id = 126; |
595 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 603 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
596 EXPECT_TRUE(channel_->AddRecvStream( | 604 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
597 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
598 int channel_num = voe_.GetLastChannel(); | 605 int channel_num = voe_.GetLastChannel(); |
599 webrtc::CodecInst gcodec; | 606 webrtc::CodecInst gcodec; |
600 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "ISAC"); | 607 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "ISAC"); |
601 gcodec.plfreq = 16000; | 608 gcodec.plfreq = 16000; |
602 gcodec.channels = 1; | 609 gcodec.channels = 1; |
603 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num, gcodec)); | 610 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num, gcodec)); |
604 EXPECT_EQ(106, gcodec.pltype); | 611 EXPECT_EQ(106, gcodec.pltype); |
605 EXPECT_STREQ("ISAC", gcodec.plname); | 612 EXPECT_STREQ("ISAC", gcodec.plname); |
606 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "telephone-event"); | 613 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "telephone-event"); |
607 gcodec.plfreq = 8000; | 614 gcodec.plfreq = 8000; |
(...skipping 22 matching lines...) Expand all Loading... | |
630 } | 637 } |
631 | 638 |
632 // Test that we can decode OPUS without stereo parameters. | 639 // Test that we can decode OPUS without stereo parameters. |
633 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithOpusNoStereo) { | 640 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithOpusNoStereo) { |
634 EXPECT_TRUE(SetupChannel()); | 641 EXPECT_TRUE(SetupChannel()); |
635 cricket::AudioRecvParameters parameters; | 642 cricket::AudioRecvParameters parameters; |
636 parameters.codecs.push_back(kIsacCodec); | 643 parameters.codecs.push_back(kIsacCodec); |
637 parameters.codecs.push_back(kPcmuCodec); | 644 parameters.codecs.push_back(kPcmuCodec); |
638 parameters.codecs.push_back(kOpusCodec); | 645 parameters.codecs.push_back(kOpusCodec); |
639 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 646 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
640 EXPECT_TRUE(channel_->AddRecvStream( | 647 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
641 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
642 int channel_num = voe_.GetLastChannel(); | 648 int channel_num = voe_.GetLastChannel(); |
643 webrtc::CodecInst opus; | 649 webrtc::CodecInst opus; |
644 cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus); | 650 cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus); |
645 // Even without stereo parameters, recv codecs still specify channels = 2. | 651 // Even without stereo parameters, recv codecs still specify channels = 2. |
646 EXPECT_EQ(2, opus.channels); | 652 EXPECT_EQ(2, opus.channels); |
647 EXPECT_EQ(111, opus.pltype); | 653 EXPECT_EQ(111, opus.pltype); |
648 EXPECT_STREQ("opus", opus.plname); | 654 EXPECT_STREQ("opus", opus.plname); |
649 opus.pltype = 0; | 655 opus.pltype = 0; |
650 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num, opus)); | 656 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num, opus)); |
651 EXPECT_EQ(111, opus.pltype); | 657 EXPECT_EQ(111, opus.pltype); |
652 } | 658 } |
653 | 659 |
654 // Test that we can decode OPUS with stereo = 0. | 660 // Test that we can decode OPUS with stereo = 0. |
655 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithOpus0Stereo) { | 661 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithOpus0Stereo) { |
656 EXPECT_TRUE(SetupChannel()); | 662 EXPECT_TRUE(SetupChannel()); |
657 cricket::AudioRecvParameters parameters; | 663 cricket::AudioRecvParameters parameters; |
658 parameters.codecs.push_back(kIsacCodec); | 664 parameters.codecs.push_back(kIsacCodec); |
659 parameters.codecs.push_back(kPcmuCodec); | 665 parameters.codecs.push_back(kPcmuCodec); |
660 parameters.codecs.push_back(kOpusCodec); | 666 parameters.codecs.push_back(kOpusCodec); |
661 parameters.codecs[2].params["stereo"] = "0"; | 667 parameters.codecs[2].params["stereo"] = "0"; |
662 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 668 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
663 EXPECT_TRUE(channel_->AddRecvStream( | 669 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
664 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
665 int channel_num2 = voe_.GetLastChannel(); | 670 int channel_num2 = voe_.GetLastChannel(); |
666 webrtc::CodecInst opus; | 671 webrtc::CodecInst opus; |
667 cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus); | 672 cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus); |
668 // Even when stereo is off, recv codecs still specify channels = 2. | 673 // Even when stereo is off, recv codecs still specify channels = 2. |
669 EXPECT_EQ(2, opus.channels); | 674 EXPECT_EQ(2, opus.channels); |
670 EXPECT_EQ(111, opus.pltype); | 675 EXPECT_EQ(111, opus.pltype); |
671 EXPECT_STREQ("opus", opus.plname); | 676 EXPECT_STREQ("opus", opus.plname); |
672 opus.pltype = 0; | 677 opus.pltype = 0; |
673 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, opus)); | 678 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, opus)); |
674 EXPECT_EQ(111, opus.pltype); | 679 EXPECT_EQ(111, opus.pltype); |
675 } | 680 } |
676 | 681 |
677 // Test that we can decode OPUS with stereo = 1. | 682 // Test that we can decode OPUS with stereo = 1. |
678 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithOpus1Stereo) { | 683 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithOpus1Stereo) { |
679 EXPECT_TRUE(SetupChannel()); | 684 EXPECT_TRUE(SetupChannel()); |
680 cricket::AudioRecvParameters parameters; | 685 cricket::AudioRecvParameters parameters; |
681 parameters.codecs.push_back(kIsacCodec); | 686 parameters.codecs.push_back(kIsacCodec); |
682 parameters.codecs.push_back(kPcmuCodec); | 687 parameters.codecs.push_back(kPcmuCodec); |
683 parameters.codecs.push_back(kOpusCodec); | 688 parameters.codecs.push_back(kOpusCodec); |
684 parameters.codecs[2].params["stereo"] = "1"; | 689 parameters.codecs[2].params["stereo"] = "1"; |
685 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 690 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
686 EXPECT_TRUE(channel_->AddRecvStream( | 691 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
687 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
688 int channel_num2 = voe_.GetLastChannel(); | 692 int channel_num2 = voe_.GetLastChannel(); |
689 webrtc::CodecInst opus; | 693 webrtc::CodecInst opus; |
690 cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus); | 694 cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus); |
691 EXPECT_EQ(2, opus.channels); | 695 EXPECT_EQ(2, opus.channels); |
692 EXPECT_EQ(111, opus.pltype); | 696 EXPECT_EQ(111, opus.pltype); |
693 EXPECT_STREQ("opus", opus.plname); | 697 EXPECT_STREQ("opus", opus.plname); |
694 opus.pltype = 0; | 698 opus.pltype = 0; |
695 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, opus)); | 699 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, opus)); |
696 EXPECT_EQ(111, opus.pltype); | 700 EXPECT_EQ(111, opus.pltype); |
697 } | 701 } |
698 | 702 |
699 // Test that changes to recv codecs are applied to all streams. | 703 // Test that changes to recv codecs are applied to all streams. |
700 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithMultipleStreams) { | 704 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithMultipleStreams) { |
701 EXPECT_TRUE(SetupChannel()); | 705 EXPECT_TRUE(SetupChannel()); |
702 cricket::AudioRecvParameters parameters; | 706 cricket::AudioRecvParameters parameters; |
703 parameters.codecs.push_back(kIsacCodec); | 707 parameters.codecs.push_back(kIsacCodec); |
704 parameters.codecs.push_back(kPcmuCodec); | 708 parameters.codecs.push_back(kPcmuCodec); |
705 parameters.codecs.push_back(kTelephoneEventCodec); | 709 parameters.codecs.push_back(kTelephoneEventCodec); |
706 parameters.codecs[0].id = 106; // collide with existing telephone-event | 710 parameters.codecs[0].id = 106; // collide with existing telephone-event |
707 parameters.codecs[2].id = 126; | 711 parameters.codecs[2].id = 126; |
708 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 712 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
709 EXPECT_TRUE(channel_->AddRecvStream( | 713 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
710 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
711 int channel_num2 = voe_.GetLastChannel(); | 714 int channel_num2 = voe_.GetLastChannel(); |
712 webrtc::CodecInst gcodec; | 715 webrtc::CodecInst gcodec; |
713 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "ISAC"); | 716 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "ISAC"); |
714 gcodec.plfreq = 16000; | 717 gcodec.plfreq = 16000; |
715 gcodec.channels = 1; | 718 gcodec.channels = 1; |
716 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, gcodec)); | 719 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, gcodec)); |
717 EXPECT_EQ(106, gcodec.pltype); | 720 EXPECT_EQ(106, gcodec.pltype); |
718 EXPECT_STREQ("ISAC", gcodec.plname); | 721 EXPECT_STREQ("ISAC", gcodec.plname); |
719 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "telephone-event"); | 722 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "telephone-event"); |
720 gcodec.plfreq = 8000; | 723 gcodec.plfreq = 8000; |
(...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1364 cricket::FeedbackParam(cricket::kRtcpFbParamNack, | 1367 cricket::FeedbackParam(cricket::kRtcpFbParamNack, |
1365 cricket::kParamValueEmpty)); | 1368 cricket::kParamValueEmpty)); |
1366 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1369 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1367 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1370 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1368 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1371 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1369 } | 1372 } |
1370 | 1373 |
1371 // Test that we can enable NACK with opus as callee. | 1374 // Test that we can enable NACK with opus as callee. |
1372 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackAsCallee) { | 1375 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackAsCallee) { |
1373 EXPECT_TRUE(SetupRecvStream()); | 1376 EXPECT_TRUE(SetupRecvStream()); |
1374 int channel_num = voe_.GetLastChannel(); | |
1375 cricket::AudioSendParameters parameters; | 1377 cricket::AudioSendParameters parameters; |
1376 parameters.codecs.push_back(kOpusCodec); | 1378 parameters.codecs.push_back(kOpusCodec); |
1377 parameters.codecs[0].AddFeedbackParam( | 1379 parameters.codecs[0].AddFeedbackParam( |
1378 cricket::FeedbackParam(cricket::kRtcpFbParamNack, | 1380 cricket::FeedbackParam(cricket::kRtcpFbParamNack, |
1379 cricket::kParamValueEmpty)); | 1381 cricket::kParamValueEmpty)); |
1380 EXPECT_FALSE(voe_.GetNACK(channel_num)); | 1382 EXPECT_EQ(0, GetRecvStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1381 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1383 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1382 // NACK should be enabled even with no send stream. | 1384 // NACK should be enabled even with no send stream. |
1383 EXPECT_TRUE(voe_.GetNACK(channel_num)); | 1385 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1384 | 1386 |
1385 EXPECT_TRUE(channel_->AddSendStream( | 1387 EXPECT_TRUE(channel_->AddSendStream( |
1386 cricket::StreamParams::CreateLegacy(kSsrc1))); | 1388 cricket::StreamParams::CreateLegacy(kSsrc1))); |
1387 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1389 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1388 } | 1390 } |
1389 | 1391 |
1390 // Test that we can enable NACK on receive streams. | 1392 // Test that we can enable NACK on receive streams. |
1391 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackRecvStreams) { | 1393 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackRecvStreams) { |
1392 EXPECT_TRUE(SetupSendStream()); | 1394 EXPECT_TRUE(SetupSendStream()); |
1393 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 1395 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
1394 int channel_num2 = voe_.GetLastChannel(); | |
1395 cricket::AudioSendParameters parameters; | 1396 cricket::AudioSendParameters parameters; |
1396 parameters.codecs.push_back(kOpusCodec); | 1397 parameters.codecs.push_back(kOpusCodec); |
1397 parameters.codecs[0].AddFeedbackParam( | 1398 parameters.codecs[0].AddFeedbackParam( |
1398 cricket::FeedbackParam(cricket::kRtcpFbParamNack, | 1399 cricket::FeedbackParam(cricket::kRtcpFbParamNack, |
1399 cricket::kParamValueEmpty)); | 1400 cricket::kParamValueEmpty)); |
1400 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1401 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1401 EXPECT_FALSE(voe_.GetNACK(channel_num2)); | 1402 EXPECT_EQ(0, GetRecvStreamConfig(kSsrc2).rtp.nack.rtp_history_ms); |
1402 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1403 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1403 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1404 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1404 EXPECT_TRUE(voe_.GetNACK(channel_num2)); | 1405 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrc2).rtp.nack.rtp_history_ms); |
1405 } | 1406 } |
1406 | 1407 |
1407 // Test that we can disable NACK. | 1408 // Test that we can disable NACK. |
1408 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNack) { | 1409 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNack) { |
1409 EXPECT_TRUE(SetupSendStream()); | 1410 EXPECT_TRUE(SetupSendStream()); |
1410 cricket::AudioSendParameters parameters; | 1411 cricket::AudioSendParameters parameters; |
1411 parameters.codecs.push_back(kOpusCodec); | 1412 parameters.codecs.push_back(kOpusCodec); |
1412 parameters.codecs[0].AddFeedbackParam( | 1413 parameters.codecs[0].AddFeedbackParam( |
1413 cricket::FeedbackParam(cricket::kRtcpFbParamNack, | 1414 cricket::FeedbackParam(cricket::kRtcpFbParamNack, |
1414 cricket::kParamValueEmpty)); | 1415 cricket::kParamValueEmpty)); |
1415 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1416 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1416 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1417 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1417 | 1418 |
1418 parameters.codecs.clear(); | 1419 parameters.codecs.clear(); |
1419 parameters.codecs.push_back(kOpusCodec); | 1420 parameters.codecs.push_back(kOpusCodec); |
1420 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1421 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1421 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1422 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1422 } | 1423 } |
1423 | 1424 |
1424 // Test that we can disable NACK on receive streams. | 1425 // Test that we can disable NACK on receive streams. |
1425 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNackRecvStreams) { | 1426 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNackRecvStreams) { |
1426 EXPECT_TRUE(SetupSendStream()); | 1427 EXPECT_TRUE(SetupSendStream()); |
1427 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 1428 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
1428 int channel_num2 = voe_.GetLastChannel(); | |
1429 cricket::AudioSendParameters parameters; | 1429 cricket::AudioSendParameters parameters; |
1430 parameters.codecs.push_back(kOpusCodec); | 1430 parameters.codecs.push_back(kOpusCodec); |
1431 parameters.codecs[0].AddFeedbackParam( | 1431 parameters.codecs[0].AddFeedbackParam( |
1432 cricket::FeedbackParam(cricket::kRtcpFbParamNack, | 1432 cricket::FeedbackParam(cricket::kRtcpFbParamNack, |
1433 cricket::kParamValueEmpty)); | 1433 cricket::kParamValueEmpty)); |
1434 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1434 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1435 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1435 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1436 EXPECT_TRUE(voe_.GetNACK(channel_num2)); | 1436 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrc2).rtp.nack.rtp_history_ms); |
1437 | 1437 |
1438 parameters.codecs.clear(); | 1438 parameters.codecs.clear(); |
1439 parameters.codecs.push_back(kOpusCodec); | 1439 parameters.codecs.push_back(kOpusCodec); |
1440 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1440 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1441 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1441 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1442 EXPECT_FALSE(voe_.GetNACK(channel_num2)); | 1442 EXPECT_EQ(0, GetRecvStreamConfig(kSsrc2).rtp.nack.rtp_history_ms); |
1443 } | 1443 } |
1444 | 1444 |
1445 // Test that NACK is enabled on a new receive stream. | 1445 // Test that NACK is enabled on a new receive stream. |
1446 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamEnableNack) { | 1446 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamEnableNack) { |
1447 EXPECT_TRUE(SetupSendStream()); | 1447 EXPECT_TRUE(SetupSendStream()); |
1448 cricket::AudioSendParameters parameters; | 1448 cricket::AudioSendParameters parameters; |
1449 parameters.codecs.push_back(kIsacCodec); | 1449 parameters.codecs.push_back(kIsacCodec); |
1450 parameters.codecs.push_back(kCn16000Codec); | 1450 parameters.codecs.push_back(kCn16000Codec); |
1451 parameters.codecs[0].AddFeedbackParam( | 1451 parameters.codecs[0].AddFeedbackParam( |
1452 cricket::FeedbackParam(cricket::kRtcpFbParamNack, | 1452 cricket::FeedbackParam(cricket::kRtcpFbParamNack, |
1453 cricket::kParamValueEmpty)); | 1453 cricket::kParamValueEmpty)); |
1454 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1454 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1455 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1455 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1456 | 1456 |
1457 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 1457 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
1458 int channel_num = voe_.GetLastChannel(); | 1458 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrc2).rtp.nack.rtp_history_ms); |
1459 EXPECT_TRUE(voe_.GetNACK(channel_num)); | 1459 EXPECT_TRUE(AddRecvStream(kSsrc3)); |
1460 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); | 1460 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrc3).rtp.nack.rtp_history_ms); |
1461 channel_num = voe_.GetLastChannel(); | |
1462 EXPECT_TRUE(voe_.GetNACK(channel_num)); | |
1463 } | 1461 } |
1464 | 1462 |
1465 // Test that without useinbandfec, Opus FEC is off. | 1463 // Test that without useinbandfec, Opus FEC is off. |
1466 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecNoOpusFec) { | 1464 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecNoOpusFec) { |
1467 EXPECT_TRUE(SetupSendStream()); | 1465 EXPECT_TRUE(SetupSendStream()); |
1468 int channel_num = voe_.GetLastChannel(); | 1466 int channel_num = voe_.GetLastChannel(); |
1469 cricket::AudioSendParameters parameters; | 1467 cricket::AudioSendParameters parameters; |
1470 parameters.codecs.push_back(kOpusCodec); | 1468 parameters.codecs.push_back(kOpusCodec); |
1471 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1469 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1472 EXPECT_FALSE(voe_.GetCodecFEC(channel_num)); | 1470 EXPECT_FALSE(voe_.GetCodecFEC(channel_num)); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1562 EXPECT_TRUE(SetupChannel()); | 1560 EXPECT_TRUE(SetupChannel()); |
1563 cricket::AudioSendParameters send_parameters; | 1561 cricket::AudioSendParameters send_parameters; |
1564 send_parameters.codecs.push_back(kOpusCodec); | 1562 send_parameters.codecs.push_back(kOpusCodec); |
1565 EXPECT_TRUE(send_parameters.codecs[0].feedback_params.params().empty()); | 1563 EXPECT_TRUE(send_parameters.codecs[0].feedback_params.params().empty()); |
1566 EXPECT_TRUE(channel_->SetSendParameters(send_parameters)); | 1564 EXPECT_TRUE(channel_->SetSendParameters(send_parameters)); |
1567 | 1565 |
1568 cricket::AudioRecvParameters recv_parameters; | 1566 cricket::AudioRecvParameters recv_parameters; |
1569 recv_parameters.codecs.push_back(kIsacCodec); | 1567 recv_parameters.codecs.push_back(kIsacCodec); |
1570 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters)); | 1568 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters)); |
1571 EXPECT_TRUE( | 1569 EXPECT_TRUE( |
1572 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc1))); | 1570 AddRecvStream(kSsrc1)); |
1573 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrc1) != nullptr); | 1571 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrc1) != nullptr); |
1574 EXPECT_FALSE( | 1572 EXPECT_FALSE( |
1575 call_.GetAudioReceiveStream(kSsrc1)->GetConfig().rtp.transport_cc); | 1573 call_.GetAudioReceiveStream(kSsrc1)->GetConfig().rtp.transport_cc); |
1576 | 1574 |
1577 send_parameters.codecs = engine_->codecs(); | 1575 send_parameters.codecs = engine_->codecs(); |
1578 EXPECT_TRUE(channel_->SetSendParameters(send_parameters)); | 1576 EXPECT_TRUE(channel_->SetSendParameters(send_parameters)); |
1579 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrc1) != nullptr); | 1577 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrc1) != nullptr); |
1580 EXPECT_TRUE( | 1578 EXPECT_TRUE( |
1581 call_.GetAudioReceiveStream(kSsrc1)->GetConfig().rtp.transport_cc); | 1579 call_.GetAudioReceiveStream(kSsrc1)->GetConfig().rtp.transport_cc); |
1582 } | 1580 } |
(...skipping 846 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2429 SetupForMultiSendStream(); | 2427 SetupForMultiSendStream(); |
2430 | 2428 |
2431 // Create send streams. | 2429 // Create send streams. |
2432 for (uint32_t ssrc : kSsrcs4) { | 2430 for (uint32_t ssrc : kSsrcs4) { |
2433 EXPECT_TRUE(channel_->AddSendStream( | 2431 EXPECT_TRUE(channel_->AddSendStream( |
2434 cricket::StreamParams::CreateLegacy(ssrc))); | 2432 cricket::StreamParams::CreateLegacy(ssrc))); |
2435 } | 2433 } |
2436 | 2434 |
2437 // Create a receive stream to check that none of the send streams end up in | 2435 // Create a receive stream to check that none of the send streams end up in |
2438 // the receive stream stats. | 2436 // the receive stream stats. |
2439 EXPECT_TRUE(channel_->AddRecvStream( | 2437 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
2440 cricket::StreamParams::CreateLegacy(kSsrc2))); | |
2441 | 2438 |
2442 // We need send codec to be set to get all stats. | 2439 // We need send codec to be set to get all stats. |
2443 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2440 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2444 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 2441 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
2445 SetAudioSendStreamStats(); | 2442 SetAudioSendStreamStats(); |
2446 | 2443 |
2447 // Check stats for the added streams. | 2444 // Check stats for the added streams. |
2448 { | 2445 { |
2449 cricket::VoiceMediaInfo info; | 2446 cricket::VoiceMediaInfo info; |
2450 EXPECT_EQ(true, channel_->GetStats(&info)); | 2447 EXPECT_EQ(true, channel_->GetStats(&info)); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2488 EXPECT_TRUE(SetupSendStream()); | 2485 EXPECT_TRUE(SetupSendStream()); |
2489 int channel_num1 = voe_.GetLastChannel(); | 2486 int channel_num1 = voe_.GetLastChannel(); |
2490 | 2487 |
2491 // Start playout without a receive stream. | 2488 // Start playout without a receive stream. |
2492 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2489 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2493 EXPECT_TRUE(channel_->SetPlayout(true)); | 2490 EXPECT_TRUE(channel_->SetPlayout(true)); |
2494 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); | 2491 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); |
2495 | 2492 |
2496 // Adding another stream should enable playout on the new stream only. | 2493 // Adding another stream should enable playout on the new stream only. |
2497 EXPECT_TRUE( | 2494 EXPECT_TRUE( |
2498 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc2))); | 2495 AddRecvStream(kSsrc2)); |
2499 int channel_num2 = voe_.GetLastChannel(); | 2496 int channel_num2 = voe_.GetLastChannel(); |
2500 SetSend(channel_, true); | 2497 SetSend(channel_, true); |
2501 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); | 2498 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); |
2502 | 2499 |
2503 // Make sure only the new stream is played out. | 2500 // Make sure only the new stream is played out. |
2504 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); | 2501 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); |
2505 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); | 2502 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); |
2506 | 2503 |
2507 // Adding yet another stream should have stream 2 and 3 enabled for playout. | 2504 // Adding yet another stream should have stream 2 and 3 enabled for playout. |
2508 EXPECT_TRUE( | 2505 EXPECT_TRUE( |
2509 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc3))); | 2506 AddRecvStream(kSsrc3)); |
2510 int channel_num3 = voe_.GetLastChannel(); | 2507 int channel_num3 = voe_.GetLastChannel(); |
2511 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); | 2508 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); |
2512 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); | 2509 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); |
2513 EXPECT_TRUE(voe_.GetPlayout(channel_num3)); | 2510 EXPECT_TRUE(voe_.GetPlayout(channel_num3)); |
2514 | 2511 |
2515 // Stop sending. | 2512 // Stop sending. |
2516 SetSend(channel_, false); | 2513 SetSend(channel_, false); |
2517 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); | 2514 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); |
2518 | 2515 |
2519 // Stop playout. | 2516 // Stop playout. |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2595 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrc) { | 2592 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrc) { |
2596 EXPECT_TRUE(SetupSendStream()); | 2593 EXPECT_TRUE(SetupSendStream()); |
2597 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); | 2594 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); |
2598 } | 2595 } |
2599 | 2596 |
2600 TEST_F(WebRtcVoiceEngineTestFake, GetStats) { | 2597 TEST_F(WebRtcVoiceEngineTestFake, GetStats) { |
2601 // Setup. We need send codec to be set to get all stats. | 2598 // Setup. We need send codec to be set to get all stats. |
2602 EXPECT_TRUE(SetupSendStream()); | 2599 EXPECT_TRUE(SetupSendStream()); |
2603 // SetupSendStream adds a send stream with kSsrc1, so the receive | 2600 // SetupSendStream adds a send stream with kSsrc1, so the receive |
2604 // stream has to use a different SSRC. | 2601 // stream has to use a different SSRC. |
2605 EXPECT_TRUE(channel_->AddRecvStream( | 2602 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
2606 cricket::StreamParams::CreateLegacy(kSsrc2))); | |
2607 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2603 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2608 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 2604 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
2609 SetAudioSendStreamStats(); | 2605 SetAudioSendStreamStats(); |
2610 | 2606 |
2611 // Check stats for the added streams. | 2607 // Check stats for the added streams. |
2612 { | 2608 { |
2613 cricket::VoiceMediaInfo info; | 2609 cricket::VoiceMediaInfo info; |
2614 EXPECT_EQ(true, channel_->GetStats(&info)); | 2610 EXPECT_EQ(true, channel_->GetStats(&info)); |
2615 | 2611 |
2616 // We have added one send stream. We should see the stats we've set. | 2612 // We have added one send stream. We should see the stats we've set. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2649 EXPECT_EQ(1u, info.receivers.size()); | 2645 EXPECT_EQ(1u, info.receivers.size()); |
2650 VerifyVoiceReceiverInfo(info.receivers[0]); | 2646 VerifyVoiceReceiverInfo(info.receivers[0]); |
2651 } | 2647 } |
2652 } | 2648 } |
2653 | 2649 |
2654 // Test that we can set the outgoing SSRC properly with multiple streams. | 2650 // Test that we can set the outgoing SSRC properly with multiple streams. |
2655 // SSRC is set in SetupSendStream() by calling AddSendStream. | 2651 // SSRC is set in SetupSendStream() by calling AddSendStream. |
2656 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcWithMultipleStreams) { | 2652 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcWithMultipleStreams) { |
2657 EXPECT_TRUE(SetupSendStream()); | 2653 EXPECT_TRUE(SetupSendStream()); |
2658 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); | 2654 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); |
2659 EXPECT_TRUE(channel_->AddRecvStream( | 2655 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
2660 cricket::StreamParams::CreateLegacy(kSsrc2))); | |
2661 EXPECT_EQ(kSsrc1, GetRecvStreamConfig(kSsrc2).rtp.local_ssrc); | 2656 EXPECT_EQ(kSsrc1, GetRecvStreamConfig(kSsrc2).rtp.local_ssrc); |
2662 } | 2657 } |
2663 | 2658 |
2664 // Test that the local SSRC is the same on sending and receiving channels if the | 2659 // Test that the local SSRC is the same on sending and receiving channels if the |
2665 // receive channel is created before the send channel. | 2660 // receive channel is created before the send channel. |
2666 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcAfterCreatingReceiveChannel) { | 2661 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcAfterCreatingReceiveChannel) { |
2667 EXPECT_TRUE(SetupChannel()); | 2662 EXPECT_TRUE(SetupChannel()); |
2668 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2663 EXPECT_TRUE(AddRecvStream(1)); |
2669 int receive_channel_num = voe_.GetLastChannel(); | 2664 int receive_channel_num = voe_.GetLastChannel(); |
2670 EXPECT_TRUE(channel_->AddSendStream( | 2665 EXPECT_TRUE(channel_->AddSendStream( |
2671 cricket::StreamParams::CreateLegacy(1234))); | 2666 cricket::StreamParams::CreateLegacy(1234))); |
2672 | 2667 |
2673 EXPECT_TRUE(call_.GetAudioSendStream(1234)); | 2668 EXPECT_TRUE(call_.GetAudioSendStream(1234)); |
2674 EXPECT_EQ(1234U, voe_.GetLocalSSRC(receive_channel_num)); | 2669 EXPECT_EQ(1234U, voe_.GetLocalSSRC(receive_channel_num)); |
2675 } | 2670 } |
2676 | 2671 |
2677 // Test that we can properly receive packets. | 2672 // Test that we can properly receive packets. |
2678 TEST_F(WebRtcVoiceEngineTestFake, Recv) { | 2673 TEST_F(WebRtcVoiceEngineTestFake, Recv) { |
2679 EXPECT_TRUE(SetupChannel()); | 2674 EXPECT_TRUE(SetupChannel()); |
2680 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2675 EXPECT_TRUE(AddRecvStream(1)); |
2681 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); | 2676 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); |
2682 | 2677 |
2683 EXPECT_TRUE(GetRecvStream(1).VerifyLastPacket(kPcmuFrame, | 2678 EXPECT_TRUE(GetRecvStream(1).VerifyLastPacket(kPcmuFrame, |
2684 sizeof(kPcmuFrame))); | 2679 sizeof(kPcmuFrame))); |
2685 } | 2680 } |
2686 | 2681 |
2687 // Test that we can properly receive packets on multiple streams. | 2682 // Test that we can properly receive packets on multiple streams. |
2688 TEST_F(WebRtcVoiceEngineTestFake, RecvWithMultipleStreams) { | 2683 TEST_F(WebRtcVoiceEngineTestFake, RecvWithMultipleStreams) { |
2689 EXPECT_TRUE(SetupChannel()); | 2684 EXPECT_TRUE(SetupChannel()); |
2690 const uint32_t ssrc1 = 1; | 2685 const uint32_t ssrc1 = 1; |
2691 const uint32_t ssrc2 = 2; | 2686 const uint32_t ssrc2 = 2; |
2692 const uint32_t ssrc3 = 3; | 2687 const uint32_t ssrc3 = 3; |
2693 EXPECT_TRUE(channel_->AddRecvStream( | 2688 EXPECT_TRUE(AddRecvStream(ssrc1)); |
2694 cricket::StreamParams::CreateLegacy(ssrc1))); | 2689 EXPECT_TRUE(AddRecvStream(ssrc2)); |
2695 EXPECT_TRUE(channel_->AddRecvStream( | 2690 EXPECT_TRUE(AddRecvStream(ssrc3)); |
2696 cricket::StreamParams::CreateLegacy(ssrc2))); | |
2697 EXPECT_TRUE(channel_->AddRecvStream( | |
2698 cricket::StreamParams::CreateLegacy(ssrc3))); | |
2699 // Create packets with the right SSRCs. | 2691 // Create packets with the right SSRCs. |
2700 unsigned char packets[4][sizeof(kPcmuFrame)]; | 2692 unsigned char packets[4][sizeof(kPcmuFrame)]; |
2701 for (size_t i = 0; i < arraysize(packets); ++i) { | 2693 for (size_t i = 0; i < arraysize(packets); ++i) { |
2702 memcpy(packets[i], kPcmuFrame, sizeof(kPcmuFrame)); | 2694 memcpy(packets[i], kPcmuFrame, sizeof(kPcmuFrame)); |
2703 rtc::SetBE32(packets[i] + 8, static_cast<uint32_t>(i)); | 2695 rtc::SetBE32(packets[i] + 8, static_cast<uint32_t>(i)); |
2704 } | 2696 } |
2705 | 2697 |
2706 const cricket::FakeAudioReceiveStream& s1 = GetRecvStream(ssrc1); | 2698 const cricket::FakeAudioReceiveStream& s1 = GetRecvStream(ssrc1); |
2707 const cricket::FakeAudioReceiveStream& s2 = GetRecvStream(ssrc2); | 2699 const cricket::FakeAudioReceiveStream& s2 = GetRecvStream(ssrc2); |
2708 const cricket::FakeAudioReceiveStream& s3 = GetRecvStream(ssrc3); | 2700 const cricket::FakeAudioReceiveStream& s3 = GetRecvStream(ssrc3); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2783 // Test that a default channel is created even after a signalled stream has been | 2775 // Test that a default channel is created even after a signalled stream has been |
2784 // added, and that this stream will get any packets for unknown SSRCs. | 2776 // added, and that this stream will get any packets for unknown SSRCs. |
2785 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledAfterSignalled) { | 2777 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledAfterSignalled) { |
2786 EXPECT_TRUE(SetupChannel()); | 2778 EXPECT_TRUE(SetupChannel()); |
2787 unsigned char packet[sizeof(kPcmuFrame)]; | 2779 unsigned char packet[sizeof(kPcmuFrame)]; |
2788 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); | 2780 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); |
2789 | 2781 |
2790 // Add a known stream, send packet and verify we got it. | 2782 // Add a known stream, send packet and verify we got it. |
2791 const uint32_t signaled_ssrc = 1; | 2783 const uint32_t signaled_ssrc = 1; |
2792 rtc::SetBE32(&packet[8], signaled_ssrc); | 2784 rtc::SetBE32(&packet[8], signaled_ssrc); |
2793 EXPECT_TRUE(channel_->AddRecvStream( | 2785 EXPECT_TRUE(AddRecvStream(signaled_ssrc)); |
2794 cricket::StreamParams::CreateLegacy(signaled_ssrc))); | |
2795 DeliverPacket(packet, sizeof(packet)); | 2786 DeliverPacket(packet, sizeof(packet)); |
2796 EXPECT_TRUE(GetRecvStream(signaled_ssrc).VerifyLastPacket( | 2787 EXPECT_TRUE(GetRecvStream(signaled_ssrc).VerifyLastPacket( |
2797 packet, sizeof(packet))); | 2788 packet, sizeof(packet))); |
2798 | 2789 |
2799 // Note that the first unknown SSRC cannot be 0, because we only support | 2790 // Note that the first unknown SSRC cannot be 0, because we only support |
2800 // creating receive streams for SSRC!=0. | 2791 // creating receive streams for SSRC!=0. |
2801 const uint32_t unsignaled_ssrc = 7011; | 2792 const uint32_t unsignaled_ssrc = 7011; |
2802 rtc::SetBE32(&packet[8], unsignaled_ssrc); | 2793 rtc::SetBE32(&packet[8], unsignaled_ssrc); |
2803 DeliverPacket(packet, sizeof(packet)); | 2794 DeliverPacket(packet, sizeof(packet)); |
2804 EXPECT_TRUE(GetRecvStream(unsignaled_ssrc).VerifyLastPacket( | 2795 EXPECT_TRUE(GetRecvStream(unsignaled_ssrc).VerifyLastPacket( |
2805 packet, sizeof(packet))); | 2796 packet, sizeof(packet))); |
2806 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); | 2797 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); |
2807 | 2798 |
2808 DeliverPacket(packet, sizeof(packet)); | 2799 DeliverPacket(packet, sizeof(packet)); |
2809 EXPECT_EQ(2, GetRecvStream(unsignaled_ssrc).received_packets()); | 2800 EXPECT_EQ(2, GetRecvStream(unsignaled_ssrc).received_packets()); |
2810 | 2801 |
2811 rtc::SetBE32(&packet[8], signaled_ssrc); | 2802 rtc::SetBE32(&packet[8], signaled_ssrc); |
2812 DeliverPacket(packet, sizeof(packet)); | 2803 DeliverPacket(packet, sizeof(packet)); |
2813 EXPECT_EQ(2, GetRecvStream(signaled_ssrc).received_packets()); | 2804 EXPECT_EQ(2, GetRecvStream(signaled_ssrc).received_packets()); |
2814 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); | 2805 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); |
2815 } | 2806 } |
2816 | 2807 |
2817 // Test that we properly handle failures to add a receive stream. | 2808 // Test that we properly handle failures to add a receive stream. |
2818 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamFail) { | 2809 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamFail) { |
2819 EXPECT_TRUE(SetupChannel()); | 2810 EXPECT_TRUE(SetupChannel()); |
2820 voe_.set_fail_create_channel(true); | 2811 voe_.set_fail_create_channel(true); |
2821 EXPECT_FALSE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2812 EXPECT_FALSE(AddRecvStream(2)); |
2822 } | 2813 } |
2823 | 2814 |
2824 // Test that we properly handle failures to add a send stream. | 2815 // Test that we properly handle failures to add a send stream. |
2825 TEST_F(WebRtcVoiceEngineTestFake, AddSendStreamFail) { | 2816 TEST_F(WebRtcVoiceEngineTestFake, AddSendStreamFail) { |
2826 EXPECT_TRUE(SetupChannel()); | 2817 EXPECT_TRUE(SetupChannel()); |
2827 voe_.set_fail_create_channel(true); | 2818 voe_.set_fail_create_channel(true); |
2828 EXPECT_FALSE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(2))); | 2819 EXPECT_FALSE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(2))); |
2829 } | 2820 } |
2830 | 2821 |
2831 // Test that AddRecvStream creates new stream. | 2822 // Test that AddRecvStream creates new stream. |
2832 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStream) { | 2823 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStream) { |
2833 EXPECT_TRUE(SetupRecvStream()); | 2824 EXPECT_TRUE(SetupRecvStream()); |
2834 int channel_num = voe_.GetLastChannel(); | 2825 int channel_num = voe_.GetLastChannel(); |
2835 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2826 EXPECT_TRUE(AddRecvStream(1)); |
2836 EXPECT_NE(channel_num, voe_.GetLastChannel()); | 2827 EXPECT_NE(channel_num, voe_.GetLastChannel()); |
2837 } | 2828 } |
2838 | 2829 |
2839 // Test that after adding a recv stream, we do not decode more codecs than | 2830 // Test that after adding a recv stream, we do not decode more codecs than |
2840 // those previously passed into SetRecvCodecs. | 2831 // those previously passed into SetRecvCodecs. |
2841 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamUnsupportedCodec) { | 2832 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamUnsupportedCodec) { |
2842 EXPECT_TRUE(SetupSendStream()); | 2833 EXPECT_TRUE(SetupSendStream()); |
2843 cricket::AudioRecvParameters parameters; | 2834 cricket::AudioRecvParameters parameters; |
2844 parameters.codecs.push_back(kIsacCodec); | 2835 parameters.codecs.push_back(kIsacCodec); |
2845 parameters.codecs.push_back(kPcmuCodec); | 2836 parameters.codecs.push_back(kPcmuCodec); |
2846 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 2837 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
2847 EXPECT_TRUE(channel_->AddRecvStream( | 2838 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
2848 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
2849 int channel_num2 = voe_.GetLastChannel(); | 2839 int channel_num2 = voe_.GetLastChannel(); |
2850 webrtc::CodecInst gcodec; | 2840 webrtc::CodecInst gcodec; |
2851 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "opus"); | 2841 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "opus"); |
2852 gcodec.plfreq = 48000; | 2842 gcodec.plfreq = 48000; |
2853 gcodec.channels = 2; | 2843 gcodec.channels = 2; |
2854 EXPECT_EQ(-1, voe_.GetRecPayloadType(channel_num2, gcodec)); | 2844 EXPECT_EQ(-1, voe_.GetRecPayloadType(channel_num2, gcodec)); |
2855 } | 2845 } |
2856 | 2846 |
2857 // Test that we properly clean up any streams that were added, even if | 2847 // Test that we properly clean up any streams that were added, even if |
2858 // not explicitly removed. | 2848 // not explicitly removed. |
2859 TEST_F(WebRtcVoiceEngineTestFake, StreamCleanup) { | 2849 TEST_F(WebRtcVoiceEngineTestFake, StreamCleanup) { |
2860 EXPECT_TRUE(SetupSendStream()); | 2850 EXPECT_TRUE(SetupSendStream()); |
2861 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2851 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2862 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2852 EXPECT_TRUE(AddRecvStream(1)); |
2863 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2853 EXPECT_TRUE(AddRecvStream(2)); |
2864 EXPECT_EQ(3, voe_.GetNumChannels()); // default channel + 2 added | 2854 EXPECT_EQ(3, voe_.GetNumChannels()); // default channel + 2 added |
2865 delete channel_; | 2855 delete channel_; |
2866 channel_ = NULL; | 2856 channel_ = NULL; |
2867 EXPECT_EQ(0, voe_.GetNumChannels()); | 2857 EXPECT_EQ(0, voe_.GetNumChannels()); |
2868 } | 2858 } |
2869 | 2859 |
2870 TEST_F(WebRtcVoiceEngineTestFake, TestAddRecvStreamFailWithZeroSsrc) { | 2860 TEST_F(WebRtcVoiceEngineTestFake, TestAddRecvStreamFailWithZeroSsrc) { |
2871 EXPECT_TRUE(SetupSendStream()); | 2861 EXPECT_TRUE(SetupSendStream()); |
2872 EXPECT_FALSE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(0))); | 2862 EXPECT_FALSE(AddRecvStream(0)); |
2873 } | 2863 } |
2874 | 2864 |
2875 TEST_F(WebRtcVoiceEngineTestFake, TestNoLeakingWhenAddRecvStreamFail) { | 2865 TEST_F(WebRtcVoiceEngineTestFake, TestNoLeakingWhenAddRecvStreamFail) { |
2876 EXPECT_TRUE(SetupChannel()); | 2866 EXPECT_TRUE(SetupChannel()); |
2877 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2867 EXPECT_TRUE(AddRecvStream(1)); |
2878 // Manually delete channel to simulate a failure. | 2868 // Manually delete channel to simulate a failure. |
2879 int channel = voe_.GetLastChannel(); | 2869 int channel = voe_.GetLastChannel(); |
2880 EXPECT_EQ(0, voe_.DeleteChannel(channel)); | 2870 EXPECT_EQ(0, voe_.DeleteChannel(channel)); |
2881 // Add recv stream 2 should work. | 2871 // Add recv stream 2 should work. |
2882 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2872 EXPECT_TRUE(AddRecvStream(2)); |
2883 int new_channel = voe_.GetLastChannel(); | 2873 int new_channel = voe_.GetLastChannel(); |
2884 EXPECT_NE(channel, new_channel); | 2874 EXPECT_NE(channel, new_channel); |
2885 // The last created channel is deleted too. | 2875 // The last created channel is deleted too. |
2886 EXPECT_EQ(0, voe_.DeleteChannel(new_channel)); | 2876 EXPECT_EQ(0, voe_.DeleteChannel(new_channel)); |
2887 } | 2877 } |
2888 | 2878 |
2889 // Test the InsertDtmf on default send stream as caller. | 2879 // Test the InsertDtmf on default send stream as caller. |
2890 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnDefaultSendStreamAsCaller) { | 2880 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnDefaultSendStreamAsCaller) { |
2891 TestInsertDtmf(0, true); | 2881 TestInsertDtmf(0, true); |
2892 } | 2882 } |
(...skipping 10 matching lines...) Expand all Loading... | |
2903 | 2893 |
2904 // Test the InsertDtmf on specified send stream as callee. | 2894 // Test the InsertDtmf on specified send stream as callee. |
2905 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCallee) { | 2895 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCallee) { |
2906 TestInsertDtmf(kSsrc1, false); | 2896 TestInsertDtmf(kSsrc1, false); |
2907 } | 2897 } |
2908 | 2898 |
2909 TEST_F(WebRtcVoiceEngineTestFake, TestSetPlayoutError) { | 2899 TEST_F(WebRtcVoiceEngineTestFake, TestSetPlayoutError) { |
2910 EXPECT_TRUE(SetupSendStream()); | 2900 EXPECT_TRUE(SetupSendStream()); |
2911 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2901 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2912 SetSend(channel_, true); | 2902 SetSend(channel_, true); |
2913 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2903 EXPECT_TRUE(AddRecvStream(2)); |
2914 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); | 2904 EXPECT_TRUE(AddRecvStream(3)); |
2915 EXPECT_TRUE(channel_->SetPlayout(true)); | 2905 EXPECT_TRUE(channel_->SetPlayout(true)); |
2916 voe_.set_playout_fail_channel(voe_.GetLastChannel() - 1); | 2906 voe_.set_playout_fail_channel(voe_.GetLastChannel() - 1); |
2917 EXPECT_TRUE(channel_->SetPlayout(false)); | 2907 EXPECT_TRUE(channel_->SetPlayout(false)); |
2918 EXPECT_FALSE(channel_->SetPlayout(true)); | 2908 EXPECT_FALSE(channel_->SetPlayout(true)); |
2919 } | 2909 } |
2920 | 2910 |
2921 TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) { | 2911 TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) { |
2922 EXPECT_TRUE(SetupSendStream()); | 2912 EXPECT_TRUE(SetupSendStream()); |
2923 EXPECT_CALL(adm_, | 2913 EXPECT_CALL(adm_, |
2924 BuiltInAECIsAvailable()).Times(9).WillRepeatedly(Return(false)); | 2914 BuiltInAECIsAvailable()).Times(9).WillRepeatedly(Return(false)); |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3257 EXPECT_EQ(rtc::DSCP_DEFAULT, network_interface.dscp()); | 3247 EXPECT_EQ(rtc::DSCP_DEFAULT, network_interface.dscp()); |
3258 | 3248 |
3259 channel->SetInterface(nullptr); | 3249 channel->SetInterface(nullptr); |
3260 } | 3250 } |
3261 | 3251 |
3262 TEST_F(WebRtcVoiceEngineTestFake, TestGetReceiveChannelId) { | 3252 TEST_F(WebRtcVoiceEngineTestFake, TestGetReceiveChannelId) { |
3263 EXPECT_TRUE(SetupChannel()); | 3253 EXPECT_TRUE(SetupChannel()); |
3264 cricket::WebRtcVoiceMediaChannel* media_channel = | 3254 cricket::WebRtcVoiceMediaChannel* media_channel = |
3265 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); | 3255 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); |
3266 EXPECT_EQ(-1, media_channel->GetReceiveChannelId(0)); | 3256 EXPECT_EQ(-1, media_channel->GetReceiveChannelId(0)); |
3267 EXPECT_TRUE(channel_->AddRecvStream( | 3257 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
3268 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
3269 int channel_id = voe_.GetLastChannel(); | 3258 int channel_id = voe_.GetLastChannel(); |
3270 EXPECT_EQ(channel_id, media_channel->GetReceiveChannelId(kSsrc1)); | 3259 EXPECT_EQ(channel_id, media_channel->GetReceiveChannelId(kSsrc1)); |
3271 EXPECT_EQ(-1, media_channel->GetReceiveChannelId(kSsrc2)); | 3260 EXPECT_EQ(-1, media_channel->GetReceiveChannelId(kSsrc2)); |
3272 EXPECT_TRUE(channel_->AddRecvStream( | 3261 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
3273 cricket::StreamParams::CreateLegacy(kSsrc2))); | |
3274 int channel_id2 = voe_.GetLastChannel(); | 3262 int channel_id2 = voe_.GetLastChannel(); |
3275 EXPECT_EQ(channel_id2, media_channel->GetReceiveChannelId(kSsrc2)); | 3263 EXPECT_EQ(channel_id2, media_channel->GetReceiveChannelId(kSsrc2)); |
3276 } | 3264 } |
3277 | 3265 |
3278 TEST_F(WebRtcVoiceEngineTestFake, TestGetSendChannelId) { | 3266 TEST_F(WebRtcVoiceEngineTestFake, TestGetSendChannelId) { |
3279 EXPECT_TRUE(SetupChannel()); | 3267 EXPECT_TRUE(SetupChannel()); |
3280 cricket::WebRtcVoiceMediaChannel* media_channel = | 3268 cricket::WebRtcVoiceMediaChannel* media_channel = |
3281 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); | 3269 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); |
3282 EXPECT_EQ(-1, media_channel->GetSendChannelId(0)); | 3270 EXPECT_EQ(-1, media_channel->GetSendChannelId(0)); |
3283 EXPECT_TRUE(channel_->AddSendStream( | 3271 EXPECT_TRUE(channel_->AddSendStream( |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3421 channel_->OnRtcpReceived(&kRtcpPacket, rtc::PacketTime()); | 3409 channel_->OnRtcpReceived(&kRtcpPacket, rtc::PacketTime()); |
3422 EXPECT_EQ(2, s->received_packets()); | 3410 EXPECT_EQ(2, s->received_packets()); |
3423 } | 3411 } |
3424 | 3412 |
3425 // All receive channels should be associated with the first send channel, | 3413 // All receive channels should be associated with the first send channel, |
3426 // since they do not send RTCP SR. | 3414 // since they do not send RTCP SR. |
3427 TEST_F(WebRtcVoiceEngineTestFake, AssociateFirstSendChannel) { | 3415 TEST_F(WebRtcVoiceEngineTestFake, AssociateFirstSendChannel) { |
3428 EXPECT_TRUE(SetupSendStream()); | 3416 EXPECT_TRUE(SetupSendStream()); |
3429 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 3417 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
3430 int default_channel = voe_.GetLastChannel(); | 3418 int default_channel = voe_.GetLastChannel(); |
3431 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 3419 EXPECT_TRUE(AddRecvStream(1)); |
3432 int recv_ch = voe_.GetLastChannel(); | 3420 int recv_ch = voe_.GetLastChannel(); |
3433 EXPECT_NE(recv_ch, default_channel); | 3421 EXPECT_NE(recv_ch, default_channel); |
3434 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), default_channel); | 3422 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), default_channel); |
3435 EXPECT_TRUE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(2))); | 3423 EXPECT_TRUE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(2))); |
3436 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), default_channel); | 3424 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), default_channel); |
3437 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); | 3425 EXPECT_TRUE(AddRecvStream(3)); |
3438 recv_ch = voe_.GetLastChannel(); | 3426 recv_ch = voe_.GetLastChannel(); |
3439 EXPECT_NE(recv_ch, default_channel); | 3427 EXPECT_NE(recv_ch, default_channel); |
3440 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), default_channel); | 3428 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), default_channel); |
3441 } | 3429 } |
3442 | 3430 |
3443 TEST_F(WebRtcVoiceEngineTestFake, AssociateChannelResetUponDeleteChannnel) { | 3431 TEST_F(WebRtcVoiceEngineTestFake, AssociateChannelResetUponDeleteChannnel) { |
3444 EXPECT_TRUE(SetupSendStream()); | 3432 EXPECT_TRUE(SetupSendStream()); |
3445 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 3433 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
3446 | 3434 |
3447 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 3435 EXPECT_TRUE(AddRecvStream(1)); |
3448 int recv_ch = voe_.GetLastChannel(); | 3436 int recv_ch = voe_.GetLastChannel(); |
3449 | 3437 |
3450 EXPECT_TRUE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(2))); | 3438 EXPECT_TRUE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(2))); |
3451 int send_ch = voe_.GetLastChannel(); | 3439 int send_ch = voe_.GetLastChannel(); |
3452 | 3440 |
3453 // Manually associate |recv_ch| to |send_ch|. This test is to verify a | 3441 // Manually associate |recv_ch| to |send_ch|. This test is to verify a |
3454 // deleting logic, i.e., deleting |send_ch| will reset the associate send | 3442 // deleting logic, i.e., deleting |send_ch| will reset the associate send |
3455 // channel of |recv_ch|.This is not a common case, since, normally, only the | 3443 // channel of |recv_ch|.This is not a common case, since, normally, only the |
3456 // default channel can be associated. However, the default is not deletable. | 3444 // default channel can be associated. However, the default is not deletable. |
3457 // So we force the |recv_ch| to associate with a non-default channel. | 3445 // So we force the |recv_ch| to associate with a non-default channel. |
3458 EXPECT_EQ(0, voe_.AssociateSendChannel(recv_ch, send_ch)); | 3446 EXPECT_EQ(0, voe_.AssociateSendChannel(recv_ch, send_ch)); |
3459 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), send_ch); | 3447 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), send_ch); |
3460 | 3448 |
3461 EXPECT_TRUE(channel_->RemoveSendStream(2)); | 3449 EXPECT_TRUE(channel_->RemoveSendStream(2)); |
3462 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), -1); | 3450 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), -1); |
3463 } | 3451 } |
3464 | 3452 |
3465 TEST_F(WebRtcVoiceEngineTestFake, SetRawAudioSink) { | 3453 TEST_F(WebRtcVoiceEngineTestFake, SetRawAudioSink) { |
3466 EXPECT_TRUE(SetupChannel()); | 3454 EXPECT_TRUE(SetupChannel()); |
3467 std::unique_ptr<FakeAudioSink> fake_sink_1(new FakeAudioSink()); | 3455 std::unique_ptr<FakeAudioSink> fake_sink_1(new FakeAudioSink()); |
3468 std::unique_ptr<FakeAudioSink> fake_sink_2(new FakeAudioSink()); | 3456 std::unique_ptr<FakeAudioSink> fake_sink_2(new FakeAudioSink()); |
3469 | 3457 |
3470 // Setting the sink before a recv stream exists should do nothing. | 3458 // Setting the sink before a recv stream exists should do nothing. |
3471 channel_->SetRawAudioSink(kSsrc1, std::move(fake_sink_1)); | 3459 channel_->SetRawAudioSink(kSsrc1, std::move(fake_sink_1)); |
3472 EXPECT_TRUE( | 3460 EXPECT_TRUE( |
3473 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc1))); | 3461 AddRecvStream(kSsrc1)); |
3474 EXPECT_EQ(nullptr, GetRecvStream(kSsrc1).sink()); | 3462 EXPECT_EQ(nullptr, GetRecvStream(kSsrc1).sink()); |
3475 | 3463 |
3476 // Now try actually setting the sink. | 3464 // Now try actually setting the sink. |
3477 channel_->SetRawAudioSink(kSsrc1, std::move(fake_sink_2)); | 3465 channel_->SetRawAudioSink(kSsrc1, std::move(fake_sink_2)); |
3478 EXPECT_NE(nullptr, GetRecvStream(kSsrc1).sink()); | 3466 EXPECT_NE(nullptr, GetRecvStream(kSsrc1).sink()); |
3479 | 3467 |
3480 // Now try resetting it. | 3468 // Now try resetting it. |
3481 channel_->SetRawAudioSink(kSsrc1, nullptr); | 3469 channel_->SetRawAudioSink(kSsrc1, nullptr); |
3482 EXPECT_EQ(nullptr, GetRecvStream(kSsrc1).sink()); | 3470 EXPECT_EQ(nullptr, GetRecvStream(kSsrc1).sink()); |
3483 } | 3471 } |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3668 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { | 3656 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { |
3669 cricket::WebRtcVoiceEngine engine(nullptr); | 3657 cricket::WebRtcVoiceEngine engine(nullptr); |
3670 std::unique_ptr<webrtc::Call> call( | 3658 std::unique_ptr<webrtc::Call> call( |
3671 webrtc::Call::Create(webrtc::Call::Config())); | 3659 webrtc::Call::Create(webrtc::Call::Config())); |
3672 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), | 3660 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), |
3673 cricket::AudioOptions(), call.get()); | 3661 cricket::AudioOptions(), call.get()); |
3674 cricket::AudioRecvParameters parameters; | 3662 cricket::AudioRecvParameters parameters; |
3675 parameters.codecs = engine.codecs(); | 3663 parameters.codecs = engine.codecs(); |
3676 EXPECT_TRUE(channel.SetRecvParameters(parameters)); | 3664 EXPECT_TRUE(channel.SetRecvParameters(parameters)); |
3677 } | 3665 } |
OLD | NEW |