OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2014 Google Inc. | 3 * Copyright 2014 Google Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
868 EXPECT_TRUE(channel_->GetStats(&info)); | 868 EXPECT_TRUE(channel_->GetStats(&info)); |
869 return info.receivers[i]; | 869 return info.receivers[i]; |
870 } | 870 } |
871 | 871 |
872 // Test that stats work properly for a conf call with multiple recv streams. | 872 // Test that stats work properly for a conf call with multiple recv streams. |
873 void GetStatsMultipleRecvStreams() { | 873 void GetStatsMultipleRecvStreams() { |
874 cricket::FakeVideoRenderer renderer1, renderer2; | 874 cricket::FakeVideoRenderer renderer1, renderer2; |
875 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 875 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
876 cricket::VideoSendParameters parameters; | 876 cricket::VideoSendParameters parameters; |
877 parameters.codecs.push_back(DefaultCodec()); | 877 parameters.codecs.push_back(DefaultCodec()); |
878 parameters.options.conference_mode = rtc::Maybe<bool>(true); | 878 parameters.options.conference_mode = rtc::Optional<bool>(true); |
879 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 879 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
880 EXPECT_TRUE(SetSend(true)); | 880 EXPECT_TRUE(SetSend(true)); |
881 EXPECT_TRUE(channel_->AddRecvStream( | 881 EXPECT_TRUE(channel_->AddRecvStream( |
882 cricket::StreamParams::CreateLegacy(1))); | 882 cricket::StreamParams::CreateLegacy(1))); |
883 EXPECT_TRUE(channel_->AddRecvStream( | 883 EXPECT_TRUE(channel_->AddRecvStream( |
884 cricket::StreamParams::CreateLegacy(2))); | 884 cricket::StreamParams::CreateLegacy(2))); |
885 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); | 885 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); |
886 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); | 886 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); |
887 EXPECT_EQ(0, renderer1.num_rendered_frames()); | 887 EXPECT_EQ(0, renderer1.num_rendered_frames()); |
888 EXPECT_EQ(0, renderer2.num_rendered_frames()); | 888 EXPECT_EQ(0, renderer2.num_rendered_frames()); |
(...skipping 30 matching lines...) Expand all Loading... |
919 EXPECT_EQ(DefaultCodec().height, GetReceiverStats(i).frame_height); | 919 EXPECT_EQ(DefaultCodec().height, GetReceiverStats(i).frame_height); |
920 } | 920 } |
921 } | 921 } |
922 // Test that stats work properly for a conf call with multiple send streams. | 922 // Test that stats work properly for a conf call with multiple send streams. |
923 void GetStatsMultipleSendStreams() { | 923 void GetStatsMultipleSendStreams() { |
924 // Normal setup; note that we set the SSRC explicitly to ensure that | 924 // Normal setup; note that we set the SSRC explicitly to ensure that |
925 // it will come first in the senders map. | 925 // it will come first in the senders map. |
926 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 926 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
927 cricket::VideoSendParameters parameters; | 927 cricket::VideoSendParameters parameters; |
928 parameters.codecs.push_back(DefaultCodec()); | 928 parameters.codecs.push_back(DefaultCodec()); |
929 parameters.options.conference_mode = rtc::Maybe<bool>(true); | 929 parameters.options.conference_mode = rtc::Optional<bool>(true); |
930 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 930 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
931 EXPECT_TRUE(channel_->AddRecvStream( | 931 EXPECT_TRUE(channel_->AddRecvStream( |
932 cricket::StreamParams::CreateLegacy(kSsrc))); | 932 cricket::StreamParams::CreateLegacy(kSsrc))); |
933 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer_)); | 933 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer_)); |
934 channel_->UpdateAspectRatio(640, 400); | 934 channel_->UpdateAspectRatio(640, 400); |
935 EXPECT_TRUE(SetSend(true)); | 935 EXPECT_TRUE(SetSend(true)); |
936 EXPECT_TRUE(SendFrame()); | 936 EXPECT_TRUE(SendFrame()); |
937 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); | 937 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); |
938 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 938 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
939 | 939 |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1229 // Detach |renderer1| before exit as there might be frames come late. | 1229 // Detach |renderer1| before exit as there might be frames come late. |
1230 EXPECT_TRUE(channel_->SetRenderer(kSsrc, NULL)); | 1230 EXPECT_TRUE(channel_->SetRenderer(kSsrc, NULL)); |
1231 } | 1231 } |
1232 | 1232 |
1233 // Tests the behavior of incoming streams in a conference scenario. | 1233 // Tests the behavior of incoming streams in a conference scenario. |
1234 void SimulateConference() { | 1234 void SimulateConference() { |
1235 cricket::FakeVideoRenderer renderer1, renderer2; | 1235 cricket::FakeVideoRenderer renderer1, renderer2; |
1236 EXPECT_TRUE(SetDefaultCodec()); | 1236 EXPECT_TRUE(SetDefaultCodec()); |
1237 cricket::VideoSendParameters parameters; | 1237 cricket::VideoSendParameters parameters; |
1238 parameters.codecs.push_back(DefaultCodec()); | 1238 parameters.codecs.push_back(DefaultCodec()); |
1239 parameters.options.conference_mode = rtc::Maybe<bool>(true); | 1239 parameters.options.conference_mode = rtc::Optional<bool>(true); |
1240 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1240 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1241 EXPECT_TRUE(SetSend(true)); | 1241 EXPECT_TRUE(SetSend(true)); |
1242 EXPECT_TRUE(channel_->AddRecvStream( | 1242 EXPECT_TRUE(channel_->AddRecvStream( |
1243 cricket::StreamParams::CreateLegacy(1))); | 1243 cricket::StreamParams::CreateLegacy(1))); |
1244 EXPECT_TRUE(channel_->AddRecvStream( | 1244 EXPECT_TRUE(channel_->AddRecvStream( |
1245 cricket::StreamParams::CreateLegacy(2))); | 1245 cricket::StreamParams::CreateLegacy(2))); |
1246 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); | 1246 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); |
1247 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); | 1247 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); |
1248 EXPECT_EQ(0, renderer1.num_rendered_frames()); | 1248 EXPECT_EQ(0, renderer1.num_rendered_frames()); |
1249 EXPECT_EQ(0, renderer2.num_rendered_frames()); | 1249 EXPECT_EQ(0, renderer2.num_rendered_frames()); |
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1739 EXPECT_TRUE(channel_->SetCapturer(new_ssrc, video_capturer_.get())); | 1739 EXPECT_TRUE(channel_->SetCapturer(new_ssrc, video_capturer_.get())); |
1740 | 1740 |
1741 SendAndReceive(codec); | 1741 SendAndReceive(codec); |
1742 EXPECT_TRUE(channel_->RemoveSendStream(new_ssrc)); | 1742 EXPECT_TRUE(channel_->RemoveSendStream(new_ssrc)); |
1743 EXPECT_EQ(0u, channel_->GetDefaultSendChannelSsrc()); | 1743 EXPECT_EQ(0u, channel_->GetDefaultSendChannelSsrc()); |
1744 } | 1744 } |
1745 | 1745 |
1746 // Tests that we can send and receive frames with early receive. | 1746 // Tests that we can send and receive frames with early receive. |
1747 void TwoStreamsSendAndUnsignalledRecv(const cricket::VideoCodec& codec) { | 1747 void TwoStreamsSendAndUnsignalledRecv(const cricket::VideoCodec& codec) { |
1748 cricket::VideoSendParameters parameters; | 1748 cricket::VideoSendParameters parameters; |
1749 parameters.options.conference_mode = rtc::Maybe<bool>(true); | 1749 parameters.options.conference_mode = rtc::Optional<bool>(true); |
1750 parameters.options.unsignalled_recv_stream_limit = rtc::Maybe<int>(1); | 1750 parameters.options.unsignalled_recv_stream_limit = rtc::Optional<int>(1); |
1751 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1751 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1752 SetUpSecondStreamWithNoRecv(); | 1752 SetUpSecondStreamWithNoRecv(); |
1753 // Test sending and receiving on first stream. | 1753 // Test sending and receiving on first stream. |
1754 Send(codec); | 1754 Send(codec); |
1755 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); | 1755 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); |
1756 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); | 1756 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); |
1757 // The first send is not expected to yield frames, because the ssrc | 1757 // The first send is not expected to yield frames, because the ssrc |
1758 // is not signalled yet. With unsignalled recv enabled, we will drop frames | 1758 // is not signalled yet. With unsignalled recv enabled, we will drop frames |
1759 // instead of packets. | 1759 // instead of packets. |
1760 EXPECT_EQ(0, renderer2_.num_rendered_frames()); | 1760 EXPECT_EQ(0, renderer2_.num_rendered_frames()); |
(...skipping 12 matching lines...) Expand all Loading... |
1773 // failed. | 1773 // failed. |
1774 EXPECT_EQ_WAIT(1, renderer2_.num_rendered_frames(), kTimeout); | 1774 EXPECT_EQ_WAIT(1, renderer2_.num_rendered_frames(), kTimeout); |
1775 } | 1775 } |
1776 | 1776 |
1777 // Tests that we drop key frames when conference mode is enabled and we | 1777 // Tests that we drop key frames when conference mode is enabled and we |
1778 // receive rtp packets on unsignalled streams. Removal of a unsignalled recv | 1778 // receive rtp packets on unsignalled streams. Removal of a unsignalled recv |
1779 // stream is successful. | 1779 // stream is successful. |
1780 void TwoStreamsAddAndRemoveUnsignalledRecv( | 1780 void TwoStreamsAddAndRemoveUnsignalledRecv( |
1781 const cricket::VideoCodec& codec) { | 1781 const cricket::VideoCodec& codec) { |
1782 cricket::VideoOptions vmo; | 1782 cricket::VideoOptions vmo; |
1783 vmo.conference_mode = rtc::Maybe<bool>(true); | 1783 vmo.conference_mode = rtc::Optional<bool>(true); |
1784 vmo.unsignalled_recv_stream_limit = rtc::Maybe<int>(1); | 1784 vmo.unsignalled_recv_stream_limit = rtc::Optional<int>(1); |
1785 EXPECT_TRUE(channel_->SetOptions(vmo)); | 1785 EXPECT_TRUE(channel_->SetOptions(vmo)); |
1786 SetUpSecondStreamWithNoRecv(); | 1786 SetUpSecondStreamWithNoRecv(); |
1787 // Sending and receiving on first stream. | 1787 // Sending and receiving on first stream. |
1788 Send(codec); | 1788 Send(codec); |
1789 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); | 1789 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); |
1790 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); | 1790 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); |
1791 // The first send is not expected to yield frames, because the ssrc | 1791 // The first send is not expected to yield frames, because the ssrc |
1792 // is no signalled yet. With unsignalled recv enabled, we will drop frames | 1792 // is no signalled yet. With unsignalled recv enabled, we will drop frames |
1793 // instead of packets. | 1793 // instead of packets. |
1794 EXPECT_EQ(0, renderer2_.num_rendered_frames()); | 1794 EXPECT_EQ(0, renderer2_.num_rendered_frames()); |
(...skipping 11 matching lines...) Expand all Loading... |
1806 rtc::scoped_ptr<C> channel_; | 1806 rtc::scoped_ptr<C> channel_; |
1807 cricket::FakeNetworkInterface network_interface_; | 1807 cricket::FakeNetworkInterface network_interface_; |
1808 cricket::FakeVideoRenderer renderer_; | 1808 cricket::FakeVideoRenderer renderer_; |
1809 cricket::VideoMediaChannel::Error media_error_; | 1809 cricket::VideoMediaChannel::Error media_error_; |
1810 | 1810 |
1811 // Used by test cases where 2 streams are run on the same channel. | 1811 // Used by test cases where 2 streams are run on the same channel. |
1812 cricket::FakeVideoRenderer renderer2_; | 1812 cricket::FakeVideoRenderer renderer2_; |
1813 }; | 1813 }; |
1814 | 1814 |
1815 #endif // TALK_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT | 1815 #endif // TALK_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT |
OLD | NEW |