[FFmpeg-cvslog] lavfi/qsvvpp: do not mix up FFmpeg and SDK error code

Haihao Xiang git at videolan.org
Tue Aug 10 04:58:05 EEST 2021


ffmpeg | branch: master | Haihao Xiang <haihao.xiang at intel.com> | Fri Jul 30 10:39:24 2021 +0800| [43aeeab764c6fd89aea777767be9c0b16cedd78a] | committer: James Almer

lavfi/qsvvpp: do not mix up FFmpeg and SDK error code

The function ff_qsvvpp_filter_frame should return a FFmpeg error code if
there is an error. However it might return a SDK error code without this
patch.

Reviewed-by: Soft Works <softworkz at hotmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=43aeeab764c6fd89aea777767be9c0b16cedd78a
---

 libavfilter/qsvvpp.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c
index 4768f6208b..c7ef8a915f 100644
--- a/libavfilter/qsvvpp.c
+++ b/libavfilter/qsvvpp.c
@@ -807,8 +807,7 @@ int ff_qsvvpp_filter_frame(QSVVPPContext *s, AVFilterLink *inlink, AVFrame *picr
         filter_ret = s->filter_frame(outlink, tmp->frame);
         if (filter_ret < 0) {
             av_frame_free(&tmp->frame);
-            ret = filter_ret;
-            break;
+            return filter_ret;
         }
         tmp->queued--;
         s->got_frame = 1;
@@ -842,7 +841,7 @@ 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);
+                return AVERROR(EAGAIN);
             break;
         }
         out_frame->frame->pts = av_rescale_q(out_frame->surface.Data.TimeStamp,
@@ -864,8 +863,7 @@ int ff_qsvvpp_filter_frame(QSVVPPContext *s, AVFilterLink *inlink, AVFrame *picr
             filter_ret = s->filter_frame(outlink, tmp->frame);
             if (filter_ret < 0) {
                 av_frame_free(&tmp->frame);
-                ret = filter_ret;
-                break;
+                return filter_ret;
             }
 
             tmp->queued--;
@@ -874,5 +872,10 @@ int ff_qsvvpp_filter_frame(QSVVPPContext *s, AVFilterLink *inlink, AVFrame *picr
         }
     } while(ret == MFX_ERR_MORE_SURFACE);
 
-    return ret;
+    if (ret < 0)
+        return ff_qsvvpp_print_error(ctx, ret, "Error running VPP");
+    else if (ret > 0)
+        ff_qsvvpp_print_warning(ctx, ret, "Warning in running VPP");
+
+    return 0;
 }



More information about the ffmpeg-cvslog mailing list