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

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

Issue 2789843002: Delete VieRemb class, move functionality to PacketRouter. (Closed)
Patch Set: Delete obsolete suppression for PacketRouterTest.SendTransportFeedback. Created 3 years, 8 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 int64_t timestamp_us = feedback_packet.GetBaseTimeUs(); 45 int64_t timestamp_us = feedback_packet.GetBaseTimeUs();
46 for (const auto& rtp_packet_received : feedback_packet.GetReceivedPackets()) { 46 for (const auto& rtp_packet_received : feedback_packet.GetReceivedPackets()) {
47 timestamp_us += rtp_packet_received.delta_us(); 47 timestamp_us += rtp_packet_received.delta_us();
48 timestamps.push_back(timestamp_us / 1000); 48 timestamps.push_back(timestamp_us / 1000);
49 } 49 }
50 return timestamps; 50 return timestamps;
51 } 51 }
52 52
53 class MockPacketRouter : public PacketRouter { 53 class MockPacketRouter : public PacketRouter {
54 public: 54 public:
55 MOCK_METHOD1(SendFeedback, bool(rtcp::TransportFeedback* feedback_packet)); 55 MOCK_METHOD1(SendTransportFeedback,
56 bool(rtcp::TransportFeedback* feedback_packet));
56 }; 57 };
57 58
58 class RemoteEstimatorProxyTest : public ::testing::Test { 59 class RemoteEstimatorProxyTest : public ::testing::Test {
59 public: 60 public:
60 RemoteEstimatorProxyTest() : clock_(0), proxy_(&clock_, &router_) {} 61 RemoteEstimatorProxyTest() : clock_(0), proxy_(&clock_, &router_) {}
61 62
62 protected: 63 protected:
63 void IncomingPacket(uint16_t seq, int64_t time_ms) { 64 void IncomingPacket(uint16_t seq, int64_t time_ms) {
64 RTPHeader header; 65 RTPHeader header;
65 header.extension.hasTransportSequenceNumber = true; 66 header.extension.hasTransportSequenceNumber = true;
66 header.extension.transportSequenceNumber = seq; 67 header.extension.transportSequenceNumber = seq;
67 header.ssrc = kMediaSsrc; 68 header.ssrc = kMediaSsrc;
68 proxy_.IncomingPacket(time_ms, kDefaultPacketSize, header); 69 proxy_.IncomingPacket(time_ms, kDefaultPacketSize, header);
69 } 70 }
70 71
71 void Process() { 72 void Process() {
72 clock_.AdvanceTimeMilliseconds( 73 clock_.AdvanceTimeMilliseconds(
73 RemoteEstimatorProxy::kDefaultSendIntervalMs); 74 RemoteEstimatorProxy::kDefaultSendIntervalMs);
74 proxy_.Process(); 75 proxy_.Process();
75 } 76 }
76 77
77 SimulatedClock clock_; 78 SimulatedClock clock_;
78 testing::StrictMock<MockPacketRouter> router_; 79 testing::StrictMock<MockPacketRouter> router_;
79 RemoteEstimatorProxy proxy_; 80 RemoteEstimatorProxy proxy_;
80 }; 81 };
81 82
82 TEST_F(RemoteEstimatorProxyTest, SendsSinglePacketFeedback) { 83 TEST_F(RemoteEstimatorProxyTest, SendsSinglePacketFeedback) {
83 IncomingPacket(kBaseSeq, kBaseTimeMs); 84 IncomingPacket(kBaseSeq, kBaseTimeMs);
84 85
85 EXPECT_CALL(router_, SendFeedback(_)) 86 EXPECT_CALL(router_, SendTransportFeedback(_))
86 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) { 87 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) {
87 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence()); 88 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence());
88 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc()); 89 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc());
89 90
90 EXPECT_THAT(SequenceNumbers(*feedback_packet), ElementsAre(kBaseSeq)); 91 EXPECT_THAT(SequenceNumbers(*feedback_packet), ElementsAre(kBaseSeq));
91 EXPECT_THAT(TimestampsMs(*feedback_packet), ElementsAre(kBaseTimeMs)); 92 EXPECT_THAT(TimestampsMs(*feedback_packet), ElementsAre(kBaseTimeMs));
92 return true; 93 return true;
93 })); 94 }));
94 95
95 Process(); 96 Process();
96 } 97 }
97 98
98 TEST_F(RemoteEstimatorProxyTest, DuplicatedPackets) { 99 TEST_F(RemoteEstimatorProxyTest, DuplicatedPackets) {
99 IncomingPacket(kBaseSeq, kBaseTimeMs); 100 IncomingPacket(kBaseSeq, kBaseTimeMs);
100 IncomingPacket(kBaseSeq, kBaseTimeMs + 1000); 101 IncomingPacket(kBaseSeq, kBaseTimeMs + 1000);
101 102
102 EXPECT_CALL(router_, SendFeedback(_)) 103 EXPECT_CALL(router_, SendTransportFeedback(_))
103 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) { 104 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) {
104 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence()); 105 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence());
105 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc()); 106 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc());
106 107
107 EXPECT_THAT(SequenceNumbers(*feedback_packet), ElementsAre(kBaseSeq)); 108 EXPECT_THAT(SequenceNumbers(*feedback_packet), ElementsAre(kBaseSeq));
108 EXPECT_THAT(TimestampsMs(*feedback_packet), ElementsAre(kBaseTimeMs)); 109 EXPECT_THAT(TimestampsMs(*feedback_packet), ElementsAre(kBaseTimeMs));
109 return true; 110 return true;
110 })); 111 }));
111 112
112 Process(); 113 Process();
113 } 114 }
114 115
115 TEST_F(RemoteEstimatorProxyTest, FeedbackWithMissingStart) { 116 TEST_F(RemoteEstimatorProxyTest, FeedbackWithMissingStart) {
116 // First feedback. 117 // First feedback.
117 IncomingPacket(kBaseSeq, kBaseTimeMs); 118 IncomingPacket(kBaseSeq, kBaseTimeMs);
118 IncomingPacket(kBaseSeq + 1, kBaseTimeMs + 1000); 119 IncomingPacket(kBaseSeq + 1, kBaseTimeMs + 1000);
119 EXPECT_CALL(router_, SendFeedback(_)).WillOnce(Return(true)); 120 EXPECT_CALL(router_, SendTransportFeedback(_)).WillOnce(Return(true));
120 Process(); 121 Process();
121 122
122 // Second feedback starts with a missing packet (DROP kBaseSeq + 2). 123 // Second feedback starts with a missing packet (DROP kBaseSeq + 2).
123 IncomingPacket(kBaseSeq + 3, kBaseTimeMs + 3000); 124 IncomingPacket(kBaseSeq + 3, kBaseTimeMs + 3000);
124 125
125 EXPECT_CALL(router_, SendFeedback(_)) 126 EXPECT_CALL(router_, SendTransportFeedback(_))
126 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) { 127 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) {
127 EXPECT_EQ(kBaseSeq + 2, feedback_packet->GetBaseSequence()); 128 EXPECT_EQ(kBaseSeq + 2, feedback_packet->GetBaseSequence());
128 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc()); 129 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc());
129 130
130 EXPECT_THAT(SequenceNumbers(*feedback_packet), 131 EXPECT_THAT(SequenceNumbers(*feedback_packet),
131 ElementsAre(kBaseSeq + 3)); 132 ElementsAre(kBaseSeq + 3));
132 EXPECT_THAT(TimestampsMs(*feedback_packet), 133 EXPECT_THAT(TimestampsMs(*feedback_packet),
133 ElementsAre(kBaseTimeMs + 3000)); 134 ElementsAre(kBaseTimeMs + 3000));
134 return true; 135 return true;
135 })); 136 }));
136 137
137 Process(); 138 Process();
138 } 139 }
139 140
140 TEST_F(RemoteEstimatorProxyTest, SendsFeedbackWithVaryingDeltas) { 141 TEST_F(RemoteEstimatorProxyTest, SendsFeedbackWithVaryingDeltas) {
141 IncomingPacket(kBaseSeq, kBaseTimeMs); 142 IncomingPacket(kBaseSeq, kBaseTimeMs);
142 IncomingPacket(kBaseSeq + 1, kBaseTimeMs + kMaxSmallDeltaMs); 143 IncomingPacket(kBaseSeq + 1, kBaseTimeMs + kMaxSmallDeltaMs);
143 IncomingPacket(kBaseSeq + 2, kBaseTimeMs + (2 * kMaxSmallDeltaMs) + 1); 144 IncomingPacket(kBaseSeq + 2, kBaseTimeMs + (2 * kMaxSmallDeltaMs) + 1);
144 145
145 EXPECT_CALL(router_, SendFeedback(_)) 146 EXPECT_CALL(router_, SendTransportFeedback(_))
146 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) { 147 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) {
147 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence()); 148 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence());
148 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc()); 149 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc());
149 150
150 EXPECT_THAT(SequenceNumbers(*feedback_packet), 151 EXPECT_THAT(SequenceNumbers(*feedback_packet),
151 ElementsAre(kBaseSeq, kBaseSeq + 1, kBaseSeq + 2)); 152 ElementsAre(kBaseSeq, kBaseSeq + 1, kBaseSeq + 2));
152 EXPECT_THAT(TimestampsMs(*feedback_packet), 153 EXPECT_THAT(TimestampsMs(*feedback_packet),
153 ElementsAre(kBaseTimeMs, kBaseTimeMs + kMaxSmallDeltaMs, 154 ElementsAre(kBaseTimeMs, kBaseTimeMs + kMaxSmallDeltaMs,
154 kBaseTimeMs + (2 * kMaxSmallDeltaMs) + 1)); 155 kBaseTimeMs + (2 * kMaxSmallDeltaMs) + 1));
155 return true; 156 return true;
156 })); 157 }));
157 158
158 Process(); 159 Process();
159 } 160 }
160 161
161 TEST_F(RemoteEstimatorProxyTest, SendsFragmentedFeedback) { 162 TEST_F(RemoteEstimatorProxyTest, SendsFragmentedFeedback) {
162 static constexpr int64_t kTooLargeDelta = 163 static constexpr int64_t kTooLargeDelta =
163 rtcp::TransportFeedback::kDeltaScaleFactor * (1 << 16); 164 rtcp::TransportFeedback::kDeltaScaleFactor * (1 << 16);
164 165
165 IncomingPacket(kBaseSeq, kBaseTimeMs); 166 IncomingPacket(kBaseSeq, kBaseTimeMs);
166 IncomingPacket(kBaseSeq + 1, kBaseTimeMs + kTooLargeDelta); 167 IncomingPacket(kBaseSeq + 1, kBaseTimeMs + kTooLargeDelta);
167 168
168 EXPECT_CALL(router_, SendFeedback(_)) 169 EXPECT_CALL(router_, SendTransportFeedback(_))
169 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) { 170 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) {
170 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence()); 171 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence());
171 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc()); 172 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc());
172 173
173 EXPECT_THAT(SequenceNumbers(*feedback_packet), ElementsAre(kBaseSeq)); 174 EXPECT_THAT(SequenceNumbers(*feedback_packet), ElementsAre(kBaseSeq));
174 EXPECT_THAT(TimestampsMs(*feedback_packet), ElementsAre(kBaseTimeMs)); 175 EXPECT_THAT(TimestampsMs(*feedback_packet), ElementsAre(kBaseTimeMs));
175 return true; 176 return true;
176 })) 177 }))
177 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) { 178 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) {
178 EXPECT_EQ(kBaseSeq + 1, feedback_packet->GetBaseSequence()); 179 EXPECT_EQ(kBaseSeq + 1, feedback_packet->GetBaseSequence());
179 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc()); 180 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc());
180 181
181 EXPECT_THAT(SequenceNumbers(*feedback_packet), 182 EXPECT_THAT(SequenceNumbers(*feedback_packet),
182 ElementsAre(kBaseSeq + 1)); 183 ElementsAre(kBaseSeq + 1));
183 EXPECT_THAT(TimestampsMs(*feedback_packet), 184 EXPECT_THAT(TimestampsMs(*feedback_packet),
184 ElementsAre(kBaseTimeMs + kTooLargeDelta)); 185 ElementsAre(kBaseTimeMs + kTooLargeDelta));
185 return true; 186 return true;
186 })); 187 }));
187 188
188 Process(); 189 Process();
189 } 190 }
190 191
191 TEST_F(RemoteEstimatorProxyTest, GracefullyHandlesReorderingAndWrap) { 192 TEST_F(RemoteEstimatorProxyTest, GracefullyHandlesReorderingAndWrap) {
192 const int64_t kDeltaMs = 1000; 193 const int64_t kDeltaMs = 1000;
193 const uint16_t kLargeSeq = 62762; 194 const uint16_t kLargeSeq = 62762;
194 IncomingPacket(kBaseSeq, kBaseTimeMs); 195 IncomingPacket(kBaseSeq, kBaseTimeMs);
195 IncomingPacket(kLargeSeq, kBaseTimeMs + kDeltaMs); 196 IncomingPacket(kLargeSeq, kBaseTimeMs + kDeltaMs);
196 197
197 EXPECT_CALL(router_, SendFeedback(_)) 198 EXPECT_CALL(router_, SendTransportFeedback(_))
198 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) { 199 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) {
199 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence()); 200 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence());
200 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc()); 201 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc());
201 202
202 EXPECT_THAT(TimestampsMs(*feedback_packet), ElementsAre(kBaseTimeMs)); 203 EXPECT_THAT(TimestampsMs(*feedback_packet), ElementsAre(kBaseTimeMs));
203 return true; 204 return true;
204 })); 205 }));
205 206
206 Process(); 207 Process();
207 } 208 }
208 209
209 TEST_F(RemoteEstimatorProxyTest, ResendsTimestampsOnReordering) { 210 TEST_F(RemoteEstimatorProxyTest, ResendsTimestampsOnReordering) {
210 IncomingPacket(kBaseSeq, kBaseTimeMs); 211 IncomingPacket(kBaseSeq, kBaseTimeMs);
211 IncomingPacket(kBaseSeq + 2, kBaseTimeMs + 2); 212 IncomingPacket(kBaseSeq + 2, kBaseTimeMs + 2);
212 213
213 EXPECT_CALL(router_, SendFeedback(_)) 214 EXPECT_CALL(router_, SendTransportFeedback(_))
214 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) { 215 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) {
215 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence()); 216 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence());
216 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc()); 217 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc());
217 218
218 EXPECT_THAT(SequenceNumbers(*feedback_packet), 219 EXPECT_THAT(SequenceNumbers(*feedback_packet),
219 ElementsAre(kBaseSeq, kBaseSeq + 2)); 220 ElementsAre(kBaseSeq, kBaseSeq + 2));
220 EXPECT_THAT(TimestampsMs(*feedback_packet), 221 EXPECT_THAT(TimestampsMs(*feedback_packet),
221 ElementsAre(kBaseTimeMs, kBaseTimeMs + 2)); 222 ElementsAre(kBaseTimeMs, kBaseTimeMs + 2));
222 return true; 223 return true;
223 })); 224 }));
224 225
225 Process(); 226 Process();
226 227
227 IncomingPacket(kBaseSeq + 1, kBaseTimeMs + 1); 228 IncomingPacket(kBaseSeq + 1, kBaseTimeMs + 1);
228 229
229 EXPECT_CALL(router_, SendFeedback(_)) 230 EXPECT_CALL(router_, SendTransportFeedback(_))
230 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) { 231 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) {
231 EXPECT_EQ(kBaseSeq + 1, feedback_packet->GetBaseSequence()); 232 EXPECT_EQ(kBaseSeq + 1, feedback_packet->GetBaseSequence());
232 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc()); 233 EXPECT_EQ(kMediaSsrc, feedback_packet->media_ssrc());
233 234
234 EXPECT_THAT(SequenceNumbers(*feedback_packet), 235 EXPECT_THAT(SequenceNumbers(*feedback_packet),
235 ElementsAre(kBaseSeq + 1, kBaseSeq + 2)); 236 ElementsAre(kBaseSeq + 1, kBaseSeq + 2));
236 EXPECT_THAT(TimestampsMs(*feedback_packet), 237 EXPECT_THAT(TimestampsMs(*feedback_packet),
237 ElementsAre(kBaseTimeMs + 1, kBaseTimeMs + 2)); 238 ElementsAre(kBaseTimeMs + 1, kBaseTimeMs + 2));
238 return true; 239 return true;
239 })); 240 }));
240 241
241 Process(); 242 Process();
242 } 243 }
243 244
244 TEST_F(RemoteEstimatorProxyTest, RemovesTimestampsOutOfScope) { 245 TEST_F(RemoteEstimatorProxyTest, RemovesTimestampsOutOfScope) {
245 const int64_t kTimeoutTimeMs = 246 const int64_t kTimeoutTimeMs =
246 kBaseTimeMs + RemoteEstimatorProxy::kBackWindowMs; 247 kBaseTimeMs + RemoteEstimatorProxy::kBackWindowMs;
247 248
248 IncomingPacket(kBaseSeq + 2, kBaseTimeMs); 249 IncomingPacket(kBaseSeq + 2, kBaseTimeMs);
249 250
250 EXPECT_CALL(router_, SendFeedback(_)) 251 EXPECT_CALL(router_, SendTransportFeedback(_))
251 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) { 252 .WillOnce(Invoke([](rtcp::TransportFeedback* feedback_packet) {
252 EXPECT_EQ(kBaseSeq + 2, feedback_packet->GetBaseSequence()); 253 EXPECT_EQ(kBaseSeq + 2, feedback_packet->GetBaseSequence());
253 254
254 EXPECT_THAT(TimestampsMs(*feedback_packet), ElementsAre(kBaseTimeMs)); 255 EXPECT_THAT(TimestampsMs(*feedback_packet), ElementsAre(kBaseTimeMs));
255 return true; 256 return true;
256 })); 257 }));
257 258
258 Process(); 259 Process();
259 260
260 IncomingPacket(kBaseSeq + 3, kTimeoutTimeMs); // kBaseSeq + 2 times out here. 261 IncomingPacket(kBaseSeq + 3, kTimeoutTimeMs); // kBaseSeq + 2 times out here.
261 262
262 EXPECT_CALL(router_, SendFeedback(_)) 263 EXPECT_CALL(router_, SendTransportFeedback(_))
263 .WillOnce( 264 .WillOnce(
264 Invoke([kTimeoutTimeMs](rtcp::TransportFeedback* feedback_packet) { 265 Invoke([kTimeoutTimeMs](rtcp::TransportFeedback* feedback_packet) {
265 EXPECT_EQ(kBaseSeq + 3, feedback_packet->GetBaseSequence()); 266 EXPECT_EQ(kBaseSeq + 3, feedback_packet->GetBaseSequence());
266 267
267 EXPECT_THAT(TimestampsMs(*feedback_packet), 268 EXPECT_THAT(TimestampsMs(*feedback_packet),
268 ElementsAre(kTimeoutTimeMs)); 269 ElementsAre(kTimeoutTimeMs));
269 return true; 270 return true;
270 })); 271 }));
271 272
272 Process(); 273 Process();
273 274
274 // New group, with sequence starting below the first so that they may be 275 // New group, with sequence starting below the first so that they may be
275 // retransmitted. 276 // retransmitted.
276 IncomingPacket(kBaseSeq, kBaseTimeMs - 1); 277 IncomingPacket(kBaseSeq, kBaseTimeMs - 1);
277 IncomingPacket(kBaseSeq + 1, kTimeoutTimeMs - 1); 278 IncomingPacket(kBaseSeq + 1, kTimeoutTimeMs - 1);
278 279
279 EXPECT_CALL(router_, SendFeedback(_)) 280 EXPECT_CALL(router_, SendTransportFeedback(_))
280 .WillOnce( 281 .WillOnce(
281 Invoke([kTimeoutTimeMs](rtcp::TransportFeedback* feedback_packet) { 282 Invoke([kTimeoutTimeMs](rtcp::TransportFeedback* feedback_packet) {
282 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence()); 283 EXPECT_EQ(kBaseSeq, feedback_packet->GetBaseSequence());
283 284
284 EXPECT_THAT(SequenceNumbers(*feedback_packet), 285 EXPECT_THAT(SequenceNumbers(*feedback_packet),
285 ElementsAre(kBaseSeq, kBaseSeq + 1, kBaseSeq + 3)); 286 ElementsAre(kBaseSeq, kBaseSeq + 1, kBaseSeq + 3));
286 EXPECT_THAT(TimestampsMs(*feedback_packet), 287 EXPECT_THAT(TimestampsMs(*feedback_packet),
287 ElementsAre(kBaseTimeMs - 1, kTimeoutTimeMs - 1, 288 ElementsAre(kBaseTimeMs - 1, kTimeoutTimeMs - 1,
288 kTimeoutTimeMs)); 289 kTimeoutTimeMs));
289 return true; 290 return true;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 329
329 TEST_F(RemoteEstimatorProxyTest, TwccReportsUse5PercentOfAvailableBandwidth) { 330 TEST_F(RemoteEstimatorProxyTest, TwccReportsUse5PercentOfAvailableBandwidth) {
330 Process(); 331 Process();
331 proxy_.OnBitrateChanged(80000); 332 proxy_.OnBitrateChanged(80000);
332 // 80kbps * 0.05 = TwccReportSize(68B * 8b/B) * 1000ms / SendInterval(136ms) 333 // 80kbps * 0.05 = TwccReportSize(68B * 8b/B) * 1000ms / SendInterval(136ms)
333 EXPECT_EQ(136, proxy_.TimeUntilNextProcess()); 334 EXPECT_EQ(136, proxy_.TimeUntilNextProcess());
334 } 335 }
335 336
336 } // namespace 337 } // namespace
337 } // namespace webrtc 338 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/remote_bitrate_estimator/remote_estimator_proxy.cc ('k') | webrtc/video/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698