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