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 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 transport_(), | 137 transport_(), |
138 kMarkerBit(true) { | 138 kMarkerBit(true) { |
139 } | 139 } |
140 | 140 |
141 void SetUp() override { SetUpRtpSender(true); } | 141 void SetUp() override { SetUpRtpSender(true); } |
142 | 142 |
143 void SetUpRtpSender(bool pacer) { | 143 void SetUpRtpSender(bool pacer) { |
144 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 144 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |
145 pacer ? &mock_paced_sender_ : nullptr, | 145 pacer ? &mock_paced_sender_ : nullptr, |
146 &seq_num_allocator_, nullptr, nullptr, | 146 &seq_num_allocator_, nullptr, nullptr, |
147 nullptr, nullptr, &mock_rtc_event_log_)); | 147 nullptr, nullptr)); |
148 rtp_sender_->SetSequenceNumber(kSeqNum); | 148 rtp_sender_->SetSequenceNumber(kSeqNum); |
| 149 rtp_sender_->SetRtcEventLog(&mock_rtc_event_log_); |
149 } | 150 } |
150 | 151 |
151 SimulatedClock fake_clock_; | 152 SimulatedClock fake_clock_; |
152 MockRtcEventLog mock_rtc_event_log_; | 153 MockRtcEventLog mock_rtc_event_log_; |
153 MockRtpPacketSender mock_paced_sender_; | 154 MockRtpPacketSender mock_paced_sender_; |
154 MockTransportSequenceNumberAllocator seq_num_allocator_; | 155 MockTransportSequenceNumberAllocator seq_num_allocator_; |
155 rtc::scoped_ptr<RTPSender> rtp_sender_; | 156 rtc::scoped_ptr<RTPSender> rtp_sender_; |
156 int payload_; | 157 int payload_; |
157 LoopbackTransportTest transport_; | 158 LoopbackTransportTest transport_; |
158 const bool kMarkerBit; | 159 const bool kMarkerBit; |
(...skipping 787 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
946 EXPECT_EQ(timestamp, rtp_header.timestamp); | 947 EXPECT_EQ(timestamp, rtp_header.timestamp); |
947 // Verify transmission time offset. This packet is sent without delay. | 948 // Verify transmission time offset. This packet is sent without delay. |
948 EXPECT_EQ(0, rtp_header.extension.transmissionTimeOffset); | 949 EXPECT_EQ(0, rtp_header.extension.transmissionTimeOffset); |
949 uint64_t expected_send_time = | 950 uint64_t expected_send_time = |
950 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 951 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
951 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 952 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
952 } | 953 } |
953 | 954 |
954 TEST_F(RtpSenderTest, SendRedundantPayloads) { | 955 TEST_F(RtpSenderTest, SendRedundantPayloads) { |
955 MockTransport transport; | 956 MockTransport transport; |
956 rtp_sender_.reset(new RTPSender( | 957 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport, nullptr, |
957 false, &fake_clock_, &transport, nullptr, &mock_paced_sender_, nullptr, | 958 &mock_paced_sender_, nullptr, nullptr, |
958 nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_)); | 959 nullptr, nullptr, nullptr)); |
959 rtp_sender_->SetSequenceNumber(kSeqNum); | 960 rtp_sender_->SetSequenceNumber(kSeqNum); |
960 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); | 961 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); |
| 962 rtp_sender_->SetRtcEventLog(&mock_rtc_event_log_); |
961 | 963 |
962 uint16_t seq_num = kSeqNum; | 964 uint16_t seq_num = kSeqNum; |
963 rtp_sender_->SetStorePacketsStatus(true, 10); | 965 rtp_sender_->SetStorePacketsStatus(true, 10); |
964 int32_t rtp_header_len = kRtpHeaderSize; | 966 int32_t rtp_header_len = kRtpHeaderSize; |
965 EXPECT_EQ( | 967 EXPECT_EQ( |
966 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 968 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
967 kAbsoluteSendTimeExtensionId)); | 969 kAbsoluteSendTimeExtensionId)); |
968 rtp_header_len += 4; // 4 bytes extension. | 970 rtp_header_len += 4; // 4 bytes extension. |
969 rtp_header_len += 4; // 4 extra bytes common to all extension headers. | 971 rtp_header_len += 4; // 4 extra bytes common to all extension headers. |
970 | 972 |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1091 frame_counts_ = frame_counts; | 1093 frame_counts_ = frame_counts; |
1092 } | 1094 } |
1093 | 1095 |
1094 uint32_t num_calls_; | 1096 uint32_t num_calls_; |
1095 uint32_t ssrc_; | 1097 uint32_t ssrc_; |
1096 FrameCounts frame_counts_; | 1098 FrameCounts frame_counts_; |
1097 } callback; | 1099 } callback; |
1098 | 1100 |
1099 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 1101 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |
1100 &mock_paced_sender_, nullptr, nullptr, | 1102 &mock_paced_sender_, nullptr, nullptr, |
1101 nullptr, &callback, nullptr, nullptr)); | 1103 nullptr, &callback, nullptr)); |
1102 | 1104 |
1103 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 1105 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
1104 const uint8_t payload_type = 127; | 1106 const uint8_t payload_type = 127; |
1105 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 1107 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |
1106 0, 1500)); | 1108 0, 1500)); |
1107 uint8_t payload[] = {47, 11, 32, 93, 89}; | 1109 uint8_t payload[] = {47, 11, 32, 93, 89}; |
1108 rtp_sender_->SetStorePacketsStatus(true, 1); | 1110 rtp_sender_->SetStorePacketsStatus(true, 1); |
1109 uint32_t ssrc = rtp_sender_->SSRC(); | 1111 uint32_t ssrc = rtp_sender_->SSRC(); |
1110 | 1112 |
1111 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) | 1113 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1147 retransmit_stats_ = retransmit_stats; | 1149 retransmit_stats_ = retransmit_stats; |
1148 } | 1150 } |
1149 | 1151 |
1150 uint32_t num_calls_; | 1152 uint32_t num_calls_; |
1151 uint32_t ssrc_; | 1153 uint32_t ssrc_; |
1152 BitrateStatistics total_stats_; | 1154 BitrateStatistics total_stats_; |
1153 BitrateStatistics retransmit_stats_; | 1155 BitrateStatistics retransmit_stats_; |
1154 } callback; | 1156 } callback; |
1155 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 1157 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |
1156 nullptr, nullptr, nullptr, &callback, nullptr, | 1158 nullptr, nullptr, nullptr, &callback, nullptr, |
1157 nullptr, nullptr)); | 1159 nullptr)); |
1158 | 1160 |
1159 // Simulate kNumPackets sent with kPacketInterval ms intervals. | 1161 // Simulate kNumPackets sent with kPacketInterval ms intervals. |
1160 const uint32_t kNumPackets = 15; | 1162 const uint32_t kNumPackets = 15; |
1161 const uint32_t kPacketInterval = 20; | 1163 const uint32_t kPacketInterval = 20; |
1162 // Overhead = 12 bytes RTP header + 1 byte generic header. | 1164 // Overhead = 12 bytes RTP header + 1 byte generic header. |
1163 const uint32_t kPacketOverhead = 13; | 1165 const uint32_t kPacketOverhead = 13; |
1164 | 1166 |
1165 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 1167 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
1166 const uint8_t payload_type = 127; | 1168 const uint8_t payload_type = 127; |
1167 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 1169 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1200 } | 1202 } |
1201 | 1203 |
1202 class RtpSenderAudioTest : public RtpSenderTest { | 1204 class RtpSenderAudioTest : public RtpSenderTest { |
1203 protected: | 1205 protected: |
1204 RtpSenderAudioTest() {} | 1206 RtpSenderAudioTest() {} |
1205 | 1207 |
1206 void SetUp() override { | 1208 void SetUp() override { |
1207 payload_ = kAudioPayload; | 1209 payload_ = kAudioPayload; |
1208 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, | 1210 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, |
1209 nullptr, nullptr, nullptr, nullptr, nullptr, | 1211 nullptr, nullptr, nullptr, nullptr, nullptr, |
1210 nullptr, nullptr)); | 1212 nullptr)); |
1211 rtp_sender_->SetSequenceNumber(kSeqNum); | 1213 rtp_sender_->SetSequenceNumber(kSeqNum); |
1212 } | 1214 } |
1213 }; | 1215 }; |
1214 | 1216 |
1215 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { | 1217 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { |
1216 class TestCallback : public StreamDataCountersCallback { | 1218 class TestCallback : public StreamDataCountersCallback { |
1217 public: | 1219 public: |
1218 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} | 1220 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} |
1219 virtual ~TestCallback() {} | 1221 virtual ~TestCallback() {} |
1220 | 1222 |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1526 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), | 1528 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), |
1527 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); | 1529 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); |
1528 | 1530 |
1529 // Verify that this packet does have CVO byte. | 1531 // Verify that this packet does have CVO byte. |
1530 VerifyCVOPacket( | 1532 VerifyCVOPacket( |
1531 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), | 1533 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), |
1532 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, | 1534 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, |
1533 hdr.rotation); | 1535 hdr.rotation); |
1534 } | 1536 } |
1535 } // namespace webrtc | 1537 } // namespace webrtc |
OLD | NEW |