diff options
author | Nicolas George <george@nsup.org> | 2015-09-30 17:11:57 +0300 |
---|---|---|
committer | Nicolas George <george@nsup.org> | 2015-12-22 18:04:30 +0300 |
commit | 16557887127256fb1e491702375e7ea7b3940924 (patch) | |
tree | e6218ca8a613ccf7c54a95047d618de3d7e66724 /libavfilter/buffersink.c | |
parent | 108b4de5529a75b06da72b974b26625a8067001f (diff) |
lavfi: make request_frame() non-recursive.
Instead of calling the input filter request_frame() method,
ff_request_frame() now marks the link and returns immediately.
buffersink is changed to activate the marked filters until
a frame is obtained.
Diffstat (limited to 'libavfilter/buffersink.c')
-rw-r--r-- | libavfilter/buffersink.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c index 7a19df2c3a..2feb56dee9 100644 --- a/libavfilter/buffersink.c +++ b/libavfilter/buffersink.c @@ -140,6 +140,11 @@ int attribute_align_arg av_buffersink_get_frame_flags(AVFilterContext *ctx, AVFr return AVERROR(EAGAIN); if ((ret = ff_request_frame(inlink)) < 0) return ret; + while (inlink->frame_wanted_out) { + ret = ff_filter_graph_run_once(ctx->graph); + if (ret < 0) + return ret; + } } if (flags & AV_BUFFERSINK_FLAG_PEEK) { |