From 983e074fc941734e2fb67c5076bb20def9ab0e29 Mon Sep 17 00:00:00 2001 From: huangdarwin Date: Fri, 27 May 2022 17:17:52 +0000 Subject: [PATCH] Transformer: Add 8k24fps transform test. Most devices won't support 8k decoding, so they'll skip this test entirely. As the video is quite short, this test shouldn't be any longer than the nearby, long-running 4k60 test. PiperOrigin-RevId: 451423368 --- .../transformer/AndroidTestUtil.java | 10 ++++++++ .../transformer/mh/TransformationTest.java | 23 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/AndroidTestUtil.java b/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/AndroidTestUtil.java index e72cb425c3..eace880035 100644 --- a/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/AndroidTestUtil.java +++ b/library/transformer/src/androidTest/java/com/google/android/exoplayer2/transformer/AndroidTestUtil.java @@ -113,6 +113,16 @@ public final class AndroidTestUtil { .setFrameRate(57.39f) .build(); + public static final String MP4_REMOTE_8K24_URI_STRING = + "https://storage.googleapis.com/exoplayer-test-media-1/mp4/8k24fps_4s.mp4"; + public static final Format MP4_REMOTE_8K24_FORMAT = + new Format.Builder() + .setSampleMimeType(MimeTypes.VIDEO_H265) + .setWidth(7680) + .setHeight(4320) + .setFrameRate(24.00f) + .build(); + // The 7 HIGHMOTION files are H264 and AAC. public static final String MP4_REMOTE_1280W_720H_5_SECOND_HIGHMOTION = "https://storage.googleapis.com/exoplayer-test-media-1/mp4/1280w_720h_highmotion.mp4"; 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 702961aebc..478a40de78 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 @@ -21,6 +21,8 @@ import static com.google.android.exoplayer2.transformer.AndroidTestUtil.MP4_ASSE import static com.google.android.exoplayer2.transformer.AndroidTestUtil.MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING; import static com.google.android.exoplayer2.transformer.AndroidTestUtil.MP4_REMOTE_4K60_PORTRAIT_FORMAT; import static com.google.android.exoplayer2.transformer.AndroidTestUtil.MP4_REMOTE_4K60_PORTRAIT_URI_STRING; +import static com.google.android.exoplayer2.transformer.AndroidTestUtil.MP4_REMOTE_8K24_FORMAT; +import static com.google.android.exoplayer2.transformer.AndroidTestUtil.MP4_REMOTE_8K24_URI_STRING; import static com.google.android.exoplayer2.transformer.AndroidTestUtil.recordTestSkipped; import android.content.Context; @@ -111,6 +113,27 @@ public class TransformationTest { .run(testId, MediaItem.fromUri(Uri.parse(MP4_REMOTE_4K60_PORTRAIT_URI_STRING))); } + @Test + public void transform8K24() throws Exception { + String testId = TAG + "_transform8K24"; + Context context = ApplicationProvider.getApplicationContext(); + + if (AndroidTestUtil.skipAndLogIfInsufficientCodecSupport( + context, + testId, + /* decodingFormat= */ MP4_REMOTE_8K24_FORMAT, + /* encodingFormat= */ null)) { + return; + } + Transformer transformer = + new Transformer.Builder(context).setEncoderFactory(FORCE_ENCODE_ENCODER_FACTORY).build(); + new TransformerAndroidTestRunner.Builder(context, transformer) + .setMaybeCalculateSsim(true) + .setTimeoutSeconds(180) + .build() + .run(testId, MediaItem.fromUri(Uri.parse(MP4_REMOTE_8K24_URI_STRING))); + } + @Test public void transformNoAudio() throws Exception { String testId = TAG + "_transformNoAudio";