From 5eeedeacc68d52b8ec2d49f5432a61536d0d79b7 Mon Sep 17 00:00:00 2001 From: kimvde Date: Mon, 14 Oct 2024 01:51:16 -0700 Subject: [PATCH] Implement DefaultVideoSink.flush() This is part of the effort to delegate the rendering of the VideoGraph output frames to a DefaultVideoSink. PiperOrigin-RevId: 685622019 --- .../androidx/media3/exoplayer/video/DefaultVideoSink.java | 1 + .../media3/exoplayer/video/PlaybackVideoGraphWrapper.java | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/DefaultVideoSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/DefaultVideoSink.java index 7c87aad50d..32d6d1be70 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/DefaultVideoSink.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/DefaultVideoSink.java @@ -80,6 +80,7 @@ import java.util.concurrent.Executor; if (resetPosition) { videoFrameReleaseControl.reset(); } + videoFrameRenderControl.flush(); } @Override 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 c6003cc1b9..820dccdb51 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 @@ -439,12 +439,12 @@ public final class PlaybackVideoGraphWrapper implements VideoSinkProvider, Video videoFrameRenderControl.render(positionUs, elapsedRealtimeUs); } - private void flush() { + private void flush(boolean resetPosition) { if (!isInitialized()) { return; } pendingFlushCount++; - videoFrameRenderControl.flush(); + defaultVideoSink.flush(resetPosition); // Handle pending video graph callbacks to ensure video size changes reach the video render // control. checkStateNotNull(handler).post(() -> pendingFlushCount--); @@ -564,8 +564,7 @@ public final class PlaybackVideoGraphWrapper implements VideoSinkProvider, Video hasRegisteredFirstInputStream = false; finalBufferPresentationTimeUs = C.TIME_UNSET; lastBufferPresentationTimeUs = C.TIME_UNSET; - PlaybackVideoGraphWrapper.this.flush(); - defaultVideoSink.flush(resetPosition); + PlaybackVideoGraphWrapper.this.flush(resetPosition); pendingInputStreamBufferPresentationTimeUs = C.TIME_UNSET; // Don't change input stream offset or reset the pending input stream offset change so that // it's announced with the next input frame.