Chromium Code Reviews| 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 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 366 } | 366 } |
| 367 | 367 |
| 368 TEST_F(EndToEndTest, ReceivesAndRetransmitsNack) { | 368 TEST_F(EndToEndTest, ReceivesAndRetransmitsNack) { |
| 369 static const int kNumberOfNacksToObserve = 2; | 369 static const int kNumberOfNacksToObserve = 2; |
| 370 static const int kLossBurstSize = 2; | 370 static const int kLossBurstSize = 2; |
| 371 static const int kPacketsBetweenLossBursts = 9; | 371 static const int kPacketsBetweenLossBursts = 9; |
| 372 class NackObserver : public test::EndToEndTest { | 372 class NackObserver : public test::EndToEndTest { |
| 373 public: | 373 public: |
| 374 NackObserver() | 374 NackObserver() |
| 375 : EndToEndTest(kLongTimeoutMs), | 375 : EndToEndTest(kLongTimeoutMs), |
| 376 rtp_parser_(RtpHeaderParser::Create()), | |
| 377 sent_rtp_packets_(0), | 376 sent_rtp_packets_(0), |
| 378 packets_left_to_drop_(0), | 377 packets_left_to_drop_(0), |
| 379 nacks_left_(kNumberOfNacksToObserve) {} | 378 nacks_left_(kNumberOfNacksToObserve) {} |
| 380 | 379 |
| 381 private: | 380 private: |
| 382 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 381 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
| 383 rtc::CritScope lock(&crit_); | 382 rtc::CritScope lock(&crit_); |
| 384 RTPHeader header; | 383 RTPHeader header; |
| 385 EXPECT_TRUE(rtp_parser_->Parse(packet, length, &header)); | 384 EXPECT_TRUE(parser_->Parse(packet, length, &header)); |
| 386 | 385 |
| 387 // Never drop retransmitted packets. | 386 // Never drop retransmitted packets. |
| 388 if (dropped_packets_.find(header.sequenceNumber) != | 387 if (dropped_packets_.find(header.sequenceNumber) != |
| 389 dropped_packets_.end()) { | 388 dropped_packets_.end()) { |
| 390 retransmitted_packets_.insert(header.sequenceNumber); | 389 retransmitted_packets_.insert(header.sequenceNumber); |
| 391 if (nacks_left_ <= 0 && | 390 if (nacks_left_ <= 0 && |
| 392 retransmitted_packets_.size() == dropped_packets_.size()) { | 391 retransmitted_packets_.size() == dropped_packets_.size()) { |
| 393 observation_complete_->Set(); | 392 observation_complete_->Set(); |
| 394 } | 393 } |
| 395 return SEND_PACKET; | 394 return SEND_PACKET; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 438 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 437 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 439 } | 438 } |
| 440 | 439 |
| 441 void PerformTest() override { | 440 void PerformTest() override { |
| 442 EXPECT_EQ(kEventSignaled, Wait()) | 441 EXPECT_EQ(kEventSignaled, Wait()) |
| 443 << "Timed out waiting for packets to be NACKed, retransmitted and " | 442 << "Timed out waiting for packets to be NACKed, retransmitted and " |
| 444 "rendered."; | 443 "rendered."; |
| 445 } | 444 } |
| 446 | 445 |
| 447 rtc::CriticalSection crit_; | 446 rtc::CriticalSection crit_; |
| 448 rtc::scoped_ptr<RtpHeaderParser> rtp_parser_; | 447 rtc::scoped_ptr<RtpHeaderParser> rtp_parser_; |
|
sprang_webrtc
2015/12/07 14:37:15
Now this is unused and should be removed as well.
pbos-webrtc
2015/12/07 14:55:34
Sorry about that, https://codereview.webrtc.org/15
| |
| 449 std::set<uint16_t> dropped_packets_; | 448 std::set<uint16_t> dropped_packets_; |
| 450 std::set<uint16_t> retransmitted_packets_; | 449 std::set<uint16_t> retransmitted_packets_; |
| 451 uint64_t sent_rtp_packets_; | 450 uint64_t sent_rtp_packets_; |
| 452 int packets_left_to_drop_; | 451 int packets_left_to_drop_; |
| 453 int nacks_left_ GUARDED_BY(&crit_); | 452 int nacks_left_ GUARDED_BY(&crit_); |
| 454 } test; | 453 } test; |
| 455 | 454 |
| 456 RunBaseTest(&test, FakeNetworkPipe::Config()); | 455 RunBaseTest(&test, FakeNetworkPipe::Config()); |
| 457 } | 456 } |
| 458 | 457 |
| (...skipping 2766 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3225 EXPECT_TRUE(default_receive_config.rtp.rtx.empty()) | 3224 EXPECT_TRUE(default_receive_config.rtp.rtx.empty()) |
| 3226 << "Enabling RTX requires rtpmap: rtx negotiation."; | 3225 << "Enabling RTX requires rtpmap: rtx negotiation."; |
| 3227 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) | 3226 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) |
| 3228 << "Enabling RTP extensions require negotiation."; | 3227 << "Enabling RTP extensions require negotiation."; |
| 3229 | 3228 |
| 3230 VerifyEmptyNackConfig(default_receive_config.rtp.nack); | 3229 VerifyEmptyNackConfig(default_receive_config.rtp.nack); |
| 3231 VerifyEmptyFecConfig(default_receive_config.rtp.fec); | 3230 VerifyEmptyFecConfig(default_receive_config.rtp.fec); |
| 3232 } | 3231 } |
| 3233 | 3232 |
| 3234 } // namespace webrtc | 3233 } // namespace webrtc |
| OLD | NEW |