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 995 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1006 const bool kIsRetransmit = true; | 1006 const bool kIsRetransmit = true; |
1007 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), | 1007 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), |
1008 kIsRetransmit, PacketInfo::kNotAProbe); | 1008 kIsRetransmit, PacketInfo::kNotAProbe); |
1009 EXPECT_EQ(1, transport_.packets_sent_); | 1009 EXPECT_EQ(1, transport_.packets_sent_); |
1010 } | 1010 } |
1011 | 1011 |
1012 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) { | 1012 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) { |
1013 rtp_sender_.reset(new RTPSender( | 1013 rtp_sender_.reset(new RTPSender( |
1014 false, &fake_clock_, &transport_, &mock_paced_sender_, | 1014 false, &fake_clock_, &transport_, &mock_paced_sender_, |
1015 nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr, | 1015 nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr, |
1016 nullptr, nullptr, &send_packet_observer_, nullptr)); | 1016 nullptr, nullptr, &send_packet_observer_, &retransmission_rate_limiter_)); |
1017 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 1017 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
1018 kRtpExtensionTransportSequenceNumber, | 1018 kRtpExtensionTransportSequenceNumber, |
1019 kTransportSequenceNumberExtensionId)); | 1019 kTransportSequenceNumberExtensionId)); |
1020 rtp_sender_->SetSequenceNumber(kSeqNum); | 1020 rtp_sender_->SetSequenceNumber(kSeqNum); |
1021 rtp_sender_->SetStorePacketsStatus(true, 10); | 1021 rtp_sender_->SetStorePacketsStatus(true, 10); |
1022 | 1022 |
1023 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); | 1023 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); |
1024 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)).Times(1); | 1024 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)).Times(1); |
1025 | 1025 |
1026 SendGenericPayload(); // Packet passed to pacer. | 1026 SendGenericPayload(); // Packet passed to pacer. |
1027 const bool kIsRetransmit = false; | 1027 const bool kIsRetransmit = false; |
1028 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), | 1028 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), |
1029 kIsRetransmit, PacketInfo::kNotAProbe); | 1029 kIsRetransmit, PacketInfo::kNotAProbe); |
1030 EXPECT_EQ(1, transport_.packets_sent_); | 1030 EXPECT_EQ(1, transport_.packets_sent_); |
1031 } | 1031 } |
1032 | 1032 |
1033 TEST_F(RtpSenderTest, SendRedundantPayloads) { | 1033 TEST_F(RtpSenderTest, SendRedundantPayloads) { |
1034 MockTransport transport; | 1034 MockTransport transport; |
1035 rtp_sender_.reset(new RTPSender( | 1035 rtp_sender_.reset(new RTPSender( |
1036 false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr, | 1036 false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr, |
1037 nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr, nullptr)); | 1037 nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr, |
| 1038 &retransmission_rate_limiter_)); |
1038 | 1039 |
1039 rtp_sender_->SetSequenceNumber(kSeqNum); | 1040 rtp_sender_->SetSequenceNumber(kSeqNum); |
1040 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); | 1041 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); |
1041 | 1042 |
1042 uint16_t seq_num = kSeqNum; | 1043 uint16_t seq_num = kSeqNum; |
1043 rtp_sender_->SetStorePacketsStatus(true, 10); | 1044 rtp_sender_->SetStorePacketsStatus(true, 10); |
1044 int32_t rtp_header_len = kRtpHeaderSize; | 1045 int32_t rtp_header_len = kRtpHeaderSize; |
1045 EXPECT_EQ( | 1046 EXPECT_EQ( |
1046 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 1047 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
1047 kAbsoluteSendTimeExtensionId)); | 1048 kAbsoluteSendTimeExtensionId)); |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1171 ++num_calls_; | 1172 ++num_calls_; |
1172 ssrc_ = ssrc; | 1173 ssrc_ = ssrc; |
1173 frame_counts_ = frame_counts; | 1174 frame_counts_ = frame_counts; |
1174 } | 1175 } |
1175 | 1176 |
1176 uint32_t num_calls_; | 1177 uint32_t num_calls_; |
1177 uint32_t ssrc_; | 1178 uint32_t ssrc_; |
1178 FrameCounts frame_counts_; | 1179 FrameCounts frame_counts_; |
1179 } callback; | 1180 } callback; |
1180 | 1181 |
1181 rtp_sender_.reset(new RTPSender( | 1182 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, |
1182 false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr, nullptr, | 1183 &mock_paced_sender_, nullptr, nullptr, |
1183 nullptr, &callback, nullptr, nullptr, nullptr, nullptr)); | 1184 nullptr, &callback, nullptr, nullptr, nullptr, |
| 1185 &retransmission_rate_limiter_)); |
1184 | 1186 |
1185 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 1187 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
1186 const uint8_t payload_type = 127; | 1188 const uint8_t payload_type = 127; |
1187 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 1189 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |
1188 0, 1500)); | 1190 0, 1500)); |
1189 uint8_t payload[] = {47, 11, 32, 93, 89}; | 1191 uint8_t payload[] = {47, 11, 32, 93, 89}; |
1190 rtp_sender_->SetStorePacketsStatus(true, 1); | 1192 rtp_sender_->SetStorePacketsStatus(true, 1); |
1191 uint32_t ssrc = rtp_sender_->SSRC(); | 1193 uint32_t ssrc = rtp_sender_->SSRC(); |
1192 | 1194 |
1193 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) | 1195 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1232 ssrc_ = ssrc; | 1234 ssrc_ = ssrc; |
1233 total_bitrate_ = total_bitrate; | 1235 total_bitrate_ = total_bitrate; |
1234 retransmit_bitrate_ = retransmit_bitrate; | 1236 retransmit_bitrate_ = retransmit_bitrate; |
1235 } | 1237 } |
1236 | 1238 |
1237 uint32_t num_calls_; | 1239 uint32_t num_calls_; |
1238 uint32_t ssrc_; | 1240 uint32_t ssrc_; |
1239 uint32_t total_bitrate_; | 1241 uint32_t total_bitrate_; |
1240 uint32_t retransmit_bitrate_; | 1242 uint32_t retransmit_bitrate_; |
1241 } callback; | 1243 } callback; |
1242 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 1244 rtp_sender_.reset(new RTPSender( |
1243 nullptr, nullptr, &callback, nullptr, nullptr, | 1245 false, &fake_clock_, &transport_, nullptr, nullptr, nullptr, &callback, |
1244 nullptr, nullptr, nullptr)); | 1246 nullptr, nullptr, nullptr, nullptr, &retransmission_rate_limiter_)); |
1245 | 1247 |
1246 // Simulate kNumPackets sent with kPacketInterval ms intervals, with the | 1248 // Simulate kNumPackets sent with kPacketInterval ms intervals, with the |
1247 // number of packets selected so that we fill (but don't overflow) the one | 1249 // number of packets selected so that we fill (but don't overflow) the one |
1248 // second averaging window. | 1250 // second averaging window. |
1249 const uint32_t kWindowSizeMs = 1000; | 1251 const uint32_t kWindowSizeMs = 1000; |
1250 const uint32_t kPacketInterval = 20; | 1252 const uint32_t kPacketInterval = 20; |
1251 const uint32_t kNumPackets = | 1253 const uint32_t kNumPackets = |
1252 (kWindowSizeMs - kPacketInterval) / kPacketInterval; | 1254 (kWindowSizeMs - kPacketInterval) / kPacketInterval; |
1253 // Overhead = 12 bytes RTP header + 1 byte generic header. | 1255 // Overhead = 12 bytes RTP header + 1 byte generic header. |
1254 const uint32_t kPacketOverhead = 13; | 1256 const uint32_t kPacketOverhead = 13; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1289 | 1291 |
1290 rtp_sender_.reset(); | 1292 rtp_sender_.reset(); |
1291 } | 1293 } |
1292 | 1294 |
1293 class RtpSenderAudioTest : public RtpSenderTest { | 1295 class RtpSenderAudioTest : public RtpSenderTest { |
1294 protected: | 1296 protected: |
1295 RtpSenderAudioTest() {} | 1297 RtpSenderAudioTest() {} |
1296 | 1298 |
1297 void SetUp() override { | 1299 void SetUp() override { |
1298 payload_ = kAudioPayload; | 1300 payload_ = kAudioPayload; |
1299 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, | 1301 rtp_sender_.reset(new RTPSender( |
1300 nullptr, nullptr, nullptr, nullptr, nullptr, | 1302 true, &fake_clock_, &transport_, nullptr, nullptr, nullptr, nullptr, |
1301 nullptr, nullptr, nullptr)); | 1303 nullptr, nullptr, nullptr, nullptr, &retransmission_rate_limiter_)); |
1302 rtp_sender_->SetSequenceNumber(kSeqNum); | 1304 rtp_sender_->SetSequenceNumber(kSeqNum); |
1303 } | 1305 } |
1304 }; | 1306 }; |
1305 | 1307 |
1306 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { | 1308 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { |
1307 class TestCallback : public StreamDataCountersCallback { | 1309 class TestCallback : public StreamDataCountersCallback { |
1308 public: | 1310 public: |
1309 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} | 1311 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} |
1310 virtual ~TestCallback() {} | 1312 virtual ~TestCallback() {} |
1311 | 1313 |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1619 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), | 1621 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), |
1620 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); | 1622 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); |
1621 | 1623 |
1622 // Verify that this packet does have CVO byte. | 1624 // Verify that this packet does have CVO byte. |
1623 VerifyCVOPacket( | 1625 VerifyCVOPacket( |
1624 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), | 1626 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), |
1625 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, | 1627 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, |
1626 hdr.rotation); | 1628 hdr.rotation); |
1627 } | 1629 } |
1628 } // namespace webrtc | 1630 } // namespace webrtc |
OLD | NEW |