From patchwork Tue Feb 6 08:18:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 7519 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.150.1 with SMTP id c1csp3818862jai; Tue, 6 Feb 2018 00:18:19 -0800 (PST) X-Google-Smtp-Source: AH8x227EA+tTxe7DCHFI4f9ir/S5Ss0nund5mrsjJGMYYNXsemGQ8cAL4zNAHrxKwY3qsp9Hx+vF X-Received: by 10.223.161.208 with SMTP id v16mr1254165wrv.11.1517905099739; Tue, 06 Feb 2018 00:18:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517905099; cv=none; d=google.com; s=arc-20160816; b=LWpUs0xf/q2v8GSLFr25PddCHGKSMOvyeL9m4xWVG+6aA2JHu5dBEMvDt/tYlQKVIY Y5SHNzjQ2Pdu0SJNywNxd5qQgnyDnDogjqZANZFYAF81mCDEQBqVVqnK8n/DnDp0fMgu mucM9wDVp+DTXYJoi8gY4bCOTABhMiuXGMrtNnWne0LTMxbCu/nrIOagylJFk5BlPhml kl0itfom4tNIINa/90rUaD6OETfZxCOs18t/DcpGAHDkhqV5souqoKmVMW+UeAlgV1/U CSwrKjX6EM62y8+M8Abn7LtmvA2jDoHRKhBzLx/XBXyl9YpCmhX+lncoVL40+DflVIiJ +mgw== 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:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:delivered-to :arc-authentication-results; bh=urUOGtcUrPkWGktAsNWvbRK6ylDfOOzAp8F7NwwFJGU=; b=XSfSOIK1XkuhnYZiJIsz7dTSAiYF1t/+NN7ap+RqzfyxxjG+G4eCZdlEX1fZp3rW87 7s0n+RH6scWj8eHzIGRDdzkYmCfmxclVOuVR3pOLGdZfeY/07PEteO4V6WRuApBMDJAI oNyEjpfOOAYO965XOX4OHaD/2Rw7cVQuDSMnP8hsrkxTjg6BNHFTTuUER3uG/8EvxVJ7 ALVYsfwuVBn3ax1zV/A9Gh3c9JG9TK1OjICdX0lhotqXrCFIF9ZrupgJoiiCtSYcaznD kteBQMqfnk/b+Dm8SuI/ydWOPPIqQIji2dRixeSO/VYYtXQOLYGVifCTxKpwUd5ZIv7z yknQ== ARC-Authentication-Results: i=1; mx.google.com; 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 e67si6964609wmi.98.2018.02.06.00.18.19; Tue, 06 Feb 2018 00:18:19 -0800 (PST) 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; 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 07866689217; Tue, 6 Feb 2018 10:18:07 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7334E6803BD for ; Tue, 6 Feb 2018 10:18:00 +0200 (EET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Feb 2018 00:18:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,467,1511856000"; d="scan'208";a="201713197" Received: from xhh-cfl64.sh.intel.com ([10.239.13.24]) by fmsmga006.fm.intel.com with ESMTP; 06 Feb 2018 00:18:05 -0800 From: Haihao Xiang To: FFmpeg development discussions and patches Date: Tue, 6 Feb 2018 16:18:03 +0800 Message-Id: <20180206081803.24662-1-haihao.xiang@intel.com> X-Mailer: git-send-email 2.14.1 Subject: [FFmpeg-devel] [PATCH] lavc/vaapi_encode_vp9: add support for low-power encoding 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 Cc: Haihao Xiang , Mark Thompson MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Although VAEntrypointEncSliceLP was added in old version of VAAPI, we never implemented it for VAAPI VP9 encoder before. so it is reasonable to require VAAPI 1.0 Signed-off-by: Haihao Xiang --- libavcodec/vaapi_encode_vp9.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/libavcodec/vaapi_encode_vp9.c b/libavcodec/vaapi_encode_vp9.c index 9108699ac38..30f1edbef4a 100644 --- a/libavcodec/vaapi_encode_vp9.c +++ b/libavcodec/vaapi_encode_vp9.c @@ -46,6 +46,7 @@ typedef struct VAAPIEncodeVP9Context { typedef struct VAAPIEncodeVP9Options { int loop_filter_level; int loop_filter_sharpness; + int low_power; } VAAPIEncodeVP9Options; @@ -217,6 +218,8 @@ static const VAAPIEncodeType vaapi_encode_type_vp9 = { static av_cold int vaapi_encode_vp9_init(AVCodecContext *avctx) { VAAPIEncodeContext *ctx = avctx->priv_data; + VAAPIEncodeVP9Options *opt = + (VAAPIEncodeVP9Options*)ctx->codec_options_data; ctx->codec = &vaapi_encode_type_vp9; @@ -243,7 +246,18 @@ static av_cold int vaapi_encode_vp9_init(AVCodecContext *avctx) avctx->profile); return AVERROR(EINVAL); } - ctx->va_entrypoint = VAEntrypointEncSlice; + + if (opt->low_power) { +#if VA_CHECK_VERSION(1, 0, 0) + ctx->va_entrypoint = VAEntrypointEncSliceLP; +#else + av_log(avctx, AV_LOG_ERROR, "Low-power encoding is not " + "supported with this VAAPI version.\n"); + return AVERROR(EINVAL); +#endif + } else { + ctx->va_entrypoint = VAEntrypointEncSlice; + } if (avctx->flags & AV_CODEC_FLAG_QSCALE) { ctx->va_rc_mode = VA_RC_CQP; @@ -274,6 +288,9 @@ static const AVOption vaapi_encode_vp9_options[] = { OFFSET(loop_filter_level), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, 63, FLAGS }, { "loop_filter_sharpness", "Loop filter sharpness", OFFSET(loop_filter_sharpness), AV_OPT_TYPE_INT, { .i64 = 4 }, 0, 15, FLAGS }, + { "low_power", "Use low-power encoding mode (experimental: only supported " + "on some platforms, does not support all features)", + OFFSET(low_power), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS }, { NULL }, };