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.

Signed-off-by: Hon Wai Chow <hon.wai.c...@intel.com>
Signed-off-by: Dmitry Rogozhkin <dmitry.v.rogozh...@intel.com>
---
 libavcodec/qsv.c     | 5 +++++
 libavfilter/qsvvpp.c | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c
index 385b43b..70918b1 100644
--- a/libavcodec/qsv.c
+++ b/libavcodec/qsv.c
@@ -105,6 +105,9 @@ static const struct {
     const char *desc;
 } qsv_errors[] = {
     { MFX_ERR_NONE,                     0,               "success"             
                 },
+#if QSV_VERSION_ATLEAST(1, 31)
+    { MFX_ERR_NONE_PARTIAL_OUTPUT,      0,               "partial output"      
                 },
+#endif
     { MFX_ERR_UNKNOWN,                  AVERROR_UNKNOWN, "unknown error"       
                 },
     { MFX_ERR_NULL_PTR,                 AVERROR(EINVAL), "NULL pointer"        
                 },
     { MFX_ERR_UNSUPPORTED,              AVERROR(ENOSYS), "unsupported"         
                 },
@@ -125,6 +128,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"             },
 
diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c
index 954f882..2f0613f 100644
--- a/libavfilter/qsvvpp.c
+++ b/libavfilter/qsvvpp.c
@@ -80,6 +80,9 @@ static const struct {
     const char *desc;
 } qsv_errors[] = {
     { MFX_ERR_NONE,                     0,               "success"             
                 },
+#if QSV_VERSION_ATLEAST(1, 31)
+    { MFX_ERR_NONE_PARTIAL_OUTPUT,      0,               "partial output"      
                 },
+#endif
     { MFX_ERR_UNKNOWN,                  AVERROR_UNKNOWN, "unknown error"       
                 },
     { MFX_ERR_NULL_PTR,                 AVERROR(EINVAL), "NULL pointer"        
                 },
     { MFX_ERR_UNSUPPORTED,              AVERROR(ENOSYS), "unsupported"         
                 },
@@ -100,6 +103,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"             },
 
-- 
1.8.3.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to