From patchwork Thu Aug 12 02:33:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 29471 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:8e8b:0:0:0:0:0 with SMTP id q133csp335529iod; Wed, 11 Aug 2021 19:34:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyfgO/TIOCg0PXn/HjfS4tnC1yK0ptZJyJcWIOS0QIbdRV6c3tVGWd6ej+xt49cYKbAaZ72 X-Received: by 2002:aa7:c4d4:: with SMTP id p20mr2630863edr.382.1628735661916; Wed, 11 Aug 2021 19:34:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628735661; cv=none; d=google.com; s=arc-20160816; b=pwGPllUv5+ByNrYKGnei3UMyUqhaWFN2ep9AjkiH6CuBO6SqzlDyFGBdOq4bIllcL5 2KgAqyPN6xKZtSDWWFADfgNq60A6QbLTJXWlVCWNacGmobqhcGURg5AYSmZIZwkN3QvO HroSRFM8NsWtX2I00lxj5zQ8OeohoOHn+1gjtICgxBRO1b4n2WZZqbB1wlLuflXRnfCP feIsKoWOsGU5DasnGL1fyDZ5z5DDGV602cAGvbTWIbNDrMwyVjTmYqEX+a7J53G90rtu 14v8ed1DfmA+b9Yp0+xgHMxD+y8qb5Iw4WAjcsp1X3cUqpWHx5f5fK1THXTkDAo6wM3H VoEQ== 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; bh=+kO/EHCqV1Jt6uKVO/Cj7x6aiQbbU1zMi7UnuH10WDA=; b=Ti09qHZ525PXbPlAmiLnqPksIk7/1xVoYL6IB9FiMo9jENMeEfzseKPpT/861exVeY GMWS4dwg2H3m16UHCI/XO6iGg2CqaYdNnagyitQ5A0DteLACmfjHhrQYFHDxs1zmnZed oJahdAmyaSb0d/rE69vKhNf5DIJyi8SurryLzsBTXaEo1V1+P92n3gjdJnD+5EmCVa0B Dge3gFGVVXsmEjYKVVWtlSPtjOIULXv43vbN1+zc80g45qk2BkNDl+3b2ZoOvKTvz+CA miwn4mr5T+UCMNtgv9AalmJFEwLnFCYHEvRtxkK3AAktHf7tL14ZNezXfAkJd1Vozo9H gLWg== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id um28si938986ejb.255.2021.08.11.19.34.17; Wed, 11 Aug 2021 19:34:21 -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; 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=NONE dis=NONE) header.from=intel.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1517868A4E5; Thu, 12 Aug 2021 05:34:15 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9D3ED68A255 for ; Thu, 12 Aug 2021 05:34:08 +0300 (EEST) X-IronPort-AV: E=McAfee;i="6200,9189,10073"; a="300852409" X-IronPort-AV: E=Sophos;i="5.84,314,1620716400"; d="scan'208";a="300852409" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2021 19:34:06 -0700 X-IronPort-AV: E=Sophos;i="5.84,314,1620716400"; d="scan'208";a="460931388" Received: from xhh-dg164.sh.intel.com ([10.239.159.167]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2021 19:34:05 -0700 From: Haihao Xiang To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 Aug 2021 10:33:56 +0800 Message-Id: <20210812023356.8195-1-haihao.xiang@intel.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH v2] lavc/qsvenc: allows the SDK runtime to choose LowPower/non-LowPower modes 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: Haihao Xiang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 9CHga1yzWV7N The SDK supports LowPower and non-LowPower modes, but some features are available only under one of the two modes. Currently non-LowPower mode is always chosen in FFmpeg if the mode is not set to LowPower explicitly. User will experience some SDK errors if a LowPower related feature is specified but the mode is not set to LowPower. With this patch, the mode is set to unknown by default in FFmpeg, the SDK is able to choose a workable mode for the specified features. --- v2: update commit log and rebase the patch against the current master libavcodec/qsvenc.c | 6 ++++-- libavcodec/qsvenc.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index e7e65ebfcf..50ec7065ca 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -514,7 +514,7 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q) } } - if (q->low_power) { + if (q->low_power == 1) { #if QSV_HAVE_VDENC q->param.mfx.LowPower = MFX_CODINGOPTION_ON; #else @@ -523,7 +523,9 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q) q->low_power = 0; q->param.mfx.LowPower = MFX_CODINGOPTION_OFF; #endif - } else + } else if (q->low_power == -1) + q->param.mfx.LowPower = MFX_CODINGOPTION_UNKNOWN; + else q->param.mfx.LowPower = MFX_CODINGOPTION_OFF; q->param.mfx.CodecProfile = q->profile; diff --git a/libavcodec/qsvenc.h b/libavcodec/qsvenc.h index ba20b6f906..31516b8e55 100644 --- a/libavcodec/qsvenc.h +++ b/libavcodec/qsvenc.h @@ -96,7 +96,7 @@ { "adaptive_b", "Adaptive B-frame placement", OFFSET(qsv.adaptive_b), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \ { "b_strategy", "Strategy to choose between I/P/B-frames", OFFSET(qsv.b_strategy), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \ { "forced_idr", "Forcing I frames as IDR frames", OFFSET(qsv.forced_idr), AV_OPT_TYPE_BOOL,{ .i64 = 0 }, 0, 1, VE }, \ -{ "low_power", "enable low power mode(experimental: many limitations by mfx version, BRC modes, etc.)", OFFSET(qsv.low_power), AV_OPT_TYPE_BOOL, { .i64 = 0}, 0, 1, VE},\ +{ "low_power", "enable low power mode(experimental: many limitations by mfx version, BRC modes, etc.)", OFFSET(qsv.low_power), AV_OPT_TYPE_BOOL, { .i64 = -1}, -1, 1, VE},\ extern const AVCodecHWConfigInternal *const ff_qsv_enc_hw_configs[];