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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 EXPECT_CALL(adm_, AddRef()).WillOnce(Return(0)); | 100 EXPECT_CALL(adm_, AddRef()).WillOnce(Return(0)); |
101 EXPECT_CALL(adm_, Release()).WillOnce(Return(0)); | 101 EXPECT_CALL(adm_, Release()).WillOnce(Return(0)); |
102 EXPECT_CALL(adm_, BuiltInAECIsAvailable()).WillOnce(Return(false)); | 102 EXPECT_CALL(adm_, BuiltInAECIsAvailable()).WillOnce(Return(false)); |
103 EXPECT_CALL(adm_, BuiltInAGCIsAvailable()).WillOnce(Return(false)); | 103 EXPECT_CALL(adm_, BuiltInAGCIsAvailable()).WillOnce(Return(false)); |
104 EXPECT_CALL(adm_, BuiltInNSIsAvailable()).WillOnce(Return(false)); | 104 EXPECT_CALL(adm_, BuiltInNSIsAvailable()).WillOnce(Return(false)); |
105 engine_.reset(new cricket::WebRtcVoiceEngine(&adm_, nullptr, | 105 engine_.reset(new cricket::WebRtcVoiceEngine(&adm_, nullptr, |
106 new FakeVoEWrapper(&voe_))); | 106 new FakeVoEWrapper(&voe_))); |
107 send_parameters_.codecs.push_back(kPcmuCodec); | 107 send_parameters_.codecs.push_back(kPcmuCodec); |
108 recv_parameters_.codecs.push_back(kPcmuCodec); | 108 recv_parameters_.codecs.push_back(kPcmuCodec); |
109 } | 109 } |
| 110 |
110 bool SetupChannel() { | 111 bool SetupChannel() { |
111 channel_ = engine_->CreateChannel(&call_, cricket::MediaConfig(), | 112 channel_ = engine_->CreateChannel(&call_, cricket::MediaConfig(), |
112 cricket::AudioOptions()); | 113 cricket::AudioOptions()); |
113 return (channel_ != nullptr); | 114 return (channel_ != nullptr); |
114 } | 115 } |
| 116 |
115 bool SetupRecvStream() { | 117 bool SetupRecvStream() { |
116 if (!SetupChannel()) { | 118 if (!SetupChannel()) { |
117 return false; | 119 return false; |
118 } | 120 } |
119 return channel_->AddRecvStream( | 121 return AddRecvStream(kSsrc1); |
120 cricket::StreamParams::CreateLegacy(kSsrc1)); | |
121 } | 122 } |
| 123 |
122 bool SetupSendStream() { | 124 bool SetupSendStream() { |
123 if (!SetupChannel()) { | 125 if (!SetupChannel()) { |
124 return false; | 126 return false; |
125 } | 127 } |
126 if (!channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc1))) { | 128 if (!channel_->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc1))) { |
127 return false; | 129 return false; |
128 } | 130 } |
129 return channel_->SetAudioSend(kSsrc1, true, nullptr, &fake_source_); | 131 return channel_->SetAudioSend(kSsrc1, true, nullptr, &fake_source_); |
130 } | 132 } |
| 133 |
| 134 bool AddRecvStream(uint32_t ssrc) { |
| 135 EXPECT_TRUE(channel_); |
| 136 return channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(ssrc)); |
| 137 } |
| 138 |
131 void SetupForMultiSendStream() { | 139 void SetupForMultiSendStream() { |
132 EXPECT_TRUE(SetupSendStream()); | 140 EXPECT_TRUE(SetupSendStream()); |
133 // Remove stream added in Setup. | 141 // Remove stream added in Setup. |
134 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); | 142 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); |
135 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc1)); | 143 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc1)); |
136 // Verify the channel does not exist. | 144 // Verify the channel does not exist. |
137 EXPECT_FALSE(call_.GetAudioSendStream(kSsrc1)); | 145 EXPECT_FALSE(call_.GetAudioSendStream(kSsrc1)); |
138 } | 146 } |
| 147 |
139 void DeliverPacket(const void* data, int len) { | 148 void DeliverPacket(const void* data, int len) { |
140 rtc::CopyOnWriteBuffer packet(reinterpret_cast<const uint8_t*>(data), len); | 149 rtc::CopyOnWriteBuffer packet(reinterpret_cast<const uint8_t*>(data), len); |
141 channel_->OnPacketReceived(&packet, rtc::PacketTime()); | 150 channel_->OnPacketReceived(&packet, rtc::PacketTime()); |
142 } | 151 } |
| 152 |
143 void TearDown() override { | 153 void TearDown() override { |
144 delete channel_; | 154 delete channel_; |
145 } | 155 } |
146 | 156 |
147 const cricket::FakeAudioSendStream& GetSendStream(uint32_t ssrc) { | 157 const cricket::FakeAudioSendStream& GetSendStream(uint32_t ssrc) { |
148 const auto* send_stream = call_.GetAudioSendStream(ssrc); | 158 const auto* send_stream = call_.GetAudioSendStream(ssrc); |
149 EXPECT_TRUE(send_stream); | 159 EXPECT_TRUE(send_stream); |
150 return *send_stream; | 160 return *send_stream; |
151 } | 161 } |
152 | 162 |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 | 354 |
345 // Ensure extension is set properly. | 355 // Ensure extension is set properly. |
346 const int id = 2; | 356 const int id = 2; |
347 recv_parameters_.extensions.push_back(webrtc::RtpExtension(ext, id)); | 357 recv_parameters_.extensions.push_back(webrtc::RtpExtension(ext, id)); |
348 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 358 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
349 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); | 359 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); |
350 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].uri); | 360 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].uri); |
351 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].id); | 361 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].id); |
352 | 362 |
353 // Ensure extension is set properly on new stream. | 363 // Ensure extension is set properly on new stream. |
354 EXPECT_TRUE(channel_->AddRecvStream( | 364 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
355 cricket::StreamParams::CreateLegacy(kSsrc2))); | |
356 EXPECT_NE(call_.GetAudioReceiveStream(kSsrc1), | 365 EXPECT_NE(call_.GetAudioReceiveStream(kSsrc1), |
357 call_.GetAudioReceiveStream(kSsrc2)); | 366 call_.GetAudioReceiveStream(kSsrc2)); |
358 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc2).rtp.extensions.size()); | 367 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc2).rtp.extensions.size()); |
359 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].uri); | 368 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].uri); |
360 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].id); | 369 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].id); |
361 | 370 |
362 // Ensure all extensions go back off with an empty list. | 371 // Ensure all extensions go back off with an empty list. |
363 recv_parameters_.extensions.clear(); | 372 recv_parameters_.extensions.clear(); |
364 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 373 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
365 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); | 374 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size()); |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 EXPECT_EQ(kSsrc1, config.rtp.ssrc); | 513 EXPECT_EQ(kSsrc1, config.rtp.ssrc); |
505 EXPECT_EQ("", config.rtp.c_name); | 514 EXPECT_EQ("", config.rtp.c_name); |
506 EXPECT_EQ(0u, config.rtp.extensions.size()); | 515 EXPECT_EQ(0u, config.rtp.extensions.size()); |
507 EXPECT_EQ(static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_), | 516 EXPECT_EQ(static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_), |
508 config.send_transport); | 517 config.send_transport); |
509 } | 518 } |
510 | 519 |
511 // Test that we can add a receive stream and that it has the correct defaults. | 520 // Test that we can add a receive stream and that it has the correct defaults. |
512 TEST_F(WebRtcVoiceEngineTestFake, CreateRecvStream) { | 521 TEST_F(WebRtcVoiceEngineTestFake, CreateRecvStream) { |
513 EXPECT_TRUE(SetupChannel()); | 522 EXPECT_TRUE(SetupChannel()); |
514 EXPECT_TRUE( | 523 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
515 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc1))); | |
516 const webrtc::AudioReceiveStream::Config& config = | 524 const webrtc::AudioReceiveStream::Config& config = |
517 GetRecvStreamConfig(kSsrc1); | 525 GetRecvStreamConfig(kSsrc1); |
518 EXPECT_EQ(kSsrc1, config.rtp.remote_ssrc); | 526 EXPECT_EQ(kSsrc1, config.rtp.remote_ssrc); |
519 EXPECT_EQ(0xFA17FA17, config.rtp.local_ssrc); | 527 EXPECT_EQ(0xFA17FA17, config.rtp.local_ssrc); |
520 EXPECT_FALSE(config.rtp.transport_cc); | 528 EXPECT_FALSE(config.rtp.transport_cc); |
521 EXPECT_EQ(0u, config.rtp.extensions.size()); | 529 EXPECT_EQ(0u, config.rtp.extensions.size()); |
522 EXPECT_EQ(static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_), | 530 EXPECT_EQ(static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_), |
523 config.rtcp_send_transport); | 531 config.rtcp_send_transport); |
524 EXPECT_EQ("", config.sync_group); | 532 EXPECT_EQ("", config.sync_group); |
525 } | 533 } |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
589 // Test that we set our inbound codecs properly, including changing PT. | 597 // Test that we set our inbound codecs properly, including changing PT. |
590 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecs) { | 598 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecs) { |
591 EXPECT_TRUE(SetupChannel()); | 599 EXPECT_TRUE(SetupChannel()); |
592 cricket::AudioRecvParameters parameters; | 600 cricket::AudioRecvParameters parameters; |
593 parameters.codecs.push_back(kIsacCodec); | 601 parameters.codecs.push_back(kIsacCodec); |
594 parameters.codecs.push_back(kPcmuCodec); | 602 parameters.codecs.push_back(kPcmuCodec); |
595 parameters.codecs.push_back(kTelephoneEventCodec); | 603 parameters.codecs.push_back(kTelephoneEventCodec); |
596 parameters.codecs[0].id = 106; // collide with existing telephone-event | 604 parameters.codecs[0].id = 106; // collide with existing telephone-event |
597 parameters.codecs[2].id = 126; | 605 parameters.codecs[2].id = 126; |
598 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 606 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
599 EXPECT_TRUE(channel_->AddRecvStream( | 607 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
600 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
601 int channel_num = voe_.GetLastChannel(); | 608 int channel_num = voe_.GetLastChannel(); |
602 webrtc::CodecInst gcodec; | 609 webrtc::CodecInst gcodec; |
603 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "ISAC"); | 610 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "ISAC"); |
604 gcodec.plfreq = 16000; | 611 gcodec.plfreq = 16000; |
605 gcodec.channels = 1; | 612 gcodec.channels = 1; |
606 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num, gcodec)); | 613 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num, gcodec)); |
607 EXPECT_EQ(106, gcodec.pltype); | 614 EXPECT_EQ(106, gcodec.pltype); |
608 EXPECT_STREQ("ISAC", gcodec.plname); | 615 EXPECT_STREQ("ISAC", gcodec.plname); |
609 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "telephone-event"); | 616 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "telephone-event"); |
610 gcodec.plfreq = 8000; | 617 gcodec.plfreq = 8000; |
(...skipping 22 matching lines...) Expand all Loading... |
633 } | 640 } |
634 | 641 |
635 // Test that we can decode OPUS without stereo parameters. | 642 // Test that we can decode OPUS without stereo parameters. |
636 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithOpusNoStereo) { | 643 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithOpusNoStereo) { |
637 EXPECT_TRUE(SetupChannel()); | 644 EXPECT_TRUE(SetupChannel()); |
638 cricket::AudioRecvParameters parameters; | 645 cricket::AudioRecvParameters parameters; |
639 parameters.codecs.push_back(kIsacCodec); | 646 parameters.codecs.push_back(kIsacCodec); |
640 parameters.codecs.push_back(kPcmuCodec); | 647 parameters.codecs.push_back(kPcmuCodec); |
641 parameters.codecs.push_back(kOpusCodec); | 648 parameters.codecs.push_back(kOpusCodec); |
642 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 649 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
643 EXPECT_TRUE(channel_->AddRecvStream( | 650 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
644 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
645 int channel_num = voe_.GetLastChannel(); | 651 int channel_num = voe_.GetLastChannel(); |
646 webrtc::CodecInst opus; | 652 webrtc::CodecInst opus; |
647 cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus); | 653 cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus); |
648 // Even without stereo parameters, recv codecs still specify channels = 2. | 654 // Even without stereo parameters, recv codecs still specify channels = 2. |
649 EXPECT_EQ(2, opus.channels); | 655 EXPECT_EQ(2, opus.channels); |
650 EXPECT_EQ(111, opus.pltype); | 656 EXPECT_EQ(111, opus.pltype); |
651 EXPECT_STREQ("opus", opus.plname); | 657 EXPECT_STREQ("opus", opus.plname); |
652 opus.pltype = 0; | 658 opus.pltype = 0; |
653 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num, opus)); | 659 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num, opus)); |
654 EXPECT_EQ(111, opus.pltype); | 660 EXPECT_EQ(111, opus.pltype); |
655 } | 661 } |
656 | 662 |
657 // Test that we can decode OPUS with stereo = 0. | 663 // Test that we can decode OPUS with stereo = 0. |
658 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithOpus0Stereo) { | 664 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithOpus0Stereo) { |
659 EXPECT_TRUE(SetupChannel()); | 665 EXPECT_TRUE(SetupChannel()); |
660 cricket::AudioRecvParameters parameters; | 666 cricket::AudioRecvParameters parameters; |
661 parameters.codecs.push_back(kIsacCodec); | 667 parameters.codecs.push_back(kIsacCodec); |
662 parameters.codecs.push_back(kPcmuCodec); | 668 parameters.codecs.push_back(kPcmuCodec); |
663 parameters.codecs.push_back(kOpusCodec); | 669 parameters.codecs.push_back(kOpusCodec); |
664 parameters.codecs[2].params["stereo"] = "0"; | 670 parameters.codecs[2].params["stereo"] = "0"; |
665 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 671 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
666 EXPECT_TRUE(channel_->AddRecvStream( | 672 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
667 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
668 int channel_num2 = voe_.GetLastChannel(); | 673 int channel_num2 = voe_.GetLastChannel(); |
669 webrtc::CodecInst opus; | 674 webrtc::CodecInst opus; |
670 cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus); | 675 cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus); |
671 // Even when stereo is off, recv codecs still specify channels = 2. | 676 // Even when stereo is off, recv codecs still specify channels = 2. |
672 EXPECT_EQ(2, opus.channels); | 677 EXPECT_EQ(2, opus.channels); |
673 EXPECT_EQ(111, opus.pltype); | 678 EXPECT_EQ(111, opus.pltype); |
674 EXPECT_STREQ("opus", opus.plname); | 679 EXPECT_STREQ("opus", opus.plname); |
675 opus.pltype = 0; | 680 opus.pltype = 0; |
676 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, opus)); | 681 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, opus)); |
677 EXPECT_EQ(111, opus.pltype); | 682 EXPECT_EQ(111, opus.pltype); |
678 } | 683 } |
679 | 684 |
680 // Test that we can decode OPUS with stereo = 1. | 685 // Test that we can decode OPUS with stereo = 1. |
681 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithOpus1Stereo) { | 686 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithOpus1Stereo) { |
682 EXPECT_TRUE(SetupChannel()); | 687 EXPECT_TRUE(SetupChannel()); |
683 cricket::AudioRecvParameters parameters; | 688 cricket::AudioRecvParameters parameters; |
684 parameters.codecs.push_back(kIsacCodec); | 689 parameters.codecs.push_back(kIsacCodec); |
685 parameters.codecs.push_back(kPcmuCodec); | 690 parameters.codecs.push_back(kPcmuCodec); |
686 parameters.codecs.push_back(kOpusCodec); | 691 parameters.codecs.push_back(kOpusCodec); |
687 parameters.codecs[2].params["stereo"] = "1"; | 692 parameters.codecs[2].params["stereo"] = "1"; |
688 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 693 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
689 EXPECT_TRUE(channel_->AddRecvStream( | 694 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
690 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
691 int channel_num2 = voe_.GetLastChannel(); | 695 int channel_num2 = voe_.GetLastChannel(); |
692 webrtc::CodecInst opus; | 696 webrtc::CodecInst opus; |
693 cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus); | 697 cricket::WebRtcVoiceEngine::ToCodecInst(kOpusCodec, &opus); |
694 EXPECT_EQ(2, opus.channels); | 698 EXPECT_EQ(2, opus.channels); |
695 EXPECT_EQ(111, opus.pltype); | 699 EXPECT_EQ(111, opus.pltype); |
696 EXPECT_STREQ("opus", opus.plname); | 700 EXPECT_STREQ("opus", opus.plname); |
697 opus.pltype = 0; | 701 opus.pltype = 0; |
698 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, opus)); | 702 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, opus)); |
699 EXPECT_EQ(111, opus.pltype); | 703 EXPECT_EQ(111, opus.pltype); |
700 } | 704 } |
701 | 705 |
702 // Test that changes to recv codecs are applied to all streams. | 706 // Test that changes to recv codecs are applied to all streams. |
703 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithMultipleStreams) { | 707 TEST_F(WebRtcVoiceEngineTestFake, SetRecvCodecsWithMultipleStreams) { |
704 EXPECT_TRUE(SetupChannel()); | 708 EXPECT_TRUE(SetupChannel()); |
705 cricket::AudioRecvParameters parameters; | 709 cricket::AudioRecvParameters parameters; |
706 parameters.codecs.push_back(kIsacCodec); | 710 parameters.codecs.push_back(kIsacCodec); |
707 parameters.codecs.push_back(kPcmuCodec); | 711 parameters.codecs.push_back(kPcmuCodec); |
708 parameters.codecs.push_back(kTelephoneEventCodec); | 712 parameters.codecs.push_back(kTelephoneEventCodec); |
709 parameters.codecs[0].id = 106; // collide with existing telephone-event | 713 parameters.codecs[0].id = 106; // collide with existing telephone-event |
710 parameters.codecs[2].id = 126; | 714 parameters.codecs[2].id = 126; |
711 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 715 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
712 EXPECT_TRUE(channel_->AddRecvStream( | 716 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
713 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
714 int channel_num2 = voe_.GetLastChannel(); | 717 int channel_num2 = voe_.GetLastChannel(); |
715 webrtc::CodecInst gcodec; | 718 webrtc::CodecInst gcodec; |
716 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "ISAC"); | 719 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "ISAC"); |
717 gcodec.plfreq = 16000; | 720 gcodec.plfreq = 16000; |
718 gcodec.channels = 1; | 721 gcodec.channels = 1; |
719 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, gcodec)); | 722 EXPECT_EQ(0, voe_.GetRecPayloadType(channel_num2, gcodec)); |
720 EXPECT_EQ(106, gcodec.pltype); | 723 EXPECT_EQ(106, gcodec.pltype); |
721 EXPECT_STREQ("ISAC", gcodec.plname); | 724 EXPECT_STREQ("ISAC", gcodec.plname); |
722 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "telephone-event"); | 725 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "telephone-event"); |
723 gcodec.plfreq = 8000; | 726 gcodec.plfreq = 8000; |
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1366 cricket::FeedbackParam(cricket::kRtcpFbParamNack, | 1369 cricket::FeedbackParam(cricket::kRtcpFbParamNack, |
1367 cricket::kParamValueEmpty)); | 1370 cricket::kParamValueEmpty)); |
1368 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1371 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1369 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1372 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1370 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1373 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1371 } | 1374 } |
1372 | 1375 |
1373 // Test that we can enable NACK with opus as callee. | 1376 // Test that we can enable NACK with opus as callee. |
1374 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackAsCallee) { | 1377 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackAsCallee) { |
1375 EXPECT_TRUE(SetupRecvStream()); | 1378 EXPECT_TRUE(SetupRecvStream()); |
1376 int channel_num = voe_.GetLastChannel(); | |
1377 cricket::AudioSendParameters parameters; | 1379 cricket::AudioSendParameters parameters; |
1378 parameters.codecs.push_back(kOpusCodec); | 1380 parameters.codecs.push_back(kOpusCodec); |
1379 parameters.codecs[0].AddFeedbackParam( | 1381 parameters.codecs[0].AddFeedbackParam( |
1380 cricket::FeedbackParam(cricket::kRtcpFbParamNack, | 1382 cricket::FeedbackParam(cricket::kRtcpFbParamNack, |
1381 cricket::kParamValueEmpty)); | 1383 cricket::kParamValueEmpty)); |
1382 EXPECT_FALSE(voe_.GetNACK(channel_num)); | 1384 EXPECT_EQ(0, GetRecvStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1383 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1385 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1384 // NACK should be enabled even with no send stream. | 1386 // NACK should be enabled even with no send stream. |
1385 EXPECT_TRUE(voe_.GetNACK(channel_num)); | 1387 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1386 | 1388 |
1387 EXPECT_TRUE(channel_->AddSendStream( | 1389 EXPECT_TRUE(channel_->AddSendStream( |
1388 cricket::StreamParams::CreateLegacy(kSsrc1))); | 1390 cricket::StreamParams::CreateLegacy(kSsrc1))); |
1389 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1391 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1390 } | 1392 } |
1391 | 1393 |
1392 // Test that we can enable NACK on receive streams. | 1394 // Test that we can enable NACK on receive streams. |
1393 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackRecvStreams) { | 1395 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecEnableNackRecvStreams) { |
1394 EXPECT_TRUE(SetupSendStream()); | 1396 EXPECT_TRUE(SetupSendStream()); |
1395 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 1397 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
1396 int channel_num2 = voe_.GetLastChannel(); | |
1397 cricket::AudioSendParameters parameters; | 1398 cricket::AudioSendParameters parameters; |
1398 parameters.codecs.push_back(kOpusCodec); | 1399 parameters.codecs.push_back(kOpusCodec); |
1399 parameters.codecs[0].AddFeedbackParam( | 1400 parameters.codecs[0].AddFeedbackParam( |
1400 cricket::FeedbackParam(cricket::kRtcpFbParamNack, | 1401 cricket::FeedbackParam(cricket::kRtcpFbParamNack, |
1401 cricket::kParamValueEmpty)); | 1402 cricket::kParamValueEmpty)); |
1402 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1403 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1403 EXPECT_FALSE(voe_.GetNACK(channel_num2)); | 1404 EXPECT_EQ(0, GetRecvStreamConfig(kSsrc2).rtp.nack.rtp_history_ms); |
1404 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1405 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1405 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1406 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1406 EXPECT_TRUE(voe_.GetNACK(channel_num2)); | 1407 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrc2).rtp.nack.rtp_history_ms); |
1407 } | 1408 } |
1408 | 1409 |
1409 // Test that we can disable NACK. | 1410 // Test that we can disable NACK. |
1410 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNack) { | 1411 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNack) { |
1411 EXPECT_TRUE(SetupSendStream()); | 1412 EXPECT_TRUE(SetupSendStream()); |
1412 cricket::AudioSendParameters parameters; | 1413 cricket::AudioSendParameters parameters; |
1413 parameters.codecs.push_back(kOpusCodec); | 1414 parameters.codecs.push_back(kOpusCodec); |
1414 parameters.codecs[0].AddFeedbackParam( | 1415 parameters.codecs[0].AddFeedbackParam( |
1415 cricket::FeedbackParam(cricket::kRtcpFbParamNack, | 1416 cricket::FeedbackParam(cricket::kRtcpFbParamNack, |
1416 cricket::kParamValueEmpty)); | 1417 cricket::kParamValueEmpty)); |
1417 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1418 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1418 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1419 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1419 | 1420 |
1420 parameters.codecs.clear(); | 1421 parameters.codecs.clear(); |
1421 parameters.codecs.push_back(kOpusCodec); | 1422 parameters.codecs.push_back(kOpusCodec); |
1422 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1423 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1423 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1424 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1424 } | 1425 } |
1425 | 1426 |
1426 // Test that we can disable NACK on receive streams. | 1427 // Test that we can disable NACK on receive streams. |
1427 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNackRecvStreams) { | 1428 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecDisableNackRecvStreams) { |
1428 EXPECT_TRUE(SetupSendStream()); | 1429 EXPECT_TRUE(SetupSendStream()); |
1429 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 1430 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
1430 int channel_num2 = voe_.GetLastChannel(); | |
1431 cricket::AudioSendParameters parameters; | 1431 cricket::AudioSendParameters parameters; |
1432 parameters.codecs.push_back(kOpusCodec); | 1432 parameters.codecs.push_back(kOpusCodec); |
1433 parameters.codecs[0].AddFeedbackParam( | 1433 parameters.codecs[0].AddFeedbackParam( |
1434 cricket::FeedbackParam(cricket::kRtcpFbParamNack, | 1434 cricket::FeedbackParam(cricket::kRtcpFbParamNack, |
1435 cricket::kParamValueEmpty)); | 1435 cricket::kParamValueEmpty)); |
1436 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1436 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1437 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1437 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1438 EXPECT_TRUE(voe_.GetNACK(channel_num2)); | 1438 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrc2).rtp.nack.rtp_history_ms); |
1439 | 1439 |
1440 parameters.codecs.clear(); | 1440 parameters.codecs.clear(); |
1441 parameters.codecs.push_back(kOpusCodec); | 1441 parameters.codecs.push_back(kOpusCodec); |
1442 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1442 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1443 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1443 EXPECT_EQ(0, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1444 EXPECT_FALSE(voe_.GetNACK(channel_num2)); | 1444 EXPECT_EQ(0, GetRecvStreamConfig(kSsrc2).rtp.nack.rtp_history_ms); |
1445 } | 1445 } |
1446 | 1446 |
1447 // Test that NACK is enabled on a new receive stream. | 1447 // Test that NACK is enabled on a new receive stream. |
1448 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamEnableNack) { | 1448 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamEnableNack) { |
1449 EXPECT_TRUE(SetupSendStream()); | 1449 EXPECT_TRUE(SetupSendStream()); |
1450 cricket::AudioSendParameters parameters; | 1450 cricket::AudioSendParameters parameters; |
1451 parameters.codecs.push_back(kIsacCodec); | 1451 parameters.codecs.push_back(kIsacCodec); |
1452 parameters.codecs.push_back(kCn16000Codec); | 1452 parameters.codecs.push_back(kCn16000Codec); |
1453 parameters.codecs[0].AddFeedbackParam( | 1453 parameters.codecs[0].AddFeedbackParam( |
1454 cricket::FeedbackParam(cricket::kRtcpFbParamNack, | 1454 cricket::FeedbackParam(cricket::kRtcpFbParamNack, |
1455 cricket::kParamValueEmpty)); | 1455 cricket::kParamValueEmpty)); |
1456 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1456 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1457 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); | 1457 EXPECT_EQ(kRtpHistoryMs, GetSendStreamConfig(kSsrc1).rtp.nack.rtp_history_ms); |
1458 | 1458 |
1459 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 1459 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
1460 int channel_num = voe_.GetLastChannel(); | 1460 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrc2).rtp.nack.rtp_history_ms); |
1461 EXPECT_TRUE(voe_.GetNACK(channel_num)); | 1461 EXPECT_TRUE(AddRecvStream(kSsrc3)); |
1462 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); | 1462 EXPECT_EQ(kRtpHistoryMs, GetRecvStreamConfig(kSsrc3).rtp.nack.rtp_history_ms); |
1463 channel_num = voe_.GetLastChannel(); | |
1464 EXPECT_TRUE(voe_.GetNACK(channel_num)); | |
1465 } | 1463 } |
1466 | 1464 |
1467 // Test that without useinbandfec, Opus FEC is off. | 1465 // Test that without useinbandfec, Opus FEC is off. |
1468 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecNoOpusFec) { | 1466 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecNoOpusFec) { |
1469 EXPECT_TRUE(SetupSendStream()); | 1467 EXPECT_TRUE(SetupSendStream()); |
1470 int channel_num = voe_.GetLastChannel(); | 1468 int channel_num = voe_.GetLastChannel(); |
1471 cricket::AudioSendParameters parameters; | 1469 cricket::AudioSendParameters parameters; |
1472 parameters.codecs.push_back(kOpusCodec); | 1470 parameters.codecs.push_back(kOpusCodec); |
1473 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1471 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1474 EXPECT_FALSE(voe_.GetCodecFEC(channel_num)); | 1472 EXPECT_FALSE(voe_.GetCodecFEC(channel_num)); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1563 TEST_F(WebRtcVoiceEngineTestFake, TransportCcCanBeEnabledAndDisabled) { | 1561 TEST_F(WebRtcVoiceEngineTestFake, TransportCcCanBeEnabledAndDisabled) { |
1564 EXPECT_TRUE(SetupChannel()); | 1562 EXPECT_TRUE(SetupChannel()); |
1565 cricket::AudioSendParameters send_parameters; | 1563 cricket::AudioSendParameters send_parameters; |
1566 send_parameters.codecs.push_back(kOpusCodec); | 1564 send_parameters.codecs.push_back(kOpusCodec); |
1567 EXPECT_TRUE(send_parameters.codecs[0].feedback_params.params().empty()); | 1565 EXPECT_TRUE(send_parameters.codecs[0].feedback_params.params().empty()); |
1568 EXPECT_TRUE(channel_->SetSendParameters(send_parameters)); | 1566 EXPECT_TRUE(channel_->SetSendParameters(send_parameters)); |
1569 | 1567 |
1570 cricket::AudioRecvParameters recv_parameters; | 1568 cricket::AudioRecvParameters recv_parameters; |
1571 recv_parameters.codecs.push_back(kIsacCodec); | 1569 recv_parameters.codecs.push_back(kIsacCodec); |
1572 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters)); | 1570 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters)); |
1573 EXPECT_TRUE( | 1571 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
1574 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc1))); | |
1575 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrc1) != nullptr); | 1572 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrc1) != nullptr); |
1576 EXPECT_FALSE( | 1573 EXPECT_FALSE( |
1577 call_.GetAudioReceiveStream(kSsrc1)->GetConfig().rtp.transport_cc); | 1574 call_.GetAudioReceiveStream(kSsrc1)->GetConfig().rtp.transport_cc); |
1578 | 1575 |
1579 send_parameters.codecs = engine_->send_codecs(); | 1576 send_parameters.codecs = engine_->send_codecs(); |
1580 EXPECT_TRUE(channel_->SetSendParameters(send_parameters)); | 1577 EXPECT_TRUE(channel_->SetSendParameters(send_parameters)); |
1581 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrc1) != nullptr); | 1578 ASSERT_TRUE(call_.GetAudioReceiveStream(kSsrc1) != nullptr); |
1582 EXPECT_TRUE( | 1579 EXPECT_TRUE( |
1583 call_.GetAudioReceiveStream(kSsrc1)->GetConfig().rtp.transport_cc); | 1580 call_.GetAudioReceiveStream(kSsrc1)->GetConfig().rtp.transport_cc); |
1584 } | 1581 } |
(...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2269 SetupForMultiSendStream(); | 2266 SetupForMultiSendStream(); |
2270 | 2267 |
2271 // Create send streams. | 2268 // Create send streams. |
2272 for (uint32_t ssrc : kSsrcs4) { | 2269 for (uint32_t ssrc : kSsrcs4) { |
2273 EXPECT_TRUE(channel_->AddSendStream( | 2270 EXPECT_TRUE(channel_->AddSendStream( |
2274 cricket::StreamParams::CreateLegacy(ssrc))); | 2271 cricket::StreamParams::CreateLegacy(ssrc))); |
2275 } | 2272 } |
2276 | 2273 |
2277 // Create a receive stream to check that none of the send streams end up in | 2274 // Create a receive stream to check that none of the send streams end up in |
2278 // the receive stream stats. | 2275 // the receive stream stats. |
2279 EXPECT_TRUE(channel_->AddRecvStream( | 2276 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
2280 cricket::StreamParams::CreateLegacy(kSsrc2))); | |
2281 | 2277 |
2282 // We need send codec to be set to get all stats. | 2278 // We need send codec to be set to get all stats. |
2283 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2279 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2284 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 2280 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
2285 SetAudioSendStreamStats(); | 2281 SetAudioSendStreamStats(); |
2286 | 2282 |
2287 // Check stats for the added streams. | 2283 // Check stats for the added streams. |
2288 { | 2284 { |
2289 cricket::VoiceMediaInfo info; | 2285 cricket::VoiceMediaInfo info; |
2290 EXPECT_EQ(true, channel_->GetStats(&info)); | 2286 EXPECT_EQ(true, channel_->GetStats(&info)); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2327 TEST_F(WebRtcVoiceEngineTestFake, PlayoutWithMultipleStreams) { | 2323 TEST_F(WebRtcVoiceEngineTestFake, PlayoutWithMultipleStreams) { |
2328 EXPECT_TRUE(SetupSendStream()); | 2324 EXPECT_TRUE(SetupSendStream()); |
2329 int channel_num1 = voe_.GetLastChannel(); | 2325 int channel_num1 = voe_.GetLastChannel(); |
2330 | 2326 |
2331 // Start playout without a receive stream. | 2327 // Start playout without a receive stream. |
2332 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2328 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2333 EXPECT_TRUE(channel_->SetPlayout(true)); | 2329 EXPECT_TRUE(channel_->SetPlayout(true)); |
2334 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); | 2330 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); |
2335 | 2331 |
2336 // Adding another stream should enable playout on the new stream only. | 2332 // Adding another stream should enable playout on the new stream only. |
2337 EXPECT_TRUE( | 2333 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
2338 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc2))); | |
2339 int channel_num2 = voe_.GetLastChannel(); | 2334 int channel_num2 = voe_.GetLastChannel(); |
2340 SetSend(channel_, true); | 2335 SetSend(channel_, true); |
2341 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); | 2336 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); |
2342 | 2337 |
2343 // Make sure only the new stream is played out. | 2338 // Make sure only the new stream is played out. |
2344 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); | 2339 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); |
2345 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); | 2340 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); |
2346 | 2341 |
2347 // Adding yet another stream should have stream 2 and 3 enabled for playout. | 2342 // Adding yet another stream should have stream 2 and 3 enabled for playout. |
2348 EXPECT_TRUE( | 2343 EXPECT_TRUE(AddRecvStream(kSsrc3)); |
2349 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc3))); | |
2350 int channel_num3 = voe_.GetLastChannel(); | 2344 int channel_num3 = voe_.GetLastChannel(); |
2351 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); | 2345 EXPECT_FALSE(voe_.GetPlayout(channel_num1)); |
2352 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); | 2346 EXPECT_TRUE(voe_.GetPlayout(channel_num2)); |
2353 EXPECT_TRUE(voe_.GetPlayout(channel_num3)); | 2347 EXPECT_TRUE(voe_.GetPlayout(channel_num3)); |
2354 | 2348 |
2355 // Stop sending. | 2349 // Stop sending. |
2356 SetSend(channel_, false); | 2350 SetSend(channel_, false); |
2357 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); | 2351 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); |
2358 | 2352 |
2359 // Stop playout. | 2353 // Stop playout. |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2435 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrc) { | 2429 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrc) { |
2436 EXPECT_TRUE(SetupSendStream()); | 2430 EXPECT_TRUE(SetupSendStream()); |
2437 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); | 2431 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); |
2438 } | 2432 } |
2439 | 2433 |
2440 TEST_F(WebRtcVoiceEngineTestFake, GetStats) { | 2434 TEST_F(WebRtcVoiceEngineTestFake, GetStats) { |
2441 // Setup. We need send codec to be set to get all stats. | 2435 // Setup. We need send codec to be set to get all stats. |
2442 EXPECT_TRUE(SetupSendStream()); | 2436 EXPECT_TRUE(SetupSendStream()); |
2443 // SetupSendStream adds a send stream with kSsrc1, so the receive | 2437 // SetupSendStream adds a send stream with kSsrc1, so the receive |
2444 // stream has to use a different SSRC. | 2438 // stream has to use a different SSRC. |
2445 EXPECT_TRUE(channel_->AddRecvStream( | 2439 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
2446 cricket::StreamParams::CreateLegacy(kSsrc2))); | |
2447 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2440 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2448 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 2441 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
2449 SetAudioSendStreamStats(); | 2442 SetAudioSendStreamStats(); |
2450 | 2443 |
2451 // Check stats for the added streams. | 2444 // Check stats for the added streams. |
2452 { | 2445 { |
2453 cricket::VoiceMediaInfo info; | 2446 cricket::VoiceMediaInfo info; |
2454 EXPECT_EQ(true, channel_->GetStats(&info)); | 2447 EXPECT_EQ(true, channel_->GetStats(&info)); |
2455 | 2448 |
2456 // We have added one send stream. We should see the stats we've set. | 2449 // 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... |
2489 EXPECT_EQ(1u, info.receivers.size()); | 2482 EXPECT_EQ(1u, info.receivers.size()); |
2490 VerifyVoiceReceiverInfo(info.receivers[0]); | 2483 VerifyVoiceReceiverInfo(info.receivers[0]); |
2491 } | 2484 } |
2492 } | 2485 } |
2493 | 2486 |
2494 // Test that we can set the outgoing SSRC properly with multiple streams. | 2487 // Test that we can set the outgoing SSRC properly with multiple streams. |
2495 // SSRC is set in SetupSendStream() by calling AddSendStream. | 2488 // SSRC is set in SetupSendStream() by calling AddSendStream. |
2496 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcWithMultipleStreams) { | 2489 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcWithMultipleStreams) { |
2497 EXPECT_TRUE(SetupSendStream()); | 2490 EXPECT_TRUE(SetupSendStream()); |
2498 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); | 2491 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); |
2499 EXPECT_TRUE(channel_->AddRecvStream( | 2492 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
2500 cricket::StreamParams::CreateLegacy(kSsrc2))); | |
2501 EXPECT_EQ(kSsrc1, GetRecvStreamConfig(kSsrc2).rtp.local_ssrc); | 2493 EXPECT_EQ(kSsrc1, GetRecvStreamConfig(kSsrc2).rtp.local_ssrc); |
2502 } | 2494 } |
2503 | 2495 |
2504 // Test that the local SSRC is the same on sending and receiving channels if the | 2496 // Test that the local SSRC is the same on sending and receiving channels if the |
2505 // receive channel is created before the send channel. | 2497 // receive channel is created before the send channel. |
2506 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcAfterCreatingReceiveChannel) { | 2498 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcAfterCreatingReceiveChannel) { |
2507 EXPECT_TRUE(SetupChannel()); | 2499 EXPECT_TRUE(SetupChannel()); |
2508 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2500 EXPECT_TRUE(AddRecvStream(1)); |
2509 int receive_channel_num = voe_.GetLastChannel(); | 2501 int receive_channel_num = voe_.GetLastChannel(); |
2510 EXPECT_TRUE(channel_->AddSendStream( | 2502 EXPECT_TRUE(channel_->AddSendStream( |
2511 cricket::StreamParams::CreateLegacy(1234))); | 2503 cricket::StreamParams::CreateLegacy(1234))); |
2512 | 2504 |
2513 EXPECT_TRUE(call_.GetAudioSendStream(1234)); | 2505 EXPECT_TRUE(call_.GetAudioSendStream(1234)); |
2514 EXPECT_EQ(1234U, voe_.GetLocalSSRC(receive_channel_num)); | 2506 EXPECT_EQ(1234U, voe_.GetLocalSSRC(receive_channel_num)); |
2515 } | 2507 } |
2516 | 2508 |
2517 // Test that we can properly receive packets. | 2509 // Test that we can properly receive packets. |
2518 TEST_F(WebRtcVoiceEngineTestFake, Recv) { | 2510 TEST_F(WebRtcVoiceEngineTestFake, Recv) { |
2519 EXPECT_TRUE(SetupChannel()); | 2511 EXPECT_TRUE(SetupChannel()); |
2520 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2512 EXPECT_TRUE(AddRecvStream(1)); |
2521 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); | 2513 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); |
2522 | 2514 |
2523 EXPECT_TRUE(GetRecvStream(1).VerifyLastPacket(kPcmuFrame, | 2515 EXPECT_TRUE(GetRecvStream(1).VerifyLastPacket(kPcmuFrame, |
2524 sizeof(kPcmuFrame))); | 2516 sizeof(kPcmuFrame))); |
2525 } | 2517 } |
2526 | 2518 |
2527 // Test that we can properly receive packets on multiple streams. | 2519 // Test that we can properly receive packets on multiple streams. |
2528 TEST_F(WebRtcVoiceEngineTestFake, RecvWithMultipleStreams) { | 2520 TEST_F(WebRtcVoiceEngineTestFake, RecvWithMultipleStreams) { |
2529 EXPECT_TRUE(SetupChannel()); | 2521 EXPECT_TRUE(SetupChannel()); |
2530 const uint32_t ssrc1 = 1; | 2522 const uint32_t ssrc1 = 1; |
2531 const uint32_t ssrc2 = 2; | 2523 const uint32_t ssrc2 = 2; |
2532 const uint32_t ssrc3 = 3; | 2524 const uint32_t ssrc3 = 3; |
2533 EXPECT_TRUE(channel_->AddRecvStream( | 2525 EXPECT_TRUE(AddRecvStream(ssrc1)); |
2534 cricket::StreamParams::CreateLegacy(ssrc1))); | 2526 EXPECT_TRUE(AddRecvStream(ssrc2)); |
2535 EXPECT_TRUE(channel_->AddRecvStream( | 2527 EXPECT_TRUE(AddRecvStream(ssrc3)); |
2536 cricket::StreamParams::CreateLegacy(ssrc2))); | |
2537 EXPECT_TRUE(channel_->AddRecvStream( | |
2538 cricket::StreamParams::CreateLegacy(ssrc3))); | |
2539 // Create packets with the right SSRCs. | 2528 // Create packets with the right SSRCs. |
2540 unsigned char packets[4][sizeof(kPcmuFrame)]; | 2529 unsigned char packets[4][sizeof(kPcmuFrame)]; |
2541 for (size_t i = 0; i < arraysize(packets); ++i) { | 2530 for (size_t i = 0; i < arraysize(packets); ++i) { |
2542 memcpy(packets[i], kPcmuFrame, sizeof(kPcmuFrame)); | 2531 memcpy(packets[i], kPcmuFrame, sizeof(kPcmuFrame)); |
2543 rtc::SetBE32(packets[i] + 8, static_cast<uint32_t>(i)); | 2532 rtc::SetBE32(packets[i] + 8, static_cast<uint32_t>(i)); |
2544 } | 2533 } |
2545 | 2534 |
2546 const cricket::FakeAudioReceiveStream& s1 = GetRecvStream(ssrc1); | 2535 const cricket::FakeAudioReceiveStream& s1 = GetRecvStream(ssrc1); |
2547 const cricket::FakeAudioReceiveStream& s2 = GetRecvStream(ssrc2); | 2536 const cricket::FakeAudioReceiveStream& s2 = GetRecvStream(ssrc2); |
2548 const cricket::FakeAudioReceiveStream& s3 = GetRecvStream(ssrc3); | 2537 const cricket::FakeAudioReceiveStream& s3 = GetRecvStream(ssrc3); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2623 // Test that a default channel is created even after a signalled stream has been | 2612 // Test that a default channel is created even after a signalled stream has been |
2624 // added, and that this stream will get any packets for unknown SSRCs. | 2613 // added, and that this stream will get any packets for unknown SSRCs. |
2625 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledAfterSignalled) { | 2614 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledAfterSignalled) { |
2626 EXPECT_TRUE(SetupChannel()); | 2615 EXPECT_TRUE(SetupChannel()); |
2627 unsigned char packet[sizeof(kPcmuFrame)]; | 2616 unsigned char packet[sizeof(kPcmuFrame)]; |
2628 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); | 2617 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); |
2629 | 2618 |
2630 // Add a known stream, send packet and verify we got it. | 2619 // Add a known stream, send packet and verify we got it. |
2631 const uint32_t signaled_ssrc = 1; | 2620 const uint32_t signaled_ssrc = 1; |
2632 rtc::SetBE32(&packet[8], signaled_ssrc); | 2621 rtc::SetBE32(&packet[8], signaled_ssrc); |
2633 EXPECT_TRUE(channel_->AddRecvStream( | 2622 EXPECT_TRUE(AddRecvStream(signaled_ssrc)); |
2634 cricket::StreamParams::CreateLegacy(signaled_ssrc))); | |
2635 DeliverPacket(packet, sizeof(packet)); | 2623 DeliverPacket(packet, sizeof(packet)); |
2636 EXPECT_TRUE(GetRecvStream(signaled_ssrc).VerifyLastPacket( | 2624 EXPECT_TRUE(GetRecvStream(signaled_ssrc).VerifyLastPacket( |
2637 packet, sizeof(packet))); | 2625 packet, sizeof(packet))); |
2638 | 2626 |
2639 // Note that the first unknown SSRC cannot be 0, because we only support | 2627 // Note that the first unknown SSRC cannot be 0, because we only support |
2640 // creating receive streams for SSRC!=0. | 2628 // creating receive streams for SSRC!=0. |
2641 const uint32_t unsignaled_ssrc = 7011; | 2629 const uint32_t unsignaled_ssrc = 7011; |
2642 rtc::SetBE32(&packet[8], unsignaled_ssrc); | 2630 rtc::SetBE32(&packet[8], unsignaled_ssrc); |
2643 DeliverPacket(packet, sizeof(packet)); | 2631 DeliverPacket(packet, sizeof(packet)); |
2644 EXPECT_TRUE(GetRecvStream(unsignaled_ssrc).VerifyLastPacket( | 2632 EXPECT_TRUE(GetRecvStream(unsignaled_ssrc).VerifyLastPacket( |
2645 packet, sizeof(packet))); | 2633 packet, sizeof(packet))); |
2646 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); | 2634 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); |
2647 | 2635 |
2648 DeliverPacket(packet, sizeof(packet)); | 2636 DeliverPacket(packet, sizeof(packet)); |
2649 EXPECT_EQ(2, GetRecvStream(unsignaled_ssrc).received_packets()); | 2637 EXPECT_EQ(2, GetRecvStream(unsignaled_ssrc).received_packets()); |
2650 | 2638 |
2651 rtc::SetBE32(&packet[8], signaled_ssrc); | 2639 rtc::SetBE32(&packet[8], signaled_ssrc); |
2652 DeliverPacket(packet, sizeof(packet)); | 2640 DeliverPacket(packet, sizeof(packet)); |
2653 EXPECT_EQ(2, GetRecvStream(signaled_ssrc).received_packets()); | 2641 EXPECT_EQ(2, GetRecvStream(signaled_ssrc).received_packets()); |
2654 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); | 2642 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size()); |
2655 } | 2643 } |
2656 | 2644 |
2657 // Test that we properly handle failures to add a receive stream. | 2645 // Test that we properly handle failures to add a receive stream. |
2658 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamFail) { | 2646 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamFail) { |
2659 EXPECT_TRUE(SetupChannel()); | 2647 EXPECT_TRUE(SetupChannel()); |
2660 voe_.set_fail_create_channel(true); | 2648 voe_.set_fail_create_channel(true); |
2661 EXPECT_FALSE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2649 EXPECT_FALSE(AddRecvStream(2)); |
2662 } | 2650 } |
2663 | 2651 |
2664 // Test that we properly handle failures to add a send stream. | 2652 // Test that we properly handle failures to add a send stream. |
2665 TEST_F(WebRtcVoiceEngineTestFake, AddSendStreamFail) { | 2653 TEST_F(WebRtcVoiceEngineTestFake, AddSendStreamFail) { |
2666 EXPECT_TRUE(SetupChannel()); | 2654 EXPECT_TRUE(SetupChannel()); |
2667 voe_.set_fail_create_channel(true); | 2655 voe_.set_fail_create_channel(true); |
2668 EXPECT_FALSE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(2))); | 2656 EXPECT_FALSE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(2))); |
2669 } | 2657 } |
2670 | 2658 |
2671 // Test that AddRecvStream creates new stream. | 2659 // Test that AddRecvStream creates new stream. |
2672 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStream) { | 2660 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStream) { |
2673 EXPECT_TRUE(SetupRecvStream()); | 2661 EXPECT_TRUE(SetupRecvStream()); |
2674 int channel_num = voe_.GetLastChannel(); | 2662 int channel_num = voe_.GetLastChannel(); |
2675 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2663 EXPECT_TRUE(AddRecvStream(1)); |
2676 EXPECT_NE(channel_num, voe_.GetLastChannel()); | 2664 EXPECT_NE(channel_num, voe_.GetLastChannel()); |
2677 } | 2665 } |
2678 | 2666 |
2679 // Test that after adding a recv stream, we do not decode more codecs than | 2667 // Test that after adding a recv stream, we do not decode more codecs than |
2680 // those previously passed into SetRecvCodecs. | 2668 // those previously passed into SetRecvCodecs. |
2681 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamUnsupportedCodec) { | 2669 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamUnsupportedCodec) { |
2682 EXPECT_TRUE(SetupSendStream()); | 2670 EXPECT_TRUE(SetupSendStream()); |
2683 cricket::AudioRecvParameters parameters; | 2671 cricket::AudioRecvParameters parameters; |
2684 parameters.codecs.push_back(kIsacCodec); | 2672 parameters.codecs.push_back(kIsacCodec); |
2685 parameters.codecs.push_back(kPcmuCodec); | 2673 parameters.codecs.push_back(kPcmuCodec); |
2686 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 2674 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
2687 EXPECT_TRUE(channel_->AddRecvStream( | 2675 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
2688 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
2689 int channel_num2 = voe_.GetLastChannel(); | 2676 int channel_num2 = voe_.GetLastChannel(); |
2690 webrtc::CodecInst gcodec; | 2677 webrtc::CodecInst gcodec; |
2691 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "opus"); | 2678 rtc::strcpyn(gcodec.plname, arraysize(gcodec.plname), "opus"); |
2692 gcodec.plfreq = 48000; | 2679 gcodec.plfreq = 48000; |
2693 gcodec.channels = 2; | 2680 gcodec.channels = 2; |
2694 EXPECT_EQ(-1, voe_.GetRecPayloadType(channel_num2, gcodec)); | 2681 EXPECT_EQ(-1, voe_.GetRecPayloadType(channel_num2, gcodec)); |
2695 } | 2682 } |
2696 | 2683 |
2697 // Test that we properly clean up any streams that were added, even if | 2684 // Test that we properly clean up any streams that were added, even if |
2698 // not explicitly removed. | 2685 // not explicitly removed. |
2699 TEST_F(WebRtcVoiceEngineTestFake, StreamCleanup) { | 2686 TEST_F(WebRtcVoiceEngineTestFake, StreamCleanup) { |
2700 EXPECT_TRUE(SetupSendStream()); | 2687 EXPECT_TRUE(SetupSendStream()); |
2701 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2688 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2702 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2689 EXPECT_TRUE(AddRecvStream(1)); |
2703 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2690 EXPECT_TRUE(AddRecvStream(2)); |
2704 EXPECT_EQ(3, voe_.GetNumChannels()); // default channel + 2 added | 2691 EXPECT_EQ(3, voe_.GetNumChannels()); // default channel + 2 added |
2705 delete channel_; | 2692 delete channel_; |
2706 channel_ = NULL; | 2693 channel_ = NULL; |
2707 EXPECT_EQ(0, voe_.GetNumChannels()); | 2694 EXPECT_EQ(0, voe_.GetNumChannels()); |
2708 } | 2695 } |
2709 | 2696 |
2710 TEST_F(WebRtcVoiceEngineTestFake, TestAddRecvStreamFailWithZeroSsrc) { | 2697 TEST_F(WebRtcVoiceEngineTestFake, TestAddRecvStreamFailWithZeroSsrc) { |
2711 EXPECT_TRUE(SetupSendStream()); | 2698 EXPECT_TRUE(SetupSendStream()); |
2712 EXPECT_FALSE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(0))); | 2699 EXPECT_FALSE(AddRecvStream(0)); |
2713 } | 2700 } |
2714 | 2701 |
2715 TEST_F(WebRtcVoiceEngineTestFake, TestNoLeakingWhenAddRecvStreamFail) { | 2702 TEST_F(WebRtcVoiceEngineTestFake, TestNoLeakingWhenAddRecvStreamFail) { |
2716 EXPECT_TRUE(SetupChannel()); | 2703 EXPECT_TRUE(SetupChannel()); |
2717 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2704 EXPECT_TRUE(AddRecvStream(1)); |
2718 // Manually delete channel to simulate a failure. | 2705 // Manually delete channel to simulate a failure. |
2719 int channel = voe_.GetLastChannel(); | 2706 int channel = voe_.GetLastChannel(); |
2720 EXPECT_EQ(0, voe_.DeleteChannel(channel)); | 2707 EXPECT_EQ(0, voe_.DeleteChannel(channel)); |
2721 // Add recv stream 2 should work. | 2708 // Add recv stream 2 should work. |
2722 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2709 EXPECT_TRUE(AddRecvStream(2)); |
2723 int new_channel = voe_.GetLastChannel(); | 2710 int new_channel = voe_.GetLastChannel(); |
2724 EXPECT_NE(channel, new_channel); | 2711 EXPECT_NE(channel, new_channel); |
2725 // The last created channel is deleted too. | 2712 // The last created channel is deleted too. |
2726 EXPECT_EQ(0, voe_.DeleteChannel(new_channel)); | 2713 EXPECT_EQ(0, voe_.DeleteChannel(new_channel)); |
2727 } | 2714 } |
2728 | 2715 |
2729 // Test the InsertDtmf on default send stream as caller. | 2716 // Test the InsertDtmf on default send stream as caller. |
2730 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnDefaultSendStreamAsCaller) { | 2717 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnDefaultSendStreamAsCaller) { |
2731 TestInsertDtmf(0, true); | 2718 TestInsertDtmf(0, true); |
2732 } | 2719 } |
(...skipping 10 matching lines...) Expand all Loading... |
2743 | 2730 |
2744 // Test the InsertDtmf on specified send stream as callee. | 2731 // Test the InsertDtmf on specified send stream as callee. |
2745 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCallee) { | 2732 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCallee) { |
2746 TestInsertDtmf(kSsrc1, false); | 2733 TestInsertDtmf(kSsrc1, false); |
2747 } | 2734 } |
2748 | 2735 |
2749 TEST_F(WebRtcVoiceEngineTestFake, TestSetPlayoutError) { | 2736 TEST_F(WebRtcVoiceEngineTestFake, TestSetPlayoutError) { |
2750 EXPECT_TRUE(SetupSendStream()); | 2737 EXPECT_TRUE(SetupSendStream()); |
2751 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2738 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2752 SetSend(channel_, true); | 2739 SetSend(channel_, true); |
2753 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2740 EXPECT_TRUE(AddRecvStream(2)); |
2754 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); | 2741 EXPECT_TRUE(AddRecvStream(3)); |
2755 EXPECT_TRUE(channel_->SetPlayout(true)); | 2742 EXPECT_TRUE(channel_->SetPlayout(true)); |
2756 voe_.set_playout_fail_channel(voe_.GetLastChannel() - 1); | 2743 voe_.set_playout_fail_channel(voe_.GetLastChannel() - 1); |
2757 EXPECT_TRUE(channel_->SetPlayout(false)); | 2744 EXPECT_TRUE(channel_->SetPlayout(false)); |
2758 EXPECT_FALSE(channel_->SetPlayout(true)); | 2745 EXPECT_FALSE(channel_->SetPlayout(true)); |
2759 } | 2746 } |
2760 | 2747 |
2761 TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) { | 2748 TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) { |
2762 EXPECT_TRUE(SetupSendStream()); | 2749 EXPECT_TRUE(SetupSendStream()); |
2763 EXPECT_CALL(adm_, | 2750 EXPECT_CALL(adm_, |
2764 BuiltInAECIsAvailable()).Times(9).WillRepeatedly(Return(false)); | 2751 BuiltInAECIsAvailable()).Times(9).WillRepeatedly(Return(false)); |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3097 EXPECT_EQ(rtc::DSCP_DEFAULT, network_interface.dscp()); | 3084 EXPECT_EQ(rtc::DSCP_DEFAULT, network_interface.dscp()); |
3098 | 3085 |
3099 channel->SetInterface(nullptr); | 3086 channel->SetInterface(nullptr); |
3100 } | 3087 } |
3101 | 3088 |
3102 TEST_F(WebRtcVoiceEngineTestFake, TestGetReceiveChannelId) { | 3089 TEST_F(WebRtcVoiceEngineTestFake, TestGetReceiveChannelId) { |
3103 EXPECT_TRUE(SetupChannel()); | 3090 EXPECT_TRUE(SetupChannel()); |
3104 cricket::WebRtcVoiceMediaChannel* media_channel = | 3091 cricket::WebRtcVoiceMediaChannel* media_channel = |
3105 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); | 3092 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); |
3106 EXPECT_EQ(-1, media_channel->GetReceiveChannelId(0)); | 3093 EXPECT_EQ(-1, media_channel->GetReceiveChannelId(0)); |
3107 EXPECT_TRUE(channel_->AddRecvStream( | 3094 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
3108 cricket::StreamParams::CreateLegacy(kSsrc1))); | |
3109 int channel_id = voe_.GetLastChannel(); | 3095 int channel_id = voe_.GetLastChannel(); |
3110 EXPECT_EQ(channel_id, media_channel->GetReceiveChannelId(kSsrc1)); | 3096 EXPECT_EQ(channel_id, media_channel->GetReceiveChannelId(kSsrc1)); |
3111 EXPECT_EQ(-1, media_channel->GetReceiveChannelId(kSsrc2)); | 3097 EXPECT_EQ(-1, media_channel->GetReceiveChannelId(kSsrc2)); |
3112 EXPECT_TRUE(channel_->AddRecvStream( | 3098 EXPECT_TRUE(AddRecvStream(kSsrc2)); |
3113 cricket::StreamParams::CreateLegacy(kSsrc2))); | |
3114 int channel_id2 = voe_.GetLastChannel(); | 3099 int channel_id2 = voe_.GetLastChannel(); |
3115 EXPECT_EQ(channel_id2, media_channel->GetReceiveChannelId(kSsrc2)); | 3100 EXPECT_EQ(channel_id2, media_channel->GetReceiveChannelId(kSsrc2)); |
3116 } | 3101 } |
3117 | 3102 |
3118 TEST_F(WebRtcVoiceEngineTestFake, TestGetSendChannelId) { | 3103 TEST_F(WebRtcVoiceEngineTestFake, TestGetSendChannelId) { |
3119 EXPECT_TRUE(SetupChannel()); | 3104 EXPECT_TRUE(SetupChannel()); |
3120 cricket::WebRtcVoiceMediaChannel* media_channel = | 3105 cricket::WebRtcVoiceMediaChannel* media_channel = |
3121 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); | 3106 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); |
3122 EXPECT_EQ(-1, media_channel->GetSendChannelId(0)); | 3107 EXPECT_EQ(-1, media_channel->GetSendChannelId(0)); |
3123 EXPECT_TRUE(channel_->AddSendStream( | 3108 EXPECT_TRUE(channel_->AddSendStream( |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3261 channel_->OnRtcpReceived(&kRtcpPacket, rtc::PacketTime()); | 3246 channel_->OnRtcpReceived(&kRtcpPacket, rtc::PacketTime()); |
3262 EXPECT_EQ(2, s->received_packets()); | 3247 EXPECT_EQ(2, s->received_packets()); |
3263 } | 3248 } |
3264 | 3249 |
3265 // All receive channels should be associated with the first send channel, | 3250 // All receive channels should be associated with the first send channel, |
3266 // since they do not send RTCP SR. | 3251 // since they do not send RTCP SR. |
3267 TEST_F(WebRtcVoiceEngineTestFake, AssociateFirstSendChannel) { | 3252 TEST_F(WebRtcVoiceEngineTestFake, AssociateFirstSendChannel) { |
3268 EXPECT_TRUE(SetupSendStream()); | 3253 EXPECT_TRUE(SetupSendStream()); |
3269 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 3254 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
3270 int default_channel = voe_.GetLastChannel(); | 3255 int default_channel = voe_.GetLastChannel(); |
3271 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 3256 EXPECT_TRUE(AddRecvStream(1)); |
3272 int recv_ch = voe_.GetLastChannel(); | 3257 int recv_ch = voe_.GetLastChannel(); |
3273 EXPECT_NE(recv_ch, default_channel); | 3258 EXPECT_NE(recv_ch, default_channel); |
3274 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), default_channel); | 3259 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), default_channel); |
3275 EXPECT_TRUE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(2))); | 3260 EXPECT_TRUE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(2))); |
3276 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), default_channel); | 3261 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), default_channel); |
3277 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); | 3262 EXPECT_TRUE(AddRecvStream(3)); |
3278 recv_ch = voe_.GetLastChannel(); | 3263 recv_ch = voe_.GetLastChannel(); |
3279 EXPECT_NE(recv_ch, default_channel); | 3264 EXPECT_NE(recv_ch, default_channel); |
3280 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), default_channel); | 3265 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), default_channel); |
3281 } | 3266 } |
3282 | 3267 |
3283 TEST_F(WebRtcVoiceEngineTestFake, AssociateChannelResetUponDeleteChannnel) { | 3268 TEST_F(WebRtcVoiceEngineTestFake, AssociateChannelResetUponDeleteChannnel) { |
3284 EXPECT_TRUE(SetupSendStream()); | 3269 EXPECT_TRUE(SetupSendStream()); |
3285 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 3270 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
3286 | 3271 |
3287 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 3272 EXPECT_TRUE(AddRecvStream(1)); |
3288 int recv_ch = voe_.GetLastChannel(); | 3273 int recv_ch = voe_.GetLastChannel(); |
3289 | 3274 |
3290 EXPECT_TRUE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(2))); | 3275 EXPECT_TRUE(channel_->AddSendStream(cricket::StreamParams::CreateLegacy(2))); |
3291 int send_ch = voe_.GetLastChannel(); | 3276 int send_ch = voe_.GetLastChannel(); |
3292 | 3277 |
3293 // Manually associate |recv_ch| to |send_ch|. This test is to verify a | 3278 // Manually associate |recv_ch| to |send_ch|. This test is to verify a |
3294 // deleting logic, i.e., deleting |send_ch| will reset the associate send | 3279 // deleting logic, i.e., deleting |send_ch| will reset the associate send |
3295 // channel of |recv_ch|.This is not a common case, since, normally, only the | 3280 // channel of |recv_ch|.This is not a common case, since, normally, only the |
3296 // default channel can be associated. However, the default is not deletable. | 3281 // default channel can be associated. However, the default is not deletable. |
3297 // So we force the |recv_ch| to associate with a non-default channel. | 3282 // So we force the |recv_ch| to associate with a non-default channel. |
3298 EXPECT_EQ(0, voe_.AssociateSendChannel(recv_ch, send_ch)); | 3283 EXPECT_EQ(0, voe_.AssociateSendChannel(recv_ch, send_ch)); |
3299 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), send_ch); | 3284 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), send_ch); |
3300 | 3285 |
3301 EXPECT_TRUE(channel_->RemoveSendStream(2)); | 3286 EXPECT_TRUE(channel_->RemoveSendStream(2)); |
3302 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), -1); | 3287 EXPECT_EQ(voe_.GetAssociateSendChannel(recv_ch), -1); |
3303 } | 3288 } |
3304 | 3289 |
3305 TEST_F(WebRtcVoiceEngineTestFake, SetRawAudioSink) { | 3290 TEST_F(WebRtcVoiceEngineTestFake, SetRawAudioSink) { |
3306 EXPECT_TRUE(SetupChannel()); | 3291 EXPECT_TRUE(SetupChannel()); |
3307 std::unique_ptr<FakeAudioSink> fake_sink_1(new FakeAudioSink()); | 3292 std::unique_ptr<FakeAudioSink> fake_sink_1(new FakeAudioSink()); |
3308 std::unique_ptr<FakeAudioSink> fake_sink_2(new FakeAudioSink()); | 3293 std::unique_ptr<FakeAudioSink> fake_sink_2(new FakeAudioSink()); |
3309 | 3294 |
3310 // Setting the sink before a recv stream exists should do nothing. | 3295 // Setting the sink before a recv stream exists should do nothing. |
3311 channel_->SetRawAudioSink(kSsrc1, std::move(fake_sink_1)); | 3296 channel_->SetRawAudioSink(kSsrc1, std::move(fake_sink_1)); |
3312 EXPECT_TRUE( | 3297 EXPECT_TRUE(AddRecvStream(kSsrc1)); |
3313 channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc1))); | |
3314 EXPECT_EQ(nullptr, GetRecvStream(kSsrc1).sink()); | 3298 EXPECT_EQ(nullptr, GetRecvStream(kSsrc1).sink()); |
3315 | 3299 |
3316 // Now try actually setting the sink. | 3300 // Now try actually setting the sink. |
3317 channel_->SetRawAudioSink(kSsrc1, std::move(fake_sink_2)); | 3301 channel_->SetRawAudioSink(kSsrc1, std::move(fake_sink_2)); |
3318 EXPECT_NE(nullptr, GetRecvStream(kSsrc1).sink()); | 3302 EXPECT_NE(nullptr, GetRecvStream(kSsrc1).sink()); |
3319 | 3303 |
3320 // Now try resetting it. | 3304 // Now try resetting it. |
3321 channel_->SetRawAudioSink(kSsrc1, nullptr); | 3305 channel_->SetRawAudioSink(kSsrc1, nullptr); |
3322 EXPECT_EQ(nullptr, GetRecvStream(kSsrc1).sink()); | 3306 EXPECT_EQ(nullptr, GetRecvStream(kSsrc1).sink()); |
3323 } | 3307 } |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3531 cricket::WebRtcVoiceEngine engine( | 3515 cricket::WebRtcVoiceEngine engine( |
3532 nullptr, webrtc::CreateBuiltinAudioDecoderFactory()); | 3516 nullptr, webrtc::CreateBuiltinAudioDecoderFactory()); |
3533 std::unique_ptr<webrtc::Call> call( | 3517 std::unique_ptr<webrtc::Call> call( |
3534 webrtc::Call::Create(webrtc::Call::Config())); | 3518 webrtc::Call::Create(webrtc::Call::Config())); |
3535 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), | 3519 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), |
3536 cricket::AudioOptions(), call.get()); | 3520 cricket::AudioOptions(), call.get()); |
3537 cricket::AudioRecvParameters parameters; | 3521 cricket::AudioRecvParameters parameters; |
3538 parameters.codecs = engine.recv_codecs(); | 3522 parameters.codecs = engine.recv_codecs(); |
3539 EXPECT_TRUE(channel.SetRecvParameters(parameters)); | 3523 EXPECT_TRUE(channel.SetRecvParameters(parameters)); |
3540 } | 3524 } |
OLD | NEW |