diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/AdvancedFrameProcessor.java b/libraries/transformer/src/main/java/androidx/media3/transformer/AdvancedFrameProcessor.java index c0ce1853fc..a0499ef19a 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/AdvancedFrameProcessor.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/AdvancedFrameProcessor.java @@ -169,6 +169,9 @@ public final class AdvancedFrameProcessor implements GlFrameProcessor { @Override public void initialize(int inputTexId, int inputWidth, int inputHeight) throws IOException { + checkArgument(inputWidth > 0, "inputWidth must be positive"); + checkArgument(inputHeight > 0, "inputHeight must be positive"); + size = new Size(inputWidth, inputHeight); // TODO(b/205002913): check the loaded program is consistent with the attributes and uniforms // expected in the code. diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/ExternalCopyFrameProcessor.java b/libraries/transformer/src/main/java/androidx/media3/transformer/ExternalCopyFrameProcessor.java index c114e985df..3637ad720e 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/ExternalCopyFrameProcessor.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/ExternalCopyFrameProcessor.java @@ -15,6 +15,7 @@ */ package androidx.media3.transformer; +import static androidx.media3.common.util.Assertions.checkArgument; import static androidx.media3.common.util.Assertions.checkStateNotNull; import android.content.Context; @@ -61,6 +62,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; @Override public void initialize(int inputTexId, int inputWidth, int inputHeight) throws IOException { + checkArgument(inputWidth > 0, "inputWidth must be positive"); + checkArgument(inputHeight > 0, "inputHeight must be positive"); + size = new Size(inputWidth, inputHeight); // TODO(b/205002913): check the loaded program is consistent with the attributes and uniforms // expected in the code. diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameProcessorChain.java b/libraries/transformer/src/main/java/androidx/media3/transformer/FrameProcessorChain.java index 53ff83b2a5..e53fb2dd56 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameProcessorChain.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/FrameProcessorChain.java @@ -15,6 +15,7 @@ */ package androidx.media3.transformer; +import static androidx.media3.common.util.Assertions.checkArgument; import static androidx.media3.common.util.Assertions.checkNotNull; import static androidx.media3.common.util.Assertions.checkState; import static androidx.media3.common.util.Assertions.checkStateNotNull; @@ -86,6 +87,9 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; List frameProcessors, boolean enableExperimentalHdrEditing) throws TransformationException { + checkArgument(inputWidth > 0, "inputWidth must be positive"); + checkArgument(inputHeight > 0, "inputHeight must be positive"); + if (pixelWidthHeightRatio != 1.0f) { // TODO(b/211782176): Consider implementing support for non-square pixels. throw TransformationException.createForFrameProcessorChain( diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/PresentationFrameProcessor.java b/libraries/transformer/src/main/java/androidx/media3/transformer/PresentationFrameProcessor.java index 6e2d49ee31..6639d5f3b8 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/PresentationFrameProcessor.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/PresentationFrameProcessor.java @@ -284,6 +284,7 @@ public final class PresentationFrameProcessor implements GlFrameProcessor { /* package */ void configureOutputSizeAndTransformationMatrix(int inputWidth, int inputHeight) { checkArgument(inputWidth > 0, "inputWidth must be positive"); checkArgument(inputHeight > 0, "inputHeight must be positive"); + transformationMatrix = new Matrix(); outputWidth = inputWidth; outputHeight = inputHeight; diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/ScaleToFitFrameProcessor.java b/libraries/transformer/src/main/java/androidx/media3/transformer/ScaleToFitFrameProcessor.java index 0401fc911a..c6232eae3e 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/ScaleToFitFrameProcessor.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/ScaleToFitFrameProcessor.java @@ -15,6 +15,7 @@ */ package androidx.media3.transformer; +import static androidx.media3.common.util.Assertions.checkArgument; import static androidx.media3.common.util.Assertions.checkStateNotNull; import static java.lang.Math.max; import static java.lang.Math.min; @@ -148,6 +149,9 @@ public final class ScaleToFitFrameProcessor implements GlFrameProcessor { @EnsuresNonNull("adjustedTransformationMatrix") @VisibleForTesting // Allows robolectric testing of output size calculation without OpenGL. /* package */ void configureOutputSizeAndTransformationMatrix(int inputWidth, int inputHeight) { + checkArgument(inputWidth > 0, "inputWidth must be positive"); + checkArgument(inputHeight > 0, "inputHeight must be positive"); + adjustedTransformationMatrix = new Matrix(transformationMatrix); if (transformationMatrix.isIdentity()) {