From 6fbeeeb872ef6753b1df1d0e87059adab90f36fd Mon Sep 17 00:00:00 2001 From: Johannes Kron Date: Thu, 27 Sep 2018 11:49:22 +0200 Subject: [PATCH] Remove failing RTC_DCHECK in nack_module.cc. The RTC_DCHECK is hit sometimes. This happens when there is no overlap between the nack_list and frames in keyframes. The existing code correctly handles this situation. Bug: webrtc:9629 Change-Id: I7e3eed1b04781cd69974c5d3eb86e382e9587268 Reviewed-on: https://webrtc-review.googlesource.com/102340 Reviewed-by: Philip Eliasson Commit-Queue: Johannes Kron Cr-Commit-Position: refs/heads/master@{#24860} --- modules/video_coding/nack_module.cc | 1 - modules/video_coding/nack_module_unittest.cc | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/video_coding/nack_module.cc b/modules/video_coding/nack_module.cc index 2399606d79..7fbcf34b41 100644 --- a/modules/video_coding/nack_module.cc +++ b/modules/video_coding/nack_module.cc @@ -164,7 +164,6 @@ bool NackModule::RemovePacketsUntilKeyFrame() { if (it != nack_list_.begin()) { // We have found a keyframe that actually is newer than at least one // packet in the nack list. - RTC_DCHECK(it != nack_list_.end()); nack_list_.erase(nack_list_.begin(), it); return true; } diff --git a/modules/video_coding/nack_module_unittest.cc b/modules/video_coding/nack_module_unittest.cc index bcca351d63..8a5f46bf7f 100644 --- a/modules/video_coding/nack_module_unittest.cc +++ b/modules/video_coding/nack_module_unittest.cc @@ -262,4 +262,19 @@ TEST_F(TestNackModule, PacketNackCount) { EXPECT_EQ(0, nack_module_.OnReceivedPacket(4, false)); } +TEST_F(TestNackModule, NackListFullAndNoOverlapWithKeyframes) { + const int kMaxNackPackets = 1000; + const unsigned int kFirstGap = kMaxNackPackets - 20; + const unsigned int kSecondGap = 200; + uint16_t seq_num = 0; + nack_module_.OnReceivedPacket(seq_num++, true); + seq_num += kFirstGap; + nack_module_.OnReceivedPacket(seq_num++, true); + EXPECT_EQ(kFirstGap, sent_nacks_.size()); + sent_nacks_.clear(); + seq_num += kSecondGap; + nack_module_.OnReceivedPacket(seq_num, true); + EXPECT_EQ(kSecondGap, sent_nacks_.size()); +} + } // namespace webrtc