[FFmpeg-devel] [PATCH 2/2] lavf/qsvvpp: cope with MFX_ERR_MORE_DATA condition in VPP pipeline

Linjie Fu linjie.fu at intel.com
Mon Jan 14 14:40:37 EET 2019


Returning AVERROR(EAGAIN) when libmfx needs more data will cause the failure
of requesting the next frame and lead to an infinite loop.

Sleep for a while to release the resources before calling MFXVideoCORE_SyncOperation
in hwupload to avoid the crash (in MCTF for example).

Signed-off-by: Linjie Fu <linjie.fu at intel.com>
---
 libavfilter/qsvvpp.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c
index 06efdf5089..1a10d16788 100644
--- a/libavfilter/qsvvpp.c
+++ b/libavfilter/qsvvpp.c
@@ -714,8 +714,10 @@ int ff_qsvvpp_filter_frame(QSVVPPContext *s, AVFilterLink *inlink, AVFrame *picr
 
         if (ret < 0 && ret != MFX_ERR_MORE_SURFACE) {
             /* Ignore more_data error */
-            if (ret == MFX_ERR_MORE_DATA)
-                ret = AVERROR(EAGAIN);
+            if (ret == MFX_ERR_MORE_DATA) {
+                ret = MFX_ERR_NONE;
+                av_usleep(100000);
+            }
             break;
         }
 
-- 
2.17.1



More information about the ffmpeg-devel mailing list