Index: media/renderers/video_renderer_impl.cc |
diff --git a/media/renderers/video_renderer_impl.cc b/media/renderers/video_renderer_impl.cc |
index 1160b65dae5773ddcbd7bba5226c319f218543b2..01dfe37da1a344105b08146757eb9174dd44989e 100644 |
--- a/media/renderers/video_renderer_impl.cc |
+++ b/media/renderers/video_renderer_impl.cc |
@@ -490,6 +490,16 @@ void VideoRendererImpl::FrameReady(VideoFrameStream::Status status, |
return; |
} |
+ // In low delay mode, don't accumulate frames that's earlier than the start |
+ // time. Otherwise we could declare HAVE_ENOUGH_DATA and start playback |
+ // prematurely. |
+ if (low_delay_ && |
+ !frame->metadata()->IsTrue(VideoFrameMetadata::END_OF_STREAM) && |
+ frame->timestamp() < start_timestamp_) { |
+ AttemptRead_Locked(); |
+ return; |
+ } |
+ |
if (frame->metadata()->IsTrue(VideoFrameMetadata::END_OF_STREAM)) { |
DCHECK(!received_end_of_stream_); |
received_end_of_stream_ = true; |