From d092b5261e839bb6000d3a851bcaa8dcf07be53c Mon Sep 17 00:00:00 2001 From: samrobinson Date: Tue, 17 Jan 2023 14:53:46 +0000 Subject: [PATCH] Add a unit test to check 2/3 resolution supported. PiperOrigin-RevId: 502573469 --- .../media3/transformer/EncoderUtilTest.java | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/EncoderUtilTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/EncoderUtilTest.java index 91fadb79d8..60f49b8028 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/EncoderUtilTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/EncoderUtilTest.java @@ -36,7 +36,12 @@ import org.robolectric.shadows.MediaCodecInfoBuilder; import org.robolectric.shadows.ShadowMediaCodec; import org.robolectric.shadows.ShadowMediaCodecList; -/** Unit test for {@link EncoderUtil}. */ +/** + * Unit test for {@link EncoderUtil}. + * + *

See {@link androidx.media3.exoplayer.mediacodec.MediaCodecUtil#maxH264DecodableFrameSize()} + * for information on how MediaCodec determines frame sizes. + */ @RunWith(AndroidJUnit4.class) public class EncoderUtilTest { private static final String MIME_TYPE = MimeTypes.VIDEO_H264; @@ -102,7 +107,8 @@ public class EncoderUtilTest { } @Test - public void getSupportedResolution_withWidthTooBig_findsTwoThirdsOfTheOriginalSize() { + public void getSupportedResolution_findsThreeQuartersOfTheOriginalSize() { + // The supported resolution will try to match the aspect ratio where possible. ImmutableList supportedEncoders = EncoderUtil.getSupportedEncoders(MIME_TYPE); MediaCodecInfo encoderInfo = supportedEncoders.get(0); @@ -116,19 +122,33 @@ public class EncoderUtilTest { } @Test - public void getSupportedResolution_withWidthTooBig2_findsHalfOfTheOriginalSize() { + public void getSupportedResolution_findsTwoThirdsOfTheOriginalSize() { ImmutableList supportedEncoders = EncoderUtil.getSupportedEncoders(MIME_TYPE); MediaCodecInfo encoderInfo = supportedEncoders.get(0); @Nullable Size closestSupportedResolution = - EncoderUtil.getSupportedResolution(encoderInfo, MIME_TYPE, 3840, 2160); + EncoderUtil.getSupportedResolution(encoderInfo, MIME_TYPE, 2880, 1620); assertThat(closestSupportedResolution).isNotNull(); assertThat(closestSupportedResolution.getWidth()).isEqualTo(1920); assertThat(closestSupportedResolution.getHeight()).isEqualTo(1080); } + @Test + public void getSupportedResolution_findsHalfOfTheOriginalSize() { + ImmutableList supportedEncoders = EncoderUtil.getSupportedEncoders(MIME_TYPE); + MediaCodecInfo encoderInfo = supportedEncoders.get(0); + + @Nullable + Size closestSupportedResolution = + EncoderUtil.getSupportedResolution(encoderInfo, MIME_TYPE, 2160, 3840); + + assertThat(closestSupportedResolution).isNotNull(); + assertThat(closestSupportedResolution.getWidth()).isEqualTo(1080); + assertThat(closestSupportedResolution.getHeight()).isEqualTo(1920); + } + /** * @see EncoderUtil#getSupportedEncoderNamesForHdrEditing(String, ColorInfo) */