From 4bb00d5e2e2a6fb0f93b4a22718d61aed625c232 Mon Sep 17 00:00:00 2001 From: huangdarwin Date: Thu, 1 Jun 2023 15:44:52 +0000 Subject: [PATCH] Test: Add special effects for forcing transcode. Previously, we would apply a general effect to signal wanting to transcode. PiperOrigin-RevId: 537034455 (cherry picked from commit c52130a2124b7dfcdff3eac02167795b772f3a6b) --- .../media3/transformer/AndroidTestUtil.java | 8 +++++ .../media3/transformer/mh/ExportTest.java | 6 ++-- .../media3/transformer/mh/HdrEditingTest.java | 35 ++++--------------- .../ToneMapHdrToSdrUsingMediaCodecTest.java | 17 ++------- .../mh/analysis/RepeatedTranscodeTest.java | 18 ++++------ 5 files changed, 25 insertions(+), 59 deletions(-) diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java index b80a209fb4..5e1302dc1e 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java @@ -43,6 +43,7 @@ import androidx.media3.common.util.Log; import androidx.media3.common.util.MediaFormatUtil; import androidx.media3.common.util.Util; import androidx.media3.effect.DefaultGlObjectsProvider; +import androidx.media3.effect.ScaleAndRotateTransformation; import androidx.media3.exoplayer.mediacodec.MediaCodecUtil; import com.google.common.collect.ImmutableList; import java.io.File; @@ -63,6 +64,13 @@ public final class AndroidTestUtil { */ public static final int MEDIA_CODEC_PRIORITY_NON_REALTIME = 1; + /** An {@link Effects} instance that forces video transcoding. */ + public static final Effects FORCE_TRANSCODE_VIDEO_EFFECTS = + new Effects( + /* audioProcessors= */ ImmutableList.of(), + ImmutableList.of( + new ScaleAndRotateTransformation.Builder().setRotationDegrees(45).build())); + public static final String PNG_ASSET_URI_STRING = "asset:///media/bitmap/input_images/media3test.png"; public static final String JPG_ASSET_URI_STRING = "asset:///media/bitmap/input_images/london.jpg"; 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 65263b2a35..077a7ec245 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 @@ -15,6 +15,7 @@ */ package androidx.media3.transformer.mh; +import static androidx.media3.transformer.AndroidTestUtil.FORCE_TRANSCODE_VIDEO_EFFECTS; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_4K60_PORTRAIT_FORMAT; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_4K60_PORTRAIT_URI_STRING; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_BT2020_SDR; @@ -281,11 +282,8 @@ public class ExportTest { Transformer transformer = new Transformer.Builder(context).build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_BT2020_SDR)); - ImmutableList videoEffects = - 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(); + new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build(); new TransformerAndroidTestRunner.Builder(context, transformer) .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 ddc318384b..ff0c9270eb 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 @@ -17,6 +17,7 @@ package androidx.media3.transformer.mh; import static androidx.media3.common.MimeTypes.VIDEO_H265; import static androidx.media3.common.util.Assertions.checkNotNull; +import static androidx.media3.transformer.AndroidTestUtil.FORCE_TRANSCODE_VIDEO_EFFECTS; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_1080P_5_SECOND_HLG10; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_720P_4_SECOND_HDR10; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_DOLBY_VISION_HDR; @@ -28,12 +29,9 @@ import android.content.Context; import android.net.Uri; import androidx.media3.common.C; import androidx.media3.common.ColorInfo; -import androidx.media3.common.Effect; import androidx.media3.common.MediaItem; import androidx.media3.common.util.Log; -import androidx.media3.effect.ScaleAndRotateTransformation; import androidx.media3.transformer.EditedMediaItem; -import androidx.media3.transformer.Effects; import androidx.media3.transformer.EncoderUtil; import androidx.media3.transformer.ExportException; import androidx.media3.transformer.ExportTestResult; @@ -42,7 +40,6 @@ import androidx.media3.transformer.Transformer; import androidx.media3.transformer.TransformerAndroidTestRunner; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; -import com.google.common.collect.ImmutableList; import java.util.concurrent.atomic.AtomicBoolean; import org.junit.Test; import org.junit.runner.RunWith; @@ -128,12 +125,8 @@ public class HdrEditingTest { Transformer transformer = new Transformer.Builder(context).build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10)); - ImmutableList videoEffects = - 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(); + new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build(); ExportTestResult exportTestResult = new TransformerAndroidTestRunner.Builder(context, transformer) @@ -153,12 +146,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 ScaleAndRotateTransformation.Builder().setRotationDegrees(180).build()); - Effects effects = new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects); EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(mediaItem).setEffects(effects).build(); + new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build(); ExportTestResult exportTestResult = new TransformerAndroidTestRunner.Builder(context, transformer) @@ -180,12 +169,8 @@ public class HdrEditingTest { Transformer transformer = new Transformer.Builder(context).build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_DOLBY_VISION_HDR)); - ImmutableList videoEffects = - 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(); + new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build(); ExportTestResult exportTestResult = new TransformerAndroidTestRunner.Builder(context, transformer) @@ -225,12 +210,8 @@ public class HdrEditingTest { }) .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10)); - ImmutableList videoEffects = - 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(); + new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build(); try { ExportTestResult exportTestResult = @@ -280,12 +261,8 @@ public class HdrEditingTest { }) .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10)); - ImmutableList videoEffects = - 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(); + new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build(); try { ExportTestResult exportTestResult = 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 efa14d5e6f..5f4b4619e2 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 @@ -16,6 +16,7 @@ package androidx.media3.transformer.mh; import static androidx.media3.common.util.Assertions.checkNotNull; +import static androidx.media3.transformer.AndroidTestUtil.FORCE_TRANSCODE_VIDEO_EFFECTS; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_1080P_5_SECOND_HLG10; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_720P_4_SECOND_HDR10; import static androidx.media3.transformer.mh.FileUtil.maybeAssertFileHasColorTransfer; @@ -24,12 +25,9 @@ import static com.google.common.truth.Truth.assertThat; import android.content.Context; import android.net.Uri; 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.ScaleAndRotateTransformation; import androidx.media3.transformer.EditedMediaItem; -import androidx.media3.transformer.Effects; import androidx.media3.transformer.ExportException; import androidx.media3.transformer.ExportTestResult; import androidx.media3.transformer.TransformationRequest; @@ -37,7 +35,6 @@ import androidx.media3.transformer.Transformer; import androidx.media3.transformer.TransformerAndroidTestRunner; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; -import com.google.common.collect.ImmutableList; import org.junit.Test; import org.junit.runner.RunWith; @@ -160,12 +157,8 @@ public class ToneMapHdrToSdrUsingMediaCodecTest { }) .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10)); - ImmutableList videoEffects = - 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(); + new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build(); try { ExportTestResult exportTestResult = @@ -208,12 +201,8 @@ public class ToneMapHdrToSdrUsingMediaCodecTest { }) .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10)); - ImmutableList videoEffects = - 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(); + new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build(); try { ExportTestResult exportTestResult = diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/analysis/RepeatedTranscodeTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/analysis/RepeatedTranscodeTest.java index 6179e6b643..95dc9effa9 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/analysis/RepeatedTranscodeTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/analysis/RepeatedTranscodeTest.java @@ -16,23 +16,20 @@ package androidx.media3.transformer.mh.analysis; import static androidx.media3.common.util.Assertions.checkNotNull; +import static androidx.media3.transformer.AndroidTestUtil.FORCE_TRANSCODE_VIDEO_EFFECTS; import static com.google.common.truth.Truth.assertWithMessage; import android.content.Context; import android.net.Uri; -import androidx.media3.common.Effect; import androidx.media3.common.MediaItem; -import androidx.media3.effect.ScaleAndRotateTransformation; import androidx.media3.transformer.AndroidTestUtil; import androidx.media3.transformer.EditedMediaItem; -import androidx.media3.transformer.Effects; import androidx.media3.transformer.ExportTestResult; import androidx.media3.transformer.TransformationRequest; import androidx.media3.transformer.Transformer; import androidx.media3.transformer.TransformerAndroidTestRunner; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; -import com.google.common.collect.ImmutableList; import java.util.HashSet; import java.util.Set; import org.junit.Ignore; @@ -60,11 +57,8 @@ public final class RepeatedTranscodeTest { .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(AndroidTestUtil.MP4_REMOTE_10_SECONDS_URI_STRING)); - ImmutableList videoEffects = - 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(); + new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build(); Set differentOutputSizesBytes = new HashSet<>(); for (int i = 0; i < TRANSCODE_COUNT; i++) { @@ -93,11 +87,11 @@ public final class RepeatedTranscodeTest { .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(AndroidTestUtil.MP4_REMOTE_10_SECONDS_URI_STRING)); - ImmutableList videoEffects = - 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(); + new EditedMediaItem.Builder(mediaItem) + .setRemoveAudio(true) + .setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS) + .build(); Set differentOutputSizesBytes = new HashSet<>(); for (int i = 0; i < TRANSCODE_COUNT; i++) {