| 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.Set(true); | 878 parameters.options.conference_mode = rtc::Maybe<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.Set(true); | 929 parameters.options.conference_mode = rtc::Maybe<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.Set(true); | 1239 parameters.options.conference_mode = rtc::Maybe<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.Set(true); | 1749 parameters.options.conference_mode = rtc::Maybe<bool>(true); |
| 1750 parameters.options.unsignalled_recv_stream_limit.Set(1); | 1750 parameters.options.unsignalled_recv_stream_limit = rtc::Maybe<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.Set(true); | 1783 vmo.conference_mode = rtc::Maybe<bool>(true); |
| 1784 vmo.unsignalled_recv_stream_limit.Set(1); | 1784 vmo.unsignalled_recv_stream_limit = rtc::Maybe<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 |