| 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 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 ASSERT_EQ(1u, transport_.sent_packets_.size()); | 336 ASSERT_EQ(1u, transport_.sent_packets_.size()); |
| 337 // Verify padding packet timestamp. | 337 // Verify padding packet timestamp. |
| 338 EXPECT_EQ(kTimestamp, transport_.last_sent_packet().Timestamp()); | 338 EXPECT_EQ(kTimestamp, transport_.last_sent_packet().Timestamp()); |
| 339 } | 339 } |
| 340 | 340 |
| 341 TEST_F(RtpSenderTestWithoutPacer, SendsPacketsWithTransportSequenceNumber) { | 341 TEST_F(RtpSenderTestWithoutPacer, SendsPacketsWithTransportSequenceNumber) { |
| 342 rtp_sender_.reset(new RTPSender( | 342 rtp_sender_.reset(new RTPSender( |
| 343 false, &fake_clock_, &transport_, nullptr, nullptr, &seq_num_allocator_, | 343 false, &fake_clock_, &transport_, nullptr, nullptr, &seq_num_allocator_, |
| 344 &feedback_observer_, nullptr, nullptr, nullptr, &mock_rtc_event_log_, | 344 &feedback_observer_, nullptr, nullptr, nullptr, &mock_rtc_event_log_, |
| 345 &send_packet_observer_, &retransmission_rate_limiter_, nullptr)); | 345 &send_packet_observer_, &retransmission_rate_limiter_, nullptr)); |
| 346 rtp_sender_->SetSSRC(kSsrc); |
| 346 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 347 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
| 347 kRtpExtensionTransportSequenceNumber, | 348 kRtpExtensionTransportSequenceNumber, |
| 348 kTransportSequenceNumberExtensionId)); | 349 kTransportSequenceNumberExtensionId)); |
| 349 | 350 |
| 350 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 351 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
| 351 .WillOnce(testing::Return(kTransportSequenceNumber)); | 352 .WillOnce(testing::Return(kTransportSequenceNumber)); |
| 352 EXPECT_CALL(send_packet_observer_, | 353 EXPECT_CALL(send_packet_observer_, |
| 353 OnSendPacket(kTransportSequenceNumber, _, _)) | 354 OnSendPacket(kTransportSequenceNumber, _, _)) |
| 354 .Times(1); | 355 .Times(1); |
| 355 EXPECT_CALL(feedback_observer_, | 356 EXPECT_CALL(feedback_observer_, |
| (...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 906 | 907 |
| 907 uint32_t num_calls_; | 908 uint32_t num_calls_; |
| 908 uint32_t ssrc_; | 909 uint32_t ssrc_; |
| 909 FrameCounts frame_counts_; | 910 FrameCounts frame_counts_; |
| 910 } callback; | 911 } callback; |
| 911 | 912 |
| 912 rtp_sender_.reset( | 913 rtp_sender_.reset( |
| 913 new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_, | 914 new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_, |
| 914 nullptr, nullptr, nullptr, nullptr, &callback, nullptr, | 915 nullptr, nullptr, nullptr, nullptr, &callback, nullptr, |
| 915 nullptr, nullptr, &retransmission_rate_limiter_, nullptr)); | 916 nullptr, nullptr, &retransmission_rate_limiter_, nullptr)); |
| 916 | 917 rtp_sender_->SetSSRC(kSsrc); |
| 917 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 918 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
| 918 const uint8_t payload_type = 127; | 919 const uint8_t payload_type = 127; |
| 919 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 920 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |
| 920 0, 1500)); | 921 0, 1500)); |
| 921 uint8_t payload[] = {47, 11, 32, 93, 89}; | 922 uint8_t payload[] = {47, 11, 32, 93, 89}; |
| 922 rtp_sender_->SetStorePacketsStatus(true, 1); | 923 rtp_sender_->SetStorePacketsStatus(true, 1); |
| 923 uint32_t ssrc = rtp_sender_->SSRC(); | 924 uint32_t ssrc = rtp_sender_->SSRC(); |
| 924 | 925 |
| 925 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) | 926 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) |
| 926 .Times(::testing::AtLeast(2)); | 927 .Times(::testing::AtLeast(2)); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 | 969 |
| 969 uint32_t num_calls_; | 970 uint32_t num_calls_; |
| 970 uint32_t ssrc_; | 971 uint32_t ssrc_; |
| 971 uint32_t total_bitrate_; | 972 uint32_t total_bitrate_; |
| 972 uint32_t retransmit_bitrate_; | 973 uint32_t retransmit_bitrate_; |
| 973 } callback; | 974 } callback; |
| 974 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 975 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |
| 975 nullptr, nullptr, nullptr, &callback, nullptr, | 976 nullptr, nullptr, nullptr, &callback, nullptr, |
| 976 nullptr, nullptr, nullptr, | 977 nullptr, nullptr, nullptr, |
| 977 &retransmission_rate_limiter_, nullptr)); | 978 &retransmission_rate_limiter_, nullptr)); |
| 979 rtp_sender_->SetSSRC(kSsrc); |
| 978 | 980 |
| 979 // Simulate kNumPackets sent with kPacketInterval ms intervals, with the | 981 // Simulate kNumPackets sent with kPacketInterval ms intervals, with the |
| 980 // number of packets selected so that we fill (but don't overflow) the one | 982 // number of packets selected so that we fill (but don't overflow) the one |
| 981 // second averaging window. | 983 // second averaging window. |
| 982 const uint32_t kWindowSizeMs = 1000; | 984 const uint32_t kWindowSizeMs = 1000; |
| 983 const uint32_t kPacketInterval = 20; | 985 const uint32_t kPacketInterval = 20; |
| 984 const uint32_t kNumPackets = | 986 const uint32_t kNumPackets = |
| 985 (kWindowSizeMs - kPacketInterval) / kPacketInterval; | 987 (kWindowSizeMs - kPacketInterval) / kPacketInterval; |
| 986 // Overhead = 12 bytes RTP header + 1 byte generic header. | 988 // Overhead = 12 bytes RTP header + 1 byte generic header. |
| 987 const uint32_t kPacketOverhead = 13; | 989 const uint32_t kPacketOverhead = 13; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1026 class RtpSenderAudioTest : public RtpSenderTest { | 1028 class RtpSenderAudioTest : public RtpSenderTest { |
| 1027 protected: | 1029 protected: |
| 1028 RtpSenderAudioTest() {} | 1030 RtpSenderAudioTest() {} |
| 1029 | 1031 |
| 1030 void SetUp() override { | 1032 void SetUp() override { |
| 1031 payload_ = kAudioPayload; | 1033 payload_ = kAudioPayload; |
| 1032 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, | 1034 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, |
| 1033 nullptr, nullptr, nullptr, nullptr, nullptr, | 1035 nullptr, nullptr, nullptr, nullptr, nullptr, |
| 1034 nullptr, nullptr, nullptr, | 1036 nullptr, nullptr, nullptr, |
| 1035 &retransmission_rate_limiter_, nullptr)); | 1037 &retransmission_rate_limiter_, nullptr)); |
| 1038 rtp_sender_->SetSSRC(kSsrc); |
| 1036 rtp_sender_->SetSequenceNumber(kSeqNum); | 1039 rtp_sender_->SetSequenceNumber(kSeqNum); |
| 1037 } | 1040 } |
| 1038 }; | 1041 }; |
| 1039 | 1042 |
| 1040 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { | 1043 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { |
| 1041 class TestCallback : public StreamDataCountersCallback { | 1044 class TestCallback : public StreamDataCountersCallback { |
| 1042 public: | 1045 public: |
| 1043 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} | 1046 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} |
| 1044 virtual ~TestCallback() {} | 1047 virtual ~TestCallback() {} |
| 1045 | 1048 |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1386 MOCK_METHOD1(OnOverheadChanged, void(size_t overhead_bytes_per_packet)); | 1389 MOCK_METHOD1(OnOverheadChanged, void(size_t overhead_bytes_per_packet)); |
| 1387 }; | 1390 }; |
| 1388 } // namespace | 1391 } // namespace |
| 1389 | 1392 |
| 1390 TEST_F(RtpSenderTest, OnOverheadChanged) { | 1393 TEST_F(RtpSenderTest, OnOverheadChanged) { |
| 1391 MockOverheadObserver mock_overhead_observer; | 1394 MockOverheadObserver mock_overhead_observer; |
| 1392 rtp_sender_.reset( | 1395 rtp_sender_.reset( |
| 1393 new RTPSender(false, &fake_clock_, &transport_, nullptr, nullptr, nullptr, | 1396 new RTPSender(false, &fake_clock_, &transport_, nullptr, nullptr, nullptr, |
| 1394 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, | 1397 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, |
| 1395 &retransmission_rate_limiter_, &mock_overhead_observer)); | 1398 &retransmission_rate_limiter_, &mock_overhead_observer)); |
| 1399 rtp_sender_->SetSSRC(kSsrc); |
| 1396 | 1400 |
| 1397 // RTP overhead is 12B. | 1401 // RTP overhead is 12B. |
| 1398 EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(12)).Times(1); | 1402 EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(12)).Times(1); |
| 1399 SendGenericPayload(); | 1403 SendGenericPayload(); |
| 1400 | 1404 |
| 1401 rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionTransmissionTimeOffset, | 1405 rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionTransmissionTimeOffset, |
| 1402 kTransmissionTimeOffsetExtensionId); | 1406 kTransmissionTimeOffsetExtensionId); |
| 1403 | 1407 |
| 1404 // TransmissionTimeOffset extension has a size of 8B. | 1408 // TransmissionTimeOffset extension has a size of 8B. |
| 1405 // 12B + 8B = 20B | 1409 // 12B + 8B = 20B |
| 1406 EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(20)).Times(1); | 1410 EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(20)).Times(1); |
| 1407 SendGenericPayload(); | 1411 SendGenericPayload(); |
| 1408 } | 1412 } |
| 1409 | 1413 |
| 1410 TEST_F(RtpSenderTest, DoesNotUpdateOverheadOnEqualSize) { | 1414 TEST_F(RtpSenderTest, DoesNotUpdateOverheadOnEqualSize) { |
| 1411 MockOverheadObserver mock_overhead_observer; | 1415 MockOverheadObserver mock_overhead_observer; |
| 1412 rtp_sender_.reset( | 1416 rtp_sender_.reset( |
| 1413 new RTPSender(false, &fake_clock_, &transport_, nullptr, nullptr, nullptr, | 1417 new RTPSender(false, &fake_clock_, &transport_, nullptr, nullptr, nullptr, |
| 1414 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, | 1418 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, |
| 1415 &retransmission_rate_limiter_, &mock_overhead_observer)); | 1419 &retransmission_rate_limiter_, &mock_overhead_observer)); |
| 1420 rtp_sender_->SetSSRC(kSsrc); |
| 1416 | 1421 |
| 1417 EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(_)).Times(1); | 1422 EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(_)).Times(1); |
| 1418 SendGenericPayload(); | 1423 SendGenericPayload(); |
| 1419 SendGenericPayload(); | 1424 SendGenericPayload(); |
| 1420 } | 1425 } |
| 1421 | 1426 |
| 1422 TEST_F(RtpSenderTest, AddOverheadToTransportFeedbackObserver) { | 1427 TEST_F(RtpSenderTest, AddOverheadToTransportFeedbackObserver) { |
| 1423 constexpr int kRtpOverheadBytesPerPacket = 12 + 8; | 1428 constexpr int kRtpOverheadBytesPerPacket = 12 + 8; |
| 1424 test::ScopedFieldTrials override_field_trials( | 1429 test::ScopedFieldTrials override_field_trials( |
| 1425 "WebRTC-SendSideBwe-WithOverhead/Enabled/"); | 1430 "WebRTC-SendSideBwe-WithOverhead/Enabled/"); |
| 1426 testing::NiceMock<MockOverheadObserver> mock_overhead_observer; | 1431 testing::NiceMock<MockOverheadObserver> mock_overhead_observer; |
| 1427 rtp_sender_.reset(new RTPSender( | 1432 rtp_sender_.reset(new RTPSender( |
| 1428 false, &fake_clock_, &transport_, nullptr, nullptr, &seq_num_allocator_, | 1433 false, &fake_clock_, &transport_, nullptr, nullptr, &seq_num_allocator_, |
| 1429 &feedback_observer_, nullptr, nullptr, nullptr, &mock_rtc_event_log_, | 1434 &feedback_observer_, nullptr, nullptr, nullptr, &mock_rtc_event_log_, |
| 1430 nullptr, &retransmission_rate_limiter_, &mock_overhead_observer)); | 1435 nullptr, &retransmission_rate_limiter_, &mock_overhead_observer)); |
| 1436 rtp_sender_->SetSSRC(kSsrc); |
| 1431 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 1437 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
| 1432 kRtpExtensionTransportSequenceNumber, | 1438 kRtpExtensionTransportSequenceNumber, |
| 1433 kTransportSequenceNumberExtensionId)); | 1439 kTransportSequenceNumberExtensionId)); |
| 1434 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 1440 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
| 1435 .WillOnce(testing::Return(kTransportSequenceNumber)); | 1441 .WillOnce(testing::Return(kTransportSequenceNumber)); |
| 1436 EXPECT_CALL(feedback_observer_, | 1442 EXPECT_CALL(feedback_observer_, |
| 1437 AddPacket(kTransportSequenceNumber, | 1443 AddPacket(kTransportSequenceNumber, |
| 1438 sizeof(kPayloadData) + kGenericHeaderLength + | 1444 sizeof(kPayloadData) + kGenericHeaderLength + |
| 1439 kRtpOverheadBytesPerPacket, | 1445 kRtpOverheadBytesPerPacket, |
| 1440 PacketInfo::kNotAProbe)) | 1446 PacketInfo::kNotAProbe)) |
| 1441 .Times(1); | 1447 .Times(1); |
| 1442 EXPECT_CALL(mock_overhead_observer, | 1448 EXPECT_CALL(mock_overhead_observer, |
| 1443 OnOverheadChanged(kRtpOverheadBytesPerPacket)) | 1449 OnOverheadChanged(kRtpOverheadBytesPerPacket)) |
| 1444 .Times(1); | 1450 .Times(1); |
| 1445 SendGenericPayload(); | 1451 SendGenericPayload(); |
| 1446 } | 1452 } |
| 1447 | 1453 |
| 1448 } // namespace webrtc | 1454 } // namespace webrtc |
| OLD | NEW |