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 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 uint16_t transport_seq_no; | 419 uint16_t transport_seq_no; |
420 EXPECT_TRUE(packet.GetExtension<TransportSequenceNumber>(&transport_seq_no)); | 420 EXPECT_TRUE(packet.GetExtension<TransportSequenceNumber>(&transport_seq_no)); |
421 EXPECT_EQ(kTransportSequenceNumber, transport_seq_no); | 421 EXPECT_EQ(kTransportSequenceNumber, transport_seq_no); |
422 EXPECT_EQ(transport_.last_packet_id_, transport_seq_no); | 422 EXPECT_EQ(transport_.last_packet_id_, transport_seq_no); |
423 } | 423 } |
424 | 424 |
425 TEST_F(RtpSenderTest, TrafficSmoothingWithExtensions) { | 425 TEST_F(RtpSenderTest, TrafficSmoothingWithExtensions) { |
426 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 426 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
427 kSsrc, kSeqNum, _, _, _)); | 427 kSsrc, kSeqNum, _, _, _)); |
428 EXPECT_CALL(mock_rtc_event_log_, | 428 EXPECT_CALL(mock_rtc_event_log_, |
429 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)); | 429 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)); |
430 | 430 |
431 rtp_sender_->SetStorePacketsStatus(true, 10); | 431 rtp_sender_->SetStorePacketsStatus(true, 10); |
432 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 432 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
433 kRtpExtensionTransmissionTimeOffset, | 433 kRtpExtensionTransmissionTimeOffset, |
434 kTransmissionTimeOffsetExtensionId)); | 434 kTransmissionTimeOffsetExtensionId)); |
435 EXPECT_EQ( | 435 EXPECT_EQ( |
436 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 436 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
437 kAbsoluteSendTimeExtensionId)); | 437 kAbsoluteSendTimeExtensionId)); |
438 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 438 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
439 auto packet = | 439 auto packet = |
(...skipping 24 matching lines...) Expand all Loading... |
464 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); | 464 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); |
465 uint64_t expected_send_time = | 465 uint64_t expected_send_time = |
466 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 466 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
467 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 467 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
468 } | 468 } |
469 | 469 |
470 TEST_F(RtpSenderTest, TrafficSmoothingRetransmits) { | 470 TEST_F(RtpSenderTest, TrafficSmoothingRetransmits) { |
471 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 471 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
472 kSsrc, kSeqNum, _, _, _)); | 472 kSsrc, kSeqNum, _, _, _)); |
473 EXPECT_CALL(mock_rtc_event_log_, | 473 EXPECT_CALL(mock_rtc_event_log_, |
474 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)); | 474 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)); |
475 | 475 |
476 rtp_sender_->SetStorePacketsStatus(true, 10); | 476 rtp_sender_->SetStorePacketsStatus(true, 10); |
477 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 477 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
478 kRtpExtensionTransmissionTimeOffset, | 478 kRtpExtensionTransmissionTimeOffset, |
479 kTransmissionTimeOffsetExtensionId)); | 479 kTransmissionTimeOffsetExtensionId)); |
480 EXPECT_EQ( | 480 EXPECT_EQ( |
481 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 481 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
482 kAbsoluteSendTimeExtensionId)); | 482 kAbsoluteSendTimeExtensionId)); |
483 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 483 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
484 auto packet = | 484 auto packet = |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 518 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
519 } | 519 } |
520 | 520 |
521 // This test sends 1 regular video packet, then 4 padding packets, and then | 521 // This test sends 1 regular video packet, then 4 padding packets, and then |
522 // 1 more regular packet. | 522 // 1 more regular packet. |
523 TEST_F(RtpSenderTest, SendPadding) { | 523 TEST_F(RtpSenderTest, SendPadding) { |
524 // Make all (non-padding) packets go to send queue. | 524 // Make all (non-padding) packets go to send queue. |
525 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 525 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
526 kSsrc, kSeqNum, _, _, _)); | 526 kSsrc, kSeqNum, _, _, _)); |
527 EXPECT_CALL(mock_rtc_event_log_, | 527 EXPECT_CALL(mock_rtc_event_log_, |
528 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) | 528 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)) |
529 .Times(1 + 4 + 1); | 529 .Times(1 + 4 + 1); |
530 | 530 |
531 uint16_t seq_num = kSeqNum; | 531 uint16_t seq_num = kSeqNum; |
532 uint32_t timestamp = kTimestamp; | 532 uint32_t timestamp = kTimestamp; |
533 rtp_sender_->SetStorePacketsStatus(true, 10); | 533 rtp_sender_->SetStorePacketsStatus(true, 10); |
534 size_t rtp_header_len = kRtpHeaderSize; | 534 size_t rtp_header_len = kRtpHeaderSize; |
535 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 535 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
536 kRtpExtensionTransmissionTimeOffset, | 536 kRtpExtensionTransmissionTimeOffset, |
537 kTransmissionTimeOffsetExtensionId)); | 537 kTransmissionTimeOffsetExtensionId)); |
538 rtp_header_len += 4; // 4 bytes extension. | 538 rtp_header_len += 4; // 4 bytes extension. |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
719 rtp_sender_->SetRtxSsrc(1234); | 719 rtp_sender_->SetRtxSsrc(1234); |
720 | 720 |
721 const size_t kNumPayloadSizes = 10; | 721 const size_t kNumPayloadSizes = 10; |
722 const size_t kPayloadSizes[kNumPayloadSizes] = {500, 550, 600, 650, 700, | 722 const size_t kPayloadSizes[kNumPayloadSizes] = {500, 550, 600, 650, 700, |
723 750, 800, 850, 900, 950}; | 723 750, 800, 850, 900, 950}; |
724 // Expect all packets go through the pacer. | 724 // Expect all packets go through the pacer. |
725 EXPECT_CALL(mock_paced_sender_, | 725 EXPECT_CALL(mock_paced_sender_, |
726 InsertPacket(RtpPacketSender::kNormalPriority, kSsrc, _, _, _, _)) | 726 InsertPacket(RtpPacketSender::kNormalPriority, kSsrc, _, _, _, _)) |
727 .Times(kNumPayloadSizes); | 727 .Times(kNumPayloadSizes); |
728 EXPECT_CALL(mock_rtc_event_log_, | 728 EXPECT_CALL(mock_rtc_event_log_, |
729 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) | 729 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)) |
730 .Times(kNumPayloadSizes); | 730 .Times(kNumPayloadSizes); |
731 | 731 |
732 // Send 10 packets of increasing size. | 732 // Send 10 packets of increasing size. |
733 for (size_t i = 0; i < kNumPayloadSizes; ++i) { | 733 for (size_t i = 0; i < kNumPayloadSizes; ++i) { |
734 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 734 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
735 EXPECT_CALL(transport, SendRtp(_, _, _)).WillOnce(testing::Return(true)); | 735 EXPECT_CALL(transport, SendRtp(_, _, _)).WillOnce(testing::Return(true)); |
736 SendPacket(capture_time_ms, kPayloadSizes[i]); | 736 SendPacket(capture_time_ms, kPayloadSizes[i]); |
737 rtp_sender_->TimeToSendPacket(kSsrc, seq_num++, capture_time_ms, false, | 737 rtp_sender_->TimeToSendPacket(kSsrc, seq_num++, capture_time_ms, false, |
738 PacedPacketInfo()); | 738 PacedPacketInfo()); |
739 fake_clock_.AdvanceTimeMilliseconds(33); | 739 fake_clock_.AdvanceTimeMilliseconds(33); |
740 } | 740 } |
741 | 741 |
742 EXPECT_CALL(mock_rtc_event_log_, | 742 EXPECT_CALL(mock_rtc_event_log_, |
743 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) | 743 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)) |
744 .Times(::testing::AtLeast(4)); | 744 .Times(::testing::AtLeast(4)); |
745 | 745 |
746 // 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. |
747 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) | 747 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) |
748 .WillOnce(testing::Return(true)); | 748 .WillOnce(testing::Return(true)); |
749 EXPECT_EQ(kMaxPaddingSize, | 749 EXPECT_EQ(kMaxPaddingSize, |
750 rtp_sender_->TimeToSendPadding(49, PacedPacketInfo())); | 750 rtp_sender_->TimeToSendPadding(49, PacedPacketInfo())); |
751 | 751 |
752 EXPECT_CALL(transport, | 752 EXPECT_CALL(transport, |
753 SendRtp(_, kPayloadSizes[0] + rtp_header_len + kRtxHeaderSize, _)) | 753 SendRtp(_, kPayloadSizes[0] + rtp_header_len + kRtxHeaderSize, _)) |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
828 | 828 |
829 EXPECT_CALL(mock_paced_sender_, | 829 EXPECT_CALL(mock_paced_sender_, |
830 InsertPacket(RtpPacketSender::kLowPriority, kMediaSsrc, kSeqNum, | 830 InsertPacket(RtpPacketSender::kLowPriority, kMediaSsrc, kSeqNum, |
831 _, _, false)); | 831 _, _, false)); |
832 uint16_t flexfec_seq_num; | 832 uint16_t flexfec_seq_num; |
833 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kLowPriority, | 833 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kLowPriority, |
834 kFlexfecSsrc, _, _, _, false)) | 834 kFlexfecSsrc, _, _, _, false)) |
835 .WillOnce(testing::SaveArg<2>(&flexfec_seq_num)); | 835 .WillOnce(testing::SaveArg<2>(&flexfec_seq_num)); |
836 SendGenericPayload(); | 836 SendGenericPayload(); |
837 EXPECT_CALL(mock_rtc_event_log_, | 837 EXPECT_CALL(mock_rtc_event_log_, |
838 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) | 838 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)) |
839 .Times(2); | 839 .Times(2); |
840 EXPECT_TRUE(rtp_sender_->TimeToSendPacket(kMediaSsrc, kSeqNum, | 840 EXPECT_TRUE(rtp_sender_->TimeToSendPacket(kMediaSsrc, kSeqNum, |
841 fake_clock_.TimeInMilliseconds(), | 841 fake_clock_.TimeInMilliseconds(), |
842 false, PacedPacketInfo())); | 842 false, PacedPacketInfo())); |
843 EXPECT_TRUE(rtp_sender_->TimeToSendPacket(kFlexfecSsrc, flexfec_seq_num, | 843 EXPECT_TRUE(rtp_sender_->TimeToSendPacket(kFlexfecSsrc, flexfec_seq_num, |
844 fake_clock_.TimeInMilliseconds(), | 844 fake_clock_.TimeInMilliseconds(), |
845 false, PacedPacketInfo())); | 845 false, PacedPacketInfo())); |
846 ASSERT_EQ(2, transport_.packets_sent()); | 846 ASSERT_EQ(2, transport_.packets_sent()); |
847 const RtpPacketReceived& media_packet = transport_.sent_packets_[0]; | 847 const RtpPacketReceived& media_packet = transport_.sent_packets_[0]; |
848 EXPECT_EQ(kMediaPayloadType, media_packet.PayloadType()); | 848 EXPECT_EQ(kMediaPayloadType, media_packet.PayloadType()); |
(...skipping 25 matching lines...) Expand all Loading... |
874 rtp_sender_->SetSendPayloadType(kMediaPayloadType); | 874 rtp_sender_->SetSendPayloadType(kMediaPayloadType); |
875 | 875 |
876 // Parameters selected to generate a single FEC packet per media packet. | 876 // Parameters selected to generate a single FEC packet per media packet. |
877 FecProtectionParams params; | 877 FecProtectionParams params; |
878 params.fec_rate = 15; | 878 params.fec_rate = 15; |
879 params.max_fec_frames = 1; | 879 params.max_fec_frames = 1; |
880 params.fec_mask_type = kFecMaskRandom; | 880 params.fec_mask_type = kFecMaskRandom; |
881 rtp_sender_->SetFecParameters(params, params); | 881 rtp_sender_->SetFecParameters(params, params); |
882 | 882 |
883 EXPECT_CALL(mock_rtc_event_log_, | 883 EXPECT_CALL(mock_rtc_event_log_, |
884 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) | 884 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)) |
885 .Times(2); | 885 .Times(2); |
886 SendGenericPayload(); | 886 SendGenericPayload(); |
887 ASSERT_EQ(2, transport_.packets_sent()); | 887 ASSERT_EQ(2, transport_.packets_sent()); |
888 const RtpPacketReceived& media_packet = transport_.sent_packets_[0]; | 888 const RtpPacketReceived& media_packet = transport_.sent_packets_[0]; |
889 EXPECT_EQ(kMediaPayloadType, media_packet.PayloadType()); | 889 EXPECT_EQ(kMediaPayloadType, media_packet.PayloadType()); |
890 EXPECT_EQ(kMediaSsrc, media_packet.Ssrc()); | 890 EXPECT_EQ(kMediaSsrc, media_packet.Ssrc()); |
891 const RtpPacketReceived& flexfec_packet = transport_.sent_packets_[1]; | 891 const RtpPacketReceived& flexfec_packet = transport_.sent_packets_[1]; |
892 EXPECT_EQ(kFlexfecPayloadType, flexfec_packet.PayloadType()); | 892 EXPECT_EQ(kFlexfecPayloadType, flexfec_packet.PayloadType()); |
893 EXPECT_EQ(kFlexfecSsrc, flexfec_packet.Ssrc()); | 893 EXPECT_EQ(kFlexfecSsrc, flexfec_packet.Ssrc()); |
894 } | 894 } |
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1518 | 1518 |
1519 // Requested padding size is too small, will send a larger one. | 1519 // Requested padding size is too small, will send a larger one. |
1520 const size_t kMinPaddingSize = 50; | 1520 const size_t kMinPaddingSize = 50; |
1521 EXPECT_CALL(transport, SendRtp(_, kMinPaddingSize + kRtpHeaderSize, _)) | 1521 EXPECT_CALL(transport, SendRtp(_, kMinPaddingSize + kRtpHeaderSize, _)) |
1522 .WillOnce(testing::Return(true)); | 1522 .WillOnce(testing::Return(true)); |
1523 EXPECT_EQ( | 1523 EXPECT_EQ( |
1524 kMinPaddingSize, | 1524 kMinPaddingSize, |
1525 rtp_sender_->TimeToSendPadding(kMinPaddingSize - 5, PacedPacketInfo())); | 1525 rtp_sender_->TimeToSendPadding(kMinPaddingSize - 5, PacedPacketInfo())); |
1526 } | 1526 } |
1527 } // namespace webrtc | 1527 } // namespace webrtc |
OLD | NEW |