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 445 matching lines...) Loading... | |
456 | 456 |
457 virtual void SetUp() { | 457 virtual void SetUp() { |
458 cricket::Device device("test", "device"); | 458 cricket::Device device("test", "device"); |
459 engine_.Init(); | 459 engine_.Init(); |
460 channel_.reset(engine_.CreateChannel(cricket::VideoOptions(), NULL)); | 460 channel_.reset(engine_.CreateChannel(cricket::VideoOptions(), NULL)); |
461 EXPECT_TRUE(channel_.get() != NULL); | 461 EXPECT_TRUE(channel_.get() != NULL); |
462 ConnectVideoChannelError(); | 462 ConnectVideoChannelError(); |
463 network_interface_.SetDestination(channel_.get()); | 463 network_interface_.SetDestination(channel_.get()); |
464 channel_->SetInterface(&network_interface_); | 464 channel_->SetInterface(&network_interface_); |
465 media_error_ = cricket::VideoMediaChannel::ERROR_NONE; | 465 media_error_ = cricket::VideoMediaChannel::ERROR_NONE; |
466 channel_->SetRecvCodecs(engine_.codecs()); | 466 cricket::VideoRecvParameters parameters; |
467 parameters.codecs = engine_.codecs(); | |
468 channel_->SetRecvParameters(parameters); | |
467 EXPECT_TRUE(channel_->AddSendStream(DefaultSendStreamParams())); | 469 EXPECT_TRUE(channel_->AddSendStream(DefaultSendStreamParams())); |
468 video_capturer_.reset(CreateFakeVideoCapturer()); | 470 video_capturer_.reset(CreateFakeVideoCapturer()); |
469 cricket::VideoFormat format(640, 480, | 471 cricket::VideoFormat format(640, 480, |
470 cricket::VideoFormat::FpsToInterval(30), | 472 cricket::VideoFormat::FpsToInterval(30), |
471 cricket::FOURCC_I420); | 473 cricket::FOURCC_I420); |
472 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_->Start(format)); | 474 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_->Start(format)); |
473 EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get())); | 475 EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get())); |
474 } | 476 } |
475 | 477 |
476 virtual cricket::FakeVideoCapturer* CreateFakeVideoCapturer() { | 478 virtual cricket::FakeVideoCapturer* CreateFakeVideoCapturer() { |
(...skipping 40 matching lines...) Loading... | |
517 &VideoMediaChannelTest<E, C>::OnVideoChannelError); | 519 &VideoMediaChannelTest<E, C>::OnVideoChannelError); |
518 } | 520 } |
519 bool SetDefaultCodec() { | 521 bool SetDefaultCodec() { |
520 return SetOneCodec(DefaultCodec()); | 522 return SetOneCodec(DefaultCodec()); |
521 } | 523 } |
522 | 524 |
523 bool SetOneCodec(int pt, const char* name, int w, int h, int fr) { | 525 bool SetOneCodec(int pt, const char* name, int w, int h, int fr) { |
524 return SetOneCodec(cricket::VideoCodec(pt, name, w, h, fr, 0)); | 526 return SetOneCodec(cricket::VideoCodec(pt, name, w, h, fr, 0)); |
525 } | 527 } |
526 bool SetOneCodec(const cricket::VideoCodec& codec) { | 528 bool SetOneCodec(const cricket::VideoCodec& codec) { |
527 std::vector<cricket::VideoCodec> codecs; | |
528 codecs.push_back(codec); | |
529 | |
530 cricket::VideoFormat capture_format(codec.width, codec.height, | 529 cricket::VideoFormat capture_format(codec.width, codec.height, |
531 cricket::VideoFormat::FpsToInterval(codec.framerate), | 530 cricket::VideoFormat::FpsToInterval(codec.framerate), |
532 cricket::FOURCC_I420); | 531 cricket::FOURCC_I420); |
533 | 532 |
534 if (video_capturer_) { | 533 if (video_capturer_) { |
535 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_->Start(capture_format)); | 534 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_->Start(capture_format)); |
536 } | 535 } |
537 if (video_capturer_2_) { | 536 if (video_capturer_2_) { |
538 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_2_->Start(capture_format)); | 537 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_2_->Start(capture_format)); |
539 } | 538 } |
540 | 539 |
541 bool sending = channel_->sending(); | 540 bool sending = channel_->sending(); |
542 bool success = SetSend(false); | 541 bool success = SetSend(false); |
543 if (success) | 542 if (success) { |
544 success = channel_->SetSendCodecs(codecs); | 543 cricket::VideoSendParameters parameters; |
545 if (success) | 544 parameters.codecs.push_back(codec); |
545 success = channel_->SetSendParameters(parameters); | |
546 } | |
547 if (success) { | |
546 success = SetSend(sending); | 548 success = SetSend(sending); |
549 } | |
547 return success; | 550 return success; |
548 } | 551 } |
549 bool SetSend(bool send) { | 552 bool SetSend(bool send) { |
550 return channel_->SetSend(send); | 553 return channel_->SetSend(send); |
551 } | 554 } |
552 bool SetSendStreamFormat(uint32 ssrc, const cricket::VideoCodec& codec) { | 555 bool SetSendStreamFormat(uint32 ssrc, const cricket::VideoCodec& codec) { |
553 return channel_->SetSendStreamFormat(ssrc, cricket::VideoFormat( | 556 return channel_->SetSendStreamFormat(ssrc, cricket::VideoFormat( |
554 codec.width, codec.height, | 557 codec.width, codec.height, |
555 cricket::VideoFormat::FpsToInterval(codec.framerate), | 558 cricket::VideoFormat::FpsToInterval(codec.framerate), |
556 cricket::FOURCC_ANY)); | 559 cricket::FOURCC_ANY)); |
(...skipping 290 matching lines...) Loading... | |
847 EXPECT_EQ(DefaultCodec().width, info.receivers[0].frame_width); | 850 EXPECT_EQ(DefaultCodec().width, info.receivers[0].frame_width); |
848 EXPECT_EQ(DefaultCodec().height, info.receivers[0].frame_height); | 851 EXPECT_EQ(DefaultCodec().height, info.receivers[0].frame_height); |
849 EXPECT_GT(info.receivers[0].framerate_rcvd, 0); | 852 EXPECT_GT(info.receivers[0].framerate_rcvd, 0); |
850 EXPECT_GT(info.receivers[0].framerate_decoded, 0); | 853 EXPECT_GT(info.receivers[0].framerate_decoded, 0); |
851 EXPECT_GT(info.receivers[0].framerate_output, 0); | 854 EXPECT_GT(info.receivers[0].framerate_output, 0); |
852 } | 855 } |
853 // Test that stats work properly for a conf call with multiple recv streams. | 856 // Test that stats work properly for a conf call with multiple recv streams. |
854 void GetStatsMultipleRecvStreams() { | 857 void GetStatsMultipleRecvStreams() { |
855 cricket::FakeVideoRenderer renderer1, renderer2; | 858 cricket::FakeVideoRenderer renderer1, renderer2; |
856 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 859 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
857 cricket::VideoOptions vmo; | 860 cricket::VideoSendParameters parameters; |
858 vmo.conference_mode.Set(true); | 861 parameters.options.conference_mode.Set(true); |
859 EXPECT_TRUE(channel_->SetOptions(vmo)); | 862 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
860 EXPECT_TRUE(SetSend(true)); | 863 EXPECT_TRUE(SetSend(true)); |
861 EXPECT_TRUE(channel_->AddRecvStream( | 864 EXPECT_TRUE(channel_->AddRecvStream( |
862 cricket::StreamParams::CreateLegacy(1))); | 865 cricket::StreamParams::CreateLegacy(1))); |
863 EXPECT_TRUE(channel_->AddRecvStream( | 866 EXPECT_TRUE(channel_->AddRecvStream( |
864 cricket::StreamParams::CreateLegacy(2))); | 867 cricket::StreamParams::CreateLegacy(2))); |
865 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); | 868 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); |
866 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); | 869 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); |
867 EXPECT_TRUE(channel_->SetRender(true)); | 870 EXPECT_TRUE(channel_->SetRender(true)); |
868 EXPECT_EQ(0, renderer1.num_rendered_frames()); | 871 EXPECT_EQ(0, renderer1.num_rendered_frames()); |
869 EXPECT_EQ(0, renderer2.num_rendered_frames()); | 872 EXPECT_EQ(0, renderer2.num_rendered_frames()); |
(...skipping 25 matching lines...) Loading... | |
895 EXPECT_EQ(NumRtpPackets(), info.receivers[i].packets_rcvd); | 898 EXPECT_EQ(NumRtpPackets(), info.receivers[i].packets_rcvd); |
896 EXPECT_EQ(DefaultCodec().width, info.receivers[i].frame_width); | 899 EXPECT_EQ(DefaultCodec().width, info.receivers[i].frame_width); |
897 EXPECT_EQ(DefaultCodec().height, info.receivers[i].frame_height); | 900 EXPECT_EQ(DefaultCodec().height, info.receivers[i].frame_height); |
898 } | 901 } |
899 } | 902 } |
900 // Test that stats work properly for a conf call with multiple send streams. | 903 // Test that stats work properly for a conf call with multiple send streams. |
901 void GetStatsMultipleSendStreams() { | 904 void GetStatsMultipleSendStreams() { |
902 // Normal setup; note that we set the SSRC explicitly to ensure that | 905 // Normal setup; note that we set the SSRC explicitly to ensure that |
903 // it will come first in the senders map. | 906 // it will come first in the senders map. |
904 EXPECT_TRUE(SetOneCodec(DefaultCodec())); | 907 EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
905 cricket::VideoOptions vmo; | 908 cricket::VideoSendParameters parameters; |
906 vmo.conference_mode.Set(true); | 909 parameters.options.conference_mode.Set(true); |
907 EXPECT_TRUE(channel_->SetOptions(vmo)); | 910 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
908 EXPECT_TRUE(channel_->AddRecvStream( | 911 EXPECT_TRUE(channel_->AddRecvStream( |
909 cricket::StreamParams::CreateLegacy(kSsrc))); | 912 cricket::StreamParams::CreateLegacy(kSsrc))); |
910 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer_)); | 913 EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer_)); |
911 channel_->UpdateAspectRatio(640, 400); | 914 channel_->UpdateAspectRatio(640, 400); |
912 EXPECT_TRUE(SetSend(true)); | 915 EXPECT_TRUE(SetSend(true)); |
913 EXPECT_TRUE(channel_->SetRender(true)); | 916 EXPECT_TRUE(channel_->SetRender(true)); |
914 EXPECT_TRUE(SendFrame()); | 917 EXPECT_TRUE(SendFrame()); |
915 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); | 918 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); |
916 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); | 919 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); |
917 | 920 |
(...skipping 44 matching lines...) Loading... | |
962 EXPECT_EQ(1U, info.senders[1].ssrcs().size()); | 965 EXPECT_EQ(1U, info.senders[1].ssrcs().size()); |
963 EXPECT_EQ(5678U, info.senders[1].ssrcs()[0]); | 966 EXPECT_EQ(5678U, info.senders[1].ssrcs()[0]); |
964 EXPECT_EQ(kTestWidth, info.senders[1].send_frame_width); | 967 EXPECT_EQ(kTestWidth, info.senders[1].send_frame_width); |
965 EXPECT_EQ(kTestHeight, info.senders[1].send_frame_height); | 968 EXPECT_EQ(kTestHeight, info.senders[1].send_frame_height); |
966 // The capturer must be unregistered here as it runs out of it's scope next. | 969 // The capturer must be unregistered here as it runs out of it's scope next. |
967 EXPECT_TRUE(channel_->SetCapturer(5678, NULL)); | 970 EXPECT_TRUE(channel_->SetCapturer(5678, NULL)); |
968 } | 971 } |
969 | 972 |
970 // Test that we can set the bandwidth. | 973 // Test that we can set the bandwidth. |
971 void SetSendBandwidth() { | 974 void SetSendBandwidth() { |
972 EXPECT_TRUE(channel_->SetMaxSendBandwidth(-1)); // <= 0 means unlimited. | 975 cricket::VideoSendParameters parameters; |
973 EXPECT_TRUE(channel_->SetMaxSendBandwidth(128 * 1024)); | 976 parameters.max_bandwidth_bps = -1; // <= 0 means unlimited. |
977 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | |
978 parameters.max_bandwidth_bps = 128 * 1024; | |
979 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | |
974 } | 980 } |
975 // Test that we can set the SSRC for the default send source. | 981 // Test that we can set the SSRC for the default send source. |
976 void SetSendSsrc() { | 982 void SetSendSsrc() { |
977 EXPECT_TRUE(SetDefaultCodec()); | 983 EXPECT_TRUE(SetDefaultCodec()); |
978 EXPECT_TRUE(SetSendStreamFormat(kSsrc, DefaultCodec())); | 984 EXPECT_TRUE(SetSendStreamFormat(kSsrc, DefaultCodec())); |
979 EXPECT_TRUE(SetSend(true)); | 985 EXPECT_TRUE(SetSend(true)); |
980 EXPECT_TRUE(SendFrame()); | 986 EXPECT_TRUE(SendFrame()); |
981 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); | 987 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); |
982 uint32 ssrc = 0; | 988 uint32 ssrc = 0; |
983 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); | 989 rtc::scoped_ptr<const rtc::Buffer> p(GetRtpPacket(0)); |
(...skipping 85 matching lines...) Loading... | |
1069 // Wait 30ms to guarantee the engine does not drop the frame. | 1075 // Wait 30ms to guarantee the engine does not drop the frame. |
1070 EXPECT_TRUE(WaitAndSendFrame(30)); | 1076 EXPECT_TRUE(WaitAndSendFrame(30)); |
1071 EXPECT_TRUE_WAIT(NumRtpPackets() > rtp_packets, kTimeout); | 1077 EXPECT_TRUE_WAIT(NumRtpPackets() > rtp_packets, kTimeout); |
1072 | 1078 |
1073 last_packet = NumRtpPackets() - 1; | 1079 last_packet = NumRtpPackets() - 1; |
1074 p.reset(GetRtpPacket(static_cast<int>(last_packet))); | 1080 p.reset(GetRtpPacket(static_cast<int>(last_packet))); |
1075 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); | 1081 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); |
1076 EXPECT_EQ(789u, ssrc); | 1082 EXPECT_EQ(789u, ssrc); |
1077 } | 1083 } |
1078 | 1084 |
1079 // Tests adding streams already exists returns false. | |
1080 void AddRecvStreamsAlreadyExist() { | |
1081 cricket::VideoOptions vmo; | |
1082 vmo.conference_mode.Set(true); | |
1083 EXPECT_TRUE(channel_->SetOptions(vmo)); | |
1084 | |
1085 EXPECT_FALSE(channel_->AddRecvStream( | |
1086 cricket::StreamParams::CreateLegacy(0))); | |
1087 | |
1088 EXPECT_TRUE(channel_->AddRecvStream( | |
1089 cricket::StreamParams::CreateLegacy(1))); | |
1090 EXPECT_FALSE(channel_->AddRecvStream( | |
1091 cricket::StreamParams::CreateLegacy(1))); | |
1092 | |
1093 EXPECT_TRUE(channel_->RemoveRecvStream(1)); | |
1094 EXPECT_FALSE(channel_->AddRecvStream( | |
1095 cricket::StreamParams::CreateLegacy(0))); | |
1096 EXPECT_TRUE(channel_->AddRecvStream( | |
1097 cricket::StreamParams::CreateLegacy(1))); | |
1098 } | |
1099 | |
1100 // Tests setting up and configuring multiple incoming streams. | 1085 // Tests setting up and configuring multiple incoming streams. |
1101 void AddRemoveRecvStreams() { | 1086 void AddRemoveRecvStreams() { |
1102 cricket::FakeVideoRenderer renderer1, renderer2; | 1087 cricket::FakeVideoRenderer renderer1, renderer2; |
1103 cricket::VideoOptions vmo; | 1088 cricket::VideoSendParameters parameters; |
1104 vmo.conference_mode.Set(true); | 1089 parameters.options.conference_mode.Set(true); |
1105 EXPECT_TRUE(channel_->SetOptions(vmo)); | 1090 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1091 | |
1106 // Ensure we can't set the renderer on a non-existent stream. | 1092 // Ensure we can't set the renderer on a non-existent stream. |
1107 EXPECT_FALSE(channel_->SetRenderer(1, &renderer1)); | 1093 EXPECT_FALSE(channel_->SetRenderer(1, &renderer1)); |
1108 EXPECT_FALSE(channel_->SetRenderer(2, &renderer2)); | 1094 EXPECT_FALSE(channel_->SetRenderer(2, &renderer2)); |
1109 cricket::VideoRenderer* renderer; | 1095 cricket::VideoRenderer* renderer; |
1110 EXPECT_FALSE(channel_->GetRenderer(1, &renderer)); | 1096 EXPECT_FALSE(channel_->GetRenderer(1, &renderer)); |
1111 EXPECT_FALSE(channel_->GetRenderer(2, &renderer)); | 1097 EXPECT_FALSE(channel_->GetRenderer(2, &renderer)); |
1112 | 1098 |
1113 // Ensure we can add streams. | 1099 // Ensure we can add streams. |
1114 EXPECT_TRUE(channel_->AddRecvStream( | 1100 EXPECT_TRUE(channel_->AddRecvStream( |
1115 cricket::StreamParams::CreateLegacy(1))); | 1101 cricket::StreamParams::CreateLegacy(1))); |
(...skipping 109 matching lines...) Loading... | |
1225 EXPECT_GT_FRAME_ON_RENDERER_WAIT( | 1211 EXPECT_GT_FRAME_ON_RENDERER_WAIT( |
1226 renderer1, 2, DefaultCodec().width, DefaultCodec().height, kTimeout); | 1212 renderer1, 2, DefaultCodec().width, DefaultCodec().height, kTimeout); |
1227 // Detach |renderer1| before exit as there might be frames come late. | 1213 // Detach |renderer1| before exit as there might be frames come late. |
1228 EXPECT_TRUE(channel_->SetRenderer(kSsrc, NULL)); | 1214 EXPECT_TRUE(channel_->SetRenderer(kSsrc, NULL)); |
1229 } | 1215 } |
1230 | 1216 |
1231 // Tests the behavior of incoming streams in a conference scenario. | 1217 // Tests the behavior of incoming streams in a conference scenario. |
1232 void SimulateConference() { | 1218 void SimulateConference() { |
1233 cricket::FakeVideoRenderer renderer1, renderer2; | 1219 cricket::FakeVideoRenderer renderer1, renderer2; |
1234 EXPECT_TRUE(SetDefaultCodec()); | 1220 EXPECT_TRUE(SetDefaultCodec()); |
1235 cricket::VideoOptions vmo; | 1221 cricket::VideoSendParameters parameters; |
1236 vmo.conference_mode.Set(true); | 1222 parameters.options.conference_mode.Set(true); |
1237 EXPECT_TRUE(channel_->SetOptions(vmo)); | 1223 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1238 EXPECT_TRUE(SetSend(true)); | 1224 EXPECT_TRUE(SetSend(true)); |
1239 EXPECT_TRUE(channel_->SetRender(true)); | 1225 EXPECT_TRUE(channel_->SetRender(true)); |
1240 EXPECT_TRUE(channel_->AddRecvStream( | 1226 EXPECT_TRUE(channel_->AddRecvStream( |
1241 cricket::StreamParams::CreateLegacy(1))); | 1227 cricket::StreamParams::CreateLegacy(1))); |
1242 EXPECT_TRUE(channel_->AddRecvStream( | 1228 EXPECT_TRUE(channel_->AddRecvStream( |
1243 cricket::StreamParams::CreateLegacy(2))); | 1229 cricket::StreamParams::CreateLegacy(2))); |
1244 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); | 1230 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); |
1245 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); | 1231 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); |
1246 EXPECT_EQ(0, renderer1.num_rendered_frames()); | 1232 EXPECT_EQ(0, renderer1.num_rendered_frames()); |
1247 EXPECT_EQ(0, renderer2.num_rendered_frames()); | 1233 EXPECT_EQ(0, renderer2.num_rendered_frames()); |
(...skipping 497 matching lines...) Loading... | |
1745 | 1731 |
1746 EXPECT_TRUE(channel_->SetCapturer(new_ssrc, video_capturer_.get())); | 1732 EXPECT_TRUE(channel_->SetCapturer(new_ssrc, video_capturer_.get())); |
1747 | 1733 |
1748 SendAndReceive(codec); | 1734 SendAndReceive(codec); |
1749 EXPECT_TRUE(channel_->RemoveSendStream(new_ssrc)); | 1735 EXPECT_TRUE(channel_->RemoveSendStream(new_ssrc)); |
1750 EXPECT_EQ(0u, channel_->GetDefaultSendChannelSsrc()); | 1736 EXPECT_EQ(0u, channel_->GetDefaultSendChannelSsrc()); |
1751 } | 1737 } |
1752 | 1738 |
1753 // Tests that we can send and receive frames with early receive. | 1739 // Tests that we can send and receive frames with early receive. |
1754 void TwoStreamsSendAndUnsignalledRecv(const cricket::VideoCodec& codec) { | 1740 void TwoStreamsSendAndUnsignalledRecv(const cricket::VideoCodec& codec) { |
1755 cricket::VideoOptions vmo; | 1741 cricket::VideoSendParameters parameters; |
1756 vmo.conference_mode.Set(true); | 1742 parameters.options.conference_mode.Set(true); |
1757 vmo.unsignalled_recv_stream_limit.Set(1); | 1743 parameters.options.unsignalled_recv_stream_limit.Set(1); |
1758 EXPECT_TRUE(channel_->SetOptions(vmo)); | 1744 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1759 SetUpSecondStreamWithNoRecv(); | 1745 SetUpSecondStreamWithNoRecv(); |
1760 // Test sending and receiving on first stream. | 1746 // Test sending and receiving on first stream. |
1761 EXPECT_TRUE(channel_->SetRender(true)); | 1747 EXPECT_TRUE(channel_->SetRender(true)); |
1762 Send(codec); | 1748 Send(codec); |
1763 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); | 1749 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); |
1764 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); | 1750 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); |
1765 // The first send is not expected to yield frames, because the ssrc | 1751 // 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 | 1752 // is not signalled yet. With unsignalled recv enabled, we will drop frames |
1767 // instead of packets. | 1753 // instead of packets. |
1768 EXPECT_EQ(0, renderer2_.num_rendered_frames()); | 1754 EXPECT_EQ(0, renderer2_.num_rendered_frames()); |
1769 // Give a chance for the decoder to process before adding the receiver. | 1755 // Give a chance for the decoder to process before adding the receiver. |
1770 rtc::Thread::Current()->ProcessMessages(100); | 1756 rtc::Thread::Current()->ProcessMessages(100); |
1771 // Test sending and receiving on second stream. | 1757 // Test sending and receiving on second stream. |
1772 EXPECT_TRUE(channel_->AddRecvStream( | 1758 EXPECT_TRUE(channel_->AddRecvStream( |
1773 cricket::StreamParams::CreateLegacy(kSsrc + 2))); | 1759 cricket::StreamParams::CreateLegacy(kSsrc + 2))); |
1774 EXPECT_TRUE(channel_->SetRenderer(kSsrc + 2, &renderer2_)); | 1760 EXPECT_TRUE(channel_->SetRenderer(kSsrc + 2, &renderer2_)); |
1775 SendFrame(); | 1761 SendFrame(); |
1776 EXPECT_EQ_WAIT(2, renderer_.num_rendered_frames(), kTimeout); | 1762 EXPECT_EQ_WAIT(2, renderer_.num_rendered_frames(), kTimeout); |
1777 EXPECT_EQ(4, NumRtpPackets()); | 1763 EXPECT_EQ(4, NumRtpPackets()); |
1778 // The second send is expected to yield frame as the ssrc is signalled now. | 1764 // The second send is expected to yield frame as the ssrc is signalled now. |
1779 // Decode should succeed here, though we received the key frame earlier. | 1765 // Decode should succeed here, though we received the key frame earlier. |
1780 // Without early recv, we would have dropped it and decoding would have | 1766 // Without early recv, we would have dropped it and decoding would have |
1781 // failed. | 1767 // failed. |
1782 EXPECT_EQ_WAIT(1, renderer2_.num_rendered_frames(), kTimeout); | 1768 EXPECT_EQ_WAIT(1, renderer2_.num_rendered_frames(), kTimeout); |
1783 } | 1769 } |
1784 | 1770 |
1785 // Tests that we cannot receive key frames with unsignalled recv disabled. | |
pthatcher1
2015/09/14 19:42:02
We are you removing the tests for unsignalled_recv
the sun
2015/09/14 19:58:00
These are helper functions which turned out to be
| |
1786 void TwoStreamsSendAndFailUnsignalledRecv(const cricket::VideoCodec& codec) { | |
1787 cricket::VideoOptions vmo; | |
1788 vmo.conference_mode.Set(true); | |
1789 vmo.unsignalled_recv_stream_limit.Set(0); | |
1790 EXPECT_TRUE(channel_->SetOptions(vmo)); | |
1791 SetUpSecondStreamWithNoRecv(); | |
1792 // Test sending and receiving on first stream. | |
1793 EXPECT_TRUE(channel_->SetRender(true)); | |
1794 Send(codec); | |
1795 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); | |
1796 rtc::Thread::Current()->ProcessMessages(100); | |
1797 EXPECT_EQ_WAIT(1, renderer_.num_rendered_frames(), kTimeout); | |
1798 EXPECT_EQ_WAIT(0, renderer2_.num_rendered_frames(), kTimeout); | |
1799 // Give a chance for the decoder to process before adding the receiver. | |
1800 rtc::Thread::Current()->ProcessMessages(10); | |
1801 // Test sending and receiving on second stream. | |
1802 EXPECT_TRUE(channel_->AddRecvStream( | |
1803 cricket::StreamParams::CreateLegacy(kSsrc + 2))); | |
1804 EXPECT_TRUE(channel_->SetRenderer(kSsrc + 2, &renderer2_)); | |
1805 SendFrame(); | |
1806 EXPECT_TRUE_WAIT(renderer_.num_rendered_frames() >= 1, kTimeout); | |
1807 EXPECT_EQ_WAIT(4, NumRtpPackets(), kTimeout); | |
1808 // We dont expect any frames here, because the key frame would have been | |
1809 // lost in the earlier packet. This is the case we want to solve with early | |
1810 // receive. | |
1811 EXPECT_EQ(0, renderer2_.num_rendered_frames()); | |
1812 } | |
1813 | |
1814 // Tests that we drop key frames when conference mode is disabled and we | |
1815 // receive rtp packets on unsignalled streams. | |
1816 void TwoStreamsSendAndFailUnsignalledRecvInOneToOne( | |
1817 const cricket::VideoCodec& codec) { | |
1818 cricket::VideoOptions vmo; | |
1819 vmo.conference_mode.Set(false); | |
1820 vmo.unsignalled_recv_stream_limit.Set(1); | |
1821 EXPECT_TRUE(channel_->SetOptions(vmo)); | |
1822 SetUpSecondStreamWithNoRecv(); | |
1823 // Test sending and receiving on first stream. | |
1824 EXPECT_TRUE(channel_->SetRender(true)); | |
1825 Send(codec); | |
1826 EXPECT_EQ_WAIT(2, NumRtpPackets(), kTimeout); | |
1827 // In one-to-one mode, we deliver frames to the default channel if there | |
1828 // is no registered recv channel for the ssrc. | |
1829 EXPECT_TRUE_WAIT(renderer_.num_rendered_frames() >= 1, kTimeout); | |
1830 // Give a chance for the decoder to process before adding the receiver. | |
1831 rtc::Thread::Current()->ProcessMessages(100); | |
1832 // Test sending and receiving on second stream. | |
1833 EXPECT_TRUE(channel_->AddRecvStream( | |
1834 cricket::StreamParams::CreateLegacy(kSsrc + 2))); | |
1835 EXPECT_TRUE(channel_->SetRenderer(kSsrc + 2, &renderer2_)); | |
1836 SendFrame(); | |
1837 EXPECT_TRUE_WAIT(renderer_.num_rendered_frames() >= 1, kTimeout); | |
1838 EXPECT_EQ_WAIT(4, NumRtpPackets(), kTimeout); | |
1839 // We dont expect any frames here, because the key frame would have been | |
1840 // delivered to default channel. | |
1841 EXPECT_EQ(0, renderer2_.num_rendered_frames()); | |
1842 } | |
1843 | |
1844 // Tests that we drop key frames when conference mode is enabled and we | 1771 // Tests that we drop key frames when conference mode is enabled and we |
1845 // receive rtp packets on unsignalled streams. Removal of a unsignalled recv | 1772 // receive rtp packets on unsignalled streams. Removal of a unsignalled recv |
1846 // stream is successful. | 1773 // stream is successful. |
1847 void TwoStreamsAddAndRemoveUnsignalledRecv( | 1774 void TwoStreamsAddAndRemoveUnsignalledRecv( |
1848 const cricket::VideoCodec& codec) { | 1775 const cricket::VideoCodec& codec) { |
1849 cricket::VideoOptions vmo; | 1776 cricket::VideoOptions vmo; |
1850 vmo.conference_mode.Set(true); | 1777 vmo.conference_mode.Set(true); |
1851 vmo.unsignalled_recv_stream_limit.Set(1); | 1778 vmo.unsignalled_recv_stream_limit.Set(1); |
1852 EXPECT_TRUE(channel_->SetOptions(vmo)); | 1779 EXPECT_TRUE(channel_->SetOptions(vmo)); |
1853 SetUpSecondStreamWithNoRecv(); | 1780 SetUpSecondStreamWithNoRecv(); |
(...skipping 19 matching lines...) Loading... | |
1873 rtc::scoped_ptr<C> channel_; | 1800 rtc::scoped_ptr<C> channel_; |
1874 cricket::FakeNetworkInterface network_interface_; | 1801 cricket::FakeNetworkInterface network_interface_; |
1875 cricket::FakeVideoRenderer renderer_; | 1802 cricket::FakeVideoRenderer renderer_; |
1876 cricket::VideoMediaChannel::Error media_error_; | 1803 cricket::VideoMediaChannel::Error media_error_; |
1877 | 1804 |
1878 // Used by test cases where 2 streams are run on the same channel. | 1805 // Used by test cases where 2 streams are run on the same channel. |
1879 cricket::FakeVideoRenderer renderer2_; | 1806 cricket::FakeVideoRenderer renderer2_; |
1880 }; | 1807 }; |
1881 | 1808 |
1882 #endif // TALK_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT | 1809 #endif // TALK_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT |
OLD | NEW |