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

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: 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 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 nullptr, &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_, nullptr));
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_;
161 testing::StrictMock<MockTransportSequenceNumberAllocator> seq_num_allocator_; 161 testing::StrictMock<MockTransportSequenceNumberAllocator> seq_num_allocator_;
162 testing::StrictMock<MockSendPacketObserver> send_packet_observer_; 162 testing::StrictMock<MockSendPacketObserver> send_packet_observer_;
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
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, nullptr, &seq_num_allocator_, 443 false, &fake_clock_, &transport_, nullptr, nullptr, &seq_num_allocator_,
444 &feedback_observer_, nullptr, nullptr, nullptr, &mock_rtc_event_log_, 444 &feedback_observer_, nullptr, nullptr, nullptr, &mock_rtc_event_log_,
445 &send_packet_observer_, &retransmission_rate_limiter_)); 445 &send_packet_observer_, &retransmission_rate_limiter_, nullptr));
446 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( 446 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(
447 kRtpExtensionTransportSequenceNumber, 447 kRtpExtensionTransportSequenceNumber,
448 kTransportSequenceNumberExtensionId)); 448 kTransportSequenceNumberExtensionId));
449 449
450 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) 450 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber())
451 .WillOnce(testing::Return(kTransportSequenceNumber)); 451 .WillOnce(testing::Return(kTransportSequenceNumber));
452 EXPECT_CALL(send_packet_observer_, 452 EXPECT_CALL(send_packet_observer_,
453 OnSendPacket(kTransportSequenceNumber, _, _)) 453 OnSendPacket(kTransportSequenceNumber, _, _))
454 .Times(1); 454 .Times(1);
455 EXPECT_CALL(feedback_observer_, 455 EXPECT_CALL(feedback_observer_,
(...skipping 22 matching lines...) Expand all
478 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) 478 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber())
479 .WillOnce(testing::Return(kTransportSequenceNumber)); 479 .WillOnce(testing::Return(kTransportSequenceNumber));
480 EXPECT_CALL(send_packet_observer_, 480 EXPECT_CALL(send_packet_observer_,
481 OnSendPacket(kTransportSequenceNumber, _, _)) 481 OnSendPacket(kTransportSequenceNumber, _, _))
482 .Times(1); 482 .Times(1);
483 483
484 SendGenericPayload(); 484 SendGenericPayload();
485 } 485 }
486 486
487 TEST_F(RtpSenderTest, SendsPacketsWithTransportSequenceNumber) { 487 TEST_F(RtpSenderTest, SendsPacketsWithTransportSequenceNumber) {
488 rtp_sender_.reset( 488 rtp_sender_.reset(new RTPSender(
489 new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_, 489 false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr,
490 nullptr, &seq_num_allocator_, &feedback_observer_, nullptr, 490 &seq_num_allocator_, &feedback_observer_, nullptr, nullptr, nullptr,
491 nullptr, nullptr, &mock_rtc_event_log_, 491 &mock_rtc_event_log_, &send_packet_observer_,
492 &send_packet_observer_, &retransmission_rate_limiter_)); 492 &retransmission_rate_limiter_, nullptr));
493 rtp_sender_->SetStorePacketsStatus(true, 10); 493 rtp_sender_->SetStorePacketsStatus(true, 10);
494 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( 494 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(
495 kRtpExtensionTransportSequenceNumber, 495 kRtpExtensionTransportSequenceNumber,
496 kTransportSequenceNumberExtensionId)); 496 kTransportSequenceNumberExtensionId));
497 497
498 uint16_t seq_num = 0; 498 uint16_t seq_num = 0;
499 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) 499 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _))
500 .Times(1).WillRepeatedly(testing::SaveArg<2>(&seq_num)); 500 .Times(1).WillRepeatedly(testing::SaveArg<2>(&seq_num));
501 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) 501 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber())
502 .WillOnce(testing::Return(kTransportSequenceNumber)); 502 .WillOnce(testing::Return(kTransportSequenceNumber));
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 const bool kIsRetransmit = true; 762 const bool kIsRetransmit = true;
763 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), 763 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(),
764 kIsRetransmit, PacketInfo::kNotAProbe); 764 kIsRetransmit, PacketInfo::kNotAProbe);
765 EXPECT_EQ(1, transport_.packets_sent()); 765 EXPECT_EQ(1, transport_.packets_sent());
766 } 766 }
767 767
768 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) { 768 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) {
769 rtp_sender_.reset(new RTPSender( 769 rtp_sender_.reset(new RTPSender(
770 false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr, 770 false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr,
771 nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr, 771 nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr,
772 nullptr, nullptr, &send_packet_observer_, &retransmission_rate_limiter_)); 772 nullptr, nullptr, &send_packet_observer_, &retransmission_rate_limiter_,
773 nullptr));
773 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( 774 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(
774 kRtpExtensionTransportSequenceNumber, 775 kRtpExtensionTransportSequenceNumber,
775 kTransportSequenceNumberExtensionId)); 776 kTransportSequenceNumberExtensionId));
776 rtp_sender_->SetSequenceNumber(kSeqNum); 777 rtp_sender_->SetSequenceNumber(kSeqNum);
777 rtp_sender_->SetStorePacketsStatus(true, 10); 778 rtp_sender_->SetStorePacketsStatus(true, 10);
778 779
779 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); 780 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0);
780 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)).Times(1); 781 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)).Times(1);
781 782
782 SendGenericPayload(); // Packet passed to pacer. 783 SendGenericPayload(); // Packet passed to pacer.
783 const bool kIsRetransmit = false; 784 const bool kIsRetransmit = false;
784 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), 785 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(),
785 kIsRetransmit, PacketInfo::kNotAProbe); 786 kIsRetransmit, PacketInfo::kNotAProbe);
786 EXPECT_EQ(1, transport_.packets_sent()); 787 EXPECT_EQ(1, transport_.packets_sent());
787 } 788 }
788 789
789 TEST_F(RtpSenderTest, SendRedundantPayloads) { 790 TEST_F(RtpSenderTest, SendRedundantPayloads) {
790 MockTransport transport; 791 MockTransport transport;
791 rtp_sender_.reset(new RTPSender( 792 rtp_sender_.reset(new RTPSender(
792 false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr, 793 false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr,
793 nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr, 794 nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr,
794 &retransmission_rate_limiter_)); 795 &retransmission_rate_limiter_, nullptr));
795 796
796 rtp_sender_->SetSequenceNumber(kSeqNum); 797 rtp_sender_->SetSequenceNumber(kSeqNum);
797 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); 798 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload);
798 799
799 uint16_t seq_num = kSeqNum; 800 uint16_t seq_num = kSeqNum;
800 rtp_sender_->SetStorePacketsStatus(true, 10); 801 rtp_sender_->SetStorePacketsStatus(true, 10);
801 int32_t rtp_header_len = kRtpHeaderSize; 802 int32_t rtp_header_len = kRtpHeaderSize;
802 EXPECT_EQ( 803 EXPECT_EQ(
803 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, 804 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime,
804 kAbsoluteSendTimeExtensionId)); 805 kAbsoluteSendTimeExtensionId));
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 TEST_F(RtpSenderTest, SendFlexfecPackets) { 903 TEST_F(RtpSenderTest, SendFlexfecPackets) {
903 constexpr int kMediaPayloadType = 127; 904 constexpr int kMediaPayloadType = 127;
904 constexpr int kFlexfecPayloadType = 118; 905 constexpr int kFlexfecPayloadType = 118;
905 constexpr uint32_t kMediaSsrc = 1234; 906 constexpr uint32_t kMediaSsrc = 1234;
906 constexpr uint32_t kFlexfecSsrc = 5678; 907 constexpr uint32_t kFlexfecSsrc = 5678;
907 const std::vector<RtpExtension> kNoRtpExtensions; 908 const std::vector<RtpExtension> kNoRtpExtensions;
908 FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, 909 FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
909 kNoRtpExtensions, &fake_clock_); 910 kNoRtpExtensions, &fake_clock_);
910 911
911 // Reset |rtp_sender_| to use FlexFEC. 912 // Reset |rtp_sender_| to use FlexFEC.
912 rtp_sender_.reset( 913 rtp_sender_.reset(new RTPSender(
913 new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_, 914 false, &fake_clock_, &transport_, &mock_paced_sender_, &flexfec_sender,
914 &flexfec_sender, &seq_num_allocator_, nullptr, nullptr, 915 &seq_num_allocator_, nullptr, nullptr, nullptr, nullptr,
915 nullptr, nullptr, &mock_rtc_event_log_, 916 &mock_rtc_event_log_, &send_packet_observer_,
916 &send_packet_observer_, &retransmission_rate_limiter_)); 917 &retransmission_rate_limiter_, nullptr));
917 rtp_sender_->SetSSRC(kMediaSsrc); 918 rtp_sender_->SetSSRC(kMediaSsrc);
918 rtp_sender_->SetSequenceNumber(kSeqNum); 919 rtp_sender_->SetSequenceNumber(kSeqNum);
919 rtp_sender_->SetSendPayloadType(kMediaPayloadType); 920 rtp_sender_->SetSendPayloadType(kMediaPayloadType);
920 rtp_sender_->SetStorePacketsStatus(true, 10); 921 rtp_sender_->SetStorePacketsStatus(true, 10);
921 922
922 // Parameters selected to generate a single FEC packet per media packet. 923 // Parameters selected to generate a single FEC packet per media packet.
923 FecProtectionParams params; 924 FecProtectionParams params;
924 params.fec_rate = 15; 925 params.fec_rate = 15;
925 params.max_fec_frames = 1; 926 params.max_fec_frames = 1;
926 params.fec_mask_type = kFecMaskRandom; 927 params.fec_mask_type = kFecMaskRandom;
(...skipping 27 matching lines...) Expand all
954 constexpr uint32_t kFlexfecSsrc = 5678; 955 constexpr uint32_t kFlexfecSsrc = 5678;
955 const std::vector<RtpExtension> kNoRtpExtensions; 956 const std::vector<RtpExtension> kNoRtpExtensions;
956 FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, 957 FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
957 kNoRtpExtensions, &fake_clock_); 958 kNoRtpExtensions, &fake_clock_);
958 959
959 // Reset |rtp_sender_| to use FlexFEC. 960 // Reset |rtp_sender_| to use FlexFEC.
960 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, 961 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr,
961 &flexfec_sender, &seq_num_allocator_, nullptr, 962 &flexfec_sender, &seq_num_allocator_, nullptr,
962 nullptr, nullptr, nullptr, 963 nullptr, nullptr, nullptr,
963 &mock_rtc_event_log_, &send_packet_observer_, 964 &mock_rtc_event_log_, &send_packet_observer_,
964 &retransmission_rate_limiter_)); 965 &retransmission_rate_limiter_, nullptr));
965 rtp_sender_->SetSSRC(kMediaSsrc); 966 rtp_sender_->SetSSRC(kMediaSsrc);
966 rtp_sender_->SetSequenceNumber(kSeqNum); 967 rtp_sender_->SetSequenceNumber(kSeqNum);
967 rtp_sender_->SetSendPayloadType(kMediaPayloadType); 968 rtp_sender_->SetSendPayloadType(kMediaPayloadType);
968 969
969 // Parameters selected to generate a single FEC packet per media packet. 970 // Parameters selected to generate a single FEC packet per media packet.
970 FecProtectionParams params; 971 FecProtectionParams params;
971 params.fec_rate = 15; 972 params.fec_rate = 15;
972 params.max_fec_frames = 1; 973 params.max_fec_frames = 1;
973 params.fec_mask_type = kFecMaskRandom; 974 params.fec_mask_type = kFecMaskRandom;
974 rtp_sender_->SetFecParameters(params, params); 975 rtp_sender_->SetFecParameters(params, params);
(...skipping 22 matching lines...) Expand all
997 ++num_calls_; 998 ++num_calls_;
998 ssrc_ = ssrc; 999 ssrc_ = ssrc;
999 frame_counts_ = frame_counts; 1000 frame_counts_ = frame_counts;
1000 } 1001 }
1001 1002
1002 uint32_t num_calls_; 1003 uint32_t num_calls_;
1003 uint32_t ssrc_; 1004 uint32_t ssrc_;
1004 FrameCounts frame_counts_; 1005 FrameCounts frame_counts_;
1005 } callback; 1006 } callback;
1006 1007
1007 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, 1008 rtp_sender_.reset(
1008 &mock_paced_sender_, nullptr, nullptr, 1009 new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_,
1009 nullptr, nullptr, &callback, nullptr, nullptr, 1010 nullptr, nullptr, nullptr, nullptr, &callback, nullptr,
1010 nullptr, &retransmission_rate_limiter_)); 1011 nullptr, nullptr, &retransmission_rate_limiter_, nullptr));
1011 1012
1012 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; 1013 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC";
1013 const uint8_t payload_type = 127; 1014 const uint8_t payload_type = 127;
1014 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, 1015 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000,
1015 0, 1500)); 1016 0, 1500));
1016 uint8_t payload[] = {47, 11, 32, 93, 89}; 1017 uint8_t payload[] = {47, 11, 32, 93, 89};
1017 rtp_sender_->SetStorePacketsStatus(true, 1); 1018 rtp_sender_->SetStorePacketsStatus(true, 1);
1018 uint32_t ssrc = rtp_sender_->SSRC(); 1019 uint32_t ssrc = rtp_sender_->SSRC();
1019 1020
1020 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) 1021 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _))
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1062 } 1063 }
1063 1064
1064 uint32_t num_calls_; 1065 uint32_t num_calls_;
1065 uint32_t ssrc_; 1066 uint32_t ssrc_;
1066 uint32_t total_bitrate_; 1067 uint32_t total_bitrate_;
1067 uint32_t retransmit_bitrate_; 1068 uint32_t retransmit_bitrate_;
1068 } callback; 1069 } callback;
1069 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, 1070 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr,
1070 nullptr, nullptr, nullptr, &callback, nullptr, 1071 nullptr, nullptr, nullptr, &callback, nullptr,
1071 nullptr, nullptr, nullptr, 1072 nullptr, nullptr, nullptr,
1072 &retransmission_rate_limiter_)); 1073 &retransmission_rate_limiter_, nullptr));
1073 1074
1074 // Simulate kNumPackets sent with kPacketInterval ms intervals, with the 1075 // Simulate kNumPackets sent with kPacketInterval ms intervals, with the
1075 // number of packets selected so that we fill (but don't overflow) the one 1076 // number of packets selected so that we fill (but don't overflow) the one
1076 // second averaging window. 1077 // second averaging window.
1077 const uint32_t kWindowSizeMs = 1000; 1078 const uint32_t kWindowSizeMs = 1000;
1078 const uint32_t kPacketInterval = 20; 1079 const uint32_t kPacketInterval = 20;
1079 const uint32_t kNumPackets = 1080 const uint32_t kNumPackets =
1080 (kWindowSizeMs - kPacketInterval) / kPacketInterval; 1081 (kWindowSizeMs - kPacketInterval) / kPacketInterval;
1081 // Overhead = 12 bytes RTP header + 1 byte generic header. 1082 // Overhead = 12 bytes RTP header + 1 byte generic header.
1082 const uint32_t kPacketOverhead = 13; 1083 const uint32_t kPacketOverhead = 13;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 1121
1121 class RtpSenderAudioTest : public RtpSenderTest { 1122 class RtpSenderAudioTest : public RtpSenderTest {
1122 protected: 1123 protected:
1123 RtpSenderAudioTest() {} 1124 RtpSenderAudioTest() {}
1124 1125
1125 void SetUp() override { 1126 void SetUp() override {
1126 payload_ = kAudioPayload; 1127 payload_ = kAudioPayload;
1127 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, 1128 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr,
1128 nullptr, nullptr, nullptr, nullptr, nullptr, 1129 nullptr, nullptr, nullptr, nullptr, nullptr,
1129 nullptr, nullptr, nullptr, 1130 nullptr, nullptr, nullptr,
1130 &retransmission_rate_limiter_)); 1131 &retransmission_rate_limiter_, nullptr));
1131 rtp_sender_->SetSequenceNumber(kSeqNum); 1132 rtp_sender_->SetSequenceNumber(kSeqNum);
1132 } 1133 }
1133 }; 1134 };
1134 1135
1135 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { 1136 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) {
1136 class TestCallback : public StreamDataCountersCallback { 1137 class TestCallback : public StreamDataCountersCallback {
1137 public: 1138 public:
1138 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} 1139 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {}
1139 virtual ~TestCallback() {} 1140 virtual ~TestCallback() {}
1140 1141
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
1471 EXPECT_EQ(kVideoRotation_0, 1472 EXPECT_EQ(kVideoRotation_0,
1472 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 0)); 1473 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 0));
1473 EXPECT_EQ(kVideoRotation_90, 1474 EXPECT_EQ(kVideoRotation_90,
1474 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 1)); 1475 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 1));
1475 EXPECT_EQ(kVideoRotation_180, 1476 EXPECT_EQ(kVideoRotation_180,
1476 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 2)); 1477 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 2));
1477 EXPECT_EQ(kVideoRotation_270, 1478 EXPECT_EQ(kVideoRotation_270,
1478 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 3)); 1479 ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 3));
1479 } 1480 }
1480 1481
1482 TEST_F(RtpSenderTest, OnOverheadPerPacketChanged) {
1483 class MockOverheadPerPacketObserver : public OverheadPerPacketObserver {
1484 public:
1485 MOCK_METHOD1(OnOverheadPerPacketChange, void(int overhead_per_packet));
1486 };
1487 MockOverheadPerPacketObserver mock_overhead_observer;
1488 rtp_sender_.reset(
1489 new RTPSender(false, &fake_clock_, &transport_, nullptr, nullptr, nullptr,
1490 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
1491 &retransmission_rate_limiter_, &mock_overhead_observer));
1492 // Transport overhead is set to 28B.
1493 EXPECT_CALL(mock_overhead_observer, OnOverheadPerPacketChange(28)).Times(1);
1494 rtp_sender_->SetTransportOverhead(28);
1495
1496 // RTP Overhead is without extensions is 12B.
1497 // 28B + 12B = 40B
1498 EXPECT_CALL(mock_overhead_observer, OnOverheadPerPacketChange(40)).Times(1);
1499 SendGenericPayload();
1500
1501 rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionTransmissionTimeOffset,
1502 kTransmissionTimeOffsetExtensionId);
1503
1504 // TransmissionTimeOffset extension has a size of 8B.
1505 // 28B + 12B + 8B = 48B
1506 EXPECT_CALL(mock_overhead_observer, OnOverheadPerPacketChange(48)).Times(1);
1507 SendGenericPayload();
1508 }
1509
1481 } // namespace webrtc 1510 } // namespace webrtc
OLDNEW
« webrtc/modules/rtp_rtcp/source/rtp_sender.h ('K') | « 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