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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc

Issue 1338203003: Wire up send-side bandwidth estimation. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Addressed comments, rebase 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 15 matching lines...) Expand all
26 #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h" 26 #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
27 27
28 namespace webrtc { 28 namespace webrtc {
29 29
30 namespace { // Anonymous namespace; hide utility functions and classes. 30 namespace { // Anonymous namespace; hide utility functions and classes.
31 31
32 // This test transport verifies that no functions get called. 32 // This test transport verifies that no functions get called.
33 class TestTransport : public Transport, 33 class TestTransport : public Transport,
34 public NullRtpData { 34 public NullRtpData {
35 public: 35 public:
36 explicit TestTransport() 36 explicit TestTransport() : rtcp_receiver_(nullptr) {}
37 : rtcp_receiver_(NULL) {
38 }
39 void SetRTCPReceiver(RTCPReceiver* rtcp_receiver) { 37 void SetRTCPReceiver(RTCPReceiver* rtcp_receiver) {
40 rtcp_receiver_ = rtcp_receiver; 38 rtcp_receiver_ = rtcp_receiver;
41 } 39 }
42 int SendPacket(int /*ch*/, const void* /*data*/, size_t /*len*/) override { 40 int SendPacket(int /*ch*/, const void* /*data*/, size_t /*len*/) override {
43 ADD_FAILURE(); // FAIL() gives a compile error. 41 ADD_FAILURE(); // FAIL() gives a compile error.
44 return -1; 42 return -1;
45 } 43 }
46 44
47 // Injects an RTCP packet into the receiver. 45 // Injects an RTCP packet into the receiver.
48 int SendRTCPPacket(int /* ch */, 46 int SendRTCPPacket(int /* ch */,
(...skipping 26 matching lines...) Expand all
75 kRemoteBitrateEstimatorMinBitrateBps)) { 73 kRemoteBitrateEstimatorMinBitrateBps)) {
76 test_transport_ = new TestTransport(); 74 test_transport_ = new TestTransport();
77 75
78 RtpRtcp::Configuration configuration; 76 RtpRtcp::Configuration configuration;
79 configuration.id = 0; 77 configuration.id = 0;
80 configuration.audio = false; 78 configuration.audio = false;
81 configuration.clock = &system_clock_; 79 configuration.clock = &system_clock_;
82 configuration.outgoing_transport = test_transport_; 80 configuration.outgoing_transport = test_transport_;
83 configuration.remote_bitrate_estimator = remote_bitrate_estimator_.get(); 81 configuration.remote_bitrate_estimator = remote_bitrate_estimator_.get();
84 rtp_rtcp_impl_ = new ModuleRtpRtcpImpl(configuration); 82 rtp_rtcp_impl_ = new ModuleRtpRtcpImpl(configuration);
85 rtcp_receiver_ = new RTCPReceiver(0, &system_clock_, false, NULL, NULL, 83 rtcp_receiver_ =
86 NULL, rtp_rtcp_impl_); 84 new RTCPReceiver(0, &system_clock_, false, nullptr, nullptr, nullptr,
85 nullptr, rtp_rtcp_impl_);
87 test_transport_->SetRTCPReceiver(rtcp_receiver_); 86 test_transport_->SetRTCPReceiver(rtcp_receiver_);
88 } 87 }
89 ~RtcpReceiverTest() { 88 ~RtcpReceiverTest() {
90 delete rtcp_receiver_; 89 delete rtcp_receiver_;
91 delete rtp_rtcp_impl_; 90 delete rtp_rtcp_impl_;
92 delete test_transport_; 91 delete test_transport_;
93 } 92 }
94 93
95 // Injects an RTCP packet into the receiver. 94 // Injects an RTCP packet into the receiver.
96 // Returns 0 for OK, non-0 for failure. 95 // Returns 0 for OK, non-0 for failure.
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 } 358 }
360 359
361 TEST_F(RtcpReceiverTest, GetRtt) { 360 TEST_F(RtcpReceiverTest, GetRtt) {
362 const uint32_t kSenderSsrc = 0x10203; 361 const uint32_t kSenderSsrc = 0x10203;
363 const uint32_t kSourceSsrc = 0x123456; 362 const uint32_t kSourceSsrc = 0x123456;
364 std::set<uint32_t> ssrcs; 363 std::set<uint32_t> ssrcs;
365 ssrcs.insert(kSourceSsrc); 364 ssrcs.insert(kSourceSsrc);
366 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs); 365 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs);
367 366
368 // No report block received. 367 // No report block received.
369 EXPECT_EQ(-1, rtcp_receiver_->RTT(kSenderSsrc, NULL, NULL, NULL, NULL)); 368 EXPECT_EQ(
369 -1, rtcp_receiver_->RTT(kSenderSsrc, nullptr, nullptr, nullptr, nullptr));
370 370
371 rtcp::ReportBlock rb; 371 rtcp::ReportBlock rb;
372 rb.To(kSourceSsrc); 372 rb.To(kSourceSsrc);
373 rtcp::ReceiverReport rr; 373 rtcp::ReceiverReport rr;
374 rr.From(kSenderSsrc); 374 rr.From(kSenderSsrc);
375 rr.WithReportBlock(rb); 375 rr.WithReportBlock(rb);
376 rtc::scoped_ptr<rtcp::RawPacket> packet(rr.Build()); 376 rtc::scoped_ptr<rtcp::RawPacket> packet(rr.Build());
377 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 377 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
378 EXPECT_EQ(kSenderSsrc, rtcp_packet_info_.remoteSSRC); 378 EXPECT_EQ(kSenderSsrc, rtcp_packet_info_.remoteSSRC);
379 EXPECT_EQ(kRtcpRr, rtcp_packet_info_.rtcpPacketTypeFlags); 379 EXPECT_EQ(kRtcpRr, rtcp_packet_info_.rtcpPacketTypeFlags);
380 EXPECT_EQ(1u, rtcp_packet_info_.report_blocks.size()); 380 EXPECT_EQ(1u, rtcp_packet_info_.report_blocks.size());
381 EXPECT_EQ(0, rtcp_receiver_->RTT(kSenderSsrc, NULL, NULL, NULL, NULL)); 381 EXPECT_EQ(
382 0, rtcp_receiver_->RTT(kSenderSsrc, nullptr, nullptr, nullptr, nullptr));
382 383
383 // Report block not received. 384 // Report block not received.
384 EXPECT_EQ(-1, rtcp_receiver_->RTT(kSenderSsrc + 1, NULL, NULL, NULL, NULL)); 385 EXPECT_EQ(-1, rtcp_receiver_->RTT(kSenderSsrc + 1, nullptr, nullptr, nullptr,
386 nullptr));
385 } 387 }
386 388
387 TEST_F(RtcpReceiverTest, InjectIjWithNoItem) { 389 TEST_F(RtcpReceiverTest, InjectIjWithNoItem) {
388 rtcp::Ij ij; 390 rtcp::Ij ij;
389 rtc::scoped_ptr<rtcp::RawPacket> packet(ij.Build()); 391 rtc::scoped_ptr<rtcp::RawPacket> packet(ij.Build());
390 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 392 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
391 EXPECT_EQ(0U, rtcp_packet_info_.rtcpPacketTypeFlags); 393 EXPECT_EQ(0U, rtcp_packet_info_.rtcpPacketTypeFlags);
392 } 394 }
393 395
394 TEST_F(RtcpReceiverTest, InjectIjWithOneItem) { 396 TEST_F(RtcpReceiverTest, InjectIjWithOneItem) {
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 588
587 const uint8_t kLossRate = 123; 589 const uint8_t kLossRate = 123;
588 rtcp::VoipMetric voip_metric; 590 rtcp::VoipMetric voip_metric;
589 voip_metric.To(kSourceSsrc); 591 voip_metric.To(kSourceSsrc);
590 voip_metric.LossRate(kLossRate); 592 voip_metric.LossRate(kLossRate);
591 rtcp::Xr xr; 593 rtcp::Xr xr;
592 xr.From(0x2345); 594 xr.From(0x2345);
593 xr.WithVoipMetric(&voip_metric); 595 xr.WithVoipMetric(&voip_metric);
594 rtc::scoped_ptr<rtcp::RawPacket> packet(xr.Build()); 596 rtc::scoped_ptr<rtcp::RawPacket> packet(xr.Build());
595 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 597 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
596 ASSERT_TRUE(rtcp_packet_info_.VoIPMetric != NULL); 598 ASSERT_TRUE(rtcp_packet_info_.VoIPMetric != nullptr);
597 EXPECT_EQ(kLossRate, rtcp_packet_info_.VoIPMetric->lossRate); 599 EXPECT_EQ(kLossRate, rtcp_packet_info_.VoIPMetric->lossRate);
598 EXPECT_EQ(kRtcpXrVoipMetric, rtcp_packet_info_.rtcpPacketTypeFlags); 600 EXPECT_EQ(kRtcpXrVoipMetric, rtcp_packet_info_.rtcpPacketTypeFlags);
599 } 601 }
600 602
601 TEST_F(RtcpReceiverTest, XrVoipPacketNotToUsIgnored) { 603 TEST_F(RtcpReceiverTest, XrVoipPacketNotToUsIgnored) {
602 const uint32_t kSourceSsrc = 0x123456; 604 const uint32_t kSourceSsrc = 0x123456;
603 std::set<uint32_t> ssrcs; 605 std::set<uint32_t> ssrcs;
604 ssrcs.insert(kSourceSsrc); 606 ssrcs.insert(kSourceSsrc);
605 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs); 607 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs);
606 608
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length())); 842 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length()));
841 system_clock_.AdvanceTimeMilliseconds(kRtcpIntervalMs + 1); 843 system_clock_.AdvanceTimeMilliseconds(kRtcpIntervalMs + 1);
842 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 844 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
843 EXPECT_TRUE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs)); 845 EXPECT_TRUE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs));
844 system_clock_.AdvanceTimeMilliseconds(2 * kRtcpIntervalMs); 846 system_clock_.AdvanceTimeMilliseconds(2 * kRtcpIntervalMs);
845 EXPECT_TRUE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 847 EXPECT_TRUE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
846 } 848 }
847 849
848 TEST_F(RtcpReceiverTest, TmmbrReceivedWithNoIncomingPacket) { 850 TEST_F(RtcpReceiverTest, TmmbrReceivedWithNoIncomingPacket) {
849 // This call is expected to fail because no data has arrived. 851 // This call is expected to fail because no data has arrived.
850 EXPECT_EQ(-1, rtcp_receiver_->TMMBRReceived(0, 0, NULL)); 852 EXPECT_EQ(-1, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
851 } 853 }
852 854
853 TEST_F(RtcpReceiverTest, TmmbrPacketAccepted) { 855 TEST_F(RtcpReceiverTest, TmmbrPacketAccepted) {
854 const uint32_t kMediaFlowSsrc = 0x2040608; 856 const uint32_t kMediaFlowSsrc = 0x2040608;
855 const uint32_t kSenderSsrc = 0x10203; 857 const uint32_t kSenderSsrc = 0x10203;
856 std::set<uint32_t> ssrcs; 858 std::set<uint32_t> ssrcs;
857 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. 859 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above.
858 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); 860 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs);
859 861
860 rtcp::Tmmbr tmmbr; 862 rtcp::Tmmbr tmmbr;
861 tmmbr.From(kSenderSsrc); 863 tmmbr.From(kSenderSsrc);
862 tmmbr.To(kMediaFlowSsrc); 864 tmmbr.To(kMediaFlowSsrc);
863 tmmbr.WithBitrateKbps(30); 865 tmmbr.WithBitrateKbps(30);
864 866
865 rtcp::SenderReport sr; 867 rtcp::SenderReport sr;
866 sr.From(kSenderSsrc); 868 sr.From(kSenderSsrc);
867 sr.Append(&tmmbr); 869 sr.Append(&tmmbr);
868 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); 870 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build());
869 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 871 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
870 872
871 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(0, 0, NULL)); 873 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
872 TMMBRSet candidate_set; 874 TMMBRSet candidate_set;
873 candidate_set.VerifyAndAllocateSet(1); 875 candidate_set.VerifyAndAllocateSet(1);
874 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(1, 0, &candidate_set)); 876 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(1, 0, &candidate_set));
875 EXPECT_LT(0U, candidate_set.Tmmbr(0)); 877 EXPECT_LT(0U, candidate_set.Tmmbr(0));
876 EXPECT_EQ(kSenderSsrc, candidate_set.Ssrc(0)); 878 EXPECT_EQ(kSenderSsrc, candidate_set.Ssrc(0));
877 } 879 }
878 880
879 TEST_F(RtcpReceiverTest, TmmbrPacketNotForUsIgnored) { 881 TEST_F(RtcpReceiverTest, TmmbrPacketNotForUsIgnored) {
880 const uint32_t kMediaFlowSsrc = 0x2040608; 882 const uint32_t kMediaFlowSsrc = 0x2040608;
881 const uint32_t kSenderSsrc = 0x10203; 883 const uint32_t kSenderSsrc = 0x10203;
882 884
883 rtcp::Tmmbr tmmbr; 885 rtcp::Tmmbr tmmbr;
884 tmmbr.From(kSenderSsrc); 886 tmmbr.From(kSenderSsrc);
885 tmmbr.To(kMediaFlowSsrc + 1); // This SSRC is not what we are sending. 887 tmmbr.To(kMediaFlowSsrc + 1); // This SSRC is not what we are sending.
886 tmmbr.WithBitrateKbps(30); 888 tmmbr.WithBitrateKbps(30);
887 889
888 rtcp::SenderReport sr; 890 rtcp::SenderReport sr;
889 sr.From(kSenderSsrc); 891 sr.From(kSenderSsrc);
890 sr.Append(&tmmbr); 892 sr.Append(&tmmbr);
891 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); 893 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build());
892 894
893 std::set<uint32_t> ssrcs; 895 std::set<uint32_t> ssrcs;
894 ssrcs.insert(kMediaFlowSsrc); 896 ssrcs.insert(kMediaFlowSsrc);
895 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); 897 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs);
896 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 898 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
897 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, NULL)); 899 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
898 } 900 }
899 901
900 TEST_F(RtcpReceiverTest, TmmbrPacketZeroRateIgnored) { 902 TEST_F(RtcpReceiverTest, TmmbrPacketZeroRateIgnored) {
901 const uint32_t kMediaFlowSsrc = 0x2040608; 903 const uint32_t kMediaFlowSsrc = 0x2040608;
902 const uint32_t kSenderSsrc = 0x10203; 904 const uint32_t kSenderSsrc = 0x10203;
903 std::set<uint32_t> ssrcs; 905 std::set<uint32_t> ssrcs;
904 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. 906 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above.
905 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); 907 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs);
906 908
907 rtcp::Tmmbr tmmbr; 909 rtcp::Tmmbr tmmbr;
908 tmmbr.From(kSenderSsrc); 910 tmmbr.From(kSenderSsrc);
909 tmmbr.To(kMediaFlowSsrc); 911 tmmbr.To(kMediaFlowSsrc);
910 tmmbr.WithBitrateKbps(0); 912 tmmbr.WithBitrateKbps(0);
911 913
912 rtcp::SenderReport sr; 914 rtcp::SenderReport sr;
913 sr.From(kSenderSsrc); 915 sr.From(kSenderSsrc);
914 sr.Append(&tmmbr); 916 sr.Append(&tmmbr);
915 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); 917 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build());
916 918
917 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 919 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
918 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, NULL)); 920 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
919 } 921 }
920 922
921 TEST_F(RtcpReceiverTest, TmmbrThreeConstraintsTimeOut) { 923 TEST_F(RtcpReceiverTest, TmmbrThreeConstraintsTimeOut) {
922 const uint32_t kMediaFlowSsrc = 0x2040608; 924 const uint32_t kMediaFlowSsrc = 0x2040608;
923 const uint32_t kSenderSsrc = 0x10203; 925 const uint32_t kSenderSsrc = 0x10203;
924 std::set<uint32_t> ssrcs; 926 std::set<uint32_t> ssrcs;
925 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. 927 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above.
926 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); 928 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs);
927 929
928 // Inject 3 packets "from" kSenderSsrc, kSenderSsrc+1, kSenderSsrc+2. 930 // Inject 3 packets "from" kSenderSsrc, kSenderSsrc+1, kSenderSsrc+2.
929 // The times of arrival are starttime + 0, starttime + 5 and starttime + 10. 931 // The times of arrival are starttime + 0, starttime + 5 and starttime + 10.
930 for (uint32_t ssrc = kSenderSsrc; ssrc < kSenderSsrc + 3; ++ssrc) { 932 for (uint32_t ssrc = kSenderSsrc; ssrc < kSenderSsrc + 3; ++ssrc) {
931 rtcp::Tmmbr tmmbr; 933 rtcp::Tmmbr tmmbr;
932 tmmbr.From(ssrc); 934 tmmbr.From(ssrc);
933 tmmbr.To(kMediaFlowSsrc); 935 tmmbr.To(kMediaFlowSsrc);
934 tmmbr.WithBitrateKbps(30); 936 tmmbr.WithBitrateKbps(30);
935 937
936 rtcp::SenderReport sr; 938 rtcp::SenderReport sr;
937 sr.From(ssrc); 939 sr.From(ssrc);
938 sr.Append(&tmmbr); 940 sr.Append(&tmmbr);
939 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); 941 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build());
940 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 942 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
941 // 5 seconds between each packet. 943 // 5 seconds between each packet.
942 system_clock_.AdvanceTimeMilliseconds(5000); 944 system_clock_.AdvanceTimeMilliseconds(5000);
943 } 945 }
944 // It is now starttime + 15. 946 // It is now starttime + 15.
945 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(0, 0, NULL)); 947 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
946 TMMBRSet candidate_set; 948 TMMBRSet candidate_set;
947 candidate_set.VerifyAndAllocateSet(3); 949 candidate_set.VerifyAndAllocateSet(3);
948 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(3, 0, &candidate_set)); 950 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(3, 0, &candidate_set));
949 EXPECT_LT(0U, candidate_set.Tmmbr(0)); 951 EXPECT_LT(0U, candidate_set.Tmmbr(0));
950 // We expect the timeout to be 25 seconds. Advance the clock by 12 952 // We expect the timeout to be 25 seconds. Advance the clock by 12
951 // seconds, timing out the first packet. 953 // seconds, timing out the first packet.
952 system_clock_.AdvanceTimeMilliseconds(12000); 954 system_clock_.AdvanceTimeMilliseconds(12000);
953 // Odd behaviour: Just counting them does not trigger the timeout. 955 // Odd behaviour: Just counting them does not trigger the timeout.
954 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(0, 0, NULL)); 956 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
955 EXPECT_EQ(2, rtcp_receiver_->TMMBRReceived(3, 0, &candidate_set)); 957 EXPECT_EQ(2, rtcp_receiver_->TMMBRReceived(3, 0, &candidate_set));
956 EXPECT_EQ(kSenderSsrc + 1, candidate_set.Ssrc(0)); 958 EXPECT_EQ(kSenderSsrc + 1, candidate_set.Ssrc(0));
957 } 959 }
958 960
959 TEST_F(RtcpReceiverTest, Callbacks) { 961 TEST_F(RtcpReceiverTest, Callbacks) {
960 class RtcpCallbackImpl : public RtcpStatisticsCallback { 962 class RtcpCallbackImpl : public RtcpStatisticsCallback {
961 public: 963 public:
962 RtcpCallbackImpl() : RtcpStatisticsCallback(), ssrc_(0) {} 964 RtcpCallbackImpl() : RtcpStatisticsCallback(), ssrc_(0) {}
963 virtual ~RtcpCallbackImpl() {} 965 virtual ~RtcpCallbackImpl() {}
964 966
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 rb1.WithJitter(kJitter); 1007 rb1.WithJitter(kJitter);
1006 1008
1007 rtcp::ReceiverReport rr1; 1009 rtcp::ReceiverReport rr1;
1008 rr1.From(kSenderSsrc); 1010 rr1.From(kSenderSsrc);
1009 rr1.WithReportBlock(rb1); 1011 rr1.WithReportBlock(rb1);
1010 rtc::scoped_ptr<rtcp::RawPacket> p1(rr1.Build()); 1012 rtc::scoped_ptr<rtcp::RawPacket> p1(rr1.Build());
1011 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length())); 1013 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length()));
1012 EXPECT_TRUE(callback.Matches(kSourceSsrc, kSequenceNumber, kFractionLoss, 1014 EXPECT_TRUE(callback.Matches(kSourceSsrc, kSequenceNumber, kFractionLoss,
1013 kCumulativeLoss, kJitter)); 1015 kCumulativeLoss, kJitter));
1014 1016
1015 rtcp_receiver_->RegisterRtcpStatisticsCallback(NULL); 1017 rtcp_receiver_->RegisterRtcpStatisticsCallback(nullptr);
1016 1018
1017 // Add arbitrary numbers, callback should not be called (retain old values). 1019 // Add arbitrary numbers, callback should not be called (retain old values).
1018 rtcp::ReportBlock rb2; 1020 rtcp::ReportBlock rb2;
1019 rb2.To(kSourceSsrc); 1021 rb2.To(kSourceSsrc);
1020 rb2.WithExtHighestSeqNum(kSequenceNumber + 1); 1022 rb2.WithExtHighestSeqNum(kSequenceNumber + 1);
1021 rb2.WithFractionLost(42); 1023 rb2.WithFractionLost(42);
1022 rb2.WithCumulativeLost(137); 1024 rb2.WithCumulativeLost(137);
1023 rb2.WithJitter(4711); 1025 rb2.WithJitter(4711);
1024 1026
1025 rtcp::ReceiverReport rr2; 1027 rtcp::ReceiverReport rr2;
1026 rr2.From(kSenderSsrc); 1028 rr2.From(kSenderSsrc);
1027 rr2.WithReportBlock(rb2); 1029 rr2.WithReportBlock(rb2);
1028 rtc::scoped_ptr<rtcp::RawPacket> p2(rr2.Build()); 1030 rtc::scoped_ptr<rtcp::RawPacket> p2(rr2.Build());
1029 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length())); 1031 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length()));
1030 EXPECT_TRUE(callback.Matches(kSourceSsrc, kSequenceNumber, kFractionLoss, 1032 EXPECT_TRUE(callback.Matches(kSourceSsrc, kSequenceNumber, kFractionLoss,
1031 kCumulativeLoss, kJitter)); 1033 kCumulativeLoss, kJitter));
1032 } 1034 }
1033 1035
1034 } // Anonymous namespace 1036 } // Anonymous namespace
1035 1037
1036 } // namespace webrtc 1038 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698