Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/net/cast_transport_defines.h" | 9 #include "media/cast/net/cast_transport_defines.h" |
| 10 #include "media/cast/net/pacing/paced_sender.h" | 10 #include "media/cast/net/pacing/paced_sender.h" |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 40 } // namespace | 40 } // namespace |
| 41 | 41 |
| 42 | 42 |
| 43 class RtcpBuilderTest : public ::testing::Test { | 43 class RtcpBuilderTest : public ::testing::Test { |
| 44 protected: | 44 protected: |
| 45 RtcpBuilderTest() | 45 RtcpBuilderTest() |
| 46 : rtcp_builder_(new RtcpBuilder(kSendingSsrc)) {} | 46 : rtcp_builder_(new RtcpBuilder(kSendingSsrc)) {} |
| 47 | 47 |
| 48 void ExpectPacketEQ(scoped_ptr<Packet> golden_packet, | 48 void ExpectPacketEQ(scoped_ptr<Packet> golden_packet, |
| 49 PacketRef packet) { | 49 PacketRef packet) { |
| 50 int diffs = 0; | |
| 50 EXPECT_EQ(golden_packet->size(), packet->data.size()); | 51 EXPECT_EQ(golden_packet->size(), packet->data.size()); |
| 51 if (golden_packet->size() == packet->data.size()) { | 52 if (golden_packet->size() == packet->data.size()) { |
| 52 for (size_t x = 0; x < golden_packet->size(); x++) { | 53 for (size_t x = 0; x < golden_packet->size(); x++) { |
| 53 EXPECT_EQ((*golden_packet)[x], packet->data[x]); | 54 EXPECT_EQ((*golden_packet)[x], packet->data[x]) << |
| 55 "x = " << x << " / " << golden_packet->size(); | |
| 54 if ((*golden_packet)[x] != packet->data[x]) | 56 if ((*golden_packet)[x] != packet->data[x]) |
|
miu
2014/12/04 04:18:54
nit: braces around then-clause
hubbe
2014/12/05 23:57:20
Done.
| |
| 55 break; | 57 if (++diffs > 5) |
| 58 break; | |
| 56 } | 59 } |
| 57 } | 60 } |
| 58 } | 61 } |
| 59 | 62 |
| 60 scoped_ptr<RtcpBuilder> rtcp_builder_; | 63 scoped_ptr<RtcpBuilder> rtcp_builder_; |
| 61 | 64 |
| 62 DISALLOW_COPY_AND_ASSIGN(RtcpBuilderTest); | 65 DISALLOW_COPY_AND_ASSIGN(RtcpBuilderTest); |
| 63 }; | 66 }; |
| 64 | 67 |
| 65 TEST_F(RtcpBuilderTest, RtcpReceiverReport) { | 68 TEST_F(RtcpBuilderTest, RtcpReceiverReport) { |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 184 PacketIdSet missing_packets; | 187 PacketIdSet missing_packets; |
| 185 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; | 188 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; |
| 186 | 189 |
| 187 missing_packets.insert(kLostPacketId1); | 190 missing_packets.insert(kLostPacketId1); |
| 188 missing_packets.insert(kLostPacketId2); | 191 missing_packets.insert(kLostPacketId2); |
| 189 missing_packets.insert(kLostPacketId3); | 192 missing_packets.insert(kLostPacketId3); |
| 190 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = | 193 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = |
| 191 missing_packets; | 194 missing_packets; |
| 192 | 195 |
| 193 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); | 196 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
| 194 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 197 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
| 195 | 198 |
| 196 ExpectPacketEQ(p.GetPacket().Pass(), | 199 ExpectPacketEQ(p.GetPacket().Pass(), |
| 197 rtcp_builder_->BuildRtcpFromReceiver( | 200 rtcp_builder_->BuildRtcpFromReceiver( |
| 198 &report_block, | 201 &report_block, |
| 199 &rrtr, | 202 &rrtr, |
| 200 &cast_message, | 203 &cast_message, |
| 201 &rtcp_events, | 204 &rtcp_events, |
| 202 kDefaultDelay)); | 205 kDefaultDelay)); |
| 203 | 206 |
| 204 base::SimpleTestTickClock testing_clock; | 207 base::SimpleTestTickClock testing_clock; |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 217 event_subscriber.OnReceiveFrameEvent(frame_event); | 220 event_subscriber.OnReceiveFrameEvent(frame_event); |
| 218 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 221 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
| 219 | 222 |
| 220 PacketEvent packet_event; | 223 PacketEvent packet_event; |
| 221 packet_event.rtp_timestamp = kRtpTimestamp; | 224 packet_event.rtp_timestamp = kRtpTimestamp; |
| 222 packet_event.type = PACKET_RECEIVED; | 225 packet_event.type = PACKET_RECEIVED; |
| 223 packet_event.media_type = VIDEO_EVENT; | 226 packet_event.media_type = VIDEO_EVENT; |
| 224 packet_event.timestamp = testing_clock.NowTicks(); | 227 packet_event.timestamp = testing_clock.NowTicks(); |
| 225 packet_event.packet_id = kLostPacketId1; | 228 packet_event.packet_id = kLostPacketId1; |
| 226 event_subscriber.OnReceivePacketEvent(packet_event); | 229 event_subscriber.OnReceivePacketEvent(packet_event); |
| 227 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 230 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
| 228 EXPECT_EQ(2u, rtcp_events.size()); | 231 EXPECT_EQ(2u, rtcp_events.size()); |
| 229 | 232 |
| 230 ExpectPacketEQ( | 233 ExpectPacketEQ( |
| 231 p.GetPacket().Pass(), | 234 p.GetPacket().Pass(), |
| 232 rtcp_builder_->BuildRtcpFromReceiver( | 235 rtcp_builder_->BuildRtcpFromReceiver( |
| 233 &report_block, | 236 &report_block, |
| 234 &rrtr, | 237 &rrtr, |
| 235 &cast_message, | 238 &cast_message, |
| 236 &rtcp_events, | 239 &rtcp_events, |
| 237 kDefaultDelay)); | 240 kDefaultDelay)); |
| 238 } | 241 } |
| 239 | 242 |
| 240 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithOversizedFrameLog) { | 243 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithOversizedFrameLog) { |
| 241 static const uint32 kTimeBaseMs = 12345678; | 244 static const uint32 kTimeBaseMs = 12345678; |
| 242 static const uint32 kTimeDelayMs = 10; | 245 static const uint32 kTimeDelayMs = 10; |
| 243 | 246 |
| 244 TestRtcpPacketBuilder p; | 247 TestRtcpPacketBuilder p; |
| 245 p.AddRr(kSendingSsrc, 1); | 248 p.AddRr(kSendingSsrc, 1); |
| 246 p.AddRb(kMediaSsrc); | 249 p.AddRb(kMediaSsrc); |
| 247 | 250 |
| 248 RtcpReportBlock report_block = GetReportBlock(); | 251 RtcpReportBlock report_block = GetReportBlock(); |
| 249 | 252 |
| 250 base::SimpleTestTickClock testing_clock; | 253 base::SimpleTestTickClock testing_clock; |
| 251 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); | 254 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
| 252 | 255 |
| 253 p.AddReceiverLog(kSendingSsrc); | 256 p.AddReceiverLog(kSendingSsrc); |
| 254 | 257 |
| 255 int remaining_bytes = kMaxReceiverLogBytes; | 258 int num_events = kMaxEventsPerRTCP; |
| 256 remaining_bytes -= kRtcpCastLogHeaderSize; | |
| 257 | 259 |
| 258 remaining_bytes -= kRtcpReceiverFrameLogSize; | |
| 259 int num_events = remaining_bytes / kRtcpReceiverEventLogSize; | |
| 260 EXPECT_LE(num_events, static_cast<int>(kRtcpMaxReceiverLogMessages)); | 260 EXPECT_LE(num_events, static_cast<int>(kRtcpMaxReceiverLogMessages)); |
| 261 // Only the last |num_events| events are sent due to receiver log size cap. | |
| 262 p.AddReceiverFrameLog( | 261 p.AddReceiverFrameLog( |
| 263 kRtpTimestamp + 2345, | 262 kRtpTimestamp + 2345, |
| 264 num_events, | 263 num_events, |
| 265 kTimeBaseMs + (kRtcpMaxReceiverLogMessages - num_events) * kTimeDelayMs); | 264 kTimeBaseMs); |
| 266 for (int i = 0; i < num_events; i++) { | 265 for (int i = 0; i < num_events; i++) { |
| 267 p.AddReceiverEventLog( | 266 p.AddReceiverEventLog( |
| 268 kLostPacketId1, PACKET_RECEIVED, | 267 kLostPacketId1, |
| 268 PACKET_RECEIVED, | |
| 269 static_cast<uint16>(kTimeDelayMs * i)); | 269 static_cast<uint16>(kTimeDelayMs * i)); |
| 270 } | 270 } |
| 271 | 271 |
| 272 | 272 |
| 273 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); | 273 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
| 274 FrameEvent frame_event; | |
| 275 frame_event.rtp_timestamp = kRtpTimestamp; | |
| 276 frame_event.type = FRAME_ACK_SENT; | |
| 277 frame_event.media_type = VIDEO_EVENT; | |
| 278 frame_event.timestamp = testing_clock.NowTicks(); | |
| 279 event_subscriber.OnReceiveFrameEvent(frame_event); | |
| 280 | 274 |
| 281 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { | 275 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { |
| 282 PacketEvent packet_event; | 276 PacketEvent packet_event; |
| 283 packet_event.rtp_timestamp = kRtpTimestamp + 2345; | 277 packet_event.rtp_timestamp = kRtpTimestamp + 2345; |
| 284 packet_event.type = PACKET_RECEIVED; | 278 packet_event.type = PACKET_RECEIVED; |
| 285 packet_event.media_type = VIDEO_EVENT; | 279 packet_event.media_type = VIDEO_EVENT; |
| 286 packet_event.timestamp = testing_clock.NowTicks(); | 280 packet_event.timestamp = testing_clock.NowTicks(); |
| 287 packet_event.packet_id = kLostPacketId1; | 281 packet_event.packet_id = kLostPacketId1; |
| 288 event_subscriber.OnReceivePacketEvent(packet_event); | 282 event_subscriber.OnReceivePacketEvent(packet_event); |
| 289 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 283 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
| 290 } | 284 } |
| 291 | 285 |
| 292 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 286 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
| 293 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 287 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
| 294 | 288 |
| 295 ExpectPacketEQ(p.GetPacket().Pass(), | 289 ExpectPacketEQ(p.GetPacket().Pass(), |
| 296 rtcp_builder_->BuildRtcpFromReceiver( | 290 rtcp_builder_->BuildRtcpFromReceiver( |
| 297 &report_block, | 291 &report_block, |
| 298 NULL, | 292 NULL, |
| 299 NULL, | 293 NULL, |
| 300 &rtcp_events, | 294 &rtcp_events, |
| 301 kDefaultDelay)); | 295 kDefaultDelay)); |
| 302 } | 296 } |
| 303 | 297 |
| 304 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithTooManyLogFrames) { | 298 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithTooManyLogFrames) { |
| 305 static const uint32 kTimeBaseMs = 12345678; | 299 static const uint32 kTimeBaseMs = 12345678; |
| 306 static const uint32 kTimeDelayMs = 10; | 300 static const uint32 kTimeDelayMs = 10; |
| 307 | 301 |
| 308 TestRtcpPacketBuilder p; | 302 TestRtcpPacketBuilder p; |
| 309 p.AddRr(kSendingSsrc, 1); | 303 p.AddRr(kSendingSsrc, 1); |
| 310 p.AddRb(kMediaSsrc); | 304 p.AddRb(kMediaSsrc); |
| 311 | 305 |
| 312 RtcpReportBlock report_block = GetReportBlock(); | 306 RtcpReportBlock report_block = GetReportBlock(); |
| 313 | 307 |
| 314 base::SimpleTestTickClock testing_clock; | 308 base::SimpleTestTickClock testing_clock; |
| 315 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); | 309 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
| 316 | 310 |
| 317 p.AddReceiverLog(kSendingSsrc); | 311 p.AddReceiverLog(kSendingSsrc); |
| 318 | 312 |
| 319 int remaining_bytes = kMaxReceiverLogBytes; | 313 int num_events = kMaxEventsPerRTCP; |
| 320 remaining_bytes -= kRtcpCastLogHeaderSize; | |
| 321 | 314 |
| 322 int num_events = | 315 for (int i = 0; i < num_events; i++) { |
| 323 remaining_bytes / (kRtcpReceiverFrameLogSize + kRtcpReceiverEventLogSize); | |
| 324 | |
| 325 // The last |num_events| events are sent due to receiver log size cap. | |
| 326 for (size_t i = kRtcpMaxReceiverLogMessages - num_events; | |
| 327 i < kRtcpMaxReceiverLogMessages; | |
| 328 ++i) { | |
| 329 p.AddReceiverFrameLog(kRtpTimestamp + i, 1, kTimeBaseMs + i * kTimeDelayMs); | 316 p.AddReceiverFrameLog(kRtpTimestamp + i, 1, kTimeBaseMs + i * kTimeDelayMs); |
| 330 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); | 317 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); |
| 331 } | 318 } |
| 332 | 319 |
| 333 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); | 320 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
| 334 | 321 |
| 335 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { | 322 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { |
| 336 FrameEvent frame_event; | 323 FrameEvent frame_event; |
| 337 frame_event.rtp_timestamp = kRtpTimestamp + static_cast<int>(i); | 324 frame_event.rtp_timestamp = kRtpTimestamp + static_cast<int>(i); |
| 338 frame_event.type = FRAME_ACK_SENT; | 325 frame_event.type = FRAME_ACK_SENT; |
| 339 frame_event.media_type = VIDEO_EVENT; | 326 frame_event.media_type = VIDEO_EVENT; |
| 340 frame_event.timestamp = testing_clock.NowTicks(); | 327 frame_event.timestamp = testing_clock.NowTicks(); |
| 341 event_subscriber.OnReceiveFrameEvent(frame_event); | 328 event_subscriber.OnReceiveFrameEvent(frame_event); |
| 342 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 329 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
| 343 } | 330 } |
| 344 | 331 |
| 345 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 332 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
| 346 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 333 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
| 347 | 334 |
| 348 ExpectPacketEQ(p.GetPacket().Pass(), | 335 ExpectPacketEQ(p.GetPacket().Pass(), |
| 349 rtcp_builder_->BuildRtcpFromReceiver( | 336 rtcp_builder_->BuildRtcpFromReceiver( |
| 350 &report_block, | 337 &report_block, |
| 351 NULL, | 338 NULL, |
| 352 NULL, | 339 NULL, |
| 353 &rtcp_events, | 340 &rtcp_events, |
| 354 kDefaultDelay)); | 341 kDefaultDelay)); |
| 355 } | 342 } |
| 356 | 343 |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 382 FrameEvent frame_event; | 369 FrameEvent frame_event; |
| 383 frame_event.rtp_timestamp = kRtpTimestamp; | 370 frame_event.rtp_timestamp = kRtpTimestamp; |
| 384 frame_event.type = FRAME_ACK_SENT; | 371 frame_event.type = FRAME_ACK_SENT; |
| 385 frame_event.media_type = VIDEO_EVENT; | 372 frame_event.media_type = VIDEO_EVENT; |
| 386 frame_event.timestamp = testing_clock.NowTicks(); | 373 frame_event.timestamp = testing_clock.NowTicks(); |
| 387 event_subscriber.OnReceiveFrameEvent(frame_event); | 374 event_subscriber.OnReceiveFrameEvent(frame_event); |
| 388 testing_clock.Advance( | 375 testing_clock.Advance( |
| 389 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); | 376 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); |
| 390 } | 377 } |
| 391 | 378 |
| 392 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 379 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
| 393 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 380 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
| 394 | 381 |
| 395 ExpectPacketEQ(p.GetPacket().Pass(), | 382 ExpectPacketEQ(p.GetPacket().Pass(), |
| 396 rtcp_builder_->BuildRtcpFromReceiver( | 383 rtcp_builder_->BuildRtcpFromReceiver( |
| 397 &report_block, | 384 &report_block, |
| 398 NULL, | 385 NULL, |
| 399 NULL, | 386 NULL, |
| 400 &rtcp_events, | 387 &rtcp_events, |
| 401 kDefaultDelay)); | 388 kDefaultDelay)); |
| 402 } | 389 } |
| 403 | 390 |
| 404 TEST_F(RtcpBuilderTest, RtcpReceiverReportRedundancy) { | 391 TEST_F(RtcpBuilderTest, RtcpReceiverReportRedundancy) { |
| 405 uint32 time_base_ms = 12345678; | 392 uint32 time_base_ms = 12345678; |
| 406 int kTimeBetweenEventsMs = 10; | 393 int kTimeBetweenEventsMs = 10; |
| 407 | 394 |
| 408 RtcpReportBlock report_block = GetReportBlock(); | 395 RtcpReportBlock report_block = GetReportBlock(); |
| 409 | 396 |
| 410 base::SimpleTestTickClock testing_clock; | 397 base::SimpleTestTickClock testing_clock; |
| 411 testing_clock.Advance(base::TimeDelta::FromMilliseconds(time_base_ms)); | 398 testing_clock.Advance(base::TimeDelta::FromMilliseconds(time_base_ms)); |
| 412 | 399 |
| 413 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); | 400 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
| 414 size_t packet_count = kReceiveLogMessageHistorySize + 10; | 401 size_t packet_count = kNumResends * kResendDelay + 10; |
| 415 for (size_t i = 0; i < packet_count; i++) { | 402 for (size_t i = 0; i < packet_count; i++) { |
| 416 TestRtcpPacketBuilder p; | 403 TestRtcpPacketBuilder p; |
| 417 p.AddRr(kSendingSsrc, 1); | 404 p.AddRr(kSendingSsrc, 1); |
| 418 p.AddRb(kMediaSsrc); | 405 p.AddRb(kMediaSsrc); |
| 419 | 406 |
| 420 p.AddReceiverLog(kSendingSsrc); | 407 p.AddReceiverLog(kSendingSsrc); |
| 421 | 408 |
| 422 if (i >= kSecondRedundancyOffset) { | 409 int num_events = (i + kResendDelay) / kResendDelay; |
| 423 p.AddReceiverFrameLog( | 410 num_events = std::min<int>(num_events, kNumResends); |
| 424 kRtpTimestamp, | 411 p.AddReceiverFrameLog(kRtpTimestamp, num_events, |
| 425 1, | 412 time_base_ms - (num_events - 1) * kResendDelay * |
| 426 time_base_ms - kSecondRedundancyOffset * kTimeBetweenEventsMs); | 413 kTimeBetweenEventsMs); |
| 427 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); | 414 for (int i = 0; i < num_events; i++) { |
| 415 p.AddReceiverEventLog(0, FRAME_ACK_SENT, | |
| 416 i * kResendDelay * kTimeBetweenEventsMs); | |
| 428 } | 417 } |
| 429 if (i >= kFirstRedundancyOffset) { | |
| 430 p.AddReceiverFrameLog( | |
| 431 kRtpTimestamp, | |
| 432 1, | |
| 433 time_base_ms - kFirstRedundancyOffset * kTimeBetweenEventsMs); | |
| 434 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); | |
| 435 } | |
| 436 p.AddReceiverFrameLog(kRtpTimestamp, 1, time_base_ms); | |
| 437 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); | |
| 438 | 418 |
| 439 FrameEvent frame_event; | 419 FrameEvent frame_event; |
| 440 frame_event.rtp_timestamp = kRtpTimestamp; | 420 frame_event.rtp_timestamp = kRtpTimestamp; |
| 441 frame_event.type = FRAME_ACK_SENT; | 421 frame_event.type = FRAME_ACK_SENT; |
| 442 frame_event.media_type = VIDEO_EVENT; | 422 frame_event.media_type = VIDEO_EVENT; |
| 443 frame_event.timestamp = testing_clock.NowTicks(); | 423 frame_event.timestamp = testing_clock.NowTicks(); |
| 444 event_subscriber.OnReceiveFrameEvent(frame_event); | 424 event_subscriber.OnReceiveFrameEvent(frame_event); |
| 445 | 425 |
| 446 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 426 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
| 447 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 427 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
| 448 | 428 |
| 449 ExpectPacketEQ(p.GetPacket().Pass(), | 429 ExpectPacketEQ(p.GetPacket().Pass(), |
| 450 rtcp_builder_->BuildRtcpFromReceiver( | 430 rtcp_builder_->BuildRtcpFromReceiver( |
| 451 &report_block, | 431 &report_block, |
| 452 NULL, | 432 NULL, |
| 453 NULL, | 433 NULL, |
| 454 &rtcp_events, | 434 &rtcp_events, |
| 455 kDefaultDelay)); | 435 kDefaultDelay)); |
| 456 | 436 |
| 457 testing_clock.Advance( | 437 testing_clock.Advance( |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 471 // Sender report. | 451 // Sender report. |
| 472 TestRtcpPacketBuilder p; | 452 TestRtcpPacketBuilder p; |
| 473 p.AddSr(kSendingSsrc, 0); | 453 p.AddSr(kSendingSsrc, 0); |
| 474 | 454 |
| 475 ExpectPacketEQ(p.GetPacket().Pass(), | 455 ExpectPacketEQ(p.GetPacket().Pass(), |
| 476 rtcp_builder_->BuildRtcpFromSender(sender_info)); | 456 rtcp_builder_->BuildRtcpFromSender(sender_info)); |
| 477 } | 457 } |
| 478 | 458 |
| 479 } // namespace cast | 459 } // namespace cast |
| 480 } // namespace media | 460 } // namespace media |
| OLD | NEW |