diff options
Diffstat (limited to 'libavfilter/src_movie.c')
-rw-r--r-- | libavfilter/src_movie.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/libavfilter/src_movie.c b/libavfilter/src_movie.c index ee68eca7d8..cb65dd6877 100644 --- a/libavfilter/src_movie.c +++ b/libavfilter/src_movie.c @@ -326,13 +326,24 @@ static int movie_request_frame(AVFilterLink *outlink) return ret; outpicref = avfilter_ref_buffer(movie->picref, ~0); - ff_start_frame(outlink, outpicref); - ff_draw_slice(outlink, 0, outlink->h, 1); - ff_end_frame(outlink); - avfilter_unref_buffer(movie->picref); - movie->picref = NULL; + if (!outpicref) { + ret = AVERROR(ENOMEM); + goto fail; + } - return 0; + ret = ff_start_frame(outlink, outpicref); + if (ret < 0) + goto fail; + + ret = ff_draw_slice(outlink, 0, outlink->h, 1); + if (ret < 0) + goto fail; + + ret = ff_end_frame(outlink); +fail: + avfilter_unref_bufferp(&movie->picref); + + return ret; } AVFilter avfilter_vsrc_movie = { |