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

Side by Side Diff: webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter_unittest.cc

Issue 2032463003: Revert of Propagate probing cluster id to SendTimeHistory. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 6 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) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 // equal. However, the difference must be the same for all x. 86 // equal. However, the difference must be the same for all x.
87 int64_t arrival_time_delta = 87 int64_t arrival_time_delta =
88 truth[0].arrival_time_ms - input[0].arrival_time_ms; 88 truth[0].arrival_time_ms - input[0].arrival_time_ms;
89 for (size_t i = 0; i < len; ++i) { 89 for (size_t i = 0; i < len; ++i) {
90 EXPECT_EQ(truth[i].arrival_time_ms, 90 EXPECT_EQ(truth[i].arrival_time_ms,
91 input[i].arrival_time_ms + arrival_time_delta); 91 input[i].arrival_time_ms + arrival_time_delta);
92 EXPECT_EQ(truth[i].send_time_ms, input[i].send_time_ms); 92 EXPECT_EQ(truth[i].send_time_ms, input[i].send_time_ms);
93 EXPECT_EQ(truth[i].sequence_number, input[i].sequence_number); 93 EXPECT_EQ(truth[i].sequence_number, input[i].sequence_number);
94 EXPECT_EQ(truth[i].payload_size, input[i].payload_size); 94 EXPECT_EQ(truth[i].payload_size, input[i].payload_size);
95 EXPECT_EQ(truth[i].was_paced, input[i].was_paced); 95 EXPECT_EQ(truth[i].was_paced, input[i].was_paced);
96 EXPECT_EQ(truth[i].probe_cluster_id, input[i].probe_cluster_id);
97 } 96 }
98 } 97 }
99 98
100 // Utility method, to reset arrival_time_ms before adding send time. 99 // Utility method, to reset arrival_time_ms before adding send time.
101 void OnSentPacket(PacketInfo info) { 100 void OnSentPacket(PacketInfo info) {
102 info.arrival_time_ms = 0; 101 info.arrival_time_ms = 0;
103 adapter_->AddPacket(info.sequence_number, info.payload_size, info.was_paced, 102 adapter_->AddPacket(info.sequence_number, info.payload_size,
104 info.probe_cluster_id); 103 info.was_paced);
105 adapter_->OnSentPacket(info.sequence_number, info.send_time_ms); 104 adapter_->OnSentPacket(info.sequence_number, info.send_time_ms);
106 } 105 }
107 106
108 SimulatedClock clock_; 107 SimulatedClock clock_;
109 MockRemoteBitrateEstimator* bitrate_estimator_; 108 MockRemoteBitrateEstimator* bitrate_estimator_;
110 MockBitrateControllerAdapter bitrate_controller_; 109 MockBitrateControllerAdapter bitrate_controller_;
111 std::unique_ptr<TransportFeedbackAdapter> adapter_; 110 std::unique_ptr<TransportFeedbackAdapter> adapter_;
112 111
113 uint32_t receiver_estimated_bitrate_; 112 uint32_t receiver_estimated_bitrate_;
114 }; 113 };
115 114
116 TEST_F(TransportFeedbackAdapterTest, AdaptsFeedbackAndPopulatesSendTimes) { 115 TEST_F(TransportFeedbackAdapterTest, AdaptsFeedbackAndPopulatesSendTimes) {
117 std::vector<PacketInfo> packets; 116 std::vector<PacketInfo> packets;
118 packets.push_back(PacketInfo(100, 200, 0, 1500, true, 0)); 117 packets.push_back(PacketInfo(100, 200, 0, 1500, true));
119 packets.push_back(PacketInfo(110, 210, 1, 1500, true, 0)); 118 packets.push_back(PacketInfo(110, 210, 1, 1500, true));
120 packets.push_back(PacketInfo(120, 220, 2, 1500, true, 0)); 119 packets.push_back(PacketInfo(120, 220, 2, 1500, true));
121 packets.push_back(PacketInfo(130, 230, 3, 1500, true, 1)); 120 packets.push_back(PacketInfo(130, 230, 3, 1500, true));
122 packets.push_back(PacketInfo(140, 240, 4, 1500, true, 1)); 121 packets.push_back(PacketInfo(140, 240, 4, 1500, true));
123 122
124 for (const PacketInfo& packet : packets) 123 for (const PacketInfo& packet : packets)
125 OnSentPacket(packet); 124 OnSentPacket(packet);
126 125
127 rtcp::TransportFeedback feedback; 126 rtcp::TransportFeedback feedback;
128 feedback.WithBase(packets[0].sequence_number, 127 feedback.WithBase(packets[0].sequence_number,
129 packets[0].arrival_time_ms * 1000); 128 packets[0].arrival_time_ms * 1000);
130 129
131 for (const PacketInfo& packet : packets) { 130 for (const PacketInfo& packet : packets) {
132 EXPECT_TRUE(feedback.WithReceivedPacket(packet.sequence_number, 131 EXPECT_TRUE(feedback.WithReceivedPacket(packet.sequence_number,
133 packet.arrival_time_ms * 1000)); 132 packet.arrival_time_ms * 1000));
134 } 133 }
135 134
136 feedback.Build(); 135 feedback.Build();
137 136
138 EXPECT_CALL(*bitrate_estimator_, IncomingPacketFeedbackVector(_)) 137 EXPECT_CALL(*bitrate_estimator_, IncomingPacketFeedbackVector(_))
139 .Times(1) 138 .Times(1)
140 .WillOnce(Invoke( 139 .WillOnce(Invoke(
141 [packets, this](const std::vector<PacketInfo>& feedback_vector) { 140 [packets, this](const std::vector<PacketInfo>& feedback_vector) {
142 ComparePacketVectors(packets, feedback_vector); 141 ComparePacketVectors(packets, feedback_vector);
143 })); 142 }));
144 adapter_->OnTransportFeedback(feedback); 143 adapter_->OnTransportFeedback(feedback);
145 } 144 }
146 145
147 TEST_F(TransportFeedbackAdapterTest, HandlesDroppedPackets) { 146 TEST_F(TransportFeedbackAdapterTest, HandlesDroppedPackets) {
148 std::vector<PacketInfo> packets; 147 std::vector<PacketInfo> packets;
149 packets.push_back(PacketInfo(100, 200, 0, 1500, true, 1)); 148 packets.push_back(PacketInfo(100, 200, 0, 1500, true));
150 packets.push_back(PacketInfo(110, 210, 1, 1500, true, 2)); 149 packets.push_back(PacketInfo(110, 210, 1, 1500, true));
151 packets.push_back(PacketInfo(120, 220, 2, 1500, true, 3)); 150 packets.push_back(PacketInfo(120, 220, 2, 1500, true));
152 packets.push_back(PacketInfo(130, 230, 3, 1500, true, 4)); 151 packets.push_back(PacketInfo(130, 230, 3, 1500, true));
153 packets.push_back(PacketInfo(140, 240, 4, 1500, true, 5)); 152 packets.push_back(PacketInfo(140, 240, 4, 1500, true));
154 153
155 const uint16_t kSendSideDropBefore = 1; 154 const uint16_t kSendSideDropBefore = 1;
156 const uint16_t kReceiveSideDropAfter = 3; 155 const uint16_t kReceiveSideDropAfter = 3;
157 156
158 for (const PacketInfo& packet : packets) { 157 for (const PacketInfo& packet : packets) {
159 if (packet.sequence_number >= kSendSideDropBefore) 158 if (packet.sequence_number >= kSendSideDropBefore)
160 OnSentPacket(packet); 159 OnSentPacket(packet);
161 } 160 }
162 161
163 rtcp::TransportFeedback feedback; 162 rtcp::TransportFeedback feedback;
(...skipping 20 matching lines...) Expand all
184 ComparePacketVectors(expected_packets, feedback_vector); 183 ComparePacketVectors(expected_packets, feedback_vector);
185 })); 184 }));
186 adapter_->OnTransportFeedback(feedback); 185 adapter_->OnTransportFeedback(feedback);
187 } 186 }
188 187
189 TEST_F(TransportFeedbackAdapterTest, SendTimeWrapsBothWays) { 188 TEST_F(TransportFeedbackAdapterTest, SendTimeWrapsBothWays) {
190 int64_t kHighArrivalTimeMs = rtcp::TransportFeedback::kDeltaScaleFactor * 189 int64_t kHighArrivalTimeMs = rtcp::TransportFeedback::kDeltaScaleFactor *
191 static_cast<int64_t>(1 << 8) * 190 static_cast<int64_t>(1 << 8) *
192 static_cast<int64_t>((1 << 23) - 1) / 1000; 191 static_cast<int64_t>((1 << 23) - 1) / 1000;
193 std::vector<PacketInfo> packets; 192 std::vector<PacketInfo> packets;
194 packets.push_back(PacketInfo(kHighArrivalTimeMs - 64, 200, 0, 1500, true, 193 packets.push_back(PacketInfo(kHighArrivalTimeMs - 64, 200, 0, 1500, true));
195 PacketInfo::kNotAProbe)); 194 packets.push_back(PacketInfo(kHighArrivalTimeMs + 64, 210, 1, 1500, true));
196 packets.push_back(PacketInfo(kHighArrivalTimeMs + 64, 210, 1, 1500, true, 195 packets.push_back(PacketInfo(kHighArrivalTimeMs, 220, 2, 1500, true));
197 PacketInfo::kNotAProbe));
198 packets.push_back(PacketInfo(kHighArrivalTimeMs, 220, 2, 1500, true,
199 PacketInfo::kNotAProbe));
200 196
201 for (const PacketInfo& packet : packets) 197 for (const PacketInfo& packet : packets)
202 OnSentPacket(packet); 198 OnSentPacket(packet);
203 199
204 for (size_t i = 0; i < packets.size(); ++i) { 200 for (size_t i = 0; i < packets.size(); ++i) {
205 std::unique_ptr<rtcp::TransportFeedback> feedback( 201 std::unique_ptr<rtcp::TransportFeedback> feedback(
206 new rtcp::TransportFeedback()); 202 new rtcp::TransportFeedback());
207 feedback->WithBase(packets[i].sequence_number, 203 feedback->WithBase(packets[i].sequence_number,
208 packets[i].arrival_time_ms * 1000); 204 packets[i].arrival_time_ms * 1000);
209 205
(...skipping 12 matching lines...) Expand all
222 .WillOnce(Invoke([expected_packets, this]( 218 .WillOnce(Invoke([expected_packets, this](
223 const std::vector<PacketInfo>& feedback_vector) { 219 const std::vector<PacketInfo>& feedback_vector) {
224 ComparePacketVectors(expected_packets, feedback_vector); 220 ComparePacketVectors(expected_packets, feedback_vector);
225 })); 221 }));
226 adapter_->OnTransportFeedback(*feedback.get()); 222 adapter_->OnTransportFeedback(*feedback.get());
227 } 223 }
228 } 224 }
229 225
230 TEST_F(TransportFeedbackAdapterTest, HandlesReordering) { 226 TEST_F(TransportFeedbackAdapterTest, HandlesReordering) {
231 std::vector<PacketInfo> packets; 227 std::vector<PacketInfo> packets;
232 packets.push_back(PacketInfo(120, 200, 0, 1500, true, 0)); 228 packets.push_back(PacketInfo(120, 200, 0, 1500, true));
233 packets.push_back(PacketInfo(110, 210, 1, 1500, true, 0)); 229 packets.push_back(PacketInfo(110, 210, 1, 1500, true));
234 packets.push_back(PacketInfo(100, 220, 2, 1500, true, 0)); 230 packets.push_back(PacketInfo(100, 220, 2, 1500, true));
235 std::vector<PacketInfo> expected_packets; 231 std::vector<PacketInfo> expected_packets;
236 expected_packets.push_back(packets[2]); 232 expected_packets.push_back(packets[2]);
237 expected_packets.push_back(packets[1]); 233 expected_packets.push_back(packets[1]);
238 expected_packets.push_back(packets[0]); 234 expected_packets.push_back(packets[0]);
239 235
240 for (const PacketInfo& packet : packets) 236 for (const PacketInfo& packet : packets)
241 OnSentPacket(packet); 237 OnSentPacket(packet);
242 238
243 rtcp::TransportFeedback feedback; 239 rtcp::TransportFeedback feedback;
244 feedback.WithBase(packets[0].sequence_number, 240 feedback.WithBase(packets[0].sequence_number,
(...skipping 19 matching lines...) Expand all
264 std::vector<PacketInfo> sent_packets; 260 std::vector<PacketInfo> sent_packets;
265 const int64_t kSmallDeltaUs = 261 const int64_t kSmallDeltaUs =
266 rtcp::TransportFeedback::kDeltaScaleFactor * ((1 << 8) - 1); 262 rtcp::TransportFeedback::kDeltaScaleFactor * ((1 << 8) - 1);
267 const int64_t kLargePositiveDeltaUs = 263 const int64_t kLargePositiveDeltaUs =
268 rtcp::TransportFeedback::kDeltaScaleFactor * 264 rtcp::TransportFeedback::kDeltaScaleFactor *
269 std::numeric_limits<int16_t>::max(); 265 std::numeric_limits<int16_t>::max();
270 const int64_t kLargeNegativeDeltaUs = 266 const int64_t kLargeNegativeDeltaUs =
271 rtcp::TransportFeedback::kDeltaScaleFactor * 267 rtcp::TransportFeedback::kDeltaScaleFactor *
272 std::numeric_limits<int16_t>::min(); 268 std::numeric_limits<int16_t>::min();
273 269
274 PacketInfo info(100, 200, 0, 1500, true, PacketInfo::kNotAProbe); 270 PacketInfo info(100, 200, 0, 1500, true);
275 sent_packets.push_back(info); 271 sent_packets.push_back(info);
276 272
277 info.send_time_ms += kSmallDeltaUs / 1000; 273 info.send_time_ms += kSmallDeltaUs / 1000;
278 info.arrival_time_ms += kSmallDeltaUs / 1000; 274 info.arrival_time_ms += kSmallDeltaUs / 1000;
279 ++info.sequence_number; 275 ++info.sequence_number;
280 sent_packets.push_back(info); 276 sent_packets.push_back(info);
281 277
282 info.send_time_ms += kLargePositiveDeltaUs / 1000; 278 info.send_time_ms += kLargePositiveDeltaUs / 1000;
283 info.arrival_time_ms += kLargePositiveDeltaUs / 1000; 279 info.arrival_time_ms += kLargePositiveDeltaUs / 1000;
284 ++info.sequence_number; 280 ++info.sequence_number;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 })); 351 }));
356 adapter_->OnTransportFeedback(*feedback.get()); 352 adapter_->OnTransportFeedback(*feedback.get());
357 353
358 expected_packets.push_back(info); 354 expected_packets.push_back(info);
359 355
360 ComparePacketVectors(expected_packets, received_feedback); 356 ComparePacketVectors(expected_packets, received_feedback);
361 } 357 }
362 358
363 } // namespace test 359 } // namespace test
364 } // namespace webrtc 360 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter.cc ('k') | webrtc/modules/rtp_rtcp/include/rtp_rtcp.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698