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