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

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

Issue 1474693002: [Splitting] TMMBRHelp class simplifted (and disappear because become too simple) (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 7 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 1012 matching lines...) Expand 10 before | Expand all | Expand 10 after
1023 system_clock_.AdvanceTimeMilliseconds(2 * kRtcpIntervalMs); 1023 system_clock_.AdvanceTimeMilliseconds(2 * kRtcpIntervalMs);
1024 EXPECT_EQ(0, InjectRtcpPacket(p2.data(), p2.size())); 1024 EXPECT_EQ(0, InjectRtcpPacket(p2.data(), p2.size()));
1025 system_clock_.AdvanceTimeMilliseconds(kRtcpIntervalMs + 1); 1025 system_clock_.AdvanceTimeMilliseconds(kRtcpIntervalMs + 1);
1026 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 1026 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
1027 EXPECT_TRUE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs)); 1027 EXPECT_TRUE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs));
1028 system_clock_.AdvanceTimeMilliseconds(2 * kRtcpIntervalMs); 1028 system_clock_.AdvanceTimeMilliseconds(2 * kRtcpIntervalMs);
1029 EXPECT_TRUE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 1029 EXPECT_TRUE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
1030 } 1030 }
1031 1031
1032 TEST_F(RtcpReceiverTest, TmmbrReceivedWithNoIncomingPacket) { 1032 TEST_F(RtcpReceiverTest, TmmbrReceivedWithNoIncomingPacket) {
1033 // This call is expected to fail because no data has arrived. 1033 EXPECT_EQ(0u, rtcp_receiver_->TMMBRReceived().size());
1034 EXPECT_EQ(-1, rtcp_receiver_->TMMBRReceived(0, 0, nullptr));
1035 } 1034 }
1036 1035
1037 TEST_F(RtcpReceiverTest, TmmbrPacketAccepted) { 1036 TEST_F(RtcpReceiverTest, TmmbrPacketAccepted) {
1038 const uint32_t kMediaFlowSsrc = 0x2040608; 1037 const uint32_t kMediaFlowSsrc = 0x2040608;
1039 const uint32_t kSenderSsrc = 0x10203; 1038 const uint32_t kSenderSsrc = 0x10203;
1040 std::set<uint32_t> ssrcs; 1039 std::set<uint32_t> ssrcs;
1041 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. 1040 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above.
1042 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); 1041 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs);
1043 1042
1044 rtcp::Tmmbr tmmbr; 1043 rtcp::Tmmbr tmmbr;
1045 tmmbr.From(kSenderSsrc); 1044 tmmbr.From(kSenderSsrc);
1046 tmmbr.WithTmmbr(rtcp::TmmbItem(kMediaFlowSsrc, 30000, 0)); 1045 tmmbr.WithTmmbr(rtcp::TmmbItem(kMediaFlowSsrc, 30000, 0));
1047 1046
1048 rtcp::SenderReport sr; 1047 rtcp::SenderReport sr;
1049 sr.From(kSenderSsrc); 1048 sr.From(kSenderSsrc);
1050 rtcp::CompoundPacket compound; 1049 rtcp::CompoundPacket compound;
1051 compound.Append(&sr); 1050 compound.Append(&sr);
1052 compound.Append(&tmmbr); 1051 compound.Append(&tmmbr);
1053 rtc::Buffer packet = compound.Build(); 1052 rtc::Buffer packet = compound.Build();
1054 EXPECT_EQ(0, InjectRtcpPacket(packet.data(), packet.size())); 1053 EXPECT_EQ(0, InjectRtcpPacket(packet.data(), packet.size()));
1055 1054
1056 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(0, 0, nullptr)); 1055 std::vector<rtcp::TmmbItem> candidate_set = rtcp_receiver_->TMMBRReceived();
1057 TMMBRSet candidate_set; 1056 EXPECT_EQ(1u, candidate_set.size());
1058 candidate_set.VerifyAndAllocateSet(1); 1057 EXPECT_LT(0U, candidate_set[0].bitrate_bps());
1059 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(1, 0, &candidate_set)); 1058 EXPECT_EQ(kSenderSsrc, candidate_set[0].ssrc());
1060 EXPECT_LT(0U, candidate_set.Tmmbr(0));
1061 EXPECT_EQ(kSenderSsrc, candidate_set.Ssrc(0));
1062 } 1059 }
1063 1060
1064 TEST_F(RtcpReceiverTest, TmmbrPacketNotForUsIgnored) { 1061 TEST_F(RtcpReceiverTest, TmmbrPacketNotForUsIgnored) {
1065 const uint32_t kMediaFlowSsrc = 0x2040608; 1062 const uint32_t kMediaFlowSsrc = 0x2040608;
1066 const uint32_t kSenderSsrc = 0x10203; 1063 const uint32_t kSenderSsrc = 0x10203;
1067 1064
1068 rtcp::Tmmbr tmmbr; 1065 rtcp::Tmmbr tmmbr;
1069 tmmbr.From(kSenderSsrc); 1066 tmmbr.From(kSenderSsrc);
1070 // This SSRC is not what we are sending. 1067 // This SSRC is not what we are sending.
1071 tmmbr.WithTmmbr(rtcp::TmmbItem(kMediaFlowSsrc + 1, 30000, 0)); 1068 tmmbr.WithTmmbr(rtcp::TmmbItem(kMediaFlowSsrc + 1, 30000, 0));
1072 1069
1073 rtcp::SenderReport sr; 1070 rtcp::SenderReport sr;
1074 sr.From(kSenderSsrc); 1071 sr.From(kSenderSsrc);
1075 rtcp::CompoundPacket compound; 1072 rtcp::CompoundPacket compound;
1076 compound.Append(&sr); 1073 compound.Append(&sr);
1077 compound.Append(&tmmbr); 1074 compound.Append(&tmmbr);
1078 rtc::Buffer packet = compound.Build(); 1075 rtc::Buffer packet = compound.Build();
1079 1076
1080 std::set<uint32_t> ssrcs; 1077 std::set<uint32_t> ssrcs;
1081 ssrcs.insert(kMediaFlowSsrc); 1078 ssrcs.insert(kMediaFlowSsrc);
1082 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); 1079 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs);
1083 EXPECT_EQ(0, InjectRtcpPacket(packet.data(), packet.size())); 1080 EXPECT_EQ(0, InjectRtcpPacket(packet.data(), packet.size()));
1084 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, nullptr)); 1081 EXPECT_EQ(0u, rtcp_receiver_->TMMBRReceived().size());
1085 } 1082 }
1086 1083
1087 TEST_F(RtcpReceiverTest, TmmbrPacketZeroRateIgnored) { 1084 TEST_F(RtcpReceiverTest, TmmbrPacketZeroRateIgnored) {
1088 const uint32_t kMediaFlowSsrc = 0x2040608; 1085 const uint32_t kMediaFlowSsrc = 0x2040608;
1089 const uint32_t kSenderSsrc = 0x10203; 1086 const uint32_t kSenderSsrc = 0x10203;
1090 std::set<uint32_t> ssrcs; 1087 std::set<uint32_t> ssrcs;
1091 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. 1088 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above.
1092 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); 1089 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs);
1093 1090
1094 rtcp::Tmmbr tmmbr; 1091 rtcp::Tmmbr tmmbr;
1095 tmmbr.From(kSenderSsrc); 1092 tmmbr.From(kSenderSsrc);
1096 tmmbr.WithTmmbr(rtcp::TmmbItem(kMediaFlowSsrc, 0, 0)); 1093 tmmbr.WithTmmbr(rtcp::TmmbItem(kMediaFlowSsrc, 0, 0));
1097 1094
1098 rtcp::SenderReport sr; 1095 rtcp::SenderReport sr;
1099 sr.From(kSenderSsrc); 1096 sr.From(kSenderSsrc);
1100 rtcp::CompoundPacket compound; 1097 rtcp::CompoundPacket compound;
1101 compound.Append(&sr); 1098 compound.Append(&sr);
1102 compound.Append(&tmmbr); 1099 compound.Append(&tmmbr);
1103 rtc::Buffer packet = compound.Build(); 1100 rtc::Buffer packet = compound.Build();
1104 1101
1105 EXPECT_EQ(0, InjectRtcpPacket(packet.data(), packet.size())); 1102 EXPECT_EQ(0, InjectRtcpPacket(packet.data(), packet.size()));
1106 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, nullptr)); 1103 EXPECT_EQ(0u, rtcp_receiver_->TMMBRReceived().size());
1107 } 1104 }
1108 1105
1109 TEST_F(RtcpReceiverTest, TmmbrThreeConstraintsTimeOut) { 1106 TEST_F(RtcpReceiverTest, TmmbrThreeConstraintsTimeOut) {
1110 const uint32_t kMediaFlowSsrc = 0x2040608; 1107 const uint32_t kMediaFlowSsrc = 0x2040608;
1111 const uint32_t kSenderSsrc = 0x10203; 1108 const uint32_t kSenderSsrc = 0x10203;
1112 std::set<uint32_t> ssrcs; 1109 std::set<uint32_t> ssrcs;
1113 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. 1110 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above.
1114 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); 1111 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs);
1115 1112
1116 // Inject 3 packets "from" kSenderSsrc, kSenderSsrc+1, kSenderSsrc+2. 1113 // Inject 3 packets "from" kSenderSsrc, kSenderSsrc+1, kSenderSsrc+2.
1117 // The times of arrival are starttime + 0, starttime + 5 and starttime + 10. 1114 // The times of arrival are starttime + 0, starttime + 5 and starttime + 10.
1118 for (uint32_t ssrc = kSenderSsrc; ssrc < kSenderSsrc + 3; ++ssrc) { 1115 for (uint32_t ssrc = kSenderSsrc; ssrc < kSenderSsrc + 3; ++ssrc) {
1119 rtcp::Tmmbr tmmbr; 1116 rtcp::Tmmbr tmmbr;
1120 tmmbr.From(ssrc); 1117 tmmbr.From(ssrc);
1121 tmmbr.WithTmmbr(rtcp::TmmbItem(kMediaFlowSsrc, 30000, 0)); 1118 tmmbr.WithTmmbr(rtcp::TmmbItem(kMediaFlowSsrc, 30000, 0));
1122 1119
1123 rtcp::SenderReport sr; 1120 rtcp::SenderReport sr;
1124 sr.From(ssrc); 1121 sr.From(ssrc);
1125 rtcp::CompoundPacket compound; 1122 rtcp::CompoundPacket compound;
1126 compound.Append(&sr); 1123 compound.Append(&sr);
1127 compound.Append(&tmmbr); 1124 compound.Append(&tmmbr);
1128 rtc::Buffer packet = compound.Build(); 1125 rtc::Buffer packet = compound.Build();
1129 EXPECT_EQ(0, InjectRtcpPacket(packet.data(), packet.size())); 1126 EXPECT_EQ(0, InjectRtcpPacket(packet.data(), packet.size()));
1130 // 5 seconds between each packet. 1127 // 5 seconds between each packet.
1131 system_clock_.AdvanceTimeMilliseconds(5000); 1128 system_clock_.AdvanceTimeMilliseconds(5000);
1132 } 1129 }
1133 // It is now starttime + 15. 1130 // It is now starttime + 15.
1134 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(0, 0, nullptr)); 1131 std::vector<rtcp::TmmbItem> candidate_set = rtcp_receiver_->TMMBRReceived();
1135 TMMBRSet candidate_set; 1132 EXPECT_EQ(3u, candidate_set.size());
1136 candidate_set.VerifyAndAllocateSet(3); 1133 EXPECT_LT(0U, candidate_set[0].bitrate_bps());
1137 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(3, 0, &candidate_set));
1138 EXPECT_LT(0U, candidate_set.Tmmbr(0));
1139 // We expect the timeout to be 25 seconds. Advance the clock by 12 1134 // We expect the timeout to be 25 seconds. Advance the clock by 12
1140 // seconds, timing out the first packet. 1135 // seconds, timing out the first packet.
1141 system_clock_.AdvanceTimeMilliseconds(12000); 1136 system_clock_.AdvanceTimeMilliseconds(12000);
1142 // Odd behaviour: Just counting them does not trigger the timeout. 1137 candidate_set = rtcp_receiver_->TMMBRReceived();
1143 EXPECT_EQ(3, rtcp_receiver_->TMMBRReceived(0, 0, nullptr)); 1138 EXPECT_EQ(2u, candidate_set.size());
1144 EXPECT_EQ(2, rtcp_receiver_->TMMBRReceived(3, 0, &candidate_set)); 1139 EXPECT_EQ(kSenderSsrc + 1, candidate_set[0].ssrc());
1145 EXPECT_EQ(kSenderSsrc + 1, candidate_set.Ssrc(0));
1146 } 1140 }
1147 1141
1148 TEST_F(RtcpReceiverTest, Callbacks) { 1142 TEST_F(RtcpReceiverTest, Callbacks) {
1149 class RtcpCallbackImpl : public RtcpStatisticsCallback { 1143 class RtcpCallbackImpl : public RtcpStatisticsCallback {
1150 public: 1144 public:
1151 RtcpCallbackImpl() : RtcpStatisticsCallback(), ssrc_(0) {} 1145 RtcpCallbackImpl() : RtcpStatisticsCallback(), ssrc_(0) {}
1152 virtual ~RtcpCallbackImpl() {} 1146 virtual ~RtcpCallbackImpl() {}
1153 1147
1154 void StatisticsUpdated(const RtcpStatistics& statistics, 1148 void StatisticsUpdated(const RtcpStatistics& statistics,
1155 uint32_t ssrc) override { 1149 uint32_t ssrc) override {
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1289 1283
1290 // Transport feedback should be ignored, but next packet should work. 1284 // Transport feedback should be ignored, but next packet should work.
1291 EXPECT_EQ(0u, rtcp_packet_info_.rtcpPacketTypeFlags & kRtcpTransportFeedback); 1285 EXPECT_EQ(0u, rtcp_packet_info_.rtcpPacketTypeFlags & kRtcpTransportFeedback);
1292 EXPECT_NE(0u, rtcp_packet_info_.rtcpPacketTypeFlags & kRtcpRemb); 1286 EXPECT_NE(0u, rtcp_packet_info_.rtcpPacketTypeFlags & kRtcpRemb);
1293 EXPECT_EQ(kBitrateBps, rtcp_packet_info_.receiverEstimatedMaxBitrate); 1287 EXPECT_EQ(kBitrateBps, rtcp_packet_info_.receiverEstimatedMaxBitrate);
1294 } 1288 }
1295 1289
1296 } // Anonymous namespace 1290 } // Anonymous namespace
1297 1291
1298 } // namespace webrtc 1292 } // 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