From patchwork Thu Jul 28 15:19:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Rogozhkin, Dmitry V" X-Patchwork-Id: 37026 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1649:b0:8b:613a:194d with SMTP id no9csp342593pzb; Thu, 28 Jul 2022 08:18:41 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uiODyWpQYgsQnOwQzMMemVb4jMkjUV8UFd3mBfj/do1A7npA3eneWqGHJNRV0iphNzHWOA X-Received: by 2002:a05:6402:3514:b0:43b:d87c:7a99 with SMTP id b20-20020a056402351400b0043bd87c7a99mr27036533edd.43.1659021521016; Thu, 28 Jul 2022 08:18:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1659021521; cv=none; d=google.com; s=arc-20160816; b=yjlFlxvh2bETILzO+DE5u5vZveLugnA2KLzoHrkhDll/ZDfRiMj4wAPAZXIgxi8sNd ea4iyxV6/R6tqcW5qPqekyIwoShHET0hde1TPgk1zPHPIcawMdmQXro56QIt9N1UqrRS xuN5esWgNQy1YJ5dfZ977R+KvzkwDOFUW9nTL4bkuIpg1kPsuKoqXSytzv7FzKiJo0XL nOZfoE/tE/kdDEDcSYwKQCmNli1/bGD1KLLZ1rtleSrCplD3h8CIZSfaJorkrvbI7rcG xbw1U/KiBvzwL55tiidfJOnzYytE9CgSSLidkyNL7wYg30RNaXVOYpAdYePTPN5XHpk6 Ql5w== 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:dkim-signature :delivered-to; bh=AQJP88cYPWt+ol6jf3FK1yaUfpEkjeJHojVAgvQxo2Q=; b=O4ZxXueeDFMqGfl67fYZUyTqmJjDWwNuWWDYSFD0Btxj+IsYALpRaLJ6Jq4836y3FY Of03glzhOWNtwWQgi+GuHFkfulzgIgzSFoQpu8xnBjtEs20PYXLqM41AixwW/h3GxUsu JNq/4BK2CUQXhdjsgYsOSe6QO0tDhrw2cAypM69FKvBRK8wp78xWR36IZx+un47kFUGm DY+oSx6yY+IPyvHUuglKIdrM10twJkOVzdPFQv6Wr3lvOAE6Am/B1jxax8knDCkAPqQ+ mJxeKy/CjxkcuKA/XywTou4vinyjv8dHdpLneHOi/bndvJYm/LarWLvWK0qIVd6ZVsug ujgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=iuB0m25E; 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 c12-20020a056402120c00b0043be994be69si762253edw.587.2022.07.28.08.18.40; Thu, 28 Jul 2022 08:18:41 -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=@intel.com header.s=Intel header.b=iuB0m25E; 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 EA1E468B9B5; Thu, 28 Jul 2022 18:18:36 +0300 (EEST) 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 190A368B898 for ; Thu, 28 Jul 2022 18:18:29 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1659021515; x=1690557515; h=from:to:cc:subject:date:message-id; bh=zYSk21rhy1+O2iBJw3OlUndbHRrubgrVSVvXrT8qx5s=; b=iuB0m25ECDNXZZIYKc4t9xhL95LJgU+uAIxAVka1QkVQ3neVy+j6nwwj HE0tqRytbnZaIykwYXymKRftEZHkd6sovktbMBSgoCGe/8Wd7zCJaiTTw sD4cqCpBMMd3zBGaBSSt2S1WwuPsZx4rTNM6vYszxTzGwf8gDhAvQORaY lU9MIqVuilhH6SnUYfGPm7tU9mmdKoUA7rzaO9q/pj7Vxj1gAWZqC+b+K cjpv1PDBe3Grkm8Qz3Zw7rWPkr3c23RJIl46rd7mkOI68MJRJNf0fKfMw f9Q6xU1yxoF0GYztgGLUY6hF2foqDl2nEgwuKxTKR65RDlJOJV85bo788 A==; X-IronPort-AV: E=McAfee;i="6400,9594,10422"; a="271576617" X-IronPort-AV: E=Sophos;i="5.93,198,1654585200"; d="scan'208";a="271576617" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jul 2022 08:18:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,198,1654585200"; d="scan'208";a="690358915" Received: from dvrscl.jf.intel.com ([10.54.72.26]) by FMSMGA003.fm.intel.com with ESMTP; 28 Jul 2022 08:18:27 -0700 From: Dmitry Rogozhkin To: ffmpeg-devel@ffmpeg.org Date: Thu, 28 Jul 2022 08:19:28 -0700 Message-Id: <1659021568-5787-1-git-send-email-dmitry.v.rogozhkin@intel.com> X-Mailer: git-send-email 1.8.3.1 Subject: [FFmpeg-devel] [PATCH] qsv: Update ffmpeg qsv_errors to recognize GPU hang and other statuses 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: Hon Wai Chow , Dmitry Rogozhkin MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: BEGxNz3prEV+ GPU hang is one of the most typical errors on Intel GPUs in case something goes wrong. It's important to recognize it explicitly for easier bugs triage. Also, this error code can be used to trigger GPU recovery path in self-written applications. There were 2 other statuses which MediaSDK can ppotentially return, MFX_ERR_NONE_PARTIAL_OUTPUT and MFX_ERR_REALLOC_SURFACE. Adding them as well. v2: move MFX_ERR_NONE_PARTIAL_OUTPUT next to MFX_WRN_* (Haihao) Signed-off-by: Hon Wai Chow Signed-off-by: Dmitry Rogozhkin --- libavcodec/qsv.c | 6 ++++++ libavfilter/qsvvpp.c | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index 385b43b..d660920 100644 --- a/libavcodec/qsv.c +++ b/libavcodec/qsv.c @@ -125,6 +125,8 @@ static const struct { { MFX_ERR_INVALID_VIDEO_PARAM, AVERROR(EINVAL), "invalid video parameters" }, { MFX_ERR_UNDEFINED_BEHAVIOR, AVERROR_BUG, "undefined behavior" }, { MFX_ERR_DEVICE_FAILED, AVERROR(EIO), "device failed" }, + { MFX_ERR_GPU_HANG, AVERROR(EIO), "GPU Hang" }, + { MFX_ERR_REALLOC_SURFACE, AVERROR_UNKNOWN, "need bigger surface for output" }, { MFX_ERR_INCOMPATIBLE_AUDIO_PARAM, AVERROR(EINVAL), "incompatible audio parameters" }, { MFX_ERR_INVALID_AUDIO_PARAM, AVERROR(EINVAL), "invalid audio parameters" }, @@ -137,6 +139,10 @@ static const struct { { MFX_WRN_OUT_OF_RANGE, 0, "value out of range" }, { MFX_WRN_FILTER_SKIPPED, 0, "filter skipped" }, { MFX_WRN_INCOMPATIBLE_AUDIO_PARAM, 0, "incompatible audio parameters" }, + +#if QSV_VERSION_ATLEAST(1, 31) + { MFX_ERR_NONE_PARTIAL_OUTPUT, 0, "partial output" }, +#endif }; /** diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c index 954f882..16d6163 100644 --- a/libavfilter/qsvvpp.c +++ b/libavfilter/qsvvpp.c @@ -100,6 +100,8 @@ static const struct { { MFX_ERR_INVALID_VIDEO_PARAM, AVERROR(EINVAL), "invalid video parameters" }, { MFX_ERR_UNDEFINED_BEHAVIOR, AVERROR_BUG, "undefined behavior" }, { MFX_ERR_DEVICE_FAILED, AVERROR(EIO), "device failed" }, + { MFX_ERR_GPU_HANG, AVERROR(EIO), "GPU Hang" }, + { MFX_ERR_REALLOC_SURFACE, AVERROR_UNKNOWN, "need bigger surface for output" }, { MFX_ERR_INCOMPATIBLE_AUDIO_PARAM, AVERROR(EINVAL), "incompatible audio parameters" }, { MFX_ERR_INVALID_AUDIO_PARAM, AVERROR(EINVAL), "invalid audio parameters" }, @@ -112,6 +114,10 @@ static const struct { { MFX_WRN_OUT_OF_RANGE, 0, "value out of range" }, { MFX_WRN_FILTER_SKIPPED, 0, "filter skipped" }, { MFX_WRN_INCOMPATIBLE_AUDIO_PARAM, 0, "incompatible audio parameters" }, + +#if QSV_VERSION_ATLEAST(1, 31) + { MFX_ERR_NONE_PARTIAL_OUTPUT, 0, "partial output" }, +#endif }; static int qsv_map_error(mfxStatus mfx_err, const char **desc)