| 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 |