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 const cricket::FakeAudioReceiveStream* stream = |
2607 call_.GetAudioReceiveStreams().front(); | |
the sun
2016/04/22 12:40:32
Use GetRecvStream(1) instead
mflodman
2016/04/27 13:42:17
Done.
| |
2608 EXPECT_TRUE(stream->VerifyLastPacket(kPcmuFrame, sizeof(kPcmuFrame))); | |
2607 } | 2609 } |
2608 | 2610 |
2609 // Test that we can properly receive packets on multiple streams. | 2611 // Test that we can properly receive packets on multiple streams. |
2610 TEST_F(WebRtcVoiceEngineTestFake, RecvWithMultipleStreams) { | 2612 TEST_F(WebRtcVoiceEngineTestFake, RecvWithMultipleStreams) { |
2611 EXPECT_TRUE(SetupChannel()); | 2613 EXPECT_TRUE(SetupChannel()); |
2612 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2614 const uint32_t ssrc1 = 1; |
2613 int channel_num1 = voe_.GetLastChannel(); | 2615 const uint32_t ssrc2 = 2; |
2614 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2616 const uint32_t ssrc3 = 3; |
2615 int channel_num2 = voe_.GetLastChannel(); | 2617 EXPECT_TRUE(channel_->AddRecvStream( |
2616 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); | 2618 cricket::StreamParams::CreateLegacy(ssrc1))); |
2617 int channel_num3 = voe_.GetLastChannel(); | 2619 EXPECT_TRUE(channel_->AddRecvStream( |
2620 cricket::StreamParams::CreateLegacy(ssrc2))); | |
2621 EXPECT_TRUE(channel_->AddRecvStream( | |
2622 cricket::StreamParams::CreateLegacy(ssrc3))); | |
2618 // Create packets with the right SSRCs. | 2623 // Create packets with the right SSRCs. |
2619 char packets[4][sizeof(kPcmuFrame)]; | 2624 char packets[4][sizeof(kPcmuFrame)]; |
2620 for (size_t i = 0; i < arraysize(packets); ++i) { | 2625 for (size_t i = 0; i < arraysize(packets); ++i) { |
2621 memcpy(packets[i], kPcmuFrame, sizeof(kPcmuFrame)); | 2626 memcpy(packets[i], kPcmuFrame, sizeof(kPcmuFrame)); |
2622 rtc::SetBE32(packets[i] + 8, static_cast<uint32_t>(i)); | 2627 rtc::SetBE32(packets[i] + 8, static_cast<uint32_t>(i)); |
2623 } | 2628 } |
2624 EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); | 2629 |
2625 EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); | 2630 const cricket::FakeAudioReceiveStream* s1 = |
2626 EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); | 2631 call_.GetAudioReceiveStream(ssrc1); |
the sun
2016/04/22 12:40:31
Use GetRecvStream(..)
mflodman
2016/04/27 13:42:17
Done.
| |
2632 const cricket::FakeAudioReceiveStream* s2 = | |
2633 call_.GetAudioReceiveStream(ssrc2); | |
2634 const cricket::FakeAudioReceiveStream* s3 = | |
2635 call_.GetAudioReceiveStream(ssrc3); | |
2636 | |
2637 EXPECT_EQ(s1->received_packets(), 0); | |
2638 EXPECT_EQ(s2->received_packets(), 0); | |
2639 EXPECT_EQ(s3->received_packets(), 0); | |
2627 | 2640 |
2628 DeliverPacket(packets[0], sizeof(packets[0])); | 2641 DeliverPacket(packets[0], sizeof(packets[0])); |
2629 EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); | 2642 EXPECT_EQ(s1->received_packets(), 0); |
2630 EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); | 2643 EXPECT_EQ(s2->received_packets(), 0); |
2631 EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); | 2644 EXPECT_EQ(s3->received_packets(), 0); |
2632 | 2645 |
2633 DeliverPacket(packets[1], sizeof(packets[1])); | 2646 DeliverPacket(packets[1], sizeof(packets[1])); |
2634 EXPECT_TRUE(voe_.CheckPacket(channel_num1, packets[1], sizeof(packets[1]))); | 2647 EXPECT_EQ(s1->received_packets(), 1); |
2635 EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); | 2648 EXPECT_TRUE(s1->VerifyLastPacket(packets[1], sizeof(packets[1]))); |
2636 EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); | 2649 EXPECT_EQ(s2->received_packets(), 0); |
2650 EXPECT_EQ(s3->received_packets(), 0); | |
2637 | 2651 |
2638 DeliverPacket(packets[2], sizeof(packets[2])); | 2652 DeliverPacket(packets[2], sizeof(packets[2])); |
2639 EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); | 2653 EXPECT_EQ(s1->received_packets(), 1); |
2640 EXPECT_TRUE(voe_.CheckPacket(channel_num2, packets[2], sizeof(packets[2]))); | 2654 EXPECT_EQ(s2->received_packets(), 1); |
2641 EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); | 2655 EXPECT_TRUE(s2->VerifyLastPacket(packets[2], sizeof(packets[2]))); |
2656 EXPECT_EQ(s3->received_packets(), 0); | |
2642 | 2657 |
2643 DeliverPacket(packets[3], sizeof(packets[3])); | 2658 DeliverPacket(packets[3], sizeof(packets[3])); |
2644 EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); | 2659 EXPECT_EQ(s1->received_packets(), 1); |
2645 EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); | 2660 EXPECT_EQ(s2->received_packets(), 1); |
2646 EXPECT_TRUE(voe_.CheckPacket(channel_num3, packets[3], sizeof(packets[3]))); | 2661 EXPECT_EQ(s3->received_packets(), 1); |
2662 EXPECT_TRUE(s3->VerifyLastPacket(packets[3], sizeof(packets[3]))); | |
2647 | 2663 |
2648 EXPECT_TRUE(channel_->RemoveRecvStream(3)); | 2664 EXPECT_TRUE(channel_->RemoveRecvStream(ssrc3)); |
2649 EXPECT_TRUE(channel_->RemoveRecvStream(2)); | 2665 EXPECT_TRUE(channel_->RemoveRecvStream(ssrc2)); |
2650 EXPECT_TRUE(channel_->RemoveRecvStream(1)); | 2666 EXPECT_TRUE(channel_->RemoveRecvStream(ssrc1)); |
2651 } | 2667 } |
2652 | 2668 |
2653 // Test that receiving on an unsignalled stream works (default channel will be | 2669 // Test that receiving on an unsignalled stream works (default channel will be |
2654 // created). | 2670 // created). |
2655 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalled) { | 2671 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalled) { |
2656 EXPECT_TRUE(SetupChannel()); | 2672 EXPECT_TRUE(SetupChannel()); |
2673 EXPECT_EQ(0, call_.GetAudioReceiveStreams().size()); | |
2674 | |
2657 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); | 2675 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); |
2658 int channel_num = voe_.GetLastChannel(); | 2676 |
2659 EXPECT_TRUE(voe_.CheckPacket(channel_num, kPcmuFrame, sizeof(kPcmuFrame))); | 2677 EXPECT_EQ(1, call_.GetAudioReceiveStreams().size()); |
2678 const cricket::FakeAudioReceiveStream* s = | |
the sun
2016/04/22 12:40:32
Use GetRecvStream(1) instead
mflodman
2016/04/27 13:42:17
Done.
| |
2679 call_.GetAudioReceiveStreams().front(); | |
2680 EXPECT_TRUE(s->VerifyLastPacket(kPcmuFrame, sizeof(kPcmuFrame))); | |
2660 } | 2681 } |
2661 | 2682 |
2662 // Test that receiving on an unsignalled stream works (default channel will be | 2683 // Test that receiving on an unsignalled stream works (default channel will be |
2663 // created), and that packets will be forwarded to the default channel | 2684 // created), and that packets will be forwarded to the default channel |
2664 // regardless of their SSRCs. | 2685 // regardless of their SSRCs. |
2665 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledWithSsrcSwitch) { | 2686 // TODO(mflodman): This is according to the old test, but it's not supported |
2687 // by webrtc::Call. Shall this be fixed or dropped? | |
the sun
2016/04/22 12:40:32
I believe we must support the behavior. :(
See: ht
mflodman
2016/04/27 13:42:17
Changed and supported now. A potential previously
| |
2688 TEST_F(WebRtcVoiceEngineTestFake, DISABLED_RecvUnsignalledWithSsrcSwitch) { | |
2666 EXPECT_TRUE(SetupChannel()); | 2689 EXPECT_TRUE(SetupChannel()); |
2667 char packet[sizeof(kPcmuFrame)]; | 2690 char packet[sizeof(kPcmuFrame)]; |
2668 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); | 2691 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); |
2669 | 2692 |
2670 // Note that the first unknown SSRC cannot be 0, because we only support | 2693 // Note that the first unknown SSRC cannot be 0, because we only support |
2671 // creating receive streams for SSRC!=0. | 2694 // creating receive streams for SSRC!=0. |
2672 DeliverPacket(packet, sizeof(packet)); | 2695 DeliverPacket(packet, sizeof(packet)); |
2673 int channel_num = voe_.GetLastChannel(); | 2696 |
2674 EXPECT_TRUE(voe_.CheckPacket(channel_num, packet, sizeof(packet))); | 2697 EXPECT_EQ(1, call_.GetAudioReceiveStreams().size()); |
2698 const cricket::FakeAudioReceiveStream* s = | |
2699 call_.GetAudioReceiveStreams().front(); | |
2700 EXPECT_TRUE(s->VerifyLastPacket(packet, sizeof(packet))); | |
2701 | |
2675 // Once we have the default channel, SSRC==0 will be ok. | 2702 // Once we have the default channel, SSRC==0 will be ok. |
2676 for (uint32_t ssrc = 0; ssrc < 10; ++ssrc) { | 2703 for (uint32_t ssrc = 0; ssrc < 10; ++ssrc) { |
2677 rtc::SetBE32(&packet[8], ssrc); | 2704 rtc::SetBE32(&packet[8], ssrc); |
2678 DeliverPacket(packet, sizeof(packet)); | 2705 DeliverPacket(packet, sizeof(packet)); |
2679 EXPECT_TRUE(voe_.CheckPacket(channel_num, packet, sizeof(packet))); | 2706 EXPECT_TRUE(s->VerifyLastPacket(packet, sizeof(packet))); |
2680 } | 2707 } |
2681 } | 2708 } |
2682 | 2709 |
2683 // Test that a default channel is created even after a signalled stream has been | 2710 // 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. | 2711 // added, and that this stream will get any packets for unknown SSRCs. |
2685 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledAfterSignalled) { | 2712 TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledAfterSignalled) { |
2686 EXPECT_TRUE(SetupChannel()); | 2713 EXPECT_TRUE(SetupChannel()); |
2687 char packet[sizeof(kPcmuFrame)]; | 2714 char packet[sizeof(kPcmuFrame)]; |
2688 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); | 2715 memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); |
2689 | 2716 |
2690 // Add a known stream, send packet and verify we got it. | 2717 // Add a known stream, send packet and verify we got it. |
2691 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2718 const uint32_t signaled_ssrc = 1; |
2692 int signalled_channel_num = voe_.GetLastChannel(); | 2719 EXPECT_TRUE(channel_->AddRecvStream( |
2720 cricket::StreamParams::CreateLegacy(signaled_ssrc))); | |
2693 DeliverPacket(packet, sizeof(packet)); | 2721 DeliverPacket(packet, sizeof(packet)); |
2694 EXPECT_TRUE(voe_.CheckPacket(signalled_channel_num, packet, sizeof(packet))); | 2722 EXPECT_TRUE(call_.GetAudioReceiveStream(signaled_ssrc)->VerifyLastPacket( |
2723 packet, sizeof(packet))); | |
2695 | 2724 |
2696 // Note that the first unknown SSRC cannot be 0, because we only support | 2725 // Note that the first unknown SSRC cannot be 0, because we only support |
2697 // creating receive streams for SSRC!=0. | 2726 // creating receive streams for SSRC!=0. |
2698 rtc::SetBE32(&packet[8], 7011); | 2727 const uint32_t unsignaled_ssrc = 7011; |
2728 rtc::SetBE32(&packet[8], unsignaled_ssrc); | |
2699 DeliverPacket(packet, sizeof(packet)); | 2729 DeliverPacket(packet, sizeof(packet)); |
2700 int channel_num = voe_.GetLastChannel(); | 2730 EXPECT_TRUE(call_.GetAudioReceiveStream(unsignaled_ssrc)->VerifyLastPacket( |
2701 EXPECT_NE(channel_num, signalled_channel_num); | 2731 packet, sizeof(packet))); |
2702 EXPECT_TRUE(voe_.CheckPacket(channel_num, packet, sizeof(packet))); | |
2703 // Once we have the default channel, SSRC==0 will be ok. | |
2704 for (uint32_t ssrc = 0; ssrc < 20; ssrc += 2) { | |
2705 rtc::SetBE32(&packet[8], ssrc); | |
2706 DeliverPacket(packet, sizeof(packet)); | |
2707 EXPECT_TRUE(voe_.CheckPacket(channel_num, packet, sizeof(packet))); | |
2708 } | |
2709 } | 2732 } |
2710 | 2733 |
2711 // Test that we properly handle failures to add a receive stream. | 2734 // Test that we properly handle failures to add a receive stream. |
2712 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamFail) { | 2735 TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamFail) { |
2713 EXPECT_TRUE(SetupChannel()); | 2736 EXPECT_TRUE(SetupChannel()); |
2714 voe_.set_fail_create_channel(true); | 2737 voe_.set_fail_create_channel(true); |
2715 EXPECT_FALSE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2738 EXPECT_FALSE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); |
2716 } | 2739 } |
2717 | 2740 |
2718 // Test that we properly handle failures to add a send stream. | 2741 // 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) { | 3587 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { |
3565 cricket::WebRtcVoiceEngine engine(nullptr); | 3588 cricket::WebRtcVoiceEngine engine(nullptr); |
3566 std::unique_ptr<webrtc::Call> call( | 3589 std::unique_ptr<webrtc::Call> call( |
3567 webrtc::Call::Create(webrtc::Call::Config())); | 3590 webrtc::Call::Create(webrtc::Call::Config())); |
3568 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), | 3591 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), |
3569 cricket::AudioOptions(), call.get()); | 3592 cricket::AudioOptions(), call.get()); |
3570 cricket::AudioRecvParameters parameters; | 3593 cricket::AudioRecvParameters parameters; |
3571 parameters.codecs = engine.codecs(); | 3594 parameters.codecs = engine.codecs(); |
3572 EXPECT_TRUE(channel.SetRecvParameters(parameters)); | 3595 EXPECT_TRUE(channel.SetRecvParameters(parameters)); |
3573 } | 3596 } |
OLD | NEW |