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

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

Issue 266373008: Cast: Fix rtcp event dedup logic in rtcp_receiver. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments 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
« no previous file with comments | « media/cast/rtcp/rtcp_sender.cc ('k') | media/cast/rtcp/rtcp_utility.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/test/simple_test_tick_clock.h" 6 #include "base/test/simple_test_tick_clock.h"
7 #include "media/cast/cast_defines.h" 7 #include "media/cast/cast_defines.h"
8 #include "media/cast/cast_environment.h" 8 #include "media/cast/cast_environment.h"
9 #include "media/cast/rtcp/receiver_rtcp_event_subscriber.h" 9 #include "media/cast/rtcp/receiver_rtcp_event_subscriber.h"
10 #include "media/cast/rtcp/rtcp_sender.h" 10 #include "media/cast/rtcp/rtcp_sender.h"
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 &rrtr, 266 &rrtr,
267 &cast_message, 267 &cast_message,
268 &rtcp_events, 268 &rtcp_events,
269 kDefaultDelay); 269 kDefaultDelay);
270 270
271 base::SimpleTestTickClock testing_clock; 271 base::SimpleTestTickClock testing_clock;
272 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); 272 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs));
273 273
274 p.AddReceiverLog(kSendingSsrc); 274 p.AddReceiverLog(kSendingSsrc);
275 p.AddReceiverFrameLog(kRtpTimestamp, 2, kTimeBaseMs); 275 p.AddReceiverFrameLog(kRtpTimestamp, 2, kTimeBaseMs);
276 p.AddReceiverEventLog(0, 5, 0); 276 p.AddReceiverEventLog(0, kVideoAckSent, 0);
277 p.AddReceiverEventLog(kLostPacketId1, 8, kTimeDelayMs); 277 p.AddReceiverEventLog(kLostPacketId1, kVideoPacketReceived, kTimeDelayMs);
278 278
279 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); 279 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass());
280 280
281 FrameEvent frame_event; 281 FrameEvent frame_event;
282 frame_event.rtp_timestamp = kRtpTimestamp; 282 frame_event.rtp_timestamp = kRtpTimestamp;
283 frame_event.type = kVideoAckSent; 283 frame_event.type = kVideoAckSent;
284 frame_event.timestamp = testing_clock.NowTicks(); 284 frame_event.timestamp = testing_clock.NowTicks();
285 event_subscriber.OnReceiveFrameEvent(frame_event); 285 event_subscriber.OnReceiveFrameEvent(frame_event);
286 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); 286 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs));
287 287
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 remaining_bytes -= kRtcpReceiverFrameLogSize; 328 remaining_bytes -= kRtcpReceiverFrameLogSize;
329 int num_events = remaining_bytes / kRtcpReceiverEventLogSize; 329 int num_events = remaining_bytes / kRtcpReceiverEventLogSize;
330 EXPECT_LE(num_events, static_cast<int>(kRtcpMaxReceiverLogMessages)); 330 EXPECT_LE(num_events, static_cast<int>(kRtcpMaxReceiverLogMessages));
331 // Only the last |num_events| events are sent due to receiver log size cap. 331 // Only the last |num_events| events are sent due to receiver log size cap.
332 p.AddReceiverFrameLog( 332 p.AddReceiverFrameLog(
333 kRtpTimestamp + 2345, 333 kRtpTimestamp + 2345,
334 num_events, 334 num_events,
335 kTimeBaseMs + (kRtcpMaxReceiverLogMessages - num_events) * kTimeDelayMs); 335 kTimeBaseMs + (kRtcpMaxReceiverLogMessages - num_events) * kTimeDelayMs);
336 for (int i = 0; i < num_events; i++) { 336 for (int i = 0; i < num_events; i++) {
337 p.AddReceiverEventLog( 337 p.AddReceiverEventLog(
338 kLostPacketId1, 8, static_cast<uint16>(kTimeDelayMs * i)); 338 kLostPacketId1, kVideoPacketReceived,
339 static_cast<uint16>(kTimeDelayMs * i));
339 } 340 }
340 341
341 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); 342 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass());
342 343
343 ReceiverRtcpEventSubscriber event_subscriber( 344 ReceiverRtcpEventSubscriber event_subscriber(
344 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber); 345 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber);
345 FrameEvent frame_event; 346 FrameEvent frame_event;
346 frame_event.rtp_timestamp = kRtpTimestamp; 347 frame_event.rtp_timestamp = kRtpTimestamp;
347 frame_event.type = media::cast::kVideoAckSent; 348 frame_event.type = media::cast::kVideoAckSent;
348 frame_event.timestamp = testing_clock.NowTicks(); 349 frame_event.timestamp = testing_clock.NowTicks();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 remaining_bytes -= kRtcpCastLogHeaderSize; 393 remaining_bytes -= kRtcpCastLogHeaderSize;
393 394
394 int num_events = 395 int num_events =
395 remaining_bytes / (kRtcpReceiverFrameLogSize + kRtcpReceiverEventLogSize); 396 remaining_bytes / (kRtcpReceiverFrameLogSize + kRtcpReceiverEventLogSize);
396 397
397 // The last |num_events| events are sent due to receiver log size cap. 398 // The last |num_events| events are sent due to receiver log size cap.
398 for (size_t i = kRtcpMaxReceiverLogMessages - num_events; 399 for (size_t i = kRtcpMaxReceiverLogMessages - num_events;
399 i < kRtcpMaxReceiverLogMessages; 400 i < kRtcpMaxReceiverLogMessages;
400 ++i) { 401 ++i) {
401 p.AddReceiverFrameLog(kRtpTimestamp + i, 1, kTimeBaseMs + i * kTimeDelayMs); 402 p.AddReceiverFrameLog(kRtpTimestamp + i, 1, kTimeBaseMs + i * kTimeDelayMs);
402 p.AddReceiverEventLog(0, 5, 0); 403 p.AddReceiverEventLog(0, kVideoAckSent, 0);
403 } 404 }
404 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); 405 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass());
405 406
406 ReceiverRtcpEventSubscriber event_subscriber( 407 ReceiverRtcpEventSubscriber event_subscriber(
407 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber); 408 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber);
408 409
409 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { 410 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) {
410 FrameEvent frame_event; 411 FrameEvent frame_event;
411 frame_event.rtp_timestamp = kRtpTimestamp + static_cast<int>(i); 412 frame_event.rtp_timestamp = kRtpTimestamp + static_cast<int>(i);
412 frame_event.type = media::cast::kVideoAckSent; 413 frame_event.type = media::cast::kVideoAckSent;
(...skipping 30 matching lines...) Expand all
443 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); 444 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs));
444 445
445 p.AddReceiverLog(kSendingSsrc); 446 p.AddReceiverLog(kSendingSsrc);
446 447
447 // Log 11 events for a single frame, each |kTimeBetweenEventsMs| apart. 448 // Log 11 events for a single frame, each |kTimeBetweenEventsMs| apart.
448 // Only last 10 events will be sent because the first event is more than 449 // Only last 10 events will be sent because the first event is more than
449 // 4095 milliseconds away from latest event. 450 // 4095 milliseconds away from latest event.
450 const int kTimeBetweenEventsMs = 410; 451 const int kTimeBetweenEventsMs = 410;
451 p.AddReceiverFrameLog(kRtpTimestamp, 10, kTimeBaseMs + kTimeBetweenEventsMs); 452 p.AddReceiverFrameLog(kRtpTimestamp, 10, kTimeBaseMs + kTimeBetweenEventsMs);
452 for (int i = 0; i < 10; ++i) { 453 for (int i = 0; i < 10; ++i) {
453 p.AddReceiverEventLog(0, 5, i * kTimeBetweenEventsMs); 454 p.AddReceiverEventLog(0, kVideoAckSent, i * kTimeBetweenEventsMs);
454 } 455 }
455 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); 456 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass());
456 457
457 ReceiverRtcpEventSubscriber event_subscriber( 458 ReceiverRtcpEventSubscriber event_subscriber(
458 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber); 459 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber);
459 for (int i = 0; i < 11; ++i) { 460 for (int i = 0; i < 11; ++i) {
460 FrameEvent frame_event; 461 FrameEvent frame_event;
461 frame_event.rtp_timestamp = kRtpTimestamp; 462 frame_event.rtp_timestamp = kRtpTimestamp;
462 frame_event.type = media::cast::kVideoAckSent; 463 frame_event.type = media::cast::kVideoAckSent;
463 frame_event.timestamp = testing_clock.NowTicks(); 464 frame_event.timestamp = testing_clock.NowTicks();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 p.AddRb(kMediaSsrc); 499 p.AddRb(kMediaSsrc);
499 p.AddSdesCname(kSendingSsrc, kCName); 500 p.AddSdesCname(kSendingSsrc, kCName);
500 501
501 p.AddReceiverLog(kSendingSsrc); 502 p.AddReceiverLog(kSendingSsrc);
502 503
503 if (i >= kSecondRedundancyOffset) { 504 if (i >= kSecondRedundancyOffset) {
504 p.AddReceiverFrameLog( 505 p.AddReceiverFrameLog(
505 kRtpTimestamp, 506 kRtpTimestamp,
506 1, 507 1,
507 time_base_ms - kSecondRedundancyOffset * kTimeBetweenEventsMs); 508 time_base_ms - kSecondRedundancyOffset * kTimeBetweenEventsMs);
508 p.AddReceiverEventLog(0, 5, 0); 509 p.AddReceiverEventLog(0, kVideoAckSent, 0);
509 } 510 }
510 if (i >= kFirstRedundancyOffset) { 511 if (i >= kFirstRedundancyOffset) {
511 p.AddReceiverFrameLog( 512 p.AddReceiverFrameLog(
512 kRtpTimestamp, 513 kRtpTimestamp,
513 1, 514 1,
514 time_base_ms - kFirstRedundancyOffset * kTimeBetweenEventsMs); 515 time_base_ms - kFirstRedundancyOffset * kTimeBetweenEventsMs);
515 p.AddReceiverEventLog(0, 5, 0); 516 p.AddReceiverEventLog(0, kVideoAckSent, 0);
516 } 517 }
517 p.AddReceiverFrameLog(kRtpTimestamp, 1, time_base_ms); 518 p.AddReceiverFrameLog(kRtpTimestamp, 1, time_base_ms);
518 p.AddReceiverEventLog(0, 5, 0); 519 p.AddReceiverEventLog(0, kVideoAckSent, 0);
519 520
520 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); 521 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass());
521 522
522 FrameEvent frame_event; 523 FrameEvent frame_event;
523 frame_event.rtp_timestamp = kRtpTimestamp; 524 frame_event.rtp_timestamp = kRtpTimestamp;
524 frame_event.type = media::cast::kVideoAckSent; 525 frame_event.type = media::cast::kVideoAckSent;
525 frame_event.timestamp = testing_clock.NowTicks(); 526 frame_event.timestamp = testing_clock.NowTicks();
526 event_subscriber.OnReceiveFrameEvent(frame_event); 527 event_subscriber.OnReceiveFrameEvent(frame_event);
527 528
528 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; 529 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events;
(...skipping 10 matching lines...) Expand all
539 testing_clock.Advance( 540 testing_clock.Advance(
540 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); 541 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs));
541 time_base_ms += kTimeBetweenEventsMs; 542 time_base_ms += kTimeBetweenEventsMs;
542 } 543 }
543 544
544 EXPECT_EQ(static_cast<int>(packet_count), test_transport_.packet_count()); 545 EXPECT_EQ(static_cast<int>(packet_count), test_transport_.packet_count());
545 } 546 }
546 547
547 } // namespace cast 548 } // namespace cast
548 } // namespace media 549 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/rtcp/rtcp_sender.cc ('k') | media/cast/rtcp/rtcp_utility.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698