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