Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(209)

Side by Side Diff: talk/media/base/videoengine_unittest.h

Issue 1327933003: Enable probing with repeated payload packets by default. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixing yet another flake in libjingle tests. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « talk/media/base/fakenetworkinterface.h ('k') | webrtc/modules/pacing/include/paced_sender.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 838 matching lines...) Expand 10 before | Expand all | Expand 10 after
849 // EXPECT_EQ(0, info.receivers[0].packets_concealed); 849 // EXPECT_EQ(0, info.receivers[0].packets_concealed);
850 EXPECT_EQ(0, info.receivers[0].firs_sent); 850 EXPECT_EQ(0, info.receivers[0].firs_sent);
851 EXPECT_EQ(0, info.receivers[0].plis_sent); 851 EXPECT_EQ(0, info.receivers[0].plis_sent);
852 EXPECT_EQ(0, info.receivers[0].nacks_sent); 852 EXPECT_EQ(0, info.receivers[0].nacks_sent);
853 EXPECT_EQ(DefaultCodec().width, info.receivers[0].frame_width); 853 EXPECT_EQ(DefaultCodec().width, info.receivers[0].frame_width);
854 EXPECT_EQ(DefaultCodec().height, info.receivers[0].frame_height); 854 EXPECT_EQ(DefaultCodec().height, info.receivers[0].frame_height);
855 EXPECT_GT(info.receivers[0].framerate_rcvd, 0); 855 EXPECT_GT(info.receivers[0].framerate_rcvd, 0);
856 EXPECT_GT(info.receivers[0].framerate_decoded, 0); 856 EXPECT_GT(info.receivers[0].framerate_decoded, 0);
857 EXPECT_GT(info.receivers[0].framerate_output, 0); 857 EXPECT_GT(info.receivers[0].framerate_output, 0);
858 } 858 }
859
860 cricket::VideoSenderInfo GetSenderStats(size_t i) {
861 cricket::VideoMediaInfo info;
862 EXPECT_TRUE(channel_->GetStats(&info));
863 return info.senders[i];
864 }
865
866 cricket::VideoReceiverInfo GetReceiverStats(size_t i) {
867 cricket::VideoMediaInfo info;
868 EXPECT_TRUE(channel_->GetStats(&info));
869 return info.receivers[i];
870 }
871
859 // Test that stats work properly for a conf call with multiple recv streams. 872 // Test that stats work properly for a conf call with multiple recv streams.
860 void GetStatsMultipleRecvStreams() { 873 void GetStatsMultipleRecvStreams() {
861 cricket::FakeVideoRenderer renderer1, renderer2; 874 cricket::FakeVideoRenderer renderer1, renderer2;
862 EXPECT_TRUE(SetOneCodec(DefaultCodec())); 875 EXPECT_TRUE(SetOneCodec(DefaultCodec()));
863 cricket::VideoOptions vmo; 876 cricket::VideoOptions vmo;
864 vmo.conference_mode.Set(true); 877 vmo.conference_mode.Set(true);
865 EXPECT_TRUE(channel_->SetOptions(vmo)); 878 EXPECT_TRUE(channel_->SetOptions(vmo));
866 EXPECT_TRUE(SetSend(true)); 879 EXPECT_TRUE(SetSend(true));
867 EXPECT_TRUE(channel_->AddRecvStream( 880 EXPECT_TRUE(channel_->AddRecvStream(
868 cricket::StreamParams::CreateLegacy(1))); 881 cricket::StreamParams::CreateLegacy(1)));
869 EXPECT_TRUE(channel_->AddRecvStream( 882 EXPECT_TRUE(channel_->AddRecvStream(
870 cricket::StreamParams::CreateLegacy(2))); 883 cricket::StreamParams::CreateLegacy(2)));
871 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); 884 EXPECT_TRUE(channel_->SetRenderer(1, &renderer1));
872 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); 885 EXPECT_TRUE(channel_->SetRenderer(2, &renderer2));
873 EXPECT_TRUE(channel_->SetRender(true)); 886 EXPECT_TRUE(channel_->SetRender(true));
874 EXPECT_EQ(0, renderer1.num_rendered_frames()); 887 EXPECT_EQ(0, renderer1.num_rendered_frames());
875 EXPECT_EQ(0, renderer2.num_rendered_frames()); 888 EXPECT_EQ(0, renderer2.num_rendered_frames());
876 std::vector<uint32> ssrcs; 889 std::vector<uint32> ssrcs;
877 ssrcs.push_back(1); 890 ssrcs.push_back(1);
878 ssrcs.push_back(2); 891 ssrcs.push_back(2);
879 network_interface_.SetConferenceMode(true, ssrcs); 892 network_interface_.SetConferenceMode(true, ssrcs);
880 EXPECT_TRUE(SendFrame()); 893 EXPECT_TRUE(SendFrame());
881 EXPECT_FRAME_ON_RENDERER_WAIT( 894 EXPECT_FRAME_ON_RENDERER_WAIT(
882 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); 895 renderer1, 1, DefaultCodec().width, DefaultCodec().height, kTimeout);
883 EXPECT_FRAME_ON_RENDERER_WAIT( 896 EXPECT_FRAME_ON_RENDERER_WAIT(
884 renderer2, 1, DefaultCodec().width, DefaultCodec().height, kTimeout); 897 renderer2, 1, DefaultCodec().width, DefaultCodec().height, kTimeout);
898
899 EXPECT_TRUE(channel_->SetSend(false));
900
885 cricket::VideoMediaInfo info; 901 cricket::VideoMediaInfo info;
886 EXPECT_TRUE(channel_->GetStats(&info)); 902 EXPECT_TRUE(channel_->GetStats(&info));
887
888 ASSERT_EQ(1U, info.senders.size()); 903 ASSERT_EQ(1U, info.senders.size());
889 // TODO(whyuan): bytes_sent and bytes_rcvd are different. Are both payload? 904 // TODO(whyuan): bytes_sent and bytes_rcvd are different. Are both payload?
890 // For webrtc, bytes_sent does not include the RTP header length. 905 // For webrtc, bytes_sent does not include the RTP header length.
891 EXPECT_GT(info.senders[0].bytes_sent, 0); 906 EXPECT_GT(GetSenderStats(0).bytes_sent, 0);
892 EXPECT_EQ(NumRtpPackets(), info.senders[0].packets_sent); 907 EXPECT_EQ_WAIT(NumRtpPackets(), GetSenderStats(0).packets_sent, kTimeout);
893 EXPECT_EQ(DefaultCodec().width, info.senders[0].send_frame_width); 908 EXPECT_EQ(DefaultCodec().width, GetSenderStats(0).send_frame_width);
894 EXPECT_EQ(DefaultCodec().height, info.senders[0].send_frame_height); 909 EXPECT_EQ(DefaultCodec().height, GetSenderStats(0).send_frame_height);
895 910
896 ASSERT_EQ(2U, info.receivers.size()); 911 ASSERT_EQ(2U, info.receivers.size());
897 for (size_t i = 0; i < info.receivers.size(); ++i) { 912 for (size_t i = 0; i < info.receivers.size(); ++i) {
898 EXPECT_EQ(1U, info.receivers[i].ssrcs().size()); 913 EXPECT_EQ(1U, GetReceiverStats(i).ssrcs().size());
899 EXPECT_EQ(i + 1, info.receivers[i].ssrcs()[0]); 914 EXPECT_EQ(i + 1, GetReceiverStats(i).ssrcs()[0]);
900 EXPECT_EQ(NumRtpBytes(), info.receivers[i].bytes_rcvd); 915 EXPECT_EQ_WAIT(NumRtpBytes(), GetReceiverStats(i).bytes_rcvd, kTimeout);
901 EXPECT_EQ(NumRtpPackets(), info.receivers[i].packets_rcvd); 916 EXPECT_EQ_WAIT(NumRtpPackets(), GetReceiverStats(i).packets_rcvd,
902 EXPECT_EQ(DefaultCodec().width, info.receivers[i].frame_width); 917 kTimeout);
903 EXPECT_EQ(DefaultCodec().height, info.receivers[i].frame_height); 918 EXPECT_EQ(DefaultCodec().width, GetReceiverStats(i).frame_width);
919 EXPECT_EQ(DefaultCodec().height, GetReceiverStats(i).frame_height);
904 } 920 }
905 } 921 }
906 // Test that stats work properly for a conf call with multiple send streams. 922 // Test that stats work properly for a conf call with multiple send streams.
907 void GetStatsMultipleSendStreams() { 923 void GetStatsMultipleSendStreams() {
908 // Normal setup; note that we set the SSRC explicitly to ensure that 924 // Normal setup; note that we set the SSRC explicitly to ensure that
909 // it will come first in the senders map. 925 // it will come first in the senders map.
910 EXPECT_TRUE(SetOneCodec(DefaultCodec())); 926 EXPECT_TRUE(SetOneCodec(DefaultCodec()));
911 cricket::VideoOptions vmo; 927 cricket::VideoOptions vmo;
912 vmo.conference_mode.Set(true); 928 vmo.conference_mode.Set(true);
913 EXPECT_TRUE(channel_->SetOptions(vmo)); 929 EXPECT_TRUE(channel_->SetOptions(vmo));
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1049 } 1065 }
1050 1066
1051 // Tests setting up and configuring a send stream. 1067 // Tests setting up and configuring a send stream.
1052 void AddRemoveSendStreams() { 1068 void AddRemoveSendStreams() {
1053 EXPECT_TRUE(SetOneCodec(DefaultCodec())); 1069 EXPECT_TRUE(SetOneCodec(DefaultCodec()));
1054 EXPECT_TRUE(SetSend(true)); 1070 EXPECT_TRUE(SetSend(true));
1055 EXPECT_TRUE(channel_->SetRender(true)); 1071 EXPECT_TRUE(channel_->SetRender(true));
1056 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); 1072 EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_));
1057 EXPECT_TRUE(SendFrame()); 1073 EXPECT_TRUE(SendFrame());
1058 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); 1074 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout);
1059 EXPECT_GE(2, NumRtpPackets()); 1075 EXPECT_GT(NumRtpPackets(), 0);
1060 uint32 ssrc = 0; 1076 uint32 ssrc = 0;
1061 size_t last_packet = NumRtpPackets() - 1; 1077 size_t last_packet = NumRtpPackets() - 1;
1062 rtc::scoped_ptr<const rtc::Buffer> 1078 rtc::scoped_ptr<const rtc::Buffer>
1063 p(GetRtpPacket(static_cast<int>(last_packet))); 1079 p(GetRtpPacket(static_cast<int>(last_packet)));
1064 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL); 1080 ParseRtpPacket(p.get(), NULL, NULL, NULL, NULL, &ssrc, NULL);
1065 EXPECT_EQ(kSsrc, ssrc); 1081 EXPECT_EQ(kSsrc, ssrc);
1066 1082
1067 // Remove the send stream that was added during Setup. 1083 // Remove the send stream that was added during Setup.
1068 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc)); 1084 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc));
1069 int rtp_packets = NumRtpPackets(); 1085 int rtp_packets = NumRtpPackets();
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after
1710 1726
1711 // Two streams one channel tests. 1727 // Two streams one channel tests.
1712 1728
1713 // Tests that we can send and receive frames. 1729 // Tests that we can send and receive frames.
1714 void TwoStreamsSendAndReceive(const cricket::VideoCodec& codec) { 1730 void TwoStreamsSendAndReceive(const cricket::VideoCodec& codec) {
1715 SetUpSecondStream(); 1731 SetUpSecondStream();
1716 // Test sending and receiving on first stream. 1732 // Test sending and receiving on first stream.
1717 SendAndReceive(codec); 1733 SendAndReceive(codec);
1718 // Test sending and receiving on second stream. 1734 // Test sending and receiving on second stream.
1719 EXPECT_EQ_WAIT(1, renderer2_.num_rendered_frames(), kTimeout); 1735 EXPECT_EQ_WAIT(1, renderer2_.num_rendered_frames(), kTimeout);
1720 EXPECT_EQ(2, NumRtpPackets()); 1736 EXPECT_GT(NumRtpPackets(), 0);
1721 EXPECT_EQ(1, renderer2_.num_rendered_frames()); 1737 EXPECT_EQ(1, renderer2_.num_rendered_frames());
1722 } 1738 }
1723 1739
1724 // Set up 2 streams where the first stream uses the default channel. 1740 // Set up 2 streams where the first stream uses the default channel.
1725 // Then disconnect the first stream and verify default channel becomes 1741 // Then disconnect the first stream and verify default channel becomes
1726 // available. 1742 // available.
1727 // Then add a new stream with |new_ssrc|. The new stream should re-use the 1743 // Then add a new stream with |new_ssrc|. The new stream should re-use the
1728 // default channel. 1744 // default channel.
1729 void TwoStreamsReUseFirstStream(const cricket::VideoCodec& codec) { 1745 void TwoStreamsReUseFirstStream(const cricket::VideoCodec& codec) {
1730 SetUpSecondStream(); 1746 SetUpSecondStream();
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1880 rtc::scoped_ptr<C> channel_; 1896 rtc::scoped_ptr<C> channel_;
1881 cricket::FakeNetworkInterface network_interface_; 1897 cricket::FakeNetworkInterface network_interface_;
1882 cricket::FakeVideoRenderer renderer_; 1898 cricket::FakeVideoRenderer renderer_;
1883 cricket::VideoMediaChannel::Error media_error_; 1899 cricket::VideoMediaChannel::Error media_error_;
1884 1900
1885 // Used by test cases where 2 streams are run on the same channel. 1901 // Used by test cases where 2 streams are run on the same channel.
1886 cricket::FakeVideoRenderer renderer2_; 1902 cricket::FakeVideoRenderer renderer2_;
1887 }; 1903 };
1888 1904
1889 #endif // TALK_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT 1905 #endif // TALK_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT
OLDNEW
« no previous file with comments | « talk/media/base/fakenetworkinterface.h ('k') | webrtc/modules/pacing/include/paced_sender.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698