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

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

Issue 2495553002: Add overhead per packet observer to the rtp_sender. (Closed)
Patch Set: Rebased. 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
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 transport_(), 143 transport_(),
144 kMarkerBit(true) {} 144 kMarkerBit(true) {}
145 145
146 void SetUp() override { SetUpRtpSender(true); } 146 void SetUp() override { SetUpRtpSender(true); }
147 147
148 void SetUpRtpSender(bool pacer) { 148 void SetUpRtpSender(bool pacer) {
149 rtp_sender_.reset(new RTPSender( 149 rtp_sender_.reset(new RTPSender(
150 false, &fake_clock_, &transport_, pacer ? &mock_paced_sender_ : nullptr, 150 false, &fake_clock_, &transport_, pacer ? &mock_paced_sender_ : nullptr,
151 nullptr, &seq_num_allocator_, nullptr, nullptr, nullptr, nullptr, 151 nullptr, &seq_num_allocator_, nullptr, nullptr, nullptr, nullptr,
152 &mock_rtc_event_log_, &send_packet_observer_, 152 &mock_rtc_event_log_, &send_packet_observer_,
153 &retransmission_rate_limiter_)); 153 &retransmission_rate_limiter_, nullptr));
154 rtp_sender_->SetSendPayloadType(kPayload); 154 rtp_sender_->SetSendPayloadType(kPayload);
155 rtp_sender_->SetSequenceNumber(kSeqNum); 155 rtp_sender_->SetSequenceNumber(kSeqNum);
156 rtp_sender_->SetTimestampOffset(0); 156 rtp_sender_->SetTimestampOffset(0);
157 rtp_sender_->SetSSRC(kSsrc); 157 rtp_sender_->SetSSRC(kSsrc);
158 } 158 }
159 159
160 SimulatedClock fake_clock_; 160 SimulatedClock fake_clock_;
161 testing::NiceMock<MockRtcEventLog> mock_rtc_event_log_; 161 testing::NiceMock<MockRtcEventLog> mock_rtc_event_log_;
162 MockRtpPacketSender mock_paced_sender_; 162 MockRtpPacketSender mock_paced_sender_;
163 testing::StrictMock<MockTransportSequenceNumberAllocator> seq_num_allocator_; 163 testing::StrictMock<MockTransportSequenceNumberAllocator> seq_num_allocator_;
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 437
438 ASSERT_EQ(1u, transport_.sent_packets_.size()); 438 ASSERT_EQ(1u, transport_.sent_packets_.size());
439 // Verify padding packet timestamp. 439 // Verify padding packet timestamp.
440 EXPECT_EQ(kTimestamp, transport_.last_sent_packet().Timestamp()); 440 EXPECT_EQ(kTimestamp, transport_.last_sent_packet().Timestamp());
441 } 441 }
442 442
443 TEST_F(RtpSenderTestWithoutPacer, SendsPacketsWithTransportSequenceNumber) { 443 TEST_F(RtpSenderTestWithoutPacer, SendsPacketsWithTransportSequenceNumber) {
444 rtp_sender_.reset(new RTPSender( 444 rtp_sender_.reset(new RTPSender(
445 false, &fake_clock_, &transport_, nullptr, nullptr, &seq_num_allocator_, 445 false, &fake_clock_, &transport_, nullptr, nullptr, &seq_num_allocator_,
446 &feedback_observer_, nullptr, nullptr, nullptr, &mock_rtc_event_log_, 446 &feedback_observer_, nullptr, nullptr, nullptr, &mock_rtc_event_log_,
447 &send_packet_observer_, &retransmission_rate_limiter_)); 447 &send_packet_observer_, &retransmission_rate_limiter_, nullptr));
448 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( 448 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(
449 kRtpExtensionTransportSequenceNumber, 449 kRtpExtensionTransportSequenceNumber,
450 kTransportSequenceNumberExtensionId)); 450 kTransportSequenceNumberExtensionId));
451 451
452 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) 452 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber())
453 .WillOnce(testing::Return(kTransportSequenceNumber)); 453 .WillOnce(testing::Return(kTransportSequenceNumber));
454 EXPECT_CALL(send_packet_observer_, 454 EXPECT_CALL(send_packet_observer_,
455 OnSendPacket(kTransportSequenceNumber, _, _)) 455 OnSendPacket(kTransportSequenceNumber, _, _))
456 .Times(1); 456 .Times(1);
457 EXPECT_CALL(feedback_observer_, 457 EXPECT_CALL(feedback_observer_,
(...skipping 22 matching lines...) Expand all
480 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) 480 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber())
481 .WillOnce(testing::Return(kTransportSequenceNumber)); 481 .WillOnce(testing::Return(kTransportSequenceNumber));
482 EXPECT_CALL(send_packet_observer_, 482 EXPECT_CALL(send_packet_observer_,
483 OnSendPacket(kTransportSequenceNumber, _, _)) 483 OnSendPacket(kTransportSequenceNumber, _, _))
484 .Times(1); 484 .Times(1);
485 485
486 SendGenericPayload(); 486 SendGenericPayload();
487 } 487 }
488 488
489 TEST_F(RtpSenderTest, SendsPacketsWithTransportSequenceNumber) { 489 TEST_F(RtpSenderTest, SendsPacketsWithTransportSequenceNumber) {
490 rtp_sender_.reset( 490 rtp_sender_.reset(new RTPSender(
491 new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_, 491 false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr,
492 nullptr, &seq_num_allocator_, &feedback_observer_, nullptr, 492 &seq_num_allocator_, &feedback_observer_, nullptr, nullptr, nullptr,
493 nullptr, nullptr, &mock_rtc_event_log_, 493 &mock_rtc_event_log_, &send_packet_observer_,
494 &send_packet_observer_, &retransmission_rate_limiter_)); 494 &retransmission_rate_limiter_, nullptr));
495 rtp_sender_->SetSequenceNumber(kSeqNum); 495 rtp_sender_->SetSequenceNumber(kSeqNum);
496 rtp_sender_->SetSSRC(kSsrc); 496 rtp_sender_->SetSSRC(kSsrc);
497 rtp_sender_->SetStorePacketsStatus(true, 10); 497 rtp_sender_->SetStorePacketsStatus(true, 10);
498 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( 498 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(
499 kRtpExtensionTransportSequenceNumber, 499 kRtpExtensionTransportSequenceNumber,
500 kTransportSequenceNumberExtensionId)); 500 kTransportSequenceNumberExtensionId));
501 501
502 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _)); 502 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _));
503 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) 503 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber())
504 .WillOnce(testing::Return(kTransportSequenceNumber)); 504 .WillOnce(testing::Return(kTransportSequenceNumber));
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, 768 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum,
769 fake_clock_.TimeInMilliseconds(), kIsRetransmit, 769 fake_clock_.TimeInMilliseconds(), kIsRetransmit,
770 PacketInfo::kNotAProbe); 770 PacketInfo::kNotAProbe);
771 EXPECT_EQ(1, transport_.packets_sent()); 771 EXPECT_EQ(1, transport_.packets_sent());
772 } 772 }
773 773
774 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) { 774 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) {
775 rtp_sender_.reset(new RTPSender( 775 rtp_sender_.reset(new RTPSender(
776 false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr, 776 false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr,
777 nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr, 777 nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr,
778 nullptr, nullptr, &send_packet_observer_, &retransmission_rate_limiter_)); 778 nullptr, nullptr, &send_packet_observer_, &retransmission_rate_limiter_,
779 nullptr));
779 rtp_sender_->SetSequenceNumber(kSeqNum); 780 rtp_sender_->SetSequenceNumber(kSeqNum);
780 rtp_sender_->SetSSRC(kSsrc); 781 rtp_sender_->SetSSRC(kSsrc);
781 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( 782 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(
782 kRtpExtensionTransportSequenceNumber, 783 kRtpExtensionTransportSequenceNumber,
783 kTransportSequenceNumberExtensionId)); 784 kTransportSequenceNumberExtensionId));
784 rtp_sender_->SetSequenceNumber(kSeqNum); 785 rtp_sender_->SetSequenceNumber(kSeqNum);
785 rtp_sender_->SetStorePacketsStatus(true, 10); 786 rtp_sender_->SetStorePacketsStatus(true, 10);
786 787
787 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); 788 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0);
788 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _)) 789 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _))
789 .Times(1); 790 .Times(1);
790 791
791 SendGenericPayload(); // Packet passed to pacer. 792 SendGenericPayload(); // Packet passed to pacer.
792 const bool kIsRetransmit = false; 793 const bool kIsRetransmit = false;
793 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, 794 rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum,
794 fake_clock_.TimeInMilliseconds(), kIsRetransmit, 795 fake_clock_.TimeInMilliseconds(), kIsRetransmit,
795 PacketInfo::kNotAProbe); 796 PacketInfo::kNotAProbe);
796 EXPECT_EQ(1, transport_.packets_sent()); 797 EXPECT_EQ(1, transport_.packets_sent());
797 } 798 }
798 799
799 TEST_F(RtpSenderTest, SendRedundantPayloads) { 800 TEST_F(RtpSenderTest, SendRedundantPayloads) {
800 MockTransport transport; 801 MockTransport transport;
801 rtp_sender_.reset(new RTPSender( 802 rtp_sender_.reset(new RTPSender(
802 false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr, 803 false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr,
803 nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr, 804 nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr,
804 &retransmission_rate_limiter_)); 805 &retransmission_rate_limiter_, nullptr));
805 rtp_sender_->SetSequenceNumber(kSeqNum); 806 rtp_sender_->SetSequenceNumber(kSeqNum);
806 rtp_sender_->SetSSRC(kSsrc); 807 rtp_sender_->SetSSRC(kSsrc);
807 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); 808 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload);
808 809
809 uint16_t seq_num = kSeqNum; 810 uint16_t seq_num = kSeqNum;
810 rtp_sender_->SetStorePacketsStatus(true, 10); 811 rtp_sender_->SetStorePacketsStatus(true, 10);
811 int32_t rtp_header_len = kRtpHeaderSize; 812 int32_t rtp_header_len = kRtpHeaderSize;
812 EXPECT_EQ( 813 EXPECT_EQ(
813 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, 814 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime,
814 kAbsoluteSendTimeExtensionId)); 815 kAbsoluteSendTimeExtensionId));
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 TEST_F(RtpSenderTest, SendFlexfecPackets) { 913 TEST_F(RtpSenderTest, SendFlexfecPackets) {
913 constexpr int kMediaPayloadType = 127; 914 constexpr int kMediaPayloadType = 127;
914 constexpr int kFlexfecPayloadType = 118; 915 constexpr int kFlexfecPayloadType = 118;
915 constexpr uint32_t kMediaSsrc = 1234; 916 constexpr uint32_t kMediaSsrc = 1234;
916 constexpr uint32_t kFlexfecSsrc = 5678; 917 constexpr uint32_t kFlexfecSsrc = 5678;
917 const std::vector<RtpExtension> kNoRtpExtensions; 918 const std::vector<RtpExtension> kNoRtpExtensions;
918 FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, 919 FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
919 kNoRtpExtensions, &fake_clock_); 920 kNoRtpExtensions, &fake_clock_);
920 921
921 // Reset |rtp_sender_| to use FlexFEC. 922 // Reset |rtp_sender_| to use FlexFEC.
922 rtp_sender_.reset( 923 rtp_sender_.reset(new RTPSender(
923 new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_, 924 false, &fake_clock_, &transport_, &mock_paced_sender_, &flexfec_sender,
924 &flexfec_sender, &seq_num_allocator_, nullptr, nullptr, 925 &seq_num_allocator_, nullptr, nullptr, nullptr, nullptr,
925 nullptr, nullptr, &mock_rtc_event_log_, 926 &mock_rtc_event_log_, &send_packet_observer_,
926 &send_packet_observer_, &retransmission_rate_limiter_)); 927 &retransmission_rate_limiter_, nullptr));
927 rtp_sender_->SetSSRC(kMediaSsrc); 928 rtp_sender_->SetSSRC(kMediaSsrc);
928 rtp_sender_->SetSequenceNumber(kSeqNum); 929 rtp_sender_->SetSequenceNumber(kSeqNum);
929 rtp_sender_->SetSendPayloadType(kMediaPayloadType); 930 rtp_sender_->SetSendPayloadType(kMediaPayloadType);
930 rtp_sender_->SetStorePacketsStatus(true, 10); 931 rtp_sender_->SetStorePacketsStatus(true, 10);
931 932
932 // Parameters selected to generate a single FEC packet per media packet. 933 // Parameters selected to generate a single FEC packet per media packet.
933 FecProtectionParams params; 934 FecProtectionParams params;
934 params.fec_rate = 15; 935 params.fec_rate = 15;
935 params.max_fec_frames = 1; 936 params.max_fec_frames = 1;
936 params.fec_mask_type = kFecMaskRandom; 937 params.fec_mask_type = kFecMaskRandom;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 constexpr uint32_t kFlexfecSsrc = 5678; 971 constexpr uint32_t kFlexfecSsrc = 5678;
971 const std::vector<RtpExtension> kNoRtpExtensions; 972 const std::vector<RtpExtension> kNoRtpExtensions;
972 FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, 973 FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
973 kNoRtpExtensions, &fake_clock_); 974 kNoRtpExtensions, &fake_clock_);
974 975
975 // Reset |rtp_sender_| to use FlexFEC. 976 // Reset |rtp_sender_| to use FlexFEC.
976 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, 977 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr,
977 &flexfec_sender, &seq_num_allocator_, nullptr, 978 &flexfec_sender, &seq_num_allocator_, nullptr,
978 nullptr, nullptr, nullptr, 979 nullptr, nullptr, nullptr,
979 &mock_rtc_event_log_, &send_packet_observer_, 980 &mock_rtc_event_log_, &send_packet_observer_,
980 &retransmission_rate_limiter_)); 981 &retransmission_rate_limiter_, nullptr));
981 rtp_sender_->SetSSRC(kMediaSsrc); 982 rtp_sender_->SetSSRC(kMediaSsrc);
982 rtp_sender_->SetSequenceNumber(kSeqNum); 983 rtp_sender_->SetSequenceNumber(kSeqNum);
983 rtp_sender_->SetSendPayloadType(kMediaPayloadType); 984 rtp_sender_->SetSendPayloadType(kMediaPayloadType);
984 985
985 // Parameters selected to generate a single FEC packet per media packet. 986 // Parameters selected to generate a single FEC packet per media packet.
986 FecProtectionParams params; 987 FecProtectionParams params;
987 params.fec_rate = 15; 988 params.fec_rate = 15;
988 params.max_fec_frames = 1; 989 params.max_fec_frames = 1;
989 params.fec_mask_type = kFecMaskRandom; 990 params.fec_mask_type = kFecMaskRandom;
990 rtp_sender_->SetFecParameters(params, params); 991 rtp_sender_->SetFecParameters(params, params);
(...skipping 22 matching lines...) Expand all
1013 ++num_calls_; 1014 ++num_calls_;
1014 ssrc_ = ssrc; 1015 ssrc_ = ssrc;
1015 frame_counts_ = frame_counts; 1016 frame_counts_ = frame_counts;
1016 } 1017 }
1017 1018
1018 uint32_t num_calls_; 1019 uint32_t num_calls_;
1019 uint32_t ssrc_; 1020 uint32_t ssrc_;
1020 FrameCounts frame_counts_; 1021 FrameCounts frame_counts_;
1021 } callback; 1022 } callback;
1022 1023
1023 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, 1024 rtp_sender_.reset(
1024 &mock_paced_sender_, nullptr, nullptr, 1025 new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_,
1025 nullptr, nullptr, &callback, nullptr, nullptr, 1026 nullptr, nullptr, nullptr, nullptr, &callback, nullptr,
1026 nullptr, &retransmission_rate_limiter_)); 1027 nullptr, nullptr, &retransmission_rate_limiter_, nullptr));
1027 1028
1028 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; 1029 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC";
1029 const uint8_t payload_type = 127; 1030 const uint8_t payload_type = 127;
1030 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, 1031 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000,
1031 0, 1500)); 1032 0, 1500));
1032 uint8_t payload[] = {47, 11, 32, 93, 89}; 1033 uint8_t payload[] = {47, 11, 32, 93, 89};
1033 rtp_sender_->SetStorePacketsStatus(true, 1); 1034 rtp_sender_->SetStorePacketsStatus(true, 1);
1034 uint32_t ssrc = rtp_sender_->SSRC(); 1035 uint32_t ssrc = rtp_sender_->SSRC();
1035 1036
1036 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) 1037 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _))
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1078 } 1079 }
1079 1080
1080 uint32_t num_calls_; 1081 uint32_t num_calls_;
1081 uint32_t ssrc_; 1082 uint32_t ssrc_;
1082 uint32_t total_bitrate_; 1083 uint32_t total_bitrate_;
1083 uint32_t retransmit_bitrate_; 1084 uint32_t retransmit_bitrate_;
1084 } callback; 1085 } callback;
1085 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, 1086 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr,
1086 nullptr, nullptr, nullptr, &callback, nullptr, 1087 nullptr, nullptr, nullptr, &callback, nullptr,
1087 nullptr, nullptr, nullptr, 1088 nullptr, nullptr, nullptr,
1088 &retransmission_rate_limiter_)); 1089 &retransmission_rate_limiter_, nullptr));
1089 1090
1090 // Simulate kNumPackets sent with kPacketInterval ms intervals, with the 1091 // Simulate kNumPackets sent with kPacketInterval ms intervals, with the
1091 // number of packets selected so that we fill (but don't overflow) the one 1092 // number of packets selected so that we fill (but don't overflow) the one
1092 // second averaging window. 1093 // second averaging window.
1093 const uint32_t kWindowSizeMs = 1000; 1094 const uint32_t kWindowSizeMs = 1000;
1094 const uint32_t kPacketInterval = 20; 1095 const uint32_t kPacketInterval = 20;
1095 const uint32_t kNumPackets = 1096 const uint32_t kNumPackets =
1096 (kWindowSizeMs - kPacketInterval) / kPacketInterval; 1097 (kWindowSizeMs - kPacketInterval) / kPacketInterval;
1097 // Overhead = 12 bytes RTP header + 1 byte generic header. 1098 // Overhead = 12 bytes RTP header + 1 byte generic header.
1098 const uint32_t kPacketOverhead = 13; 1099 const uint32_t kPacketOverhead = 13;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1136 1137
1137 class RtpSenderAudioTest : public RtpSenderTest { 1138 class RtpSenderAudioTest : public RtpSenderTest {
1138 protected: 1139 protected:
1139 RtpSenderAudioTest() {} 1140 RtpSenderAudioTest() {}
1140 1141
1141 void SetUp() override { 1142 void SetUp() override {
1142 payload_ = kAudioPayload; 1143 payload_ = kAudioPayload;
1143 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, 1144 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr,
1144 nullptr, nullptr, nullptr, nullptr, nullptr, 1145 nullptr, nullptr, nullptr, nullptr, nullptr,
1145 nullptr, nullptr, nullptr, 1146 nullptr, nullptr, nullptr,
1146 &retransmission_rate_limiter_)); 1147 &retransmission_rate_limiter_, nullptr));
1147 rtp_sender_->SetSequenceNumber(kSeqNum); 1148 rtp_sender_->SetSequenceNumber(kSeqNum);
1148 } 1149 }
1149 }; 1150 };
1150 1151
1151 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { 1152 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) {
1152 class TestCallback : public StreamDataCountersCallback { 1153 class TestCallback : public StreamDataCountersCallback {
1153 public: 1154 public:
1154 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} 1155 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {}
1155 virtual ~TestCallback() {} 1156 virtual ~TestCallback() {}
1156 1157
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
1487 EXPECT_EQ(kVideoRotation_0, 1488 EXPECT_EQ(kVideoRotation_0,
1488 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 0)); 1489 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 0));
1489 EXPECT_EQ(kVideoRotation_90, 1490 EXPECT_EQ(kVideoRotation_90,
1490 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 1)); 1491 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 1));
1491 EXPECT_EQ(kVideoRotation_180, 1492 EXPECT_EQ(kVideoRotation_180,
1492 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 2)); 1493 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 2));
1493 EXPECT_EQ(kVideoRotation_270, 1494 EXPECT_EQ(kVideoRotation_270,
1494 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 3)); 1495 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 3));
1495 } 1496 }
1496 1497
1498 namespace {
1499 class MockOverheadObserver : public OverheadObserver {
1500 public:
1501 MOCK_METHOD1(OnOverheadChanged, void(size_t overhead_bytes_per_packet));
1502 };
1503 } // namespace
1504
1505 TEST_F(RtpSenderTest, OnOverheadChanged) {
1506 MockOverheadObserver mock_overhead_observer;
1507 rtp_sender_.reset(
1508 new RTPSender(false, &fake_clock_, &transport_, nullptr, nullptr, nullptr,
1509 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
1510 &retransmission_rate_limiter_, &mock_overhead_observer));
1511
1512 // Transport overhead is set to 28B.
1513 EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(28)).Times(1);
1514 rtp_sender_->SetTransportOverhead(28);
1515
1516 // RTP overhead is 12B.
1517 // 28B + 12B = 40B
1518 EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(40)).Times(1);
1519 SendGenericPayload();
1520
1521 rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionTransmissionTimeOffset,
1522 kTransmissionTimeOffsetExtensionId);
1523
1524 // TransmissionTimeOffset extension has a size of 8B.
1525 // 28B + 12B + 8B = 48B
1526 EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(48)).Times(1);
1527 SendGenericPayload();
1528 }
1529
1530 TEST_F(RtpSenderTest, DoesNotUpdateOverheadOnEqualSize) {
1531 MockOverheadObserver mock_overhead_observer;
1532 rtp_sender_.reset(
1533 new RTPSender(false, &fake_clock_, &transport_, nullptr, nullptr, nullptr,
1534 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
1535 &retransmission_rate_limiter_, &mock_overhead_observer));
1536
1537 EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(_)).Times(1);
1538 rtp_sender_->SetTransportOverhead(28);
1539 rtp_sender_->SetTransportOverhead(28);
1540
1541 EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(_)).Times(1);
1542 SendGenericPayload();
1543 SendGenericPayload();
1544 }
1545
1497 } // namespace webrtc 1546 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698