OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
100 std::vector<rtc::Buffer*> sent_packets_; | 100 std::vector<rtc::Buffer*> sent_packets_; |
101 }; | 101 }; |
102 | 102 |
103 } // namespace | 103 } // namespace |
104 | 104 |
105 class MockRtpPacketSender : public RtpPacketSender { | 105 class MockRtpPacketSender : public RtpPacketSender { |
106 public: | 106 public: |
107 MockRtpPacketSender() {} | 107 MockRtpPacketSender() {} |
108 virtual ~MockRtpPacketSender() {} | 108 virtual ~MockRtpPacketSender() {} |
109 | 109 |
110 MOCK_METHOD6(SendPacket, | 110 MOCK_METHOD6(InsertPacket, |
111 bool(Priority priority, | 111 void(Priority priority, |
112 uint32_t ssrc, | 112 uint32_t ssrc, |
113 uint16_t sequence_number, | 113 uint16_t sequence_number, |
114 int64_t capture_time_ms, | 114 int64_t capture_time_ms, |
115 size_t bytes, | 115 size_t bytes, |
116 bool retransmission)); | 116 bool retransmission)); |
117 }; | 117 }; |
118 | 118 |
119 class RtpSenderTest : public ::testing::Test { | 119 class RtpSenderTest : public ::testing::Test { |
120 protected: | 120 protected: |
121 RtpSenderTest() | 121 RtpSenderTest() |
122 : fake_clock_(kStartTime), | 122 : fake_clock_(kStartTime), |
123 mock_paced_sender_(), | 123 mock_paced_sender_(), |
124 rtp_sender_(), | 124 rtp_sender_(), |
125 payload_(kPayload), | 125 payload_(kPayload), |
126 transport_(), | 126 transport_(), |
127 kMarkerBit(true) { | 127 kMarkerBit(true) { |
128 EXPECT_CALL(mock_paced_sender_, | 128 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) |
129 SendPacket(_, _, _, _, _, _)).WillRepeatedly(testing::Return(true)); | 129 .WillRepeatedly(testing::Return()); |
130 } | 130 } |
131 | 131 |
132 void SetUp() override { | 132 void SetUp() override { SetUpRtpSender(false); } |
133 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 133 void SetUpWithPacer() { SetUpRtpSender(true); } |
stefan-webrtc
2015/10/06 14:32:33
A nicer way would be to inherit from RtpSenderTest
pbos-webrtc
2015/10/06 14:58:26
Done.
| |
134 &mock_paced_sender_, nullptr, nullptr, | |
135 nullptr, nullptr, nullptr)); | |
136 rtp_sender_->SetSequenceNumber(kSeqNum); | |
137 } | |
138 | 134 |
139 SimulatedClock fake_clock_; | 135 SimulatedClock fake_clock_; |
140 MockRtpPacketSender mock_paced_sender_; | 136 MockRtpPacketSender mock_paced_sender_; |
141 rtc::scoped_ptr<RTPSender> rtp_sender_; | 137 rtc::scoped_ptr<RTPSender> rtp_sender_; |
142 int payload_; | 138 int payload_; |
143 LoopbackTransportTest transport_; | 139 LoopbackTransportTest transport_; |
144 const bool kMarkerBit; | 140 const bool kMarkerBit; |
145 uint8_t packet_[kMaxPacketLength]; | 141 uint8_t packet_[kMaxPacketLength]; |
146 | 142 |
147 void VerifyRTPHeaderCommon(const RTPHeader& rtp_header) { | 143 void VerifyRTPHeaderCommon(const RTPHeader& rtp_header) { |
(...skipping 17 matching lines...) Expand all Loading... | |
165 kMarkerBit, | 161 kMarkerBit, |
166 timestamp, | 162 timestamp, |
167 capture_time_ms); | 163 capture_time_ms); |
168 ASSERT_GE(rtp_length, 0); | 164 ASSERT_GE(rtp_length, 0); |
169 | 165 |
170 // Packet should be stored in a send bucket. | 166 // Packet should be stored in a send bucket. |
171 EXPECT_EQ(0, rtp_sender_->SendToNetwork( | 167 EXPECT_EQ(0, rtp_sender_->SendToNetwork( |
172 packet_, payload_length, rtp_length, capture_time_ms, | 168 packet_, payload_length, rtp_length, capture_time_ms, |
173 kAllowRetransmission, RtpPacketSender::kNormalPriority)); | 169 kAllowRetransmission, RtpPacketSender::kNormalPriority)); |
174 } | 170 } |
171 private: | |
172 void SetUpRtpSender(bool pacer) { | |
173 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | |
174 pacer ? &mock_paced_sender_ : nullptr, | |
175 nullptr, nullptr, nullptr, nullptr, | |
176 nullptr)); | |
177 rtp_sender_->SetSequenceNumber(kSeqNum); | |
178 } | |
175 }; | 179 }; |
176 | 180 |
177 class RtpSenderVideoTest : public RtpSenderTest { | 181 class RtpSenderVideoTest : public RtpSenderTest { |
178 protected: | 182 protected: |
179 virtual void SetUp() override { | 183 virtual void SetUp() override { |
180 RtpSenderTest::SetUp(); | 184 RtpSenderTest::SetUp(); |
181 rtp_sender_video_.reset( | 185 rtp_sender_video_.reset( |
182 new RTPSenderVideo(&fake_clock_, rtp_sender_.get())); | 186 new RTPSenderVideo(&fake_clock_, rtp_sender_.get())); |
183 } | 187 } |
184 rtc::scoped_ptr<RTPSenderVideo> rtp_sender_video_; | 188 rtc::scoped_ptr<RTPSenderVideo> rtp_sender_video_; |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
598 EXPECT_FALSE(rtp_header2.extension.hasTransportSequenceNumber); | 602 EXPECT_FALSE(rtp_header2.extension.hasTransportSequenceNumber); |
599 | 603 |
600 EXPECT_EQ(0, rtp_header2.extension.transmissionTimeOffset); | 604 EXPECT_EQ(0, rtp_header2.extension.transmissionTimeOffset); |
601 EXPECT_EQ(0u, rtp_header2.extension.absoluteSendTime); | 605 EXPECT_EQ(0u, rtp_header2.extension.absoluteSendTime); |
602 EXPECT_FALSE(rtp_header2.extension.voiceActivity); | 606 EXPECT_FALSE(rtp_header2.extension.voiceActivity); |
603 EXPECT_EQ(0u, rtp_header2.extension.audioLevel); | 607 EXPECT_EQ(0u, rtp_header2.extension.audioLevel); |
604 EXPECT_EQ(0u, rtp_header2.extension.transportSequenceNumber); | 608 EXPECT_EQ(0u, rtp_header2.extension.transportSequenceNumber); |
605 } | 609 } |
606 | 610 |
607 TEST_F(RtpSenderTest, TrafficSmoothingWithExtensions) { | 611 TEST_F(RtpSenderTest, TrafficSmoothingWithExtensions) { |
608 EXPECT_CALL(mock_paced_sender_, | 612 SetUpWithPacer(); |
609 SendPacket(RtpPacketSender::kNormalPriority, _, kSeqNum, _, _, _)) | 613 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
610 .WillOnce(testing::Return(false)); | 614 _, kSeqNum, _, _, _)) |
615 .WillRepeatedly(testing::Return()); | |
611 | 616 |
612 rtp_sender_->SetStorePacketsStatus(true, 10); | 617 rtp_sender_->SetStorePacketsStatus(true, 10); |
613 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 618 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
614 kRtpExtensionTransmissionTimeOffset, kTransmissionTimeOffsetExtensionId)); | 619 kRtpExtensionTransmissionTimeOffset, kTransmissionTimeOffsetExtensionId)); |
615 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 620 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
616 kRtpExtensionAbsoluteSendTime, kAbsoluteSendTimeExtensionId)); | 621 kRtpExtensionAbsoluteSendTime, kAbsoluteSendTimeExtensionId)); |
617 rtp_sender_->SetTargetBitrate(300000); | 622 rtp_sender_->SetTargetBitrate(300000); |
618 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 623 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
619 int rtp_length_int = rtp_sender_->BuildRTPheader( | 624 int rtp_length_int = rtp_sender_->BuildRTPheader( |
620 packet_, kPayload, kMarkerBit, kTimestamp, capture_time_ms); | 625 packet_, kPayload, kMarkerBit, kTimestamp, capture_time_ms); |
(...skipping 27 matching lines...) Expand all Loading... | |
648 ASSERT_TRUE(valid_rtp_header); | 653 ASSERT_TRUE(valid_rtp_header); |
649 | 654 |
650 // Verify transmission time offset. | 655 // Verify transmission time offset. |
651 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); | 656 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); |
652 uint64_t expected_send_time = | 657 uint64_t expected_send_time = |
653 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 658 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
654 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 659 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
655 } | 660 } |
656 | 661 |
657 TEST_F(RtpSenderTest, TrafficSmoothingRetransmits) { | 662 TEST_F(RtpSenderTest, TrafficSmoothingRetransmits) { |
658 EXPECT_CALL(mock_paced_sender_, | 663 SetUpWithPacer(); |
659 SendPacket(RtpPacketSender::kNormalPriority, _, kSeqNum, _, _, _)) | 664 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
660 .WillOnce(testing::Return(false)); | 665 _, kSeqNum, _, _, _)) |
666 .WillRepeatedly(testing::Return()); | |
661 | 667 |
662 rtp_sender_->SetStorePacketsStatus(true, 10); | 668 rtp_sender_->SetStorePacketsStatus(true, 10); |
663 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 669 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
664 kRtpExtensionTransmissionTimeOffset, kTransmissionTimeOffsetExtensionId)); | 670 kRtpExtensionTransmissionTimeOffset, kTransmissionTimeOffsetExtensionId)); |
665 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 671 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
666 kRtpExtensionAbsoluteSendTime, kAbsoluteSendTimeExtensionId)); | 672 kRtpExtensionAbsoluteSendTime, kAbsoluteSendTimeExtensionId)); |
667 rtp_sender_->SetTargetBitrate(300000); | 673 rtp_sender_->SetTargetBitrate(300000); |
668 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 674 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
669 int rtp_length_int = rtp_sender_->BuildRTPheader( | 675 int rtp_length_int = rtp_sender_->BuildRTPheader( |
670 packet_, kPayload, kMarkerBit, kTimestamp, capture_time_ms); | 676 packet_, kPayload, kMarkerBit, kTimestamp, capture_time_ms); |
671 ASSERT_NE(-1, rtp_length_int); | 677 ASSERT_NE(-1, rtp_length_int); |
672 size_t rtp_length = static_cast<size_t>(rtp_length_int); | 678 size_t rtp_length = static_cast<size_t>(rtp_length_int); |
673 | 679 |
674 // Packet should be stored in a send bucket. | 680 // Packet should be stored in a send bucket. |
675 EXPECT_EQ(0, rtp_sender_->SendToNetwork(packet_, 0, rtp_length, | 681 EXPECT_EQ(0, rtp_sender_->SendToNetwork(packet_, 0, rtp_length, |
676 capture_time_ms, kAllowRetransmission, | 682 capture_time_ms, kAllowRetransmission, |
677 RtpPacketSender::kNormalPriority)); | 683 RtpPacketSender::kNormalPriority)); |
678 | 684 |
679 EXPECT_EQ(0, transport_.packets_sent_); | 685 EXPECT_EQ(0, transport_.packets_sent_); |
680 | 686 |
681 EXPECT_CALL(mock_paced_sender_, | 687 EXPECT_CALL(mock_paced_sender_, |
682 SendPacket(RtpPacketSender::kHighPriority, _, kSeqNum, _, _, _)) | 688 InsertPacket(RtpPacketSender::kHighPriority, _, kSeqNum, _, _, _)) |
683 .WillOnce(testing::Return(false)); | 689 .WillRepeatedly(testing::Return()); |
684 | 690 |
685 const int kStoredTimeInMs = 100; | 691 const int kStoredTimeInMs = 100; |
686 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); | 692 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); |
687 | 693 |
688 EXPECT_EQ(rtp_length_int, rtp_sender_->ReSendPacket(kSeqNum)); | 694 EXPECT_EQ(rtp_length_int, rtp_sender_->ReSendPacket(kSeqNum)); |
689 EXPECT_EQ(0, transport_.packets_sent_); | 695 EXPECT_EQ(0, transport_.packets_sent_); |
690 | 696 |
691 rtp_sender_->TimeToSendPacket(kSeqNum, capture_time_ms, false); | 697 rtp_sender_->TimeToSendPacket(kSeqNum, capture_time_ms, false); |
692 | 698 |
693 // Process send bucket. Packet should now be sent. | 699 // Process send bucket. Packet should now be sent. |
(...skipping 15 matching lines...) Expand all Loading... | |
709 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); | 715 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); |
710 uint64_t expected_send_time = | 716 uint64_t expected_send_time = |
711 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 717 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
712 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 718 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
713 } | 719 } |
714 | 720 |
715 // This test sends 1 regular video packet, then 4 padding packets, and then | 721 // This test sends 1 regular video packet, then 4 padding packets, and then |
716 // 1 more regular packet. | 722 // 1 more regular packet. |
717 TEST_F(RtpSenderTest, SendPadding) { | 723 TEST_F(RtpSenderTest, SendPadding) { |
718 // Make all (non-padding) packets go to send queue. | 724 // Make all (non-padding) packets go to send queue. |
725 SetUpWithPacer(); | |
719 EXPECT_CALL(mock_paced_sender_, | 726 EXPECT_CALL(mock_paced_sender_, |
720 SendPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)) | 727 InsertPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)) |
721 .WillRepeatedly(testing::Return(false)); | 728 .WillRepeatedly(testing::Return()); |
722 | 729 |
723 uint16_t seq_num = kSeqNum; | 730 uint16_t seq_num = kSeqNum; |
724 uint32_t timestamp = kTimestamp; | 731 uint32_t timestamp = kTimestamp; |
725 rtp_sender_->SetStorePacketsStatus(true, 10); | 732 rtp_sender_->SetStorePacketsStatus(true, 10); |
726 size_t rtp_header_len = kRtpHeaderSize; | 733 size_t rtp_header_len = kRtpHeaderSize; |
727 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 734 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
728 kRtpExtensionTransmissionTimeOffset, kTransmissionTimeOffsetExtensionId)); | 735 kRtpExtensionTransmissionTimeOffset, kTransmissionTimeOffsetExtensionId)); |
729 rtp_header_len += 4; // 4 bytes extension. | 736 rtp_header_len += 4; // 4 bytes extension. |
730 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 737 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
731 kRtpExtensionAbsoluteSendTime, kAbsoluteSendTimeExtensionId)); | 738 kRtpExtensionAbsoluteSendTime, kAbsoluteSendTimeExtensionId)); |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
830 | 837 |
831 TEST_F(RtpSenderTest, SendRedundantPayloads) { | 838 TEST_F(RtpSenderTest, SendRedundantPayloads) { |
832 MockTransport transport; | 839 MockTransport transport; |
833 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport, nullptr, | 840 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport, nullptr, |
834 &mock_paced_sender_, nullptr, nullptr, | 841 &mock_paced_sender_, nullptr, nullptr, |
835 nullptr, nullptr, nullptr)); | 842 nullptr, nullptr, nullptr)); |
836 rtp_sender_->SetSequenceNumber(kSeqNum); | 843 rtp_sender_->SetSequenceNumber(kSeqNum); |
837 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); | 844 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); |
838 // Make all packets go through the pacer. | 845 // Make all packets go through the pacer. |
839 EXPECT_CALL(mock_paced_sender_, | 846 EXPECT_CALL(mock_paced_sender_, |
840 SendPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)) | 847 InsertPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)) |
841 .WillRepeatedly(testing::Return(false)); | 848 .WillRepeatedly(testing::Return()); |
842 | 849 |
843 uint16_t seq_num = kSeqNum; | 850 uint16_t seq_num = kSeqNum; |
844 rtp_sender_->SetStorePacketsStatus(true, 10); | 851 rtp_sender_->SetStorePacketsStatus(true, 10); |
845 int32_t rtp_header_len = kRtpHeaderSize; | 852 int32_t rtp_header_len = kRtpHeaderSize; |
846 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 853 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
847 kRtpExtensionAbsoluteSendTime, kAbsoluteSendTimeExtensionId)); | 854 kRtpExtensionAbsoluteSendTime, kAbsoluteSendTimeExtensionId)); |
848 rtp_header_len += 4; // 4 bytes extension. | 855 rtp_header_len += 4; // 4 bytes extension. |
849 rtp_header_len += 4; // 4 extra bytes common to all extension headers. | 856 rtp_header_len += 4; // 4 extra bytes common to all extension headers. |
850 | 857 |
851 rtp_sender_->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads); | 858 rtp_sender_->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads); |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1010 total_stats_ = total_stats; | 1017 total_stats_ = total_stats; |
1011 retransmit_stats_ = retransmit_stats; | 1018 retransmit_stats_ = retransmit_stats; |
1012 } | 1019 } |
1013 | 1020 |
1014 uint32_t num_calls_; | 1021 uint32_t num_calls_; |
1015 uint32_t ssrc_; | 1022 uint32_t ssrc_; |
1016 BitrateStatistics total_stats_; | 1023 BitrateStatistics total_stats_; |
1017 BitrateStatistics retransmit_stats_; | 1024 BitrateStatistics retransmit_stats_; |
1018 } callback; | 1025 } callback; |
1019 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 1026 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |
1020 &mock_paced_sender_, nullptr, nullptr, | 1027 nullptr, nullptr, nullptr, &callback, nullptr, |
1021 &callback, nullptr, nullptr)); | 1028 nullptr)); |
1022 | 1029 |
1023 // Simulate kNumPackets sent with kPacketInterval ms intervals. | 1030 // Simulate kNumPackets sent with kPacketInterval ms intervals. |
1024 const uint32_t kNumPackets = 15; | 1031 const uint32_t kNumPackets = 15; |
1025 const uint32_t kPacketInterval = 20; | 1032 const uint32_t kPacketInterval = 20; |
1026 // Overhead = 12 bytes RTP header + 1 byte generic header. | 1033 // Overhead = 12 bytes RTP header + 1 byte generic header. |
1027 const uint32_t kPacketOverhead = 13; | 1034 const uint32_t kPacketOverhead = 13; |
1028 | 1035 |
1029 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 1036 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
1030 const uint8_t payload_type = 127; | 1037 const uint8_t payload_type = 127; |
1031 ASSERT_EQ( | 1038 ASSERT_EQ( |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1069 rtp_sender_.reset(); | 1076 rtp_sender_.reset(); |
1070 } | 1077 } |
1071 | 1078 |
1072 class RtpSenderAudioTest : public RtpSenderTest { | 1079 class RtpSenderAudioTest : public RtpSenderTest { |
1073 protected: | 1080 protected: |
1074 RtpSenderAudioTest() {} | 1081 RtpSenderAudioTest() {} |
1075 | 1082 |
1076 void SetUp() override { | 1083 void SetUp() override { |
1077 payload_ = kAudioPayload; | 1084 payload_ = kAudioPayload; |
1078 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, | 1085 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, |
1079 &mock_paced_sender_, nullptr, nullptr, | 1086 nullptr, nullptr, nullptr, nullptr, nullptr, |
1080 nullptr, nullptr, nullptr)); | 1087 nullptr)); |
1081 rtp_sender_->SetSequenceNumber(kSeqNum); | 1088 rtp_sender_->SetSequenceNumber(kSeqNum); |
1082 } | 1089 } |
1083 }; | 1090 }; |
1084 | 1091 |
1085 TEST_F(RtpSenderTest, StreamDataCountersCallbacks) { | 1092 TEST_F(RtpSenderTest, StreamDataCountersCallbacks) { |
1086 class TestCallback : public StreamDataCountersCallback { | 1093 class TestCallback : public StreamDataCountersCallback { |
1087 public: | 1094 public: |
1088 TestCallback() | 1095 TestCallback() |
1089 : StreamDataCountersCallback(), ssrc_(0), counters_() {} | 1096 : StreamDataCountersCallback(), ssrc_(0), counters_() {} |
1090 virtual ~TestCallback() {} | 1097 virtual ~TestCallback() {} |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1405 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), | 1412 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), |
1406 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); | 1413 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); |
1407 | 1414 |
1408 // Verify that this packet does have CVO byte. | 1415 // Verify that this packet does have CVO byte. |
1409 VerifyCVOPacket( | 1416 VerifyCVOPacket( |
1410 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), | 1417 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), |
1411 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, | 1418 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, |
1412 hdr.rotation); | 1419 hdr.rotation); |
1413 } | 1420 } |
1414 } // namespace webrtc | 1421 } // namespace webrtc |
OLD | NEW |