From 4d68243158b04644b33113fe8a9514cb81b8b41c Mon Sep 17 00:00:00 2001 From: kimvde Date: Tue, 22 Apr 2025 10:13:34 -0700 Subject: [PATCH] Only join video graph output in playlist mode. DefaultVideoSink.join() was called when join() was called on the InputVideoSink. This makes sense in playlist mode but we shouldn't join if the VideoGraph output is considered as a single clip. This change is no-op. Indeed, for CompositionPlayer, the allowedJoiningTimeMs is set to 0, so that join doesn't have any effect. PiperOrigin-RevId: 750238085 --- .../media3/exoplayer/video/PlaybackVideoGraphWrapper.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/PlaybackVideoGraphWrapper.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/PlaybackVideoGraphWrapper.java index 1f273c9eed..1fb41dc71f 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/PlaybackVideoGraphWrapper.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/PlaybackVideoGraphWrapper.java @@ -668,6 +668,10 @@ public final class PlaybackVideoGraphWrapper implements VideoSinkProvider, Video checkStateNotNull(handler).post(() -> pendingFlushCount--); } + private void joinPlayback(boolean renderNextFrameImmediately) { + defaultVideoSink.join(renderNextFrameImmediately); + } + private void setVideoFrameMetadataListener( VideoFrameMetadataListener videoFrameMetadataListener) { this.videoFrameMetadataListener = videoFrameMetadataListener; @@ -1023,7 +1027,9 @@ public final class PlaybackVideoGraphWrapper implements VideoSinkProvider, Video @Override public void join(boolean renderNextFrameImmediately) { - defaultVideoSink.join(renderNextFrameImmediately); + if (enablePlaylistMode) { + PlaybackVideoGraphWrapper.this.joinPlayback(renderNextFrameImmediately); + } } @Override