diff --git a/webrtc/modules/video_coding/main/source/jitter_buffer.cc b/webrtc/modules/video_coding/main/source/jitter_buffer.cc index 701f92b37d..849d6412f0 100644 --- a/webrtc/modules/video_coding/main/source/jitter_buffer.cc +++ b/webrtc/modules/video_coding/main/source/jitter_buffer.cc @@ -512,8 +512,6 @@ VCMEncodedFrame* VCMJitterBuffer::GetCompleteFrameForDecoding( oldest_frame->SetState(kStateDecoding); - CleanUpOldOrEmptyFrames(); - if (oldest_frame->FrameType() == kVideoFrameKey) { waiting_for_key_frame_ = false; } @@ -583,8 +581,6 @@ VCMEncodedFrame* VCMJitterBuffer::GetFrameForDecoding() { // Set as decoding. Propagates the missing_frame bit. oldest_frame->SetState(kStateDecoding); - CleanUpOldOrEmptyFrames(); - if (oldest_frame->FrameType() == kVideoFrameKey) { waiting_for_key_frame_ = false; } @@ -1029,9 +1025,6 @@ VCMEncodedFrame* VCMJitterBuffer::GetFrameForDecodingNACK() { // decoder. oldest_frame->SetState(kStateDecoding); - // Clean up old frames and empty frames. - CleanUpOldOrEmptyFrames(); - if (oldest_frame->FrameType() == kVideoFrameKey) { waiting_for_key_frame_ = false; } diff --git a/webrtc/modules/video_coding/main/source/jitter_buffer.h b/webrtc/modules/video_coding/main/source/jitter_buffer.h index d8bee42096..669089fdec 100644 --- a/webrtc/modules/video_coding/main/source/jitter_buffer.h +++ b/webrtc/modules/video_coding/main/source/jitter_buffer.h @@ -161,6 +161,7 @@ class VCMJitterBuffer { // Enable/disable decoding with errors. void DecodeWithErrors(bool enable) {decode_with_errors_ = enable;} int64_t LastDecodedTimestamp() const; + bool decode_with_errors() const {return decode_with_errors_;} private: class SequenceNumberLessThan { diff --git a/webrtc/modules/video_coding/main/source/receiver.cc b/webrtc/modules/video_coding/main/source/receiver.cc index 68696919db..f5e23f7e55 100644 --- a/webrtc/modules/video_coding/main/source/receiver.cc +++ b/webrtc/modules/video_coding/main/source/receiver.cc @@ -309,7 +309,7 @@ VCMEncodedFrame* VCMReceiver::FrameForRendering(uint16_t max_wait_time_ms, // Get a complete frame if possible. VCMEncodedFrame* frame = jitter_buffer_.GetCompleteFrameForDecoding(0); - if (frame == NULL) { + if (frame == NULL && jitter_buffer_.decode_with_errors()) { // Get an incomplete frame. const bool dual_receiver_enabled_and_passive = (dual_receiver != NULL && dual_receiver->State() == kPassive &&