diff options
author | Zhao Zhili <zhilizhao@tencent.com> | 2024-05-23 15:08:56 +0800 |
---|---|---|
committer | Zhao Zhili <zhilizhao@tencent.com> | 2024-06-07 13:14:46 +0800 |
commit | 7d46ab9e1206b09ebe1a94ecac49cc99d9b3522e (patch) | |
tree | 9e3277b100b74918b20702c27ca6fab7499a0698 /libavcodec | |
parent | 2a68b2d643f7b725defa9bec5174853a00411b98 (diff) | |
download | ffmpeg-7d46ab9e1206b09ebe1a94ecac49cc99d9b3522e.tar.gz |
avcodec/mediacodecenc: workaround the alignment requirement for H.265
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/mediacodecenc.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/libavcodec/mediacodecenc.c b/libavcodec/mediacodecenc.c index bfff149039..a42270551b 100644 --- a/libavcodec/mediacodecenc.c +++ b/libavcodec/mediacodecenc.c @@ -154,8 +154,12 @@ static int mediacodec_init_bsf(AVCodecContext *avctx) ret = snprintf(str, sizeof(str), "h264_metadata=crop_right=%d:crop_bottom=%d", crop_right, crop_bottom); else if (avctx->codec_id == AV_CODEC_ID_HEVC) - ret = snprintf(str, sizeof(str), "hevc_metadata=crop_right=%d:crop_bottom=%d", - crop_right, crop_bottom); + /* Encoder can use CTU size larger than 16x16, so the real crop + * margin can be larger than crop_right/crop_bottom. Let bsf figure + * out the real crop margin. + */ + ret = snprintf(str, sizeof(str), "hevc_metadata=width=%d:height=%d", + avctx->width, avctx->height); if (ret >= sizeof(str)) return AVERROR_BUFFER_TOO_SMALL; } @@ -235,7 +239,8 @@ 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); } else { |