From patchwork Fri Mar 2 03:24:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhong Li X-Patchwork-Id: 7785 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.181.170 with SMTP id m39csp5781976jaj; Thu, 1 Mar 2018 19:26:27 -0800 (PST) X-Google-Smtp-Source: AG47ELsVHCl5exhkNXB9iHwbpxqgacRffoAKvOSGGA+Twcj1rC0njbYJA2ccMD+VLY86dCBPeOMQ X-Received: by 10.223.179.211 with SMTP id x19mr3550029wrd.175.1519961187755; Thu, 01 Mar 2018 19:26:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519961187; cv=none; d=google.com; s=arc-20160816; b=nkScVPeiuiBPshODh5lfqX0hKQENHzXbP5xcRSJGNb0PjD3ySwhxEEP5yZB9pYz225 6sXLVsrSbU9roDTzoKdpTld6ErrFCQwviR3yA3HwP525fUp7TK9dtAvPMsFYJ3NlVx1M +62ZmemmqVhszjIPpUFROJZMus7ZISxT6b/8tbwXVPJG+pQ316+eRffYZM4PIyJtRjL3 +VXnb4oAdEJUBBJamr7iKM5f86CPJtAsvJPVZX3QnIY6OzUABEub+45MYKI7qep9iUs6 8XYBlS2QQzX+P/RVL/CE+/cpu/0Eg1sA5vG7LjQ3+KibWUui38AK8EdbTojYRoG6xbVg nyRw== 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=Wq0U5S6tt/PvZboPbbKK+FPdvmMwI5uL7GnTPqFJhgw=; b=y3ysIPxbZibEtx35CXk6+hsdqHH5DQLt8yMOtMb6e8rr6zy+oSj454VbHwR7piKQjk UJGYyQ3zY+bVHNTO61zowG6d17CuRY7JOwVlRhxJ/ZRuf5nvDjlR0dn+YG/wqiLScN2g kFM+vpQgYtAqx1eVVCNrsFpnaDmIBTX/nu6h7u/Q55jJaYGfclcvdieBC4A7XTen1JjV swmgYJq++T0v59C00pIn2lWH01QlK2nOIkrwCLM3pWV18xxvyFSQ5XUCswELEiWkY5GQ trTHGkhWNmonRL3Xa7+RKqTFYPtVEq2xIGfIJKuoLfQd0a6jx7c/9p27gMkF3Tpju1Hn 4/Kw== 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 g194si239393wmd.189.2018.03.01.19.26.26; Thu, 01 Mar 2018 19:26:27 -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 90D9368A4C6; Fri, 2 Mar 2018 05:26:19 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1433E68A2FA for ; Fri, 2 Mar 2018 05:26:12 +0200 (EET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Mar 2018 19:26:16 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,409,1515484800"; d="scan'208";a="24493343" Received: from unknown (HELO localhost.localdomain.sh.intel.com) ([10.239.13.18]) by fmsmga002.fm.intel.com with ESMTP; 01 Mar 2018 19:26:15 -0800 From: Zhong Li To: ffmpeg-devel@ffmpeg.org Date: Fri, 2 Mar 2018 11:24:10 +0800 Message-Id: <1519961050-512-1-git-send-email-zhong.li@intel.com> X-Mailer: git-send-email 1.8.3.1 Subject: [FFmpeg-devel] [PATCH] lavc/qsvenc: provide detail error message if parameters invalid 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: Zhong Li MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Currently always shows "Selected ratecontrol mode is not supported by the QSV runtime. Choose a different mode", but sometimes it is not accurate. Signed-off-by: Zhong Li --- libavcodec/qsvenc.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index 74c273c..9710f5b 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -348,15 +348,34 @@ static int select_rc_mode(AVCodecContext *avctx, QSVEncContext *q) return 0; } -static int rc_supported(QSVEncContext *q) +static int check_enc_param(AVCodecContext *avctx, QSVEncContext *q) { mfxVideoParam param_out = { .mfx.CodecId = q->param.mfx.CodecId }; mfxStatus ret; +#define UNMATCH(x) (param_out.mfx.x != q->param.mfx.x) + ret = MFXVideoENCODE_Query(q->session, &q->param, ¶m_out); - if (ret < 0 || - param_out.mfx.RateControlMethod != q->param.mfx.RateControlMethod) + + if (ret < 0) { + if (UNMATCH(CodecId)) + av_log(avctx, AV_LOG_ERROR, "Current codec type is unsupported\n"); + if (UNMATCH(CodecProfile)) + av_log(avctx, AV_LOG_ERROR, "Current profile is unsupported\n"); + if (UNMATCH(RateControlMethod)) + av_log(avctx, AV_LOG_ERROR, "Selected ratecontrol mode is unsupported\n"); + if (UNMATCH(LowPower)) + av_log(avctx, AV_LOG_ERROR, "Low power mode is unsupported\n"); + if (UNMATCH(FrameInfo.FrameRateExtN) || UNMATCH(FrameInfo.FrameRateExtN)) + av_log(avctx, AV_LOG_ERROR, "Current frame rate is unsupported\n"); + if (UNMATCH(FrameInfo.PicStruct)) + av_log(avctx, AV_LOG_ERROR, "Current picture structure is unsupported\n"); + if (UNMATCH(FrameInfo.Width) || UNMATCH(FrameInfo.Height)) + av_log(avctx, AV_LOG_ERROR, "Current resolution is unsupported\n"); + if (UNMATCH(FrameInfo.FourCC)) + av_log(avctx, AV_LOG_ERROR, "Current pixel format is unsupported\n"); return 0; + } return 1; } @@ -634,10 +653,10 @@ FF_ENABLE_DEPRECATION_WARNINGS #endif } - if (!rc_supported(q)) { + if (!check_enc_param(avctx,q)) { av_log(avctx, AV_LOG_ERROR, - "Selected ratecontrol mode is not supported by the QSV " - "runtime. Choose a different mode.\n"); + "some encoding parameters are not supported by the QSV " + "runtime. Please double check the input parameters.\n"); return AVERROR(ENOSYS); }