Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc

Issue 2484143002: Wire up FlexfecSender in RTPSender and add unit tests. (Closed)
Patch Set: Rebase. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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));
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 ASSERT_EQ(2, transport_.packets_sent());
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
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
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
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
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_sender_video.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698