diff mbox series

[FFmpeg-devel] lavc/vaapi_encode: convert from lambda to qp

Message ID 20240328065557.4132585-1-haihao.xiang@intel.com
State Accepted
Commit 1590a96adc28a150ad641080262499f58158ee24
Headers show
Series [FFmpeg-devel] lavc/vaapi_encode: convert from lambda to qp | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Xiang, Haihao March 28, 2024, 6:55 a.m. UTC
From: Haihao Xiang <haihao.xiang@intel.com>

When AV_CODEC_FLAG_QSCALE is set, the value of avctx->global_quality is
lambda.

Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
---
 libavcodec/vaapi_encode.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Xiang, Haihao April 1, 2024, 6:09 a.m. UTC | #1
On Do, 2024-03-28 at 14:55 +0800, Xiang, Haihao wrote:
> From: Haihao Xiang <haihao.xiang@intel.com>
> 
> When AV_CODEC_FLAG_QSCALE is set, the value of avctx->global_quality is
> lambda.
> 
> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
> ---
>  libavcodec/vaapi_encode.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c
> index 940f0678a5..8b53095d61 100644
> --- a/libavcodec/vaapi_encode.c
> +++ b/libavcodec/vaapi_encode.c
> @@ -1961,7 +1961,10 @@ rc_mode_found:
>          if (ctx->explicit_qp) {
>              rc_quality = ctx->explicit_qp;
>          } else if (avctx->global_quality > 0) {
> -            rc_quality = avctx->global_quality;
> +            if (avctx->flags & AV_CODEC_FLAG_QSCALE)
> +                rc_quality = avctx->global_quality / FF_QP2LAMBDA;
> +            else
> +                rc_quality = avctx->global_quality;
>          } else {
>              rc_quality = ctx->codec->default_quality;
>              av_log(avctx, AV_LOG_WARNING, "No quality level set; "

Will apply,

- Haihao
diff mbox series

Patch

diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c
index 940f0678a5..8b53095d61 100644
--- a/libavcodec/vaapi_encode.c
+++ b/libavcodec/vaapi_encode.c
@@ -1961,7 +1961,10 @@  rc_mode_found:
         if (ctx->explicit_qp) {
             rc_quality = ctx->explicit_qp;
         } else if (avctx->global_quality > 0) {
-            rc_quality = avctx->global_quality;
+            if (avctx->flags & AV_CODEC_FLAG_QSCALE)
+                rc_quality = avctx->global_quality / FF_QP2LAMBDA;
+            else
+                rc_quality = avctx->global_quality;
         } else {
             rc_quality = ctx->codec->default_quality;
             av_log(avctx, AV_LOG_WARNING, "No quality level set; "