diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java index f12a60966a..3c9baa8ac4 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java @@ -935,6 +935,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer if (wakeupListener != null) { videoSink.setWakeupListener(wakeupListener); } + experimentalEnableProcessedStreamChangedAtStart(); } else { videoFrameReleaseControl.setClock(getClock()); int firstFrameReleaseInstruction = @@ -962,13 +963,6 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer MediaSource.MediaPeriodId mediaPeriodId) throws ExoPlaybackException { super.onStreamChanged(formats, startPositionUs, offsetUs, mediaPeriodId); - if (this.startPositionUs == C.TIME_UNSET) { - this.startPositionUs = startPositionUs; - if (videoSink != null) { - videoSink.setStreamStartPositionUs(getOutputStreamStartPositionUs()); - videoSink.setBufferTimestampAdjustmentUs(getBufferTimestampAdjustmentUs()); - } - } updatePeriodDurationUs(mediaPeriodId); } @@ -992,7 +986,6 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer // MediaCodec once the codec is flushed. videoSink.flush(/* resetPosition= */ true); } - pendingVideoSinkInputStreamChange = true; } super.onPositionReset(positionUs, joining); if (videoSink == null) { @@ -1869,6 +1862,9 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer // Signaling end of the previous stream. videoSink.signalEndOfCurrentInputStream(); videoSink.setStreamStartPositionUs(getOutputStreamStartPositionUs()); + if (this.startPositionUs == C.TIME_UNSET) { + this.startPositionUs = getOutputStreamStartPositionUs(); + } videoSink.setBufferTimestampAdjustmentUs(getBufferTimestampAdjustmentUs()); } else { videoFrameReleaseControl.onStreamChanged(RELEASE_FIRST_FRAME_WHEN_PREVIOUS_STREAM_PROCESSED); diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/SequenceRenderersFactory.java b/libraries/transformer/src/main/java/androidx/media3/transformer/SequenceRenderersFactory.java index 9d64dfadae..80654a6bd4 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/SequenceRenderersFactory.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/SequenceRenderersFactory.java @@ -329,7 +329,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; this.bufferingVideoSink = bufferingVideoSink; this.requestToneMapping = requestToneMapping; this.pendingEffects = ImmutableList.of(); - experimentalEnableProcessedStreamChangedAtStart(); } @Override