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 "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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |