diff --git a/libavcodec/mediacodecenc.c b/libavcodec/mediacodecenc.c index a898e335b5..d3bf27cb7f 100644 --- a/libavcodec/mediacodecenc.c +++ b/libavcodec/mediacodecenc.c @@ -201,9 +201,18 @@ static av_cold int mediacodec_init(AVCodecContext *avctx) // 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 && - avctx->codec_id == AV_CODEC_ID_H264) { + (avctx->codec_id == AV_CODEC_ID_H264 || + avctx->codec_id == AV_CODEC_ID_HEVC)) { s->width = FFALIGN(avctx->width, 16); s->height = FFALIGN(avctx->height, 16); + // If avctx video size is aligned to 16 already, we don't need to do + // anything. If align is needed for HEVC, we should use the maximum CTU + // size. + if (avctx->codec_id == AV_CODEC_ID_HEVC && + (s->width != avctx->width || s->height != avctx->height)) { + s->width = FFALIGN(avctx->width, 64); + s->height = FFALIGN(avctx->height, 64); + } } else { s->width = avctx->width; s->height = avctx->height;