From 5c978cb2628904afd588015dd4ca3522e1319ad0 Mon Sep 17 00:00:00 2001 From: Sergey Silkin Date: Mon, 6 Mar 2023 14:52:16 +0000 Subject: [PATCH] Remove resolution alignment requirement This partially reverts https://webrtc-review.googlesource.com/c/src/+/229460. HW encoder wrapper still requires 16x16 alignment but InitEncode() doesn't fail if input resolution doesn't satisfy this requirement. If encoder can't handle 16x16 then it should return error from MediaCodec.configure(). Many HW encoder can handle resolutions not multiple of 16. Having strict requirement for resolution alignment in InitEncode() blocks usage and testing of these encoders. This change doesn't affect WebRTC in Chrome Android since RTC encoder wrapper requires 16x16 alignment: https://source.chromium.org/chromium/chromium/src/+/main:media/gpu/android/android_video_encode_accelerator.cc;drc=4abbb981443d7403566ef8aff05fdaca1e837da3;l=494 Bug: webrtc:13089 Change-Id: I0c39908bbcd7d0740a9ee8afa022ba443ffdb4de Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/296340 Commit-Queue: Sergey Silkin Reviewed-by: Ilya Nikolaevskiy Cr-Commit-Position: refs/heads/main@{#39487} --- sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java b/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java index 32656c5464..4d3ca7de83 100644 --- a/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java +++ b/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java @@ -210,11 +210,6 @@ class HardwareVideoEncoder implements VideoEncoder { this.callback = callback; automaticResizeOn = settings.automaticResizeOn; - if (settings.width % REQUIRED_RESOLUTION_ALIGNMENT != 0 - || settings.height % REQUIRED_RESOLUTION_ALIGNMENT != 0) { - Logging.e(TAG, "MediaCodec is only tested with resolutions that are 16x16 aligned."); - return VideoCodecStatus.ERR_SIZE; - } this.width = settings.width; this.height = settings.height; useSurfaceMode = canUseSurface();