From 84acfe786773001ae13a2dae8c0458ea135cf3ad Mon Sep 17 00:00:00 2001 From: huangdarwin Date: Fri, 17 Feb 2023 19:26:30 +0000 Subject: [PATCH] Effect: Rename to ScaleAndRotateTransformation Rename ScaleToFitTransformation to ScaleAndRotateTransformation. This better represents the operations that can be accomplished using this effect. The name was originally named ScaleToFit* because it's not obvious how to scale to fit using OpenGL, and this effect handled the scaling to fit in a way that no other MatrixTransformations did. However, it's hard to discover how to rotate when skimming names of effects, so it's probably more useful to convey that this effect rotates, than that it scales to fit. PiperOrigin-RevId: 510480078 --- .../demo/transformer/TransformerActivity.java | 4 +- .../DefaultVideoFrameProcessorPixelTest.java | 30 +++++----- .../FinalMatrixShaderProgramWrapper.java | 2 +- ...java => ScaleAndRotateTransformation.java} | 10 ++-- ... => ScaleAndRotateTransformationTest.java} | 56 ++++++++++--------- .../video/MediaCodecVideoRenderer.java | 29 +++++----- .../media3/transformer/mh/ExportTest.java | 4 +- .../media3/transformer/mh/HdrEditingTest.java | 14 +++-- .../transformer/mh/RepeatedTranscodeTest.java | 6 +- .../ToneMapHdrToSdrUsingMediaCodecTest.java | 8 ++- .../transformer/TransformerEndToEndTest.java | 4 +- 11 files changed, 89 insertions(+), 78 deletions(-) rename libraries/effect/src/main/java/androidx/media3/effect/{ScaleToFitTransformation.java => ScaleAndRotateTransformation.java} (94%) rename libraries/effect/src/test/java/androidx/media3/effect/{ScaleToFitTransformationTest.java => ScaleAndRotateTransformationTest.java} (60%) diff --git a/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java b/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java index 447c258727..d7e81653d1 100644 --- a/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java +++ b/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java @@ -70,7 +70,7 @@ import androidx.media3.effect.Presentation; import androidx.media3.effect.RgbAdjustment; import androidx.media3.effect.RgbFilter; import androidx.media3.effect.RgbMatrix; -import androidx.media3.effect.ScaleToFitTransformation; +import androidx.media3.effect.ScaleAndRotateTransformation; import androidx.media3.effect.SimpleBitmapLoader; import androidx.media3.effect.SingleColorLut; import androidx.media3.effect.TextOverlay; @@ -547,7 +547,7 @@ public final class TransformerActivity extends AppCompatActivity { bundle.getFloat(ConfigurationActivity.ROTATE_DEGREES, /* defaultValue= */ 0); if (scaleX != 1f || scaleY != 1f || rotateDegrees != 0f) { effects.add( - new ScaleToFitTransformation.Builder() + new ScaleAndRotateTransformation.Builder() .setScale(scaleX, scaleY) .setRotationDegrees(rotateDegrees) .build()); diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultVideoFrameProcessorPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultVideoFrameProcessorPixelTest.java index 1880bddbbe..b793fa7979 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultVideoFrameProcessorPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultVideoFrameProcessorPixelTest.java @@ -199,15 +199,15 @@ public final class DefaultVideoFrameProcessorPixelTest { } @Test - public void matrixAndScaleToFitTransformation_matchesGoldenFile() throws Exception { - String testId = "matrixAndScaleToFitTransformation_matchesGoldenFile"; + public void matrixAndScaleAndRotateTransformation_matchesGoldenFile() throws Exception { + String testId = "matrixAndScaleAndRotateTransformation_matchesGoldenFile"; Matrix translateRightMatrix = new Matrix(); translateRightMatrix.postTranslate(/* dx= */ 1, /* dy= */ 0); videoFrameProcessorTestRunner = getDefaultFrameProcessorTestRunnerBuilder(testId) .setEffects( (MatrixTransformation) (long presentationTimeUs) -> translateRightMatrix, - new ScaleToFitTransformation.Builder().setRotationDegrees(45).build()) + new ScaleAndRotateTransformation.Builder().setRotationDegrees(45).build()) .build(); Bitmap expectedBitmap = readBitmap(TRANSLATE_THEN_ROTATE_PNG_ASSET_PATH); @@ -239,14 +239,14 @@ public final class DefaultVideoFrameProcessorPixelTest { } @Test - public void scaleToFitAndMatrixTransformation_matchesGoldenFile() throws Exception { - String testId = "scaleToFitAndMatrixTransformation_matchesGoldenFile"; + public void scaleAndRotateAndMatrixTransformation_matchesGoldenFile() throws Exception { + String testId = "scaleAndRotateAndMatrixTransformation_matchesGoldenFile"; Matrix translateRightMatrix = new Matrix(); translateRightMatrix.postTranslate(/* dx= */ 1, /* dy= */ 0); videoFrameProcessorTestRunner = getDefaultFrameProcessorTestRunnerBuilder(testId) .setEffects( - new ScaleToFitTransformation.Builder().setRotationDegrees(45).build(), + new ScaleAndRotateTransformation.Builder().setRotationDegrees(45).build(), (MatrixTransformation) (long presentationTimeUs) -> translateRightMatrix) .build(); Bitmap expectedBitmap = readBitmap(ROTATE_THEN_TRANSLATE_PNG_ASSET_PATH); @@ -298,11 +298,11 @@ public final class DefaultVideoFrameProcessorPixelTest { } @Test - public void scaleToFitTransformation_rotate45_matchesGoldenFile() throws Exception { - String testId = "scaleToFitTransformation_rotate45_matchesGoldenFile"; + public void scaleAndRotateTransformation_rotate45_matchesGoldenFile() throws Exception { + String testId = "scaleAndRotateTransformation_rotate45_matchesGoldenFile"; videoFrameProcessorTestRunner = getDefaultFrameProcessorTestRunnerBuilder(testId) - .setEffects(new ScaleToFitTransformation.Builder().setRotationDegrees(45).build()) + .setEffects(new ScaleAndRotateTransformation.Builder().setRotationDegrees(45).build()) .build(); Bitmap expectedBitmap = readBitmap(ROTATE45_SCALE_TO_FIT_PNG_ASSET_PATH); @@ -315,15 +315,15 @@ public final class DefaultVideoFrameProcessorPixelTest { } @Test - public void twoWrappedScaleToFitTransformations_matchesGoldenFile() throws Exception { - String testId = "twoWrappedScaleToFitTransformations_matchesGoldenFile"; + public void twoWrappedScaleAndRotateTransformations_matchesGoldenFile() throws Exception { + String testId = "twoWrappedScaleAndRotateTransformations_matchesGoldenFile"; videoFrameProcessorTestRunner = getDefaultFrameProcessorTestRunnerBuilder(testId) .setEffects( new GlEffectWrapper( - new ScaleToFitTransformation.Builder().setRotationDegrees(45).build()), + new ScaleAndRotateTransformation.Builder().setRotationDegrees(45).build()), new GlEffectWrapper( - new ScaleToFitTransformation.Builder() + new ScaleAndRotateTransformation.Builder() .setScale(/* scaleX= */ 2, /* scaleY= */ 1) .build())) .build(); @@ -510,8 +510,8 @@ public final class DefaultVideoFrameProcessorPixelTest { * Specifies a counter-clockwise rotation while accounting for the aspect ratio difference between * the input frame in pixel coordinates and NDC. * - *

