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

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

Issue 1909333002: Switch voice transport to use Call and Stream instead of VoENetwork. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: VoE::Channel external transport fix Created 4 years, 7 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
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 2584 matching lines...) Expand 10 before | Expand all | Expand 10 after
2595 2595
2596 EXPECT_TRUE(call_.GetAudioSendStream(1234)); 2596 EXPECT_TRUE(call_.GetAudioSendStream(1234));
2597 EXPECT_EQ(1234U, voe_.GetLocalSSRC(receive_channel_num)); 2597 EXPECT_EQ(1234U, voe_.GetLocalSSRC(receive_channel_num));
2598 } 2598 }
2599 2599
2600 // Test that we can properly receive packets. 2600 // Test that we can properly receive packets.
2601 TEST_F(WebRtcVoiceEngineTestFake, Recv) { 2601 TEST_F(WebRtcVoiceEngineTestFake, Recv) {
2602 EXPECT_TRUE(SetupChannel()); 2602 EXPECT_TRUE(SetupChannel());
2603 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); 2603 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1)));
2604 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); 2604 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame));
2605 int channel_num = voe_.GetLastChannel(); 2605
2606 EXPECT_TRUE(voe_.CheckPacket(channel_num, kPcmuFrame, sizeof(kPcmuFrame))); 2606 EXPECT_TRUE(GetRecvStream(1).VerifyLastPacket(kPcmuFrame,
2607 sizeof(kPcmuFrame)));
2607 } 2608 }
2608 2609
2609 // Test that we can properly receive packets on multiple streams. 2610 // Test that we can properly receive packets on multiple streams.
2610 TEST_F(WebRtcVoiceEngineTestFake, RecvWithMultipleStreams) { 2611 TEST_F(WebRtcVoiceEngineTestFake, RecvWithMultipleStreams) {
2611 EXPECT_TRUE(SetupChannel()); 2612 EXPECT_TRUE(SetupChannel());
2612 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); 2613 const uint32_t ssrc1 = 1;
2613 int channel_num1 = voe_.GetLastChannel(); 2614 const uint32_t ssrc2 = 2;
2614 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); 2615 const uint32_t ssrc3 = 3;
2615 int channel_num2 = voe_.GetLastChannel(); 2616 EXPECT_TRUE(channel_->AddRecvStream(
2616 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); 2617 cricket::StreamParams::CreateLegacy(ssrc1)));
2617 int channel_num3 = voe_.GetLastChannel(); 2618 EXPECT_TRUE(channel_->AddRecvStream(
2619 cricket::StreamParams::CreateLegacy(ssrc2)));
2620 EXPECT_TRUE(channel_->AddRecvStream(
2621 cricket::StreamParams::CreateLegacy(ssrc3)));
2618 // Create packets with the right SSRCs. 2622 // Create packets with the right SSRCs.
2619 char packets[4][sizeof(kPcmuFrame)]; 2623 unsigned char packets[4][sizeof(kPcmuFrame)];
2620 for (size_t i = 0; i < arraysize(packets); ++i) { 2624 for (size_t i = 0; i < arraysize(packets); ++i) {
2621 memcpy(packets[i], kPcmuFrame, sizeof(kPcmuFrame)); 2625 memcpy(packets[i], kPcmuFrame, sizeof(kPcmuFrame));
2622 rtc::SetBE32(packets[i] + 8, static_cast<uint32_t>(i)); 2626 rtc::SetBE32(packets[i] + 8, static_cast<uint32_t>(i));
2623 } 2627 }
2624 EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); 2628
2625 EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); 2629 const cricket::FakeAudioReceiveStream& s1 = GetRecvStream(ssrc1);
2626 EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); 2630 const cricket::FakeAudioReceiveStream& s2 = GetRecvStream(ssrc2);
2631 const cricket::FakeAudioReceiveStream& s3 = GetRecvStream(ssrc3);
2632
2633 EXPECT_EQ(s1.received_packets(), 0);
2634 EXPECT_EQ(s2.received_packets(), 0);
2635 EXPECT_EQ(s3.received_packets(), 0);
2627 2636
2628 DeliverPacket(packets[0], sizeof(packets[0])); 2637 DeliverPacket(packets[0], sizeof(packets[0]));
2629 EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); 2638 EXPECT_EQ(s1.received_packets(), 0);
2630 EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); 2639 EXPECT_EQ(s2.received_packets(), 0);
2631 EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); 2640 EXPECT_EQ(s3.received_packets(), 0);
2632 2641
2633 DeliverPacket(packets[1], sizeof(packets[1])); 2642 DeliverPacket(packets[1], sizeof(packets[1]));
2634 EXPECT_TRUE(voe_.CheckPacket(channel_num1, packets[1], sizeof(packets[1]))); 2643 EXPECT_EQ(s1.received_packets(), 1);
2635 EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); 2644 EXPECT_TRUE(s1.VerifyLastPacket(packets[1], sizeof(packets[1])));
2636 EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); 2645 EXPECT_EQ(s2.received_packets(), 0);
2646 EXPECT_EQ(s3.received_packets(), 0);
2637 2647
2638 DeliverPacket(packets[2], sizeof(packets[2])); 2648 DeliverPacket(packets[2], sizeof(packets[2]));
2639 EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); 2649 EXPECT_EQ(s1.received_packets(), 1);
2640 EXPECT_TRUE(voe_.CheckPacket(channel_num2, packets[2], sizeof(packets[2]))); 2650 EXPECT_EQ(s2.received_packets(), 1);
2641 EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); 2651 EXPECT_TRUE(s2.VerifyLastPacket(packets[2], sizeof(packets[2])));
2652 EXPECT_EQ(s3.received_packets(), 0);
2642 2653
2643 DeliverPacket(packets[3], sizeof(packets[3])); 2654 DeliverPacket(packets[3], sizeof(packets[3]));
2644 EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); 2655 EXPECT_EQ(s1.received_packets(), 1);
2645 EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); 2656 EXPECT_EQ(s2.received_packets(), 1);
2646 EXPECT_TRUE(voe_.CheckPacket(channel_num3, packets[3], sizeof(packets[3]))); 2657 EXPECT_EQ(s3.received_packets(), 1);
2658 EXPECT_TRUE(s3.VerifyLastPacket(packets[3], sizeof(packets[3])));
2647 2659
2648 EXPECT_TRUE(channel_->RemoveRecvStream(3)); 2660 EXPECT_TRUE(channel_->RemoveRecvStream(ssrc3));
2649 EXPECT_TRUE(channel_->RemoveRecvStream(2)); 2661 EXPECT_TRUE(channel_->RemoveRecvStream(ssrc2));
2650 EXPECT_TRUE(channel_->RemoveRecvStream(1)); 2662 EXPECT_TRUE(channel_->RemoveRecvStream(ssrc1));
2651 } 2663 }
2652 2664
2653 // Test that receiving on an unsignalled stream works (default channel will be 2665 // Test that receiving on an unsignalled stream works (default channel will be
2654 // created). 2666 // created).
2655 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalled) { 2667 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalled) {
2656 EXPECT_TRUE(SetupChannel()); 2668 EXPECT_TRUE(SetupChannel());
2669 EXPECT_EQ(0, call_.GetAudioReceiveStreams().size());
2670
2657 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); 2671 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame));
2658 int channel_num = voe_.GetLastChannel(); 2672
2659 EXPECT_TRUE(voe_.CheckPacket(channel_num, kPcmuFrame, sizeof(kPcmuFrame))); 2673 EXPECT_EQ(1, call_.GetAudioReceiveStreams().size());
2674 EXPECT_TRUE(GetRecvStream(1).VerifyLastPacket(kPcmuFrame,
2675 sizeof(kPcmuFrame)));
2660 } 2676 }
2661 2677
2662 // Test that receiving on an unsignalled stream works (default channel will be 2678 // Test that receiving on an unsignalled stream works (default channel will be
2663 // created), and that packets will be forwarded to the default channel 2679 // created), and that packets will be forwarded to the default channel
2664 // regardless of their SSRCs. 2680 // regardless of their SSRCs.
2665 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledWithSsrcSwitch) { 2681 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledWithSsrcSwitch) {
2666 EXPECT_TRUE(SetupChannel()); 2682 EXPECT_TRUE(SetupChannel());
2667 char packet[sizeof(kPcmuFrame)]; 2683 unsigned char packet[sizeof(kPcmuFrame)];
2668 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); 2684 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame));
2669 2685
2670 // Note that the first unknown SSRC cannot be 0, because we only support 2686 // Note that the first unknown SSRC cannot be 0, because we only support
2671 // creating receive streams for SSRC!=0. 2687 // creating receive streams for SSRC!=0.
the sun 2016/04/28 09:15:57 Note that the behavior is now changed and this com
mflodman 2016/04/29 05:54:00 Roght, comment updated.
2672 DeliverPacket(packet, sizeof(packet)); 2688 uint32_t ssrc = 1;
2673 int channel_num = voe_.GetLastChannel(); 2689 for (; ssrc < 10; ++ssrc) {
2674 EXPECT_TRUE(voe_.CheckPacket(channel_num, packet, sizeof(packet)));
2675 // Once we have the default channel, SSRC==0 will be ok.
2676 for (uint32_t ssrc = 0; ssrc < 10; ++ssrc) {
2677 rtc::SetBE32(&packet[8], ssrc); 2690 rtc::SetBE32(&packet[8], ssrc);
2678 DeliverPacket(packet, sizeof(packet)); 2691 DeliverPacket(packet, sizeof(packet));
2679 EXPECT_TRUE(voe_.CheckPacket(channel_num, packet, sizeof(packet))); 2692
2693 // Verify the old default stream is deleted.
the sun 2016/04/28 09:15:57 // Verify we only have one default stream. would b
mflodman 2016/04/29 05:54:00 Agree, changed.
2694 EXPECT_EQ(1, call_.GetAudioReceiveStreams().size());
2695 EXPECT_EQ(1, GetRecvStream(ssrc).received_packets());
2696 EXPECT_TRUE(GetRecvStream(ssrc).VerifyLastPacket(packet, sizeof(packet)));
2680 } 2697 }
2698
2699 // Sending the same ssrc again should not create a new stream.
2700 --ssrc;
2701 DeliverPacket(packet, sizeof(packet));
2702 EXPECT_EQ(1, call_.GetAudioReceiveStreams().size());
2703 EXPECT_EQ(2, GetRecvStream(ssrc).received_packets());
2704 EXPECT_TRUE(GetRecvStream(ssrc).VerifyLastPacket(packet, sizeof(packet)));
2681 } 2705 }
2682 2706
2683 // Test that a default channel is created even after a signalled stream has been 2707 // Test that a default channel is created even after a signalled stream has been
2684 // added, and that this stream will get any packets for unknown SSRCs. 2708 // added, and that this stream will get any packets for unknown SSRCs.
2685 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledAfterSignalled) { 2709 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledAfterSignalled) {
2686 EXPECT_TRUE(SetupChannel()); 2710 EXPECT_TRUE(SetupChannel());
2687 char packet[sizeof(kPcmuFrame)]; 2711 unsigned char packet[sizeof(kPcmuFrame)];
2688 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); 2712 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame));
2689 2713
2690 // Add a known stream, send packet and verify we got it. 2714 // Add a known stream, send packet and verify we got it.
2691 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); 2715 const uint32_t signaled_ssrc = 1;
2692 int signalled_channel_num = voe_.GetLastChannel(); 2716 rtc::SetBE32(&packet[8], signaled_ssrc);
2717 EXPECT_TRUE(channel_->AddRecvStream(
2718 cricket::StreamParams::CreateLegacy(signaled_ssrc)));
2693 DeliverPacket(packet, sizeof(packet)); 2719 DeliverPacket(packet, sizeof(packet));
2694 EXPECT_TRUE(voe_.CheckPacket(signalled_channel_num, packet, sizeof(packet))); 2720 EXPECT_TRUE(GetRecvStream(signaled_ssrc).VerifyLastPacket(
2721 packet, sizeof(packet)));
2695 2722
2696 // Note that the first unknown SSRC cannot be 0, because we only support 2723 // Note that the first unknown SSRC cannot be 0, because we only support
2697 // creating receive streams for SSRC!=0. 2724 // creating receive streams for SSRC!=0.
2698 rtc::SetBE32(&packet[8], 7011); 2725 const uint32_t unsignaled_ssrc = 7011;
2726 rtc::SetBE32(&packet[8], unsignaled_ssrc);
2699 DeliverPacket(packet, sizeof(packet)); 2727 DeliverPacket(packet, sizeof(packet));
2700 int channel_num = voe_.GetLastChannel(); 2728 EXPECT_TRUE(GetRecvStream(unsignaled_ssrc).VerifyLastPacket(
2701 EXPECT_NE(channel_num, signalled_channel_num); 2729 packet, sizeof(packet)));
2702 EXPECT_TRUE(voe_.CheckPacket(channel_num, packet, sizeof(packet))); 2730 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size());
2703 // Once we have the default channel, SSRC==0 will be ok. 2731
2704 for (uint32_t ssrc = 0; ssrc < 20; ssrc += 2) { 2732 DeliverPacket(packet, sizeof(packet));
2705 rtc::SetBE32(&packet[8], ssrc); 2733 EXPECT_EQ(2, GetRecvStream(unsignaled_ssrc).received_packets());
2706 DeliverPacket(packet, sizeof(packet)); 2734
2707 EXPECT_TRUE(voe_.CheckPacket(channel_num, packet, sizeof(packet))); 2735 rtc::SetBE32(&packet[8], signaled_ssrc);
2708 } 2736 DeliverPacket(packet, sizeof(packet));
2737 EXPECT_EQ(2, GetRecvStream(signaled_ssrc).received_packets());
2738 EXPECT_EQ(2, call_.GetAudioReceiveStreams().size());
2709 } 2739 }
2710 2740
2711 // Test that we properly handle failures to add a receive stream. 2741 // Test that we properly handle failures to add a receive stream.
2712 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamFail) { 2742 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamFail) {
2713 EXPECT_TRUE(SetupChannel()); 2743 EXPECT_TRUE(SetupChannel());
2714 voe_.set_fail_create_channel(true); 2744 voe_.set_fail_create_channel(true);
2715 EXPECT_FALSE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); 2745 EXPECT_FALSE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2)));
2716 } 2746 }
2717 2747
2718 // Test that we properly handle failures to add a send stream. 2748 // Test that we properly handle failures to add a send stream.
(...skipping 845 matching lines...) Expand 10 before | Expand all | Expand 10 after
3564 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { 3594 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) {
3565 cricket::WebRtcVoiceEngine engine(nullptr); 3595 cricket::WebRtcVoiceEngine engine(nullptr);
3566 std::unique_ptr<webrtc::Call> call( 3596 std::unique_ptr<webrtc::Call> call(
3567 webrtc::Call::Create(webrtc::Call::Config())); 3597 webrtc::Call::Create(webrtc::Call::Config()));
3568 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), 3598 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(),
3569 cricket::AudioOptions(), call.get()); 3599 cricket::AudioOptions(), call.get());
3570 cricket::AudioRecvParameters parameters; 3600 cricket::AudioRecvParameters parameters;
3571 parameters.codecs = engine.codecs(); 3601 parameters.codecs = engine.codecs();
3572 EXPECT_TRUE(channel.SetRecvParameters(parameters)); 3602 EXPECT_TRUE(channel.SetRecvParameters(parameters));
3573 } 3603 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698