From patchwork Sun May 21 07:31:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Rosca X-Patchwork-Id: 41752 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:ba91:b0:105:feb:71f2 with SMTP id fb17csp965211pzb; Sun, 21 May 2023 00:32:28 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7tK2dTpnQYLozSHHUpf+497np2PrCisUoB9VXCt05s/93xjVuTL8dsQOwwUvfTvNO9n5/4 X-Received: by 2002:a05:6402:513:b0:50b:c62f:9ff0 with SMTP id m19-20020a056402051300b0050bc62f9ff0mr4719613edv.30.1684654347740; Sun, 21 May 2023 00:32:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684654347; cv=none; d=google.com; s=arc-20160816; b=hTGV/YzKq7Z2D18sasL8N0jhuOAvETqyQFqAme+QLxmGQWBhCQRwTDWO20dO4q7S4j Q5rQoMidyaGPks4gD8mgcCIWnf+506QEwbK72476ndmcpQmv2pZ2/2QRfsErA7bu7bvn zu7KRicDEsrldJQ3bOlz1PCeOKAHqCCTVoX5r20mMEmIJygwXKSAV9jAY7JPk46/NFiZ VyUNxnJW8BZ60sAjsKP/I0SJWVQuyLeDypRn7AXDZM4Q8o2eNlSLBfQkDSZacp9a8ACS Y1eunJy0KyrVjpdu0TMm81wCjX/yrv6v2isVjdzV0Lakjny6XphXp+q37Q6XNdC8WBWx 27Yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=CnBcwgwz4/53R1eRbgAjKE7eONEqq2Ie7wHB4y0gNc8=; b=PhbNsKOqJyGrgYxKEK569YlQDuzZ3hO7WLOluZm4ASTWZBh2kVF61DNZoLyx5+5vGr 5oqBaNcnqCGM+sXKCrzqQsSYEoEppMcEWG3sR4b2xzt/Yfgzh6xQd4RkM6sjNorMhjaS LWLBt2Z5KvC6+wxXjEAiUqzrDuyMgGxaQ2D0dMP+HDlOO8wFpjgdoynKcHV/13vy0ZiK 7U/tEsDD9tviwEPGkPmpH8pxWqYPsptgqi6C9bj3pQBG6aEIWEPh2ERKXbaXRZfBQv4i Bn9uZ9ZgYdsPu6C1795t6RqrWGSBCRIdo9t9na7qxH6DAxyV0xPz6KTJzRT8OFvjnh9X GX0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b="VS9bjb/O"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id j21-20020aa7ca55000000b0050dbd30820bsi1588157edt.231.2023.05.21.00.32.27; Sun, 21 May 2023 00:32:27 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b="VS9bjb/O"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 920A668C13A; Sun, 21 May 2023 10:32:23 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2665D68BFFE for ; Sun, 21 May 2023 10:32:17 +0300 (EEST) Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-96f6e83e12fso315103966b.1 for ; Sun, 21 May 2023 00:32:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684654336; x=1687246336; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=n2/auBwbv/gWwyTgEqRO9ldvY4YOWuPVPqfU/QlcCZU=; b=VS9bjb/O6o5+y1dwDDsS4On+a5pI/IzkOA+ZsMH3kJUaJ8PzK4hmy0LgtgJdlXhU8j pBA1hY7oEpDR16UsmV7Kc1GYiLO4QUzwNlSZlJNgwvgsUQdWzppWwc5CWgRMCEyFWtau TS+2+xTy68bzcc0uzXyWUYNJ6OIx/n6Hg10cnIywsm05H0sdRGEbM2c8aluIqjoqvobq BEORbvbz02AEly51CuMVxgSlr/ehDS67CGtsDxG9FWdBUjQzmLdZbjQwsWbrPuiZpRLR pMqYMScS0Iguq5Rzs5DqwG1pSa9MyektT4//4Ld/UAmG/a4Sk3YO55b/zEix3XjtEjRN U7/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684654336; x=1687246336; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=n2/auBwbv/gWwyTgEqRO9ldvY4YOWuPVPqfU/QlcCZU=; b=PbyiAHfkv+Am2SN/2KOBDlmtoQR1QxuzmXdbkx0nkMt/1FtZoa27El88CYvaNzoheJ k97ORRQ9EXueXq7wZBB6Vem9ZfnF7SqcFHDVV4954gv/6BoOl+xXu14Z0S7k4ZUSaTZO LcQfRqnjy0F3pXIjTjg0El3zWeq/8iAMrKKcnEn1MZ+flIjvp/4g12nipwKIqEcs+1+N 7M7UiYRk4ZXvaQ1s7Wk37gaYzDtEi9AB/P/oPjrmP4p90ZokHLukLeGjsgyGyauv2QZm SQfAwLUWdl4+3S+dIgwRL545VXAvnOKG366Uz6YEQvJxrg7xxAy9NQova5nssJXrBU3s O6QA== X-Gm-Message-State: AC+VfDwsClusQYjT0Tesb2VQCpx6cLwXGIQtJ9pwKBYDGvFkbFUB3pr6 Bc4GFek8zCNfN4HfOyeD3faeQWUIF9c= X-Received: by 2002:a17:907:9301:b0:969:fd4b:554a with SMTP id bu1-20020a170907930100b00969fd4b554amr5895597ejc.24.1684654335863; Sun, 21 May 2023 00:32:15 -0700 (PDT) Received: from mitsuki.. (ip-78-45-48-213.bb.vodafone.cz. [78.45.48.213]) by smtp.gmail.com with ESMTPSA id rs23-20020a170907037700b0096f5781205fsm1554077ejb.165.2023.05.21.00.32.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 May 2023 00:32:15 -0700 (PDT) From: David Rosca To: ffmpeg-devel@ffmpeg.org Date: Sun, 21 May 2023 09:31:42 +0200 Message-Id: <20230521073141.54054-1-nowrep@gmail.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] lavc/vaapi_encode: add "quality" option to all encoders X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: David Rosca Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: k/QXB4bDHgPZ Move "quality" option from h264_vaapi to common options. --- libavcodec/vaapi_encode.c | 3 +++ libavcodec/vaapi_encode.h | 8 +++++++- libavcodec/vaapi_encode_h264.c | 5 ----- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index bfca315a7a..974b805df1 100644 --- a/libavcodec/vaapi_encode.c +++ b/libavcodec/vaapi_encode.c @@ -2635,6 +2635,9 @@ av_cold int ff_vaapi_encode_init(AVCodecContext *avctx) if (err < 0) goto fail; + if (avctx->compression_level == FF_COMPRESSION_DEFAULT) + avctx->compression_level = ctx->quality; + if (avctx->compression_level >= 0) { err = vaapi_encode_init_quality(avctx); if (err < 0) diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h index a1e639f56b..3e4a8c24d3 100644 --- a/libavcodec/vaapi_encode.h +++ b/libavcodec/vaapi_encode.h @@ -364,6 +364,8 @@ typedef struct VAAPIEncodeContext { AVFifo *encode_fifo; // Max number of frame buffered in encoder. int async_depth; + // Encode quality (trades off against speed, higher is faster) + int quality; } VAAPIEncodeContext; enum { @@ -490,7 +492,11 @@ int ff_vaapi_encode_close(AVCodecContext *avctx); { "max_frame_size", \ "Maximum frame size (in bytes)",\ OFFSET(common.max_frame_size), AV_OPT_TYPE_INT, \ - { .i64 = 0 }, 0, INT_MAX, FLAGS } + { .i64 = 0 }, 0, INT_MAX, FLAGS }, \ + { "quality", \ + "Set encode quality (trades off against speed, higher is faster)", \ + OFFSET(common.quality), AV_OPT_TYPE_INT, \ + { .i64 = -1 }, -1, INT_MAX, FLAGS } #define VAAPI_ENCODE_RC_MODE(name, desc) \ { #name, desc, 0, AV_OPT_TYPE_CONST, { .i64 = RC_MODE_ ## name }, \ diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c index 9ad017d540..c9629c1fea 100644 --- a/libavcodec/vaapi_encode_h264.c +++ b/libavcodec/vaapi_encode_h264.c @@ -71,7 +71,6 @@ typedef struct VAAPIEncodeH264Context { // User options. int qp; - int quality; int coder; int aud; int sei; @@ -1211,8 +1210,6 @@ static av_cold int vaapi_encode_h264_init(AVCodecContext *avctx) avctx->profile = priv->profile; if (avctx->level == FF_LEVEL_UNKNOWN) avctx->level = priv->level; - if (avctx->compression_level == FF_COMPRESSION_DEFAULT) - avctx->compression_level = priv->quality; // Reject unsupported profiles. switch (avctx->profile) { @@ -1282,8 +1279,6 @@ static const AVOption vaapi_encode_h264_options[] = { { "qp", "Constant QP (for P-frames; scaled by qfactor/qoffset for I/B)", OFFSET(qp), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 52, FLAGS }, - { "quality", "Set encode quality (trades off against speed, higher is faster)", - OFFSET(quality), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, FLAGS }, { "coder", "Entropy coder type", OFFSET(coder), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, FLAGS, "coder" }, { "cavlc", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, INT_MIN, INT_MAX, FLAGS, "coder" },