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 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 uint16_t transport_seq_no; | 457 uint16_t transport_seq_no; |
458 EXPECT_TRUE(packet.GetExtension<TransportSequenceNumber>(&transport_seq_no)); | 458 EXPECT_TRUE(packet.GetExtension<TransportSequenceNumber>(&transport_seq_no)); |
459 EXPECT_EQ(kTransportSequenceNumber, transport_seq_no); | 459 EXPECT_EQ(kTransportSequenceNumber, transport_seq_no); |
460 EXPECT_EQ(transport_.last_packet_id_, transport_seq_no); | 460 EXPECT_EQ(transport_.last_packet_id_, transport_seq_no); |
461 } | 461 } |
462 | 462 |
463 TEST_P(RtpSenderTest, TrafficSmoothingWithExtensions) { | 463 TEST_P(RtpSenderTest, TrafficSmoothingWithExtensions) { |
464 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 464 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
465 kSsrc, kSeqNum, _, _, _)); | 465 kSsrc, kSeqNum, _, _, _)); |
466 EXPECT_CALL(mock_rtc_event_log_, | 466 EXPECT_CALL(mock_rtc_event_log_, |
467 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)); | 467 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)); |
468 | 468 |
469 rtp_sender_->SetStorePacketsStatus(true, 10); | 469 rtp_sender_->SetStorePacketsStatus(true, 10); |
470 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 470 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
471 kRtpExtensionTransmissionTimeOffset, | 471 kRtpExtensionTransmissionTimeOffset, |
472 kTransmissionTimeOffsetExtensionId)); | 472 kTransmissionTimeOffsetExtensionId)); |
473 EXPECT_EQ( | 473 EXPECT_EQ( |
474 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 474 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
475 kAbsoluteSendTimeExtensionId)); | 475 kAbsoluteSendTimeExtensionId)); |
476 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 476 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
477 auto packet = | 477 auto packet = |
(...skipping 24 matching lines...) Expand all Loading... |
502 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); | 502 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); |
503 uint64_t expected_send_time = | 503 uint64_t expected_send_time = |
504 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 504 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
505 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 505 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
506 } | 506 } |
507 | 507 |
508 TEST_P(RtpSenderTest, TrafficSmoothingRetransmits) { | 508 TEST_P(RtpSenderTest, TrafficSmoothingRetransmits) { |
509 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 509 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
510 kSsrc, kSeqNum, _, _, _)); | 510 kSsrc, kSeqNum, _, _, _)); |
511 EXPECT_CALL(mock_rtc_event_log_, | 511 EXPECT_CALL(mock_rtc_event_log_, |
512 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)); | 512 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)); |
513 | 513 |
514 rtp_sender_->SetStorePacketsStatus(true, 10); | 514 rtp_sender_->SetStorePacketsStatus(true, 10); |
515 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 515 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
516 kRtpExtensionTransmissionTimeOffset, | 516 kRtpExtensionTransmissionTimeOffset, |
517 kTransmissionTimeOffsetExtensionId)); | 517 kTransmissionTimeOffsetExtensionId)); |
518 EXPECT_EQ( | 518 EXPECT_EQ( |
519 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 519 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
520 kAbsoluteSendTimeExtensionId)); | 520 kAbsoluteSendTimeExtensionId)); |
521 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 521 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
522 auto packet = | 522 auto packet = |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 556 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
557 } | 557 } |
558 | 558 |
559 // This test sends 1 regular video packet, then 4 padding packets, and then | 559 // This test sends 1 regular video packet, then 4 padding packets, and then |
560 // 1 more regular packet. | 560 // 1 more regular packet. |
561 TEST_P(RtpSenderTest, SendPadding) { | 561 TEST_P(RtpSenderTest, SendPadding) { |
562 // Make all (non-padding) packets go to send queue. | 562 // Make all (non-padding) packets go to send queue. |
563 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 563 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
564 kSsrc, kSeqNum, _, _, _)); | 564 kSsrc, kSeqNum, _, _, _)); |
565 EXPECT_CALL(mock_rtc_event_log_, | 565 EXPECT_CALL(mock_rtc_event_log_, |
566 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)) | 566 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) |
567 .Times(1 + 4 + 1); | 567 .Times(1 + 4 + 1); |
568 | 568 |
569 uint16_t seq_num = kSeqNum; | 569 uint16_t seq_num = kSeqNum; |
570 uint32_t timestamp = kTimestamp; | 570 uint32_t timestamp = kTimestamp; |
571 rtp_sender_->SetStorePacketsStatus(true, 10); | 571 rtp_sender_->SetStorePacketsStatus(true, 10); |
572 size_t rtp_header_len = kRtpHeaderSize; | 572 size_t rtp_header_len = kRtpHeaderSize; |
573 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 573 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
574 kRtpExtensionTransmissionTimeOffset, | 574 kRtpExtensionTransmissionTimeOffset, |
575 kTransmissionTimeOffsetExtensionId)); | 575 kTransmissionTimeOffsetExtensionId)); |
576 rtp_header_len += 4; // 4 bytes extension. | 576 rtp_header_len += 4; // 4 bytes extension. |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
757 rtp_sender_->SetRtxSsrc(1234); | 757 rtp_sender_->SetRtxSsrc(1234); |
758 | 758 |
759 const size_t kNumPayloadSizes = 10; | 759 const size_t kNumPayloadSizes = 10; |
760 const size_t kPayloadSizes[kNumPayloadSizes] = {500, 550, 600, 650, 700, | 760 const size_t kPayloadSizes[kNumPayloadSizes] = {500, 550, 600, 650, 700, |
761 750, 800, 850, 900, 950}; | 761 750, 800, 850, 900, 950}; |
762 // Expect all packets go through the pacer. | 762 // Expect all packets go through the pacer. |
763 EXPECT_CALL(mock_paced_sender_, | 763 EXPECT_CALL(mock_paced_sender_, |
764 InsertPacket(RtpPacketSender::kNormalPriority, kSsrc, _, _, _, _)) | 764 InsertPacket(RtpPacketSender::kNormalPriority, kSsrc, _, _, _, _)) |
765 .Times(kNumPayloadSizes); | 765 .Times(kNumPayloadSizes); |
766 EXPECT_CALL(mock_rtc_event_log_, | 766 EXPECT_CALL(mock_rtc_event_log_, |
767 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)) | 767 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) |
768 .Times(kNumPayloadSizes); | 768 .Times(kNumPayloadSizes); |
769 | 769 |
770 // Send 10 packets of increasing size. | 770 // Send 10 packets of increasing size. |
771 for (size_t i = 0; i < kNumPayloadSizes; ++i) { | 771 for (size_t i = 0; i < kNumPayloadSizes; ++i) { |
772 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 772 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
773 EXPECT_CALL(transport, SendRtp(_, _, _)).WillOnce(testing::Return(true)); | 773 EXPECT_CALL(transport, SendRtp(_, _, _)).WillOnce(testing::Return(true)); |
774 SendPacket(capture_time_ms, kPayloadSizes[i]); | 774 SendPacket(capture_time_ms, kPayloadSizes[i]); |
775 rtp_sender_->TimeToSendPacket(kSsrc, seq_num++, capture_time_ms, false, | 775 rtp_sender_->TimeToSendPacket(kSsrc, seq_num++, capture_time_ms, false, |
776 PacedPacketInfo()); | 776 PacedPacketInfo()); |
777 fake_clock_.AdvanceTimeMilliseconds(33); | 777 fake_clock_.AdvanceTimeMilliseconds(33); |
778 } | 778 } |
779 | 779 |
780 EXPECT_CALL(mock_rtc_event_log_, | 780 EXPECT_CALL(mock_rtc_event_log_, |
781 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)) | 781 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) |
782 .Times(::testing::AtLeast(4)); | 782 .Times(::testing::AtLeast(4)); |
783 | 783 |
784 // The amount of padding to send it too small to send a payload packet. | 784 // The amount of padding to send it too small to send a payload packet. |
785 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) | 785 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) |
786 .WillOnce(testing::Return(true)); | 786 .WillOnce(testing::Return(true)); |
787 EXPECT_EQ(kMaxPaddingSize, | 787 EXPECT_EQ(kMaxPaddingSize, |
788 rtp_sender_->TimeToSendPadding(49, PacedPacketInfo())); | 788 rtp_sender_->TimeToSendPadding(49, PacedPacketInfo())); |
789 | 789 |
790 EXPECT_CALL(transport, | 790 EXPECT_CALL(transport, |
791 SendRtp(_, kPayloadSizes[0] + rtp_header_len + kRtxHeaderSize, _)) | 791 SendRtp(_, kPayloadSizes[0] + rtp_header_len + kRtxHeaderSize, _)) |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
868 | 868 |
869 EXPECT_CALL(mock_paced_sender_, | 869 EXPECT_CALL(mock_paced_sender_, |
870 InsertPacket(RtpPacketSender::kLowPriority, kMediaSsrc, kSeqNum, | 870 InsertPacket(RtpPacketSender::kLowPriority, kMediaSsrc, kSeqNum, |
871 _, _, false)); | 871 _, _, false)); |
872 uint16_t flexfec_seq_num; | 872 uint16_t flexfec_seq_num; |
873 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kLowPriority, | 873 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kLowPriority, |
874 kFlexfecSsrc, _, _, _, false)) | 874 kFlexfecSsrc, _, _, _, false)) |
875 .WillOnce(testing::SaveArg<2>(&flexfec_seq_num)); | 875 .WillOnce(testing::SaveArg<2>(&flexfec_seq_num)); |
876 SendGenericPayload(); | 876 SendGenericPayload(); |
877 EXPECT_CALL(mock_rtc_event_log_, | 877 EXPECT_CALL(mock_rtc_event_log_, |
878 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)) | 878 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) |
879 .Times(2); | 879 .Times(2); |
880 EXPECT_TRUE(rtp_sender_->TimeToSendPacket(kMediaSsrc, kSeqNum, | 880 EXPECT_TRUE(rtp_sender_->TimeToSendPacket(kMediaSsrc, kSeqNum, |
881 fake_clock_.TimeInMilliseconds(), | 881 fake_clock_.TimeInMilliseconds(), |
882 false, PacedPacketInfo())); | 882 false, PacedPacketInfo())); |
883 EXPECT_TRUE(rtp_sender_->TimeToSendPacket(kFlexfecSsrc, flexfec_seq_num, | 883 EXPECT_TRUE(rtp_sender_->TimeToSendPacket(kFlexfecSsrc, flexfec_seq_num, |
884 fake_clock_.TimeInMilliseconds(), | 884 fake_clock_.TimeInMilliseconds(), |
885 false, PacedPacketInfo())); | 885 false, PacedPacketInfo())); |
886 ASSERT_EQ(2, transport_.packets_sent()); | 886 ASSERT_EQ(2, transport_.packets_sent()); |
887 const RtpPacketReceived& media_packet = transport_.sent_packets_[0]; | 887 const RtpPacketReceived& media_packet = transport_.sent_packets_[0]; |
888 EXPECT_EQ(kMediaPayloadType, media_packet.PayloadType()); | 888 EXPECT_EQ(kMediaPayloadType, media_packet.PayloadType()); |
(...skipping 27 matching lines...) Expand all Loading... |
916 rtp_sender_->SetSendPayloadType(kMediaPayloadType); | 916 rtp_sender_->SetSendPayloadType(kMediaPayloadType); |
917 | 917 |
918 // Parameters selected to generate a single FEC packet per media packet. | 918 // Parameters selected to generate a single FEC packet per media packet. |
919 FecProtectionParams params; | 919 FecProtectionParams params; |
920 params.fec_rate = 15; | 920 params.fec_rate = 15; |
921 params.max_fec_frames = 1; | 921 params.max_fec_frames = 1; |
922 params.fec_mask_type = kFecMaskRandom; | 922 params.fec_mask_type = kFecMaskRandom; |
923 rtp_sender_->SetFecParameters(params, params); | 923 rtp_sender_->SetFecParameters(params, params); |
924 | 924 |
925 EXPECT_CALL(mock_rtc_event_log_, | 925 EXPECT_CALL(mock_rtc_event_log_, |
926 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _, _)) | 926 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) |
927 .Times(2); | 927 .Times(2); |
928 SendGenericPayload(); | 928 SendGenericPayload(); |
929 ASSERT_EQ(2, transport_.packets_sent()); | 929 ASSERT_EQ(2, transport_.packets_sent()); |
930 const RtpPacketReceived& media_packet = transport_.sent_packets_[0]; | 930 const RtpPacketReceived& media_packet = transport_.sent_packets_[0]; |
931 EXPECT_EQ(kMediaPayloadType, media_packet.PayloadType()); | 931 EXPECT_EQ(kMediaPayloadType, media_packet.PayloadType()); |
932 EXPECT_EQ(kMediaSsrc, media_packet.Ssrc()); | 932 EXPECT_EQ(kMediaSsrc, media_packet.Ssrc()); |
933 const RtpPacketReceived& flexfec_packet = transport_.sent_packets_[1]; | 933 const RtpPacketReceived& flexfec_packet = transport_.sent_packets_[1]; |
934 EXPECT_EQ(kFlexfecPayloadType, flexfec_packet.PayloadType()); | 934 EXPECT_EQ(kFlexfecPayloadType, flexfec_packet.PayloadType()); |
935 EXPECT_EQ(kFlexfecSsrc, flexfec_packet.Ssrc()); | 935 EXPECT_EQ(kFlexfecSsrc, flexfec_packet.Ssrc()); |
936 } | 936 } |
(...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1541 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, | 1541 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, |
1542 RtpSenderTestWithoutPacer, | 1542 RtpSenderTestWithoutPacer, |
1543 ::testing::Bool()); | 1543 ::testing::Bool()); |
1544 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, | 1544 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, |
1545 RtpSenderVideoTest, | 1545 RtpSenderVideoTest, |
1546 ::testing::Bool()); | 1546 ::testing::Bool()); |
1547 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, | 1547 INSTANTIATE_TEST_CASE_P(WithAndWithoutOverhead, |
1548 RtpSenderAudioTest, | 1548 RtpSenderAudioTest, |
1549 ::testing::Bool()); | 1549 ::testing::Bool()); |
1550 } // namespace webrtc | 1550 } // namespace webrtc |
OLD | NEW |