From 89e14989b3d68c7345b5b68e603cb384370c7a1c Mon Sep 17 00:00:00 2001 From: kimvde Date: Mon, 16 Jan 2023 20:03:29 +0000 Subject: [PATCH] Remove setScale and setRotationDegrees from TransformationRequest Also remove usages of TransformationRequest convenience methods (setScale, setRotationDegrees and setResolution). Some usages of setResolution can't be removed yet because they are used for fallback. PiperOrigin-RevId: 502415748 --- .../transformerdemo/TransformerActivity.java | 46 ++++++---- .../effect/ScaleToFitTransformation.java | 4 + .../transformer/TransformerEndToEndTest.java | 8 +- .../transformer/mh/HdrEditingTest.java | 23 +++-- .../transformer/mh/RepeatedTranscodeTest.java | 12 ++- .../ToneMapHdrToSdrUsingMediaCodecTest.java | 10 ++- .../transformer/mh/TransformationTest.java | 7 +- .../transformer/TransformationRequest.java | 89 +------------------ .../exoplayer2/transformer/Transformer.java | 4 +- .../transformer/TransformerInternal.java | 9 -- .../transformer/VideoSamplePipeline.java | 10 --- .../TransformationRequestTest.java | 2 - 12 files changed, 74 insertions(+), 150 deletions(-) diff --git a/demos/transformer/src/main/java/com/google/android/exoplayer2/transformerdemo/TransformerActivity.java b/demos/transformer/src/main/java/com/google/android/exoplayer2/transformerdemo/TransformerActivity.java index afe31bee74..ad3f30e178 100644 --- a/demos/transformer/src/main/java/com/google/android/exoplayer2/transformerdemo/TransformerActivity.java +++ b/demos/transformer/src/main/java/com/google/android/exoplayer2/transformerdemo/TransformerActivity.java @@ -58,9 +58,11 @@ import com.google.android.exoplayer2.effect.GlTextureProcessor; import com.google.android.exoplayer2.effect.HslAdjustment; import com.google.android.exoplayer2.effect.OverlayEffect; import com.google.android.exoplayer2.effect.OverlaySettings; +import com.google.android.exoplayer2.effect.Presentation; import com.google.android.exoplayer2.effect.RgbAdjustment; import com.google.android.exoplayer2.effect.RgbFilter; import com.google.android.exoplayer2.effect.RgbMatrix; +import com.google.android.exoplayer2.effect.ScaleToFitTransformation; import com.google.android.exoplayer2.effect.SingleColorLut; import com.google.android.exoplayer2.effect.TextOverlay; import com.google.android.exoplayer2.effect.TextureOverlay; @@ -278,43 +280,51 @@ public final class TransformerActivity extends AppCompatActivity { if (videoMimeType != null) { requestBuilder.setVideoMimeType(videoMimeType); } + requestBuilder.setHdrMode(bundle.getInt(ConfigurationActivity.HDR_MODE)); + transformerBuilder.setTransformationRequest(requestBuilder.build()); + + transformerBuilder.setAudioProcessors(createAudioProcessorsFromBundle(bundle)); + + ImmutableList.Builder effectsListBuilder = + new ImmutableList.Builder().addAll(createVideoEffectsFromBundle(bundle)); + float scaleX = bundle.getFloat(ConfigurationActivity.SCALE_X, /* defaultValue= */ 1); + float scaleY = bundle.getFloat(ConfigurationActivity.SCALE_Y, /* defaultValue= */ 1); + float rotateDegrees = + bundle.getFloat(ConfigurationActivity.ROTATE_DEGREES, /* defaultValue= */ 0); + if (scaleX != 1f || scaleY != 1f || rotateDegrees != 0f) { + effectsListBuilder.add( + new ScaleToFitTransformation.Builder() + .setScale(scaleX, scaleY) + .setRotationDegrees(rotateDegrees) + .build()); + } int resolutionHeight = bundle.getInt( ConfigurationActivity.RESOLUTION_HEIGHT, /* defaultValue= */ C.LENGTH_UNSET); if (resolutionHeight != C.LENGTH_UNSET) { - requestBuilder.setResolution(resolutionHeight); + effectsListBuilder.add(Presentation.createForHeight(resolutionHeight)); } + transformerBuilder.setVideoEffects(effectsListBuilder.build()); - float scaleX = bundle.getFloat(ConfigurationActivity.SCALE_X, /* defaultValue= */ 1); - float scaleY = bundle.getFloat(ConfigurationActivity.SCALE_Y, /* defaultValue= */ 1); - requestBuilder.setScale(scaleX, scaleY); - - float rotateDegrees = - bundle.getFloat(ConfigurationActivity.ROTATE_DEGREES, /* defaultValue= */ 0); - requestBuilder.setRotationDegrees(rotateDegrees); - requestBuilder.setHdrMode(bundle.getInt(ConfigurationActivity.HDR_MODE)); transformerBuilder - .setTransformationRequest(requestBuilder.build()) .setRemoveAudio(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_AUDIO)) .setRemoveVideo(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_VIDEO)) - .experimentalSetForceSilentAudio( - bundle.getBoolean(ConfigurationActivity.FORCE_SILENT_AUDIO)) .setEncoderFactory( new DefaultEncoderFactory.Builder(this.getApplicationContext()) .setEnableFallback(bundle.getBoolean(ConfigurationActivity.ENABLE_FALLBACK)) .build()); - transformerBuilder.setAudioProcessors(createAudioProcessorsFromBundle(bundle)); - transformerBuilder.setVideoEffects(createVideoEffectsFromBundle(bundle)); + if (!bundle.getBoolean(ConfigurationActivity.ABORT_SLOW_TRANSFORMATION)) { + transformerBuilder.setMuxerFactory( + new DefaultMuxer.Factory(/* maxDelayBetweenSamplesMs= */ C.TIME_UNSET)); + } if (bundle.getBoolean(ConfigurationActivity.ENABLE_DEBUG_PREVIEW)) { transformerBuilder.setDebugViewProvider(new DemoDebugViewProvider()); } - if (!bundle.getBoolean(ConfigurationActivity.ABORT_SLOW_TRANSFORMATION)) { - transformerBuilder.setMuxerFactory( - new DefaultMuxer.Factory(/* maxDelayBetweenSamplesMs= */ C.TIME_UNSET)); - } + transformerBuilder.experimentalSetForceSilentAudio( + bundle.getBoolean(ConfigurationActivity.FORCE_SILENT_AUDIO)); } return transformerBuilder diff --git a/library/effect/src/main/java/com/google/android/exoplayer2/effect/ScaleToFitTransformation.java b/library/effect/src/main/java/com/google/android/exoplayer2/effect/ScaleToFitTransformation.java index 0e678a3cb1..350f2fd20e 100644 --- a/library/effect/src/main/java/com/google/android/exoplayer2/effect/ScaleToFitTransformation.java +++ b/library/effect/src/main/java/com/google/android/exoplayer2/effect/ScaleToFitTransformation.java @@ -72,6 +72,10 @@ public final class ScaleToFitTransformation implements MatrixTransformation { * *

