diff --git a/demos/transformer/src/main/java/androidx/media3/demo/transformer/PeriodicVignetteShaderProgram.java b/demos/transformer/src/main/java/androidx/media3/demo/transformer/PeriodicVignetteShaderProgram.java index 90953a2e99..360d7dd846 100644 --- a/demos/transformer/src/main/java/androidx/media3/demo/transformer/PeriodicVignetteShaderProgram.java +++ b/demos/transformer/src/main/java/androidx/media3/demo/transformer/PeriodicVignetteShaderProgram.java @@ -23,14 +23,15 @@ import androidx.media3.common.VideoFrameProcessingException; import androidx.media3.common.util.GlProgram; import androidx.media3.common.util.GlUtil; import androidx.media3.common.util.Size; -import androidx.media3.effect.SingleFrameGlShaderProgram; +import androidx.media3.effect.BaseGlShaderProgram; +import androidx.media3.effect.GlShaderProgram; import java.io.IOException; /** - * A {@link SingleFrameGlShaderProgram} that periodically dims the frames such that pixels are - * darker the further they are away from the frame center. + * A {@link GlShaderProgram} that periodically dims the frames such that pixels are darker the + * further they are away from the frame center. */ -/* package */ final class PeriodicVignetteShaderProgram extends SingleFrameGlShaderProgram { +/* package */ final class PeriodicVignetteShaderProgram extends BaseGlShaderProgram { private static final String VERTEX_SHADER_PATH = "vertex_shader_copy_es2.glsl"; private static final String FRAGMENT_SHADER_PATH = "fragment_shader_vignette_es2.glsl"; @@ -70,7 +71,7 @@ import java.io.IOException; float maxInnerRadius, float outerRadius) throws VideoFrameProcessingException { - super(/* useHighPrecisionColorComponents= */ useHdr); + super(/* useHighPrecisionColorComponents= */ useHdr, /* texturePoolCapacity= */ 1); checkArgument(minInnerRadius <= maxInnerRadius); checkArgument(maxInnerRadius <= outerRadius); this.minInnerRadius = minInnerRadius; diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/ContrastPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/ContrastPixelTest.java index 77c383e46b..333d46427f 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/ContrastPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/ContrastPixelTest.java @@ -78,7 +78,7 @@ public class ContrastPixelTest { private @MonotonicNonNull EGLDisplay eglDisplay; private @MonotonicNonNull EGLContext eglContext; private @MonotonicNonNull EGLSurface placeholderEglSurface; - private @MonotonicNonNull SingleFrameGlShaderProgram contrastShaderProgram; + private @MonotonicNonNull BaseGlShaderProgram contrastShaderProgram; private int inputTexId; private int inputWidth; private int inputHeight; diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/CropPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/CropPixelTest.java index e49fa81307..5824667455 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/CropPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/CropPixelTest.java @@ -70,7 +70,7 @@ public final class CropPixelTest { private @MonotonicNonNull String testId; private @MonotonicNonNull EGLDisplay eglDisplay; private @MonotonicNonNull EGLContext eglContext; - private @MonotonicNonNull SingleFrameGlShaderProgram cropShaderProgram; + private @MonotonicNonNull BaseGlShaderProgram cropShaderProgram; private @MonotonicNonNull EGLSurface placeholderEglSurface; private int inputTexId; private int inputWidth; diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultShaderProgramPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultShaderProgramPixelTest.java index 7c82be032e..c5d93c2b1b 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultShaderProgramPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultShaderProgramPixelTest.java @@ -71,7 +71,7 @@ public final class DefaultShaderProgramPixelTest { private @MonotonicNonNull String testId; private @MonotonicNonNull EGLDisplay eglDisplay; private @MonotonicNonNull EGLContext eglContext; - private @MonotonicNonNull SingleFrameGlShaderProgram defaultShaderProgram; + private @MonotonicNonNull BaseGlShaderProgram defaultShaderProgram; private int inputTexId; private int inputWidth; private int inputHeight; diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/HslAdjustmentPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/HslAdjustmentPixelTest.java index 48cbbba9e6..08869b68c7 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/HslAdjustmentPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/HslAdjustmentPixelTest.java @@ -75,7 +75,7 @@ public final class HslAdjustmentPixelTest { private @MonotonicNonNull EGLDisplay eglDisplay; private @MonotonicNonNull EGLContext eglContext; - private @MonotonicNonNull SingleFrameGlShaderProgram hslProcessor; + private @MonotonicNonNull BaseGlShaderProgram hslProcessor; private @MonotonicNonNull EGLSurface placeholderEglSurface; private int inputTexId; private int inputWidth; diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/OverlayShaderProgramPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/OverlayShaderProgramPixelTest.java index 5382bda477..7722a9a246 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/OverlayShaderProgramPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/OverlayShaderProgramPixelTest.java @@ -96,7 +96,7 @@ public class OverlayShaderProgramPixelTest { private @MonotonicNonNull String testId; private @MonotonicNonNull EGLDisplay eglDisplay; private @MonotonicNonNull EGLContext eglContext; - private @MonotonicNonNull SingleFrameGlShaderProgram overlayShaderProgram; + private @MonotonicNonNull BaseGlShaderProgram overlayShaderProgram; private @MonotonicNonNull EGLSurface placeholderEglSurface; private int inputTexId; private int inputWidth; diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/PresentationPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/PresentationPixelTest.java index 08a9afe7b3..7e3eea6e8e 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/PresentationPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/PresentationPixelTest.java @@ -79,7 +79,7 @@ public final class PresentationPixelTest { private @MonotonicNonNull String testId; private @MonotonicNonNull EGLDisplay eglDisplay; private @MonotonicNonNull EGLContext eglContext; - private @MonotonicNonNull SingleFrameGlShaderProgram presentationShaderProgram; + private @MonotonicNonNull BaseGlShaderProgram presentationShaderProgram; private @MonotonicNonNull EGLSurface placeholderEglSurface; private int inputTexId; private int inputWidth; diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbAdjustmentPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbAdjustmentPixelTest.java index 0b47092363..24233dcd44 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbAdjustmentPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbAdjustmentPixelTest.java @@ -76,7 +76,7 @@ public final class RgbAdjustmentPixelTest { private @MonotonicNonNull String testId; private @MonotonicNonNull EGLDisplay eglDisplay; private @MonotonicNonNull EGLContext eglContext; - private @MonotonicNonNull SingleFrameGlShaderProgram defaultShaderProgram; + private @MonotonicNonNull BaseGlShaderProgram defaultShaderProgram; private @MonotonicNonNull EGLSurface placeholderEglSurface; private int inputTexId; private int inputWidth; diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbFilterPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbFilterPixelTest.java index eb69548a25..e29f08413e 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbFilterPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbFilterPixelTest.java @@ -71,7 +71,7 @@ public final class RgbFilterPixelTest { private @MonotonicNonNull String testId; private @MonotonicNonNull EGLDisplay eglDisplay; private @MonotonicNonNull EGLContext eglContext; - private @MonotonicNonNull SingleFrameGlShaderProgram defaultShaderProgram; + private @MonotonicNonNull BaseGlShaderProgram defaultShaderProgram; private @MonotonicNonNull EGLSurface placeholderEglSurface; private int inputTexId; private int inputWidth; diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/SingleColorLutPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/SingleColorLutPixelTest.java index 0ad9aa7466..1962ff296a 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/SingleColorLutPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/SingleColorLutPixelTest.java @@ -77,7 +77,7 @@ public class SingleColorLutPixelTest { private @MonotonicNonNull EGLDisplay eglDisplay; private @MonotonicNonNull EGLContext eglContext; private @MonotonicNonNull EGLSurface placeholderEglSurface; - private @MonotonicNonNull SingleFrameGlShaderProgram colorLutShaderProgram; + private @MonotonicNonNull BaseGlShaderProgram colorLutShaderProgram; private int inputTexId; private int inputWidth; private int inputHeight; diff --git a/libraries/effect/src/main/java/androidx/media3/effect/BaseGlShaderProgram.java b/libraries/effect/src/main/java/androidx/media3/effect/BaseGlShaderProgram.java index edc000fd9a..774fef4342 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/BaseGlShaderProgram.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/BaseGlShaderProgram.java @@ -35,8 +35,7 @@ import java.util.concurrent.Executor; * into an output frame, with changes to pixels specific to the implementation. * *
{@code BaseShaderProgram} implementations can produce any number of output frames per input - * frame with the same presentation timestamp. {@link SingleFrameGlShaderProgram} can be used to - * implement a {@link GlShaderProgram} that produces exactly one output frame per input frame. + * frame with the same presentation timestamp. * *
All methods in this class must be called on the thread that owns the OpenGL context.
*/
diff --git a/libraries/effect/src/main/java/androidx/media3/effect/ColorLut.java b/libraries/effect/src/main/java/androidx/media3/effect/ColorLut.java
index cd1a4ed788..96f133bf29 100644
--- a/libraries/effect/src/main/java/androidx/media3/effect/ColorLut.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/ColorLut.java
@@ -41,7 +41,7 @@ public interface ColorLut extends GlEffect {
void release() throws GlUtil.GlException;
@Override
- default SingleFrameGlShaderProgram toGlShaderProgram(Context context, boolean useHdr)
+ default GlShaderProgram toGlShaderProgram(Context context, boolean useHdr)
throws VideoFrameProcessingException {
return new ColorLutShaderProgram(context, /* colorLut= */ this, useHdr);
}
diff --git a/libraries/effect/src/main/java/androidx/media3/effect/ColorLutShaderProgram.java b/libraries/effect/src/main/java/androidx/media3/effect/ColorLutShaderProgram.java
index 9647dd0bfe..ebf9e2fe1e 100644
--- a/libraries/effect/src/main/java/androidx/media3/effect/ColorLutShaderProgram.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/ColorLutShaderProgram.java
@@ -27,7 +27,7 @@ import androidx.media3.common.util.Size;
import java.io.IOException;
/** Applies a {@link ColorLut} to each frame in the fragment shader. */
-/* package */ final class ColorLutShaderProgram extends SingleFrameGlShaderProgram {
+/* package */ final class ColorLutShaderProgram extends BaseGlShaderProgram {
private static final String VERTEX_SHADER_PATH = "shaders/vertex_shader_transformation_es2.glsl";
private static final String FRAGMENT_SHADER_PATH = "shaders/fragment_shader_lut_es2.glsl";
@@ -45,7 +45,7 @@ import java.io.IOException;
*/
public ColorLutShaderProgram(Context context, ColorLut colorLut, boolean useHdr)
throws VideoFrameProcessingException {
- super(/* useHighPrecisionColorComponents= */ useHdr);
+ super(/* useHighPrecisionColorComponents= */ useHdr, /* texturePoolCapacity= */ 1);
// TODO(b/246315245): Add HDR support.
checkArgument(!useHdr, "ColorLutShaderProgram does not support HDR colors.");
this.colorLut = colorLut;
diff --git a/libraries/effect/src/main/java/androidx/media3/effect/DefaultShaderProgram.java b/libraries/effect/src/main/java/androidx/media3/effect/DefaultShaderProgram.java
index 67e4db14e4..bd182a9f3d 100644
--- a/libraries/effect/src/main/java/androidx/media3/effect/DefaultShaderProgram.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/DefaultShaderProgram.java
@@ -54,7 +54,7 @@ import java.util.List;
*/
@UnstableApi
@SuppressWarnings("FunctionalInterfaceClash") // b/228192298
-/* package */ final class DefaultShaderProgram extends SingleFrameGlShaderProgram
+/* package */ final class DefaultShaderProgram extends BaseGlShaderProgram
implements ExternalShaderProgram {
private static final String VERTEX_SHADER_TRANSFORMATION_PATH =
@@ -387,7 +387,7 @@ import java.util.List;
checkArgument(
outputColorTransfer == C.COLOR_TRANSFER_SDR
|| outputColorTransfer == C.COLOR_TRANSFER_LINEAR);
- // The SDR shader automatically applies an COLOR_TRANSFER_SDR EOTF.
+ // The SDR shader automatically applies a COLOR_TRANSFER_SDR EOTF.
glProgram.setIntUniform("uOutputColorTransfer", outputColorTransfer);
}
@@ -417,7 +417,7 @@ import java.util.List;
ImmutableList All methods in this class must be called on the thread that owns the OpenGL context.
+ *
+ * @deprecated Use {@link BaseGlShaderProgram} instead.
*/
@UnstableApi
+@Deprecated
public abstract class SingleFrameGlShaderProgram extends BaseGlShaderProgram {
// TODO(b/275384398): Remove this class as it only wraps the BaseGlShaderProgram.
diff --git a/libraries/effect/src/main/java/androidx/media3/effect/ThumbnailStripShaderProgram.java b/libraries/effect/src/main/java/androidx/media3/effect/ThumbnailStripShaderProgram.java
index ef9ec38126..070b2b30d5 100644
--- a/libraries/effect/src/main/java/androidx/media3/effect/ThumbnailStripShaderProgram.java
+++ b/libraries/effect/src/main/java/androidx/media3/effect/ThumbnailStripShaderProgram.java
@@ -28,7 +28,7 @@ import java.io.IOException;
* Draws the target input frame at a given horizontal position of the output texture to generate an
* horizontal tiling effect.
*/
-/* package */ final class ThumbnailStripShaderProgram extends SingleFrameGlShaderProgram {
+/* package */ final class ThumbnailStripShaderProgram extends BaseGlShaderProgram {
private static final String VERTEX_SHADER_PATH = "shaders/vertex_shader_thumbnail_strip_es2.glsl";
private static final String FRAGMENT_SHADER_PATH = "shaders/fragment_shader_copy_es2.glsl";
@@ -38,7 +38,7 @@ import java.io.IOException;
public ThumbnailStripShaderProgram(
Context context, boolean useHdr, ThumbnailStripEffect thumbnailStripEffect)
throws VideoFrameProcessingException {
- super(useHdr);
+ super(useHdr, /* texturePoolCapacity= */ 1);
this.thumbnailStripEffect = thumbnailStripEffect;
try {