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

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

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