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 589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
600 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); | 600 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); |
601 rtp_sender_->TimeToSendPacket(kSsrc, seq_num++, capture_time_ms, false, | 601 rtp_sender_->TimeToSendPacket(kSsrc, seq_num++, capture_time_ms, false, |
602 PacedPacketInfo()); | 602 PacedPacketInfo()); |
603 // Packet should now be sent. This test doesn't verify the regular video | 603 // Packet should now be sent. This test doesn't verify the regular video |
604 // packet, since it is tested in another test. | 604 // packet, since it is tested in another test. |
605 EXPECT_EQ(++total_packets_sent, transport_.packets_sent()); | 605 EXPECT_EQ(++total_packets_sent, transport_.packets_sent()); |
606 timestamp += 90 * kStoredTimeInMs; | 606 timestamp += 90 * kStoredTimeInMs; |
607 | 607 |
608 // Send padding 4 times, waiting 50 ms between each. | 608 // Send padding 4 times, waiting 50 ms between each. |
609 for (int i = 0; i < 4; ++i) { | 609 for (int i = 0; i < 4; ++i) { |
610 const int kPaddingPeriodMs = 50; | 610 constexpr int kPaddingPeriodMs = 50; |
611 const size_t kPaddingBytes = 100; | 611 constexpr size_t kPaddingBytes = 100; |
612 const size_t kMaxPaddingLength = 224; // Value taken from rtp_sender.cc. | 612 constexpr size_t kMaxPaddingLength = |
| 613 224; // Value taken from rtp_sender.cc. |
| 614 |
613 // Padding will be forced to full packets. | 615 // Padding will be forced to full packets. |
614 EXPECT_EQ(kMaxPaddingLength, | 616 // If BWE includes overhead, the return value of TimeToSendPadding will also |
| 617 // include overhead. |
| 618 const size_t expected_return = |
| 619 GetParam() ? kMaxPaddingLength + rtp_header_len : kMaxPaddingLength; |
| 620 EXPECT_EQ(expected_return, |
615 rtp_sender_->TimeToSendPadding(kPaddingBytes, PacedPacketInfo())); | 621 rtp_sender_->TimeToSendPadding(kPaddingBytes, PacedPacketInfo())); |
616 | 622 |
617 // Process send bucket. Padding should now be sent. | 623 // Process send bucket. Padding should now be sent. |
618 EXPECT_EQ(++total_packets_sent, transport_.packets_sent()); | 624 EXPECT_EQ(++total_packets_sent, transport_.packets_sent()); |
619 EXPECT_EQ(kMaxPaddingLength + rtp_header_len, | 625 EXPECT_EQ(kMaxPaddingLength + rtp_header_len, |
620 transport_.last_sent_packet().size()); | 626 transport_.last_sent_packet().size()); |
621 | 627 |
622 transport_.last_sent_packet().GetHeader(&rtp_header); | 628 transport_.last_sent_packet().GetHeader(&rtp_header); |
623 EXPECT_EQ(kMaxPaddingLength, rtp_header.paddingLength); | 629 EXPECT_EQ(kMaxPaddingLength, rtp_header.paddingLength); |
624 | 630 |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
777 fake_clock_.AdvanceTimeMilliseconds(33); | 783 fake_clock_.AdvanceTimeMilliseconds(33); |
778 } | 784 } |
779 | 785 |
780 EXPECT_CALL(mock_rtc_event_log_, | 786 EXPECT_CALL(mock_rtc_event_log_, |
781 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)) | 787 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)) |
782 .Times(::testing::AtLeast(4)); | 788 .Times(::testing::AtLeast(4)); |
783 | 789 |
784 // The amount of padding to send it too small to send a payload packet. | 790 // The amount of padding to send it too small to send a payload packet. |
785 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) | 791 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) |
786 .WillOnce(testing::Return(true)); | 792 .WillOnce(testing::Return(true)); |
787 EXPECT_EQ(kMaxPaddingSize, | 793 |
| 794 // If BWE includes overhead, the return value of TimeToSendPadding will also |
| 795 // include overhead. |
| 796 size_t expected_return = |
| 797 GetParam() ? kMaxPaddingSize + rtp_header_len : kMaxPaddingSize; |
| 798 EXPECT_EQ(expected_return, |
788 rtp_sender_->TimeToSendPadding(49, PacedPacketInfo())); | 799 rtp_sender_->TimeToSendPadding(49, PacedPacketInfo())); |
789 | 800 |
790 EXPECT_CALL(transport, | 801 EXPECT_CALL(transport, |
791 SendRtp(_, kPayloadSizes[0] + rtp_header_len + kRtxHeaderSize, _)) | 802 SendRtp(_, kPayloadSizes[0] + rtp_header_len + kRtxHeaderSize, _)) |
792 .WillOnce(testing::Return(true)); | 803 .WillOnce(testing::Return(true)); |
793 EXPECT_EQ(kPayloadSizes[0], | 804 |
| 805 expected_return = |
| 806 GetParam() ? kPayloadSizes[0] + rtp_header_len : kPayloadSizes[0]; |
| 807 EXPECT_EQ(expected_return, |
794 rtp_sender_->TimeToSendPadding(500, PacedPacketInfo())); | 808 rtp_sender_->TimeToSendPadding(500, PacedPacketInfo())); |
795 | 809 |
796 EXPECT_CALL(transport, SendRtp(_, kPayloadSizes[kNumPayloadSizes - 1] + | 810 EXPECT_CALL(transport, SendRtp(_, kPayloadSizes[kNumPayloadSizes - 1] + |
797 rtp_header_len + kRtxHeaderSize, | 811 rtp_header_len + kRtxHeaderSize, |
798 _)) | 812 _)) |
799 .WillOnce(testing::Return(true)); | 813 .WillOnce(testing::Return(true)); |
800 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) | 814 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) |
801 .WillOnce(testing::Return(true)); | 815 .WillOnce(testing::Return(true)); |
802 EXPECT_EQ(kPayloadSizes[kNumPayloadSizes - 1] + kMaxPaddingSize, | 816 |
| 817 expected_return = GetParam() |
| 818 ? kPayloadSizes[kNumPayloadSizes - 1] + |
| 819 kMaxPaddingSize + rtp_header_len * 2 |
| 820 : kPayloadSizes[kNumPayloadSizes - 1] + kMaxPaddingSize; |
| 821 EXPECT_EQ(expected_return, |
803 rtp_sender_->TimeToSendPadding(999, PacedPacketInfo())); | 822 rtp_sender_->TimeToSendPadding(999, PacedPacketInfo())); |
804 } | 823 } |
805 | 824 |
806 TEST_P(RtpSenderTestWithoutPacer, SendGenericVideo) { | 825 TEST_P(RtpSenderTestWithoutPacer, SendGenericVideo) { |
807 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 826 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
808 const uint8_t payload_type = 127; | 827 const uint8_t payload_type = 127; |
809 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 828 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |
810 0, 1500)); | 829 0, 1500)); |
811 uint8_t payload[] = {47, 11, 32, 93, 89}; | 830 uint8_t payload[] = {47, 11, 32, 93, 89}; |
812 | 831 |
(...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1510 nullptr, nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, | 1529 nullptr, nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, |
1511 nullptr, &retransmission_rate_limiter_, nullptr)); | 1530 nullptr, &retransmission_rate_limiter_, nullptr)); |
1512 rtp_sender_->SetSendPayloadType(kPayload); | 1531 rtp_sender_->SetSendPayloadType(kPayload); |
1513 rtp_sender_->SetSequenceNumber(kSeqNum); | 1532 rtp_sender_->SetSequenceNumber(kSeqNum); |
1514 rtp_sender_->SetTimestampOffset(0); | 1533 rtp_sender_->SetTimestampOffset(0); |
1515 rtp_sender_->SetSSRC(kSsrc); | 1534 rtp_sender_->SetSSRC(kSsrc); |
1516 | 1535 |
1517 const size_t kPaddingSize = 59; | 1536 const size_t kPaddingSize = 59; |
1518 EXPECT_CALL(transport, SendRtp(_, kPaddingSize + kRtpHeaderSize, _)) | 1537 EXPECT_CALL(transport, SendRtp(_, kPaddingSize + kRtpHeaderSize, _)) |
1519 .WillOnce(testing::Return(true)); | 1538 .WillOnce(testing::Return(true)); |
1520 EXPECT_EQ(kPaddingSize, | 1539 |
1521 rtp_sender_->TimeToSendPadding(kPaddingSize, PacedPacketInfo())); | 1540 // If BWE includes overhead, the input value to TimeToSendPadding should also |
| 1541 // include overhead. |
| 1542 size_t budget = GetParam() ? kPaddingSize + kRtpHeaderSize : kPaddingSize; |
| 1543 EXPECT_EQ(budget, rtp_sender_->TimeToSendPadding(budget, PacedPacketInfo())); |
1522 | 1544 |
1523 // Requested padding size is too small, will send a larger one. | 1545 // Requested padding size is too small, will send a larger one. |
1524 const size_t kMinPaddingSize = 50; | 1546 const size_t kMinPaddingSize = 50; |
1525 EXPECT_CALL(transport, SendRtp(_, kMinPaddingSize + kRtpHeaderSize, _)) | 1547 EXPECT_CALL(transport, SendRtp(_, kMinPaddingSize + kRtpHeaderSize, _)) |
1526 .WillOnce(testing::Return(true)); | 1548 .WillOnce(testing::Return(true)); |
1527 EXPECT_EQ( | 1549 |
1528 kMinPaddingSize, | 1550 budget = |
1529 rtp_sender_->TimeToSendPadding(kMinPaddingSize - 5, PacedPacketInfo())); | 1551 GetParam() ? kMinPaddingSize - 5 + kRtpHeaderSize : kMinPaddingSize - 5; |
| 1552 const size_t expected_return = |
| 1553 GetParam() ? kMinPaddingSize + kRtpHeaderSize : kMinPaddingSize; |
| 1554 EXPECT_EQ(expected_return, |
| 1555 rtp_sender_->TimeToSendPadding(budget, PacedPacketInfo())); |
1530 } | 1556 } |
1531 | 1557 |
1532 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, | 1558 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, |
1533 RtpSenderTest, | 1559 RtpSenderTest, |
1534 ::testing::Bool()); | 1560 ::testing::Bool()); |
1535 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, | 1561 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, |
1536 RtpSenderTestWithoutPacer, | 1562 RtpSenderTestWithoutPacer, |
1537 ::testing::Bool()); | 1563 ::testing::Bool()); |
1538 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, | 1564 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, |
1539 RtpSenderVideoTest, | 1565 RtpSenderVideoTest, |
1540 ::testing::Bool()); | 1566 ::testing::Bool()); |
1541 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, | 1567 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, |
1542 RtpSenderAudioTest, | 1568 RtpSenderAudioTest, |
1543 ::testing::Bool()); | 1569 ::testing::Bool()); |
1544 } // namespace webrtc | 1570 } // namespace webrtc |
OLD | NEW |