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

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: Feedback response 1. 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 kFlexfecPayloadType = 118;
904 constexpr uint32_t kMediaSsrc = 1234;
905 constexpr uint32_t kFlexfecSsrc = 5678;
906 const std::vector<RtpExtension> kNoRtpExtensions;
907 FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
908 kNoRtpExtensions, &fake_clock_);
909
910 // Reset |rtp_sender_| to use FlexFEC.
911 rtp_sender_.reset(
912 new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_,
913 &flexfec_sender, &seq_num_allocator_, nullptr, nullptr,
914 nullptr, nullptr, &mock_rtc_event_log_,
915 &send_packet_observer_, &retransmission_rate_limiter_));
916 rtp_sender_->SetSSRC(kMediaSsrc);
917 rtp_sender_->SetSequenceNumber(kSeqNum);
918 rtp_sender_->SetSendPayloadType(kPayload);
919 rtp_sender_->SetStorePacketsStatus(true, 10);
920
921 // Parameters selected to generate a single FEC packet per media packet.
922 FecProtectionParams params;
923 params.fec_rate = 15;
924 params.max_fec_frames = 1;
925 params.fec_mask_type = kFecMaskRandom;
926 rtp_sender_->SetFecParameters(params, params);
927
928 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kLowPriority,
929 kMediaSsrc, _, _, _, false));
930 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kLowPriority,
931 kFlexfecSsrc, _, _, _, false));
932 SendGenericPayload();
933 // TODO(brandtr): Update this code when the FlexFEC packets are no longer
934 // lost between PacedSender and RTPSender.
935 constexpr int kNumPacketsExpected = 1;
danilchap 2016/11/09 11:41:44 rather than test for incorrect behavior, make test
brandtr 2016/11/09 15:16:30 Good idea. Done.
936 EXPECT_CALL(mock_rtc_event_log_,
937 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _))
938 .Times(kNumPacketsExpected);
939 EXPECT_TRUE(rtp_sender_->TimeToSendPacket(
940 kSeqNum, fake_clock_.TimeInMilliseconds(), false, 0));
941 EXPECT_EQ(kNumPacketsExpected, transport_.packets_sent());
942 }
943
944 TEST_F(RtpSenderTestWithoutPacer, SendFlexfecPackets) {
945 constexpr int kFlexfecPayloadType = 118;
946 constexpr uint32_t kMediaSsrc = 1234;
947 constexpr uint32_t kFlexfecSsrc = 5678;
948 const std::vector<RtpExtension> kNoRtpExtensions;
949 FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
950 kNoRtpExtensions, &fake_clock_);
951
952 // Reset |rtp_sender_| to use FlexFEC.
953 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr,
954 &flexfec_sender, &seq_num_allocator_, nullptr,
955 nullptr, nullptr, nullptr,
956 &mock_rtc_event_log_, &send_packet_observer_,
957 &retransmission_rate_limiter_));
958 rtp_sender_->SetSSRC(kMediaSsrc);
959 rtp_sender_->SetSequenceNumber(kSeqNum);
960 rtp_sender_->SetSendPayloadType(kPayload);
961
962 // Parameters selected to generate a single FEC packet per media packet.
963 FecProtectionParams params;
964 params.fec_rate = 15;
965 params.max_fec_frames = 1;
966 params.fec_mask_type = kFecMaskRandom;
967 rtp_sender_->SetFecParameters(params, params);
968
969 EXPECT_CALL(mock_rtc_event_log_,
970 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _))
971 .Times(2);
972 SendGenericPayload();
973 EXPECT_EQ(2, transport_.packets_sent());
974 }
danilchap 2016/11/09 11:41:44 check that one of those packets is flexfec and ano
brandtr 2016/11/09 15:16:30 Yes, media will always come out before FEC. Adding
975
903 TEST_F(RtpSenderTest, FrameCountCallbacks) { 976 TEST_F(RtpSenderTest, FrameCountCallbacks) {
904 class TestCallback : public FrameCountObserver { 977 class TestCallback : public FrameCountObserver {
905 public: 978 public:
906 TestCallback() : FrameCountObserver(), num_calls_(0), ssrc_(0) {} 979 TestCallback() : FrameCountObserver(), num_calls_(0), ssrc_(0) {}
907 virtual ~TestCallback() {} 980 virtual ~TestCallback() {}
908 981
909 void FrameCountUpdated(const FrameCounts& frame_counts, 982 void FrameCountUpdated(const FrameCounts& frame_counts,
910 uint32_t ssrc) override { 983 uint32_t ssrc) override {
911 ++num_calls_; 984 ++num_calls_;
912 ssrc_ = ssrc; 985 ssrc_ = ssrc;
913 frame_counts_ = frame_counts; 986 frame_counts_ = frame_counts;
914 } 987 }
915 988
916 uint32_t num_calls_; 989 uint32_t num_calls_;
917 uint32_t ssrc_; 990 uint32_t ssrc_;
918 FrameCounts frame_counts_; 991 FrameCounts frame_counts_;
919 } callback; 992 } callback;
920 993
921 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, 994 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_,
922 &mock_paced_sender_, nullptr, nullptr, 995 &mock_paced_sender_, nullptr, nullptr,
923 nullptr, &callback, nullptr, nullptr, nullptr, 996 nullptr, nullptr, &callback, nullptr, nullptr,
924 &retransmission_rate_limiter_)); 997 nullptr, &retransmission_rate_limiter_));
925 998
926 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; 999 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC";
927 const uint8_t payload_type = 127; 1000 const uint8_t payload_type = 127;
928 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, 1001 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000,
929 0, 1500)); 1002 0, 1500));
930 uint8_t payload[] = {47, 11, 32, 93, 89}; 1003 uint8_t payload[] = {47, 11, 32, 93, 89};
931 rtp_sender_->SetStorePacketsStatus(true, 1); 1004 rtp_sender_->SetStorePacketsStatus(true, 1);
932 uint32_t ssrc = rtp_sender_->SSRC(); 1005 uint32_t ssrc = rtp_sender_->SSRC();
933 1006
934 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) 1007 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _))
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
973 ssrc_ = ssrc; 1046 ssrc_ = ssrc;
974 total_bitrate_ = total_bitrate; 1047 total_bitrate_ = total_bitrate;
975 retransmit_bitrate_ = retransmit_bitrate; 1048 retransmit_bitrate_ = retransmit_bitrate;
976 } 1049 }
977 1050
978 uint32_t num_calls_; 1051 uint32_t num_calls_;
979 uint32_t ssrc_; 1052 uint32_t ssrc_;
980 uint32_t total_bitrate_; 1053 uint32_t total_bitrate_;
981 uint32_t retransmit_bitrate_; 1054 uint32_t retransmit_bitrate_;
982 } callback; 1055 } callback;
983 rtp_sender_.reset(new RTPSender( 1056 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr,
984 false, &fake_clock_, &transport_, nullptr, nullptr, nullptr, &callback, 1057 nullptr, nullptr, nullptr, &callback, nullptr,
985 nullptr, nullptr, nullptr, nullptr, &retransmission_rate_limiter_)); 1058 nullptr, nullptr, nullptr,
1059 &retransmission_rate_limiter_));
986 1060
987 // Simulate kNumPackets sent with kPacketInterval ms intervals, with the 1061 // Simulate kNumPackets sent with kPacketInterval ms intervals, with the
988 // number of packets selected so that we fill (but don't overflow) the one 1062 // number of packets selected so that we fill (but don't overflow) the one
989 // second averaging window. 1063 // second averaging window.
990 const uint32_t kWindowSizeMs = 1000; 1064 const uint32_t kWindowSizeMs = 1000;
991 const uint32_t kPacketInterval = 20; 1065 const uint32_t kPacketInterval = 20;
992 const uint32_t kNumPackets = 1066 const uint32_t kNumPackets =
993 (kWindowSizeMs - kPacketInterval) / kPacketInterval; 1067 (kWindowSizeMs - kPacketInterval) / kPacketInterval;
994 // Overhead = 12 bytes RTP header + 1 byte generic header. 1068 // Overhead = 12 bytes RTP header + 1 byte generic header.
995 const uint32_t kPacketOverhead = 13; 1069 const uint32_t kPacketOverhead = 13;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1030 1104
1031 rtp_sender_.reset(); 1105 rtp_sender_.reset();
1032 } 1106 }
1033 1107
1034 class RtpSenderAudioTest : public RtpSenderTest { 1108 class RtpSenderAudioTest : public RtpSenderTest {
1035 protected: 1109 protected:
1036 RtpSenderAudioTest() {} 1110 RtpSenderAudioTest() {}
1037 1111
1038 void SetUp() override { 1112 void SetUp() override {
1039 payload_ = kAudioPayload; 1113 payload_ = kAudioPayload;
1040 rtp_sender_.reset(new RTPSender( 1114 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr,
1041 true, &fake_clock_, &transport_, nullptr, nullptr, nullptr, nullptr, 1115 nullptr, nullptr, nullptr, nullptr, nullptr,
1042 nullptr, nullptr, nullptr, nullptr, &retransmission_rate_limiter_)); 1116 nullptr, nullptr, nullptr,
1117 &retransmission_rate_limiter_));
1043 rtp_sender_->SetSequenceNumber(kSeqNum); 1118 rtp_sender_->SetSequenceNumber(kSeqNum);
1044 } 1119 }
1045 }; 1120 };
1046 1121
1047 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { 1122 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) {
1048 class TestCallback : public StreamDataCountersCallback { 1123 class TestCallback : public StreamDataCountersCallback {
1049 public: 1124 public:
1050 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} 1125 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {}
1051 virtual ~TestCallback() {} 1126 virtual ~TestCallback() {}
1052 1127
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
1384 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 0)); 1459 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 0));
1385 EXPECT_EQ(kVideoRotation_90, 1460 EXPECT_EQ(kVideoRotation_90,
1386 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 1)); 1461 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 1));
1387 EXPECT_EQ(kVideoRotation_180, 1462 EXPECT_EQ(kVideoRotation_180,
1388 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 2)); 1463 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 2));
1389 EXPECT_EQ(kVideoRotation_270, 1464 EXPECT_EQ(kVideoRotation_270,
1390 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 3)); 1465 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 3));
1391 } 1466 }
1392 1467
1393 } // namespace webrtc 1468 } // 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