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

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