Call VideoFrameReleaseControl.setPlaybackSpeed from sink when enabled

Do not call VideoFrameReleaseControl.setPlaybackSpeed directly from
MCVR when the video sink is enabled.

PiperOrigin-RevId: 641840894
This commit is contained in:
kimvde 2024-06-10 03:11:49 -07:00 committed by Copybara-Service
parent abf601feaa
commit ec49d19384
2 changed files with 6 additions and 1 deletions

View File

@ -674,6 +674,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer
// Pass a direct executor since the callback handling involves posting on the app looper // Pass a direct executor since the callback handling involves posting on the app looper
// again, so there's no need to do two hops. // again, so there's no need to do two hops.
directExecutor()); directExecutor());
videoSink.setPlaybackSpeed(getPlaybackSpeed());
videoSink.onRendererEnabled(mayRenderStartOfStream); videoSink.onRendererEnabled(mayRenderStartOfStream);
} else { } else {
videoFrameReleaseControl.onEnabled(mayRenderStartOfStream); videoFrameReleaseControl.onEnabled(mayRenderStartOfStream);
@ -1004,9 +1005,10 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer
public void setPlaybackSpeed(float currentPlaybackSpeed, float targetPlaybackSpeed) public void setPlaybackSpeed(float currentPlaybackSpeed, float targetPlaybackSpeed)
throws ExoPlaybackException { throws ExoPlaybackException {
super.setPlaybackSpeed(currentPlaybackSpeed, targetPlaybackSpeed); super.setPlaybackSpeed(currentPlaybackSpeed, targetPlaybackSpeed);
videoFrameReleaseControl.setPlaybackSpeed(currentPlaybackSpeed);
if (shouldUseVideoSink) { if (shouldUseVideoSink) {
videoSink.setPlaybackSpeed(currentPlaybackSpeed); videoSink.setPlaybackSpeed(currentPlaybackSpeed);
} else {
videoFrameReleaseControl.setPlaybackSpeed(currentPlaybackSpeed);
} }
} }

View File

@ -399,6 +399,9 @@ public final class VideoFrameReleaseControl {
/** Sets the playback speed. Called when the renderer playback speed changes. */ /** Sets the playback speed. Called when the renderer playback speed changes. */
public void setPlaybackSpeed(float speed) { public void setPlaybackSpeed(float speed) {
if (speed == playbackSpeed) {
return;
}
this.playbackSpeed = speed; this.playbackSpeed = speed;
frameReleaseHelper.onPlaybackSpeed(speed); frameReleaseHelper.onPlaybackSpeed(speed);
} }