From patchwork Sun Sep 23 21:53:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Thompson X-Patchwork-Id: 10458 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:1286:0:0:0:0:0 with SMTP id 6-v6csp1851168jap; Sun, 23 Sep 2018 14:53:49 -0700 (PDT) X-Google-Smtp-Source: ACcGV60wfhG+AjQcFU6UFy9PPH1jl8dV+5+cJaHnoYHsQUCAwZLil237L1nZQSmL8qNviSPS4gkm X-Received: by 2002:a1c:9616:: with SMTP id y22-v6mr5213873wmd.72.1537739629371; Sun, 23 Sep 2018 14:53:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537739629; cv=none; d=google.com; s=arc-20160816; b=x3ta8oz+06VYa00NN1T3dTHQAXZnVWsqgTwpl619V0UBtZMlOFt/1RouhVxkmbEojM i+Wd3yRKWBOL+woZWHqKegfAmoCMoWVz5m5ULgFRuFj5KwsbwO+oRXo5Y1h7WNWzzrEz SpsbyeXXP5es0CCW4RbR0v3vG2ttlWSaiwOxPW0LneSYCE3g6L0R6w7Zv0hgQfTn77he SFPcFzUW4dBlqErEgVd7hQR3IVg/A4HJXXuF9m+jc2EO7seOrqWjDvwVcABOqSMqI38t 6lPtus/CcKD47C8qyspAckXMS8K9vIi/VN8jQattlXrfrfaLbesyOzGXvMU1htEPmUfX 7Fkg== 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=EmdPi2Si9dczyZ5lV2ZA/syrgtfFsq1yHnB7uSR1ifE=; b=PW4Obh6c5/65C1Fcmb8QlVFglfWnmGKqAxUko7z18Eu2qGjT2uB2TuFUEQd1tDeSYi wP1wKt0CTJOmtjvjG+x3ezP/Irzcg5QcvdJLVhRP+e639Eq5f90tVIR4gpDTt4VcUOIR AoeYZlk87sBg+W+UZclOXGrkovStf0SCNVEXEgut7V73Vni0kh5cVBBxX2XieMUkRfdi 6pZ/mYcEEC3lY7q2pdCfjdAtGr2Q68EFlG2Zl/rW1Xtmi2YAlECSstUtKYy3eHX8iETs 3lO/Gif1ONg5Ke56SavhV5vqoIDH4RoLzh8XKX38zACztVa1zBwlmrR8zaH2twJlWuR+ 5OBw== 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=KXKm6Cuf; 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 r16-v6si11443212wrr.366.2018.09.23.14.53.48; Sun, 23 Sep 2018 14:53:49 -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=KXKm6Cuf; 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 83ECC68A6CD; Mon, 24 Sep 2018 00:53:02 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EC3B868A659 for ; Mon, 24 Sep 2018 00:52:54 +0300 (EEST) Received: by mail-wr1-f48.google.com with SMTP id u12-v6so17753285wrr.4 for ; Sun, 23 Sep 2018 14:53:10 -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=+1Fxn04q7ybJxGIJbdlZrpMJhpd4AOoPzQ3M+4PjXHk=; b=KXKm6CufWqNdq1iJvCxjYIxNa0rjrLG5RNFkwONJy2JF9CnVwHraHZ5Hog5q9vNaPy W9CrdsUaOw3fz1SicuCmDrWq8IcYF+1GmZ7fqwKoD/gf4mvXZDPLvqAVQjT4Hm8fnirl 04/2S2AUK6hgIc4LSrGOna3ISUuho1mKBHuWLHviZEjuSHENgYqNDTvBnR4HcfFahbVm vwstf4/opJ77ujpuVvJTXa0Wy36GdZj8SKoRfoDFnvA45YexCjOxNdmVTLgEyjx29bS1 9LT/iIl+5D8ZQB7REeHYfLp+9Ai3AfiGN/CVOU2Rf7KSdrm+TxlVPo+aQmlv8/Wszz1W tfdg== 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=+1Fxn04q7ybJxGIJbdlZrpMJhpd4AOoPzQ3M+4PjXHk=; b=UkwjOXfTGS+ooM5Oh8LQj4QRrHOiljQZZ1C6HnOFwnKckYgCrJO5CSu0eXUpsVRsWg P7ZVPZn5u0juAW0AyuzOBlkOI2kiwAa5UfAieoxLbcG/BK3LoUVLoZ2PJFPaF0E95l1E TDVskAyod3XLvuZ4ZKnszPQ0QIWW4iW3KQOb73m/VMJgvU8Uc69OMezjGk/u7FH4qfI0 FzHI8BE7DEaiE1sLGUw8VXp5IeqL8P/zKRjb2qdn8w+2HRIDqRoS7fYH2aCzwlZoYHe1 edEQmMHH/Gt3fS5XmwbYY0wBKQIvCtcgukV4UM4hODrLiBh0RJ+TcGz9DkVyzcZTWdN1 mYWA== X-Gm-Message-State: ABuFfog+3YMFk0fKIJrUUnrHlosqAhbeBS8EMwjN8eVkf0mCoMeDzH0Y 6rTupuf5ZTnpHmYs/8WMpdAwCReSxqo= X-Received: by 2002:adf:ade3:: with SMTP id w90-v6mr4998149wrc.73.1537739589584; Sun, 23 Sep 2018 14:53:09 -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 124-v6sm14960730wmk.20.2018.09.23.14.53.08 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 23 Sep 2018 14:53:08 -0700 (PDT) From: Mark Thompson To: ffmpeg-devel@ffmpeg.org Date: Sun, 23 Sep 2018 22:53:00 +0100 Message-Id: <20180923215300.2077-5-sw@jkqxz.net> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180923215300.2077-1-sw@jkqxz.net> References: <20180923215300.2077-1-sw@jkqxz.net> Subject: [FFmpeg-devel] [PATCH v2 5/5] 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 2d33aa5ec3..bc1cad7395 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),