OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 | 342 |
343 EXPECT_CALL(rtp_rtcp_impl_, OnReceivedRtcpReportBlocks(SizeIs(2))); | 343 EXPECT_CALL(rtp_rtcp_impl_, OnReceivedRtcpReportBlocks(SizeIs(2))); |
344 EXPECT_CALL(bandwidth_observer_, | 344 EXPECT_CALL(bandwidth_observer_, |
345 OnReceivedRtcpReceiverReport(SizeIs(2), _, now)); | 345 OnReceivedRtcpReceiverReport(SizeIs(2), _, now)); |
346 InjectRtcpPacket(rr1); | 346 InjectRtcpPacket(rr1); |
347 | 347 |
348 EXPECT_EQ(now, rtcp_receiver_.LastReceivedReceiverReport()); | 348 EXPECT_EQ(now, rtcp_receiver_.LastReceivedReceiverReport()); |
349 std::vector<RTCPReportBlock> received_blocks; | 349 std::vector<RTCPReportBlock> received_blocks; |
350 rtcp_receiver_.StatisticsReceived(&received_blocks); | 350 rtcp_receiver_.StatisticsReceived(&received_blocks); |
351 EXPECT_THAT(received_blocks, | 351 EXPECT_THAT(received_blocks, |
352 UnorderedElementsAre(Field(&RTCPReportBlock::fractionLost, 0), | 352 UnorderedElementsAre(Field(&RTCPReportBlock::fraction_lost, 0), |
353 Field(&RTCPReportBlock::fractionLost, 10))); | 353 Field(&RTCPReportBlock::fraction_lost, 10))); |
354 | 354 |
355 // Insert next receiver report with same ssrc but new values. | 355 // Insert next receiver report with same ssrc but new values. |
356 rtcp::ReportBlock rb3; | 356 rtcp::ReportBlock rb3; |
357 rb3.SetMediaSsrc(kReceiverMainSsrc); | 357 rb3.SetMediaSsrc(kReceiverMainSsrc); |
358 rb3.SetExtHighestSeqNum(kSequenceNumbers[0]); | 358 rb3.SetExtHighestSeqNum(kSequenceNumbers[0]); |
359 rb3.SetFractionLost(kFracLost[0]); | 359 rb3.SetFractionLost(kFracLost[0]); |
360 rb3.SetCumulativeLost(kCumLost[0]); | 360 rb3.SetCumulativeLost(kCumLost[0]); |
361 | 361 |
362 rtcp::ReportBlock rb4; | 362 rtcp::ReportBlock rb4; |
363 rb4.SetMediaSsrc(kReceiverExtraSsrc); | 363 rb4.SetMediaSsrc(kReceiverExtraSsrc); |
(...skipping 11 matching lines...) Expand all Loading... |
375 now = system_clock_.TimeInMilliseconds(); | 375 now = system_clock_.TimeInMilliseconds(); |
376 | 376 |
377 EXPECT_CALL(rtp_rtcp_impl_, OnReceivedRtcpReportBlocks(SizeIs(2))); | 377 EXPECT_CALL(rtp_rtcp_impl_, OnReceivedRtcpReportBlocks(SizeIs(2))); |
378 EXPECT_CALL(bandwidth_observer_, | 378 EXPECT_CALL(bandwidth_observer_, |
379 OnReceivedRtcpReceiverReport(SizeIs(2), _, now)); | 379 OnReceivedRtcpReceiverReport(SizeIs(2), _, now)); |
380 InjectRtcpPacket(rr2); | 380 InjectRtcpPacket(rr2); |
381 | 381 |
382 received_blocks.clear(); | 382 received_blocks.clear(); |
383 rtcp_receiver_.StatisticsReceived(&received_blocks); | 383 rtcp_receiver_.StatisticsReceived(&received_blocks); |
384 EXPECT_EQ(2u, received_blocks.size()); | 384 EXPECT_EQ(2u, received_blocks.size()); |
385 EXPECT_THAT(received_blocks, | 385 EXPECT_THAT( |
386 UnorderedElementsAre( | 386 received_blocks, |
387 AllOf(Field(&RTCPReportBlock::sourceSSRC, kReceiverMainSsrc), | 387 UnorderedElementsAre( |
388 Field(&RTCPReportBlock::fractionLost, kFracLost[0]), | 388 AllOf(Field(&RTCPReportBlock::source_ssrc, kReceiverMainSsrc), |
389 Field(&RTCPReportBlock::cumulativeLost, kCumLost[0]), | 389 Field(&RTCPReportBlock::fraction_lost, kFracLost[0]), |
390 Field(&RTCPReportBlock::extendedHighSeqNum, | 390 Field(&RTCPReportBlock::packets_lost, kCumLost[0]), |
391 kSequenceNumbers[0])), | 391 Field(&RTCPReportBlock::extended_highest_sequence_number, |
392 AllOf(Field(&RTCPReportBlock::sourceSSRC, kReceiverExtraSsrc), | 392 kSequenceNumbers[0])), |
393 Field(&RTCPReportBlock::fractionLost, kFracLost[1]), | 393 AllOf(Field(&RTCPReportBlock::source_ssrc, kReceiverExtraSsrc), |
394 Field(&RTCPReportBlock::cumulativeLost, kCumLost[1]), | 394 Field(&RTCPReportBlock::fraction_lost, kFracLost[1]), |
395 Field(&RTCPReportBlock::extendedHighSeqNum, | 395 Field(&RTCPReportBlock::packets_lost, kCumLost[1]), |
396 kSequenceNumbers[1])))); | 396 Field(&RTCPReportBlock::extended_highest_sequence_number, |
| 397 kSequenceNumbers[1])))); |
397 } | 398 } |
398 | 399 |
399 TEST_F(RtcpReceiverTest, InjectRrPacketsFromTwoRemoteSsrcs) { | 400 TEST_F(RtcpReceiverTest, InjectRrPacketsFromTwoRemoteSsrcs) { |
400 const uint32_t kSenderSsrc2 = 0x20304; | 401 const uint32_t kSenderSsrc2 = 0x20304; |
401 const uint16_t kSequenceNumbers[] = {10, 12423}; | 402 const uint16_t kSequenceNumbers[] = {10, 12423}; |
402 const uint32_t kCumLost[] = {13, 555}; | 403 const uint32_t kCumLost[] = {13, 555}; |
403 const uint8_t kFracLost[] = {20, 11}; | 404 const uint8_t kFracLost[] = {20, 11}; |
404 | 405 |
405 rtcp::ReportBlock rb1; | 406 rtcp::ReportBlock rb1; |
406 rb1.SetMediaSsrc(kReceiverMainSsrc); | 407 rb1.SetMediaSsrc(kReceiverMainSsrc); |
407 rb1.SetExtHighestSeqNum(kSequenceNumbers[0]); | 408 rb1.SetExtHighestSeqNum(kSequenceNumbers[0]); |
408 rb1.SetFractionLost(kFracLost[0]); | 409 rb1.SetFractionLost(kFracLost[0]); |
409 rb1.SetCumulativeLost(kCumLost[0]); | 410 rb1.SetCumulativeLost(kCumLost[0]); |
410 rtcp::ReceiverReport rr1; | 411 rtcp::ReceiverReport rr1; |
411 rr1.SetSenderSsrc(kSenderSsrc); | 412 rr1.SetSenderSsrc(kSenderSsrc); |
412 rr1.AddReportBlock(rb1); | 413 rr1.AddReportBlock(rb1); |
413 | 414 |
414 int64_t now = system_clock_.TimeInMilliseconds(); | 415 int64_t now = system_clock_.TimeInMilliseconds(); |
415 | 416 |
416 EXPECT_CALL(rtp_rtcp_impl_, OnReceivedRtcpReportBlocks(SizeIs(1))); | 417 EXPECT_CALL(rtp_rtcp_impl_, OnReceivedRtcpReportBlocks(SizeIs(1))); |
417 EXPECT_CALL(bandwidth_observer_, | 418 EXPECT_CALL(bandwidth_observer_, |
418 OnReceivedRtcpReceiverReport(SizeIs(1), _, now)); | 419 OnReceivedRtcpReceiverReport(SizeIs(1), _, now)); |
419 InjectRtcpPacket(rr1); | 420 InjectRtcpPacket(rr1); |
420 | 421 |
421 EXPECT_EQ(now, rtcp_receiver_.LastReceivedReceiverReport()); | 422 EXPECT_EQ(now, rtcp_receiver_.LastReceivedReceiverReport()); |
422 | 423 |
423 std::vector<RTCPReportBlock> received_blocks; | 424 std::vector<RTCPReportBlock> received_blocks; |
424 rtcp_receiver_.StatisticsReceived(&received_blocks); | 425 rtcp_receiver_.StatisticsReceived(&received_blocks); |
425 EXPECT_EQ(1u, received_blocks.size()); | 426 EXPECT_EQ(1u, received_blocks.size()); |
426 EXPECT_EQ(kSenderSsrc, received_blocks[0].remoteSSRC); | 427 EXPECT_EQ(kSenderSsrc, received_blocks[0].sender_ssrc); |
427 EXPECT_EQ(kReceiverMainSsrc, received_blocks[0].sourceSSRC); | 428 EXPECT_EQ(kReceiverMainSsrc, received_blocks[0].source_ssrc); |
428 EXPECT_EQ(kFracLost[0], received_blocks[0].fractionLost); | 429 EXPECT_EQ(kFracLost[0], received_blocks[0].fraction_lost); |
429 EXPECT_EQ(kCumLost[0], received_blocks[0].cumulativeLost); | 430 EXPECT_EQ(kCumLost[0], received_blocks[0].packets_lost); |
430 EXPECT_EQ(kSequenceNumbers[0], received_blocks[0].extendedHighSeqNum); | 431 EXPECT_EQ(kSequenceNumbers[0], |
| 432 received_blocks[0].extended_highest_sequence_number); |
431 | 433 |
432 rtcp::ReportBlock rb2; | 434 rtcp::ReportBlock rb2; |
433 rb2.SetMediaSsrc(kReceiverMainSsrc); | 435 rb2.SetMediaSsrc(kReceiverMainSsrc); |
434 rb2.SetExtHighestSeqNum(kSequenceNumbers[1]); | 436 rb2.SetExtHighestSeqNum(kSequenceNumbers[1]); |
435 rb2.SetFractionLost(kFracLost[1]); | 437 rb2.SetFractionLost(kFracLost[1]); |
436 rb2.SetCumulativeLost(kCumLost[1]); | 438 rb2.SetCumulativeLost(kCumLost[1]); |
437 rtcp::ReceiverReport rr2; | 439 rtcp::ReceiverReport rr2; |
438 rr2.SetSenderSsrc(kSenderSsrc2); | 440 rr2.SetSenderSsrc(kSenderSsrc2); |
439 rr2.AddReportBlock(rb2); | 441 rr2.AddReportBlock(rb2); |
440 | 442 |
441 EXPECT_CALL(rtp_rtcp_impl_, OnReceivedRtcpReportBlocks(SizeIs(1))); | 443 EXPECT_CALL(rtp_rtcp_impl_, OnReceivedRtcpReportBlocks(SizeIs(1))); |
442 EXPECT_CALL(bandwidth_observer_, | 444 EXPECT_CALL(bandwidth_observer_, |
443 OnReceivedRtcpReceiverReport(SizeIs(1), _, now)); | 445 OnReceivedRtcpReceiverReport(SizeIs(1), _, now)); |
444 InjectRtcpPacket(rr2); | 446 InjectRtcpPacket(rr2); |
445 | 447 |
446 received_blocks.clear(); | 448 received_blocks.clear(); |
447 rtcp_receiver_.StatisticsReceived(&received_blocks); | 449 rtcp_receiver_.StatisticsReceived(&received_blocks); |
448 ASSERT_EQ(2u, received_blocks.size()); | 450 ASSERT_EQ(2u, received_blocks.size()); |
449 EXPECT_THAT(received_blocks, | 451 EXPECT_THAT( |
450 UnorderedElementsAre( | 452 received_blocks, |
451 AllOf(Field(&RTCPReportBlock::sourceSSRC, kReceiverMainSsrc), | 453 UnorderedElementsAre( |
452 Field(&RTCPReportBlock::remoteSSRC, kSenderSsrc), | 454 AllOf(Field(&RTCPReportBlock::source_ssrc, kReceiverMainSsrc), |
453 Field(&RTCPReportBlock::fractionLost, kFracLost[0]), | 455 Field(&RTCPReportBlock::sender_ssrc, kSenderSsrc), |
454 Field(&RTCPReportBlock::cumulativeLost, kCumLost[0]), | 456 Field(&RTCPReportBlock::fraction_lost, kFracLost[0]), |
455 Field(&RTCPReportBlock::extendedHighSeqNum, | 457 Field(&RTCPReportBlock::packets_lost, kCumLost[0]), |
456 kSequenceNumbers[0])), | 458 Field(&RTCPReportBlock::extended_highest_sequence_number, |
457 AllOf(Field(&RTCPReportBlock::sourceSSRC, kReceiverMainSsrc), | 459 kSequenceNumbers[0])), |
458 Field(&RTCPReportBlock::remoteSSRC, kSenderSsrc2), | 460 AllOf(Field(&RTCPReportBlock::source_ssrc, kReceiverMainSsrc), |
459 Field(&RTCPReportBlock::fractionLost, kFracLost[1]), | 461 Field(&RTCPReportBlock::sender_ssrc, kSenderSsrc2), |
460 Field(&RTCPReportBlock::cumulativeLost, kCumLost[1]), | 462 Field(&RTCPReportBlock::fraction_lost, kFracLost[1]), |
461 Field(&RTCPReportBlock::extendedHighSeqNum, | 463 Field(&RTCPReportBlock::packets_lost, kCumLost[1]), |
462 kSequenceNumbers[1])))); | 464 Field(&RTCPReportBlock::extended_highest_sequence_number, |
| 465 kSequenceNumbers[1])))); |
463 } | 466 } |
464 | 467 |
465 TEST_F(RtcpReceiverTest, GetRtt) { | 468 TEST_F(RtcpReceiverTest, GetRtt) { |
466 const uint32_t kSentCompactNtp = 0x1234; | 469 const uint32_t kSentCompactNtp = 0x1234; |
467 const uint32_t kDelayCompactNtp = 0x222; | 470 const uint32_t kDelayCompactNtp = 0x222; |
468 // No report block received. | 471 // No report block received. |
469 EXPECT_EQ( | 472 EXPECT_EQ( |
470 -1, rtcp_receiver_.RTT(kSenderSsrc, nullptr, nullptr, nullptr, nullptr)); | 473 -1, rtcp_receiver_.RTT(kSenderSsrc, nullptr, nullptr, nullptr, nullptr)); |
471 | 474 |
472 rtcp::ReportBlock rb; | 475 rtcp::ReportBlock rb; |
(...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1238 | 1241 |
1239 rtcp::ExtendedReports xr; | 1242 rtcp::ExtendedReports xr; |
1240 xr.SetTargetBitrate(bitrate); | 1243 xr.SetTargetBitrate(bitrate); |
1241 | 1244 |
1242 EXPECT_CALL(bitrate_allocation_observer_, | 1245 EXPECT_CALL(bitrate_allocation_observer_, |
1243 OnBitrateAllocationUpdated(expected_allocation)); | 1246 OnBitrateAllocationUpdated(expected_allocation)); |
1244 InjectRtcpPacket(xr); | 1247 InjectRtcpPacket(xr); |
1245 } | 1248 } |
1246 | 1249 |
1247 } // namespace webrtc | 1250 } // namespace webrtc |
OLD | NEW |