From 3ae927525bde7d1ed23ff341fb40f545b395ad01 Mon Sep 17 00:00:00 2001 From: claincly Date: Thu, 17 Aug 2023 13:55:01 +0100 Subject: [PATCH] Add error listener to InputSwitcher's sampling shader program PiperOrigin-RevId: 557797201 --- .../media3/effect/DefaultVideoFrameProcessor.java | 2 ++ .../java/androidx/media3/effect/InputSwitcher.java | 13 +++++++++++++ 2 files changed, 15 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 864bf68196..2c0ff290b7 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java @@ -672,6 +672,8 @@ public final class DefaultVideoFrameProcessor implements VideoFrameProcessor { /* outputColorInfo= */ linearColorInfo, glObjectsProvider, videoFrameProcessingTaskExecutor, + /* errorListenerExecutor= */ videoFrameProcessorListenerExecutor, + /* samplingShaderProgramErrorListener= */ listener::onError, enableColorTransfers); FinalShaderProgramWrapper finalShaderProgramWrapper = diff --git a/libraries/effect/src/main/java/androidx/media3/effect/InputSwitcher.java b/libraries/effect/src/main/java/androidx/media3/effect/InputSwitcher.java index c74a5a207b..65712aac96 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/InputSwitcher.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/InputSwitcher.java @@ -35,6 +35,7 @@ import androidx.media3.common.GlTextureInfo; import androidx.media3.common.VideoFrameProcessingException; import androidx.media3.common.VideoFrameProcessor; import com.google.common.collect.ImmutableList; +import java.util.concurrent.Executor; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; /** @@ -46,6 +47,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; private final ColorInfo outputColorInfo; private final GlObjectsProvider glObjectsProvider; private final VideoFrameProcessingTaskExecutor videoFrameProcessingTaskExecutor; + private final GlShaderProgram.ErrorListener samplingShaderProgramErrorListener; + private final Executor errorListenerExecutor; private final SparseArray inputs; private final boolean enableColorTransfers; @@ -57,11 +60,15 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ColorInfo outputColorInfo, GlObjectsProvider glObjectsProvider, VideoFrameProcessingTaskExecutor videoFrameProcessingTaskExecutor, + Executor errorListenerExecutor, + GlShaderProgram.ErrorListener samplingShaderProgramErrorListener, boolean enableColorTransfers) { this.context = context; this.outputColorInfo = outputColorInfo; this.glObjectsProvider = glObjectsProvider; this.videoFrameProcessingTaskExecutor = videoFrameProcessingTaskExecutor; + this.errorListenerExecutor = errorListenerExecutor; + this.samplingShaderProgramErrorListener = samplingShaderProgramErrorListener; this.inputs = new SparseArray<>(); this.enableColorTransfers = enableColorTransfers; } @@ -98,6 +105,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; inputColorInfo, outputColorInfo, enableColorTransfers); + samplingShaderProgram.setErrorListener( + errorListenerExecutor, samplingShaderProgramErrorListener); textureManager = new ExternalTextureManager( glObjectsProvider, samplingShaderProgram, videoFrameProcessingTaskExecutor); @@ -113,6 +122,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; outputColorInfo, enableColorTransfers, inputType); + samplingShaderProgram.setErrorListener( + errorListenerExecutor, samplingShaderProgramErrorListener); textureManager = new BitmapTextureManager( glObjectsProvider, samplingShaderProgram, videoFrameProcessingTaskExecutor); @@ -128,6 +139,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; outputColorInfo, enableColorTransfers, inputType); + samplingShaderProgram.setErrorListener( + errorListenerExecutor, samplingShaderProgramErrorListener); textureManager = new TexIdTextureManager( glObjectsProvider, samplingShaderProgram, videoFrameProcessingTaskExecutor);