From 1f265a4fac8c61577d620f1dc1c614e2d7bfcaa4 Mon Sep 17 00:00:00 2001 From: claincly Date: Thu, 7 Apr 2022 10:57:10 +0100 Subject: [PATCH] Add trying 1/3 resolution in fallback. 1/4 is probably unnecessary, as 1/3 of 4k is 720, which should be supported on all practical encoders. PiperOrigin-RevId: 440055144 --- .../google/android/exoplayer2/transformer/EncoderUtil.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/EncoderUtil.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/EncoderUtil.java index 078b1229f4..7154f547f7 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/EncoderUtil.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/EncoderUtil.java @@ -145,6 +145,13 @@ public final class EncoderUtil { return new Size(newWidth, newHeight); } + // Try one-third (e.g. 4k -> 720). + newWidth = alignResolution(width / 3, widthAlignment); + newHeight = alignResolution(height / 3, heightAlignment); + if (videoEncoderCapabilities.isSizeSupported(newWidth, newHeight)) { + return new Size(newWidth, newHeight); + } + // Fix frame being too wide or too tall. width = videoEncoderCapabilities.getSupportedWidths().clamp(width); int adjustedHeight = videoEncoderCapabilities.getSupportedHeightsFor(width).clamp(height);