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 <ssilkin@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39487}
This commit is contained in:
Sergey Silkin 2023-03-06 14:52:16 +00:00 committed by WebRTC LUCI CQ
parent 3ca732d12d
commit 5c978cb262

View File

@ -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();