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

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: rebase Created 4 years, 7 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
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender.cc ('k') | webrtc/video/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender.cc ('k') | webrtc/video/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698