From cd7c21bfadf89771690579f958bc4580588229d1 Mon Sep 17 00:00:00 2001 From: Ilya Nikolaevskiy Date: Mon, 14 Jan 2019 15:27:08 +0100 Subject: [PATCH] Ensure correct decoding for unfiltered KSVC streams Set render timestamp for all frames in the superframe. Bug: chromium:912122 Change-Id: Ic9604620da9fb4176ad5c21b95df47fca8ddea31 Reviewed-on: https://webrtc-review.googlesource.com/c/116985 Commit-Queue: Ilya Nikolaevskiy Reviewed-by: Philip Eliasson Cr-Commit-Position: refs/heads/master@{#26247} --- modules/video_coding/frame_buffer2.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/video_coding/frame_buffer2.cc b/modules/video_coding/frame_buffer2.cc index 832fd360f0..e52af53353 100644 --- a/modules/video_coding/frame_buffer2.cc +++ b/modules/video_coding/frame_buffer2.cc @@ -167,6 +167,12 @@ FrameBuffer::ReturnReason FrameBuffer::NextFrame( frame->SetRenderTime( timing_->RenderTimeMs(frame->Timestamp(), now_ms)); } + // If frames in superframe have different render timestamps, it will + // confuse jitter buffer and cause dropped frames in render queue. + for (size_t i = 1; i < frames_to_decode_.size(); ++i) { + frames_to_decode_[i]->second.frame->SetRenderTime( + frame->RenderTime()); + } wait_ms = timing_->MaxWaitingTime(frame->RenderTime(), now_ms); // This will cause the frame buffer to prefer high framerate rather