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 742 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
753 EXPECT_TRUE(SetSend(true)); | 753 EXPECT_TRUE(SetSend(true)); |
754 EXPECT_TRUE(SendFrame()); | 754 EXPECT_TRUE(SendFrame()); |
755 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); | 755 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); |
756 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); | 756 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); |
757 EXPECT_EQ(codec.id, GetPayloadType(p.get())); | 757 EXPECT_EQ(codec.id, GetPayloadType(p.get())); |
758 } | 758 } |
759 // Tests that we can send and receive frames. | 759 // Tests that we can send and receive frames. |
760 void SendAndReceive(const cricket::VideoCodec& codec) { | 760 void SendAndReceive(const cricket::VideoCodec& codec) { |
761 EXPECT_TRUE(SetOneCodec(codec)); | 761 EXPECT_TRUE(SetOneCodec(codec)); |
762 EXPECT_TRUE(SetSend(true)); | 762 EXPECT_TRUE(SetSend(true)); |
763 EXPECT_TRUE(channel_->SetRender(true)); | |
764 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 763 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
765 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 764 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
766 EXPECT_TRUE(SendFrame()); | 765 EXPECT_TRUE(SendFrame()); |
767 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); | 766 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); |
768 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); | 767 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); |
769 EXPECT_EQ(codec.id, GetPayloadType(p.get())); | 768 EXPECT_EQ(codec.id, GetPayloadType(p.get())); |
770 } | 769 } |
771 // Tests that we only get a VideoRenderer::SetSize() callback when needed. | 770 // Tests that we only get a VideoRenderer::SetSize() callback when needed. |
772 void SendManyResizeOnce() { | 771 void SendManyResizeOnce() { |
773 cricket::VideoCodec codec(DefaultCodec()); | 772 cricket::VideoCodec codec(DefaultCodec()); |
774 EXPECT_TRUE(SetOneCodec(codec)); | 773 EXPECT_TRUE(SetOneCodec(codec)); |
775 EXPECT_TRUE(SetSend(true)); | 774 EXPECT_TRUE(SetSend(true)); |
776 EXPECT_TRUE(channel_->SetRender(true)); | |
777 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 775 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
778 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 776 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
779 EXPECT_TRUE(WaitAndSendFrame(30)); | 777 EXPECT_TRUE(WaitAndSendFrame(30)); |
780 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); | 778 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); |
781 EXPECT_TRUE(WaitAndSendFrame(30)); | 779 EXPECT_TRUE(WaitAndSendFrame(30)); |
782 EXPECT_FRAME_WAIT(2, codec.width, codec.height, kTimeout); | 780 EXPECT_FRAME_WAIT(2, codec.width, codec.height, kTimeout); |
783 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); | 781 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); |
784 EXPECT_EQ(codec.id, GetPayloadType(p.get())); | 782 EXPECT_EQ(codec.id, GetPayloadType(p.get())); |
785 EXPECT_EQ(1, renderer_.num_set_sizes()); | 783 EXPECT_EQ(1, renderer_.num_set_sizes()); |
786 | 784 |
787 codec.width /= 2; | 785 codec.width /= 2; |
788 codec.height /= 2; | 786 codec.height /= 2; |
789 EXPECT_TRUE(SetOneCodec(codec)); | 787 EXPECT_TRUE(SetOneCodec(codec)); |
790 EXPECT_TRUE(WaitAndSendFrame(30)); | 788 EXPECT_TRUE(WaitAndSendFrame(30)); |
791 EXPECT_FRAME_WAIT(3, codec.width, codec.height, kTimeout); | 789 EXPECT_FRAME_WAIT(3, codec.width, codec.height, kTimeout); |
792 EXPECT_EQ(2, renderer_.num_set_sizes()); | 790 EXPECT_EQ(2, renderer_.num_set_sizes()); |
793 } | 791 } |
794 void SendReceiveManyAndGetStats(const cricket::VideoCodec& codec, | 792 void SendReceiveManyAndGetStats(const cricket::VideoCodec& codec, |
795 int duration_sec, int fps) { | 793 int duration_sec, int fps) { |
796 EXPECT_TRUE(SetOneCodec(codec)); | 794 EXPECT_TRUE(SetOneCodec(codec)); |
797 EXPECT_TRUE(SetSend(true)); | 795 EXPECT_TRUE(SetSend(true)); |
798 EXPECT_TRUE(channel_->SetRender(true)); | |
799 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 796 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
800 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 797 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
801 for (int i = 0; i < duration_sec; ++i) { | 798 for (int i = 0; i < duration_sec; ++i) { |
802 for (int frame = 1; frame <= fps; ++frame) { | 799 for (int frame = 1; frame <= fps; ++frame) { |
803 EXPECT_TRUE(WaitAndSendFrame(1000 / fps)); | 800 EXPECT_TRUE(WaitAndSendFrame(1000 / fps)); |
804 EXPECT_FRAME_WAIT(frame + i * fps, codec.width, codec.height, kTimeout); | 801 EXPECT_FRAME_WAIT(frame + i * fps, codec.width, codec.height, kTimeout); |
805 } | 802 } |
806 } | 803 } |
807 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); | 804 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); |
808 EXPECT_EQ(codec.id, GetPayloadType(p.get())); | 805 EXPECT_EQ(codec.id, GetPayloadType(p.get())); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
857 cricket::VideoOptions vmo; | 854 cricket::VideoOptions vmo; |
858 vmo.conference_mode.Set(true); | 855 vmo.conference_mode.Set(true); |
859 EXPECT_TRUE(channel_->SetOptions(vmo)); | 856 EXPECT_TRUE(channel_->SetOptions(vmo)); |
860 EXPECT_TRUE(SetSend(true)); | 857 EXPECT_TRUE(SetSend(true)); |
861 EXPECT_TRUE(channel_->AddRecvStream( | 858 EXPECT_TRUE(channel_->AddRecvStream( |
862 cricket::StreamParams::CreateLegacy(1))); | 859 cricket::StreamParams::CreateLegacy(1))); |
863 EXPECT_TRUE(channel_->AddRecvStream( | 860 EXPECT_TRUE(channel_->AddRecvStream( |
864 cricket::StreamParams::CreateLegacy(2))); | 861 cricket::StreamParams::CreateLegacy(2))); |
865 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); | 862 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); |
866 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); | 863 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); |
867 EXPECT_TRUE(channel_->SetRender(true)); | |
868 EXPECT_EQ(0, renderer1.num_rendered_frames()); | 864 EXPECT_EQ(0, renderer1.num_rendered_frames()); |
869 EXPECT_EQ(0, renderer2.num_rendered_frames()); | 865 EXPECT_EQ(0, renderer2.num_rendered_frames()); |
870 std::vector<uint32> ssrcs; | 866 std::vector<uint32> ssrcs; |
871 ssrcs.push_back(1); | 867 ssrcs.push_back(1); |
872 ssrcs.push_back(2); | 868 ssrcs.push_back(2); |
873 network_interface_.SetConferenceMode(true, ssrcs); | 869 network_interface_.SetConferenceMode(true, ssrcs); |
874 EXPECT_TRUE(SendFrame()); | 870 EXPECT_TRUE(SendFrame()); |
875 EXPECT_FRAME_ON_RENDERER_WAIT( | 871 EXPECT_FRAME_ON_RENDERER_WAIT( |
876 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 872 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
877 EXPECT_FRAME_ON_RENDERER_WAIT( | 873 EXPECT_FRAME_ON_RENDERER_WAIT( |
(...skipping 25 matching lines...) Expand all Loading... |
903 // it will come first in the senders map. | 899 // it will come first in the senders map. |
904 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 900 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
905 cricket::VideoOptions vmo; | 901 cricket::VideoOptions vmo; |
906 vmo.conference_mode.Set(true); | 902 vmo.conference_mode.Set(true); |
907 EXPECT_TRUE(channel_->SetOptions(vmo)); | 903 EXPECT_TRUE(channel_->SetOptions(vmo)); |
908 EXPECT_TRUE(channel_->AddRecvStream( | 904 EXPECT_TRUE(channel_->AddRecvStream( |
909 cricket::StreamParams::CreateLegacy(kSsrc))); | 905 cricket::StreamParams::CreateLegacy(kSsrc))); |
910 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer_)); | 906 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer_)); |
911 channel_->UpdateAspectRatio(640, 400); | 907 channel_->UpdateAspectRatio(640, 400); |
912 EXPECT_TRUE(SetSend(true)); | 908 EXPECT_TRUE(SetSend(true)); |
913 EXPECT_TRUE(channel_->SetRender(true)); | |
914 EXPECT_TRUE(SendFrame()); | 909 EXPECT_TRUE(SendFrame()); |
915 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); | 910 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); |
916 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 911 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
917 | 912 |
918 // Add an additional capturer, and hook up a renderer to receive it. | 913 // Add an additional capturer, and hook up a renderer to receive it. |
919 cricket::FakeVideoRenderer renderer2; | 914 cricket::FakeVideoRenderer renderer2; |
920 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( | 915 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( |
921 CreateFakeVideoCapturer()); | 916 CreateFakeVideoCapturer()); |
922 capturer->SetScreencast(true); | 917 capturer->SetScreencast(true); |
923 const int kTestWidth = 160; | 918 const int kTestWidth = 160; |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1016 void SetRenderer() { | 1011 void SetRenderer() { |
1017 uint8 data1[] = { | 1012 uint8 data1[] = { |
1018 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | 1013 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
1019 }; | 1014 }; |
1020 | 1015 |
1021 rtc::Buffer packet1(data1, sizeof(data1)); | 1016 rtc::Buffer packet1(data1, sizeof(data1)); |
1022 rtc::SetBE32(packet1.data() + 8, kSsrc); | 1017 rtc::SetBE32(packet1.data() + 8, kSsrc); |
1023 channel_->SetRenderer(kDefaultReceiveSsrc, NULL); | 1018 channel_->SetRenderer(kDefaultReceiveSsrc, NULL); |
1024 EXPECT_TRUE(SetDefaultCodec()); | 1019 EXPECT_TRUE(SetDefaultCodec()); |
1025 EXPECT_TRUE(SetSend(true)); | 1020 EXPECT_TRUE(SetSend(true)); |
1026 EXPECT_TRUE(channel_->SetRender(true)); | |
1027 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1021 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1028 channel_->OnPacketReceived(&packet1, rtc::PacketTime()); | 1022 channel_->OnPacketReceived(&packet1, rtc::PacketTime()); |
1029 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1023 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1030 EXPECT_TRUE(SendFrame()); | 1024 EXPECT_TRUE(SendFrame()); |
1031 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 1025 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
1032 } | 1026 } |
1033 | 1027 |
1034 // Tests empty StreamParams is rejected. | 1028 // Tests empty StreamParams is rejected. |
1035 void RejectEmptyStreamParams() { | 1029 void RejectEmptyStreamParams() { |
1036 // Remove the send stream that was added during Setup. | 1030 // Remove the send stream that was added during Setup. |
1037 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc)); | 1031 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc)); |
1038 | 1032 |
1039 cricket::StreamParams empty; | 1033 cricket::StreamParams empty; |
1040 EXPECT_FALSE(channel_->AddSendStream(empty)); | 1034 EXPECT_FALSE(channel_->AddSendStream(empty)); |
1041 EXPECT_TRUE(channel_->AddSendStream( | 1035 EXPECT_TRUE(channel_->AddSendStream( |
1042 cricket::StreamParams::CreateLegacy(789u))); | 1036 cricket::StreamParams::CreateLegacy(789u))); |
1043 } | 1037 } |
1044 | 1038 |
1045 // Tests setting up and configuring a send stream. | 1039 // Tests setting up and configuring a send stream. |
1046 void AddRemoveSendStreams() { | 1040 void AddRemoveSendStreams() { |
1047 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 1041 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
1048 EXPECT_TRUE(SetSend(true)); | 1042 EXPECT_TRUE(SetSend(true)); |
1049 EXPECT_TRUE(channel_->SetRender(true)); | |
1050 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1043 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1051 EXPECT_TRUE(SendFrame()); | 1044 EXPECT_TRUE(SendFrame()); |
1052 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 1045 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
1053 EXPECT_GE(2, NumRtpPackets()); | 1046 EXPECT_GE(2, NumRtpPackets()); |
1054 uint32 ssrc = 0; | 1047 uint32 ssrc = 0; |
1055 size_t last_packet = NumRtpPackets() - 1; | 1048 size_t last_packet = NumRtpPackets() - 1; |
1056 rtc::scoped_ptr<const rtc::Buffer> | 1049 rtc::scoped_ptr<const rtc::Buffer> |
1057 p(GetRtpPacket(static_cast<int>(last_packet))); | 1050 p(GetRtpPacket(static_cast<int>(last_packet))); |
1058 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); | 1051 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); |
1059 EXPECT_EQ(kSsrc, ssrc); | 1052 EXPECT_EQ(kSsrc, ssrc); |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1185 EXPECT_FALSE(channel_->GetRenderer(1, &renderer)); | 1178 EXPECT_FALSE(channel_->GetRenderer(1, &renderer)); |
1186 EXPECT_FALSE(channel_->GetRenderer(2, &renderer)); | 1179 EXPECT_FALSE(channel_->GetRenderer(2, &renderer)); |
1187 } | 1180 } |
1188 | 1181 |
1189 // Test that no frames are rendered after the receive stream have been | 1182 // Test that no frames are rendered after the receive stream have been |
1190 // removed. | 1183 // removed. |
1191 void AddRemoveRecvStreamAndRender() { | 1184 void AddRemoveRecvStreamAndRender() { |
1192 cricket::FakeVideoRenderer renderer1; | 1185 cricket::FakeVideoRenderer renderer1; |
1193 EXPECT_TRUE(SetDefaultCodec()); | 1186 EXPECT_TRUE(SetDefaultCodec()); |
1194 EXPECT_TRUE(SetSend(true)); | 1187 EXPECT_TRUE(SetSend(true)); |
1195 EXPECT_TRUE(channel_->SetRender(true)); | |
1196 EXPECT_TRUE(channel_->AddRecvStream( | 1188 EXPECT_TRUE(channel_->AddRecvStream( |
1197 cricket::StreamParams::CreateLegacy(kSsrc))); | 1189 cricket::StreamParams::CreateLegacy(kSsrc))); |
1198 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer1)); | 1190 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer1)); |
1199 | 1191 |
1200 EXPECT_TRUE(SendFrame()); | 1192 EXPECT_TRUE(SendFrame()); |
1201 EXPECT_FRAME_ON_RENDERER_WAIT( | 1193 EXPECT_FRAME_ON_RENDERER_WAIT( |
1202 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 1194 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
1203 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc)); | 1195 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc)); |
1204 // Send three more frames. This is to avoid that the test might be flaky | 1196 // Send three more frames. This is to avoid that the test might be flaky |
1205 // due to frame dropping. | 1197 // due to frame dropping. |
(...skipping 23 matching lines...) Expand all Loading... |
1229 } | 1221 } |
1230 | 1222 |
1231 // Tests the behavior of incoming streams in a conference scenario. | 1223 // Tests the behavior of incoming streams in a conference scenario. |
1232 void SimulateConference() { | 1224 void SimulateConference() { |
1233 cricket::FakeVideoRenderer renderer1, renderer2; | 1225 cricket::FakeVideoRenderer renderer1, renderer2; |
1234 EXPECT_TRUE(SetDefaultCodec()); | 1226 EXPECT_TRUE(SetDefaultCodec()); |
1235 cricket::VideoOptions vmo; | 1227 cricket::VideoOptions vmo; |
1236 vmo.conference_mode.Set(true); | 1228 vmo.conference_mode.Set(true); |
1237 EXPECT_TRUE(channel_->SetOptions(vmo)); | 1229 EXPECT_TRUE(channel_->SetOptions(vmo)); |
1238 EXPECT_TRUE(SetSend(true)); | 1230 EXPECT_TRUE(SetSend(true)); |
1239 EXPECT_TRUE(channel_->SetRender(true)); | |
1240 EXPECT_TRUE(channel_->AddRecvStream( | 1231 EXPECT_TRUE(channel_->AddRecvStream( |
1241 cricket::StreamParams::CreateLegacy(1))); | 1232 cricket::StreamParams::CreateLegacy(1))); |
1242 EXPECT_TRUE(channel_->AddRecvStream( | 1233 EXPECT_TRUE(channel_->AddRecvStream( |
1243 cricket::StreamParams::CreateLegacy(2))); | 1234 cricket::StreamParams::CreateLegacy(2))); |
1244 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); | 1235 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); |
1245 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); | 1236 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); |
1246 EXPECT_EQ(0, renderer1.num_rendered_frames()); | 1237 EXPECT_EQ(0, renderer1.num_rendered_frames()); |
1247 EXPECT_EQ(0, renderer2.num_rendered_frames()); | 1238 EXPECT_EQ(0, renderer2.num_rendered_frames()); |
1248 std::vector<uint32> ssrcs; | 1239 std::vector<uint32> ssrcs; |
1249 ssrcs.push_back(1); | 1240 ssrcs.push_back(1); |
(...skipping 16 matching lines...) Expand all Loading... |
1266 } | 1257 } |
1267 | 1258 |
1268 // Tests that we can add and remove capturers and frames are sent out properly | 1259 // Tests that we can add and remove capturers and frames are sent out properly |
1269 void AddRemoveCapturer() { | 1260 void AddRemoveCapturer() { |
1270 cricket::VideoCodec codec = DefaultCodec(); | 1261 cricket::VideoCodec codec = DefaultCodec(); |
1271 codec.width = 320; | 1262 codec.width = 320; |
1272 codec.height = 240; | 1263 codec.height = 240; |
1273 const int time_between_send = TimeBetweenSend(codec); | 1264 const int time_between_send = TimeBetweenSend(codec); |
1274 EXPECT_TRUE(SetOneCodec(codec)); | 1265 EXPECT_TRUE(SetOneCodec(codec)); |
1275 EXPECT_TRUE(SetSend(true)); | 1266 EXPECT_TRUE(SetSend(true)); |
1276 EXPECT_TRUE(channel_->SetRender(true)); | |
1277 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1267 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1278 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1268 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1279 EXPECT_TRUE(SendFrame()); | 1269 EXPECT_TRUE(SendFrame()); |
1280 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); | 1270 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); |
1281 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( | 1271 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( |
1282 CreateFakeVideoCapturer()); | 1272 CreateFakeVideoCapturer()); |
1283 capturer->SetScreencast(true); | 1273 capturer->SetScreencast(true); |
1284 cricket::VideoFormat format(480, 360, | 1274 cricket::VideoFormat format(480, 360, |
1285 cricket::VideoFormat::FpsToInterval(30), | 1275 cricket::VideoFormat::FpsToInterval(30), |
1286 cricket::FOURCC_I420); | 1276 cricket::FOURCC_I420); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1328 EXPECT_TRUE(capturer->CaptureCustomFrame(format.width, format.height, | 1318 EXPECT_TRUE(capturer->CaptureCustomFrame(format.width, format.height, |
1329 cricket::FOURCC_I420)); | 1319 cricket::FOURCC_I420)); |
1330 } | 1320 } |
1331 } | 1321 } |
1332 | 1322 |
1333 // Tests that if RemoveCapturer is called without a capturer ever being | 1323 // Tests that if RemoveCapturer is called without a capturer ever being |
1334 // added, the plugin shouldn't crash (and no black frame should be sent). | 1324 // added, the plugin shouldn't crash (and no black frame should be sent). |
1335 void RemoveCapturerWithoutAdd() { | 1325 void RemoveCapturerWithoutAdd() { |
1336 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 1326 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
1337 EXPECT_TRUE(SetSend(true)); | 1327 EXPECT_TRUE(SetSend(true)); |
1338 EXPECT_TRUE(channel_->SetRender(true)); | |
1339 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1328 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1340 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1329 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1341 EXPECT_TRUE(SendFrame()); | 1330 EXPECT_TRUE(SendFrame()); |
1342 EXPECT_FRAME_WAIT(1, 640, 400, kTimeout); | 1331 EXPECT_FRAME_WAIT(1, 640, 400, kTimeout); |
1343 // Wait for one frame so they don't get dropped because we send frames too | 1332 // Wait for one frame so they don't get dropped because we send frames too |
1344 // tightly. | 1333 // tightly. |
1345 rtc::Thread::Current()->ProcessMessages(30); | 1334 rtc::Thread::Current()->ProcessMessages(30); |
1346 // Remove the capturer. | 1335 // Remove the capturer. |
1347 EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); | 1336 EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); |
1348 // Wait for one black frame for removing the capturer. | 1337 // Wait for one black frame for removing the capturer. |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1393 capturer2->SetScreencast(true); | 1382 capturer2->SetScreencast(true); |
1394 EXPECT_EQ(cricket::CS_RUNNING, capturer2->Start(capture_format)); | 1383 EXPECT_EQ(cricket::CS_RUNNING, capturer2->Start(capture_format)); |
1395 // State for all the streams. | 1384 // State for all the streams. |
1396 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 1385 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
1397 // A limitation in the lmi implementation requires that SetCapturer() is | 1386 // A limitation in the lmi implementation requires that SetCapturer() is |
1398 // called after SetOneCodec(). | 1387 // called after SetOneCodec(). |
1399 // TODO(hellner): this seems like an unnecessary constraint, fix it. | 1388 // TODO(hellner): this seems like an unnecessary constraint, fix it. |
1400 EXPECT_TRUE(channel_->SetCapturer(1, capturer1.get())); | 1389 EXPECT_TRUE(channel_->SetCapturer(1, capturer1.get())); |
1401 EXPECT_TRUE(channel_->SetCapturer(2, capturer2.get())); | 1390 EXPECT_TRUE(channel_->SetCapturer(2, capturer2.get())); |
1402 EXPECT_TRUE(SetSend(true)); | 1391 EXPECT_TRUE(SetSend(true)); |
1403 EXPECT_TRUE(channel_->SetRender(true)); | |
1404 // Test capturer associated with engine. | 1392 // Test capturer associated with engine. |
1405 const int kTestWidth = 160; | 1393 const int kTestWidth = 160; |
1406 const int kTestHeight = 120; | 1394 const int kTestHeight = 120; |
1407 EXPECT_TRUE(capturer1->CaptureCustomFrame( | 1395 EXPECT_TRUE(capturer1->CaptureCustomFrame( |
1408 kTestWidth, kTestHeight, cricket::FOURCC_I420)); | 1396 kTestWidth, kTestHeight, cricket::FOURCC_I420)); |
1409 EXPECT_FRAME_ON_RENDERER_WAIT( | 1397 EXPECT_FRAME_ON_RENDERER_WAIT( |
1410 renderer1, 1, kTestWidth, kTestHeight, kTimeout); | 1398 renderer1, 1, kTestWidth, kTestHeight, kTimeout); |
1411 // Capture a frame with additional capturer2, frames should be received | 1399 // Capture a frame with additional capturer2, frames should be received |
1412 EXPECT_TRUE(capturer2->CaptureCustomFrame( | 1400 EXPECT_TRUE(capturer2->CaptureCustomFrame( |
1413 kTestWidth, kTestHeight, cricket::FOURCC_I420)); | 1401 kTestWidth, kTestHeight, cricket::FOURCC_I420)); |
(...skipping 16 matching lines...) Expand all Loading... |
1430 const int kScaledHeight = 2500; | 1418 const int kScaledHeight = 2500; |
1431 | 1419 |
1432 cricket::VideoCodec codec(DefaultCodec()); | 1420 cricket::VideoCodec codec(DefaultCodec()); |
1433 EXPECT_TRUE(SetOneCodec(codec)); | 1421 EXPECT_TRUE(SetOneCodec(codec)); |
1434 EXPECT_TRUE(SetSend(true)); | 1422 EXPECT_TRUE(SetSend(true)); |
1435 | 1423 |
1436 cricket::FakeVideoRenderer renderer; | 1424 cricket::FakeVideoRenderer renderer; |
1437 EXPECT_TRUE(channel_->AddRecvStream( | 1425 EXPECT_TRUE(channel_->AddRecvStream( |
1438 cricket::StreamParams::CreateLegacy(kSsrc))); | 1426 cricket::StreamParams::CreateLegacy(kSsrc))); |
1439 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer)); | 1427 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer)); |
1440 EXPECT_TRUE(channel_->SetRender(true)); | |
1441 EXPECT_EQ(0, renderer.num_rendered_frames()); | 1428 EXPECT_EQ(0, renderer.num_rendered_frames()); |
1442 | 1429 |
1443 EXPECT_TRUE(SendFrame()); | 1430 EXPECT_TRUE(SendFrame()); |
1444 EXPECT_GT_FRAME_ON_RENDERER_WAIT( | 1431 EXPECT_GT_FRAME_ON_RENDERER_WAIT( |
1445 renderer, 1, codec.width, codec.height, kTimeout); | 1432 renderer, 1, codec.width, codec.height, kTimeout); |
1446 | 1433 |
1447 // Registering an external capturer is currently the same as screen casting | 1434 // Registering an external capturer is currently the same as screen casting |
1448 // (update the test when this changes). | 1435 // (update the test when this changes). |
1449 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( | 1436 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( |
1450 CreateFakeVideoCapturer()); | 1437 CreateFakeVideoCapturer()); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1493 EXPECT_FRAME_WAIT(2, codec.width, codec.height, kTimeout); | 1480 EXPECT_FRAME_WAIT(2, codec.width, codec.height, kTimeout); |
1494 } | 1481 } |
1495 // Tests that we can drop all frames properly. | 1482 // Tests that we can drop all frames properly. |
1496 void AdaptDropAllFrames() { | 1483 void AdaptDropAllFrames() { |
1497 // Set the channel codec's resolution to 0, which will require the adapter | 1484 // Set the channel codec's resolution to 0, which will require the adapter |
1498 // to drop all frames. | 1485 // to drop all frames. |
1499 cricket::VideoCodec codec(DefaultCodec()); | 1486 cricket::VideoCodec codec(DefaultCodec()); |
1500 codec.width = codec.height = codec.framerate = 0; | 1487 codec.width = codec.height = codec.framerate = 0; |
1501 EXPECT_TRUE(SetOneCodec(codec)); | 1488 EXPECT_TRUE(SetOneCodec(codec)); |
1502 EXPECT_TRUE(SetSend(true)); | 1489 EXPECT_TRUE(SetSend(true)); |
1503 EXPECT_TRUE(channel_->SetRender(true)); | |
1504 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1490 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1505 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1491 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1506 EXPECT_TRUE(SendFrame()); | 1492 EXPECT_TRUE(SendFrame()); |
1507 EXPECT_TRUE(SendFrame()); | 1493 EXPECT_TRUE(SendFrame()); |
1508 rtc::Thread::Current()->ProcessMessages(500); | 1494 rtc::Thread::Current()->ProcessMessages(500); |
1509 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1495 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1510 } | 1496 } |
1511 // Tests that we can reduce the frame rate on demand properly. | 1497 // Tests that we can reduce the frame rate on demand properly. |
1512 // TODO(fbarchard): This test is flakey on pulse. Fix and re-enable | 1498 // TODO(fbarchard): This test is flakey on pulse. Fix and re-enable |
1513 void AdaptFramerate() { | 1499 void AdaptFramerate() { |
1514 cricket::VideoCodec codec(DefaultCodec()); | 1500 cricket::VideoCodec codec(DefaultCodec()); |
1515 int frame_count = 0; | 1501 int frame_count = 0; |
1516 // The capturer runs at 30 fps. The channel requires 30 fps. | 1502 // The capturer runs at 30 fps. The channel requires 30 fps. |
1517 EXPECT_TRUE(SetOneCodec(codec)); | 1503 EXPECT_TRUE(SetOneCodec(codec)); |
1518 EXPECT_TRUE(SetSend(true)); | 1504 EXPECT_TRUE(SetSend(true)); |
1519 EXPECT_TRUE(channel_->SetRender(true)); | |
1520 EXPECT_EQ(frame_count, renderer_.num_rendered_frames()); | 1505 EXPECT_EQ(frame_count, renderer_.num_rendered_frames()); |
1521 EXPECT_TRUE(WaitAndSendFrame(0)); // Should be rendered. | 1506 EXPECT_TRUE(WaitAndSendFrame(0)); // Should be rendered. |
1522 EXPECT_TRUE(WaitAndSendFrame(30)); // Should be rendered. | 1507 EXPECT_TRUE(WaitAndSendFrame(30)); // Should be rendered. |
1523 frame_count += 2; | 1508 frame_count += 2; |
1524 EXPECT_FRAME_WAIT(frame_count, codec.width, codec.height, kTimeout); | 1509 EXPECT_FRAME_WAIT(frame_count, codec.width, codec.height, kTimeout); |
1525 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); | 1510 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); |
1526 EXPECT_EQ(codec.id, GetPayloadType(p.get())); | 1511 EXPECT_EQ(codec.id, GetPayloadType(p.get())); |
1527 | 1512 |
1528 // The channel requires 15 fps. | 1513 // The channel requires 15 fps. |
1529 codec.framerate = 15; | 1514 codec.framerate = 15; |
(...skipping 25 matching lines...) Expand all Loading... |
1555 frame_count += 2; | 1540 frame_count += 2; |
1556 EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); | 1541 EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); |
1557 } | 1542 } |
1558 // Tests that adapted frames won't be upscaled to a higher resolution. | 1543 // Tests that adapted frames won't be upscaled to a higher resolution. |
1559 void SendsLowerResolutionOnSmallerFrames() { | 1544 void SendsLowerResolutionOnSmallerFrames() { |
1560 cricket::VideoCodec codec = DefaultCodec(); | 1545 cricket::VideoCodec codec = DefaultCodec(); |
1561 codec.width = 320; | 1546 codec.width = 320; |
1562 codec.height = 240; | 1547 codec.height = 240; |
1563 EXPECT_TRUE(SetOneCodec(codec)); | 1548 EXPECT_TRUE(SetOneCodec(codec)); |
1564 EXPECT_TRUE(SetSend(true)); | 1549 EXPECT_TRUE(SetSend(true)); |
1565 EXPECT_TRUE(channel_->SetRender(true)); | |
1566 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1550 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1567 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1551 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1568 EXPECT_TRUE(SendFrame()); | 1552 EXPECT_TRUE(SendFrame()); |
1569 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); | 1553 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); |
1570 | 1554 |
1571 // Check that we send smaller frames at the new resolution. | 1555 // Check that we send smaller frames at the new resolution. |
1572 EXPECT_TRUE(rtc::Thread::Current()->ProcessMessages(33)); | 1556 EXPECT_TRUE(rtc::Thread::Current()->ProcessMessages(33)); |
1573 EXPECT_TRUE(video_capturer_->CaptureCustomFrame( | 1557 EXPECT_TRUE(video_capturer_->CaptureCustomFrame( |
1574 codec.width / 2, codec.height / 2, cricket::FOURCC_I420)); | 1558 codec.width / 2, codec.height / 2, cricket::FOURCC_I420)); |
1575 EXPECT_FRAME_WAIT(2, codec.width / 2, codec.height / 2, kTimeout); | 1559 EXPECT_FRAME_WAIT(2, codec.width / 2, codec.height / 2, kTimeout); |
(...skipping 29 matching lines...) Expand all Loading... |
1605 EXPECT_TRUE(SendFrame()); | 1589 EXPECT_TRUE(SendFrame()); |
1606 rtc::Thread::Current()->ProcessMessages(500); | 1590 rtc::Thread::Current()->ProcessMessages(500); |
1607 EXPECT_EQ(frame_count, renderer_.num_rendered_frames()); | 1591 EXPECT_EQ(frame_count, renderer_.num_rendered_frames()); |
1608 } | 1592 } |
1609 // Test that setting send stream format to 0x0 resolution will result in | 1593 // Test that setting send stream format to 0x0 resolution will result in |
1610 // frames being dropped. | 1594 // frames being dropped. |
1611 void SetSendStreamFormat0x0() { | 1595 void SetSendStreamFormat0x0() { |
1612 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 1596 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
1613 EXPECT_TRUE(SetSendStreamFormat(kSsrc, DefaultCodec())); | 1597 EXPECT_TRUE(SetSendStreamFormat(kSsrc, DefaultCodec())); |
1614 EXPECT_TRUE(SetSend(true)); | 1598 EXPECT_TRUE(SetSend(true)); |
1615 EXPECT_TRUE(channel_->SetRender(true)); | |
1616 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1599 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1617 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1600 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1618 // This frame should be received. | 1601 // This frame should be received. |
1619 EXPECT_TRUE(SendFrame()); | 1602 EXPECT_TRUE(SendFrame()); |
1620 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 1603 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
1621 const int64 interval = cricket::VideoFormat::FpsToInterval( | 1604 const int64 interval = cricket::VideoFormat::FpsToInterval( |
1622 DefaultCodec().framerate); | 1605 DefaultCodec().framerate); |
1623 cricket::VideoFormat format( | 1606 cricket::VideoFormat format( |
1624 0, | 1607 0, |
1625 0, | 1608 0, |
(...skipping 11 matching lines...) Expand all Loading... |
1637 void MuteStream() { | 1620 void MuteStream() { |
1638 EXPECT_TRUE(SetDefaultCodec()); | 1621 EXPECT_TRUE(SetDefaultCodec()); |
1639 cricket::FakeVideoCapturer video_capturer; | 1622 cricket::FakeVideoCapturer video_capturer; |
1640 video_capturer.Start( | 1623 video_capturer.Start( |
1641 cricket::VideoFormat( | 1624 cricket::VideoFormat( |
1642 640, 480, | 1625 640, 480, |
1643 cricket::VideoFormat::FpsToInterval(30), | 1626 cricket::VideoFormat::FpsToInterval(30), |
1644 cricket::FOURCC_I420)); | 1627 cricket::FOURCC_I420)); |
1645 EXPECT_TRUE(channel_->SetCapturer(kSsrc, &video_capturer)); | 1628 EXPECT_TRUE(channel_->SetCapturer(kSsrc, &video_capturer)); |
1646 EXPECT_TRUE(SetSend(true)); | 1629 EXPECT_TRUE(SetSend(true)); |
1647 EXPECT_TRUE(channel_->SetRender(true)); | |
1648 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1630 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1649 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1631 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1650 // Mute the channel and expect black output frame. | 1632 // Mute the channel and expect black output frame. |
1651 int frame_count = 0; | 1633 int frame_count = 0; |
1652 EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr)); | 1634 EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr)); |
1653 EXPECT_TRUE(video_capturer.CaptureFrame()); | 1635 EXPECT_TRUE(video_capturer.CaptureFrame()); |
1654 ++frame_count; | 1636 ++frame_count; |
1655 EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); | 1637 EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); |
1656 EXPECT_TRUE(renderer_.black_frame()); | 1638 EXPECT_TRUE(renderer_.black_frame()); |
1657 // Unmute the channel and expect non-black output frame. | 1639 // Unmute the channel and expect non-black output frame. |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1751 } | 1733 } |
1752 | 1734 |
1753 // Tests that we can send and receive frames with early receive. | 1735 // Tests that we can send and receive frames with early receive. |
1754 void TwoStreamsSendAndUnsignalledRecv(const cricket::VideoCodec& codec) { | 1736 void TwoStreamsSendAndUnsignalledRecv(const cricket::VideoCodec& codec) { |
1755 cricket::VideoOptions vmo; | 1737 cricket::VideoOptions vmo; |
1756 vmo.conference_mode.Set(true); | 1738 vmo.conference_mode.Set(true); |
1757 vmo.unsignalled_recv_stream_limit.Set(1); | 1739 vmo.unsignalled_recv_stream_limit.Set(1); |
1758 EXPECT_TRUE(channel_->SetOptions(vmo)); | 1740 EXPECT_TRUE(channel_->SetOptions(vmo)); |
1759 SetUpSecondStreamWithNoRecv(); | 1741 SetUpSecondStreamWithNoRecv(); |
1760 // Test sending and receiving on first stream. | 1742 // Test sending and receiving on first stream. |
1761 EXPECT_TRUE(channel_->SetRender(true)); | |
1762 Send(codec); | 1743 Send(codec); |
1763 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); | 1744 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); |
1764 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); | 1745 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); |
1765 // The first send is not expected to yield frames, because the ssrc | 1746 // The first send is not expected to yield frames, because the ssrc |
1766 // is not signalled yet. With unsignalled recv enabled, we will drop frames | 1747 // is not signalled yet. With unsignalled recv enabled, we will drop frames |
1767 // instead of packets. | 1748 // instead of packets. |
1768 EXPECT_EQ(0, renderer2_.num_rendered_frames()); | 1749 EXPECT_EQ(0, renderer2_.num_rendered_frames()); |
1769 // Give a chance for the decoder to process before adding the receiver. | 1750 // Give a chance for the decoder to process before adding the receiver. |
1770 rtc::Thread::Current()->ProcessMessages(100); | 1751 rtc::Thread::Current()->ProcessMessages(100); |
1771 // Test sending and receiving on second stream. | 1752 // Test sending and receiving on second stream. |
(...skipping 11 matching lines...) Expand all Loading... |
1783 } | 1764 } |
1784 | 1765 |
1785 // Tests that we cannot receive key frames with unsignalled recv disabled. | 1766 // Tests that we cannot receive key frames with unsignalled recv disabled. |
1786 void TwoStreamsSendAndFailUnsignalledRecv(const cricket::VideoCodec& codec) { | 1767 void TwoStreamsSendAndFailUnsignalledRecv(const cricket::VideoCodec& codec) { |
1787 cricket::VideoOptions vmo; | 1768 cricket::VideoOptions vmo; |
1788 vmo.conference_mode.Set(true); | 1769 vmo.conference_mode.Set(true); |
1789 vmo.unsignalled_recv_stream_limit.Set(0); | 1770 vmo.unsignalled_recv_stream_limit.Set(0); |
1790 EXPECT_TRUE(channel_->SetOptions(vmo)); | 1771 EXPECT_TRUE(channel_->SetOptions(vmo)); |
1791 SetUpSecondStreamWithNoRecv(); | 1772 SetUpSecondStreamWithNoRecv(); |
1792 // Test sending and receiving on first stream. | 1773 // Test sending and receiving on first stream. |
1793 EXPECT_TRUE(channel_->SetRender(true)); | |
1794 Send(codec); | 1774 Send(codec); |
1795 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); | 1775 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); |
1796 rtc::Thread::Current()->ProcessMessages(100); | 1776 rtc::Thread::Current()->ProcessMessages(100); |
1797 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); | 1777 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); |
1798 EXPECT_EQ_WAIT(0, renderer2_.num_rendered_frames(), kTimeout); | 1778 EXPECT_EQ_WAIT(0, renderer2_.num_rendered_frames(), kTimeout); |
1799 // Give a chance for the decoder to process before adding the receiver. | 1779 // Give a chance for the decoder to process before adding the receiver. |
1800 rtc::Thread::Current()->ProcessMessages(10); | 1780 rtc::Thread::Current()->ProcessMessages(10); |
1801 // Test sending and receiving on second stream. | 1781 // Test sending and receiving on second stream. |
1802 EXPECT_TRUE(channel_->AddRecvStream( | 1782 EXPECT_TRUE(channel_->AddRecvStream( |
1803 cricket::StreamParams::CreateLegacy(kSsrc + 2))); | 1783 cricket::StreamParams::CreateLegacy(kSsrc + 2))); |
(...skipping 10 matching lines...) Expand all Loading... |
1814 // Tests that we drop key frames when conference mode is disabled and we | 1794 // Tests that we drop key frames when conference mode is disabled and we |
1815 // receive rtp packets on unsignalled streams. | 1795 // receive rtp packets on unsignalled streams. |
1816 void TwoStreamsSendAndFailUnsignalledRecvInOneToOne( | 1796 void TwoStreamsSendAndFailUnsignalledRecvInOneToOne( |
1817 const cricket::VideoCodec& codec) { | 1797 const cricket::VideoCodec& codec) { |
1818 cricket::VideoOptions vmo; | 1798 cricket::VideoOptions vmo; |
1819 vmo.conference_mode.Set(false); | 1799 vmo.conference_mode.Set(false); |
1820 vmo.unsignalled_recv_stream_limit.Set(1); | 1800 vmo.unsignalled_recv_stream_limit.Set(1); |
1821 EXPECT_TRUE(channel_->SetOptions(vmo)); | 1801 EXPECT_TRUE(channel_->SetOptions(vmo)); |
1822 SetUpSecondStreamWithNoRecv(); | 1802 SetUpSecondStreamWithNoRecv(); |
1823 // Test sending and receiving on first stream. | 1803 // Test sending and receiving on first stream. |
1824 EXPECT_TRUE(channel_->SetRender(true)); | |
1825 Send(codec); | 1804 Send(codec); |
1826 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); | 1805 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); |
1827 // In one-to-one mode, we deliver frames to the default channel if there | 1806 // In one-to-one mode, we deliver frames to the default channel if there |
1828 // is no registered recv channel for the ssrc. | 1807 // is no registered recv channel for the ssrc. |
1829 EXPECT_TRUE_WAIT(renderer_.num_rendered_frames() >= 1, kTimeout); | 1808 EXPECT_TRUE_WAIT(renderer_.num_rendered_frames() >= 1, kTimeout); |
1830 // Give a chance for the decoder to process before adding the receiver. | 1809 // Give a chance for the decoder to process before adding the receiver. |
1831 rtc::Thread::Current()->ProcessMessages(100); | 1810 rtc::Thread::Current()->ProcessMessages(100); |
1832 // Test sending and receiving on second stream. | 1811 // Test sending and receiving on second stream. |
1833 EXPECT_TRUE(channel_->AddRecvStream( | 1812 EXPECT_TRUE(channel_->AddRecvStream( |
1834 cricket::StreamParams::CreateLegacy(kSsrc + 2))); | 1813 cricket::StreamParams::CreateLegacy(kSsrc + 2))); |
(...skipping 10 matching lines...) Expand all Loading... |
1845 // receive rtp packets on unsignalled streams. Removal of a unsignalled recv | 1824 // receive rtp packets on unsignalled streams. Removal of a unsignalled recv |
1846 // stream is successful. | 1825 // stream is successful. |
1847 void TwoStreamsAddAndRemoveUnsignalledRecv( | 1826 void TwoStreamsAddAndRemoveUnsignalledRecv( |
1848 const cricket::VideoCodec& codec) { | 1827 const cricket::VideoCodec& codec) { |
1849 cricket::VideoOptions vmo; | 1828 cricket::VideoOptions vmo; |
1850 vmo.conference_mode.Set(true); | 1829 vmo.conference_mode.Set(true); |
1851 vmo.unsignalled_recv_stream_limit.Set(1); | 1830 vmo.unsignalled_recv_stream_limit.Set(1); |
1852 EXPECT_TRUE(channel_->SetOptions(vmo)); | 1831 EXPECT_TRUE(channel_->SetOptions(vmo)); |
1853 SetUpSecondStreamWithNoRecv(); | 1832 SetUpSecondStreamWithNoRecv(); |
1854 // Sending and receiving on first stream. | 1833 // Sending and receiving on first stream. |
1855 EXPECT_TRUE(channel_->SetRender(true)); | |
1856 Send(codec); | 1834 Send(codec); |
1857 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); | 1835 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); |
1858 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); | 1836 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); |
1859 // The first send is not expected to yield frames, because the ssrc | 1837 // The first send is not expected to yield frames, because the ssrc |
1860 // is no signalled yet. With unsignalled recv enabled, we will drop frames | 1838 // is no signalled yet. With unsignalled recv enabled, we will drop frames |
1861 // instead of packets. | 1839 // instead of packets. |
1862 EXPECT_EQ(0, renderer2_.num_rendered_frames()); | 1840 EXPECT_EQ(0, renderer2_.num_rendered_frames()); |
1863 // Give a chance for the decoder to process before adding the receiver. | 1841 // Give a chance for the decoder to process before adding the receiver. |
1864 rtc::Thread::Current()->ProcessMessages(100); | 1842 rtc::Thread::Current()->ProcessMessages(100); |
1865 // Ensure that we can remove the unsignalled recv stream that was created | 1843 // Ensure that we can remove the unsignalled recv stream that was created |
1866 // when the first video packet with unsignalled recv ssrc is received. | 1844 // when the first video packet with unsignalled recv ssrc is received. |
1867 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc + 2)); | 1845 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc + 2)); |
1868 } | 1846 } |
1869 | 1847 |
1870 VideoEngineOverride<E> engine_; | 1848 VideoEngineOverride<E> engine_; |
1871 rtc::scoped_ptr<cricket::FakeVideoCapturer> video_capturer_; | 1849 rtc::scoped_ptr<cricket::FakeVideoCapturer> video_capturer_; |
1872 rtc::scoped_ptr<cricket::FakeVideoCapturer> video_capturer_2_; | 1850 rtc::scoped_ptr<cricket::FakeVideoCapturer> video_capturer_2_; |
1873 rtc::scoped_ptr<C> channel_; | 1851 rtc::scoped_ptr<C> channel_; |
1874 cricket::FakeNetworkInterface network_interface_; | 1852 cricket::FakeNetworkInterface network_interface_; |
1875 cricket::FakeVideoRenderer renderer_; | 1853 cricket::FakeVideoRenderer renderer_; |
1876 cricket::VideoMediaChannel::Error media_error_; | 1854 cricket::VideoMediaChannel::Error media_error_; |
1877 | 1855 |
1878 // Used by test cases where 2 streams are run on the same channel. | 1856 // Used by test cases where 2 streams are run on the same channel. |
1879 cricket::FakeVideoRenderer renderer2_; | 1857 cricket::FakeVideoRenderer renderer2_; |
1880 }; | 1858 }; |
1881 | 1859 |
1882 #endif // TALK_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT | 1860 #endif // TALK_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT |
OLD | NEW |