Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (c) 2008 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2008 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 2584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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 Loading... | |
| 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 } |
| OLD | NEW |