From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id B1A3A4BFB2 for ; Sun, 31 Aug 2025 17:42:06 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'4WzX++9A4dEW5x+0R3njFy8VefgG0Wnzo/Vk/1QYUdU=', expected b's/Xj6c+iLvLhXI+AXw7hZEFr4uNTT59BMG975rjg4zo=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1756662116; h=mime-version : to : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=4WzX++9A4dEW5x+0R3njFy8VefgG0Wnzo/Vk/1QYUdU=; b=QAOzUGrKsY9i5Alkg8oXZtbbEA3sZo2PYu2x+JUVpTVp+B1xk3IKzyVp54UI93hB0/laL /Sz1lR8HwG6aAWx8Wd036bagXwYfu/x/FRr2O7EH75bZ6KYudBsLejvjGpJijs1q33ZW2RP 1DzD4gSWjfMHB48S5XIkIEHtO6r0QyUcINstA3n5ZZS9Yh+Y+PDrpgBMde3/6BXbyJW+3Hk OXXRRkkFJ96HZTYNGZsphzr337maSLoW5XPsvMo43RNECmGMa0XgRi0L4yKSA+Y5VHEk5Js qE0jPdRjPglXfmMi4bZ2uEc+IADCDWSz6eT4W8iWXXf8NcQ0dxKQRreJWJbA== Received: from [172.19.0.4] (unknown [172.19.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 43EA668E74B; Sun, 31 Aug 2025 20:41:56 +0300 (EEST) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1756662105; b=b61qdSR1DrHqxdNu+hVRO2JAegU3bAToMQhhzm+76Lwdn8nYiJNsq3bqUcHnKewY/xrvh qTL4HdRAB+1biEApsUxtpnJlLc6rM2GEznx+VdGbKNGnaOjWz7JF0b4XAwCu3T2TgmQ1WY2 Vp5AVPzkbek8+ms+a3tRoHNRQ9bBKzLfHQuWrdMuWO3+z5YPsaY/hLVNk0PNvBrENXVQNcC lAz6+eihXleJiGAM3lBqtkxZlpI6mD6LFF93/Zzsf8MX+ioDSOSrn9KG80q/4HaykhxwoV+ isPgoAmtH3B8WTRjdr7sY80/477rpLlLcLso4LqWge1HwJ6n/kf42Vu9WuXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1756662105; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=R/VD3igNZ8TJf9/H5S0ya5sqbgu/cZQ8o40k2uYXFAY=; b=q2qfVQ8eyaVPr3YR/k7gNWsESb7glMXConr5dHkWgRuSKr4H68hZOgu7Mw7iE6BGh5sNq HcS37O4+AQWT22yI/LtgLrbql0GTlD7XXI3oOsmChRlyjdYS9c6knFliHeiuqTjZ47WcIzx +3ackcb5TUcBHIKs521Uqimd+rvuuhk4myHWG11tSpujfZdSv+8dbnfySzrFpqpPRl/9f4L i81Qa/ese03p9mjz18uQPRWisgx+6f9y88FE8FSfuOj/UdC7DNC5a0hI/PwpQWA0JrgM5ao 0W8hP7dDcZ/u5zV3uQXZDSyie9jKUnIg5k6mTEXcf0p+H5Gp/o9eFLn3OfKg== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=none Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1756662096; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : from; bh=s/Xj6c+iLvLhXI+AXw7hZEFr4uNTT59BMG975rjg4zo=; b=xtr1V5VC6MDwCwOWUPruTsqPift5OTTpfHKCq9bSQtddVQEbo94cMTt96k5fWJCkR5xmb u1BMmBh3iqSmruFLDQLG22dmQ2A8GvO+4Z6iK2rbnaUXxUswGowJ1fv1W8sxJl9IR642N8Z 1RdaWn/CJX+mCyFz8cAiUAb0AqEKcld8LdH+f68STwbvWpp4jvy7kf17nAMbCvQA5tTmYoR 36WuJdj5iOrz8Y1phont4jEvfZ5e1j/axf2Kvgp9QDo8qkfq4zkIN/1NVIiZJzlpf5JARuC I3xpc5zurm0SUPTnVGqVS5WN5o3Qh2ZaHHk0YooebYanBcmGm6a2QYySxhnA== Received: from 5d8f51c41678 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 3B0BD68D80F for ; Sun, 31 Aug 2025 20:41:36 +0300 (EEST) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Message-ID: <175666209642.25.389137705508637907@463a07221176> Message-ID-Hash: PR6CQB5EVIYWT2ZDCXGZPKO5SDQHV2QC X-Message-ID-Hash: PR6CQB5EVIYWT2ZDCXGZPKO5SDQHV2QC X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: support global_quality without qscale (PR #20382) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Zhao Zhili via ffmpeg-devel Cc: Zhao Zhili Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #20382 opened by Zhao Zhili (quink) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20382 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20382.patch >>From 2e680445ec3975462e4ba3af0e8e1840b0e03bf1 Mon Sep 17 00:00:00 2001 From: Zhao Zhili Date: Mon, 1 Sep 2025 01:17:08 +0800 Subject: [PATCH 1/2] avcodec/videotoolboxenc: fix the loss of precision when calculating quality --- libavcodec/videotoolboxenc.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c index b748ecda61..ff8e636c88 100644 --- a/libavcodec/videotoolboxenc.c +++ b/libavcodec/videotoolboxenc.c @@ -1185,9 +1185,7 @@ static int vtenc_create_encoder(AVCodecContext *avctx, VTEncContext *vtctx = avctx->priv_data; SInt32 bit_rate = avctx->bit_rate; SInt32 max_rate = avctx->rc_max_rate; - Float32 quality = avctx->global_quality / FF_QP2LAMBDA; CFNumberRef bit_rate_num; - CFNumberRef quality_num; CFNumberRef bytes_per_second; CFNumberRef one_second; CFArrayRef data_rate_limits; @@ -1248,10 +1246,11 @@ static int vtenc_create_encoder(AVCodecContext *avctx, } if (avctx->flags & AV_CODEC_FLAG_QSCALE) { - quality = quality >= 100 ? 1.0 : quality / 100; - quality_num = CFNumberCreate(kCFAllocatorDefault, - kCFNumberFloat32Type, - &quality); + Float32 quality = FFMIN(avctx->global_quality / 100.0f / FF_QP2LAMBDA, + 1.0f); + CFNumberRef quality_num = CFNumberCreate(kCFAllocatorDefault, + kCFNumberFloat32Type, + &quality); if (!quality_num) return AVERROR(ENOMEM); status = VTSessionSetProperty(vtctx->session, -- 2.49.1 >>From 8ea46fe2abcc2c9417707d7b130c99e4546e75dc Mon Sep 17 00:00:00 2001 From: Zhao Zhili Date: Mon, 1 Sep 2025 01:36:25 +0800 Subject: [PATCH 2/2] avcodec/videotoolboxenc: support global_quality without qscale --- libavcodec/videotoolboxenc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c index ff8e636c88..ef8a729992 100644 --- a/libavcodec/videotoolboxenc.c +++ b/libavcodec/videotoolboxenc.c @@ -1245,9 +1245,10 @@ static int vtenc_create_encoder(AVCodecContext *avctx, return AVERROR_EXTERNAL; } - if (avctx->flags & AV_CODEC_FLAG_QSCALE) { - Float32 quality = FFMIN(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 = FFMIN(avctx->global_quality / factor, 1.0f); CFNumberRef quality_num = CFNumberCreate(kCFAllocatorDefault, kCFNumberFloat32Type, &quality); -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org