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

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

Issue 2089773002: Add EncodedImageCallback::OnEncodedImage(). (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: update SendOutgoingData() Created 4 years, 4 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 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 const uint8_t kPayload[] = {47, 11, 32, 93, 89}; 199 const uint8_t kPayload[] = {47, 11, 32, 93, 89};
200 const uint32_t kTimestamp = 1234; 200 const uint32_t kTimestamp = 1234;
201 const uint8_t kPayloadType = 127; 201 const uint8_t kPayloadType = 127;
202 const int64_t kCaptureTimeMs = fake_clock_.TimeInMilliseconds(); 202 const int64_t kCaptureTimeMs = fake_clock_.TimeInMilliseconds();
203 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; 203 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC";
204 EXPECT_EQ(0, rtp_sender_->RegisterPayload(payload_name, kPayloadType, 90000, 204 EXPECT_EQ(0, rtp_sender_->RegisterPayload(payload_name, kPayloadType, 90000,
205 0, 1500)); 205 0, 1500));
206 206
207 EXPECT_EQ(0, rtp_sender_->SendOutgoingData( 207 EXPECT_EQ(0, rtp_sender_->SendOutgoingData(
208 kVideoFrameKey, kPayloadType, kTimestamp, kCaptureTimeMs, 208 kVideoFrameKey, kPayloadType, kTimestamp, kCaptureTimeMs,
209 kPayload, sizeof(kPayload), nullptr)); 209 kPayload, sizeof(kPayload), nullptr, nullptr, nullptr));
210 } 210 }
211 }; 211 };
212 212
213 // TODO(pbos): Move tests over from WithoutPacer to RtpSenderTest as this is our 213 // TODO(pbos): Move tests over from WithoutPacer to RtpSenderTest as this is our
214 // default code path. 214 // default code path.
215 class RtpSenderTestWithoutPacer : public RtpSenderTest { 215 class RtpSenderTestWithoutPacer : public RtpSenderTest {
216 public: 216 public:
217 void SetUp() override { SetUpRtpSender(false); } 217 void SetUp() override { SetUpRtpSender(false); }
218 }; 218 };
219 219
(...skipping 882 matching lines...) Expand 10 before | Expand all | Expand 10 after
1102 } 1102 }
1103 1103
1104 TEST_F(RtpSenderTestWithoutPacer, SendGenericVideo) { 1104 TEST_F(RtpSenderTestWithoutPacer, SendGenericVideo) {
1105 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; 1105 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC";
1106 const uint8_t payload_type = 127; 1106 const uint8_t payload_type = 127;
1107 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, 1107 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000,
1108 0, 1500)); 1108 0, 1500));
1109 uint8_t payload[] = {47, 11, 32, 93, 89}; 1109 uint8_t payload[] = {47, 11, 32, 93, 89};
1110 1110
1111 // Send keyframe 1111 // Send keyframe
1112 ASSERT_EQ( 1112 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kVideoFrameKey, payload_type, 1234,
1113 0, rtp_sender_->SendOutgoingData(kVideoFrameKey, payload_type, 1234, 4321, 1113 4321, payload, sizeof(payload),
1114 payload, sizeof(payload), nullptr)); 1114 nullptr, nullptr, nullptr));
1115 1115
1116 RtpUtility::RtpHeaderParser rtp_parser(transport_.last_sent_packet_, 1116 RtpUtility::RtpHeaderParser rtp_parser(transport_.last_sent_packet_,
1117 transport_.last_sent_packet_len_); 1117 transport_.last_sent_packet_len_);
1118 webrtc::RTPHeader rtp_header; 1118 webrtc::RTPHeader rtp_header;
1119 ASSERT_TRUE(rtp_parser.Parse(&rtp_header)); 1119 ASSERT_TRUE(rtp_parser.Parse(&rtp_header));
1120 1120
1121 const uint8_t* payload_data = 1121 const uint8_t* payload_data =
1122 GetPayloadData(rtp_header, transport_.last_sent_packet_); 1122 GetPayloadData(rtp_header, transport_.last_sent_packet_);
1123 uint8_t generic_header = *payload_data++; 1123 uint8_t generic_header = *payload_data++;
1124 1124
1125 ASSERT_EQ(sizeof(payload) + sizeof(generic_header), 1125 ASSERT_EQ(sizeof(payload) + sizeof(generic_header),
1126 GetPayloadDataLength(rtp_header, transport_.last_sent_packet_len_)); 1126 GetPayloadDataLength(rtp_header, transport_.last_sent_packet_len_));
1127 1127
1128 EXPECT_TRUE(generic_header & RtpFormatVideoGeneric::kKeyFrameBit); 1128 EXPECT_TRUE(generic_header & RtpFormatVideoGeneric::kKeyFrameBit);
1129 EXPECT_TRUE(generic_header & RtpFormatVideoGeneric::kFirstPacketBit); 1129 EXPECT_TRUE(generic_header & RtpFormatVideoGeneric::kFirstPacketBit);
1130 1130
1131 EXPECT_EQ(0, memcmp(payload, payload_data, sizeof(payload))); 1131 EXPECT_EQ(0, memcmp(payload, payload_data, sizeof(payload)));
1132 1132
1133 // Send delta frame 1133 // Send delta frame
1134 payload[0] = 13; 1134 payload[0] = 13;
1135 payload[1] = 42; 1135 payload[1] = 42;
1136 payload[4] = 13; 1136 payload[4] = 13;
1137 1137
1138 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kVideoFrameDelta, payload_type, 1138 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(
1139 1234, 4321, payload, 1139 kVideoFrameDelta, payload_type, 1234, 4321, payload,
1140 sizeof(payload), nullptr)); 1140 sizeof(payload), nullptr, nullptr, nullptr));
1141 1141
1142 RtpUtility::RtpHeaderParser rtp_parser2(transport_.last_sent_packet_, 1142 RtpUtility::RtpHeaderParser rtp_parser2(transport_.last_sent_packet_,
1143 transport_.last_sent_packet_len_); 1143 transport_.last_sent_packet_len_);
1144 ASSERT_TRUE(rtp_parser.Parse(&rtp_header)); 1144 ASSERT_TRUE(rtp_parser.Parse(&rtp_header));
1145 1145
1146 payload_data = GetPayloadData(rtp_header, transport_.last_sent_packet_); 1146 payload_data = GetPayloadData(rtp_header, transport_.last_sent_packet_);
1147 generic_header = *payload_data++; 1147 generic_header = *payload_data++;
1148 1148
1149 EXPECT_FALSE(generic_header & RtpFormatVideoGeneric::kKeyFrameBit); 1149 EXPECT_FALSE(generic_header & RtpFormatVideoGeneric::kKeyFrameBit);
1150 EXPECT_TRUE(generic_header & RtpFormatVideoGeneric::kFirstPacketBit); 1150 EXPECT_TRUE(generic_header & RtpFormatVideoGeneric::kFirstPacketBit);
(...skipping 30 matching lines...) Expand all
1181 const uint8_t payload_type = 127; 1181 const uint8_t payload_type = 127;
1182 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, 1182 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000,
1183 0, 1500)); 1183 0, 1500));
1184 uint8_t payload[] = {47, 11, 32, 93, 89}; 1184 uint8_t payload[] = {47, 11, 32, 93, 89};
1185 rtp_sender_->SetStorePacketsStatus(true, 1); 1185 rtp_sender_->SetStorePacketsStatus(true, 1);
1186 uint32_t ssrc = rtp_sender_->SSRC(); 1186 uint32_t ssrc = rtp_sender_->SSRC();
1187 1187
1188 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) 1188 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _))
1189 .Times(::testing::AtLeast(2)); 1189 .Times(::testing::AtLeast(2));
1190 1190
1191 ASSERT_EQ( 1191 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kVideoFrameKey, payload_type, 1234,
1192 0, rtp_sender_->SendOutgoingData(kVideoFrameKey, payload_type, 1234, 4321, 1192 4321, payload, sizeof(payload),
1193 payload, sizeof(payload), nullptr)); 1193 nullptr, nullptr, nullptr));
1194 1194
1195 EXPECT_EQ(1U, callback.num_calls_); 1195 EXPECT_EQ(1U, callback.num_calls_);
1196 EXPECT_EQ(ssrc, callback.ssrc_); 1196 EXPECT_EQ(ssrc, callback.ssrc_);
1197 EXPECT_EQ(1, callback.frame_counts_.key_frames); 1197 EXPECT_EQ(1, callback.frame_counts_.key_frames);
1198 EXPECT_EQ(0, callback.frame_counts_.delta_frames); 1198 EXPECT_EQ(0, callback.frame_counts_.delta_frames);
1199 1199
1200 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kVideoFrameDelta, payload_type, 1200 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(
1201 1234, 4321, payload, 1201 kVideoFrameDelta, payload_type, 1234, 4321, payload,
1202 sizeof(payload), nullptr)); 1202 sizeof(payload), nullptr, nullptr, nullptr));
1203 1203
1204 EXPECT_EQ(2U, callback.num_calls_); 1204 EXPECT_EQ(2U, callback.num_calls_);
1205 EXPECT_EQ(ssrc, callback.ssrc_); 1205 EXPECT_EQ(ssrc, callback.ssrc_);
1206 EXPECT_EQ(1, callback.frame_counts_.key_frames); 1206 EXPECT_EQ(1, callback.frame_counts_.key_frames);
1207 EXPECT_EQ(1, callback.frame_counts_.delta_frames); 1207 EXPECT_EQ(1, callback.frame_counts_.delta_frames);
1208 1208
1209 rtp_sender_.reset(); 1209 rtp_sender_.reset();
1210 } 1210 }
1211 1211
1212 TEST_F(RtpSenderTest, BitrateCallbacks) { 1212 TEST_F(RtpSenderTest, BitrateCallbacks) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 0, 1500)); 1254 0, 1500));
1255 uint8_t payload[] = {47, 11, 32, 93, 89}; 1255 uint8_t payload[] = {47, 11, 32, 93, 89};
1256 rtp_sender_->SetStorePacketsStatus(true, 1); 1256 rtp_sender_->SetStorePacketsStatus(true, 1);
1257 uint32_t ssrc = rtp_sender_->SSRC(); 1257 uint32_t ssrc = rtp_sender_->SSRC();
1258 1258
1259 // Initial process call so we get a new time window. 1259 // Initial process call so we get a new time window.
1260 rtp_sender_->ProcessBitrate(); 1260 rtp_sender_->ProcessBitrate();
1261 1261
1262 // Send a few frames. 1262 // Send a few frames.
1263 for (uint32_t i = 0; i < kNumPackets; ++i) { 1263 for (uint32_t i = 0; i < kNumPackets; ++i) {
1264 ASSERT_EQ(0, 1264 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(
1265 rtp_sender_->SendOutgoingData(kVideoFrameKey, payload_type, 1234, 1265 kVideoFrameKey, payload_type, 1234, 4321, payload,
1266 4321, payload, sizeof(payload), 0)); 1266 sizeof(payload), nullptr, nullptr, nullptr));
1267 fake_clock_.AdvanceTimeMilliseconds(kPacketInterval); 1267 fake_clock_.AdvanceTimeMilliseconds(kPacketInterval);
1268 } 1268 }
1269 1269
1270 rtp_sender_->ProcessBitrate(); 1270 rtp_sender_->ProcessBitrate();
1271 1271
1272 // We get one call for every stats updated, thus two calls since both the 1272 // We get one call for every stats updated, thus two calls since both the
1273 // stream stats and the retransmit stats are updated once. 1273 // stream stats and the retransmit stats are updated once.
1274 EXPECT_EQ(2u, callback.num_calls_); 1274 EXPECT_EQ(2u, callback.num_calls_);
1275 EXPECT_EQ(ssrc, callback.ssrc_); 1275 EXPECT_EQ(ssrc, callback.ssrc_);
1276 const uint32_t kTotalPacketSize = kPacketOverhead + sizeof(payload); 1276 const uint32_t kTotalPacketSize = kPacketOverhead + sizeof(payload);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1335 const uint8_t payload_type = 127; 1335 const uint8_t payload_type = 127;
1336 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, 1336 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000,
1337 0, 1500)); 1337 0, 1500));
1338 uint8_t payload[] = {47, 11, 32, 93, 89}; 1338 uint8_t payload[] = {47, 11, 32, 93, 89};
1339 rtp_sender_->SetStorePacketsStatus(true, 1); 1339 rtp_sender_->SetStorePacketsStatus(true, 1);
1340 uint32_t ssrc = rtp_sender_->SSRC(); 1340 uint32_t ssrc = rtp_sender_->SSRC();
1341 1341
1342 rtp_sender_->RegisterRtpStatisticsCallback(&callback); 1342 rtp_sender_->RegisterRtpStatisticsCallback(&callback);
1343 1343
1344 // Send a frame. 1344 // Send a frame.
1345 ASSERT_EQ( 1345 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kVideoFrameKey, payload_type, 1234,
1346 0, rtp_sender_->SendOutgoingData(kVideoFrameKey, payload_type, 1234, 4321, 1346 4321, payload, sizeof(payload),
1347 payload, sizeof(payload), nullptr)); 1347 nullptr, nullptr, nullptr));
1348 StreamDataCounters expected; 1348 StreamDataCounters expected;
1349 expected.transmitted.payload_bytes = 6; 1349 expected.transmitted.payload_bytes = 6;
1350 expected.transmitted.header_bytes = 12; 1350 expected.transmitted.header_bytes = 12;
1351 expected.transmitted.padding_bytes = 0; 1351 expected.transmitted.padding_bytes = 0;
1352 expected.transmitted.packets = 1; 1352 expected.transmitted.packets = 1;
1353 expected.retransmitted.payload_bytes = 0; 1353 expected.retransmitted.payload_bytes = 0;
1354 expected.retransmitted.header_bytes = 0; 1354 expected.retransmitted.header_bytes = 0;
1355 expected.retransmitted.padding_bytes = 0; 1355 expected.retransmitted.padding_bytes = 0;
1356 expected.retransmitted.packets = 0; 1356 expected.retransmitted.packets = 0;
1357 expected.fec.packets = 0; 1357 expected.fec.packets = 0;
(...skipping 19 matching lines...) Expand all
1377 expected.transmitted.packets = 3; 1377 expected.transmitted.packets = 3;
1378 callback.Matches(ssrc, expected); 1378 callback.Matches(ssrc, expected);
1379 1379
1380 // Send FEC. 1380 // Send FEC.
1381 rtp_sender_->SetGenericFECStatus(true, kRedPayloadType, kUlpfecPayloadType); 1381 rtp_sender_->SetGenericFECStatus(true, kRedPayloadType, kUlpfecPayloadType);
1382 FecProtectionParams fec_params; 1382 FecProtectionParams fec_params;
1383 fec_params.fec_mask_type = kFecMaskRandom; 1383 fec_params.fec_mask_type = kFecMaskRandom;
1384 fec_params.fec_rate = 1; 1384 fec_params.fec_rate = 1;
1385 fec_params.max_fec_frames = 1; 1385 fec_params.max_fec_frames = 1;
1386 rtp_sender_->SetFecParameters(&fec_params, &fec_params); 1386 rtp_sender_->SetFecParameters(&fec_params, &fec_params);
1387 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kVideoFrameDelta, payload_type, 1387 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(
1388 1234, 4321, payload, 1388 kVideoFrameDelta, payload_type, 1234, 4321, payload,
1389 sizeof(payload), nullptr)); 1389 sizeof(payload), nullptr, nullptr, nullptr));
1390 expected.transmitted.payload_bytes = 40; 1390 expected.transmitted.payload_bytes = 40;
1391 expected.transmitted.header_bytes = 60; 1391 expected.transmitted.header_bytes = 60;
1392 expected.transmitted.packets = 5; 1392 expected.transmitted.packets = 5;
1393 expected.fec.packets = 1; 1393 expected.fec.packets = 1;
1394 callback.Matches(ssrc, expected); 1394 callback.Matches(ssrc, expected);
1395 1395
1396 rtp_sender_->RegisterRtpStatisticsCallback(nullptr); 1396 rtp_sender_->RegisterRtpStatisticsCallback(nullptr);
1397 } 1397 }
1398 1398
1399 TEST_F(RtpSenderAudioTest, SendAudio) { 1399 TEST_F(RtpSenderAudioTest, SendAudio) {
1400 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "PAYLOAD_NAME"; 1400 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "PAYLOAD_NAME";
1401 const uint8_t payload_type = 127; 1401 const uint8_t payload_type = 127;
1402 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 48000, 1402 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 48000,
1403 0, 1500)); 1403 0, 1500));
1404 uint8_t payload[] = {47, 11, 32, 93, 89}; 1404 uint8_t payload[] = {47, 11, 32, 93, 89};
1405 1405
1406 ASSERT_EQ( 1406 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kAudioFrameCN, payload_type, 1234,
1407 0, rtp_sender_->SendOutgoingData(kAudioFrameCN, payload_type, 1234, 4321, 1407 4321, payload, sizeof(payload),
1408 payload, sizeof(payload), nullptr)); 1408 nullptr, nullptr, nullptr));
1409 1409
1410 RtpUtility::RtpHeaderParser rtp_parser(transport_.last_sent_packet_, 1410 RtpUtility::RtpHeaderParser rtp_parser(transport_.last_sent_packet_,
1411 transport_.last_sent_packet_len_); 1411 transport_.last_sent_packet_len_);
1412 webrtc::RTPHeader rtp_header; 1412 webrtc::RTPHeader rtp_header;
1413 ASSERT_TRUE(rtp_parser.Parse(&rtp_header)); 1413 ASSERT_TRUE(rtp_parser.Parse(&rtp_header));
1414 1414
1415 const uint8_t* payload_data = 1415 const uint8_t* payload_data =
1416 GetPayloadData(rtp_header, transport_.last_sent_packet_); 1416 GetPayloadData(rtp_header, transport_.last_sent_packet_);
1417 1417
1418 ASSERT_EQ(sizeof(payload), 1418 ASSERT_EQ(sizeof(payload),
1419 GetPayloadDataLength(rtp_header, transport_.last_sent_packet_len_)); 1419 GetPayloadDataLength(rtp_header, transport_.last_sent_packet_len_));
1420 1420
1421 EXPECT_EQ(0, memcmp(payload, payload_data, sizeof(payload))); 1421 EXPECT_EQ(0, memcmp(payload, payload_data, sizeof(payload)));
1422 } 1422 }
1423 1423
1424 TEST_F(RtpSenderAudioTest, SendAudioWithAudioLevelExtension) { 1424 TEST_F(RtpSenderAudioTest, SendAudioWithAudioLevelExtension) {
1425 EXPECT_EQ(0, rtp_sender_->SetAudioLevel(kAudioLevel)); 1425 EXPECT_EQ(0, rtp_sender_->SetAudioLevel(kAudioLevel));
1426 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAudioLevel, 1426 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAudioLevel,
1427 kAudioLevelExtensionId)); 1427 kAudioLevelExtensionId));
1428 1428
1429 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "PAYLOAD_NAME"; 1429 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "PAYLOAD_NAME";
1430 const uint8_t payload_type = 127; 1430 const uint8_t payload_type = 127;
1431 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 48000, 1431 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 48000,
1432 0, 1500)); 1432 0, 1500));
1433 uint8_t payload[] = {47, 11, 32, 93, 89}; 1433 uint8_t payload[] = {47, 11, 32, 93, 89};
1434 1434
1435 ASSERT_EQ( 1435 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kAudioFrameCN, payload_type, 1234,
1436 0, rtp_sender_->SendOutgoingData(kAudioFrameCN, payload_type, 1234, 4321, 1436 4321, payload, sizeof(payload),
1437 payload, sizeof(payload), nullptr)); 1437 nullptr, nullptr, nullptr));
1438 1438
1439 RtpUtility::RtpHeaderParser rtp_parser(transport_.last_sent_packet_, 1439 RtpUtility::RtpHeaderParser rtp_parser(transport_.last_sent_packet_,
1440 transport_.last_sent_packet_len_); 1440 transport_.last_sent_packet_len_);
1441 webrtc::RTPHeader rtp_header; 1441 webrtc::RTPHeader rtp_header;
1442 ASSERT_TRUE(rtp_parser.Parse(&rtp_header)); 1442 ASSERT_TRUE(rtp_parser.Parse(&rtp_header));
1443 1443
1444 const uint8_t* payload_data = 1444 const uint8_t* payload_data =
1445 GetPayloadData(rtp_header, transport_.last_sent_packet_); 1445 GetPayloadData(rtp_header, transport_.last_sent_packet_);
1446 1446
1447 ASSERT_EQ(sizeof(payload), 1447 ASSERT_EQ(sizeof(payload),
(...skipping 30 matching lines...) Expand all
1478 ASSERT_EQ( 1478 ASSERT_EQ(
1479 0, rtp_sender_->RegisterPayload(kPayloadName, payload_type, 8000, 1, 0)); 1479 0, rtp_sender_->RegisterPayload(kPayloadName, payload_type, 8000, 1, 0));
1480 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); 1480 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
1481 // DTMF event key=9, duration=500 and attenuationdB=10 1481 // DTMF event key=9, duration=500 and attenuationdB=10
1482 rtp_sender_->SendTelephoneEvent(9, 500, 10); 1482 rtp_sender_->SendTelephoneEvent(9, 500, 10);
1483 // During start, it takes the starting timestamp as last sent timestamp. 1483 // During start, it takes the starting timestamp as last sent timestamp.
1484 // The duration is calculated as the difference of current and last sent 1484 // The duration is calculated as the difference of current and last sent
1485 // timestamp. So for first call it will skip since the duration is zero. 1485 // timestamp. So for first call it will skip since the duration is zero.
1486 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kEmptyFrame, payload_type, 1486 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kEmptyFrame, payload_type,
1487 capture_time_ms, 0, nullptr, 0, 1487 capture_time_ms, 0, nullptr, 0,
1488 nullptr)); 1488 nullptr, nullptr, nullptr));
1489 // DTMF Sample Length is (Frequency/1000) * Duration. 1489 // DTMF Sample Length is (Frequency/1000) * Duration.
1490 // So in this case, it is (8000/1000) * 500 = 4000. 1490 // So in this case, it is (8000/1000) * 500 = 4000.
1491 // Sending it as two packets. 1491 // Sending it as two packets.
1492 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kEmptyFrame, payload_type, 1492 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kEmptyFrame, payload_type,
1493 capture_time_ms + 2000, 0, nullptr, 1493 capture_time_ms + 2000, 0, nullptr,
1494 0, nullptr)); 1494 0, nullptr, nullptr, nullptr));
1495 std::unique_ptr<webrtc::RtpHeaderParser> rtp_parser( 1495 std::unique_ptr<webrtc::RtpHeaderParser> rtp_parser(
1496 webrtc::RtpHeaderParser::Create()); 1496 webrtc::RtpHeaderParser::Create());
1497 ASSERT_TRUE(rtp_parser.get() != nullptr); 1497 ASSERT_TRUE(rtp_parser.get() != nullptr);
1498 webrtc::RTPHeader rtp_header; 1498 webrtc::RTPHeader rtp_header;
1499 ASSERT_TRUE(rtp_parser->Parse(transport_.last_sent_packet_, 1499 ASSERT_TRUE(rtp_parser->Parse(transport_.last_sent_packet_,
1500 transport_.last_sent_packet_len_, &rtp_header)); 1500 transport_.last_sent_packet_len_, &rtp_header));
1501 // Marker Bit should be set to 1 for first packet. 1501 // Marker Bit should be set to 1 for first packet.
1502 EXPECT_TRUE(rtp_header.markerBit); 1502 EXPECT_TRUE(rtp_header.markerBit);
1503 1503
1504 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kEmptyFrame, payload_type, 1504 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kEmptyFrame, payload_type,
1505 capture_time_ms + 4000, 0, nullptr, 1505 capture_time_ms + 4000, 0, nullptr,
1506 0, nullptr)); 1506 0, nullptr, nullptr, nullptr));
1507 ASSERT_TRUE(rtp_parser->Parse(transport_.last_sent_packet_, 1507 ASSERT_TRUE(rtp_parser->Parse(transport_.last_sent_packet_,
1508 transport_.last_sent_packet_len_, &rtp_header)); 1508 transport_.last_sent_packet_len_, &rtp_header));
1509 // Marker Bit should be set to 0 for rest of the packets. 1509 // Marker Bit should be set to 0 for rest of the packets.
1510 EXPECT_FALSE(rtp_header.markerBit); 1510 EXPECT_FALSE(rtp_header.markerBit);
1511 } 1511 }
1512 1512
1513 TEST_F(RtpSenderTestWithoutPacer, BytesReportedCorrectly) { 1513 TEST_F(RtpSenderTestWithoutPacer, BytesReportedCorrectly) {
1514 const char* kPayloadName = "GENERIC"; 1514 const char* kPayloadName = "GENERIC";
1515 const uint8_t kPayloadType = 127; 1515 const uint8_t kPayloadType = 127;
1516 rtp_sender_->SetSSRC(1234); 1516 rtp_sender_->SetSSRC(1234);
1517 rtp_sender_->SetRtxSsrc(4321); 1517 rtp_sender_->SetRtxSsrc(4321);
1518 rtp_sender_->SetRtxPayloadType(kPayloadType - 1, kPayloadType); 1518 rtp_sender_->SetRtxPayloadType(kPayloadType - 1, kPayloadType);
1519 rtp_sender_->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads); 1519 rtp_sender_->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads);
1520 1520
1521 ASSERT_EQ(0, rtp_sender_->RegisterPayload(kPayloadName, kPayloadType, 90000, 1521 ASSERT_EQ(0, rtp_sender_->RegisterPayload(kPayloadName, kPayloadType, 90000,
1522 0, 1500)); 1522 0, 1500));
1523 uint8_t payload[] = {47, 11, 32, 93, 89}; 1523 uint8_t payload[] = {47, 11, 32, 93, 89};
1524 1524
1525 ASSERT_EQ( 1525 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kVideoFrameKey, kPayloadType, 1234,
1526 0, rtp_sender_->SendOutgoingData(kVideoFrameKey, kPayloadType, 1234, 4321, 1526 4321, payload, sizeof(payload),
1527 payload, sizeof(payload), 0)); 1527 nullptr, nullptr, nullptr));
1528 1528
1529 // Will send 2 full-size padding packets. 1529 // Will send 2 full-size padding packets.
1530 rtp_sender_->TimeToSendPadding(1, PacketInfo::kNotAProbe); 1530 rtp_sender_->TimeToSendPadding(1, PacketInfo::kNotAProbe);
1531 rtp_sender_->TimeToSendPadding(1, PacketInfo::kNotAProbe); 1531 rtp_sender_->TimeToSendPadding(1, PacketInfo::kNotAProbe);
1532 1532
1533 StreamDataCounters rtp_stats; 1533 StreamDataCounters rtp_stats;
1534 StreamDataCounters rtx_stats; 1534 StreamDataCounters rtx_stats;
1535 rtp_sender_->GetDataCounters(&rtp_stats, &rtx_stats); 1535 rtp_sender_->GetDataCounters(&rtp_stats, &rtx_stats);
1536 1536
1537 // Payload + 1-byte generic header. 1537 // Payload + 1-byte generic header.
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1614 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), 1614 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()),
1615 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); 1615 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation);
1616 1616
1617 // Verify that this packet does have CVO byte. 1617 // Verify that this packet does have CVO byte.
1618 VerifyCVOPacket( 1618 VerifyCVOPacket(
1619 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), 1619 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()),
1620 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, 1620 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1,
1621 hdr.rotation); 1621 hdr.rotation);
1622 } 1622 }
1623 } // namespace webrtc 1623 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698