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 aabaf43da6..7f1dbfc7ea 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 @@ -674,6 +674,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer // Pass a direct executor since the callback handling involves posting on the app looper // again, so there's no need to do two hops. directExecutor()); + videoSink.setPlaybackSpeed(getPlaybackSpeed()); videoSink.onRendererEnabled(mayRenderStartOfStream); } else { videoFrameReleaseControl.onEnabled(mayRenderStartOfStream); @@ -1004,9 +1005,10 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer public void setPlaybackSpeed(float currentPlaybackSpeed, float targetPlaybackSpeed) throws ExoPlaybackException { super.setPlaybackSpeed(currentPlaybackSpeed, targetPlaybackSpeed); - videoFrameReleaseControl.setPlaybackSpeed(currentPlaybackSpeed); if (shouldUseVideoSink) { videoSink.setPlaybackSpeed(currentPlaybackSpeed); + } else { + videoFrameReleaseControl.setPlaybackSpeed(currentPlaybackSpeed); } } diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoFrameReleaseControl.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoFrameReleaseControl.java index a9b08865e8..a4572ce774 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoFrameReleaseControl.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoFrameReleaseControl.java @@ -399,6 +399,9 @@ public final class VideoFrameReleaseControl { /** Sets the playback speed. Called when the renderer playback speed changes. */ public void setPlaybackSpeed(float speed) { + if (speed == playbackSpeed) { + return; + } this.playbackSpeed = speed; frameReleaseHelper.onPlaybackSpeed(speed); }