Index: webrtc/modules/video_coding/main/source/jitter_buffer.cc |
diff --git a/webrtc/modules/video_coding/main/source/jitter_buffer.cc b/webrtc/modules/video_coding/main/source/jitter_buffer.cc |
index 9156cc1a61dba45624bda8c73da4886fce71b242..e2424c5760eef90c6badf307c2923f076cf93278 100644 |
--- a/webrtc/modules/video_coding/main/source/jitter_buffer.cc |
+++ b/webrtc/modules/video_coding/main/source/jitter_buffer.cc |
@@ -643,7 +643,7 @@ VCMFrameBufferEnum VCMJitterBuffer::InsertPacket(const VCMPacket& packet, |
if (IsPacketRetransmitted(packet)) { |
frame->IncrementNackCount(); |
} |
- if (!UpdateNackList(packet.seqNum) && |
+ if (!CoverSequenceUpTo(packet.seqNum) && |
packet.frameType != kVideoFrameKey) { |
buffer_state = kFlushIndicator; |
} |
@@ -939,10 +939,7 @@ VCMFrameBuffer* VCMJitterBuffer::NextFrame() const { |
return NULL; |
} |
-bool VCMJitterBuffer::UpdateNackList(uint16_t sequence_number) { |
- if (nack_mode_ == kNoNack) { |
- return true; |
- } |
+bool VCMJitterBuffer::CoverSequenceUpTo(uint16_t sequence_number) { |
// Make sure we don't add packets which are already too old to be decoded. |
if (!last_decoded_state_.in_initial_state()) { |
latest_received_sequence_number_ = LatestSequenceNumber( |
@@ -951,6 +948,10 @@ bool VCMJitterBuffer::UpdateNackList(uint16_t sequence_number) { |
} |
if (IsNewerSequenceNumber(sequence_number, |
latest_received_sequence_number_)) { |
+ if (nack_mode_ == kNoNack) { |
+ // Packets missing but NACK disabled, request key frame. |
stefan-webrtc
2015/07/01 13:41:02
This isn't a good way of handling lost packets sin
|
+ return false; |
+ } |
// Push any missing sequence numbers to the NACK list. |
for (uint16_t i = latest_received_sequence_number_ + 1; |
IsNewerSequenceNumber(sequence_number, i); ++i) { |
@@ -967,7 +968,7 @@ bool VCMJitterBuffer::UpdateNackList(uint16_t sequence_number) { |
LOG(LS_WARNING) << "Requesting key frame due to missing too old packets"; |
return false; |
} |
- } else { |
+ } else if (nack_mode_ != kNoNack) { |
missing_sequence_numbers_.erase(sequence_number); |
TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RemoveNack", |
"seqnum", sequence_number); |