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 751 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
762 EXPECT_TRUE(SetSend(true)); | 762 EXPECT_TRUE(SetSend(true)); |
763 EXPECT_TRUE(SendFrame()); | 763 EXPECT_TRUE(SendFrame()); |
764 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); | 764 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); |
765 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); | 765 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); |
766 EXPECT_EQ(codec.id, GetPayloadType(p.get())); | 766 EXPECT_EQ(codec.id, GetPayloadType(p.get())); |
767 } | 767 } |
768 // Tests that we can send and receive frames. | 768 // Tests that we can send and receive frames. |
769 void SendAndReceive(const cricket::VideoCodec& codec) { | 769 void SendAndReceive(const cricket::VideoCodec& codec) { |
770 EXPECT_TRUE(SetOneCodec(codec)); | 770 EXPECT_TRUE(SetOneCodec(codec)); |
771 EXPECT_TRUE(SetSend(true)); | 771 EXPECT_TRUE(SetSend(true)); |
772 EXPECT_TRUE(channel_->SetRender(true)); | |
773 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 772 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
774 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 773 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
775 EXPECT_TRUE(SendFrame()); | 774 EXPECT_TRUE(SendFrame()); |
776 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); | 775 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); |
777 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); | 776 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); |
778 EXPECT_EQ(codec.id, GetPayloadType(p.get())); | 777 EXPECT_EQ(codec.id, GetPayloadType(p.get())); |
779 } | 778 } |
780 // Tests that we only get a VideoRenderer::SetSize() callback when needed. | 779 // Tests that we only get a VideoRenderer::SetSize() callback when needed. |
781 void SendManyResizeOnce() { | 780 void SendManyResizeOnce() { |
782 cricket::VideoCodec codec(DefaultCodec()); | 781 cricket::VideoCodec codec(DefaultCodec()); |
783 EXPECT_TRUE(SetOneCodec(codec)); | 782 EXPECT_TRUE(SetOneCodec(codec)); |
784 EXPECT_TRUE(SetSend(true)); | 783 EXPECT_TRUE(SetSend(true)); |
785 EXPECT_TRUE(channel_->SetRender(true)); | |
786 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 784 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
787 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 785 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
788 EXPECT_TRUE(WaitAndSendFrame(30)); | 786 EXPECT_TRUE(WaitAndSendFrame(30)); |
789 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); | 787 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); |
790 EXPECT_TRUE(WaitAndSendFrame(30)); | 788 EXPECT_TRUE(WaitAndSendFrame(30)); |
791 EXPECT_FRAME_WAIT(2, codec.width, codec.height, kTimeout); | 789 EXPECT_FRAME_WAIT(2, codec.width, codec.height, kTimeout); |
792 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); | 790 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); |
793 EXPECT_EQ(codec.id, GetPayloadType(p.get())); | 791 EXPECT_EQ(codec.id, GetPayloadType(p.get())); |
794 EXPECT_EQ(1, renderer_.num_set_sizes()); | 792 EXPECT_EQ(1, renderer_.num_set_sizes()); |
795 | 793 |
796 codec.width /= 2; | 794 codec.width /= 2; |
797 codec.height /= 2; | 795 codec.height /= 2; |
798 EXPECT_TRUE(SetOneCodec(codec)); | 796 EXPECT_TRUE(SetOneCodec(codec)); |
799 EXPECT_TRUE(WaitAndSendFrame(30)); | 797 EXPECT_TRUE(WaitAndSendFrame(30)); |
800 EXPECT_FRAME_WAIT(3, codec.width, codec.height, kTimeout); | 798 EXPECT_FRAME_WAIT(3, codec.width, codec.height, kTimeout); |
801 EXPECT_EQ(2, renderer_.num_set_sizes()); | 799 EXPECT_EQ(2, renderer_.num_set_sizes()); |
802 } | 800 } |
803 void SendReceiveManyAndGetStats(const cricket::VideoCodec& codec, | 801 void SendReceiveManyAndGetStats(const cricket::VideoCodec& codec, |
804 int duration_sec, int fps) { | 802 int duration_sec, int fps) { |
805 EXPECT_TRUE(SetOneCodec(codec)); | 803 EXPECT_TRUE(SetOneCodec(codec)); |
806 EXPECT_TRUE(SetSend(true)); | 804 EXPECT_TRUE(SetSend(true)); |
807 EXPECT_TRUE(channel_->SetRender(true)); | |
808 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 805 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
809 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 806 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
810 for (int i = 0; i < duration_sec; ++i) { | 807 for (int i = 0; i < duration_sec; ++i) { |
811 for (int frame = 1; frame <= fps; ++frame) { | 808 for (int frame = 1; frame <= fps; ++frame) { |
812 EXPECT_TRUE(WaitAndSendFrame(1000 / fps)); | 809 EXPECT_TRUE(WaitAndSendFrame(1000 / fps)); |
813 EXPECT_FRAME_WAIT(frame + i * fps, codec.width, codec.height, kTimeout); | 810 EXPECT_FRAME_WAIT(frame + i * fps, codec.width, codec.height, kTimeout); |
814 } | 811 } |
815 } | 812 } |
816 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); | 813 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); |
817 EXPECT_EQ(codec.id, GetPayloadType(p.get())); | 814 EXPECT_EQ(codec.id, GetPayloadType(p.get())); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
880 parameters.codecs.push_back(DefaultCodec()); | 877 parameters.codecs.push_back(DefaultCodec()); |
881 parameters.options.conference_mode.Set(true); | 878 parameters.options.conference_mode.Set(true); |
882 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 879 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
883 EXPECT_TRUE(SetSend(true)); | 880 EXPECT_TRUE(SetSend(true)); |
884 EXPECT_TRUE(channel_->AddRecvStream( | 881 EXPECT_TRUE(channel_->AddRecvStream( |
885 cricket::StreamParams::CreateLegacy(1))); | 882 cricket::StreamParams::CreateLegacy(1))); |
886 EXPECT_TRUE(channel_->AddRecvStream( | 883 EXPECT_TRUE(channel_->AddRecvStream( |
887 cricket::StreamParams::CreateLegacy(2))); | 884 cricket::StreamParams::CreateLegacy(2))); |
888 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); | 885 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); |
889 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); | 886 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); |
890 EXPECT_TRUE(channel_->SetRender(true)); | |
891 EXPECT_EQ(0, renderer1.num_rendered_frames()); | 887 EXPECT_EQ(0, renderer1.num_rendered_frames()); |
892 EXPECT_EQ(0, renderer2.num_rendered_frames()); | 888 EXPECT_EQ(0, renderer2.num_rendered_frames()); |
893 std::vector<uint32> ssrcs; | 889 std::vector<uint32> ssrcs; |
894 ssrcs.push_back(1); | 890 ssrcs.push_back(1); |
895 ssrcs.push_back(2); | 891 ssrcs.push_back(2); |
896 network_interface_.SetConferenceMode(true, ssrcs); | 892 network_interface_.SetConferenceMode(true, ssrcs); |
897 EXPECT_TRUE(SendFrame()); | 893 EXPECT_TRUE(SendFrame()); |
898 EXPECT_FRAME_ON_RENDERER_WAIT( | 894 EXPECT_FRAME_ON_RENDERER_WAIT( |
899 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 895 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
900 EXPECT_FRAME_ON_RENDERER_WAIT( | 896 EXPECT_FRAME_ON_RENDERER_WAIT( |
(...skipping 29 matching lines...) Expand all Loading... |
930 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 926 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
931 cricket::VideoSendParameters parameters; | 927 cricket::VideoSendParameters parameters; |
932 parameters.codecs.push_back(DefaultCodec()); | 928 parameters.codecs.push_back(DefaultCodec()); |
933 parameters.options.conference_mode.Set(true); | 929 parameters.options.conference_mode.Set(true); |
934 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 930 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
935 EXPECT_TRUE(channel_->AddRecvStream( | 931 EXPECT_TRUE(channel_->AddRecvStream( |
936 cricket::StreamParams::CreateLegacy(kSsrc))); | 932 cricket::StreamParams::CreateLegacy(kSsrc))); |
937 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer_)); | 933 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer_)); |
938 channel_->UpdateAspectRatio(640, 400); | 934 channel_->UpdateAspectRatio(640, 400); |
939 EXPECT_TRUE(SetSend(true)); | 935 EXPECT_TRUE(SetSend(true)); |
940 EXPECT_TRUE(channel_->SetRender(true)); | |
941 EXPECT_TRUE(SendFrame()); | 936 EXPECT_TRUE(SendFrame()); |
942 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); | 937 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); |
943 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 938 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
944 | 939 |
945 // Add an additional capturer, and hook up a renderer to receive it. | 940 // Add an additional capturer, and hook up a renderer to receive it. |
946 cricket::FakeVideoRenderer renderer2; | 941 cricket::FakeVideoRenderer renderer2; |
947 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( | 942 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( |
948 CreateFakeVideoCapturer()); | 943 CreateFakeVideoCapturer()); |
949 capturer->SetScreencast(true); | 944 capturer->SetScreencast(true); |
950 const int kTestWidth = 160; | 945 const int kTestWidth = 160; |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1047 void SetRenderer() { | 1042 void SetRenderer() { |
1048 uint8 data1[] = { | 1043 uint8 data1[] = { |
1049 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | 1044 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
1050 }; | 1045 }; |
1051 | 1046 |
1052 rtc::Buffer packet1(data1, sizeof(data1)); | 1047 rtc::Buffer packet1(data1, sizeof(data1)); |
1053 rtc::SetBE32(packet1.data() + 8, kSsrc); | 1048 rtc::SetBE32(packet1.data() + 8, kSsrc); |
1054 channel_->SetRenderer(kDefaultReceiveSsrc, NULL); | 1049 channel_->SetRenderer(kDefaultReceiveSsrc, NULL); |
1055 EXPECT_TRUE(SetDefaultCodec()); | 1050 EXPECT_TRUE(SetDefaultCodec()); |
1056 EXPECT_TRUE(SetSend(true)); | 1051 EXPECT_TRUE(SetSend(true)); |
1057 EXPECT_TRUE(channel_->SetRender(true)); | |
1058 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1052 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1059 channel_->OnPacketReceived(&packet1, rtc::PacketTime()); | 1053 channel_->OnPacketReceived(&packet1, rtc::PacketTime()); |
1060 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1054 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1061 EXPECT_TRUE(SendFrame()); | 1055 EXPECT_TRUE(SendFrame()); |
1062 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 1056 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
1063 } | 1057 } |
1064 | 1058 |
1065 // Tests empty StreamParams is rejected. | 1059 // Tests empty StreamParams is rejected. |
1066 void RejectEmptyStreamParams() { | 1060 void RejectEmptyStreamParams() { |
1067 // Remove the send stream that was added during Setup. | 1061 // Remove the send stream that was added during Setup. |
1068 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc)); | 1062 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc)); |
1069 | 1063 |
1070 cricket::StreamParams empty; | 1064 cricket::StreamParams empty; |
1071 EXPECT_FALSE(channel_->AddSendStream(empty)); | 1065 EXPECT_FALSE(channel_->AddSendStream(empty)); |
1072 EXPECT_TRUE(channel_->AddSendStream( | 1066 EXPECT_TRUE(channel_->AddSendStream( |
1073 cricket::StreamParams::CreateLegacy(789u))); | 1067 cricket::StreamParams::CreateLegacy(789u))); |
1074 } | 1068 } |
1075 | 1069 |
1076 // Tests setting up and configuring a send stream. | 1070 // Tests setting up and configuring a send stream. |
1077 void AddRemoveSendStreams() { | 1071 void AddRemoveSendStreams() { |
1078 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 1072 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
1079 EXPECT_TRUE(SetSend(true)); | 1073 EXPECT_TRUE(SetSend(true)); |
1080 EXPECT_TRUE(channel_->SetRender(true)); | |
1081 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1074 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1082 EXPECT_TRUE(SendFrame()); | 1075 EXPECT_TRUE(SendFrame()); |
1083 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 1076 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
1084 EXPECT_GT(NumRtpPackets(), 0); | 1077 EXPECT_GT(NumRtpPackets(), 0); |
1085 uint32 ssrc = 0; | 1078 uint32 ssrc = 0; |
1086 size_t last_packet = NumRtpPackets() - 1; | 1079 size_t last_packet = NumRtpPackets() - 1; |
1087 rtc::scoped_ptr<const rtc::Buffer> | 1080 rtc::scoped_ptr<const rtc::Buffer> |
1088 p(GetRtpPacket(static_cast<int>(last_packet))); | 1081 p(GetRtpPacket(static_cast<int>(last_packet))); |
1089 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); | 1082 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); |
1090 EXPECT_EQ(kSsrc, ssrc); | 1083 EXPECT_EQ(kSsrc, ssrc); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1196 EXPECT_FALSE(channel_->GetRenderer(1, &renderer)); | 1189 EXPECT_FALSE(channel_->GetRenderer(1, &renderer)); |
1197 EXPECT_FALSE(channel_->GetRenderer(2, &renderer)); | 1190 EXPECT_FALSE(channel_->GetRenderer(2, &renderer)); |
1198 } | 1191 } |
1199 | 1192 |
1200 // Test that no frames are rendered after the receive stream have been | 1193 // Test that no frames are rendered after the receive stream have been |
1201 // removed. | 1194 // removed. |
1202 void AddRemoveRecvStreamAndRender() { | 1195 void AddRemoveRecvStreamAndRender() { |
1203 cricket::FakeVideoRenderer renderer1; | 1196 cricket::FakeVideoRenderer renderer1; |
1204 EXPECT_TRUE(SetDefaultCodec()); | 1197 EXPECT_TRUE(SetDefaultCodec()); |
1205 EXPECT_TRUE(SetSend(true)); | 1198 EXPECT_TRUE(SetSend(true)); |
1206 EXPECT_TRUE(channel_->SetRender(true)); | |
1207 EXPECT_TRUE(channel_->AddRecvStream( | 1199 EXPECT_TRUE(channel_->AddRecvStream( |
1208 cricket::StreamParams::CreateLegacy(kSsrc))); | 1200 cricket::StreamParams::CreateLegacy(kSsrc))); |
1209 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer1)); | 1201 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer1)); |
1210 | 1202 |
1211 EXPECT_TRUE(SendFrame()); | 1203 EXPECT_TRUE(SendFrame()); |
1212 EXPECT_FRAME_ON_RENDERER_WAIT( | 1204 EXPECT_FRAME_ON_RENDERER_WAIT( |
1213 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 1205 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
1214 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc)); | 1206 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc)); |
1215 // Send three more frames. This is to avoid that the test might be flaky | 1207 // Send three more frames. This is to avoid that the test might be flaky |
1216 // due to frame dropping. | 1208 // due to frame dropping. |
(...skipping 24 matching lines...) Expand all Loading... |
1241 | 1233 |
1242 // Tests the behavior of incoming streams in a conference scenario. | 1234 // Tests the behavior of incoming streams in a conference scenario. |
1243 void SimulateConference() { | 1235 void SimulateConference() { |
1244 cricket::FakeVideoRenderer renderer1, renderer2; | 1236 cricket::FakeVideoRenderer renderer1, renderer2; |
1245 EXPECT_TRUE(SetDefaultCodec()); | 1237 EXPECT_TRUE(SetDefaultCodec()); |
1246 cricket::VideoSendParameters parameters; | 1238 cricket::VideoSendParameters parameters; |
1247 parameters.codecs.push_back(DefaultCodec()); | 1239 parameters.codecs.push_back(DefaultCodec()); |
1248 parameters.options.conference_mode.Set(true); | 1240 parameters.options.conference_mode.Set(true); |
1249 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1241 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1250 EXPECT_TRUE(SetSend(true)); | 1242 EXPECT_TRUE(SetSend(true)); |
1251 EXPECT_TRUE(channel_->SetRender(true)); | |
1252 EXPECT_TRUE(channel_->AddRecvStream( | 1243 EXPECT_TRUE(channel_->AddRecvStream( |
1253 cricket::StreamParams::CreateLegacy(1))); | 1244 cricket::StreamParams::CreateLegacy(1))); |
1254 EXPECT_TRUE(channel_->AddRecvStream( | 1245 EXPECT_TRUE(channel_->AddRecvStream( |
1255 cricket::StreamParams::CreateLegacy(2))); | 1246 cricket::StreamParams::CreateLegacy(2))); |
1256 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); | 1247 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); |
1257 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); | 1248 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); |
1258 EXPECT_EQ(0, renderer1.num_rendered_frames()); | 1249 EXPECT_EQ(0, renderer1.num_rendered_frames()); |
1259 EXPECT_EQ(0, renderer2.num_rendered_frames()); | 1250 EXPECT_EQ(0, renderer2.num_rendered_frames()); |
1260 std::vector<uint32> ssrcs; | 1251 std::vector<uint32> ssrcs; |
1261 ssrcs.push_back(1); | 1252 ssrcs.push_back(1); |
(...skipping 16 matching lines...) Expand all Loading... |
1278 } | 1269 } |
1279 | 1270 |
1280 // Tests that we can add and remove capturers and frames are sent out properly | 1271 // Tests that we can add and remove capturers and frames are sent out properly |
1281 void AddRemoveCapturer() { | 1272 void AddRemoveCapturer() { |
1282 cricket::VideoCodec codec = DefaultCodec(); | 1273 cricket::VideoCodec codec = DefaultCodec(); |
1283 codec.width = 320; | 1274 codec.width = 320; |
1284 codec.height = 240; | 1275 codec.height = 240; |
1285 const int time_between_send = TimeBetweenSend(codec); | 1276 const int time_between_send = TimeBetweenSend(codec); |
1286 EXPECT_TRUE(SetOneCodec(codec)); | 1277 EXPECT_TRUE(SetOneCodec(codec)); |
1287 EXPECT_TRUE(SetSend(true)); | 1278 EXPECT_TRUE(SetSend(true)); |
1288 EXPECT_TRUE(channel_->SetRender(true)); | |
1289 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1279 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1290 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1280 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1291 EXPECT_TRUE(SendFrame()); | 1281 EXPECT_TRUE(SendFrame()); |
1292 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); | 1282 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); |
1293 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( | 1283 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( |
1294 CreateFakeVideoCapturer()); | 1284 CreateFakeVideoCapturer()); |
1295 capturer->SetScreencast(true); | 1285 capturer->SetScreencast(true); |
1296 cricket::VideoFormat format(480, 360, | 1286 cricket::VideoFormat format(480, 360, |
1297 cricket::VideoFormat::FpsToInterval(30), | 1287 cricket::VideoFormat::FpsToInterval(30), |
1298 cricket::FOURCC_I420); | 1288 cricket::FOURCC_I420); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1340 EXPECT_TRUE(capturer->CaptureCustomFrame(format.width, format.height, | 1330 EXPECT_TRUE(capturer->CaptureCustomFrame(format.width, format.height, |
1341 cricket::FOURCC_I420)); | 1331 cricket::FOURCC_I420)); |
1342 } | 1332 } |
1343 } | 1333 } |
1344 | 1334 |
1345 // Tests that if RemoveCapturer is called without a capturer ever being | 1335 // Tests that if RemoveCapturer is called without a capturer ever being |
1346 // added, the plugin shouldn't crash (and no black frame should be sent). | 1336 // added, the plugin shouldn't crash (and no black frame should be sent). |
1347 void RemoveCapturerWithoutAdd() { | 1337 void RemoveCapturerWithoutAdd() { |
1348 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 1338 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
1349 EXPECT_TRUE(SetSend(true)); | 1339 EXPECT_TRUE(SetSend(true)); |
1350 EXPECT_TRUE(channel_->SetRender(true)); | |
1351 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1340 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1352 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1341 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1353 EXPECT_TRUE(SendFrame()); | 1342 EXPECT_TRUE(SendFrame()); |
1354 EXPECT_FRAME_WAIT(1, 640, 400, kTimeout); | 1343 EXPECT_FRAME_WAIT(1, 640, 400, kTimeout); |
1355 // Wait for one frame so they don't get dropped because we send frames too | 1344 // Wait for one frame so they don't get dropped because we send frames too |
1356 // tightly. | 1345 // tightly. |
1357 rtc::Thread::Current()->ProcessMessages(30); | 1346 rtc::Thread::Current()->ProcessMessages(30); |
1358 // Remove the capturer. | 1347 // Remove the capturer. |
1359 EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); | 1348 EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); |
1360 // Wait for one black frame for removing the capturer. | 1349 // Wait for one black frame for removing the capturer. |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1405 capturer2->SetScreencast(true); | 1394 capturer2->SetScreencast(true); |
1406 EXPECT_EQ(cricket::CS_RUNNING, capturer2->Start(capture_format)); | 1395 EXPECT_EQ(cricket::CS_RUNNING, capturer2->Start(capture_format)); |
1407 // State for all the streams. | 1396 // State for all the streams. |
1408 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 1397 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
1409 // A limitation in the lmi implementation requires that SetCapturer() is | 1398 // A limitation in the lmi implementation requires that SetCapturer() is |
1410 // called after SetOneCodec(). | 1399 // called after SetOneCodec(). |
1411 // TODO(hellner): this seems like an unnecessary constraint, fix it. | 1400 // TODO(hellner): this seems like an unnecessary constraint, fix it. |
1412 EXPECT_TRUE(channel_->SetCapturer(1, capturer1.get())); | 1401 EXPECT_TRUE(channel_->SetCapturer(1, capturer1.get())); |
1413 EXPECT_TRUE(channel_->SetCapturer(2, capturer2.get())); | 1402 EXPECT_TRUE(channel_->SetCapturer(2, capturer2.get())); |
1414 EXPECT_TRUE(SetSend(true)); | 1403 EXPECT_TRUE(SetSend(true)); |
1415 EXPECT_TRUE(channel_->SetRender(true)); | |
1416 // Test capturer associated with engine. | 1404 // Test capturer associated with engine. |
1417 const int kTestWidth = 160; | 1405 const int kTestWidth = 160; |
1418 const int kTestHeight = 120; | 1406 const int kTestHeight = 120; |
1419 EXPECT_TRUE(capturer1->CaptureCustomFrame( | 1407 EXPECT_TRUE(capturer1->CaptureCustomFrame( |
1420 kTestWidth, kTestHeight, cricket::FOURCC_I420)); | 1408 kTestWidth, kTestHeight, cricket::FOURCC_I420)); |
1421 EXPECT_FRAME_ON_RENDERER_WAIT( | 1409 EXPECT_FRAME_ON_RENDERER_WAIT( |
1422 renderer1, 1, kTestWidth, kTestHeight, kTimeout); | 1410 renderer1, 1, kTestWidth, kTestHeight, kTimeout); |
1423 // Capture a frame with additional capturer2, frames should be received | 1411 // Capture a frame with additional capturer2, frames should be received |
1424 EXPECT_TRUE(capturer2->CaptureCustomFrame( | 1412 EXPECT_TRUE(capturer2->CaptureCustomFrame( |
1425 kTestWidth, kTestHeight, cricket::FOURCC_I420)); | 1413 kTestWidth, kTestHeight, cricket::FOURCC_I420)); |
(...skipping 16 matching lines...) Expand all Loading... |
1442 const int kScaledHeight = 2500; | 1430 const int kScaledHeight = 2500; |
1443 | 1431 |
1444 cricket::VideoCodec codec(DefaultCodec()); | 1432 cricket::VideoCodec codec(DefaultCodec()); |
1445 EXPECT_TRUE(SetOneCodec(codec)); | 1433 EXPECT_TRUE(SetOneCodec(codec)); |
1446 EXPECT_TRUE(SetSend(true)); | 1434 EXPECT_TRUE(SetSend(true)); |
1447 | 1435 |
1448 cricket::FakeVideoRenderer renderer; | 1436 cricket::FakeVideoRenderer renderer; |
1449 EXPECT_TRUE(channel_->AddRecvStream( | 1437 EXPECT_TRUE(channel_->AddRecvStream( |
1450 cricket::StreamParams::CreateLegacy(kSsrc))); | 1438 cricket::StreamParams::CreateLegacy(kSsrc))); |
1451 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer)); | 1439 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer)); |
1452 EXPECT_TRUE(channel_->SetRender(true)); | |
1453 EXPECT_EQ(0, renderer.num_rendered_frames()); | 1440 EXPECT_EQ(0, renderer.num_rendered_frames()); |
1454 | 1441 |
1455 EXPECT_TRUE(SendFrame()); | 1442 EXPECT_TRUE(SendFrame()); |
1456 EXPECT_GT_FRAME_ON_RENDERER_WAIT( | 1443 EXPECT_GT_FRAME_ON_RENDERER_WAIT( |
1457 renderer, 1, codec.width, codec.height, kTimeout); | 1444 renderer, 1, codec.width, codec.height, kTimeout); |
1458 | 1445 |
1459 // Registering an external capturer is currently the same as screen casting | 1446 // Registering an external capturer is currently the same as screen casting |
1460 // (update the test when this changes). | 1447 // (update the test when this changes). |
1461 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( | 1448 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( |
1462 CreateFakeVideoCapturer()); | 1449 CreateFakeVideoCapturer()); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1505 EXPECT_FRAME_WAIT(2, codec.width, codec.height, kTimeout); | 1492 EXPECT_FRAME_WAIT(2, codec.width, codec.height, kTimeout); |
1506 } | 1493 } |
1507 // Tests that we can drop all frames properly. | 1494 // Tests that we can drop all frames properly. |
1508 void AdaptDropAllFrames() { | 1495 void AdaptDropAllFrames() { |
1509 // Set the channel codec's resolution to 0, which will require the adapter | 1496 // Set the channel codec's resolution to 0, which will require the adapter |
1510 // to drop all frames. | 1497 // to drop all frames. |
1511 cricket::VideoCodec codec(DefaultCodec()); | 1498 cricket::VideoCodec codec(DefaultCodec()); |
1512 codec.width = codec.height = codec.framerate = 0; | 1499 codec.width = codec.height = codec.framerate = 0; |
1513 EXPECT_TRUE(SetOneCodec(codec)); | 1500 EXPECT_TRUE(SetOneCodec(codec)); |
1514 EXPECT_TRUE(SetSend(true)); | 1501 EXPECT_TRUE(SetSend(true)); |
1515 EXPECT_TRUE(channel_->SetRender(true)); | |
1516 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1502 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1517 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1503 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1518 EXPECT_TRUE(SendFrame()); | 1504 EXPECT_TRUE(SendFrame()); |
1519 EXPECT_TRUE(SendFrame()); | 1505 EXPECT_TRUE(SendFrame()); |
1520 rtc::Thread::Current()->ProcessMessages(500); | 1506 rtc::Thread::Current()->ProcessMessages(500); |
1521 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1507 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1522 } | 1508 } |
1523 // Tests that we can reduce the frame rate on demand properly. | 1509 // Tests that we can reduce the frame rate on demand properly. |
1524 // TODO(fbarchard): This test is flakey on pulse. Fix and re-enable | 1510 // TODO(fbarchard): This test is flakey on pulse. Fix and re-enable |
1525 void AdaptFramerate() { | 1511 void AdaptFramerate() { |
1526 cricket::VideoCodec codec(DefaultCodec()); | 1512 cricket::VideoCodec codec(DefaultCodec()); |
1527 int frame_count = 0; | 1513 int frame_count = 0; |
1528 // The capturer runs at 30 fps. The channel requires 30 fps. | 1514 // The capturer runs at 30 fps. The channel requires 30 fps. |
1529 EXPECT_TRUE(SetOneCodec(codec)); | 1515 EXPECT_TRUE(SetOneCodec(codec)); |
1530 EXPECT_TRUE(SetSend(true)); | 1516 EXPECT_TRUE(SetSend(true)); |
1531 EXPECT_TRUE(channel_->SetRender(true)); | |
1532 EXPECT_EQ(frame_count, renderer_.num_rendered_frames()); | 1517 EXPECT_EQ(frame_count, renderer_.num_rendered_frames()); |
1533 EXPECT_TRUE(WaitAndSendFrame(0)); // Should be rendered. | 1518 EXPECT_TRUE(WaitAndSendFrame(0)); // Should be rendered. |
1534 EXPECT_TRUE(WaitAndSendFrame(30)); // Should be rendered. | 1519 EXPECT_TRUE(WaitAndSendFrame(30)); // Should be rendered. |
1535 frame_count += 2; | 1520 frame_count += 2; |
1536 EXPECT_FRAME_WAIT(frame_count, codec.width, codec.height, kTimeout); | 1521 EXPECT_FRAME_WAIT(frame_count, codec.width, codec.height, kTimeout); |
1537 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); | 1522 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); |
1538 EXPECT_EQ(codec.id, GetPayloadType(p.get())); | 1523 EXPECT_EQ(codec.id, GetPayloadType(p.get())); |
1539 | 1524 |
1540 // The channel requires 15 fps. | 1525 // The channel requires 15 fps. |
1541 codec.framerate = 15; | 1526 codec.framerate = 15; |
(...skipping 25 matching lines...) Expand all Loading... |
1567 frame_count += 2; | 1552 frame_count += 2; |
1568 EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); | 1553 EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); |
1569 } | 1554 } |
1570 // Tests that adapted frames won't be upscaled to a higher resolution. | 1555 // Tests that adapted frames won't be upscaled to a higher resolution. |
1571 void SendsLowerResolutionOnSmallerFrames() { | 1556 void SendsLowerResolutionOnSmallerFrames() { |
1572 cricket::VideoCodec codec = DefaultCodec(); | 1557 cricket::VideoCodec codec = DefaultCodec(); |
1573 codec.width = 320; | 1558 codec.width = 320; |
1574 codec.height = 240; | 1559 codec.height = 240; |
1575 EXPECT_TRUE(SetOneCodec(codec)); | 1560 EXPECT_TRUE(SetOneCodec(codec)); |
1576 EXPECT_TRUE(SetSend(true)); | 1561 EXPECT_TRUE(SetSend(true)); |
1577 EXPECT_TRUE(channel_->SetRender(true)); | |
1578 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1562 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1579 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1563 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1580 EXPECT_TRUE(SendFrame()); | 1564 EXPECT_TRUE(SendFrame()); |
1581 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); | 1565 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); |
1582 | 1566 |
1583 // Check that we send smaller frames at the new resolution. | 1567 // Check that we send smaller frames at the new resolution. |
1584 EXPECT_TRUE(rtc::Thread::Current()->ProcessMessages(33)); | 1568 EXPECT_TRUE(rtc::Thread::Current()->ProcessMessages(33)); |
1585 EXPECT_TRUE(video_capturer_->CaptureCustomFrame( | 1569 EXPECT_TRUE(video_capturer_->CaptureCustomFrame( |
1586 codec.width / 2, codec.height / 2, cricket::FOURCC_I420)); | 1570 codec.width / 2, codec.height / 2, cricket::FOURCC_I420)); |
1587 EXPECT_FRAME_WAIT(2, codec.width / 2, codec.height / 2, kTimeout); | 1571 EXPECT_FRAME_WAIT(2, codec.width / 2, codec.height / 2, kTimeout); |
(...skipping 29 matching lines...) Expand all Loading... |
1617 EXPECT_TRUE(SendFrame()); | 1601 EXPECT_TRUE(SendFrame()); |
1618 rtc::Thread::Current()->ProcessMessages(500); | 1602 rtc::Thread::Current()->ProcessMessages(500); |
1619 EXPECT_EQ(frame_count, renderer_.num_rendered_frames()); | 1603 EXPECT_EQ(frame_count, renderer_.num_rendered_frames()); |
1620 } | 1604 } |
1621 // Test that setting send stream format to 0x0 resolution will result in | 1605 // Test that setting send stream format to 0x0 resolution will result in |
1622 // frames being dropped. | 1606 // frames being dropped. |
1623 void SetSendStreamFormat0x0() { | 1607 void SetSendStreamFormat0x0() { |
1624 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 1608 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
1625 EXPECT_TRUE(SetSendStreamFormat(kSsrc, DefaultCodec())); | 1609 EXPECT_TRUE(SetSendStreamFormat(kSsrc, DefaultCodec())); |
1626 EXPECT_TRUE(SetSend(true)); | 1610 EXPECT_TRUE(SetSend(true)); |
1627 EXPECT_TRUE(channel_->SetRender(true)); | |
1628 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1611 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1629 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1612 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1630 // This frame should be received. | 1613 // This frame should be received. |
1631 EXPECT_TRUE(SendFrame()); | 1614 EXPECT_TRUE(SendFrame()); |
1632 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 1615 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
1633 const int64 interval = cricket::VideoFormat::FpsToInterval( | 1616 const int64 interval = cricket::VideoFormat::FpsToInterval( |
1634 DefaultCodec().framerate); | 1617 DefaultCodec().framerate); |
1635 cricket::VideoFormat format( | 1618 cricket::VideoFormat format( |
1636 0, | 1619 0, |
1637 0, | 1620 0, |
(...skipping 11 matching lines...) Expand all Loading... |
1649 void MuteStream() { | 1632 void MuteStream() { |
1650 EXPECT_TRUE(SetDefaultCodec()); | 1633 EXPECT_TRUE(SetDefaultCodec()); |
1651 cricket::FakeVideoCapturer video_capturer; | 1634 cricket::FakeVideoCapturer video_capturer; |
1652 video_capturer.Start( | 1635 video_capturer.Start( |
1653 cricket::VideoFormat( | 1636 cricket::VideoFormat( |
1654 640, 480, | 1637 640, 480, |
1655 cricket::VideoFormat::FpsToInterval(30), | 1638 cricket::VideoFormat::FpsToInterval(30), |
1656 cricket::FOURCC_I420)); | 1639 cricket::FOURCC_I420)); |
1657 EXPECT_TRUE(channel_->SetCapturer(kSsrc, &video_capturer)); | 1640 EXPECT_TRUE(channel_->SetCapturer(kSsrc, &video_capturer)); |
1658 EXPECT_TRUE(SetSend(true)); | 1641 EXPECT_TRUE(SetSend(true)); |
1659 EXPECT_TRUE(channel_->SetRender(true)); | |
1660 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); | 1642 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); |
1661 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 1643 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
1662 // Mute the channel and expect black output frame. | 1644 // Mute the channel and expect black output frame. |
1663 int frame_count = 0; | 1645 int frame_count = 0; |
1664 EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr)); | 1646 EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr)); |
1665 EXPECT_TRUE(video_capturer.CaptureFrame()); | 1647 EXPECT_TRUE(video_capturer.CaptureFrame()); |
1666 ++frame_count; | 1648 ++frame_count; |
1667 EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); | 1649 EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); |
1668 EXPECT_TRUE(renderer_.black_frame()); | 1650 EXPECT_TRUE(renderer_.black_frame()); |
1669 // Unmute the channel and expect non-black output frame. | 1651 // Unmute the channel and expect non-black output frame. |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1763 } | 1745 } |
1764 | 1746 |
1765 // Tests that we can send and receive frames with early receive. | 1747 // Tests that we can send and receive frames with early receive. |
1766 void TwoStreamsSendAndUnsignalledRecv(const cricket::VideoCodec& codec) { | 1748 void TwoStreamsSendAndUnsignalledRecv(const cricket::VideoCodec& codec) { |
1767 cricket::VideoSendParameters parameters; | 1749 cricket::VideoSendParameters parameters; |
1768 parameters.options.conference_mode.Set(true); | 1750 parameters.options.conference_mode.Set(true); |
1769 parameters.options.unsignalled_recv_stream_limit.Set(1); | 1751 parameters.options.unsignalled_recv_stream_limit.Set(1); |
1770 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1752 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1771 SetUpSecondStreamWithNoRecv(); | 1753 SetUpSecondStreamWithNoRecv(); |
1772 // Test sending and receiving on first stream. | 1754 // Test sending and receiving on first stream. |
1773 EXPECT_TRUE(channel_->SetRender(true)); | |
1774 Send(codec); | 1755 Send(codec); |
1775 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); | 1756 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); |
1776 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); | 1757 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); |
1777 // The first send is not expected to yield frames, because the ssrc | 1758 // The first send is not expected to yield frames, because the ssrc |
1778 // is not signalled yet. With unsignalled recv enabled, we will drop frames | 1759 // is not signalled yet. With unsignalled recv enabled, we will drop frames |
1779 // instead of packets. | 1760 // instead of packets. |
1780 EXPECT_EQ(0, renderer2_.num_rendered_frames()); | 1761 EXPECT_EQ(0, renderer2_.num_rendered_frames()); |
1781 // Give a chance for the decoder to process before adding the receiver. | 1762 // Give a chance for the decoder to process before adding the receiver. |
1782 rtc::Thread::Current()->ProcessMessages(100); | 1763 rtc::Thread::Current()->ProcessMessages(100); |
1783 // Test sending and receiving on second stream. | 1764 // Test sending and receiving on second stream. |
(...skipping 14 matching lines...) Expand all Loading... |
1798 // receive rtp packets on unsignalled streams. Removal of a unsignalled recv | 1779 // receive rtp packets on unsignalled streams. Removal of a unsignalled recv |
1799 // stream is successful. | 1780 // stream is successful. |
1800 void TwoStreamsAddAndRemoveUnsignalledRecv( | 1781 void TwoStreamsAddAndRemoveUnsignalledRecv( |
1801 const cricket::VideoCodec& codec) { | 1782 const cricket::VideoCodec& codec) { |
1802 cricket::VideoOptions vmo; | 1783 cricket::VideoOptions vmo; |
1803 vmo.conference_mode.Set(true); | 1784 vmo.conference_mode.Set(true); |
1804 vmo.unsignalled_recv_stream_limit.Set(1); | 1785 vmo.unsignalled_recv_stream_limit.Set(1); |
1805 EXPECT_TRUE(channel_->SetOptions(vmo)); | 1786 EXPECT_TRUE(channel_->SetOptions(vmo)); |
1806 SetUpSecondStreamWithNoRecv(); | 1787 SetUpSecondStreamWithNoRecv(); |
1807 // Sending and receiving on first stream. | 1788 // Sending and receiving on first stream. |
1808 EXPECT_TRUE(channel_->SetRender(true)); | |
1809 Send(codec); | 1789 Send(codec); |
1810 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); | 1790 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); |
1811 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); | 1791 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); |
1812 // The first send is not expected to yield frames, because the ssrc | 1792 // The first send is not expected to yield frames, because the ssrc |
1813 // is no signalled yet. With unsignalled recv enabled, we will drop frames | 1793 // is no signalled yet. With unsignalled recv enabled, we will drop frames |
1814 // instead of packets. | 1794 // instead of packets. |
1815 EXPECT_EQ(0, renderer2_.num_rendered_frames()); | 1795 EXPECT_EQ(0, renderer2_.num_rendered_frames()); |
1816 // Give a chance for the decoder to process before adding the receiver. | 1796 // Give a chance for the decoder to process before adding the receiver. |
1817 rtc::Thread::Current()->ProcessMessages(100); | 1797 rtc::Thread::Current()->ProcessMessages(100); |
1818 // Ensure that we can remove the unsignalled recv stream that was created | 1798 // Ensure that we can remove the unsignalled recv stream that was created |
1819 // when the first video packet with unsignalled recv ssrc is received. | 1799 // when the first video packet with unsignalled recv ssrc is received. |
1820 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc + 2)); | 1800 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc + 2)); |
1821 } | 1801 } |
1822 | 1802 |
1823 const rtc::scoped_ptr<webrtc::Call> call_; | 1803 const rtc::scoped_ptr<webrtc::Call> call_; |
1824 VideoEngineOverride<E> engine_; | 1804 VideoEngineOverride<E> engine_; |
1825 rtc::scoped_ptr<cricket::FakeVideoCapturer> video_capturer_; | 1805 rtc::scoped_ptr<cricket::FakeVideoCapturer> video_capturer_; |
1826 rtc::scoped_ptr<cricket::FakeVideoCapturer> video_capturer_2_; | 1806 rtc::scoped_ptr<cricket::FakeVideoCapturer> video_capturer_2_; |
1827 rtc::scoped_ptr<C> channel_; | 1807 rtc::scoped_ptr<C> channel_; |
1828 cricket::FakeNetworkInterface network_interface_; | 1808 cricket::FakeNetworkInterface network_interface_; |
1829 cricket::FakeVideoRenderer renderer_; | 1809 cricket::FakeVideoRenderer renderer_; |
1830 cricket::VideoMediaChannel::Error media_error_; | 1810 cricket::VideoMediaChannel::Error media_error_; |
1831 | 1811 |
1832 // Used by test cases where 2 streams are run on the same channel. | 1812 // Used by test cases where 2 streams are run on the same channel. |
1833 cricket::FakeVideoRenderer renderer2_; | 1813 cricket::FakeVideoRenderer renderer2_; |
1834 }; | 1814 }; |
1835 | 1815 |
1836 #endif // TALK_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT | 1816 #endif // TALK_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT |
OLD | NEW |