OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include "base/test/simple_test_tick_clock.h" | 7 #include "base/test/simple_test_tick_clock.h" |
8 #include "media/cast/cast_defines.h" | 8 #include "media/cast/cast_defines.h" |
9 #include "media/cast/cast_environment.h" | 9 #include "media/cast/cast_environment.h" |
10 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" | 10 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" |
11 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" | 11 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" |
12 #include "media/cast/rtcp/rtcp.h" | 12 #include "media/cast/rtcp/rtcp.h" |
13 #include "media/cast/rtcp/test_rtcp_packet_builder.h" | 13 #include "media/cast/rtcp/test_rtcp_packet_builder.h" |
14 #include "media/cast/test/fake_single_thread_task_runner.h" | 14 #include "media/cast/test/fake_single_thread_task_runner.h" |
15 #include "media/cast/transport/cast_transport_config.h" | 15 #include "media/cast/transport/cast_transport_config.h" |
16 #include "media/cast/transport/cast_transport_sender_impl.h" | 16 #include "media/cast/transport/cast_transport_sender_impl.h" |
17 #include "media/cast/transport/pacing/paced_sender.h" | 17 #include "media/cast/transport/pacing/paced_sender.h" |
18 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
19 | 19 |
20 namespace media { | 20 namespace media { |
21 namespace cast { | 21 namespace cast { |
22 | 22 |
23 using testing::_; | 23 using testing::_; |
24 | 24 |
25 static const uint32 kSenderSsrc = 0x10203; | 25 static const uint32 kSenderSsrc = 0x10203; |
26 static const uint32 kReceiverSsrc = 0x40506; | 26 static const uint32 kReceiverSsrc = 0x40506; |
27 static const std::string kCName("test@10.1.1.1"); | 27 static const std::string kCName("test@10.1.1.1"); |
28 static const uint32 kRtcpIntervalMs = 500; | 28 static const uint32 kRtcpIntervalMs = 500; |
29 static const int64 kStartMillisecond = INT64_C(12345678900000); | |
30 static const int64 kAddedDelay = 123; | 29 static const int64 kAddedDelay = 123; |
31 static const int64 kAddedShortDelay = 100; | 30 static const int64 kAddedShortDelay = 100; |
32 | 31 |
33 class RtcpTestPacketSender : public transport::PacketSender { | 32 class RtcpTestPacketSender : public transport::PacketSender { |
34 public: | 33 public: |
35 explicit RtcpTestPacketSender(base::SimpleTestTickClock* testing_clock) | 34 explicit RtcpTestPacketSender(base::SimpleTestTickClock* testing_clock) |
36 : drop_packets_(false), | 35 : drop_packets_(false), |
37 short_delay_(false), | 36 short_delay_(false), |
38 rtcp_receiver_(NULL), | 37 rtcp_receiver_(NULL), |
39 testing_clock_(testing_clock) {} | 38 testing_clock_(testing_clock) {} |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
152 RtcpTest() | 151 RtcpTest() |
153 : testing_clock_(new base::SimpleTestTickClock()), | 152 : testing_clock_(new base::SimpleTestTickClock()), |
154 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), | 153 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), |
155 cast_environment_(new CastEnvironment( | 154 cast_environment_(new CastEnvironment( |
156 scoped_ptr<base::TickClock>(testing_clock_).Pass(), | 155 scoped_ptr<base::TickClock>(testing_clock_).Pass(), |
157 task_runner_, | 156 task_runner_, |
158 task_runner_, | 157 task_runner_, |
159 task_runner_)), | 158 task_runner_)), |
160 sender_to_receiver_(testing_clock_), | 159 sender_to_receiver_(testing_clock_), |
161 receiver_to_sender_(cast_environment_, testing_clock_), | 160 receiver_to_sender_(cast_environment_, testing_clock_), |
162 rtp_sender_stats_(kVideoFrequency) { | 161 start_time_(base::TimeTicks::Now() - base::TimeTicks()) { |
163 testing_clock_->Advance( | 162 testing_clock_->Advance(start_time_); |
164 base::TimeDelta::FromMilliseconds(kStartMillisecond)); | |
165 net::IPEndPoint dummy_endpoint; | 163 net::IPEndPoint dummy_endpoint; |
166 transport_sender_.reset(new transport::CastTransportSenderImpl( | 164 transport_sender_.reset(new transport::CastTransportSenderImpl( |
167 NULL, | 165 NULL, |
168 testing_clock_, | 166 testing_clock_, |
169 dummy_endpoint, | 167 dummy_endpoint, |
170 base::Bind(&UpdateCastTransportStatus), | 168 base::Bind(&UpdateCastTransportStatus), |
171 transport::BulkRawEventsCallback(), | 169 transport::BulkRawEventsCallback(), |
172 base::TimeDelta(), | 170 base::TimeDelta(), |
173 task_runner_, | 171 task_runner_, |
174 &sender_to_receiver_)); | 172 &sender_to_receiver_)); |
173 transport::CastTransportAudioConfig config; | |
174 config.rtp.config.ssrc = kSenderSsrc; | |
175 config.rtp.max_outstanding_frames = 1; | |
176 transport_sender_->InitializeAudio(config); | |
175 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0); | 177 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0); |
176 } | 178 } |
177 | 179 |
178 virtual ~RtcpTest() {} | 180 virtual ~RtcpTest() {} |
179 | 181 |
180 static void UpdateCastTransportStatus(transport::CastTransportStatus status) { | 182 static void UpdateCastTransportStatus(transport::CastTransportStatus status) { |
181 bool result = (status == transport::TRANSPORT_AUDIO_INITIALIZED || | 183 bool result = (status == transport::TRANSPORT_AUDIO_INITIALIZED || |
182 status == transport::TRANSPORT_VIDEO_INITIALIZED); | 184 status == transport::TRANSPORT_VIDEO_INITIALIZED); |
183 EXPECT_TRUE(result); | 185 EXPECT_TRUE(result); |
184 } | 186 } |
185 | 187 |
186 void RunTasks(int during_ms) { | 188 void RunTasks(int during_ms) { |
187 for (int i = 0; i < during_ms; ++i) { | 189 for (int i = 0; i < during_ms; ++i) { |
188 // Call process the timers every 1 ms. | 190 // Call process the timers every 1 ms. |
189 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(1)); | 191 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(1)); |
190 task_runner_->RunTasks(); | 192 task_runner_->RunTasks(); |
191 } | 193 } |
192 } | 194 } |
193 | 195 |
194 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. | 196 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
195 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 197 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
196 scoped_refptr<CastEnvironment> cast_environment_; | 198 scoped_refptr<CastEnvironment> cast_environment_; |
197 RtcpTestPacketSender sender_to_receiver_; | 199 RtcpTestPacketSender sender_to_receiver_; |
198 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; | 200 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; |
199 LocalRtcpTransport receiver_to_sender_; | 201 LocalRtcpTransport receiver_to_sender_; |
200 MockRtcpSenderFeedback mock_sender_feedback_; | 202 MockRtcpSenderFeedback mock_sender_feedback_; |
201 RtpSenderStatistics rtp_sender_stats_; | 203 base::TimeDelta start_time_; |
miu
2014/05/13 01:11:56
You don't need this extra member (see comment belo
Alpha Left Google
2014/05/13 21:45:39
Done.
| |
202 | 204 |
203 DISALLOW_COPY_AND_ASSIGN(RtcpTest); | 205 DISALLOW_COPY_AND_ASSIGN(RtcpTest); |
204 }; | 206 }; |
205 | 207 |
206 TEST_F(RtcpTest, TimeToSend) { | 208 TEST_F(RtcpTest, TimeToSend) { |
207 base::TimeTicks start_time; | 209 base::TimeTicks start_time; |
miu
2014/05/13 01:11:56
Suggestion: Delete this line and the next, and rep
Alpha Left Google
2014/05/13 21:45:39
Done.
| |
208 start_time += base::TimeDelta::FromMilliseconds(kStartMillisecond); | 210 start_time += start_time_; |
209 Rtcp rtcp(cast_environment_, | 211 Rtcp rtcp(cast_environment_, |
210 &mock_sender_feedback_, | 212 &mock_sender_feedback_, |
211 transport_sender_.get(), | 213 transport_sender_.get(), |
212 &receiver_to_sender_, | 214 &receiver_to_sender_, |
213 NULL, | 215 NULL, |
214 kRtcpCompound, | 216 kRtcpCompound, |
215 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 217 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
216 kSenderSsrc, | 218 kSenderSsrc, |
217 kReceiverSsrc, | 219 kReceiverSsrc, |
218 kCName, | 220 kCName, |
(...skipping 14 matching lines...) Expand all Loading... | |
233 transport_sender_.get(), | 235 transport_sender_.get(), |
234 NULL, | 236 NULL, |
235 NULL, | 237 NULL, |
236 kRtcpCompound, | 238 kRtcpCompound, |
237 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 239 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
238 kSenderSsrc, | 240 kSenderSsrc, |
239 kReceiverSsrc, | 241 kReceiverSsrc, |
240 kCName, | 242 kCName, |
241 true); | 243 true); |
242 sender_to_receiver_.set_rtcp_receiver(&rtcp); | 244 sender_to_receiver_.set_rtcp_receiver(&rtcp); |
243 rtcp.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 245 rtcp.SendRtcpFromRtpSender(base::TimeTicks(), 0); |
244 } | 246 } |
245 | 247 |
246 TEST_F(RtcpTest, BasicReceiverReport) { | 248 TEST_F(RtcpTest, BasicReceiverReport) { |
247 Rtcp rtcp(cast_environment_, | 249 Rtcp rtcp(cast_environment_, |
248 &mock_sender_feedback_, | 250 &mock_sender_feedback_, |
249 NULL, | 251 NULL, |
250 &receiver_to_sender_, | 252 &receiver_to_sender_, |
251 NULL, | 253 NULL, |
252 kRtcpCompound, | 254 kRtcpCompound, |
253 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 255 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
318 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); | 320 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); |
319 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); | 321 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); |
320 | 322 |
321 base::TimeDelta rtt; | 323 base::TimeDelta rtt; |
322 base::TimeDelta avg_rtt; | 324 base::TimeDelta avg_rtt; |
323 base::TimeDelta min_rtt; | 325 base::TimeDelta min_rtt; |
324 base::TimeDelta max_rtt; | 326 base::TimeDelta max_rtt; |
325 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 327 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
326 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 328 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
327 | 329 |
328 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 330 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 1); |
329 RunTasks(33); | 331 RunTasks(33); |
330 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 332 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
331 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 333 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
332 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 334 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
333 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); | 335 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); |
334 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); | 336 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); |
335 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); | 337 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); |
336 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 338 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
337 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 339 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 2); |
338 RunTasks(33); | 340 RunTasks(33); |
339 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 341 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
340 | 342 |
341 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); | 343 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); |
342 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); | 344 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); |
343 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); | 345 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); |
344 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 346 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
345 } | 347 } |
346 | 348 |
347 TEST_F(RtcpTest, Rtt) { | 349 TEST_F(RtcpTest, Rtt) { |
(...skipping 26 matching lines...) Expand all Loading... | |
374 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); | 376 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); |
375 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); | 377 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); |
376 | 378 |
377 base::TimeDelta rtt; | 379 base::TimeDelta rtt; |
378 base::TimeDelta avg_rtt; | 380 base::TimeDelta avg_rtt; |
379 base::TimeDelta min_rtt; | 381 base::TimeDelta min_rtt; |
380 base::TimeDelta max_rtt; | 382 base::TimeDelta max_rtt; |
381 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 383 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
382 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 384 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
383 | 385 |
384 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 386 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 1); |
385 RunTasks(33); | 387 RunTasks(33); |
386 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 388 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
387 | 389 |
388 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 390 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
389 RunTasks(33); | 391 RunTasks(33); |
390 | 392 |
391 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 393 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
392 RunTasks(33); | 394 RunTasks(33); |
393 | 395 |
394 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); | 396 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); |
395 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); | 397 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); |
396 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); | 398 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); |
397 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 399 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
398 | 400 |
399 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 401 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 2); |
400 RunTasks(33); | 402 RunTasks(33); |
401 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 403 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
402 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); | 404 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); |
403 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); | 405 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); |
404 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); | 406 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); |
405 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 407 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
406 | 408 |
407 receiver_to_sender_.set_short_delay(); | 409 receiver_to_sender_.set_short_delay(); |
408 sender_to_receiver_.set_short_delay(); | 410 sender_to_receiver_.set_short_delay(); |
409 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 411 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
410 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 412 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
411 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 2); | 413 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 2); |
412 EXPECT_NEAR( | 414 EXPECT_NEAR( |
413 (kAddedShortDelay + 3 * kAddedDelay) / 2, avg_rtt.InMilliseconds(), 2); | 415 (kAddedShortDelay + 3 * kAddedDelay) / 2, avg_rtt.InMilliseconds(), 2); |
414 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, min_rtt.InMilliseconds(), 2); | 416 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, min_rtt.InMilliseconds(), 2); |
415 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 417 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
416 | 418 |
417 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 419 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 3); |
418 RunTasks(33); | 420 RunTasks(33); |
419 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 421 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
420 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); | 422 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); |
421 EXPECT_NEAR((2 * kAddedShortDelay + 2 * kAddedDelay) / 2, | 423 EXPECT_NEAR((2 * kAddedShortDelay + 2 * kAddedDelay) / 2, |
422 avg_rtt.InMilliseconds(), | 424 avg_rtt.InMilliseconds(), |
423 1); | 425 1); |
424 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 2); | 426 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 2); |
425 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 427 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
426 | 428 |
427 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 429 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
(...skipping 11 matching lines...) Expand all Loading... | |
439 | 441 |
440 TEST_F(RtcpTest, RttWithPacketLoss) { | 442 TEST_F(RtcpTest, RttWithPacketLoss) { |
441 // Media receiver. | 443 // Media receiver. |
442 Rtcp rtcp_receiver(cast_environment_, | 444 Rtcp rtcp_receiver(cast_environment_, |
443 &mock_sender_feedback_, | 445 &mock_sender_feedback_, |
444 NULL, | 446 NULL, |
445 &receiver_to_sender_, | 447 &receiver_to_sender_, |
446 NULL, | 448 NULL, |
447 kRtcpReducedSize, | 449 kRtcpReducedSize, |
448 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 450 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
451 kReceiverSsrc, | |
449 kSenderSsrc, | 452 kSenderSsrc, |
450 kReceiverSsrc, | |
451 kCName, | 453 kCName, |
452 true); | 454 true); |
453 | 455 |
454 // Media sender. | 456 // Media sender. |
455 Rtcp rtcp_sender(cast_environment_, | 457 Rtcp rtcp_sender(cast_environment_, |
456 &mock_sender_feedback_, | 458 &mock_sender_feedback_, |
457 transport_sender_.get(), | 459 transport_sender_.get(), |
458 NULL, | 460 NULL, |
459 NULL, | 461 NULL, |
460 kRtcpReducedSize, | 462 kRtcpReducedSize, |
461 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 463 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
464 kSenderSsrc, | |
462 kReceiverSsrc, | 465 kReceiverSsrc, |
463 kSenderSsrc, | |
464 kCName, | 466 kCName, |
465 true); | 467 true); |
466 | 468 |
467 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); | 469 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); |
468 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); | 470 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); |
469 | 471 |
470 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 472 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
471 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 473 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 0); |
472 RunTasks(33); | 474 RunTasks(33); |
473 | 475 |
474 base::TimeDelta rtt; | 476 base::TimeDelta rtt; |
475 base::TimeDelta avg_rtt; | 477 base::TimeDelta avg_rtt; |
476 base::TimeDelta min_rtt; | 478 base::TimeDelta min_rtt; |
477 base::TimeDelta max_rtt; | 479 base::TimeDelta max_rtt; |
478 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 480 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
479 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 481 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
480 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); | 482 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); |
481 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); | 483 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); |
482 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); | 484 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); |
483 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); | 485 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
484 | 486 |
485 receiver_to_sender_.set_short_delay(); | 487 receiver_to_sender_.set_short_delay(); |
486 sender_to_receiver_.set_short_delay(); | 488 sender_to_receiver_.set_short_delay(); |
487 receiver_to_sender_.set_drop_packets(true); | 489 receiver_to_sender_.set_drop_packets(true); |
488 | 490 |
489 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 491 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
490 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 492 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 1); |
491 RunTasks(33); | 493 RunTasks(33); |
492 | 494 |
493 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 495 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
494 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 2); | 496 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 2); |
495 } | 497 } |
496 | 498 |
497 TEST_F(RtcpTest, NtpAndTime) { | 499 TEST_F(RtcpTest, NtpAndTime) { |
498 const int64 kSecondsbetweenYear1900and2010 = INT64_C(40176 * 24 * 60 * 60); | 500 const int64 kSecondsbetweenYear1900and2010 = INT64_C(40176 * 24 * 60 * 60); |
499 const int64 kSecondsbetweenYear1900and2030 = INT64_C(47481 * 24 * 60 * 60); | 501 const int64 kSecondsbetweenYear1900and2030 = INT64_C(47481 * 24 * 60 * 60); |
500 | 502 |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
626 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); | 628 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); |
627 rtp_timestamp = 64000; | 629 rtp_timestamp = 64000; |
628 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime( | 630 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime( |
629 frequency, rtp_timestamp, &rtp_timestamp_in_ticks)); | 631 frequency, rtp_timestamp, &rtp_timestamp_in_ticks)); |
630 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), | 632 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), |
631 rtp_timestamp_in_ticks); | 633 rtp_timestamp_in_ticks); |
632 } | 634 } |
633 | 635 |
634 } // namespace cast | 636 } // namespace cast |
635 } // namespace media | 637 } // namespace media |
OLD | NEW |