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

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

Issue 1362303002: Reland "Wire up send-side bandwidth estimation." (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 2 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(const void* /*data*/, size_t /*len*/) override { 40 int SendPacket(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 int SendRTCPPacket(const void* packet, size_t packet_len) override { 45 int SendRTCPPacket(const void* packet, size_t packet_len) override {
48 ADD_FAILURE(); 46 ADD_FAILURE();
(...skipping 22 matching lines...) Expand all
71 &system_clock_, 69 &system_clock_,
72 kRemoteBitrateEstimatorMinBitrateBps)) { 70 kRemoteBitrateEstimatorMinBitrateBps)) {
73 test_transport_ = new TestTransport(); 71 test_transport_ = new TestTransport();
74 72
75 RtpRtcp::Configuration configuration; 73 RtpRtcp::Configuration configuration;
76 configuration.audio = false; 74 configuration.audio = false;
77 configuration.clock = &system_clock_; 75 configuration.clock = &system_clock_;
78 configuration.outgoing_transport = test_transport_; 76 configuration.outgoing_transport = test_transport_;
79 configuration.remote_bitrate_estimator = remote_bitrate_estimator_.get(); 77 configuration.remote_bitrate_estimator = remote_bitrate_estimator_.get();
80 rtp_rtcp_impl_ = new ModuleRtpRtcpImpl(configuration); 78 rtp_rtcp_impl_ = new ModuleRtpRtcpImpl(configuration);
81 rtcp_receiver_ = new RTCPReceiver(&system_clock_, false, NULL, NULL, NULL, 79 rtcp_receiver_ = new RTCPReceiver(&system_clock_, false, nullptr, nullptr,
82 rtp_rtcp_impl_); 80 nullptr, nullptr, rtp_rtcp_impl_);
83 test_transport_->SetRTCPReceiver(rtcp_receiver_); 81 test_transport_->SetRTCPReceiver(rtcp_receiver_);
84 } 82 }
85 ~RtcpReceiverTest() { 83 ~RtcpReceiverTest() {
86 delete rtcp_receiver_; 84 delete rtcp_receiver_;
87 delete rtp_rtcp_impl_; 85 delete rtp_rtcp_impl_;
88 delete test_transport_; 86 delete test_transport_;
89 } 87 }
90 88
91 // Injects an RTCP packet into the receiver. 89 // Injects an RTCP packet into the receiver.
92 // Returns 0 for OK, non-0 for failure. 90 // Returns 0 for OK, non-0 for failure.
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 } 353 }
356 354
357 TEST_F(RtcpReceiverTest, GetRtt) { 355 TEST_F(RtcpReceiverTest, GetRtt) {
358 const uint32_t kSenderSsrc = 0x10203; 356 const uint32_t kSenderSsrc = 0x10203;
359 const uint32_t kSourceSsrc = 0x123456; 357 const uint32_t kSourceSsrc = 0x123456;
360 std::set<uint32_t> ssrcs; 358 std::set<uint32_t> ssrcs;
361 ssrcs.insert(kSourceSsrc); 359 ssrcs.insert(kSourceSsrc);
362 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs); 360 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs);
363 361
364 // No report block received. 362 // No report block received.
365 EXPECT_EQ(-1, rtcp_receiver_->RTT(kSenderSsrc, NULL, NULL, NULL, NULL)); 363 EXPECT_EQ(
364 -1, rtcp_receiver_->RTT(kSenderSsrc, nullptr, nullptr, nullptr, nullptr));
366 365
367 rtcp::ReportBlock rb; 366 rtcp::ReportBlock rb;
368 rb.To(kSourceSsrc); 367 rb.To(kSourceSsrc);
369 rtcp::ReceiverReport rr; 368 rtcp::ReceiverReport rr;
370 rr.From(kSenderSsrc); 369 rr.From(kSenderSsrc);
371 rr.WithReportBlock(rb); 370 rr.WithReportBlock(rb);
372 rtc::scoped_ptr<rtcp::RawPacket> packet(rr.Build()); 371 rtc::scoped_ptr<rtcp::RawPacket> packet(rr.Build());
373 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 372 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
374 EXPECT_EQ(kSenderSsrc, rtcp_packet_info_.remoteSSRC); 373 EXPECT_EQ(kSenderSsrc, rtcp_packet_info_.remoteSSRC);
375 EXPECT_EQ(kRtcpRr, rtcp_packet_info_.rtcpPacketTypeFlags); 374 EXPECT_EQ(kRtcpRr, rtcp_packet_info_.rtcpPacketTypeFlags);
376 EXPECT_EQ(1u, rtcp_packet_info_.report_blocks.size()); 375 EXPECT_EQ(1u, rtcp_packet_info_.report_blocks.size());
377 EXPECT_EQ(0, rtcp_receiver_->RTT(kSenderSsrc, NULL, NULL, NULL, NULL)); 376 EXPECT_EQ(
377 0, rtcp_receiver_->RTT(kSenderSsrc, nullptr, nullptr, nullptr, nullptr));
378 378
379 // Report block not received. 379 // Report block not received.
380 EXPECT_EQ(-1, rtcp_receiver_->RTT(kSenderSsrc + 1, NULL, NULL, NULL, NULL)); 380 EXPECT_EQ(-1, rtcp_receiver_->RTT(kSenderSsrc + 1, nullptr, nullptr, nullptr,
381 nullptr));
381 } 382 }
382 383
383 TEST_F(RtcpReceiverTest, InjectIjWithNoItem) { 384 TEST_F(RtcpReceiverTest, InjectIjWithNoItem) {
384 rtcp::Ij ij; 385 rtcp::Ij ij;
385 rtc::scoped_ptr<rtcp::RawPacket> packet(ij.Build()); 386 rtc::scoped_ptr<rtcp::RawPacket> packet(ij.Build());
386 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 387 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
387 EXPECT_EQ(0U, rtcp_packet_info_.rtcpPacketTypeFlags); 388 EXPECT_EQ(0U, rtcp_packet_info_.rtcpPacketTypeFlags);
388 } 389 }
389 390
390 TEST_F(RtcpReceiverTest, InjectIjWithOneItem) { 391 TEST_F(RtcpReceiverTest, InjectIjWithOneItem) {
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 583
583 const uint8_t kLossRate = 123; 584 const uint8_t kLossRate = 123;
584 rtcp::VoipMetric voip_metric; 585 rtcp::VoipMetric voip_metric;
585 voip_metric.To(kSourceSsrc); 586 voip_metric.To(kSourceSsrc);
586 voip_metric.LossRate(kLossRate); 587 voip_metric.LossRate(kLossRate);
587 rtcp::Xr xr; 588 rtcp::Xr xr;
588 xr.From(0x2345); 589 xr.From(0x2345);
589 xr.WithVoipMetric(&voip_metric); 590 xr.WithVoipMetric(&voip_metric);
590 rtc::scoped_ptr<rtcp::RawPacket> packet(xr.Build()); 591 rtc::scoped_ptr<rtcp::RawPacket> packet(xr.Build());
591 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 592 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
592 ASSERT_TRUE(rtcp_packet_info_.VoIPMetric != NULL); 593 ASSERT_TRUE(rtcp_packet_info_.VoIPMetric != nullptr);
593 EXPECT_EQ(kLossRate, rtcp_packet_info_.VoIPMetric->lossRate); 594 EXPECT_EQ(kLossRate, rtcp_packet_info_.VoIPMetric->lossRate);
594 EXPECT_EQ(kRtcpXrVoipMetric, rtcp_packet_info_.rtcpPacketTypeFlags); 595 EXPECT_EQ(kRtcpXrVoipMetric, rtcp_packet_info_.rtcpPacketTypeFlags);
595 } 596 }
596 597
597 TEST_F(RtcpReceiverTest, XrVoipPacketNotToUsIgnored) { 598 TEST_F(RtcpReceiverTest, XrVoipPacketNotToUsIgnored) {
598 const uint32_t kSourceSsrc = 0x123456; 599 const uint32_t kSourceSsrc = 0x123456;
599 std::set<uint32_t> ssrcs; 600 std::set<uint32_t> ssrcs;
600 ssrcs.insert(kSourceSsrc); 601 ssrcs.insert(kSourceSsrc);
601 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs); 602 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs);
602 603
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length())); 837 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length()));
837 system_clock_.AdvanceTimeMilliseconds(kRtcpIntervalMs + 1); 838 system_clock_.AdvanceTimeMilliseconds(kRtcpIntervalMs + 1);
838 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 839 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
839 EXPECT_TRUE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs)); 840 EXPECT_TRUE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs));
840 system_clock_.AdvanceTimeMilliseconds(2 * kRtcpIntervalMs); 841 system_clock_.AdvanceTimeMilliseconds(2 * kRtcpIntervalMs);
841 EXPECT_TRUE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 842 EXPECT_TRUE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
842 } 843 }
843 844
844 TEST_F(RtcpReceiverTest, TmmbrReceivedWithNoIncomingPacket) { 845 TEST_F(RtcpReceiverTest, TmmbrReceivedWithNoIncomingPacket) {
845 // This call is expected to fail because no data has arrived. 846 // This call is expected to fail because no data has arrived.
846 EXPECT_EQ(-1, rtcp_receiver_->TMMBRReceived(0, 0, NULL)); 847 EXPECT_EQ(-1, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
847 } 848 }
848 849
849 TEST_F(RtcpReceiverTest, TmmbrPacketAccepted) { 850 TEST_F(RtcpReceiverTest, TmmbrPacketAccepted) {
850 const uint32_t kMediaFlowSsrc = 0x2040608; 851 const uint32_t kMediaFlowSsrc = 0x2040608;
851 const uint32_t kSenderSsrc = 0x10203; 852 const uint32_t kSenderSsrc = 0x10203;
852 std::set<uint32_t> ssrcs; 853 std::set<uint32_t> ssrcs;
853 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. 854 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above.
854 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); 855 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs);
855 856
856 rtcp::Tmmbr tmmbr; 857 rtcp::Tmmbr tmmbr;
857 tmmbr.From(kSenderSsrc); 858 tmmbr.From(kSenderSsrc);
858 tmmbr.To(kMediaFlowSsrc); 859 tmmbr.To(kMediaFlowSsrc);
859 tmmbr.WithBitrateKbps(30); 860 tmmbr.WithBitrateKbps(30);
860 861
861 rtcp::SenderReport sr; 862 rtcp::SenderReport sr;
862 sr.From(kSenderSsrc); 863 sr.From(kSenderSsrc);
863 sr.Append(&tmmbr); 864 sr.Append(&tmmbr);
864 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); 865 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build());
865 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 866 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
866 867
867 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(0, 0, NULL)); 868 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
868 TMMBRSet candidate_set; 869 TMMBRSet candidate_set;
869 candidate_set.VerifyAndAllocateSet(1); 870 candidate_set.VerifyAndAllocateSet(1);
870 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(1, 0, &candidate_set)); 871 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(1, 0, &candidate_set));
871 EXPECT_LT(0U, candidate_set.Tmmbr(0)); 872 EXPECT_LT(0U, candidate_set.Tmmbr(0));
872 EXPECT_EQ(kSenderSsrc, candidate_set.Ssrc(0)); 873 EXPECT_EQ(kSenderSsrc, candidate_set.Ssrc(0));
873 } 874 }
874 875
875 TEST_F(RtcpReceiverTest, TmmbrPacketNotForUsIgnored) { 876 TEST_F(RtcpReceiverTest, TmmbrPacketNotForUsIgnored) {
876 const uint32_t kMediaFlowSsrc = 0x2040608; 877 const uint32_t kMediaFlowSsrc = 0x2040608;
877 const uint32_t kSenderSsrc = 0x10203; 878 const uint32_t kSenderSsrc = 0x10203;
878 879
879 rtcp::Tmmbr tmmbr; 880 rtcp::Tmmbr tmmbr;
880 tmmbr.From(kSenderSsrc); 881 tmmbr.From(kSenderSsrc);
881 tmmbr.To(kMediaFlowSsrc + 1); // This SSRC is not what we are sending. 882 tmmbr.To(kMediaFlowSsrc + 1); // This SSRC is not what we are sending.
882 tmmbr.WithBitrateKbps(30); 883 tmmbr.WithBitrateKbps(30);
883 884
884 rtcp::SenderReport sr; 885 rtcp::SenderReport sr;
885 sr.From(kSenderSsrc); 886 sr.From(kSenderSsrc);
886 sr.Append(&tmmbr); 887 sr.Append(&tmmbr);
887 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); 888 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build());
888 889
889 std::set<uint32_t> ssrcs; 890 std::set<uint32_t> ssrcs;
890 ssrcs.insert(kMediaFlowSsrc); 891 ssrcs.insert(kMediaFlowSsrc);
891 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); 892 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs);
892 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 893 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
893 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, NULL)); 894 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
894 } 895 }
895 896
896 TEST_F(RtcpReceiverTest, TmmbrPacketZeroRateIgnored) { 897 TEST_F(RtcpReceiverTest, TmmbrPacketZeroRateIgnored) {
897 const uint32_t kMediaFlowSsrc = 0x2040608; 898 const uint32_t kMediaFlowSsrc = 0x2040608;
898 const uint32_t kSenderSsrc = 0x10203; 899 const uint32_t kSenderSsrc = 0x10203;
899 std::set<uint32_t> ssrcs; 900 std::set<uint32_t> ssrcs;
900 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. 901 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above.
901 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); 902 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs);
902 903
903 rtcp::Tmmbr tmmbr; 904 rtcp::Tmmbr tmmbr;
904 tmmbr.From(kSenderSsrc); 905 tmmbr.From(kSenderSsrc);
905 tmmbr.To(kMediaFlowSsrc); 906 tmmbr.To(kMediaFlowSsrc);
906 tmmbr.WithBitrateKbps(0); 907 tmmbr.WithBitrateKbps(0);
907 908
908 rtcp::SenderReport sr; 909 rtcp::SenderReport sr;
909 sr.From(kSenderSsrc); 910 sr.From(kSenderSsrc);
910 sr.Append(&tmmbr); 911 sr.Append(&tmmbr);
911 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); 912 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build());
912 913
913 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 914 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
914 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, NULL)); 915 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
915 } 916 }
916 917
917 TEST_F(RtcpReceiverTest, TmmbrThreeConstraintsTimeOut) { 918 TEST_F(RtcpReceiverTest, TmmbrThreeConstraintsTimeOut) {
918 const uint32_t kMediaFlowSsrc = 0x2040608; 919 const uint32_t kMediaFlowSsrc = 0x2040608;
919 const uint32_t kSenderSsrc = 0x10203; 920 const uint32_t kSenderSsrc = 0x10203;
920 std::set<uint32_t> ssrcs; 921 std::set<uint32_t> ssrcs;
921 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. 922 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above.
922 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); 923 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs);
923 924
924 // Inject 3 packets "from" kSenderSsrc, kSenderSsrc+1, kSenderSsrc+2. 925 // Inject 3 packets "from" kSenderSsrc, kSenderSsrc+1, kSenderSsrc+2.
925 // The times of arrival are starttime + 0, starttime + 5 and starttime + 10. 926 // The times of arrival are starttime + 0, starttime + 5 and starttime + 10.
926 for (uint32_t ssrc = kSenderSsrc; ssrc < kSenderSsrc + 3; ++ssrc) { 927 for (uint32_t ssrc = kSenderSsrc; ssrc < kSenderSsrc + 3; ++ssrc) {
927 rtcp::Tmmbr tmmbr; 928 rtcp::Tmmbr tmmbr;
928 tmmbr.From(ssrc); 929 tmmbr.From(ssrc);
929 tmmbr.To(kMediaFlowSsrc); 930 tmmbr.To(kMediaFlowSsrc);
930 tmmbr.WithBitrateKbps(30); 931 tmmbr.WithBitrateKbps(30);
931 932
932 rtcp::SenderReport sr; 933 rtcp::SenderReport sr;
933 sr.From(ssrc); 934 sr.From(ssrc);
934 sr.Append(&tmmbr); 935 sr.Append(&tmmbr);
935 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); 936 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build());
936 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 937 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
937 // 5 seconds between each packet. 938 // 5 seconds between each packet.
938 system_clock_.AdvanceTimeMilliseconds(5000); 939 system_clock_.AdvanceTimeMilliseconds(5000);
939 } 940 }
940 // It is now starttime + 15. 941 // It is now starttime + 15.
941 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(0, 0, NULL)); 942 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
942 TMMBRSet candidate_set; 943 TMMBRSet candidate_set;
943 candidate_set.VerifyAndAllocateSet(3); 944 candidate_set.VerifyAndAllocateSet(3);
944 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(3, 0, &candidate_set)); 945 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(3, 0, &candidate_set));
945 EXPECT_LT(0U, candidate_set.Tmmbr(0)); 946 EXPECT_LT(0U, candidate_set.Tmmbr(0));
946 // We expect the timeout to be 25 seconds. Advance the clock by 12 947 // We expect the timeout to be 25 seconds. Advance the clock by 12
947 // seconds, timing out the first packet. 948 // seconds, timing out the first packet.
948 system_clock_.AdvanceTimeMilliseconds(12000); 949 system_clock_.AdvanceTimeMilliseconds(12000);
949 // Odd behaviour: Just counting them does not trigger the timeout. 950 // Odd behaviour: Just counting them does not trigger the timeout.
950 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(0, 0, NULL)); 951 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
951 EXPECT_EQ(2, rtcp_receiver_->TMMBRReceived(3, 0, &candidate_set)); 952 EXPECT_EQ(2, rtcp_receiver_->TMMBRReceived(3, 0, &candidate_set));
952 EXPECT_EQ(kSenderSsrc + 1, candidate_set.Ssrc(0)); 953 EXPECT_EQ(kSenderSsrc + 1, candidate_set.Ssrc(0));
953 } 954 }
954 955
955 TEST_F(RtcpReceiverTest, Callbacks) { 956 TEST_F(RtcpReceiverTest, Callbacks) {
956 class RtcpCallbackImpl : public RtcpStatisticsCallback { 957 class RtcpCallbackImpl : public RtcpStatisticsCallback {
957 public: 958 public:
958 RtcpCallbackImpl() : RtcpStatisticsCallback(), ssrc_(0) {} 959 RtcpCallbackImpl() : RtcpStatisticsCallback(), ssrc_(0) {}
959 virtual ~RtcpCallbackImpl() {} 960 virtual ~RtcpCallbackImpl() {}
960 961
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 rb1.WithJitter(kJitter); 1002 rb1.WithJitter(kJitter);
1002 1003
1003 rtcp::ReceiverReport rr1; 1004 rtcp::ReceiverReport rr1;
1004 rr1.From(kSenderSsrc); 1005 rr1.From(kSenderSsrc);
1005 rr1.WithReportBlock(rb1); 1006 rr1.WithReportBlock(rb1);
1006 rtc::scoped_ptr<rtcp::RawPacket> p1(rr1.Build()); 1007 rtc::scoped_ptr<rtcp::RawPacket> p1(rr1.Build());
1007 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length())); 1008 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length()));
1008 EXPECT_TRUE(callback.Matches(kSourceSsrc, kSequenceNumber, kFractionLoss, 1009 EXPECT_TRUE(callback.Matches(kSourceSsrc, kSequenceNumber, kFractionLoss,
1009 kCumulativeLoss, kJitter)); 1010 kCumulativeLoss, kJitter));
1010 1011
1011 rtcp_receiver_->RegisterRtcpStatisticsCallback(NULL); 1012 rtcp_receiver_->RegisterRtcpStatisticsCallback(nullptr);
1012 1013
1013 // Add arbitrary numbers, callback should not be called (retain old values). 1014 // Add arbitrary numbers, callback should not be called (retain old values).
1014 rtcp::ReportBlock rb2; 1015 rtcp::ReportBlock rb2;
1015 rb2.To(kSourceSsrc); 1016 rb2.To(kSourceSsrc);
1016 rb2.WithExtHighestSeqNum(kSequenceNumber + 1); 1017 rb2.WithExtHighestSeqNum(kSequenceNumber + 1);
1017 rb2.WithFractionLost(42); 1018 rb2.WithFractionLost(42);
1018 rb2.WithCumulativeLost(137); 1019 rb2.WithCumulativeLost(137);
1019 rb2.WithJitter(4711); 1020 rb2.WithJitter(4711);
1020 1021
1021 rtcp::ReceiverReport rr2; 1022 rtcp::ReceiverReport rr2;
1022 rr2.From(kSenderSsrc); 1023 rr2.From(kSenderSsrc);
1023 rr2.WithReportBlock(rb2); 1024 rr2.WithReportBlock(rb2);
1024 rtc::scoped_ptr<rtcp::RawPacket> p2(rr2.Build()); 1025 rtc::scoped_ptr<rtcp::RawPacket> p2(rr2.Build());
1025 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length())); 1026 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length()));
1026 EXPECT_TRUE(callback.Matches(kSourceSsrc, kSequenceNumber, kFractionLoss, 1027 EXPECT_TRUE(callback.Matches(kSourceSsrc, kSequenceNumber, kFractionLoss,
1027 kCumulativeLoss, kJitter)); 1028 kCumulativeLoss, kJitter));
1028 } 1029 }
1029 1030
1030 } // Anonymous namespace 1031 } // Anonymous namespace
1031 1032
1032 } // namespace webrtc 1033 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_receiver_help.cc ('k') | webrtc/modules/rtp_rtcp/source/rtcp_sender.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698