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

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

Issue 2112643005: Remove audio/video distinction for probe packets. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@52
Patch Set: rebase errors Created 4 years, 5 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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 // packet, the truth[x].arrival_time and input[x].arrival_time may not be 85 // packet, the truth[x].arrival_time and input[x].arrival_time may not be
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);
96 } 95 }
97 } 96 }
98 97
99 // Utility method, to reset arrival_time_ms before adding send time. 98 // Utility method, to reset arrival_time_ms before adding send time.
100 void OnSentPacket(PacketInfo info) { 99 void OnSentPacket(PacketInfo info) {
101 info.arrival_time_ms = 0; 100 info.arrival_time_ms = 0;
102 adapter_->AddPacket(info.sequence_number, info.payload_size, 101 adapter_->AddPacket(info.sequence_number, info.payload_size);
103 info.was_paced);
104 adapter_->OnSentPacket(info.sequence_number, info.send_time_ms); 102 adapter_->OnSentPacket(info.sequence_number, info.send_time_ms);
105 } 103 }
106 104
107 SimulatedClock clock_; 105 SimulatedClock clock_;
108 MockRemoteBitrateEstimator* bitrate_estimator_; 106 MockRemoteBitrateEstimator* bitrate_estimator_;
109 MockBitrateControllerAdapter bitrate_controller_; 107 MockBitrateControllerAdapter bitrate_controller_;
110 std::unique_ptr<TransportFeedbackAdapter> adapter_; 108 std::unique_ptr<TransportFeedbackAdapter> adapter_;
111 109
112 uint32_t receiver_estimated_bitrate_; 110 uint32_t receiver_estimated_bitrate_;
113 }; 111 };
114 112
115 TEST_F(TransportFeedbackAdapterTest, AdaptsFeedbackAndPopulatesSendTimes) { 113 TEST_F(TransportFeedbackAdapterTest, AdaptsFeedbackAndPopulatesSendTimes) {
116 std::vector<PacketInfo> packets; 114 std::vector<PacketInfo> packets;
117 packets.push_back(PacketInfo(100, 200, 0, 1500, true)); 115 packets.push_back(PacketInfo(100, 200, 0, 1500));
118 packets.push_back(PacketInfo(110, 210, 1, 1500, true)); 116 packets.push_back(PacketInfo(110, 210, 1, 1500));
119 packets.push_back(PacketInfo(120, 220, 2, 1500, true)); 117 packets.push_back(PacketInfo(120, 220, 2, 1500));
120 packets.push_back(PacketInfo(130, 230, 3, 1500, true)); 118 packets.push_back(PacketInfo(130, 230, 3, 1500));
121 packets.push_back(PacketInfo(140, 240, 4, 1500, true)); 119 packets.push_back(PacketInfo(140, 240, 4, 1500));
122 120
123 for (const PacketInfo& packet : packets) 121 for (const PacketInfo& packet : packets)
124 OnSentPacket(packet); 122 OnSentPacket(packet);
125 123
126 rtcp::TransportFeedback feedback; 124 rtcp::TransportFeedback feedback;
127 feedback.WithBase(packets[0].sequence_number, 125 feedback.WithBase(packets[0].sequence_number,
128 packets[0].arrival_time_ms * 1000); 126 packets[0].arrival_time_ms * 1000);
129 127
130 for (const PacketInfo& packet : packets) { 128 for (const PacketInfo& packet : packets) {
131 EXPECT_TRUE(feedback.WithReceivedPacket(packet.sequence_number, 129 EXPECT_TRUE(feedback.WithReceivedPacket(packet.sequence_number,
132 packet.arrival_time_ms * 1000)); 130 packet.arrival_time_ms * 1000));
133 } 131 }
134 132
135 feedback.Build(); 133 feedback.Build();
136 134
137 EXPECT_CALL(*bitrate_estimator_, IncomingPacketFeedbackVector(_)) 135 EXPECT_CALL(*bitrate_estimator_, IncomingPacketFeedbackVector(_))
138 .Times(1) 136 .Times(1)
139 .WillOnce(Invoke( 137 .WillOnce(Invoke(
140 [packets, this](const std::vector<PacketInfo>& feedback_vector) { 138 [packets, this](const std::vector<PacketInfo>& feedback_vector) {
141 ComparePacketVectors(packets, feedback_vector); 139 ComparePacketVectors(packets, feedback_vector);
142 })); 140 }));
143 adapter_->OnTransportFeedback(feedback); 141 adapter_->OnTransportFeedback(feedback);
144 } 142 }
145 143
146 TEST_F(TransportFeedbackAdapterTest, HandlesDroppedPackets) { 144 TEST_F(TransportFeedbackAdapterTest, HandlesDroppedPackets) {
147 std::vector<PacketInfo> packets; 145 std::vector<PacketInfo> packets;
148 packets.push_back(PacketInfo(100, 200, 0, 1500, true)); 146 packets.push_back(PacketInfo(100, 200, 0, 1500));
149 packets.push_back(PacketInfo(110, 210, 1, 1500, true)); 147 packets.push_back(PacketInfo(110, 210, 1, 1500));
150 packets.push_back(PacketInfo(120, 220, 2, 1500, true)); 148 packets.push_back(PacketInfo(120, 220, 2, 1500));
151 packets.push_back(PacketInfo(130, 230, 3, 1500, true)); 149 packets.push_back(PacketInfo(130, 230, 3, 1500));
152 packets.push_back(PacketInfo(140, 240, 4, 1500, true)); 150 packets.push_back(PacketInfo(140, 240, 4, 1500));
153 151
154 const uint16_t kSendSideDropBefore = 1; 152 const uint16_t kSendSideDropBefore = 1;
155 const uint16_t kReceiveSideDropAfter = 3; 153 const uint16_t kReceiveSideDropAfter = 3;
156 154
157 for (const PacketInfo& packet : packets) { 155 for (const PacketInfo& packet : packets) {
158 if (packet.sequence_number >= kSendSideDropBefore) 156 if (packet.sequence_number >= kSendSideDropBefore)
159 OnSentPacket(packet); 157 OnSentPacket(packet);
160 } 158 }
161 159
162 rtcp::TransportFeedback feedback; 160 rtcp::TransportFeedback feedback;
(...skipping 20 matching lines...) Expand all
183 ComparePacketVectors(expected_packets, feedback_vector); 181 ComparePacketVectors(expected_packets, feedback_vector);
184 })); 182 }));
185 adapter_->OnTransportFeedback(feedback); 183 adapter_->OnTransportFeedback(feedback);
186 } 184 }
187 185
188 TEST_F(TransportFeedbackAdapterTest, SendTimeWrapsBothWays) { 186 TEST_F(TransportFeedbackAdapterTest, SendTimeWrapsBothWays) {
189 int64_t kHighArrivalTimeMs = rtcp::TransportFeedback::kDeltaScaleFactor * 187 int64_t kHighArrivalTimeMs = rtcp::TransportFeedback::kDeltaScaleFactor *
190 static_cast<int64_t>(1 << 8) * 188 static_cast<int64_t>(1 << 8) *
191 static_cast<int64_t>((1 << 23) - 1) / 1000; 189 static_cast<int64_t>((1 << 23) - 1) / 1000;
192 std::vector<PacketInfo> packets; 190 std::vector<PacketInfo> packets;
193 packets.push_back(PacketInfo(kHighArrivalTimeMs - 64, 200, 0, 1500, true)); 191 packets.push_back(PacketInfo(kHighArrivalTimeMs - 64, 200, 0, 1500));
194 packets.push_back(PacketInfo(kHighArrivalTimeMs + 64, 210, 1, 1500, true)); 192 packets.push_back(PacketInfo(kHighArrivalTimeMs + 64, 210, 1, 1500));
195 packets.push_back(PacketInfo(kHighArrivalTimeMs, 220, 2, 1500, true)); 193 packets.push_back(PacketInfo(kHighArrivalTimeMs, 220, 2, 1500));
196 194
197 for (const PacketInfo& packet : packets) 195 for (const PacketInfo& packet : packets)
198 OnSentPacket(packet); 196 OnSentPacket(packet);
199 197
200 for (size_t i = 0; i < packets.size(); ++i) { 198 for (size_t i = 0; i < packets.size(); ++i) {
201 std::unique_ptr<rtcp::TransportFeedback> feedback( 199 std::unique_ptr<rtcp::TransportFeedback> feedback(
202 new rtcp::TransportFeedback()); 200 new rtcp::TransportFeedback());
203 feedback->WithBase(packets[i].sequence_number, 201 feedback->WithBase(packets[i].sequence_number,
204 packets[i].arrival_time_ms * 1000); 202 packets[i].arrival_time_ms * 1000);
205 203
(...skipping 12 matching lines...) Expand all
218 .WillOnce(Invoke([expected_packets, this]( 216 .WillOnce(Invoke([expected_packets, this](
219 const std::vector<PacketInfo>& feedback_vector) { 217 const std::vector<PacketInfo>& feedback_vector) {
220 ComparePacketVectors(expected_packets, feedback_vector); 218 ComparePacketVectors(expected_packets, feedback_vector);
221 })); 219 }));
222 adapter_->OnTransportFeedback(*feedback.get()); 220 adapter_->OnTransportFeedback(*feedback.get());
223 } 221 }
224 } 222 }
225 223
226 TEST_F(TransportFeedbackAdapterTest, HandlesReordering) { 224 TEST_F(TransportFeedbackAdapterTest, HandlesReordering) {
227 std::vector<PacketInfo> packets; 225 std::vector<PacketInfo> packets;
228 packets.push_back(PacketInfo(120, 200, 0, 1500, true)); 226 packets.push_back(PacketInfo(120, 200, 0, 1500));
229 packets.push_back(PacketInfo(110, 210, 1, 1500, true)); 227 packets.push_back(PacketInfo(110, 210, 1, 1500));
230 packets.push_back(PacketInfo(100, 220, 2, 1500, true)); 228 packets.push_back(PacketInfo(100, 220, 2, 1500));
231 std::vector<PacketInfo> expected_packets; 229 std::vector<PacketInfo> expected_packets;
232 expected_packets.push_back(packets[2]); 230 expected_packets.push_back(packets[2]);
233 expected_packets.push_back(packets[1]); 231 expected_packets.push_back(packets[1]);
234 expected_packets.push_back(packets[0]); 232 expected_packets.push_back(packets[0]);
235 233
236 for (const PacketInfo& packet : packets) 234 for (const PacketInfo& packet : packets)
237 OnSentPacket(packet); 235 OnSentPacket(packet);
238 236
239 rtcp::TransportFeedback feedback; 237 rtcp::TransportFeedback feedback;
240 feedback.WithBase(packets[0].sequence_number, 238 feedback.WithBase(packets[0].sequence_number,
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 })); 349 }));
352 adapter_->OnTransportFeedback(*feedback.get()); 350 adapter_->OnTransportFeedback(*feedback.get());
353 351
354 expected_packets.push_back(info); 352 expected_packets.push_back(info);
355 353
356 ComparePacketVectors(expected_packets, received_feedback); 354 ComparePacketVectors(expected_packets, received_feedback);
357 } 355 }
358 356
359 } // namespace test 357 } // namespace test
360 } // namespace webrtc 358 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698