| 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 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 protected: | 150 protected: |
| 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 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); |
| 163 testing_clock_->Advance( | |
| 164 base::TimeDelta::FromMilliseconds(kStartMillisecond)); | |
| 165 net::IPEndPoint dummy_endpoint; | 162 net::IPEndPoint dummy_endpoint; |
| 166 transport_sender_.reset(new transport::CastTransportSenderImpl( | 163 transport_sender_.reset(new transport::CastTransportSenderImpl( |
| 167 NULL, | 164 NULL, |
| 168 testing_clock_, | 165 testing_clock_, |
| 169 dummy_endpoint, | 166 dummy_endpoint, |
| 170 base::Bind(&UpdateCastTransportStatus), | 167 base::Bind(&UpdateCastTransportStatus), |
| 171 transport::BulkRawEventsCallback(), | 168 transport::BulkRawEventsCallback(), |
| 172 base::TimeDelta(), | 169 base::TimeDelta(), |
| 173 task_runner_, | 170 task_runner_, |
| 174 &sender_to_receiver_)); | 171 &sender_to_receiver_)); |
| 172 transport::CastTransportAudioConfig config; |
| 173 config.rtp.config.ssrc = kSenderSsrc; |
| 174 config.rtp.max_outstanding_frames = 1; |
| 175 transport_sender_->InitializeAudio(config); |
| 175 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0); | 176 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0); |
| 176 } | 177 } |
| 177 | 178 |
| 178 virtual ~RtcpTest() {} | 179 virtual ~RtcpTest() {} |
| 179 | 180 |
| 180 static void UpdateCastTransportStatus(transport::CastTransportStatus status) { | 181 static void UpdateCastTransportStatus(transport::CastTransportStatus status) { |
| 181 bool result = (status == transport::TRANSPORT_AUDIO_INITIALIZED || | 182 bool result = (status == transport::TRANSPORT_AUDIO_INITIALIZED || |
| 182 status == transport::TRANSPORT_VIDEO_INITIALIZED); | 183 status == transport::TRANSPORT_VIDEO_INITIALIZED); |
| 183 EXPECT_TRUE(result); | 184 EXPECT_TRUE(result); |
| 184 } | 185 } |
| 185 | 186 |
| 186 void RunTasks(int during_ms) { | 187 void RunTasks(int during_ms) { |
| 187 for (int i = 0; i < during_ms; ++i) { | 188 for (int i = 0; i < during_ms; ++i) { |
| 188 // Call process the timers every 1 ms. | 189 // Call process the timers every 1 ms. |
| 189 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(1)); | 190 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(1)); |
| 190 task_runner_->RunTasks(); | 191 task_runner_->RunTasks(); |
| 191 } | 192 } |
| 192 } | 193 } |
| 193 | 194 |
| 194 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. | 195 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
| 195 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 196 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
| 196 scoped_refptr<CastEnvironment> cast_environment_; | 197 scoped_refptr<CastEnvironment> cast_environment_; |
| 197 RtcpTestPacketSender sender_to_receiver_; | 198 RtcpTestPacketSender sender_to_receiver_; |
| 198 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; | 199 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; |
| 199 LocalRtcpTransport receiver_to_sender_; | 200 LocalRtcpTransport receiver_to_sender_; |
| 200 MockRtcpSenderFeedback mock_sender_feedback_; | 201 MockRtcpSenderFeedback mock_sender_feedback_; |
| 201 RtpSenderStatistics rtp_sender_stats_; | |
| 202 | 202 |
| 203 DISALLOW_COPY_AND_ASSIGN(RtcpTest); | 203 DISALLOW_COPY_AND_ASSIGN(RtcpTest); |
| 204 }; | 204 }; |
| 205 | 205 |
| 206 TEST_F(RtcpTest, TimeToSend) { | 206 TEST_F(RtcpTest, TimeToSend) { |
| 207 base::TimeTicks start_time; | 207 base::TimeTicks start_time = testing_clock_->NowTicks(); |
| 208 start_time += base::TimeDelta::FromMilliseconds(kStartMillisecond); | |
| 209 Rtcp rtcp(cast_environment_, | 208 Rtcp rtcp(cast_environment_, |
| 210 &mock_sender_feedback_, | 209 &mock_sender_feedback_, |
| 211 transport_sender_.get(), | 210 transport_sender_.get(), |
| 212 &receiver_to_sender_, | 211 &receiver_to_sender_, |
| 213 NULL, | 212 NULL, |
| 214 kRtcpCompound, | 213 kRtcpCompound, |
| 215 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 214 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 216 kSenderSsrc, | 215 kSenderSsrc, |
| 217 kReceiverSsrc, | 216 kReceiverSsrc, |
| 218 kCName, | 217 kCName, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 233 transport_sender_.get(), | 232 transport_sender_.get(), |
| 234 NULL, | 233 NULL, |
| 235 NULL, | 234 NULL, |
| 236 kRtcpCompound, | 235 kRtcpCompound, |
| 237 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 236 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 238 kSenderSsrc, | 237 kSenderSsrc, |
| 239 kReceiverSsrc, | 238 kReceiverSsrc, |
| 240 kCName, | 239 kCName, |
| 241 true); | 240 true); |
| 242 sender_to_receiver_.set_rtcp_receiver(&rtcp); | 241 sender_to_receiver_.set_rtcp_receiver(&rtcp); |
| 243 rtcp.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 242 rtcp.SendRtcpFromRtpSender(base::TimeTicks(), 0); |
| 244 } | 243 } |
| 245 | 244 |
| 246 TEST_F(RtcpTest, BasicReceiverReport) { | 245 TEST_F(RtcpTest, BasicReceiverReport) { |
| 247 Rtcp rtcp(cast_environment_, | 246 Rtcp rtcp(cast_environment_, |
| 248 &mock_sender_feedback_, | 247 &mock_sender_feedback_, |
| 249 NULL, | 248 NULL, |
| 250 &receiver_to_sender_, | 249 &receiver_to_sender_, |
| 251 NULL, | 250 NULL, |
| 252 kRtcpCompound, | 251 kRtcpCompound, |
| 253 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 252 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); | 317 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); |
| 319 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); | 318 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); |
| 320 | 319 |
| 321 base::TimeDelta rtt; | 320 base::TimeDelta rtt; |
| 322 base::TimeDelta avg_rtt; | 321 base::TimeDelta avg_rtt; |
| 323 base::TimeDelta min_rtt; | 322 base::TimeDelta min_rtt; |
| 324 base::TimeDelta max_rtt; | 323 base::TimeDelta max_rtt; |
| 325 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 324 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)); | 325 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 327 | 326 |
| 328 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 327 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 1); |
| 329 RunTasks(33); | 328 RunTasks(33); |
| 330 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 329 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
| 331 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 330 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)); | 331 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 333 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); | 332 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); |
| 334 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); | 333 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); |
| 335 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); | 334 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); |
| 336 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 335 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
| 337 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 336 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 2); |
| 338 RunTasks(33); | 337 RunTasks(33); |
| 339 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 338 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 340 | 339 |
| 341 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); | 340 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); |
| 342 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); | 341 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); |
| 343 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); | 342 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); |
| 344 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 343 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
| 345 } | 344 } |
| 346 | 345 |
| 347 TEST_F(RtcpTest, Rtt) { | 346 TEST_F(RtcpTest, Rtt) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 374 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); | 373 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); |
| 375 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); | 374 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); |
| 376 | 375 |
| 377 base::TimeDelta rtt; | 376 base::TimeDelta rtt; |
| 378 base::TimeDelta avg_rtt; | 377 base::TimeDelta avg_rtt; |
| 379 base::TimeDelta min_rtt; | 378 base::TimeDelta min_rtt; |
| 380 base::TimeDelta max_rtt; | 379 base::TimeDelta max_rtt; |
| 381 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 380 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)); | 381 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 383 | 382 |
| 384 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 383 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 1); |
| 385 RunTasks(33); | 384 RunTasks(33); |
| 386 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 385 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
| 387 | 386 |
| 388 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 387 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 389 RunTasks(33); | 388 RunTasks(33); |
| 390 | 389 |
| 391 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 390 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 392 RunTasks(33); | 391 RunTasks(33); |
| 393 | 392 |
| 394 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); | 393 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); |
| 395 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); | 394 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); |
| 396 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); | 395 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); |
| 397 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 396 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
| 398 | 397 |
| 399 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 398 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 2); |
| 400 RunTasks(33); | 399 RunTasks(33); |
| 401 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 400 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 402 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); | 401 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); |
| 403 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); | 402 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); |
| 404 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); | 403 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); |
| 405 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 404 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
| 406 | 405 |
| 407 receiver_to_sender_.set_short_delay(); | 406 receiver_to_sender_.set_short_delay(); |
| 408 sender_to_receiver_.set_short_delay(); | 407 sender_to_receiver_.set_short_delay(); |
| 409 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 408 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
| 410 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 409 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 411 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 2); | 410 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 2); |
| 412 EXPECT_NEAR( | 411 EXPECT_NEAR( |
| 413 (kAddedShortDelay + 3 * kAddedDelay) / 2, avg_rtt.InMilliseconds(), 2); | 412 (kAddedShortDelay + 3 * kAddedDelay) / 2, avg_rtt.InMilliseconds(), 2); |
| 414 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, min_rtt.InMilliseconds(), 2); | 413 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, min_rtt.InMilliseconds(), 2); |
| 415 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 414 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
| 416 | 415 |
| 417 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 416 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 3); |
| 418 RunTasks(33); | 417 RunTasks(33); |
| 419 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 418 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 420 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); | 419 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); |
| 421 EXPECT_NEAR((2 * kAddedShortDelay + 2 * kAddedDelay) / 2, | 420 EXPECT_NEAR((2 * kAddedShortDelay + 2 * kAddedDelay) / 2, |
| 422 avg_rtt.InMilliseconds(), | 421 avg_rtt.InMilliseconds(), |
| 423 1); | 422 1); |
| 424 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 2); | 423 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 2); |
| 425 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 424 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
| 426 | 425 |
| 427 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 426 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 439 | 438 |
| 440 TEST_F(RtcpTest, RttWithPacketLoss) { | 439 TEST_F(RtcpTest, RttWithPacketLoss) { |
| 441 // Media receiver. | 440 // Media receiver. |
| 442 Rtcp rtcp_receiver(cast_environment_, | 441 Rtcp rtcp_receiver(cast_environment_, |
| 443 &mock_sender_feedback_, | 442 &mock_sender_feedback_, |
| 444 NULL, | 443 NULL, |
| 445 &receiver_to_sender_, | 444 &receiver_to_sender_, |
| 446 NULL, | 445 NULL, |
| 447 kRtcpReducedSize, | 446 kRtcpReducedSize, |
| 448 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 447 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 448 kReceiverSsrc, |
| 449 kSenderSsrc, | 449 kSenderSsrc, |
| 450 kReceiverSsrc, | |
| 451 kCName, | 450 kCName, |
| 452 true); | 451 true); |
| 453 | 452 |
| 454 // Media sender. | 453 // Media sender. |
| 455 Rtcp rtcp_sender(cast_environment_, | 454 Rtcp rtcp_sender(cast_environment_, |
| 456 &mock_sender_feedback_, | 455 &mock_sender_feedback_, |
| 457 transport_sender_.get(), | 456 transport_sender_.get(), |
| 458 NULL, | 457 NULL, |
| 459 NULL, | 458 NULL, |
| 460 kRtcpReducedSize, | 459 kRtcpReducedSize, |
| 461 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 460 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 461 kSenderSsrc, |
| 462 kReceiverSsrc, | 462 kReceiverSsrc, |
| 463 kSenderSsrc, | |
| 464 kCName, | 463 kCName, |
| 465 true); | 464 true); |
| 466 | 465 |
| 467 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); | 466 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); |
| 468 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); | 467 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); |
| 469 | 468 |
| 470 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 469 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
| 471 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 470 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 0); |
| 472 RunTasks(33); | 471 RunTasks(33); |
| 473 | 472 |
| 474 base::TimeDelta rtt; | 473 base::TimeDelta rtt; |
| 475 base::TimeDelta avg_rtt; | 474 base::TimeDelta avg_rtt; |
| 476 base::TimeDelta min_rtt; | 475 base::TimeDelta min_rtt; |
| 477 base::TimeDelta max_rtt; | 476 base::TimeDelta max_rtt; |
| 478 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 477 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)); | 478 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 480 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); | 479 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); |
| 481 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); | 480 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); |
| 482 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); | 481 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); |
| 483 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); | 482 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
| 484 | 483 |
| 485 receiver_to_sender_.set_short_delay(); | 484 receiver_to_sender_.set_short_delay(); |
| 486 sender_to_receiver_.set_short_delay(); | 485 sender_to_receiver_.set_short_delay(); |
| 487 receiver_to_sender_.set_drop_packets(true); | 486 receiver_to_sender_.set_drop_packets(true); |
| 488 | 487 |
| 489 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 488 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
| 490 rtcp_sender.SendRtcpFromRtpSender(rtp_sender_stats_.sender_info()); | 489 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 1); |
| 491 RunTasks(33); | 490 RunTasks(33); |
| 492 | 491 |
| 493 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 492 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 494 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 2); | 493 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 2); |
| 495 } | 494 } |
| 496 | 495 |
| 497 TEST_F(RtcpTest, NtpAndTime) { | 496 TEST_F(RtcpTest, NtpAndTime) { |
| 498 const int64 kSecondsbetweenYear1900and2010 = INT64_C(40176 * 24 * 60 * 60); | 497 const int64 kSecondsbetweenYear1900and2010 = INT64_C(40176 * 24 * 60 * 60); |
| 499 const int64 kSecondsbetweenYear1900and2030 = INT64_C(47481 * 24 * 60 * 60); | 498 const int64 kSecondsbetweenYear1900and2030 = INT64_C(47481 * 24 * 60 * 60); |
| 500 | 499 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 626 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); | 625 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); |
| 627 rtp_timestamp = 64000; | 626 rtp_timestamp = 64000; |
| 628 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime( | 627 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime( |
| 629 frequency, rtp_timestamp, &rtp_timestamp_in_ticks)); | 628 frequency, rtp_timestamp, &rtp_timestamp_in_ticks)); |
| 630 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), | 629 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), |
| 631 rtp_timestamp_in_ticks); | 630 rtp_timestamp_in_ticks); |
| 632 } | 631 } |
| 633 | 632 |
| 634 } // namespace cast | 633 } // namespace cast |
| 635 } // namespace media | 634 } // namespace media |
| OLD | NEW |