From 7d0034748f8d1fa53e72ab486b65d9a20953ee4e 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 --- .../main/java/androidx/media3/transformer/EncoderUtil.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/EncoderUtil.java b/libraries/transformer/src/main/java/androidx/media3/transformer/EncoderUtil.java index ca530db635..0a8c572873 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/EncoderUtil.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/EncoderUtil.java @@ -147,6 +147,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);