[FFmpeg-cvslog] avcodec/mediacodecenc: workaround the alignment requirement only for H.264

Zhao Zhili git at videolan.org
Fri May 31 15:13:38 EEST 2024


ffmpeg | branch: release/7.0 | Zhao Zhili <zhilizhao at tencent.com> | Thu May 23 23:13:38 2024 +0800| [edc7b57e26372e7bc3f6c2f03408b6e4f94a9ddc] | committer: Zhao Zhili

avcodec/mediacodecenc: workaround the alignment requirement only for H.264

There is no bsf for other codecs to modify crop info except H.265.
For H.265, the assumption that FFALIGN(width, 16)xFFALIGN(height, 16)
is the video resolution can be wrong, since the encoder can use CTU
larger than 16x16. In that case, use FFALIGN(width, 16) - width
as crop_right is incorrect. So disable the workaround for H.265 now.

Signed-off-by: Zhao Zhili <zhilizhao at tencent.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=edc7b57e26372e7bc3f6c2f03408b6e4f94a9ddc
---

 libavcodec/mediacodecenc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/mediacodecenc.c b/libavcodec/mediacodecenc.c
index fcb84ef0ac..a898e335b5 100644
--- a/libavcodec/mediacodecenc.c
+++ b/libavcodec/mediacodecenc.c
@@ -200,7 +200,8 @@ static av_cold int mediacodec_init(AVCodecContext *avctx)
     ff_AMediaFormat_setString(format, "mime", codec_mime);
     // Workaround the alignment requirement of mediacodec. We can't do it
     // silently for AV_PIX_FMT_MEDIACODEC.
-    if (avctx->pix_fmt != AV_PIX_FMT_MEDIACODEC) {
+    if (avctx->pix_fmt != AV_PIX_FMT_MEDIACODEC &&
+        avctx->codec_id == AV_CODEC_ID_H264) {
         s->width = FFALIGN(avctx->width, 16);
         s->height = FFALIGN(avctx->height, 16);
     } else {



More information about the ffmpeg-cvslog mailing list