From 5da086fe0147d371d43ad9d55ad99fcd9dd205fa 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 --- .../transformer/EncoderUtilTest.java | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/EncoderUtilTest.java b/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/EncoderUtilTest.java index 5304c4f409..98c1b420ce 100644 --- a/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/EncoderUtilTest.java +++ b/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/EncoderUtilTest.java @@ -36,7 +36,13 @@ 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 + * com.google.android.exoplayer2.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 +108,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 +123,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) */