Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(349)

Side by Side Diff: webrtc/media/engine/webrtcvoiceengine_unittest.cc

Issue 2060813002: Configure VoE NACK through AudioReceiveStream::Config. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@wvoe_config_nack
Patch Set: format Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/media/engine/webrtcvoiceengine.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcvoiceengine.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698