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

Side by Side Diff: media/cast/rtcp/rtcp_unittest.cc

Issue 281453003: Cast: Simplify code path for RTCP sender report (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698