From a8a590c3052d342e824e0da881d6a32598e5e672 Mon Sep 17 00:00:00 2001 From: huangdarwin Date: Tue, 24 Oct 2023 06:10:36 -0700 Subject: [PATCH] Effect: Clarify flush behavior in javadoc PiperOrigin-RevId: 576118064 --- .../androidx/media3/effect/DefaultVideoFrameProcessor.java | 3 +++ .../src/main/java/androidx/media3/effect/GlShaderProgram.java | 2 ++ 2 files changed, 5 insertions(+) diff --git a/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java b/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java index 8a00c8ca7a..67ab19bac2 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java @@ -554,10 +554,13 @@ public final class DefaultVideoFrameProcessor implements VideoFrameProcessor { } try { videoFrameProcessingTaskExecutor.flush(); + + // Flush from the end of the GlShaderProgram pipeline up to the start. CountDownLatch latch = new CountDownLatch(1); inputSwitcher.activeTextureManager().setOnFlushCompleteListener(latch::countDown); videoFrameProcessingTaskExecutor.submit(finalShaderProgramWrapper::flush); latch.await(); + inputSwitcher.activeTextureManager().setOnFlushCompleteListener(null); } catch (InterruptedException e) { Thread.currentThread().interrupt(); diff --git a/libraries/effect/src/main/java/androidx/media3/effect/GlShaderProgram.java b/libraries/effect/src/main/java/androidx/media3/effect/GlShaderProgram.java index 7cce832618..f7148344d5 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/GlShaderProgram.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/GlShaderProgram.java @@ -78,6 +78,8 @@ public interface GlShaderProgram { * *

The implementation shall not assume the {@link GlShaderProgram} is {@linkplain * #onReadyToAcceptInputFrame ready to accept another input frame} when this method is called. + * If the implementation manages a limited input capacity, it must clear all prior {@linkplain + * #onReadyToAcceptInputFrame input frame capacity}. */ default void onFlush() {} }