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 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
140 rtp_sender_(), | 140 rtp_sender_(), |
141 payload_(kPayload), | 141 payload_(kPayload), |
142 transport_(), | 142 transport_(), |
143 kMarkerBit(true) {} | 143 kMarkerBit(true) {} |
144 | 144 |
145 void SetUp() override { SetUpRtpSender(true); } | 145 void SetUp() override { SetUpRtpSender(true); } |
146 | 146 |
147 void SetUpRtpSender(bool pacer) { | 147 void SetUpRtpSender(bool pacer) { |
148 rtp_sender_.reset(new RTPSender( | 148 rtp_sender_.reset(new RTPSender( |
149 false, &fake_clock_, &transport_, pacer ? &mock_paced_sender_ : nullptr, | 149 false, &fake_clock_, &transport_, pacer ? &mock_paced_sender_ : nullptr, |
150 &seq_num_allocator_, nullptr, nullptr, nullptr, nullptr, | 150 nullptr, &seq_num_allocator_, nullptr, nullptr, nullptr, nullptr, |
151 &mock_rtc_event_log_, &send_packet_observer_, | 151 &mock_rtc_event_log_, &send_packet_observer_, |
152 &retransmission_rate_limiter_)); | 152 &retransmission_rate_limiter_)); |
153 rtp_sender_->SetSequenceNumber(kSeqNum); | 153 rtp_sender_->SetSequenceNumber(kSeqNum); |
154 rtp_sender_->SetSendPayloadType(kPayload); | 154 rtp_sender_->SetSendPayloadType(kPayload); |
155 rtp_sender_->SetTimestampOffset(0); | 155 rtp_sender_->SetTimestampOffset(0); |
156 } | 156 } |
157 | 157 |
158 SimulatedClock fake_clock_; | 158 SimulatedClock fake_clock_; |
159 testing::NiceMock<MockRtcEventLog> mock_rtc_event_log_; | 159 testing::NiceMock<MockRtcEventLog> mock_rtc_event_log_; |
160 MockRtpPacketSender mock_paced_sender_; | 160 MockRtpPacketSender mock_paced_sender_; |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
232 public: | 232 public: |
233 void SetUp() override { SetUpRtpSender(false); } | 233 void SetUp() override { SetUpRtpSender(false); } |
234 }; | 234 }; |
235 | 235 |
236 class RtpSenderVideoTest : public RtpSenderTest { | 236 class RtpSenderVideoTest : public RtpSenderTest { |
237 protected: | 237 protected: |
238 void SetUp() override { | 238 void SetUp() override { |
239 // TODO(pbos): Set up to use pacer. | 239 // TODO(pbos): Set up to use pacer. |
240 SetUpRtpSender(false); | 240 SetUpRtpSender(false); |
241 rtp_sender_video_.reset( | 241 rtp_sender_video_.reset( |
242 new RTPSenderVideo(&fake_clock_, rtp_sender_.get())); | 242 new RTPSenderVideo(&fake_clock_, rtp_sender_.get(), nullptr)); |
243 } | 243 } |
244 std::unique_ptr<RTPSenderVideo> rtp_sender_video_; | 244 std::unique_ptr<RTPSenderVideo> rtp_sender_video_; |
245 }; | 245 }; |
246 | 246 |
247 TEST_F(RtpSenderTestWithoutPacer, | 247 TEST_F(RtpSenderTestWithoutPacer, |
248 RegisterRtpTransmissionTimeOffsetHeaderExtension) { | 248 RegisterRtpTransmissionTimeOffsetHeaderExtension) { |
249 EXPECT_EQ(0u, rtp_sender_->RtpHeaderExtensionLength()); | 249 EXPECT_EQ(0u, rtp_sender_->RtpHeaderExtensionLength()); |
250 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 250 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
251 kRtpExtensionTransmissionTimeOffset, | 251 kRtpExtensionTransmissionTimeOffset, |
252 kTransmissionTimeOffsetExtensionId)); | 252 kTransmissionTimeOffsetExtensionId)); |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
433 ASSERT_TRUE(rtp_sender_->AssignSequenceNumber(packet.get())); | 433 ASSERT_TRUE(rtp_sender_->AssignSequenceNumber(packet.get())); |
434 ASSERT_TRUE(rtp_sender_->TimeToSendPadding(kPaddingSize, -1)); | 434 ASSERT_TRUE(rtp_sender_->TimeToSendPadding(kPaddingSize, -1)); |
435 | 435 |
436 ASSERT_EQ(1u, transport_.sent_packets_.size()); | 436 ASSERT_EQ(1u, transport_.sent_packets_.size()); |
437 // Verify padding packet timestamp. | 437 // Verify padding packet timestamp. |
438 EXPECT_EQ(kTimestamp, transport_.last_sent_packet().Timestamp()); | 438 EXPECT_EQ(kTimestamp, transport_.last_sent_packet().Timestamp()); |
439 } | 439 } |
440 | 440 |
441 TEST_F(RtpSenderTestWithoutPacer, SendsPacketsWithTransportSequenceNumber) { | 441 TEST_F(RtpSenderTestWithoutPacer, SendsPacketsWithTransportSequenceNumber) { |
442 rtp_sender_.reset(new RTPSender( | 442 rtp_sender_.reset(new RTPSender( |
443 false, &fake_clock_, &transport_, nullptr, | 443 false, &fake_clock_, &transport_, nullptr, nullptr, &seq_num_allocator_, |
444 &seq_num_allocator_, &feedback_observer_, nullptr, nullptr, nullptr, | 444 &feedback_observer_, nullptr, nullptr, nullptr, &mock_rtc_event_log_, |
445 &mock_rtc_event_log_, &send_packet_observer_, | 445 &send_packet_observer_, &retransmission_rate_limiter_)); |
446 &retransmission_rate_limiter_)); | |
447 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 446 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
448 kRtpExtensionTransportSequenceNumber, | 447 kRtpExtensionTransportSequenceNumber, |
449 kTransportSequenceNumberExtensionId)); | 448 kTransportSequenceNumberExtensionId)); |
450 | 449 |
451 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 450 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
452 .WillOnce(testing::Return(kTransportSequenceNumber)); | 451 .WillOnce(testing::Return(kTransportSequenceNumber)); |
453 EXPECT_CALL(send_packet_observer_, | 452 EXPECT_CALL(send_packet_observer_, |
454 OnSendPacket(kTransportSequenceNumber, _, _)) | 453 OnSendPacket(kTransportSequenceNumber, _, _)) |
455 .Times(1); | 454 .Times(1); |
456 EXPECT_CALL(feedback_observer_, | 455 EXPECT_CALL(feedback_observer_, |
(...skipping 22 matching lines...) Expand all Loading... | |
479 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 478 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
480 .WillOnce(testing::Return(kTransportSequenceNumber)); | 479 .WillOnce(testing::Return(kTransportSequenceNumber)); |
481 EXPECT_CALL(send_packet_observer_, | 480 EXPECT_CALL(send_packet_observer_, |
482 OnSendPacket(kTransportSequenceNumber, _, _)) | 481 OnSendPacket(kTransportSequenceNumber, _, _)) |
483 .Times(1); | 482 .Times(1); |
484 | 483 |
485 SendGenericPayload(); | 484 SendGenericPayload(); |
486 } | 485 } |
487 | 486 |
488 TEST_F(RtpSenderTest, SendsPacketsWithTransportSequenceNumber) { | 487 TEST_F(RtpSenderTest, SendsPacketsWithTransportSequenceNumber) { |
489 rtp_sender_.reset(new RTPSender( | 488 rtp_sender_.reset( |
490 false, &fake_clock_, &transport_, &mock_paced_sender_, | 489 new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_, |
491 &seq_num_allocator_, &feedback_observer_, nullptr, nullptr, nullptr, | 490 nullptr, &seq_num_allocator_, &feedback_observer_, nullptr, |
492 &mock_rtc_event_log_, &send_packet_observer_, | 491 nullptr, nullptr, &mock_rtc_event_log_, |
493 &retransmission_rate_limiter_)); | 492 &send_packet_observer_, &retransmission_rate_limiter_)); |
494 rtp_sender_->SetStorePacketsStatus(true, 10); | 493 rtp_sender_->SetStorePacketsStatus(true, 10); |
495 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 494 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
496 kRtpExtensionTransportSequenceNumber, | 495 kRtpExtensionTransportSequenceNumber, |
497 kTransportSequenceNumberExtensionId)); | 496 kTransportSequenceNumberExtensionId)); |
498 | 497 |
499 uint16_t seq_num = 0; | 498 uint16_t seq_num = 0; |
500 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) | 499 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) |
501 .Times(1).WillRepeatedly(testing::SaveArg<2>(&seq_num)); | 500 .Times(1).WillRepeatedly(testing::SaveArg<2>(&seq_num)); |
502 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 501 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
503 .WillOnce(testing::Return(kTransportSequenceNumber)); | 502 .WillOnce(testing::Return(kTransportSequenceNumber)); |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
761 | 760 |
762 SendGenericPayload(); // Packet passed to pacer. | 761 SendGenericPayload(); // Packet passed to pacer. |
763 const bool kIsRetransmit = true; | 762 const bool kIsRetransmit = true; |
764 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), | 763 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), |
765 kIsRetransmit, PacketInfo::kNotAProbe); | 764 kIsRetransmit, PacketInfo::kNotAProbe); |
766 EXPECT_EQ(1, transport_.packets_sent()); | 765 EXPECT_EQ(1, transport_.packets_sent()); |
767 } | 766 } |
768 | 767 |
769 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) { | 768 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) { |
770 rtp_sender_.reset(new RTPSender( | 769 rtp_sender_.reset(new RTPSender( |
771 false, &fake_clock_, &transport_, &mock_paced_sender_, | 770 false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr, |
772 nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr, | 771 nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr, |
773 nullptr, nullptr, &send_packet_observer_, &retransmission_rate_limiter_)); | 772 nullptr, nullptr, &send_packet_observer_, &retransmission_rate_limiter_)); |
774 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 773 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
775 kRtpExtensionTransportSequenceNumber, | 774 kRtpExtensionTransportSequenceNumber, |
776 kTransportSequenceNumberExtensionId)); | 775 kTransportSequenceNumberExtensionId)); |
777 rtp_sender_->SetSequenceNumber(kSeqNum); | 776 rtp_sender_->SetSequenceNumber(kSeqNum); |
778 rtp_sender_->SetStorePacketsStatus(true, 10); | 777 rtp_sender_->SetStorePacketsStatus(true, 10); |
779 | 778 |
780 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); | 779 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); |
781 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)).Times(1); | 780 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)).Times(1); |
782 | 781 |
783 SendGenericPayload(); // Packet passed to pacer. | 782 SendGenericPayload(); // Packet passed to pacer. |
784 const bool kIsRetransmit = false; | 783 const bool kIsRetransmit = false; |
785 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), | 784 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), |
786 kIsRetransmit, PacketInfo::kNotAProbe); | 785 kIsRetransmit, PacketInfo::kNotAProbe); |
787 EXPECT_EQ(1, transport_.packets_sent()); | 786 EXPECT_EQ(1, transport_.packets_sent()); |
788 } | 787 } |
789 | 788 |
790 TEST_F(RtpSenderTest, SendRedundantPayloads) { | 789 TEST_F(RtpSenderTest, SendRedundantPayloads) { |
791 MockTransport transport; | 790 MockTransport transport; |
792 rtp_sender_.reset(new RTPSender( | 791 rtp_sender_.reset(new RTPSender( |
793 false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr, | 792 false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr, |
794 nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr, | 793 nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr, |
795 &retransmission_rate_limiter_)); | 794 &retransmission_rate_limiter_)); |
796 | 795 |
797 rtp_sender_->SetSequenceNumber(kSeqNum); | 796 rtp_sender_->SetSequenceNumber(kSeqNum); |
798 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); | 797 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); |
799 | 798 |
800 uint16_t seq_num = kSeqNum; | 799 uint16_t seq_num = kSeqNum; |
801 rtp_sender_->SetStorePacketsStatus(true, 10); | 800 rtp_sender_->SetStorePacketsStatus(true, 10); |
802 int32_t rtp_header_len = kRtpHeaderSize; | 801 int32_t rtp_header_len = kRtpHeaderSize; |
803 EXPECT_EQ( | 802 EXPECT_EQ( |
804 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 803 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
893 | 892 |
894 EXPECT_FALSE(generic_header & RtpFormatVideoGeneric::kKeyFrameBit); | 893 EXPECT_FALSE(generic_header & RtpFormatVideoGeneric::kKeyFrameBit); |
895 EXPECT_TRUE(generic_header & RtpFormatVideoGeneric::kFirstPacketBit); | 894 EXPECT_TRUE(generic_header & RtpFormatVideoGeneric::kFirstPacketBit); |
896 | 895 |
897 ASSERT_EQ(sizeof(payload) + sizeof(generic_header), | 896 ASSERT_EQ(sizeof(payload) + sizeof(generic_header), |
898 transport_.last_sent_packet().payload_size()); | 897 transport_.last_sent_packet().payload_size()); |
899 | 898 |
900 EXPECT_EQ(0, memcmp(payload, payload_data, sizeof(payload))); | 899 EXPECT_EQ(0, memcmp(payload, payload_data, sizeof(payload))); |
901 } | 900 } |
902 | 901 |
902 TEST_F(RtpSenderTest, SendFlexfecPackets) { | |
903 constexpr int kMediaPayloadType = 127; | |
904 constexpr int kFlexfecPayloadType = 118; | |
905 constexpr uint32_t kMediaSsrc = 1234; | |
906 constexpr uint32_t kFlexfecSsrc = 5678; | |
907 const std::vector<RtpExtension> kNoRtpExtensions; | |
908 FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, | |
909 kNoRtpExtensions, &fake_clock_); | |
910 | |
911 // Reset |rtp_sender_| to use FlexFEC. | |
912 rtp_sender_.reset( | |
913 new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_, | |
914 &flexfec_sender, &seq_num_allocator_, nullptr, nullptr, | |
915 nullptr, nullptr, &mock_rtc_event_log_, | |
916 &send_packet_observer_, &retransmission_rate_limiter_)); | |
917 rtp_sender_->SetSSRC(kMediaSsrc); | |
918 rtp_sender_->SetSequenceNumber(kSeqNum); | |
919 rtp_sender_->SetSendPayloadType(kMediaPayloadType); | |
920 rtp_sender_->SetStorePacketsStatus(true, 10); | |
921 | |
922 // Parameters selected to generate a single FEC packet per media packet. | |
923 FecProtectionParams params; | |
924 params.fec_rate = 15; | |
925 params.max_fec_frames = 1; | |
926 params.fec_mask_type = kFecMaskRandom; | |
927 rtp_sender_->SetFecParameters(params, params); | |
928 | |
929 uint16_t media_seq_num; | |
930 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kLowPriority, | |
931 kMediaSsrc, _, _, _, false)) | |
932 .WillOnce(testing::SaveArg<2>(&media_seq_num)); | |
danilchap
2016/11/09 16:27:42
shouldn't media_seq_num == kSeqNum? becuase of lin
brandtr
2016/11/10 08:34:41
Yep, that is the case. But in the followup CL, whe
| |
933 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kLowPriority, | |
934 kFlexfecSsrc, _, _, _, false)); | |
935 SendGenericPayload(); | |
936 // TODO(brandtr): Make these tests stricter when the FlexFEC packets are no | |
937 // longer lost between PacedSender and RTPSender. | |
938 EXPECT_CALL(mock_rtc_event_log_, | |
939 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) | |
940 .Times(testing::AtLeast(1)); | |
941 EXPECT_TRUE(rtp_sender_->TimeToSendPacket( | |
942 media_seq_num, fake_clock_.TimeInMilliseconds(), false, 0)); | |
943 EXPECT_LE(1, transport_.packets_sent()); | |
944 const RtpPacketReceived& media_packet = transport_.sent_packets_[0]; | |
945 EXPECT_EQ(kMediaPayloadType, media_packet.PayloadType()); | |
946 EXPECT_EQ(media_seq_num, media_packet.SequenceNumber()); | |
947 EXPECT_EQ(kMediaSsrc, media_packet.Ssrc()); | |
948 } | |
949 | |
950 TEST_F(RtpSenderTestWithoutPacer, SendFlexfecPackets) { | |
951 constexpr int kMediaPayloadType = 127; | |
952 constexpr int kFlexfecPayloadType = 118; | |
953 constexpr uint32_t kMediaSsrc = 1234; | |
954 constexpr uint32_t kFlexfecSsrc = 5678; | |
955 const std::vector<RtpExtension> kNoRtpExtensions; | |
956 FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, | |
957 kNoRtpExtensions, &fake_clock_); | |
958 | |
959 // Reset |rtp_sender_| to use FlexFEC. | |
960 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | |
961 &flexfec_sender, &seq_num_allocator_, nullptr, | |
962 nullptr, nullptr, nullptr, | |
963 &mock_rtc_event_log_, &send_packet_observer_, | |
964 &retransmission_rate_limiter_)); | |
965 rtp_sender_->SetSSRC(kMediaSsrc); | |
966 rtp_sender_->SetSequenceNumber(kSeqNum); | |
967 rtp_sender_->SetSendPayloadType(kMediaPayloadType); | |
968 | |
969 // Parameters selected to generate a single FEC packet per media packet. | |
970 FecProtectionParams params; | |
971 params.fec_rate = 15; | |
972 params.max_fec_frames = 1; | |
973 params.fec_mask_type = kFecMaskRandom; | |
974 rtp_sender_->SetFecParameters(params, params); | |
975 | |
976 EXPECT_CALL(mock_rtc_event_log_, | |
977 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) | |
978 .Times(2); | |
979 SendGenericPayload(); | |
980 EXPECT_EQ(2, transport_.packets_sent()); | |
danilchap
2016/11/09 16:27:42
EXPECT_EQ -> ASSERT_EQ (to avoid crash if test wil
brandtr
2016/11/10 08:34:41
Done.
| |
981 const RtpPacketReceived& media_packet = transport_.sent_packets_[0]; | |
982 EXPECT_EQ(kMediaPayloadType, media_packet.PayloadType()); | |
983 EXPECT_EQ(kMediaSsrc, media_packet.Ssrc()); | |
984 const RtpPacketReceived& flexfec_packet = transport_.sent_packets_[1]; | |
985 EXPECT_EQ(kFlexfecPayloadType, flexfec_packet.PayloadType()); | |
986 EXPECT_EQ(kFlexfecSsrc, flexfec_packet.Ssrc()); | |
987 } | |
988 | |
903 TEST_F(RtpSenderTest, FrameCountCallbacks) { | 989 TEST_F(RtpSenderTest, FrameCountCallbacks) { |
904 class TestCallback : public FrameCountObserver { | 990 class TestCallback : public FrameCountObserver { |
905 public: | 991 public: |
906 TestCallback() : FrameCountObserver(), num_calls_(0), ssrc_(0) {} | 992 TestCallback() : FrameCountObserver(), num_calls_(0), ssrc_(0) {} |
907 virtual ~TestCallback() {} | 993 virtual ~TestCallback() {} |
908 | 994 |
909 void FrameCountUpdated(const FrameCounts& frame_counts, | 995 void FrameCountUpdated(const FrameCounts& frame_counts, |
910 uint32_t ssrc) override { | 996 uint32_t ssrc) override { |
911 ++num_calls_; | 997 ++num_calls_; |
912 ssrc_ = ssrc; | 998 ssrc_ = ssrc; |
913 frame_counts_ = frame_counts; | 999 frame_counts_ = frame_counts; |
914 } | 1000 } |
915 | 1001 |
916 uint32_t num_calls_; | 1002 uint32_t num_calls_; |
917 uint32_t ssrc_; | 1003 uint32_t ssrc_; |
918 FrameCounts frame_counts_; | 1004 FrameCounts frame_counts_; |
919 } callback; | 1005 } callback; |
920 | 1006 |
921 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, | 1007 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, |
922 &mock_paced_sender_, nullptr, nullptr, | 1008 &mock_paced_sender_, nullptr, nullptr, |
923 nullptr, &callback, nullptr, nullptr, nullptr, | 1009 nullptr, nullptr, &callback, nullptr, nullptr, |
924 &retransmission_rate_limiter_)); | 1010 nullptr, &retransmission_rate_limiter_)); |
925 | 1011 |
926 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 1012 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
927 const uint8_t payload_type = 127; | 1013 const uint8_t payload_type = 127; |
928 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 1014 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |
929 0, 1500)); | 1015 0, 1500)); |
930 uint8_t payload[] = {47, 11, 32, 93, 89}; | 1016 uint8_t payload[] = {47, 11, 32, 93, 89}; |
931 rtp_sender_->SetStorePacketsStatus(true, 1); | 1017 rtp_sender_->SetStorePacketsStatus(true, 1); |
932 uint32_t ssrc = rtp_sender_->SSRC(); | 1018 uint32_t ssrc = rtp_sender_->SSRC(); |
933 | 1019 |
934 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) | 1020 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
973 ssrc_ = ssrc; | 1059 ssrc_ = ssrc; |
974 total_bitrate_ = total_bitrate; | 1060 total_bitrate_ = total_bitrate; |
975 retransmit_bitrate_ = retransmit_bitrate; | 1061 retransmit_bitrate_ = retransmit_bitrate; |
976 } | 1062 } |
977 | 1063 |
978 uint32_t num_calls_; | 1064 uint32_t num_calls_; |
979 uint32_t ssrc_; | 1065 uint32_t ssrc_; |
980 uint32_t total_bitrate_; | 1066 uint32_t total_bitrate_; |
981 uint32_t retransmit_bitrate_; | 1067 uint32_t retransmit_bitrate_; |
982 } callback; | 1068 } callback; |
983 rtp_sender_.reset(new RTPSender( | 1069 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |
984 false, &fake_clock_, &transport_, nullptr, nullptr, nullptr, &callback, | 1070 nullptr, nullptr, nullptr, &callback, nullptr, |
985 nullptr, nullptr, nullptr, nullptr, &retransmission_rate_limiter_)); | 1071 nullptr, nullptr, nullptr, |
1072 &retransmission_rate_limiter_)); | |
986 | 1073 |
987 // Simulate kNumPackets sent with kPacketInterval ms intervals, with the | 1074 // Simulate kNumPackets sent with kPacketInterval ms intervals, with the |
988 // number of packets selected so that we fill (but don't overflow) the one | 1075 // number of packets selected so that we fill (but don't overflow) the one |
989 // second averaging window. | 1076 // second averaging window. |
990 const uint32_t kWindowSizeMs = 1000; | 1077 const uint32_t kWindowSizeMs = 1000; |
991 const uint32_t kPacketInterval = 20; | 1078 const uint32_t kPacketInterval = 20; |
992 const uint32_t kNumPackets = | 1079 const uint32_t kNumPackets = |
993 (kWindowSizeMs - kPacketInterval) / kPacketInterval; | 1080 (kWindowSizeMs - kPacketInterval) / kPacketInterval; |
994 // Overhead = 12 bytes RTP header + 1 byte generic header. | 1081 // Overhead = 12 bytes RTP header + 1 byte generic header. |
995 const uint32_t kPacketOverhead = 13; | 1082 const uint32_t kPacketOverhead = 13; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1030 | 1117 |
1031 rtp_sender_.reset(); | 1118 rtp_sender_.reset(); |
1032 } | 1119 } |
1033 | 1120 |
1034 class RtpSenderAudioTest : public RtpSenderTest { | 1121 class RtpSenderAudioTest : public RtpSenderTest { |
1035 protected: | 1122 protected: |
1036 RtpSenderAudioTest() {} | 1123 RtpSenderAudioTest() {} |
1037 | 1124 |
1038 void SetUp() override { | 1125 void SetUp() override { |
1039 payload_ = kAudioPayload; | 1126 payload_ = kAudioPayload; |
1040 rtp_sender_.reset(new RTPSender( | 1127 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, |
1041 true, &fake_clock_, &transport_, nullptr, nullptr, nullptr, nullptr, | 1128 nullptr, nullptr, nullptr, nullptr, nullptr, |
1042 nullptr, nullptr, nullptr, nullptr, &retransmission_rate_limiter_)); | 1129 nullptr, nullptr, nullptr, |
1130 &retransmission_rate_limiter_)); | |
1043 rtp_sender_->SetSequenceNumber(kSeqNum); | 1131 rtp_sender_->SetSequenceNumber(kSeqNum); |
1044 } | 1132 } |
1045 }; | 1133 }; |
1046 | 1134 |
1047 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { | 1135 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { |
1048 class TestCallback : public StreamDataCountersCallback { | 1136 class TestCallback : public StreamDataCountersCallback { |
1049 public: | 1137 public: |
1050 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} | 1138 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} |
1051 virtual ~TestCallback() {} | 1139 virtual ~TestCallback() {} |
1052 | 1140 |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1384 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 0)); | 1472 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 0)); |
1385 EXPECT_EQ(kVideoRotation_90, | 1473 EXPECT_EQ(kVideoRotation_90, |
1386 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 1)); | 1474 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 1)); |
1387 EXPECT_EQ(kVideoRotation_180, | 1475 EXPECT_EQ(kVideoRotation_180, |
1388 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 2)); | 1476 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 2)); |
1389 EXPECT_EQ(kVideoRotation_270, | 1477 EXPECT_EQ(kVideoRotation_270, |
1390 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 3)); | 1478 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 3)); |
1391 } | 1479 } |
1392 | 1480 |
1393 } // namespace webrtc | 1481 } // namespace webrtc |
OLD | NEW |