From b7a92ce47ad1ca2b7ae4104a97fb23c2378d9587 Mon Sep 17 00:00:00 2001 From: kimvde Date: Mon, 15 Apr 2024 01:26:14 -0700 Subject: [PATCH] Always set sink provider offset in onReadyToInitializeCodec Before this CL, the offset was set: - in onPositionReset for composition preview - in onReadyToInitializeCodec for ExoPlayer The code flow is easier to reason about if the path for both use cases is as shared as possible. PiperOrigin-RevId: 624870150 --- .../media3/exoplayer/video/MediaCodecVideoRenderer.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) 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 27edc90f99..63ba8a9b4e 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 @@ -655,9 +655,6 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer videoSink.flush(); } super.onPositionReset(positionUs, joining); - if (videoSinkProvider.isInitialized()) { - videoSinkProvider.setStreamOffsetUs(getOutputStreamOffsetUs()); - } videoFrameReleaseControl.reset(); if (joining) { // Don't render next frame immediately to let the codec catch up with the playback position @@ -1068,7 +1065,6 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer if (hasEffects && !hasInitializedPlayback && !videoSinkProvider.isInitialized()) { try { videoSinkProvider.initialize(format); - videoSinkProvider.setStreamOffsetUs(getOutputStreamOffsetUs()); if (frameMetadataListener != null) { videoSinkProvider.setVideoFrameMetadataListener(frameMetadataListener); } @@ -1082,6 +1078,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer } if (videoSink == null && videoSinkProvider.isInitialized()) { + videoSinkProvider.setStreamOffsetUs(getOutputStreamOffsetUs()); videoSink = videoSinkProvider.getSink(); videoSink.setListener( new VideoSink.Listener() {