diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java index 035e3bfad8..c66ce82614 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java @@ -802,9 +802,10 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { long elapsedRealtimeNowUs = SystemClock.elapsedRealtime() * 1000; long elapsedSinceLastRenderUs = elapsedRealtimeNowUs - lastRenderTimeUs; boolean isStarted = getState() == STATE_STARTED; - // Don't force output until we joined and always render first frame if not joining. + // Don't force output until we joined and the position reached the current stream. boolean forceRenderOutputBuffer = joiningDeadlineMs == C.TIME_UNSET + && positionUs >= outputStreamOffsetUs && (!renderedFirstFrame || (isStarted && shouldForceRenderOutputBuffer(earlyUs, elapsedSinceLastRenderUs))); if (forceRenderOutputBuffer) { @@ -956,6 +957,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { pendingOutputStreamSwitchTimesUs, /* destPos= */ 0, pendingOutputStreamOffsetCount); + clearRenderedFirstFrame(); } }