| 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 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 248 cast_message.ack_frame_id_ = kAckFrameId; | 248 cast_message.ack_frame_id_ = kAckFrameId; |
| 249 PacketIdSet missing_packets; | 249 PacketIdSet missing_packets; |
| 250 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; | 250 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; |
| 251 | 251 |
| 252 missing_packets.insert(kLostPacketId1); | 252 missing_packets.insert(kLostPacketId1); |
| 253 missing_packets.insert(kLostPacketId2); | 253 missing_packets.insert(kLostPacketId2); |
| 254 missing_packets.insert(kLostPacketId3); | 254 missing_packets.insert(kLostPacketId3); |
| 255 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = | 255 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = |
| 256 missing_packets; | 256 missing_packets; |
| 257 | 257 |
| 258 ReceiverRtcpEventSubscriber event_subscriber( | 258 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
| 259 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber); | |
| 260 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 259 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
| 261 | 260 |
| 262 rtcp_sender_->SendRtcpFromRtpReceiver( | 261 rtcp_sender_->SendRtcpFromRtpReceiver( |
| 263 transport::kRtcpRr | transport::kRtcpRrtr | transport::kRtcpCast | | 262 transport::kRtcpRr | transport::kRtcpRrtr | transport::kRtcpCast | |
| 264 transport::kRtcpReceiverLog, | 263 transport::kRtcpReceiverLog, |
| 265 &report_block, | 264 &report_block, |
| 266 &rrtr, | 265 &rrtr, |
| 267 &cast_message, | 266 &cast_message, |
| 268 &rtcp_events, | 267 &rtcp_events, |
| 269 kDefaultDelay); | 268 kDefaultDelay); |
| 270 | 269 |
| 271 base::SimpleTestTickClock testing_clock; | 270 base::SimpleTestTickClock testing_clock; |
| 272 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); | 271 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
| 273 | 272 |
| 274 p.AddReceiverLog(kSendingSsrc); | 273 p.AddReceiverLog(kSendingSsrc); |
| 275 p.AddReceiverFrameLog(kRtpTimestamp, 2, kTimeBaseMs); | 274 p.AddReceiverFrameLog(kRtpTimestamp, 2, kTimeBaseMs); |
| 276 p.AddReceiverEventLog(0, kVideoAckSent, 0); | 275 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); |
| 277 p.AddReceiverEventLog(kLostPacketId1, kVideoPacketReceived, kTimeDelayMs); | 276 p.AddReceiverEventLog(kLostPacketId1, PACKET_RECEIVED, kTimeDelayMs); |
| 278 | 277 |
| 279 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 278 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
| 280 | 279 |
| 281 FrameEvent frame_event; | 280 FrameEvent frame_event; |
| 282 frame_event.rtp_timestamp = kRtpTimestamp; | 281 frame_event.rtp_timestamp = kRtpTimestamp; |
| 283 frame_event.type = kVideoAckSent; | 282 frame_event.type = FRAME_ACK_SENT; |
| 283 frame_event.media_type = VIDEO_EVENT; |
| 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 |
| 288 PacketEvent packet_event; | 288 PacketEvent packet_event; |
| 289 packet_event.rtp_timestamp = kRtpTimestamp; | 289 packet_event.rtp_timestamp = kRtpTimestamp; |
| 290 packet_event.type = kVideoPacketReceived; | 290 packet_event.type = PACKET_RECEIVED; |
| 291 packet_event.media_type = VIDEO_EVENT; |
| 291 packet_event.timestamp = testing_clock.NowTicks(); | 292 packet_event.timestamp = testing_clock.NowTicks(); |
| 292 packet_event.packet_id = kLostPacketId1; | 293 packet_event.packet_id = kLostPacketId1; |
| 293 event_subscriber.OnReceivePacketEvent(packet_event); | 294 event_subscriber.OnReceivePacketEvent(packet_event); |
| 294 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 295 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
| 295 EXPECT_EQ(2u, rtcp_events.size()); | 296 EXPECT_EQ(2u, rtcp_events.size()); |
| 296 | 297 |
| 297 rtcp_sender_->SendRtcpFromRtpReceiver( | 298 rtcp_sender_->SendRtcpFromRtpReceiver( |
| 298 transport::kRtcpRr | transport::kRtcpRrtr | transport::kRtcpCast | | 299 transport::kRtcpRr | transport::kRtcpRrtr | transport::kRtcpCast | |
| 299 transport::kRtcpReceiverLog, | 300 transport::kRtcpReceiverLog, |
| 300 &report_block, | 301 &report_block, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 328 remaining_bytes -= kRtcpReceiverFrameLogSize; | 329 remaining_bytes -= kRtcpReceiverFrameLogSize; |
| 329 int num_events = remaining_bytes / kRtcpReceiverEventLogSize; | 330 int num_events = remaining_bytes / kRtcpReceiverEventLogSize; |
| 330 EXPECT_LE(num_events, static_cast<int>(kRtcpMaxReceiverLogMessages)); | 331 EXPECT_LE(num_events, static_cast<int>(kRtcpMaxReceiverLogMessages)); |
| 331 // Only the last |num_events| events are sent due to receiver log size cap. | 332 // Only the last |num_events| events are sent due to receiver log size cap. |
| 332 p.AddReceiverFrameLog( | 333 p.AddReceiverFrameLog( |
| 333 kRtpTimestamp + 2345, | 334 kRtpTimestamp + 2345, |
| 334 num_events, | 335 num_events, |
| 335 kTimeBaseMs + (kRtcpMaxReceiverLogMessages - num_events) * kTimeDelayMs); | 336 kTimeBaseMs + (kRtcpMaxReceiverLogMessages - num_events) * kTimeDelayMs); |
| 336 for (int i = 0; i < num_events; i++) { | 337 for (int i = 0; i < num_events; i++) { |
| 337 p.AddReceiverEventLog( | 338 p.AddReceiverEventLog( |
| 338 kLostPacketId1, kVideoPacketReceived, | 339 kLostPacketId1, PACKET_RECEIVED, |
| 339 static_cast<uint16>(kTimeDelayMs * i)); | 340 static_cast<uint16>(kTimeDelayMs * i)); |
| 340 } | 341 } |
| 341 | 342 |
| 342 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 343 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
| 343 | 344 |
| 344 ReceiverRtcpEventSubscriber event_subscriber( | 345 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
| 345 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber); | |
| 346 FrameEvent frame_event; | 346 FrameEvent frame_event; |
| 347 frame_event.rtp_timestamp = kRtpTimestamp; | 347 frame_event.rtp_timestamp = kRtpTimestamp; |
| 348 frame_event.type = media::cast::kVideoAckSent; | 348 frame_event.type = FRAME_ACK_SENT; |
| 349 frame_event.media_type = VIDEO_EVENT; |
| 349 frame_event.timestamp = testing_clock.NowTicks(); | 350 frame_event.timestamp = testing_clock.NowTicks(); |
| 350 event_subscriber.OnReceiveFrameEvent(frame_event); | 351 event_subscriber.OnReceiveFrameEvent(frame_event); |
| 351 | 352 |
| 352 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { | 353 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { |
| 353 PacketEvent packet_event; | 354 PacketEvent packet_event; |
| 354 packet_event.rtp_timestamp = kRtpTimestamp + 2345; | 355 packet_event.rtp_timestamp = kRtpTimestamp + 2345; |
| 355 packet_event.type = kVideoPacketReceived; | 356 packet_event.type = PACKET_RECEIVED; |
| 357 packet_event.media_type = VIDEO_EVENT; |
| 356 packet_event.timestamp = testing_clock.NowTicks(); | 358 packet_event.timestamp = testing_clock.NowTicks(); |
| 357 packet_event.packet_id = kLostPacketId1; | 359 packet_event.packet_id = kLostPacketId1; |
| 358 event_subscriber.OnReceivePacketEvent(packet_event); | 360 event_subscriber.OnReceivePacketEvent(packet_event); |
| 359 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 361 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
| 360 } | 362 } |
| 361 | 363 |
| 362 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 364 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
| 363 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 365 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
| 364 | 366 |
| 365 rtcp_sender_->SendRtcpFromRtpReceiver( | 367 rtcp_sender_->SendRtcpFromRtpReceiver( |
| (...skipping 27 matching lines...) Expand all Loading... |
| 393 remaining_bytes -= kRtcpCastLogHeaderSize; | 395 remaining_bytes -= kRtcpCastLogHeaderSize; |
| 394 | 396 |
| 395 int num_events = | 397 int num_events = |
| 396 remaining_bytes / (kRtcpReceiverFrameLogSize + kRtcpReceiverEventLogSize); | 398 remaining_bytes / (kRtcpReceiverFrameLogSize + kRtcpReceiverEventLogSize); |
| 397 | 399 |
| 398 // The last |num_events| events are sent due to receiver log size cap. | 400 // The last |num_events| events are sent due to receiver log size cap. |
| 399 for (size_t i = kRtcpMaxReceiverLogMessages - num_events; | 401 for (size_t i = kRtcpMaxReceiverLogMessages - num_events; |
| 400 i < kRtcpMaxReceiverLogMessages; | 402 i < kRtcpMaxReceiverLogMessages; |
| 401 ++i) { | 403 ++i) { |
| 402 p.AddReceiverFrameLog(kRtpTimestamp + i, 1, kTimeBaseMs + i * kTimeDelayMs); | 404 p.AddReceiverFrameLog(kRtpTimestamp + i, 1, kTimeBaseMs + i * kTimeDelayMs); |
| 403 p.AddReceiverEventLog(0, kVideoAckSent, 0); | 405 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); |
| 404 } | 406 } |
| 405 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 407 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
| 406 | 408 |
| 407 ReceiverRtcpEventSubscriber event_subscriber( | 409 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
| 408 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber); | |
| 409 | 410 |
| 410 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { | 411 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { |
| 411 FrameEvent frame_event; | 412 FrameEvent frame_event; |
| 412 frame_event.rtp_timestamp = kRtpTimestamp + static_cast<int>(i); | 413 frame_event.rtp_timestamp = kRtpTimestamp + static_cast<int>(i); |
| 413 frame_event.type = media::cast::kVideoAckSent; | 414 frame_event.type = FRAME_ACK_SENT; |
| 415 frame_event.media_type = VIDEO_EVENT; |
| 414 frame_event.timestamp = testing_clock.NowTicks(); | 416 frame_event.timestamp = testing_clock.NowTicks(); |
| 415 event_subscriber.OnReceiveFrameEvent(frame_event); | 417 event_subscriber.OnReceiveFrameEvent(frame_event); |
| 416 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 418 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
| 417 } | 419 } |
| 418 | 420 |
| 419 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 421 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
| 420 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 422 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
| 421 | 423 |
| 422 rtcp_sender_->SendRtcpFromRtpReceiver( | 424 rtcp_sender_->SendRtcpFromRtpReceiver( |
| 423 transport::kRtcpRr | transport::kRtcpReceiverLog, | 425 transport::kRtcpRr | transport::kRtcpReceiverLog, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 444 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); | 446 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
| 445 | 447 |
| 446 p.AddReceiverLog(kSendingSsrc); | 448 p.AddReceiverLog(kSendingSsrc); |
| 447 | 449 |
| 448 // Log 11 events for a single frame, each |kTimeBetweenEventsMs| apart. | 450 // Log 11 events for a single frame, each |kTimeBetweenEventsMs| apart. |
| 449 // Only last 10 events will be sent because the first event is more than | 451 // Only last 10 events will be sent because the first event is more than |
| 450 // 4095 milliseconds away from latest event. | 452 // 4095 milliseconds away from latest event. |
| 451 const int kTimeBetweenEventsMs = 410; | 453 const int kTimeBetweenEventsMs = 410; |
| 452 p.AddReceiverFrameLog(kRtpTimestamp, 10, kTimeBaseMs + kTimeBetweenEventsMs); | 454 p.AddReceiverFrameLog(kRtpTimestamp, 10, kTimeBaseMs + kTimeBetweenEventsMs); |
| 453 for (int i = 0; i < 10; ++i) { | 455 for (int i = 0; i < 10; ++i) { |
| 454 p.AddReceiverEventLog(0, kVideoAckSent, i * kTimeBetweenEventsMs); | 456 p.AddReceiverEventLog(0, FRAME_ACK_SENT, i * kTimeBetweenEventsMs); |
| 455 } | 457 } |
| 456 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 458 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
| 457 | 459 |
| 458 ReceiverRtcpEventSubscriber event_subscriber( | 460 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
| 459 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber); | |
| 460 for (int i = 0; i < 11; ++i) { | 461 for (int i = 0; i < 11; ++i) { |
| 461 FrameEvent frame_event; | 462 FrameEvent frame_event; |
| 462 frame_event.rtp_timestamp = kRtpTimestamp; | 463 frame_event.rtp_timestamp = kRtpTimestamp; |
| 463 frame_event.type = media::cast::kVideoAckSent; | 464 frame_event.type = FRAME_ACK_SENT; |
| 465 frame_event.media_type = VIDEO_EVENT; |
| 464 frame_event.timestamp = testing_clock.NowTicks(); | 466 frame_event.timestamp = testing_clock.NowTicks(); |
| 465 event_subscriber.OnReceiveFrameEvent(frame_event); | 467 event_subscriber.OnReceiveFrameEvent(frame_event); |
| 466 testing_clock.Advance( | 468 testing_clock.Advance( |
| 467 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); | 469 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); |
| 468 } | 470 } |
| 469 | 471 |
| 470 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 472 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
| 471 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 473 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
| 472 | 474 |
| 473 rtcp_sender_->SendRtcpFromRtpReceiver( | 475 rtcp_sender_->SendRtcpFromRtpReceiver( |
| 474 transport::kRtcpRr | transport::kRtcpReceiverLog, | 476 transport::kRtcpRr | transport::kRtcpReceiverLog, |
| 475 &report_block, | 477 &report_block, |
| 476 NULL, | 478 NULL, |
| 477 NULL, | 479 NULL, |
| 478 &rtcp_events, | 480 &rtcp_events, |
| 479 kDefaultDelay); | 481 kDefaultDelay); |
| 480 | 482 |
| 481 EXPECT_EQ(1, test_transport_.packet_count()); | 483 EXPECT_EQ(1, test_transport_.packet_count()); |
| 482 } | 484 } |
| 483 | 485 |
| 484 TEST_F(RtcpSenderTest, RtcpReceiverReportRedundancy) { | 486 TEST_F(RtcpSenderTest, RtcpReceiverReportRedundancy) { |
| 485 uint32 time_base_ms = 12345678; | 487 uint32 time_base_ms = 12345678; |
| 486 int kTimeBetweenEventsMs = 10; | 488 int kTimeBetweenEventsMs = 10; |
| 487 | 489 |
| 488 transport::RtcpReportBlock report_block = GetReportBlock(); | 490 transport::RtcpReportBlock report_block = GetReportBlock(); |
| 489 | 491 |
| 490 base::SimpleTestTickClock testing_clock; | 492 base::SimpleTestTickClock testing_clock; |
| 491 testing_clock.Advance(base::TimeDelta::FromMilliseconds(time_base_ms)); | 493 testing_clock.Advance(base::TimeDelta::FromMilliseconds(time_base_ms)); |
| 492 | 494 |
| 493 ReceiverRtcpEventSubscriber event_subscriber( | 495 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
| 494 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber); | |
| 495 size_t packet_count = kReceiveLogMessageHistorySize + 10; | 496 size_t packet_count = kReceiveLogMessageHistorySize + 10; |
| 496 for (size_t i = 0; i < packet_count; i++) { | 497 for (size_t i = 0; i < packet_count; i++) { |
| 497 TestRtcpPacketBuilder p; | 498 TestRtcpPacketBuilder p; |
| 498 p.AddRr(kSendingSsrc, 1); | 499 p.AddRr(kSendingSsrc, 1); |
| 499 p.AddRb(kMediaSsrc); | 500 p.AddRb(kMediaSsrc); |
| 500 p.AddSdesCname(kSendingSsrc, kCName); | 501 p.AddSdesCname(kSendingSsrc, kCName); |
| 501 | 502 |
| 502 p.AddReceiverLog(kSendingSsrc); | 503 p.AddReceiverLog(kSendingSsrc); |
| 503 | 504 |
| 504 if (i >= kSecondRedundancyOffset) { | 505 if (i >= kSecondRedundancyOffset) { |
| 505 p.AddReceiverFrameLog( | 506 p.AddReceiverFrameLog( |
| 506 kRtpTimestamp, | 507 kRtpTimestamp, |
| 507 1, | 508 1, |
| 508 time_base_ms - kSecondRedundancyOffset * kTimeBetweenEventsMs); | 509 time_base_ms - kSecondRedundancyOffset * kTimeBetweenEventsMs); |
| 509 p.AddReceiverEventLog(0, kVideoAckSent, 0); | 510 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); |
| 510 } | 511 } |
| 511 if (i >= kFirstRedundancyOffset) { | 512 if (i >= kFirstRedundancyOffset) { |
| 512 p.AddReceiverFrameLog( | 513 p.AddReceiverFrameLog( |
| 513 kRtpTimestamp, | 514 kRtpTimestamp, |
| 514 1, | 515 1, |
| 515 time_base_ms - kFirstRedundancyOffset * kTimeBetweenEventsMs); | 516 time_base_ms - kFirstRedundancyOffset * kTimeBetweenEventsMs); |
| 516 p.AddReceiverEventLog(0, kVideoAckSent, 0); | 517 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); |
| 517 } | 518 } |
| 518 p.AddReceiverFrameLog(kRtpTimestamp, 1, time_base_ms); | 519 p.AddReceiverFrameLog(kRtpTimestamp, 1, time_base_ms); |
| 519 p.AddReceiverEventLog(0, kVideoAckSent, 0); | 520 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); |
| 520 | 521 |
| 521 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 522 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
| 522 | 523 |
| 523 FrameEvent frame_event; | 524 FrameEvent frame_event; |
| 524 frame_event.rtp_timestamp = kRtpTimestamp; | 525 frame_event.rtp_timestamp = kRtpTimestamp; |
| 525 frame_event.type = media::cast::kVideoAckSent; | 526 frame_event.type = FRAME_ACK_SENT; |
| 527 frame_event.media_type = VIDEO_EVENT; |
| 526 frame_event.timestamp = testing_clock.NowTicks(); | 528 frame_event.timestamp = testing_clock.NowTicks(); |
| 527 event_subscriber.OnReceiveFrameEvent(frame_event); | 529 event_subscriber.OnReceiveFrameEvent(frame_event); |
| 528 | 530 |
| 529 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 531 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
| 530 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 532 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
| 531 | 533 |
| 532 rtcp_sender_->SendRtcpFromRtpReceiver( | 534 rtcp_sender_->SendRtcpFromRtpReceiver( |
| 533 transport::kRtcpRr | transport::kRtcpReceiverLog, | 535 transport::kRtcpRr | transport::kRtcpReceiverLog, |
| 534 &report_block, | 536 &report_block, |
| 535 NULL, | 537 NULL, |
| 536 NULL, | 538 NULL, |
| 537 &rtcp_events, | 539 &rtcp_events, |
| 538 kDefaultDelay); | 540 kDefaultDelay); |
| 539 | 541 |
| 540 testing_clock.Advance( | 542 testing_clock.Advance( |
| 541 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); | 543 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); |
| 542 time_base_ms += kTimeBetweenEventsMs; | 544 time_base_ms += kTimeBetweenEventsMs; |
| 543 } | 545 } |
| 544 | 546 |
| 545 EXPECT_EQ(static_cast<int>(packet_count), test_transport_.packet_count()); | 547 EXPECT_EQ(static_cast<int>(packet_count), test_transport_.packet_count()); |
| 546 } | 548 } |
| 547 | 549 |
| 548 } // namespace cast | 550 } // namespace cast |
| 549 } // namespace media | 551 } // namespace media |
| OLD | NEW |