diff options
author | Haihao Xiang <haihao.xiang@intel.com> | 2021-07-30 10:39:24 +0800 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2021-08-09 22:57:05 -0300 |
commit | 43aeeab764c6fd89aea777767be9c0b16cedd78a (patch) | |
tree | f035dd187a41fcd358cec29e7797c7c831d80273 /libavfilter/qsvvpp.c | |
parent | 3f92496d9eebea1ecaaf45bad5a6aeb192672fe3 (diff) |
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@hotmail.com>
Diffstat (limited to 'libavfilter/qsvvpp.c')
-rw-r--r-- | libavfilter/qsvvpp.c | 15 |
1 files 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; } |