Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc

Issue 1478253002: Add histogram stats for send delay for a sent video stream. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698