Chromium Code Reviews| 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 |