From patchwork Tue Sep 18 22:31:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Thompson X-Patchwork-Id: 10391 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:12c4:0:0:0:0:0 with SMTP id 65-v6csp14464jap; Tue, 18 Sep 2018 15:36:09 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYmeifMXTR03ep6a9yei20FW12BvFJL/0h/JnUtxS49j3WewXTfA1C57LHzJqU1stGaxlRM X-Received: by 2002:adf:8024:: with SMTP id 33-v6mr25208973wrk.16.1537310169646; Tue, 18 Sep 2018 15:36:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537310169; cv=none; d=google.com; s=arc-20160816; b=UPssL42Z6dVxUDa5pWlX60NBeEcV4hn+e14YROKTB8tuOKKhrU3xkU8z6RrcLJXRYt L2BMadVV/85EPlNYP8oowp+pTwJXYnM7+7LiDbQpVnSYBLEbZU3dKD52ZfqbZ8b7FiJF 3R63y8jDo2QgBHYfrZ/zt2ep9/IxcWPnKfgOPOsQKhQA3HXQHqtV26cnKp95KFXomQx+ QA3I5wWXVrqLyxCkzVzrJaMtXWgAkcsC/ZU1gu7zwwrD4OmMkjaghws40bRNTCQyM+hj F5fz/e4Djd90r9He5lkoMWALQXut20D3+yWY7HTq34J70gt7dmrkZ3fKRT0oQgGdDW/T oGtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=+1JxJJzjjbMO2frX1uMd5zIcPJp9UlVn1Y1lwtcu48U=; b=RHBFWmrOSZkV7EZfqfA8PZ8D0YgF4dmpWbeEcJGUC9OW5mjjGW4LcPyqAgk6bqmLnH lfRXtnlhdD69iW6HwbtkUFo+ynGFUwKECoAhjqatLCVNuS5h4+8C3+acWDCSqpCyWE5C IhMW0KUTABxvKzVnjOejHAE2sEscNihAo1K9/dm7ZLveVTeNGtoujp9VF2jyN6qM6blD 0U6pK4NxF2KxBcTBZ7XYWIYYq0PZyDpC+3aJauOAqz0jyCKux34ag+CYRugxb+1uKjTI YISbgdQ8VyYRRgbY0t+RqsItqfDzQKWQfc5SYlsxpo5vyUE/wGj/4LsPEooRAVXInDhT oTJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=fAi7Fwwj; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y11-v6si2886116wru.286.2018.09.18.15.36.09; Tue, 18 Sep 2018 15:36:09 -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=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=fAi7Fwwj; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9862068A6C9; Wed, 19 Sep 2018 01:31:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6551F68A67C for ; Wed, 19 Sep 2018 01:31:42 +0300 (EEST) Received: by mail-wm1-f48.google.com with SMTP id y139-v6so4118795wmc.2 for ; Tue, 18 Sep 2018 15:31:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=J032feHtrTfBbuqdHoU1AY5uRllWwKgKFYdmrav2VG8=; b=fAi7FwwjiYXaQa5Nsutktwe/VYYz7gPnLpuu0qShLwEmRq36y84/NtMF3sX6fKUR05 OHA/UF17iLvGiI/+TzTfX+GV2y70xGYYN4LNWAARwjepfwhLqSo/KBPq5aD+fNVczOE6 EPvX4gj/xGhnNVUf9ryAKSNyjhLwpYQaXgBpNDLzXBwHcHgohECV1jd3aS80kreAoqUx urxpDu7H3WztQUlO9jGNeOylHTbZKZHz3CeXs+VIMW+vQnO0Eag0J4CLOTFVwts81aHg 7Bpt/4fliRtaBGNMqPbbWHJ3t4iF2hIIWq1ApESQSJJYJxQySVyN5MIIZhKvFmF0a1kp uhLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=J032feHtrTfBbuqdHoU1AY5uRllWwKgKFYdmrav2VG8=; b=LpxFKA3WJHJvTzFNVuIT3t/lLVpzQHt7+DjDEPs+HfvswWu8nU0rhmjNyEEG5MS050 9api5KPEKhceynyE9nLDd/VwT9KIsXAAa42MQi2OU/QxE3Dqmp0csef3QIdN5IPfd3qm dUzC67VVKLuX4eExFaJtHEN+D75+EeBEmB+ydW2J6xit7SIaA+xtldgJf8phsejJCNLG wWhT8OHs/6qQ5zof17NKvEpW32C/yyMbgU/IPFaEb/MhW7Gvr7xHrwDddqVey1QGIrEE dp+JmNKqVu0QlMxqe9BadZYF9JX2C3Yi/6qFDcxtgWNfFBDOJoP8njWYy38OL0QscHhv AXsQ== X-Gm-Message-State: APzg51AtSzdbwLHOizBPbjYokESw4LUg0CRT+0xxoIEfwamA9bl7dpHB x9dW7vLKDoiJ/Rm2RrQuhhJToosNGwE= X-Received: by 2002:a1c:1a49:: with SMTP id a70-v6mr17539163wma.91.1537309914723; Tue, 18 Sep 2018 15:31:54 -0700 (PDT) Received: from rywe.jkqxz.net (cpc91242-cmbg18-2-0-cust650.5-4.cable.virginm.net. [82.8.130.139]) by smtp.gmail.com with ESMTPSA id e141-v6sm4863826wmd.32.2018.09.18.15.31.53 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 18 Sep 2018 15:31:54 -0700 (PDT) From: Mark Thompson To: ffmpeg-devel@ffmpeg.org Date: Tue, 18 Sep 2018 23:31:10 +0100 Message-Id: <20180918223116.14322-33-sw@jkqxz.net> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180918223116.14322-1-sw@jkqxz.net> References: <20180918223116.14322-1-sw@jkqxz.net> Subject: [FFmpeg-devel] [PATCH v4 32/38] vaapi_encode: Add flag to mark encoders supporting only constant-quality X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" And set it for MJPEG. --- libavcodec/vaapi_encode.c | 3 ++- libavcodec/vaapi_encode.h | 2 ++ libavcodec/vaapi_encode_mjpeg.c | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index 601d74b5c4..230b322ad0 100644 --- a/libavcodec/vaapi_encode.c +++ b/libavcodec/vaapi_encode.c @@ -1276,7 +1276,8 @@ static av_cold int vaapi_encode_init_rate_control(AVCodecContext *avctx) ctx->va_rc_mode = VA_RC_CQP; return 0; } - if (avctx->flags & AV_CODEC_FLAG_QSCALE || + if (ctx->codec->flags & FLAG_CONSTANT_QUALITY_ONLY || + avctx->flags & AV_CODEC_FLAG_QSCALE || avctx->bit_rate <= 0) { if (rc_attr.value & VA_RC_CQP) { av_log(avctx, AV_LOG_VERBOSE, "Using constant-quality mode.\n"); diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h index 271d4ef518..965fe65c0b 100644 --- a/libavcodec/vaapi_encode.h +++ b/libavcodec/vaapi_encode.h @@ -251,6 +251,8 @@ typedef struct VAAPIEncodeContext { enum { // Codec supports controlling the subdivision of pictures into slices. FLAG_SLICE_CONTROL = 1 << 0, + // Codec only supports constant quality (no rate control). + FLAG_CONSTANT_QUALITY_ONLY = 1 << 1, }; typedef struct VAAPIEncodeType { diff --git a/libavcodec/vaapi_encode_mjpeg.c b/libavcodec/vaapi_encode_mjpeg.c index fe8439ce88..79f43473f5 100644 --- a/libavcodec/vaapi_encode_mjpeg.c +++ b/libavcodec/vaapi_encode_mjpeg.c @@ -476,6 +476,8 @@ static const VAAPIEncodeProfile vaapi_encode_mjpeg_profiles[] = { static const VAAPIEncodeType vaapi_encode_type_mjpeg = { .profiles = vaapi_encode_mjpeg_profiles, + .flags = FLAG_CONSTANT_QUALITY_ONLY, + .configure = &vaapi_encode_mjpeg_configure, .picture_params_size = sizeof(VAEncPictureParameterBufferJPEG),