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 b56dde3df6..1cbe69331b 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 @@ -179,6 +179,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer /* package */ @Nullable OnFrameRenderedListenerV23 tunnelingOnFrameRenderedListener; @Nullable private VideoFrameMetadataListener frameMetadataListener; private long startPositionUs; + private boolean videoSinkNeedsRegisterInputStream; /** * @param context A context. @@ -1304,7 +1305,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer decodedVideoSize = new VideoSize(width, height, unappliedRotationDegrees, pixelWidthHeightRatio); - if (videoSink != null) { + if (videoSink != null && videoSinkNeedsRegisterInputStream) { onReadyToRegisterVideoSinkInputStream(); videoSink.registerInputStream( /* inputType= */ VideoSink.INPUT_TYPE_SURFACE, @@ -1318,6 +1319,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer } else { videoFrameReleaseControl.setFrameRate(format.frameRate); } + videoSinkNeedsRegisterInputStream = false; } /** @@ -1548,6 +1550,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer } else { videoFrameReleaseControl.onProcessedStreamChange(); } + videoSinkNeedsRegisterInputStream = true; maybeSetupTunnelingForFirstFrame(); } diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/SequencePlayerRenderersWrapper.java b/libraries/transformer/src/main/java/androidx/media3/transformer/SequencePlayerRenderersWrapper.java index bc2f65a28a..0e1f7ed36b 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/SequencePlayerRenderersWrapper.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/SequencePlayerRenderersWrapper.java @@ -256,6 +256,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; this.sequencePlayerRenderersWrapper = sequencePlayerRenderersWrapper; videoSink = checkStateNotNull(sequencePlayerRenderersWrapper.compositingVideoSinkProvider).getSink(); + experimentalEnableProcessedStreamChangedAtStart(); } @Override