The default value, 0, corresponds to not applying any rotation. * + *

The output frame's width and height are automatically adjusted to preserve all input + * pixels. The rotated input frame is fitted inside an enclosing black rectangle if its edges + * aren't parallel to the x and y axes. + * * @param rotationDegrees The counterclockwise rotation, in degrees. * @return This builder. */ diff --git a/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/TransformerEndToEndTest.java b/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/TransformerEndToEndTest.java index 4f15e6b894..2baade57cc 100644 --- a/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/TransformerEndToEndTest.java +++ b/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/TransformerEndToEndTest.java @@ -26,6 +26,8 @@ import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.MediaItem; +import com.google.android.exoplayer2.effect.Presentation; +import com.google.common.collect.ImmutableList; import org.junit.Test; import org.junit.runner.RunWith; @@ -42,8 +44,7 @@ public class TransformerEndToEndTest { public void videoEditing_completesWithConsistentFrameCount() throws Exception { Transformer transformer = new Transformer.Builder(context) - .setTransformationRequest( - new TransformationRequest.Builder().setResolution(480).build()) + .setVideoEffects(ImmutableList.of(Presentation.createForHeight(480))) .setEncoderFactory( new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build()) .build(); @@ -66,8 +67,7 @@ public class TransformerEndToEndTest { Transformer transformer = new Transformer.Builder(context) .setRemoveAudio(true) - .setTransformationRequest( - new TransformationRequest.Builder().setResolution(480).build()) + .setVideoEffects(ImmutableList.of(Presentation.createForHeight(480))) .setEncoderFactory( new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build()) .build(); diff --git a/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/HdrEditingTest.java b/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/HdrEditingTest.java index c9a288b0a6..0dcfa46af4 100644 --- a/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/HdrEditingTest.java +++ b/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/HdrEditingTest.java @@ -30,6 +30,7 @@ import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.MediaItem; +import com.google.android.exoplayer2.effect.ScaleToFitTransformation; import com.google.android.exoplayer2.transformer.EncoderUtil; import com.google.android.exoplayer2.transformer.TransformationException; import com.google.android.exoplayer2.transformer.TransformationRequest; @@ -39,6 +40,7 @@ import com.google.android.exoplayer2.transformer.TransformerAndroidTestRunner; import com.google.android.exoplayer2.util.Log; import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.video.ColorInfo; +import com.google.common.collect.ImmutableList; import java.util.concurrent.atomic.AtomicBoolean; import org.junit.Test; import org.junit.runner.RunWith; @@ -121,8 +123,9 @@ public class HdrEditingTest { Transformer transformer = new Transformer.Builder(context) - .setTransformationRequest( - new TransformationRequest.Builder().setRotationDegrees(180).build()) + .setVideoEffects( + ImmutableList.of( + new ScaleToFitTransformation.Builder().setRotationDegrees(180).build())) .build(); TransformationTestResult transformationTestResult = @@ -144,8 +147,9 @@ public class HdrEditingTest { Transformer transformer = new Transformer.Builder(context) - .setTransformationRequest( - new TransformationRequest.Builder().setRotationDegrees(180).build()) + .setVideoEffects( + ImmutableList.of( + new ScaleToFitTransformation.Builder().setRotationDegrees(180).build())) .build(); TransformationTestResult transformationTestResult = @@ -169,8 +173,9 @@ public class HdrEditingTest { AtomicBoolean isToneMappingFallbackApplied = new AtomicBoolean(); Transformer transformer = new Transformer.Builder(context) - .setTransformationRequest( - new TransformationRequest.Builder().setRotationDegrees(180).build()) + .setVideoEffects( + ImmutableList.of( + new ScaleToFitTransformation.Builder().setRotationDegrees(180).build())) .addListener( new Transformer.Listener() { @Override @@ -222,8 +227,9 @@ public class HdrEditingTest { AtomicBoolean isToneMappingFallbackApplied = new AtomicBoolean(); Transformer transformer = new Transformer.Builder(context) - .setTransformationRequest( - new TransformationRequest.Builder().setRotationDegrees(180).build()) + .setVideoEffects( + ImmutableList.of( + new ScaleToFitTransformation.Builder().setRotationDegrees(180).build())) .addListener( new Transformer.Listener() { @Override @@ -257,7 +263,6 @@ public class HdrEditingTest { TransformationException.ERROR_CODE_HDR_ENCODING_UNSUPPORTED, TransformationException.ERROR_CODE_DECODING_FORMAT_UNSUPPORTED); assertThat(isFallbackListenerInvoked.get()).isFalse(); - return; } } diff --git a/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/RepeatedTranscodeTest.java b/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/RepeatedTranscodeTest.java index b6b1670a22..77961b68be 100644 --- a/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/RepeatedTranscodeTest.java +++ b/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/RepeatedTranscodeTest.java @@ -23,11 +23,13 @@ import android.net.Uri; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.MediaItem; +import com.google.android.exoplayer2.effect.ScaleToFitTransformation; import com.google.android.exoplayer2.transformer.AndroidTestUtil; import com.google.android.exoplayer2.transformer.TransformationRequest; import com.google.android.exoplayer2.transformer.TransformationTestResult; import com.google.android.exoplayer2.transformer.Transformer; import com.google.android.exoplayer2.transformer.TransformerAndroidTestRunner; +import com.google.common.collect.ImmutableList; import java.util.HashSet; import java.util.Set; import org.junit.Test; @@ -46,8 +48,9 @@ public final class RepeatedTranscodeTest { new TransformerAndroidTestRunner.Builder( context, new Transformer.Builder(context) - .setTransformationRequest( - new TransformationRequest.Builder().setRotationDegrees(45).build()) + .setVideoEffects( + ImmutableList.of( + new ScaleToFitTransformation.Builder().setRotationDegrees(45).build())) .setEncoderFactory(new AndroidTestUtil.ForceEncodeEncoderFactory(context)) .build()) .build(); @@ -76,8 +79,9 @@ public final class RepeatedTranscodeTest { context, new Transformer.Builder(context) .setRemoveAudio(true) - .setTransformationRequest( - new TransformationRequest.Builder().setRotationDegrees(45).build()) + .setVideoEffects( + ImmutableList.of( + new ScaleToFitTransformation.Builder().setRotationDegrees(45).build())) .setEncoderFactory(new AndroidTestUtil.ForceEncodeEncoderFactory(context)) .build()) .build(); diff --git a/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/ToneMapHdrToSdrUsingMediaCodecTest.java b/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/ToneMapHdrToSdrUsingMediaCodecTest.java index 6e7ad7d74c..f2d83bff0d 100644 --- a/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/ToneMapHdrToSdrUsingMediaCodecTest.java +++ b/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/ToneMapHdrToSdrUsingMediaCodecTest.java @@ -27,12 +27,14 @@ import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.MediaItem; +import com.google.android.exoplayer2.effect.ScaleToFitTransformation; import com.google.android.exoplayer2.transformer.TransformationException; import com.google.android.exoplayer2.transformer.TransformationRequest; import com.google.android.exoplayer2.transformer.TransformationTestResult; import com.google.android.exoplayer2.transformer.Transformer; import com.google.android.exoplayer2.transformer.TransformerAndroidTestRunner; import com.google.android.exoplayer2.util.Log; +import com.google.common.collect.ImmutableList; import org.junit.Test; import org.junit.runner.RunWith; @@ -145,8 +147,10 @@ public class ToneMapHdrToSdrUsingMediaCodecTest { .setTransformationRequest( new TransformationRequest.Builder() .setHdrMode(TransformationRequest.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC) - .setRotationDegrees(180) .build()) + .setVideoEffects( + ImmutableList.of( + new ScaleToFitTransformation.Builder().setRotationDegrees(180).build())) .addListener( new Transformer.Listener() { @Override @@ -191,8 +195,10 @@ public class ToneMapHdrToSdrUsingMediaCodecTest { .setTransformationRequest( new TransformationRequest.Builder() .setHdrMode(TransformationRequest.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC) - .setRotationDegrees(180) .build()) + .setVideoEffects( + ImmutableList.of( + new ScaleToFitTransformation.Builder().setRotationDegrees(180).build())) .addListener( new Transformer.Listener() { @Override diff --git a/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/TransformationTest.java b/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/TransformationTest.java index e8d59992d0..279ad25ffb 100644 --- a/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/TransformationTest.java +++ b/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/mh/TransformationTest.java @@ -29,6 +29,7 @@ import android.net.Uri; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.MediaItem; +import com.google.android.exoplayer2.effect.ScaleToFitTransformation; import com.google.android.exoplayer2.transformer.AndroidTestUtil; import com.google.android.exoplayer2.transformer.AndroidTestUtil.ForceEncodeEncoderFactory; import com.google.android.exoplayer2.transformer.DefaultEncoderFactory; @@ -37,6 +38,7 @@ import com.google.android.exoplayer2.transformer.Transformer; import com.google.android.exoplayer2.transformer.TransformerAndroidTestRunner; import com.google.android.exoplayer2.transformer.VideoEncoderSettings; import com.google.android.exoplayer2.util.Util; +import com.google.common.collect.ImmutableList; import org.junit.Test; import org.junit.runner.RunWith; @@ -195,8 +197,9 @@ public class TransformationTest { Transformer transformer = new Transformer.Builder(context) - .setTransformationRequest( - new TransformationRequest.Builder().setRotationDegrees(45).build()) + .setVideoEffects( + ImmutableList.of( + new ScaleToFitTransformation.Builder().setRotationDegrees(45).build())) .build(); new TransformerAndroidTestRunner.Builder(context, transformer) diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformationRequest.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformationRequest.java index d1137bbe6a..9326df295e 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformationRequest.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformationRequest.java @@ -109,9 +109,6 @@ public final class TransformationRequest { public static final class Builder { private boolean flattenForSlowMotion; - private float scaleX; - private float scaleY; - private float rotationDegrees; private int outputHeight; @Nullable private String audioMimeType; @Nullable private String videoMimeType; @@ -124,16 +121,11 @@ public final class TransformationRequest { * {@link TransformationRequest}. */ public Builder() { - scaleX = 1; - scaleY = 1; outputHeight = C.LENGTH_UNSET; } private Builder(TransformationRequest transformationRequest) { this.flattenForSlowMotion = transformationRequest.flattenForSlowMotion; - this.scaleX = transformationRequest.scaleX; - this.scaleY = transformationRequest.scaleY; - this.rotationDegrees = transformationRequest.rotationDegrees; this.outputHeight = transformationRequest.outputHeight; this.audioMimeType = transformationRequest.audioMimeType; this.videoMimeType = transformationRequest.videoMimeType; @@ -175,42 +167,6 @@ public final class TransformationRequest { return this; } - /** - * Sets the x and y axis scaling factors to apply to each frame's width and height, stretching - * the video along these axes appropriately. - * - *

The default value for {@code scaleX} and {@code scaleY}, 1, corresponds to not scaling - * along the x and y axes, respectively. - * - * @param scaleX The multiplier by which the frame will scale horizontally, along the x-axis. - * @param scaleY The multiplier by which the frame will scale vertically, along the y-axis. - * @return This builder. - */ - @CanIgnoreReturnValue - public Builder setScale(float scaleX, float scaleY) { - this.scaleX = scaleX; - this.scaleY = scaleY; - return this; - } - - /** - * Sets the rotation, in degrees, counterclockwise, to apply to each frame. - * - *

The output frame's width and height are automatically adjusted to preserve all input - * pixels. The rotated input frame is fitted inside an enclosing black rectangle if its edges - * aren't parallel to the x and y axes. - * - *

The default value, 0, corresponds to not applying any rotation. - * - * @param rotationDegrees The counterclockwise rotation, in degrees. - * @return This builder. - */ - @CanIgnoreReturnValue - public Builder setRotationDegrees(float rotationDegrees) { - this.rotationDegrees = rotationDegrees; - return this; - } - /** * Sets the output resolution using the output height of the displayed video. * @@ -219,9 +175,7 @@ public final class TransformationRequest { * *

For example, a 1920x1440 video can be scaled to 640x480 by calling setResolution(480). * - *

The default value, {@link C#LENGTH_UNSET}, leaves the width and height unchanged unless - * {@linkplain #setScale(float,float) scaling} or @linkplain #setRotationDegrees(float) - * rotation} are requested. + *

The default value, {@link C#LENGTH_UNSET}, leaves the width and height unchanged. * *

Note that the output encoded video's dimensions may be swapped from the displayed video's * dimensions, if the displayed video's height > width. This is to improve compatibility among @@ -335,14 +289,7 @@ public final class TransformationRequest { /** Builds a {@link TransformationRequest} instance. */ public TransformationRequest build() { return new TransformationRequest( - flattenForSlowMotion, - scaleX, - scaleY, - rotationDegrees, - outputHeight, - audioMimeType, - videoMimeType, - hdrMode); + flattenForSlowMotion, outputHeight, audioMimeType, videoMimeType, hdrMode); } } @@ -352,26 +299,6 @@ public final class TransformationRequest { * @see Builder#setFlattenForSlowMotion(boolean) */ public final boolean flattenForSlowMotion; - /** - * The requested scale factor, on the x-axis, of the output video, or 1 if inferred from the - * input. - * - * @see Builder#setScale(float, float) - */ - public final float scaleX; - /** - * The requested scale factor, on the y-axis, of the output video, or 1 if inferred from the - * input. - * - * @see Builder#setScale(float, float) - */ - public final float scaleY; - /** - * The requested rotation, in degrees, of the output video, or 0 if inferred from the input. - * - * @see Builder#setRotationDegrees(float) - */ - public final float rotationDegrees; /** * The requested height of the output video, or {@link C#LENGTH_UNSET} if inferred from the input. * @@ -401,18 +328,12 @@ public final class TransformationRequest { private TransformationRequest( boolean flattenForSlowMotion, - float scaleX, - float scaleY, - float rotationDegrees, int outputHeight, @Nullable String audioMimeType, @Nullable String videoMimeType, @HdrMode int hdrMode) { this.flattenForSlowMotion = flattenForSlowMotion; - this.scaleX = scaleX; - this.scaleY = scaleY; - this.rotationDegrees = rotationDegrees; this.outputHeight = outputHeight; this.audioMimeType = audioMimeType; this.videoMimeType = videoMimeType; @@ -429,9 +350,6 @@ public final class TransformationRequest { } TransformationRequest that = (TransformationRequest) o; return flattenForSlowMotion == that.flattenForSlowMotion - && scaleX == that.scaleX - && scaleY == that.scaleY - && rotationDegrees == that.rotationDegrees && outputHeight == that.outputHeight && Util.areEqual(audioMimeType, that.audioMimeType) && Util.areEqual(videoMimeType, that.videoMimeType) @@ -441,9 +359,6 @@ public final class TransformationRequest { @Override public int hashCode() { int result = (flattenForSlowMotion ? 1 : 0); - result = 31 * result + Float.floatToIntBits(scaleX); - result = 31 * result + Float.floatToIntBits(scaleY); - result = 31 * result + Float.floatToIntBits(rotationDegrees); result = 31 * result + outputHeight; result = 31 * result + (audioMimeType != null ? audioMimeType.hashCode() : 0); result = 31 * result + (videoMimeType != null ? videoMimeType.hashCode() : 0); diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java index 428b209f94..0fdf705870 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java @@ -167,9 +167,7 @@ public final class Transformer { * Sets the {@link Effect} instances to apply to each video frame. * *

The {@link Effect} instances are applied before any {@linkplain - * TransformationRequest.Builder#setScale(float, float) scale}, {@linkplain - * TransformationRequest.Builder#setRotationDegrees(float) rotation}, or {@linkplain - * TransformationRequest.Builder#setResolution(int) resolution} changes specified in the {@link + * TransformationRequest.Builder#setResolution(int) resolution} change specified in the {@link * #setTransformationRequest(TransformationRequest) TransformationRequest} but after {@linkplain * TransformationRequest.Builder#setFlattenForSlowMotion(boolean) slow-motion flattening}. * diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerInternal.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerInternal.java index 3dd4cf0afa..76f0d47132 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerInternal.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerInternal.java @@ -571,15 +571,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; if (inputFormat.pixelWidthHeightRatio != 1f) { return true; } - if (transformationRequest.rotationDegrees != 0f) { - return true; - } - if (transformationRequest.scaleX != 1f) { - return true; - } - if (transformationRequest.scaleY != 1f) { - return true; - } // The decoder rotates encoded frames for display by inputFormat.rotationDegrees. int decodedHeight = (inputFormat.rotationDegrees % 180 == 0) ? inputFormat.height : inputFormat.width; diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoSamplePipeline.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoSamplePipeline.java index f7832df739..5ef693b452 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoSamplePipeline.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoSamplePipeline.java @@ -34,7 +34,6 @@ import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.decoder.DecoderInputBuffer; import com.google.android.exoplayer2.effect.Presentation; -import com.google.android.exoplayer2.effect.ScaleToFitTransformation; import com.google.android.exoplayer2.util.Consumer; import com.google.android.exoplayer2.util.DebugViewProvider; import com.google.android.exoplayer2.util.Effect; @@ -133,15 +132,6 @@ import org.checkerframework.dataflow.qual.Pure; ImmutableList.Builder effectsListBuilder = new ImmutableList.Builder().addAll(effects); - if (transformationRequest.scaleX != 1f - || transformationRequest.scaleY != 1f - || transformationRequest.rotationDegrees != 0f) { - effectsListBuilder.add( - new ScaleToFitTransformation.Builder() - .setScale(transformationRequest.scaleX, transformationRequest.scaleY) - .setRotationDegrees(transformationRequest.rotationDegrees) - .build()); - } if (transformationRequest.outputHeight != C.LENGTH_UNSET) { effectsListBuilder.add(Presentation.createForHeight(transformationRequest.outputHeight)); } diff --git a/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TransformationRequestTest.java b/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TransformationRequestTest.java index 7610a94c9a..f24fb49941 100644 --- a/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TransformationRequestTest.java +++ b/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TransformationRequestTest.java @@ -38,8 +38,6 @@ public class TransformationRequestTest { .setFlattenForSlowMotion(true) .setAudioMimeType(MimeTypes.AUDIO_AAC) .setVideoMimeType(MimeTypes.VIDEO_H264) - .setRotationDegrees(45) - .setScale(/* scaleX= */ 1f, /* scaleY= */ 2f) .build(); } }