OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 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 #include <algorithm> | 10 #include <algorithm> |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 EndToEndTest() {} | 54 EndToEndTest() {} |
55 | 55 |
56 virtual ~EndToEndTest() { | 56 virtual ~EndToEndTest() { |
57 EXPECT_EQ(nullptr, send_stream_); | 57 EXPECT_EQ(nullptr, send_stream_); |
58 EXPECT_TRUE(receive_streams_.empty()); | 58 EXPECT_TRUE(receive_streams_.empty()); |
59 } | 59 } |
60 | 60 |
61 protected: | 61 protected: |
62 class UnusedTransport : public Transport { | 62 class UnusedTransport : public Transport { |
63 private: | 63 private: |
64 bool SendRtp(const uint8_t* packet, size_t length) override { | 64 bool SendRtp(const uint8_t* packet, |
| 65 size_t length, |
| 66 const PacketOptions& options) override { |
65 ADD_FAILURE() << "Unexpected RTP sent."; | 67 ADD_FAILURE() << "Unexpected RTP sent."; |
66 return false; | 68 return false; |
67 } | 69 } |
68 | 70 |
69 bool SendRtcp(const uint8_t* packet, size_t length) override { | 71 bool SendRtcp(const uint8_t* packet, size_t length) override { |
70 ADD_FAILURE() << "Unexpected RTCP sent."; | 72 ADD_FAILURE() << "Unexpected RTCP sent."; |
71 return false; | 73 return false; |
72 } | 74 } |
73 }; | 75 }; |
74 | 76 |
(...skipping 1266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1341 : done_(EventWrapper::Create()), | 1343 : done_(EventWrapper::Create()), |
1342 parser_(RtpHeaderParser::Create()), | 1344 parser_(RtpHeaderParser::Create()), |
1343 last_seq_(0), | 1345 last_seq_(0), |
1344 padding_observed_(false), | 1346 padding_observed_(false), |
1345 rtx_padding_observed_(false) { | 1347 rtx_padding_observed_(false) { |
1346 parser_->RegisterRtpHeaderExtension(kRtpExtensionTransportSequenceNumber, | 1348 parser_->RegisterRtpHeaderExtension(kRtpExtensionTransportSequenceNumber, |
1347 kExtensionId); | 1349 kExtensionId); |
1348 } | 1350 } |
1349 virtual ~RtpExtensionHeaderObserver() {} | 1351 virtual ~RtpExtensionHeaderObserver() {} |
1350 | 1352 |
1351 bool SendRtp(const uint8_t* data, size_t length) override { | 1353 bool SendRtp(const uint8_t* data, |
| 1354 size_t length, |
| 1355 const PacketOptions& options) override { |
1352 if (IsDone()) | 1356 if (IsDone()) |
1353 return false; | 1357 return false; |
1354 | 1358 |
1355 RTPHeader header; | 1359 RTPHeader header; |
1356 EXPECT_TRUE(parser_->Parse(data, length, &header)); | 1360 EXPECT_TRUE(parser_->Parse(data, length, &header)); |
1357 if (header.extension.hasTransportSequenceNumber) { | 1361 if (header.extension.hasTransportSequenceNumber) { |
| 1362 EXPECT_EQ(options.packet_id, |
| 1363 header.extension.transportSequenceNumber); |
1358 if (!streams_observed_.empty()) { | 1364 if (!streams_observed_.empty()) { |
1359 EXPECT_EQ(static_cast<uint16_t>(last_seq_ + 1), | 1365 EXPECT_EQ(static_cast<uint16_t>(last_seq_ + 1), |
1360 header.extension.transportSequenceNumber); | 1366 header.extension.transportSequenceNumber); |
1361 } | 1367 } |
1362 last_seq_ = header.extension.transportSequenceNumber; | 1368 last_seq_ = header.extension.transportSequenceNumber; |
1363 | 1369 |
1364 size_t payload_length = | 1370 size_t payload_length = |
1365 length - (header.headerLength + header.paddingLength); | 1371 length - (header.headerLength + header.paddingLength); |
1366 if (payload_length == 0) { | 1372 if (payload_length == 0) { |
1367 padding_observed_ = true; | 1373 padding_observed_ = true; |
1368 } else if (header.payloadType == kSendRtxPayloadType) { | 1374 } else if (header.payloadType == kSendRtxPayloadType) { |
1369 rtx_padding_observed_ = true; | 1375 rtx_padding_observed_ = true; |
1370 } else { | 1376 } else { |
1371 streams_observed_.insert(header.ssrc); | 1377 streams_observed_.insert(header.ssrc); |
1372 } | 1378 } |
1373 | 1379 |
1374 if (IsDone()) | 1380 if (IsDone()) |
1375 done_->Set(); | 1381 done_->Set(); |
1376 } | 1382 } |
1377 return test::DirectTransport::SendRtp(data, length); | 1383 return test::DirectTransport::SendRtp(data, length, options); |
1378 } | 1384 } |
1379 | 1385 |
1380 bool IsDone() { | 1386 bool IsDone() { |
1381 return streams_observed_.size() == MultiStreamTest::kNumStreams && | 1387 return streams_observed_.size() == MultiStreamTest::kNumStreams && |
1382 padding_observed_ && rtx_padding_observed_; | 1388 padding_observed_ && rtx_padding_observed_; |
1383 } | 1389 } |
1384 | 1390 |
1385 EventTypeWrapper Wait() { return done_->Wait(kDefaultTimeoutMs); } | 1391 EventTypeWrapper Wait() { return done_->Wait(kDefaultTimeoutMs); } |
1386 | 1392 |
1387 rtc::scoped_ptr<EventWrapper> done_; | 1393 rtc::scoped_ptr<EventWrapper> done_; |
(...skipping 1734 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3122 EXPECT_TRUE(default_receive_config.rtp.rtx.empty()) | 3128 EXPECT_TRUE(default_receive_config.rtp.rtx.empty()) |
3123 << "Enabling RTX requires rtpmap: rtx negotiation."; | 3129 << "Enabling RTX requires rtpmap: rtx negotiation."; |
3124 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) | 3130 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) |
3125 << "Enabling RTP extensions require negotiation."; | 3131 << "Enabling RTP extensions require negotiation."; |
3126 | 3132 |
3127 VerifyEmptyNackConfig(default_receive_config.rtp.nack); | 3133 VerifyEmptyNackConfig(default_receive_config.rtp.nack); |
3128 VerifyEmptyFecConfig(default_receive_config.rtp.fec); | 3134 VerifyEmptyFecConfig(default_receive_config.rtp.fec); |
3129 } | 3135 } |
3130 | 3136 |
3131 } // namespace webrtc | 3137 } // namespace webrtc |
OLD | NEW |