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 93c522a35a..cbf50d7374 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java @@ -21,7 +21,7 @@ import static androidx.media3.common.MimeTypes.VIDEO_H264; import static androidx.media3.common.MimeTypes.VIDEO_H265; import static androidx.media3.common.util.Assertions.checkNotNull; import static androidx.media3.common.util.Assertions.checkState; -import static androidx.media3.transformer.DefaultDecoderFactory.deviceNeedsDisableDecoding8kWorkaround; +import static androidx.media3.common.util.Util.SDK_INT; import android.content.Context; import android.graphics.Bitmap; @@ -855,7 +855,18 @@ public final class AndroidTestUtil { mediaFormat, MediaFormat.KEY_PROFILE, codecProfileAndLevel.first); } return EncoderUtil.findCodecForFormat(mediaFormat, /* isDecoder= */ true) != null - && !deviceNeedsDisableDecoding8kWorkaround(format); + && !deviceNeedsDisable8kWorkaround(format); + } + + private static boolean deviceNeedsDisable8kWorkaround(Format format) { + // Fixed on API 31+. See http://b/278234847#comment40 for more information. + // Duplicate of DefaultDecoderFactory#deviceNeedsDisable8kWorkaround. + return SDK_INT < 31 + && format.width >= 7680 + && format.height >= 4320 + && format.sampleMimeType != null + && format.sampleMimeType.equals(MimeTypes.VIDEO_H265) + && (Util.MODEL.equals("SM-F711U1") || Util.MODEL.equals("SM-F926U1")); } private static boolean canEncode(Format format) { diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultDecoderFactory.java b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultDecoderFactory.java index e5f7301423..2165207d2a 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultDecoderFactory.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultDecoderFactory.java @@ -114,7 +114,7 @@ public final class DefaultDecoderFactory implements Codec.DecoderFactory { format, /* reason= */ "Decoding HDR is not supported on this device."); } } - if (deviceNeedsDisableDecoding8kWorkaround(format)) { + if (deviceNeedsDisable8kWorkaround(format)) { throw createExportException( format, /* reason= */ "Decoding 8k is not supported on this device."); } @@ -159,8 +159,7 @@ public final class DefaultDecoderFactory implements Codec.DecoderFactory { context, format, mediaFormat, mediaCodecName, /* isDecoder= */ true, outputSurface); } - @VisibleForTesting - public static boolean deviceNeedsDisableDecoding8kWorkaround(Format format) { + private static boolean deviceNeedsDisable8kWorkaround(Format format) { // Fixed on API 31+. See http://b/278234847#comment40 for more information. return SDK_INT < 31 && format.width >= 7680