Chromium Code Reviews| 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); |