Unlike {@link ScaleToFitTransformation}, this does not adjust the output size or scale to - * preserve input pixels. Pixels rotated out of the frame are clipped. + *

Unlike {@link ScaleAndRotateTransformation}, this does not adjust the output size or scale + * to preserve input pixels. Pixels rotated out of the frame are clipped. */ private static final class Rotation implements MatrixTransformation { diff --git a/libraries/effect/src/main/java/androidx/media3/effect/FinalMatrixShaderProgramWrapper.java b/libraries/effect/src/main/java/androidx/media3/effect/FinalMatrixShaderProgramWrapper.java index 95e50ac8ff..1383a54c2e 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/FinalMatrixShaderProgramWrapper.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/FinalMatrixShaderProgramWrapper.java @@ -393,7 +393,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; new ImmutableList.Builder().addAll(matrixTransformations); if (outputSurfaceInfo.orientationDegrees != 0) { matrixTransformationListBuilder.add( - new ScaleToFitTransformation.Builder() + new ScaleAndRotateTransformation.Builder() .setRotationDegrees(outputSurfaceInfo.orientationDegrees) .build()); } diff --git a/libraries/effect/src/main/java/androidx/media3/effect/ScaleToFitTransformation.java b/libraries/effect/src/main/java/androidx/media3/effect/ScaleAndRotateTransformation.java similarity index 94% rename from libraries/effect/src/main/java/androidx/media3/effect/ScaleToFitTransformation.java rename to libraries/effect/src/main/java/androidx/media3/effect/ScaleAndRotateTransformation.java index 75872ba16c..7bbb15a327 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/ScaleToFitTransformation.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/ScaleAndRotateTransformation.java @@ -36,9 +36,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; *

The background color of the output frame will be black, with alpha = 0 if applicable. */ @UnstableApi -public final class ScaleToFitTransformation implements MatrixTransformation { +public final class ScaleAndRotateTransformation implements MatrixTransformation { - /** A builder for {@link ScaleToFitTransformation} instances. */ + /** A builder for {@link ScaleAndRotateTransformation} instances. */ public static final class Builder { // Optional fields. @@ -87,8 +87,8 @@ public final class ScaleToFitTransformation implements MatrixTransformation { return this; } - public ScaleToFitTransformation build() { - return new ScaleToFitTransformation(scaleX, scaleY, rotationDegrees); + public ScaleAndRotateTransformation build() { + return new ScaleAndRotateTransformation(scaleX, scaleY, rotationDegrees); } } @@ -102,7 +102,7 @@ public final class ScaleToFitTransformation implements MatrixTransformation { * @param scaleY The multiplier by which the frame will scale vertically, along the y-axis. * @param rotationDegrees How much to rotate the frame counterclockwise, in degrees. */ - private ScaleToFitTransformation(float scaleX, float scaleY, float rotationDegrees) { + private ScaleAndRotateTransformation(float scaleX, float scaleY, float rotationDegrees) { transformationMatrix = new Matrix(); transformationMatrix.postScale(scaleX, scaleY); transformationMatrix.postRotate(rotationDegrees); diff --git a/libraries/effect/src/test/java/androidx/media3/effect/ScaleToFitTransformationTest.java b/libraries/effect/src/test/java/androidx/media3/effect/ScaleAndRotateTransformationTest.java similarity index 60% rename from libraries/effect/src/test/java/androidx/media3/effect/ScaleToFitTransformationTest.java rename to libraries/effect/src/test/java/androidx/media3/effect/ScaleAndRotateTransformationTest.java index 68fa74af15..c7253b218b 100644 --- a/libraries/effect/src/test/java/androidx/media3/effect/ScaleToFitTransformationTest.java +++ b/libraries/effect/src/test/java/androidx/media3/effect/ScaleAndRotateTransformationTest.java @@ -23,23 +23,23 @@ import org.junit.Test; import org.junit.runner.RunWith; /** - * Unit tests for {@link ScaleToFitTransformation}. + * Unit tests for {@link ScaleAndRotateTransformation}. * *

See {@code MatrixShaderProgramPixelTest} for pixel tests testing {@link MatrixShaderProgram} * given a transformation matrix. */ @RunWith(AndroidJUnit4.class) -public final class ScaleToFitTransformationTest { +public final class ScaleAndRotateTransformationTest { @Test public void configure_noEdits_leavesFramesUnchanged() { int inputWidth = 200; int inputHeight = 150; - ScaleToFitTransformation scaleToFitTransformation = - new ScaleToFitTransformation.Builder().build(); + ScaleAndRotateTransformation scaleAndRotateTransformation = + new ScaleAndRotateTransformation.Builder().build(); - Size outputSize = scaleToFitTransformation.configure(inputWidth, inputHeight); - boolean isNoOp = scaleToFitTransformation.isNoOp(inputWidth, inputHeight); + Size outputSize = scaleAndRotateTransformation.configure(inputWidth, inputHeight); + boolean isNoOp = scaleAndRotateTransformation.isNoOp(inputWidth, inputHeight); assertThat(isNoOp).isTrue(); assertThat(outputSize.getWidth()).isEqualTo(inputWidth); @@ -50,13 +50,13 @@ public final class ScaleToFitTransformationTest { public void configure_scaleNarrow_decreasesWidth() { int inputWidth = 200; int inputHeight = 150; - ScaleToFitTransformation scaleToFitTransformation = - new ScaleToFitTransformation.Builder() + ScaleAndRotateTransformation scaleAndRotateTransformation = + new ScaleAndRotateTransformation.Builder() .setScale(/* scaleX= */ 0.5f, /* scaleY= */ 1f) .build(); - Size outputSize = scaleToFitTransformation.configure(inputWidth, inputHeight); - boolean isNoOp = scaleToFitTransformation.isNoOp(inputWidth, inputHeight); + Size outputSize = scaleAndRotateTransformation.configure(inputWidth, inputHeight); + boolean isNoOp = scaleAndRotateTransformation.isNoOp(inputWidth, inputHeight); assertThat(isNoOp).isFalse(); assertThat(outputSize.getWidth()).isEqualTo(Math.round(inputWidth * 0.5f)); @@ -67,11 +67,13 @@ public final class ScaleToFitTransformationTest { public void configure_scaleWide_increasesWidth() { int inputWidth = 200; int inputHeight = 150; - ScaleToFitTransformation scaleToFitTransformation = - new ScaleToFitTransformation.Builder().setScale(/* scaleX= */ 2f, /* scaleY= */ 1f).build(); + ScaleAndRotateTransformation scaleAndRotateTransformation = + new ScaleAndRotateTransformation.Builder() + .setScale(/* scaleX= */ 2f, /* scaleY= */ 1f) + .build(); - Size outputSize = scaleToFitTransformation.configure(inputWidth, inputHeight); - boolean isNoOp = scaleToFitTransformation.isNoOp(inputWidth, inputHeight); + Size outputSize = scaleAndRotateTransformation.configure(inputWidth, inputHeight); + boolean isNoOp = scaleAndRotateTransformation.isNoOp(inputWidth, inputHeight); assertThat(isNoOp).isFalse(); assertThat(outputSize.getWidth()).isEqualTo(inputWidth * 2); @@ -82,11 +84,13 @@ public final class ScaleToFitTransformationTest { public void configure_scaleTall_increasesHeight() { int inputWidth = 200; int inputHeight = 150; - ScaleToFitTransformation scaleToFitTransformation = - new ScaleToFitTransformation.Builder().setScale(/* scaleX= */ 1f, /* scaleY= */ 2f).build(); + ScaleAndRotateTransformation scaleAndRotateTransformation = + new ScaleAndRotateTransformation.Builder() + .setScale(/* scaleX= */ 1f, /* scaleY= */ 2f) + .build(); - Size outputSize = scaleToFitTransformation.configure(inputWidth, inputHeight); - boolean isNoOp = scaleToFitTransformation.isNoOp(inputWidth, inputHeight); + Size outputSize = scaleAndRotateTransformation.configure(inputWidth, inputHeight); + boolean isNoOp = scaleAndRotateTransformation.isNoOp(inputWidth, inputHeight); assertThat(isNoOp).isFalse(); assertThat(outputSize.getWidth()).isEqualTo(inputWidth); @@ -97,11 +101,11 @@ public final class ScaleToFitTransformationTest { public void configure_rotate90_swapsDimensions() { int inputWidth = 200; int inputHeight = 150; - ScaleToFitTransformation scaleToFitTransformation = - new ScaleToFitTransformation.Builder().setRotationDegrees(90).build(); + ScaleAndRotateTransformation scaleAndRotateTransformation = + new ScaleAndRotateTransformation.Builder().setRotationDegrees(90).build(); - Size outputSize = scaleToFitTransformation.configure(inputWidth, inputHeight); - boolean isNoOp = scaleToFitTransformation.isNoOp(inputWidth, inputHeight); + Size outputSize = scaleAndRotateTransformation.configure(inputWidth, inputHeight); + boolean isNoOp = scaleAndRotateTransformation.isNoOp(inputWidth, inputHeight); assertThat(isNoOp).isFalse(); assertThat(outputSize.getWidth()).isEqualTo(inputHeight); @@ -112,12 +116,12 @@ public final class ScaleToFitTransformationTest { public void configure_rotate45_changesDimensions() { int inputWidth = 200; int inputHeight = 150; - ScaleToFitTransformation scaleToFitTransformation = - new ScaleToFitTransformation.Builder().setRotationDegrees(45).build(); + ScaleAndRotateTransformation scaleAndRotateTransformation = + new ScaleAndRotateTransformation.Builder().setRotationDegrees(45).build(); long expectedOutputWidthHeight = 247; - Size outputSize = scaleToFitTransformation.configure(inputWidth, inputHeight); - boolean isNoOp = scaleToFitTransformation.isNoOp(inputWidth, inputHeight); + Size outputSize = scaleAndRotateTransformation.configure(inputWidth, inputHeight); + boolean isNoOp = scaleAndRotateTransformation.isNoOp(inputWidth, inputHeight); assertThat(isNoOp).isFalse(); assertThat(outputSize.getWidth()).isEqualTo(expectedOutputWidthHeight); diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java index 173e2f76ff..8604ab3f30 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java @@ -2288,16 +2288,17 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { private static final class VideoFrameProcessorAccessor { - private static @MonotonicNonNull Constructor scaleToFitTransformationBuilderConstructor; + private static @MonotonicNonNull Constructor + scaleAndRotateTransformationBuilderConstructor; private static @MonotonicNonNull Method setRotationMethod; - private static @MonotonicNonNull Method buildScaleToFitTransformationMethod; + private static @MonotonicNonNull Method buildScaleAndRotateTransformationMethod; private static @MonotonicNonNull Constructor videoFrameProcessorFactoryConstructor; public static Effect createRotationEffect(float rotationDegrees) throws Exception { prepare(); - Object builder = scaleToFitTransformationBuilderConstructor.newInstance(); + Object builder = scaleAndRotateTransformationBuilderConstructor.newInstance(); setRotationMethod.invoke(builder, rotationDegrees); - return (Effect) checkNotNull(buildScaleToFitTransformationMethod.invoke(builder)); + return (Effect) checkNotNull(buildScaleAndRotateTransformationMethod.invoke(builder)); } public static VideoFrameProcessor.Factory getFrameProcessorFactory() throws Exception { @@ -2306,23 +2307,23 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { } @EnsuresNonNull({ - "ScaleToFitEffectBuilder", + "ScaleAndRotateEffectBuilder", "SetRotationMethod", "SetRotationMethod", "VideoFrameProcessorFactoryClass" }) private static void prepare() throws Exception { - if (scaleToFitTransformationBuilderConstructor == null + if (scaleAndRotateTransformationBuilderConstructor == null || setRotationMethod == null - || buildScaleToFitTransformationMethod == null) { - Class scaleToFitTransformationBuilderClass = - Class.forName("androidx.media3.effect.ScaleToFitTransformation$Builder"); - scaleToFitTransformationBuilderConstructor = - scaleToFitTransformationBuilderClass.getConstructor(); + || buildScaleAndRotateTransformationMethod == null) { + Class scaleAndRotateTransformationBuilderClass = + Class.forName("androidx.media3.effect.ScaleAndRotateTransformation$Builder"); + scaleAndRotateTransformationBuilderConstructor = + scaleAndRotateTransformationBuilderClass.getConstructor(); setRotationMethod = - scaleToFitTransformationBuilderClass.getMethod("setRotationDegrees", float.class); - buildScaleToFitTransformationMethod = - scaleToFitTransformationBuilderClass.getMethod("build"); + scaleAndRotateTransformationBuilderClass.getMethod("setRotationDegrees", float.class); + buildScaleAndRotateTransformationMethod = + scaleAndRotateTransformationBuilderClass.getMethod("build"); } if (videoFrameProcessorFactoryConstructor == null) { videoFrameProcessorFactoryConstructor = diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ExportTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ExportTest.java index c53e965b43..79414fa399 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ExportTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ExportTest.java @@ -30,7 +30,7 @@ import android.net.Uri; import androidx.media3.common.Effect; import androidx.media3.common.MediaItem; import androidx.media3.common.util.Util; -import androidx.media3.effect.ScaleToFitTransformation; +import androidx.media3.effect.ScaleAndRotateTransformation; import androidx.media3.transformer.AndroidTestUtil; import androidx.media3.transformer.AndroidTestUtil.ForceEncodeEncoderFactory; import androidx.media3.transformer.DefaultEncoderFactory; @@ -244,7 +244,7 @@ public class ExportTest { MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING)); ImmutableList videoEffects = - ImmutableList.of(new ScaleToFitTransformation.Builder().setRotationDegrees(45).build()); + ImmutableList.of(new ScaleAndRotateTransformation.Builder().setRotationDegrees(45).build()); Effects effects = new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).setEffects(effects).build(); diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/HdrEditingTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/HdrEditingTest.java index 85dba71cab..26cbf50303 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/HdrEditingTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/HdrEditingTest.java @@ -32,7 +32,7 @@ import androidx.media3.common.Effect; import androidx.media3.common.MediaItem; import androidx.media3.common.util.Log; import androidx.media3.common.util.Util; -import androidx.media3.effect.ScaleToFitTransformation; +import androidx.media3.effect.ScaleAndRotateTransformation; import androidx.media3.transformer.EditedMediaItem; import androidx.media3.transformer.Effects; import androidx.media3.transformer.EncoderUtil; @@ -130,7 +130,8 @@ public class HdrEditingTest { Transformer transformer = new Transformer.Builder(context).build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_4_SECOND_HDR10)); ImmutableList videoEffects = - ImmutableList.of(new ScaleToFitTransformation.Builder().setRotationDegrees(180).build()); + ImmutableList.of( + new ScaleAndRotateTransformation.Builder().setRotationDegrees(180).build()); Effects effects = new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).setEffects(effects).build(); @@ -154,7 +155,8 @@ public class HdrEditingTest { Transformer transformer = new Transformer.Builder(context).build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10)); ImmutableList videoEffects = - ImmutableList.of(new ScaleToFitTransformation.Builder().setRotationDegrees(180).build()); + ImmutableList.of( + new ScaleAndRotateTransformation.Builder().setRotationDegrees(180).build()); Effects effects = new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).setEffects(effects).build(); @@ -198,7 +200,8 @@ public class HdrEditingTest { .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_4_SECOND_HDR10)); ImmutableList videoEffects = - ImmutableList.of(new ScaleToFitTransformation.Builder().setRotationDegrees(180).build()); + ImmutableList.of( + new ScaleAndRotateTransformation.Builder().setRotationDegrees(180).build()); Effects effects = new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).setEffects(effects).build(); @@ -252,7 +255,8 @@ public class HdrEditingTest { .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10)); ImmutableList videoEffects = - ImmutableList.of(new ScaleToFitTransformation.Builder().setRotationDegrees(180).build()); + ImmutableList.of( + new ScaleAndRotateTransformation.Builder().setRotationDegrees(180).build()); Effects effects = new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).setEffects(effects).build(); diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/RepeatedTranscodeTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/RepeatedTranscodeTest.java index 91806ad680..9b223918d6 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/RepeatedTranscodeTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/RepeatedTranscodeTest.java @@ -22,7 +22,7 @@ import android.content.Context; import android.net.Uri; import androidx.media3.common.Effect; import androidx.media3.common.MediaItem; -import androidx.media3.effect.ScaleToFitTransformation; +import androidx.media3.effect.ScaleAndRotateTransformation; import androidx.media3.transformer.AndroidTestUtil; import androidx.media3.transformer.EditedMediaItem; import androidx.media3.transformer.Effects; @@ -57,7 +57,7 @@ public final class RepeatedTranscodeTest { MediaItem mediaItem = MediaItem.fromUri(Uri.parse(AndroidTestUtil.MP4_REMOTE_10_SECONDS_URI_STRING)); ImmutableList videoEffects = - ImmutableList.of(new ScaleToFitTransformation.Builder().setRotationDegrees(45).build()); + ImmutableList.of(new ScaleAndRotateTransformation.Builder().setRotationDegrees(45).build()); Effects effects = new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).setEffects(effects).build(); @@ -90,7 +90,7 @@ public final class RepeatedTranscodeTest { MediaItem mediaItem = MediaItem.fromUri(Uri.parse(AndroidTestUtil.MP4_REMOTE_10_SECONDS_URI_STRING)); ImmutableList videoEffects = - ImmutableList.of(new ScaleToFitTransformation.Builder().setRotationDegrees(45).build()); + ImmutableList.of(new ScaleAndRotateTransformation.Builder().setRotationDegrees(45).build()); Effects effects = new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).setRemoveAudio(true).setEffects(effects).build(); diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ToneMapHdrToSdrUsingMediaCodecTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ToneMapHdrToSdrUsingMediaCodecTest.java index 2d1065dea3..9d32fa4421 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ToneMapHdrToSdrUsingMediaCodecTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ToneMapHdrToSdrUsingMediaCodecTest.java @@ -27,7 +27,7 @@ import androidx.media3.common.C; import androidx.media3.common.Effect; import androidx.media3.common.MediaItem; import androidx.media3.common.util.Log; -import androidx.media3.effect.ScaleToFitTransformation; +import androidx.media3.effect.ScaleAndRotateTransformation; import androidx.media3.transformer.EditedMediaItem; import androidx.media3.transformer.Effects; import androidx.media3.transformer.ExportException; @@ -161,7 +161,8 @@ public class ToneMapHdrToSdrUsingMediaCodecTest { .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_4_SECOND_HDR10)); ImmutableList videoEffects = - ImmutableList.of(new ScaleToFitTransformation.Builder().setRotationDegrees(180).build()); + ImmutableList.of( + new ScaleAndRotateTransformation.Builder().setRotationDegrees(180).build()); Effects effects = new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).setEffects(effects).build(); @@ -208,7 +209,8 @@ public class ToneMapHdrToSdrUsingMediaCodecTest { .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10)); ImmutableList videoEffects = - ImmutableList.of(new ScaleToFitTransformation.Builder().setRotationDegrees(180).build()); + ImmutableList.of( + new ScaleAndRotateTransformation.Builder().setRotationDegrees(180).build()); Effects effects = new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).setEffects(effects).build(); diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerEndToEndTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerEndToEndTest.java index 3dfd02e346..3cbbaa8a64 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerEndToEndTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerEndToEndTest.java @@ -50,7 +50,7 @@ import androidx.media3.common.audio.AudioProcessor; import androidx.media3.common.audio.SonicAudioProcessor; import androidx.media3.common.util.Util; import androidx.media3.effect.Presentation; -import androidx.media3.effect.ScaleToFitTransformation; +import androidx.media3.effect.ScaleAndRotateTransformation; import androidx.media3.exoplayer.audio.SilenceSkippingAudioProcessor; import androidx.media3.exoplayer.source.DefaultMediaSourceFactory; import androidx.media3.exoplayer.source.MediaSource; @@ -965,7 +965,7 @@ public final class TransformerEndToEndTest { ImmutableList videoEffects = ImmutableList.of( Presentation.createForHeight(mediaItemHeightPixels), - new ScaleToFitTransformation.Builder().build()); + new ScaleAndRotateTransformation.Builder().build()); Effects effects = new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).setEffects(effects).build();