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 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 kTransportSequenceNumberExtensionId)); | 348 kTransportSequenceNumberExtensionId)); |
349 | 349 |
350 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 350 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
351 .WillOnce(testing::Return(kTransportSequenceNumber)); | 351 .WillOnce(testing::Return(kTransportSequenceNumber)); |
352 EXPECT_CALL(send_packet_observer_, | 352 EXPECT_CALL(send_packet_observer_, |
353 OnSendPacket(kTransportSequenceNumber, _, _)) | 353 OnSendPacket(kTransportSequenceNumber, _, _)) |
354 .Times(1); | 354 .Times(1); |
355 EXPECT_CALL(feedback_observer_, | 355 EXPECT_CALL(feedback_observer_, |
356 AddPacket(kTransportSequenceNumber, | 356 AddPacket(kTransportSequenceNumber, |
357 sizeof(kPayloadData) + kGenericHeaderLength, | 357 sizeof(kPayloadData) + kGenericHeaderLength, |
358 PacketInfo::kNotAProbe)) | 358 PacedPacketInfo::kNotAProbe)) |
359 .Times(1); | 359 .Times(1); |
360 | 360 |
361 SendGenericPayload(); | 361 SendGenericPayload(); |
362 | 362 |
363 const auto& packet = transport_.last_sent_packet(); | 363 const auto& packet = transport_.last_sent_packet(); |
364 uint16_t transport_seq_no; | 364 uint16_t transport_seq_no; |
365 ASSERT_TRUE(packet.GetExtension<TransportSequenceNumber>(&transport_seq_no)); | 365 ASSERT_TRUE(packet.GetExtension<TransportSequenceNumber>(&transport_seq_no)); |
366 EXPECT_EQ(kTransportSequenceNumber, transport_seq_no); | 366 EXPECT_EQ(kTransportSequenceNumber, transport_seq_no); |
367 EXPECT_EQ(transport_.last_packet_id_, transport_seq_no); | 367 EXPECT_EQ(transport_.last_packet_id_, transport_seq_no); |
368 } | 368 } |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 EXPECT_TRUE(rtp_sender_->SendToNetwork(std::move(packet), | 443 EXPECT_TRUE(rtp_sender_->SendToNetwork(std::move(packet), |
444 kAllowRetransmission, | 444 kAllowRetransmission, |
445 RtpPacketSender::kNormalPriority)); | 445 RtpPacketSender::kNormalPriority)); |
446 | 446 |
447 EXPECT_EQ(0, transport_.packets_sent()); | 447 EXPECT_EQ(0, transport_.packets_sent()); |
448 | 448 |
449 const int kStoredTimeInMs = 100; | 449 const int kStoredTimeInMs = 100; |
450 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); | 450 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); |
451 | 451 |
452 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, capture_time_ms, false, | 452 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, capture_time_ms, false, |
453 PacketInfo::kNotAProbe); | 453 PacedPacketInfo::kNotAProbe); |
454 | 454 |
455 // Process send bucket. Packet should now be sent. | 455 // Process send bucket. Packet should now be sent. |
456 EXPECT_EQ(1, transport_.packets_sent()); | 456 EXPECT_EQ(1, transport_.packets_sent()); |
457 EXPECT_EQ(packet_size, transport_.last_sent_packet().size()); | 457 EXPECT_EQ(packet_size, transport_.last_sent_packet().size()); |
458 | 458 |
459 webrtc::RTPHeader rtp_header; | 459 webrtc::RTPHeader rtp_header; |
460 transport_.last_sent_packet().GetHeader(&rtp_header); | 460 transport_.last_sent_packet().GetHeader(&rtp_header); |
461 | 461 |
462 // Verify transmission time offset. | 462 // Verify transmission time offset. |
463 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); | 463 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); |
(...skipping 30 matching lines...) Expand all Loading... |
494 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 494 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
495 kSsrc, kSeqNum, _, _, _)); | 495 kSsrc, kSeqNum, _, _, _)); |
496 | 496 |
497 const int kStoredTimeInMs = 100; | 497 const int kStoredTimeInMs = 100; |
498 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); | 498 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); |
499 | 499 |
500 EXPECT_EQ(static_cast<int>(packet_size), rtp_sender_->ReSendPacket(kSeqNum)); | 500 EXPECT_EQ(static_cast<int>(packet_size), rtp_sender_->ReSendPacket(kSeqNum)); |
501 EXPECT_EQ(0, transport_.packets_sent()); | 501 EXPECT_EQ(0, transport_.packets_sent()); |
502 | 502 |
503 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, capture_time_ms, false, | 503 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, capture_time_ms, false, |
504 PacketInfo::kNotAProbe); | 504 PacedPacketInfo::kNotAProbe); |
505 | 505 |
506 // Process send bucket. Packet should now be sent. | 506 // Process send bucket. Packet should now be sent. |
507 EXPECT_EQ(1, transport_.packets_sent()); | 507 EXPECT_EQ(1, transport_.packets_sent()); |
508 EXPECT_EQ(packet_size, transport_.last_sent_packet().size()); | 508 EXPECT_EQ(packet_size, transport_.last_sent_packet().size()); |
509 | 509 |
510 webrtc::RTPHeader rtp_header; | 510 webrtc::RTPHeader rtp_header; |
511 transport_.last_sent_packet().GetHeader(&rtp_header); | 511 transport_.last_sent_packet().GetHeader(&rtp_header); |
512 | 512 |
513 // Verify transmission time offset. | 513 // Verify transmission time offset. |
514 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); | 514 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 EXPECT_TRUE(rtp_sender_->SendToNetwork(std::move(packet), | 553 EXPECT_TRUE(rtp_sender_->SendToNetwork(std::move(packet), |
554 kAllowRetransmission, | 554 kAllowRetransmission, |
555 RtpPacketSender::kNormalPriority)); | 555 RtpPacketSender::kNormalPriority)); |
556 | 556 |
557 int total_packets_sent = 0; | 557 int total_packets_sent = 0; |
558 EXPECT_EQ(total_packets_sent, transport_.packets_sent()); | 558 EXPECT_EQ(total_packets_sent, transport_.packets_sent()); |
559 | 559 |
560 const int kStoredTimeInMs = 100; | 560 const int kStoredTimeInMs = 100; |
561 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); | 561 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); |
562 rtp_sender_->TimeToSendPacket(kSsrc, seq_num++, capture_time_ms, false, | 562 rtp_sender_->TimeToSendPacket(kSsrc, seq_num++, capture_time_ms, false, |
563 PacketInfo::kNotAProbe); | 563 PacedPacketInfo::kNotAProbe); |
564 // Packet should now be sent. This test doesn't verify the regular video | 564 // Packet should now be sent. This test doesn't verify the regular video |
565 // packet, since it is tested in another test. | 565 // packet, since it is tested in another test. |
566 EXPECT_EQ(++total_packets_sent, transport_.packets_sent()); | 566 EXPECT_EQ(++total_packets_sent, transport_.packets_sent()); |
567 timestamp += 90 * kStoredTimeInMs; | 567 timestamp += 90 * kStoredTimeInMs; |
568 | 568 |
569 // Send padding 4 times, waiting 50 ms between each. | 569 // Send padding 4 times, waiting 50 ms between each. |
570 for (int i = 0; i < 4; ++i) { | 570 for (int i = 0; i < 4; ++i) { |
571 const int kPaddingPeriodMs = 50; | 571 const int kPaddingPeriodMs = 50; |
572 const size_t kPaddingBytes = 100; | 572 const size_t kPaddingBytes = 100; |
573 const size_t kMaxPaddingLength = 224; // Value taken from rtp_sender.cc. | 573 const size_t kMaxPaddingLength = 224; // Value taken from rtp_sender.cc. |
574 // Padding will be forced to full packets. | 574 // Padding will be forced to full packets. |
575 EXPECT_EQ(kMaxPaddingLength, rtp_sender_->TimeToSendPadding( | 575 EXPECT_EQ(kMaxPaddingLength, |
576 kPaddingBytes, PacketInfo::kNotAProbe)); | 576 rtp_sender_->TimeToSendPadding(kPaddingBytes, |
| 577 PacedPacketInfo::kNotAProbe)); |
577 | 578 |
578 // Process send bucket. Padding should now be sent. | 579 // Process send bucket. Padding should now be sent. |
579 EXPECT_EQ(++total_packets_sent, transport_.packets_sent()); | 580 EXPECT_EQ(++total_packets_sent, transport_.packets_sent()); |
580 EXPECT_EQ(kMaxPaddingLength + rtp_header_len, | 581 EXPECT_EQ(kMaxPaddingLength + rtp_header_len, |
581 transport_.last_sent_packet().size()); | 582 transport_.last_sent_packet().size()); |
582 | 583 |
583 transport_.last_sent_packet().GetHeader(&rtp_header); | 584 transport_.last_sent_packet().GetHeader(&rtp_header); |
584 EXPECT_EQ(kMaxPaddingLength, rtp_header.paddingLength); | 585 EXPECT_EQ(kMaxPaddingLength, rtp_header.paddingLength); |
585 | 586 |
586 // Verify sequence number and timestamp. The timestamp should be the same | 587 // Verify sequence number and timestamp. The timestamp should be the same |
(...skipping 17 matching lines...) Expand all Loading... |
604 | 605 |
605 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 606 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
606 kSsrc, seq_num, _, _, _)); | 607 kSsrc, seq_num, _, _, _)); |
607 | 608 |
608 // Packet should be stored in a send bucket. | 609 // Packet should be stored in a send bucket. |
609 EXPECT_TRUE(rtp_sender_->SendToNetwork(std::move(packet), | 610 EXPECT_TRUE(rtp_sender_->SendToNetwork(std::move(packet), |
610 kAllowRetransmission, | 611 kAllowRetransmission, |
611 RtpPacketSender::kNormalPriority)); | 612 RtpPacketSender::kNormalPriority)); |
612 | 613 |
613 rtp_sender_->TimeToSendPacket(kSsrc, seq_num, capture_time_ms, false, | 614 rtp_sender_->TimeToSendPacket(kSsrc, seq_num, capture_time_ms, false, |
614 PacketInfo::kNotAProbe); | 615 PacedPacketInfo::kNotAProbe); |
615 // Process send bucket. | 616 // Process send bucket. |
616 EXPECT_EQ(++total_packets_sent, transport_.packets_sent()); | 617 EXPECT_EQ(++total_packets_sent, transport_.packets_sent()); |
617 EXPECT_EQ(packet_size, transport_.last_sent_packet().size()); | 618 EXPECT_EQ(packet_size, transport_.last_sent_packet().size()); |
618 transport_.last_sent_packet().GetHeader(&rtp_header); | 619 transport_.last_sent_packet().GetHeader(&rtp_header); |
619 | 620 |
620 // Verify sequence number and timestamp. | 621 // Verify sequence number and timestamp. |
621 EXPECT_EQ(seq_num, rtp_header.sequenceNumber); | 622 EXPECT_EQ(seq_num, rtp_header.sequenceNumber); |
622 EXPECT_EQ(timestamp, rtp_header.timestamp); | 623 EXPECT_EQ(timestamp, rtp_header.timestamp); |
623 // Verify transmission time offset. This packet is sent without delay. | 624 // Verify transmission time offset. This packet is sent without delay. |
624 EXPECT_EQ(0, rtp_header.extension.transmissionTimeOffset); | 625 EXPECT_EQ(0, rtp_header.extension.transmissionTimeOffset); |
(...skipping 13 matching lines...) Expand all Loading... |
638 .Times(1); | 639 .Times(1); |
639 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 640 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
640 .WillOnce(testing::Return(kTransportSequenceNumber)); | 641 .WillOnce(testing::Return(kTransportSequenceNumber)); |
641 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _)) | 642 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _)) |
642 .Times(1); | 643 .Times(1); |
643 | 644 |
644 SendGenericPayload(); // Packet passed to pacer. | 645 SendGenericPayload(); // Packet passed to pacer. |
645 const bool kIsRetransmit = false; | 646 const bool kIsRetransmit = false; |
646 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, | 647 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, |
647 fake_clock_.TimeInMilliseconds(), kIsRetransmit, | 648 fake_clock_.TimeInMilliseconds(), kIsRetransmit, |
648 PacketInfo::kNotAProbe); | 649 PacedPacketInfo::kNotAProbe); |
649 EXPECT_EQ(1, transport_.packets_sent()); | 650 EXPECT_EQ(1, transport_.packets_sent()); |
650 } | 651 } |
651 | 652 |
652 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedForRetransmits) { | 653 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedForRetransmits) { |
653 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 654 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
654 kRtpExtensionTransportSequenceNumber, | 655 kRtpExtensionTransportSequenceNumber, |
655 kTransportSequenceNumberExtensionId)); | 656 kTransportSequenceNumberExtensionId)); |
656 rtp_sender_->SetStorePacketsStatus(true, 10); | 657 rtp_sender_->SetStorePacketsStatus(true, 10); |
657 | 658 |
658 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); | 659 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); |
659 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 660 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
660 .WillOnce(testing::Return(kTransportSequenceNumber)); | 661 .WillOnce(testing::Return(kTransportSequenceNumber)); |
661 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _)) | 662 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _)) |
662 .Times(1); | 663 .Times(1); |
663 | 664 |
664 SendGenericPayload(); // Packet passed to pacer. | 665 SendGenericPayload(); // Packet passed to pacer. |
665 const bool kIsRetransmit = true; | 666 const bool kIsRetransmit = true; |
666 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, | 667 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, |
667 fake_clock_.TimeInMilliseconds(), kIsRetransmit, | 668 fake_clock_.TimeInMilliseconds(), kIsRetransmit, |
668 PacketInfo::kNotAProbe); | 669 PacedPacketInfo::kNotAProbe); |
669 EXPECT_EQ(1, transport_.packets_sent()); | 670 EXPECT_EQ(1, transport_.packets_sent()); |
670 } | 671 } |
671 | 672 |
672 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) { | 673 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) { |
673 rtp_sender_.reset(new RTPSender( | 674 rtp_sender_.reset(new RTPSender( |
674 false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr, | 675 false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr, |
675 nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr, | 676 nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr, |
676 nullptr, nullptr, &send_packet_observer_, &retransmission_rate_limiter_, | 677 nullptr, nullptr, &send_packet_observer_, &retransmission_rate_limiter_, |
677 nullptr)); | 678 nullptr)); |
678 rtp_sender_->SetSequenceNumber(kSeqNum); | 679 rtp_sender_->SetSequenceNumber(kSeqNum); |
679 rtp_sender_->SetSSRC(kSsrc); | 680 rtp_sender_->SetSSRC(kSsrc); |
680 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 681 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
681 kRtpExtensionTransportSequenceNumber, | 682 kRtpExtensionTransportSequenceNumber, |
682 kTransportSequenceNumberExtensionId)); | 683 kTransportSequenceNumberExtensionId)); |
683 rtp_sender_->SetSequenceNumber(kSeqNum); | 684 rtp_sender_->SetSequenceNumber(kSeqNum); |
684 rtp_sender_->SetStorePacketsStatus(true, 10); | 685 rtp_sender_->SetStorePacketsStatus(true, 10); |
685 | 686 |
686 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); | 687 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); |
687 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _)) | 688 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _)) |
688 .Times(1); | 689 .Times(1); |
689 | 690 |
690 SendGenericPayload(); // Packet passed to pacer. | 691 SendGenericPayload(); // Packet passed to pacer. |
691 const bool kIsRetransmit = false; | 692 const bool kIsRetransmit = false; |
692 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, | 693 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, |
693 fake_clock_.TimeInMilliseconds(), kIsRetransmit, | 694 fake_clock_.TimeInMilliseconds(), kIsRetransmit, |
694 PacketInfo::kNotAProbe); | 695 PacedPacketInfo::kNotAProbe); |
695 EXPECT_EQ(1, transport_.packets_sent()); | 696 EXPECT_EQ(1, transport_.packets_sent()); |
696 } | 697 } |
697 | 698 |
698 TEST_F(RtpSenderTest, SendRedundantPayloads) { | 699 TEST_F(RtpSenderTest, SendRedundantPayloads) { |
699 MockTransport transport; | 700 MockTransport transport; |
700 rtp_sender_.reset(new RTPSender( | 701 rtp_sender_.reset(new RTPSender( |
701 false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr, | 702 false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr, |
702 nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr, | 703 nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr, |
703 &retransmission_rate_limiter_, nullptr)); | 704 &retransmission_rate_limiter_, nullptr)); |
704 rtp_sender_->SetSequenceNumber(kSeqNum); | 705 rtp_sender_->SetSequenceNumber(kSeqNum); |
(...skipping 22 matching lines...) Expand all Loading... |
727 EXPECT_CALL(mock_rtc_event_log_, | 728 EXPECT_CALL(mock_rtc_event_log_, |
728 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) | 729 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) |
729 .Times(kNumPayloadSizes); | 730 .Times(kNumPayloadSizes); |
730 | 731 |
731 // Send 10 packets of increasing size. | 732 // Send 10 packets of increasing size. |
732 for (size_t i = 0; i < kNumPayloadSizes; ++i) { | 733 for (size_t i = 0; i < kNumPayloadSizes; ++i) { |
733 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 734 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
734 EXPECT_CALL(transport, SendRtp(_, _, _)).WillOnce(testing::Return(true)); | 735 EXPECT_CALL(transport, SendRtp(_, _, _)).WillOnce(testing::Return(true)); |
735 SendPacket(capture_time_ms, kPayloadSizes[i]); | 736 SendPacket(capture_time_ms, kPayloadSizes[i]); |
736 rtp_sender_->TimeToSendPacket(kSsrc, seq_num++, capture_time_ms, false, | 737 rtp_sender_->TimeToSendPacket(kSsrc, seq_num++, capture_time_ms, false, |
737 PacketInfo::kNotAProbe); | 738 PacedPacketInfo::kNotAProbe); |
738 fake_clock_.AdvanceTimeMilliseconds(33); | 739 fake_clock_.AdvanceTimeMilliseconds(33); |
739 } | 740 } |
740 | 741 |
741 EXPECT_CALL(mock_rtc_event_log_, | 742 EXPECT_CALL(mock_rtc_event_log_, |
742 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) | 743 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) |
743 .Times(::testing::AtLeast(4)); | 744 .Times(::testing::AtLeast(4)); |
744 | 745 |
745 // The amount of padding to send it too small to send a payload packet. | 746 // The amount of padding to send it too small to send a payload packet. |
746 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) | 747 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) |
747 .WillOnce(testing::Return(true)); | 748 .WillOnce(testing::Return(true)); |
748 EXPECT_EQ(kMaxPaddingSize, | 749 EXPECT_EQ(kMaxPaddingSize, |
749 rtp_sender_->TimeToSendPadding(49, PacketInfo::kNotAProbe)); | 750 rtp_sender_->TimeToSendPadding(49, PacedPacketInfo::kNotAProbe)); |
750 | 751 |
751 EXPECT_CALL(transport, | 752 EXPECT_CALL(transport, |
752 SendRtp(_, kPayloadSizes[0] + rtp_header_len + kRtxHeaderSize, _)) | 753 SendRtp(_, kPayloadSizes[0] + rtp_header_len + kRtxHeaderSize, _)) |
753 .WillOnce(testing::Return(true)); | 754 .WillOnce(testing::Return(true)); |
754 EXPECT_EQ(kPayloadSizes[0], | 755 EXPECT_EQ(kPayloadSizes[0], |
755 rtp_sender_->TimeToSendPadding(500, PacketInfo::kNotAProbe)); | 756 rtp_sender_->TimeToSendPadding(500, PacedPacketInfo::kNotAProbe)); |
756 | 757 |
757 EXPECT_CALL(transport, SendRtp(_, kPayloadSizes[kNumPayloadSizes - 1] + | 758 EXPECT_CALL(transport, SendRtp(_, kPayloadSizes[kNumPayloadSizes - 1] + |
758 rtp_header_len + kRtxHeaderSize, | 759 rtp_header_len + kRtxHeaderSize, |
759 _)) | 760 _)) |
760 .WillOnce(testing::Return(true)); | 761 .WillOnce(testing::Return(true)); |
761 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) | 762 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) |
762 .WillOnce(testing::Return(true)); | 763 .WillOnce(testing::Return(true)); |
763 EXPECT_EQ(kPayloadSizes[kNumPayloadSizes - 1] + kMaxPaddingSize, | 764 EXPECT_EQ(kPayloadSizes[kNumPayloadSizes - 1] + kMaxPaddingSize, |
764 rtp_sender_->TimeToSendPadding(999, PacketInfo::kNotAProbe)); | 765 rtp_sender_->TimeToSendPadding(999, PacedPacketInfo::kNotAProbe)); |
765 } | 766 } |
766 | 767 |
767 TEST_F(RtpSenderTestWithoutPacer, SendGenericVideo) { | 768 TEST_F(RtpSenderTestWithoutPacer, SendGenericVideo) { |
768 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 769 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
769 const uint8_t payload_type = 127; | 770 const uint8_t payload_type = 127; |
770 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 771 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |
771 0, 1500)); | 772 0, 1500)); |
772 uint8_t payload[] = {47, 11, 32, 93, 89}; | 773 uint8_t payload[] = {47, 11, 32, 93, 89}; |
773 | 774 |
774 // Send keyframe | 775 // Send keyframe |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1148 expected.transmitted.payload_bytes = 12; | 1149 expected.transmitted.payload_bytes = 12; |
1149 expected.transmitted.header_bytes = 24; | 1150 expected.transmitted.header_bytes = 24; |
1150 expected.transmitted.packets = 2; | 1151 expected.transmitted.packets = 2; |
1151 expected.retransmitted.payload_bytes = 6; | 1152 expected.retransmitted.payload_bytes = 6; |
1152 expected.retransmitted.header_bytes = 12; | 1153 expected.retransmitted.header_bytes = 12; |
1153 expected.retransmitted.padding_bytes = 0; | 1154 expected.retransmitted.padding_bytes = 0; |
1154 expected.retransmitted.packets = 1; | 1155 expected.retransmitted.packets = 1; |
1155 callback.Matches(ssrc, expected); | 1156 callback.Matches(ssrc, expected); |
1156 | 1157 |
1157 // Send padding. | 1158 // Send padding. |
1158 rtp_sender_->TimeToSendPadding(kMaxPaddingSize, PacketInfo::kNotAProbe); | 1159 rtp_sender_->TimeToSendPadding(kMaxPaddingSize, PacedPacketInfo::kNotAProbe); |
1159 expected.transmitted.payload_bytes = 12; | 1160 expected.transmitted.payload_bytes = 12; |
1160 expected.transmitted.header_bytes = 36; | 1161 expected.transmitted.header_bytes = 36; |
1161 expected.transmitted.padding_bytes = kMaxPaddingSize; | 1162 expected.transmitted.padding_bytes = kMaxPaddingSize; |
1162 expected.transmitted.packets = 3; | 1163 expected.transmitted.packets = 3; |
1163 callback.Matches(ssrc, expected); | 1164 callback.Matches(ssrc, expected); |
1164 | 1165 |
1165 // Send ULPFEC. | 1166 // Send ULPFEC. |
1166 rtp_sender_->SetUlpfecConfig(kRedPayloadType, kUlpfecPayloadType); | 1167 rtp_sender_->SetUlpfecConfig(kRedPayloadType, kUlpfecPayloadType); |
1167 FecProtectionParams fec_params; | 1168 FecProtectionParams fec_params; |
1168 fec_params.fec_mask_type = kFecMaskRandom; | 1169 fec_params.fec_mask_type = kFecMaskRandom; |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1276 | 1277 |
1277 ASSERT_EQ(0, rtp_sender_->RegisterPayload(kPayloadName, kPayloadType, 90000, | 1278 ASSERT_EQ(0, rtp_sender_->RegisterPayload(kPayloadName, kPayloadType, 90000, |
1278 0, 1500)); | 1279 0, 1500)); |
1279 uint8_t payload[] = {47, 11, 32, 93, 89}; | 1280 uint8_t payload[] = {47, 11, 32, 93, 89}; |
1280 | 1281 |
1281 ASSERT_TRUE(rtp_sender_->SendOutgoingData( | 1282 ASSERT_TRUE(rtp_sender_->SendOutgoingData( |
1282 kVideoFrameKey, kPayloadType, 1234, 4321, payload, | 1283 kVideoFrameKey, kPayloadType, 1234, 4321, payload, |
1283 sizeof(payload), nullptr, nullptr, nullptr)); | 1284 sizeof(payload), nullptr, nullptr, nullptr)); |
1284 | 1285 |
1285 // Will send 2 full-size padding packets. | 1286 // Will send 2 full-size padding packets. |
1286 rtp_sender_->TimeToSendPadding(1, PacketInfo::kNotAProbe); | 1287 rtp_sender_->TimeToSendPadding(1, PacedPacketInfo::kNotAProbe); |
1287 rtp_sender_->TimeToSendPadding(1, PacketInfo::kNotAProbe); | 1288 rtp_sender_->TimeToSendPadding(1, PacedPacketInfo::kNotAProbe); |
1288 | 1289 |
1289 StreamDataCounters rtp_stats; | 1290 StreamDataCounters rtp_stats; |
1290 StreamDataCounters rtx_stats; | 1291 StreamDataCounters rtx_stats; |
1291 rtp_sender_->GetDataCounters(&rtp_stats, &rtx_stats); | 1292 rtp_sender_->GetDataCounters(&rtp_stats, &rtx_stats); |
1292 | 1293 |
1293 // Payload + 1-byte generic header. | 1294 // Payload + 1-byte generic header. |
1294 EXPECT_GT(rtp_stats.first_packet_time_ms, -1); | 1295 EXPECT_GT(rtp_stats.first_packet_time_ms, -1); |
1295 EXPECT_EQ(rtp_stats.transmitted.payload_bytes, sizeof(payload) + 1); | 1296 EXPECT_EQ(rtp_stats.transmitted.payload_bytes, sizeof(payload) + 1); |
1296 EXPECT_EQ(rtp_stats.transmitted.header_bytes, 12u); | 1297 EXPECT_EQ(rtp_stats.transmitted.header_bytes, 12u); |
1297 EXPECT_EQ(rtp_stats.transmitted.padding_bytes, 0u); | 1298 EXPECT_EQ(rtp_stats.transmitted.padding_bytes, 0u); |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1476 nullptr, &retransmission_rate_limiter_, &mock_overhead_observer)); | 1477 nullptr, &retransmission_rate_limiter_, &mock_overhead_observer)); |
1477 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 1478 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
1478 kRtpExtensionTransportSequenceNumber, | 1479 kRtpExtensionTransportSequenceNumber, |
1479 kTransportSequenceNumberExtensionId)); | 1480 kTransportSequenceNumberExtensionId)); |
1480 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 1481 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
1481 .WillOnce(testing::Return(kTransportSequenceNumber)); | 1482 .WillOnce(testing::Return(kTransportSequenceNumber)); |
1482 EXPECT_CALL(feedback_observer_, | 1483 EXPECT_CALL(feedback_observer_, |
1483 AddPacket(kTransportSequenceNumber, | 1484 AddPacket(kTransportSequenceNumber, |
1484 sizeof(kPayloadData) + kGenericHeaderLength + | 1485 sizeof(kPayloadData) + kGenericHeaderLength + |
1485 kRtpOverheadBytesPerPacket, | 1486 kRtpOverheadBytesPerPacket, |
1486 PacketInfo::kNotAProbe)) | 1487 PacedPacketInfo::kNotAProbe)) |
1487 .Times(1); | 1488 .Times(1); |
1488 EXPECT_CALL(mock_overhead_observer, | 1489 EXPECT_CALL(mock_overhead_observer, |
1489 OnOverheadChanged(kRtpOverheadBytesPerPacket)) | 1490 OnOverheadChanged(kRtpOverheadBytesPerPacket)) |
1490 .Times(1); | 1491 .Times(1); |
1491 SendGenericPayload(); | 1492 SendGenericPayload(); |
1492 } | 1493 } |
1493 | 1494 |
1494 TEST_F(RtpSenderTest, SendAudioPadding) { | 1495 TEST_F(RtpSenderTest, SendAudioPadding) { |
1495 MockTransport transport; | 1496 MockTransport transport; |
1496 const bool kEnableAudio = true; | 1497 const bool kEnableAudio = true; |
1497 rtp_sender_.reset(new RTPSender( | 1498 rtp_sender_.reset(new RTPSender( |
1498 kEnableAudio, &fake_clock_, &transport, &mock_paced_sender_, nullptr, | 1499 kEnableAudio, &fake_clock_, &transport, &mock_paced_sender_, nullptr, |
1499 nullptr, nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, | 1500 nullptr, nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, |
1500 nullptr, &retransmission_rate_limiter_, nullptr)); | 1501 nullptr, &retransmission_rate_limiter_, nullptr)); |
1501 rtp_sender_->SetSendPayloadType(kPayload); | 1502 rtp_sender_->SetSendPayloadType(kPayload); |
1502 rtp_sender_->SetSequenceNumber(kSeqNum); | 1503 rtp_sender_->SetSequenceNumber(kSeqNum); |
1503 rtp_sender_->SetTimestampOffset(0); | 1504 rtp_sender_->SetTimestampOffset(0); |
1504 rtp_sender_->SetSSRC(kSsrc); | 1505 rtp_sender_->SetSSRC(kSsrc); |
1505 | 1506 |
1506 const size_t kPaddingSize = 59; | 1507 const size_t kPaddingSize = 59; |
1507 EXPECT_CALL(transport, SendRtp(_, kPaddingSize + kRtpHeaderSize, _)) | 1508 EXPECT_CALL(transport, SendRtp(_, kPaddingSize + kRtpHeaderSize, _)) |
1508 .WillOnce(testing::Return(true)); | 1509 .WillOnce(testing::Return(true)); |
1509 EXPECT_EQ(kPaddingSize, rtp_sender_->TimeToSendPadding( | 1510 EXPECT_EQ(kPaddingSize, |
1510 kPaddingSize, PacketInfo::kNotAProbe)); | 1511 rtp_sender_->TimeToSendPadding(kPaddingSize, |
| 1512 PacedPacketInfo::kNotAProbe)); |
1511 | 1513 |
1512 // Requested padding size is too small, will send a larger one. | 1514 // Requested padding size is too small, will send a larger one. |
1513 const size_t kMinPaddingSize = 50; | 1515 const size_t kMinPaddingSize = 50; |
1514 EXPECT_CALL(transport, SendRtp(_, kMinPaddingSize + kRtpHeaderSize, _)) | 1516 EXPECT_CALL(transport, SendRtp(_, kMinPaddingSize + kRtpHeaderSize, _)) |
1515 .WillOnce(testing::Return(true)); | 1517 .WillOnce(testing::Return(true)); |
1516 EXPECT_EQ(kMinPaddingSize, rtp_sender_->TimeToSendPadding( | 1518 EXPECT_EQ(kMinPaddingSize, |
1517 kMinPaddingSize - 5, PacketInfo::kNotAProbe)); | 1519 rtp_sender_->TimeToSendPadding(kMinPaddingSize - 5, |
| 1520 PacedPacketInfo::kNotAProbe)); |
1518 } | 1521 } |
1519 } // namespace webrtc | 1522 } // namespace webrtc |
OLD | NEW |