From d3265e15eef9522f11c44e68063ecf157eb12e8b Mon Sep 17 00:00:00 2001 From: Zhao Zhili Date: Mon, 1 Sep 2025 01:36:25 +0800 Subject: [PATCH] avcodec/videotoolboxenc: support global_quality without qscale (cherry picked from commit fc45127bcc79731a2e3ec5858a00c35c6cfbc1c0) Signed-off-by: Marvin Scholz --- libavcodec/videotoolboxenc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c index c3704810d2..e423da6933 100644 --- a/libavcodec/videotoolboxenc.c +++ b/libavcodec/videotoolboxenc.c @@ -1245,8 +1245,10 @@ static int vtenc_create_encoder(AVCodecContext *avctx, return AVERROR_EXTERNAL; } - if (avctx->flags & AV_CODEC_FLAG_QSCALE) { - Float32 quality = fminf(avctx->global_quality / 100.0f / FF_QP2LAMBDA, 1.0f); + if (avctx->flags & AV_CODEC_FLAG_QSCALE || avctx->global_quality > 0) { + float factor = (avctx->flags & AV_CODEC_FLAG_QSCALE) ? + FF_QP2LAMBDA * 100.0f : 100.0f; + Float32 quality = fminf(avctx->global_quality / factor, 1.0f); CFNumberRef quality_num = CFNumberCreate(kCFAllocatorDefault, kCFNumberFloat32Type, &quality);