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 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 size_t bytes, | 119 size_t bytes, |
120 bool retransmission)); | 120 bool retransmission)); |
121 }; | 121 }; |
122 | 122 |
123 class MockTransportSequenceNumberAllocator | 123 class MockTransportSequenceNumberAllocator |
124 : public TransportSequenceNumberAllocator { | 124 : public TransportSequenceNumberAllocator { |
125 public: | 125 public: |
126 MOCK_METHOD0(AllocateSequenceNumber, uint16_t()); | 126 MOCK_METHOD0(AllocateSequenceNumber, uint16_t()); |
127 }; | 127 }; |
128 | 128 |
| 129 class MockSendPacketObserver : public SendPacketObserver { |
| 130 public: |
| 131 MOCK_METHOD3(OnSendPacket, void(uint16_t, int64_t, uint32_t)); |
| 132 }; |
| 133 |
129 class RtpSenderTest : public ::testing::Test { | 134 class RtpSenderTest : public ::testing::Test { |
130 protected: | 135 protected: |
131 RtpSenderTest() | 136 RtpSenderTest() |
132 : fake_clock_(kStartTime), | 137 : fake_clock_(kStartTime), |
133 mock_rtc_event_log_(), | 138 mock_rtc_event_log_(), |
134 mock_paced_sender_(), | 139 mock_paced_sender_(), |
135 rtp_sender_(), | 140 rtp_sender_(), |
136 payload_(kPayload), | 141 payload_(kPayload), |
137 transport_(), | 142 transport_(), |
138 kMarkerBit(true) { | 143 kMarkerBit(true) { |
139 } | 144 } |
140 | 145 |
141 void SetUp() override { SetUpRtpSender(true); } | 146 void SetUp() override { SetUpRtpSender(true); } |
142 | 147 |
143 void SetUpRtpSender(bool pacer) { | 148 void SetUpRtpSender(bool pacer) { |
144 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, | 149 rtp_sender_.reset(new RTPSender( |
145 pacer ? &mock_paced_sender_ : nullptr, | 150 false, &fake_clock_, &transport_, pacer ? &mock_paced_sender_ : nullptr, |
146 &seq_num_allocator_, nullptr, nullptr, | 151 &seq_num_allocator_, nullptr, nullptr, nullptr, nullptr, |
147 nullptr, nullptr, &mock_rtc_event_log_)); | 152 &mock_rtc_event_log_, &send_packet_observer_)); |
148 rtp_sender_->SetSequenceNumber(kSeqNum); | 153 rtp_sender_->SetSequenceNumber(kSeqNum); |
149 } | 154 } |
150 | 155 |
151 SimulatedClock fake_clock_; | 156 SimulatedClock fake_clock_; |
152 MockRtcEventLog mock_rtc_event_log_; | 157 MockRtcEventLog mock_rtc_event_log_; |
153 MockRtpPacketSender mock_paced_sender_; | 158 MockRtpPacketSender mock_paced_sender_; |
154 MockTransportSequenceNumberAllocator seq_num_allocator_; | 159 MockTransportSequenceNumberAllocator seq_num_allocator_; |
| 160 MockSendPacketObserver send_packet_observer_; |
155 rtc::scoped_ptr<RTPSender> rtp_sender_; | 161 rtc::scoped_ptr<RTPSender> rtp_sender_; |
156 int payload_; | 162 int payload_; |
157 LoopbackTransportTest transport_; | 163 LoopbackTransportTest transport_; |
158 const bool kMarkerBit; | 164 const bool kMarkerBit; |
159 uint8_t packet_[kMaxPacketLength]; | 165 uint8_t packet_[kMaxPacketLength]; |
160 | 166 |
161 void VerifyRTPHeaderCommon(const RTPHeader& rtp_header) { | 167 void VerifyRTPHeaderCommon(const RTPHeader& rtp_header) { |
162 VerifyRTPHeaderCommon(rtp_header, kMarkerBit, 0); | 168 VerifyRTPHeaderCommon(rtp_header, kMarkerBit, 0); |
163 } | 169 } |
164 | 170 |
(...skipping 17 matching lines...) Expand all Loading... |
182 uint32_t timestamp = capture_time_ms * 90; | 188 uint32_t timestamp = capture_time_ms * 90; |
183 int32_t rtp_length = rtp_sender_->BuildRTPheader( | 189 int32_t rtp_length = rtp_sender_->BuildRTPheader( |
184 packet_, kPayload, kMarkerBit, timestamp, capture_time_ms); | 190 packet_, kPayload, kMarkerBit, timestamp, capture_time_ms); |
185 ASSERT_GE(rtp_length, 0); | 191 ASSERT_GE(rtp_length, 0); |
186 | 192 |
187 // Packet should be stored in a send bucket. | 193 // Packet should be stored in a send bucket. |
188 EXPECT_EQ(0, rtp_sender_->SendToNetwork( | 194 EXPECT_EQ(0, rtp_sender_->SendToNetwork( |
189 packet_, payload_length, rtp_length, capture_time_ms, | 195 packet_, payload_length, rtp_length, capture_time_ms, |
190 kAllowRetransmission, RtpPacketSender::kNormalPriority)); | 196 kAllowRetransmission, RtpPacketSender::kNormalPriority)); |
191 } | 197 } |
| 198 |
| 199 void SendGenericPayload() { |
| 200 const uint8_t kPayload[] = {47, 11, 32, 93, 89}; |
| 201 const uint32_t kTimestamp = 1234; |
| 202 const uint8_t kPayloadType = 127; |
| 203 const int64_t kCaptureTimeMs = fake_clock_.TimeInMilliseconds(); |
| 204 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
| 205 EXPECT_EQ(0, rtp_sender_->RegisterPayload(payload_name, kPayloadType, 90000, |
| 206 0, 1500)); |
| 207 |
| 208 EXPECT_EQ(0, rtp_sender_->SendOutgoingData( |
| 209 kVideoFrameKey, kPayloadType, kTimestamp, kCaptureTimeMs, |
| 210 kPayload, sizeof(kPayload), nullptr)); |
| 211 } |
192 }; | 212 }; |
193 | 213 |
194 // TODO(pbos): Move tests over from WithoutPacer to RtpSenderTest as this is our | 214 // TODO(pbos): Move tests over from WithoutPacer to RtpSenderTest as this is our |
195 // default code path. | 215 // default code path. |
196 class RtpSenderTestWithoutPacer : public RtpSenderTest { | 216 class RtpSenderTestWithoutPacer : public RtpSenderTest { |
197 public: | 217 public: |
198 void SetUp() override { SetUpRtpSender(false); } | 218 void SetUp() override { SetUpRtpSender(false); } |
199 }; | 219 }; |
200 | 220 |
201 class RtpSenderVideoTest : public RtpSenderTest { | 221 class RtpSenderVideoTest : public RtpSenderTest { |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 | 496 |
477 TEST_F(RtpSenderTestWithoutPacer, SendsPacketsWithTransportSequenceNumber) { | 497 TEST_F(RtpSenderTestWithoutPacer, SendsPacketsWithTransportSequenceNumber) { |
478 // Ignore rtc event calls. | 498 // Ignore rtc event calls. |
479 EXPECT_CALL(mock_rtc_event_log_, | 499 EXPECT_CALL(mock_rtc_event_log_, |
480 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)); | 500 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)); |
481 | 501 |
482 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 502 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
483 kRtpExtensionTransportSequenceNumber, | 503 kRtpExtensionTransportSequenceNumber, |
484 kTransportSequenceNumberExtensionId)); | 504 kTransportSequenceNumberExtensionId)); |
485 | 505 |
486 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | |
487 const uint8_t payload_type = 127; | |
488 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | |
489 0, 1500)); | |
490 // Create a dummy payload of 5 bytes. | |
491 uint8_t payload[] = {47, 11, 32, 93, 89}; | |
492 | |
493 const uint16_t kTransportSequenceNumber = 17; | |
494 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 506 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
495 .WillOnce(testing::Return(kTransportSequenceNumber)); | 507 .WillOnce(testing::Return(kTransportSequenceNumber)); |
496 const uint32_t kTimestamp = 1234; | 508 EXPECT_CALL(send_packet_observer_, |
497 const int64_t kCaptureTimeMs = 4321; | 509 OnSendPacket(kTransportSequenceNumber, _, _)) |
498 ASSERT_EQ(0, rtp_sender_->SendOutgoingData( | 510 .Times(1); |
499 kVideoFrameKey, payload_type, kTimestamp, kCaptureTimeMs, | 511 |
500 payload, sizeof(payload), nullptr)); | 512 SendGenericPayload(); |
501 | 513 |
502 RtpUtility::RtpHeaderParser rtp_parser(transport_.last_sent_packet_, | 514 RtpUtility::RtpHeaderParser rtp_parser(transport_.last_sent_packet_, |
503 transport_.last_sent_packet_len_); | 515 transport_.last_sent_packet_len_); |
504 webrtc::RTPHeader rtp_header; | 516 webrtc::RTPHeader rtp_header; |
505 RtpHeaderExtensionMap map; | 517 RtpHeaderExtensionMap map; |
506 map.Register(kRtpExtensionTransportSequenceNumber, | 518 map.Register(kRtpExtensionTransportSequenceNumber, |
507 kTransportSequenceNumberExtensionId); | 519 kTransportSequenceNumberExtensionId); |
508 EXPECT_TRUE(rtp_parser.Parse(&rtp_header, &map)); | 520 EXPECT_TRUE(rtp_parser.Parse(&rtp_header, &map)); |
509 EXPECT_TRUE(rtp_header.extension.hasTransportSequenceNumber); | 521 EXPECT_TRUE(rtp_header.extension.hasTransportSequenceNumber); |
510 EXPECT_EQ(kTransportSequenceNumber, | 522 EXPECT_EQ(kTransportSequenceNumber, |
511 rtp_header.extension.transportSequenceNumber); | 523 rtp_header.extension.transportSequenceNumber); |
512 EXPECT_EQ(transport_.last_packet_id_, | 524 EXPECT_EQ(transport_.last_packet_id_, |
513 rtp_header.extension.transportSequenceNumber); | 525 rtp_header.extension.transportSequenceNumber); |
514 } | 526 } |
515 | 527 |
| 528 TEST_F(RtpSenderTestWithoutPacer, OnSendPacketUpdated) { |
| 529 EXPECT_CALL(mock_rtc_event_log_, // Ignore rtc event calls. |
| 530 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)); |
| 531 |
| 532 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
| 533 .WillOnce(testing::Return(kTransportSequenceNumber)); |
| 534 EXPECT_CALL(send_packet_observer_, |
| 535 OnSendPacket(kTransportSequenceNumber, _, _)) |
| 536 .Times(1); |
| 537 |
| 538 SendGenericPayload(); |
| 539 } |
| 540 |
516 // Test CVO header extension is only set when marker bit is true. | 541 // Test CVO header extension is only set when marker bit is true. |
517 TEST_F(RtpSenderTestWithoutPacer, BuildRTPPacketWithVideoRotation_MarkerBit) { | 542 TEST_F(RtpSenderTestWithoutPacer, BuildRTPPacketWithVideoRotation_MarkerBit) { |
518 rtp_sender_->SetVideoRotation(kRotation); | 543 rtp_sender_->SetVideoRotation(kRotation); |
519 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 544 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
520 kRtpExtensionVideoRotation, kVideoRotationExtensionId)); | 545 kRtpExtensionVideoRotation, kVideoRotationExtensionId)); |
521 EXPECT_TRUE(rtp_sender_->ActivateCVORtpHeaderExtension()); | 546 EXPECT_TRUE(rtp_sender_->ActivateCVORtpHeaderExtension()); |
522 | 547 |
523 RtpHeaderExtensionMap map; | 548 RtpHeaderExtensionMap map; |
524 map.Register(kRtpExtensionVideoRotation, kVideoRotationExtensionId); | 549 map.Register(kRtpExtensionVideoRotation, kVideoRotationExtensionId); |
525 | 550 |
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
944 // Verify sequence number and timestamp. | 969 // Verify sequence number and timestamp. |
945 EXPECT_EQ(seq_num, rtp_header.sequenceNumber); | 970 EXPECT_EQ(seq_num, rtp_header.sequenceNumber); |
946 EXPECT_EQ(timestamp, rtp_header.timestamp); | 971 EXPECT_EQ(timestamp, rtp_header.timestamp); |
947 // Verify transmission time offset. This packet is sent without delay. | 972 // Verify transmission time offset. This packet is sent without delay. |
948 EXPECT_EQ(0, rtp_header.extension.transmissionTimeOffset); | 973 EXPECT_EQ(0, rtp_header.extension.transmissionTimeOffset); |
949 uint64_t expected_send_time = | 974 uint64_t expected_send_time = |
950 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 975 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
951 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 976 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
952 } | 977 } |
953 | 978 |
| 979 TEST_F(RtpSenderTest, OnSendPacketUpdated) { |
| 980 EXPECT_CALL(mock_rtc_event_log_, // Ignore rtc event calls. |
| 981 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)); |
| 982 rtp_sender_->SetStorePacketsStatus(true, 10); |
| 983 |
| 984 EXPECT_CALL(send_packet_observer_, |
| 985 OnSendPacket(kTransportSequenceNumber, _, _)) |
| 986 .Times(1); |
| 987 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
| 988 .WillOnce(testing::Return(kTransportSequenceNumber)); |
| 989 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)).Times(1); |
| 990 |
| 991 SendGenericPayload(); // Packet passed to pacer. |
| 992 const bool kIsRetransmit = false; |
| 993 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), |
| 994 kIsRetransmit); |
| 995 EXPECT_EQ(1, transport_.packets_sent_); |
| 996 } |
| 997 |
| 998 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedForRetransmits) { |
| 999 EXPECT_CALL(mock_rtc_event_log_, // Ignore rtc event calls. |
| 1000 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)); |
| 1001 rtp_sender_->SetStorePacketsStatus(true, 10); |
| 1002 |
| 1003 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); |
| 1004 EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |
| 1005 .WillOnce(testing::Return(kTransportSequenceNumber)); |
| 1006 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)).Times(1); |
| 1007 |
| 1008 SendGenericPayload(); // Packet passed to pacer. |
| 1009 const bool kIsRetransmit = true; |
| 1010 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), |
| 1011 kIsRetransmit); |
| 1012 EXPECT_EQ(1, transport_.packets_sent_); |
| 1013 } |
| 1014 |
| 1015 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) { |
| 1016 rtp_sender_.reset(new RTPSender( |
| 1017 false, &fake_clock_, &transport_, &mock_paced_sender_, |
| 1018 nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr, |
| 1019 nullptr, nullptr, &send_packet_observer_)); |
| 1020 rtp_sender_->SetSequenceNumber(kSeqNum); |
| 1021 rtp_sender_->SetStorePacketsStatus(true, 10); |
| 1022 |
| 1023 EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); |
| 1024 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)).Times(1); |
| 1025 |
| 1026 SendGenericPayload(); // Packet passed to pacer. |
| 1027 const bool kIsRetransmit = false; |
| 1028 rtp_sender_->TimeToSendPacket(kSeqNum, fake_clock_.TimeInMilliseconds(), |
| 1029 kIsRetransmit); |
| 1030 EXPECT_EQ(1, transport_.packets_sent_); |
| 1031 } |
| 1032 |
954 TEST_F(RtpSenderTest, SendRedundantPayloads) { | 1033 TEST_F(RtpSenderTest, SendRedundantPayloads) { |
955 MockTransport transport; | 1034 MockTransport transport; |
956 rtp_sender_.reset(new RTPSender( | 1035 rtp_sender_.reset(new RTPSender( |
957 false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, | 1036 false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr, |
958 nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_)); | 1037 nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr)); |
| 1038 |
959 rtp_sender_->SetSequenceNumber(kSeqNum); | 1039 rtp_sender_->SetSequenceNumber(kSeqNum); |
960 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); | 1040 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); |
961 | 1041 |
962 uint16_t seq_num = kSeqNum; | 1042 uint16_t seq_num = kSeqNum; |
963 rtp_sender_->SetStorePacketsStatus(true, 10); | 1043 rtp_sender_->SetStorePacketsStatus(true, 10); |
964 int32_t rtp_header_len = kRtpHeaderSize; | 1044 int32_t rtp_header_len = kRtpHeaderSize; |
965 EXPECT_EQ( | 1045 EXPECT_EQ( |
966 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 1046 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
967 kAbsoluteSendTimeExtensionId)); | 1047 kAbsoluteSendTimeExtensionId)); |
968 rtp_header_len += 4; // 4 bytes extension. | 1048 rtp_header_len += 4; // 4 bytes extension. |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1089 ++num_calls_; | 1169 ++num_calls_; |
1090 ssrc_ = ssrc; | 1170 ssrc_ = ssrc; |
1091 frame_counts_ = frame_counts; | 1171 frame_counts_ = frame_counts; |
1092 } | 1172 } |
1093 | 1173 |
1094 uint32_t num_calls_; | 1174 uint32_t num_calls_; |
1095 uint32_t ssrc_; | 1175 uint32_t ssrc_; |
1096 FrameCounts frame_counts_; | 1176 FrameCounts frame_counts_; |
1097 } callback; | 1177 } callback; |
1098 | 1178 |
1099 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, | 1179 rtp_sender_.reset(new RTPSender( |
1100 &mock_paced_sender_, nullptr, nullptr, | 1180 false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr, nullptr, |
1101 nullptr, &callback, nullptr, nullptr)); | 1181 nullptr, &callback, nullptr, nullptr, nullptr)); |
1102 | 1182 |
1103 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 1183 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
1104 const uint8_t payload_type = 127; | 1184 const uint8_t payload_type = 127; |
1105 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 1185 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |
1106 0, 1500)); | 1186 0, 1500)); |
1107 uint8_t payload[] = {47, 11, 32, 93, 89}; | 1187 uint8_t payload[] = {47, 11, 32, 93, 89}; |
1108 rtp_sender_->SetStorePacketsStatus(true, 1); | 1188 rtp_sender_->SetStorePacketsStatus(true, 1); |
1109 uint32_t ssrc = rtp_sender_->SSRC(); | 1189 uint32_t ssrc = rtp_sender_->SSRC(); |
1110 | 1190 |
1111 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) | 1191 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1145 ssrc_ = ssrc; | 1225 ssrc_ = ssrc; |
1146 total_stats_ = total_stats; | 1226 total_stats_ = total_stats; |
1147 retransmit_stats_ = retransmit_stats; | 1227 retransmit_stats_ = retransmit_stats; |
1148 } | 1228 } |
1149 | 1229 |
1150 uint32_t num_calls_; | 1230 uint32_t num_calls_; |
1151 uint32_t ssrc_; | 1231 uint32_t ssrc_; |
1152 BitrateStatistics total_stats_; | 1232 BitrateStatistics total_stats_; |
1153 BitrateStatistics retransmit_stats_; | 1233 BitrateStatistics retransmit_stats_; |
1154 } callback; | 1234 } callback; |
1155 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, | 1235 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |
1156 nullptr, nullptr, nullptr, &callback, nullptr, | 1236 nullptr, nullptr, &callback, nullptr, nullptr, |
1157 nullptr, nullptr)); | 1237 nullptr, nullptr)); |
1158 | 1238 |
1159 // Simulate kNumPackets sent with kPacketInterval ms intervals. | 1239 // Simulate kNumPackets sent with kPacketInterval ms intervals. |
1160 const uint32_t kNumPackets = 15; | 1240 const uint32_t kNumPackets = 15; |
1161 const uint32_t kPacketInterval = 20; | 1241 const uint32_t kPacketInterval = 20; |
1162 // Overhead = 12 bytes RTP header + 1 byte generic header. | 1242 // Overhead = 12 bytes RTP header + 1 byte generic header. |
1163 const uint32_t kPacketOverhead = 13; | 1243 const uint32_t kPacketOverhead = 13; |
1164 | 1244 |
1165 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 1245 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
1166 const uint8_t payload_type = 127; | 1246 const uint8_t payload_type = 127; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1198 | 1278 |
1199 rtp_sender_.reset(); | 1279 rtp_sender_.reset(); |
1200 } | 1280 } |
1201 | 1281 |
1202 class RtpSenderAudioTest : public RtpSenderTest { | 1282 class RtpSenderAudioTest : public RtpSenderTest { |
1203 protected: | 1283 protected: |
1204 RtpSenderAudioTest() {} | 1284 RtpSenderAudioTest() {} |
1205 | 1285 |
1206 void SetUp() override { | 1286 void SetUp() override { |
1207 payload_ = kAudioPayload; | 1287 payload_ = kAudioPayload; |
1208 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, | 1288 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, |
1209 nullptr, nullptr, nullptr, nullptr, nullptr, | 1289 nullptr, nullptr, nullptr, nullptr, nullptr, |
1210 nullptr, nullptr)); | 1290 nullptr, nullptr)); |
1211 rtp_sender_->SetSequenceNumber(kSeqNum); | 1291 rtp_sender_->SetSequenceNumber(kSeqNum); |
1212 } | 1292 } |
1213 }; | 1293 }; |
1214 | 1294 |
1215 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { | 1295 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { |
1216 class TestCallback : public StreamDataCountersCallback { | 1296 class TestCallback : public StreamDataCountersCallback { |
1217 public: | 1297 public: |
1218 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} | 1298 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1526 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), | 1606 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), |
1527 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); | 1607 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); |
1528 | 1608 |
1529 // Verify that this packet does have CVO byte. | 1609 // Verify that this packet does have CVO byte. |
1530 VerifyCVOPacket( | 1610 VerifyCVOPacket( |
1531 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), | 1611 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), |
1532 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, | 1612 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, |
1533 hdr.rotation); | 1613 hdr.rotation); |
1534 } | 1614 } |
1535 } // namespace webrtc | 1615 } // namespace webrtc |
OLD | NEW |