diff --git a/libraries/effect/src/main/java/androidx/media3/effect/ChainingGlShaderProgramListener.java b/libraries/effect/src/main/java/androidx/media3/effect/ChainingGlShaderProgramListener.java index 8fdd7d7edf..8d84215dc3 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/ChainingGlShaderProgramListener.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/ChainingGlShaderProgramListener.java @@ -15,6 +15,8 @@ */ package androidx.media3.effect; +import static androidx.media3.common.util.Assertions.checkArgument; + import androidx.media3.common.GlObjectsProvider; import androidx.media3.common.GlTextureInfo; import androidx.media3.effect.GlShaderProgram.InputListener; @@ -51,6 +53,9 @@ import androidx.media3.effect.GlShaderProgram.OutputListener; GlShaderProgram producingGlShaderProgram, GlShaderProgram consumingGlShaderProgram, VideoFrameProcessingTaskExecutor videoFrameProcessingTaskExecutor) { + checkArgument( + producingGlShaderProgram != consumingGlShaderProgram, + "Creating a self loop in the chain: " + producingGlShaderProgram); this.producingGlShaderProgram = producingGlShaderProgram; frameConsumptionManager = new FrameConsumptionManager( 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 b4f375b7fc..5d5e784164 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 @@ -782,7 +782,7 @@ public final class PlaybackVideoGraphWrapper implements VideoSinkProvider, Video @FirstFrameReleaseInstruction int firstFrameReleaseInstruction, List videoEffects) { checkState(isInitialized()); - setPendingVideoEffects(videoEffects); + this.videoEffects = ImmutableList.copyOf(videoEffects); this.inputType = inputType; this.inputFormat = format; finalBufferPresentationTimeUs = C.TIME_UNSET; @@ -863,7 +863,7 @@ public final class PlaybackVideoGraphWrapper implements VideoSinkProvider, Video if (this.videoEffects.equals(videoEffects)) { return; } - setPendingVideoEffects(videoEffects); + this.videoEffects = ImmutableList.copyOf(videoEffects); if (inputFormat != null) { registerInputStream(inputFormat); } @@ -999,23 +999,6 @@ public final class PlaybackVideoGraphWrapper implements VideoSinkProvider, Video // Private methods - /** - * Sets the pending video effects. - * - *

Effects are pending until a new input stream is registered. - */ - private void setPendingVideoEffects(List newVideoEffects) { - if (videoGraphFactory.supportsMultipleInputs()) { - this.videoEffects = ImmutableList.copyOf(newVideoEffects); - } else { - this.videoEffects = - new ImmutableList.Builder() - .addAll(newVideoEffects) - .addAll(compositionEffects) - .build(); - } - } - private void registerInputStream(Format inputFormat) { Format adjustedInputFormat = inputFormat