Add error listener to InputSwitcher's sampling shader program

PiperOrigin-RevId: 557797201
This commit is contained in:
claincly 2023-08-17 13:55:01 +01:00 committed by Julia Bibik
parent a3de5978e0
commit 3ae927525b
2 changed files with 15 additions and 0 deletions

View file

@ -672,6 +672,8 @@ public final class DefaultVideoFrameProcessor implements VideoFrameProcessor {
/* outputColorInfo= */ linearColorInfo, /* outputColorInfo= */ linearColorInfo,
glObjectsProvider, glObjectsProvider,
videoFrameProcessingTaskExecutor, videoFrameProcessingTaskExecutor,
/* errorListenerExecutor= */ videoFrameProcessorListenerExecutor,
/* samplingShaderProgramErrorListener= */ listener::onError,
enableColorTransfers); enableColorTransfers);
FinalShaderProgramWrapper finalShaderProgramWrapper = FinalShaderProgramWrapper finalShaderProgramWrapper =

View file

@ -35,6 +35,7 @@ import androidx.media3.common.GlTextureInfo;
import androidx.media3.common.VideoFrameProcessingException; import androidx.media3.common.VideoFrameProcessingException;
import androidx.media3.common.VideoFrameProcessor; import androidx.media3.common.VideoFrameProcessor;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.util.concurrent.Executor;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull; import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
/** /**
@ -46,6 +47,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
private final ColorInfo outputColorInfo; private final ColorInfo outputColorInfo;
private final GlObjectsProvider glObjectsProvider; private final GlObjectsProvider glObjectsProvider;
private final VideoFrameProcessingTaskExecutor videoFrameProcessingTaskExecutor; private final VideoFrameProcessingTaskExecutor videoFrameProcessingTaskExecutor;
private final GlShaderProgram.ErrorListener samplingShaderProgramErrorListener;
private final Executor errorListenerExecutor;
private final SparseArray<Input> inputs; private final SparseArray<Input> inputs;
private final boolean enableColorTransfers; private final boolean enableColorTransfers;
@ -57,11 +60,15 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
GlObjectsProvider glObjectsProvider, GlObjectsProvider glObjectsProvider,
VideoFrameProcessingTaskExecutor videoFrameProcessingTaskExecutor, VideoFrameProcessingTaskExecutor videoFrameProcessingTaskExecutor,
Executor errorListenerExecutor,
GlShaderProgram.ErrorListener samplingShaderProgramErrorListener,
boolean enableColorTransfers) { boolean enableColorTransfers) {
this.context = context; this.context = context;
this.outputColorInfo = outputColorInfo; this.outputColorInfo = outputColorInfo;
this.glObjectsProvider = glObjectsProvider; this.glObjectsProvider = glObjectsProvider;
this.videoFrameProcessingTaskExecutor = videoFrameProcessingTaskExecutor; this.videoFrameProcessingTaskExecutor = videoFrameProcessingTaskExecutor;
this.errorListenerExecutor = errorListenerExecutor;
this.samplingShaderProgramErrorListener = samplingShaderProgramErrorListener;
this.inputs = new SparseArray<>(); this.inputs = new SparseArray<>();
this.enableColorTransfers = enableColorTransfers; this.enableColorTransfers = enableColorTransfers;
} }
@ -98,6 +105,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
inputColorInfo, inputColorInfo,
outputColorInfo, outputColorInfo,
enableColorTransfers); enableColorTransfers);
samplingShaderProgram.setErrorListener(
errorListenerExecutor, samplingShaderProgramErrorListener);
textureManager = textureManager =
new ExternalTextureManager( new ExternalTextureManager(
glObjectsProvider, samplingShaderProgram, videoFrameProcessingTaskExecutor); glObjectsProvider, samplingShaderProgram, videoFrameProcessingTaskExecutor);
@ -113,6 +122,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
outputColorInfo, outputColorInfo,
enableColorTransfers, enableColorTransfers,
inputType); inputType);
samplingShaderProgram.setErrorListener(
errorListenerExecutor, samplingShaderProgramErrorListener);
textureManager = textureManager =
new BitmapTextureManager( new BitmapTextureManager(
glObjectsProvider, samplingShaderProgram, videoFrameProcessingTaskExecutor); glObjectsProvider, samplingShaderProgram, videoFrameProcessingTaskExecutor);
@ -128,6 +139,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
outputColorInfo, outputColorInfo,
enableColorTransfers, enableColorTransfers,
inputType); inputType);
samplingShaderProgram.setErrorListener(
errorListenerExecutor, samplingShaderProgramErrorListener);
textureManager = textureManager =
new TexIdTextureManager( new TexIdTextureManager(
glObjectsProvider, samplingShaderProgram, videoFrameProcessingTaskExecutor); glObjectsProvider, samplingShaderProgram, videoFrameProcessingTaskExecutor);