diff options
author | Paul B Mahol <onemda@gmail.com> | 2023-12-01 16:59:07 +0100 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2023-12-03 23:26:43 +0100 |
commit | d9e41ead82263e96ebd14d4d88d6e7f858dd944c (patch) | |
tree | 64229efa35c0e2674c24c128986085c71aff9d23 /libavfilter | |
parent | e3e3531d1ed85e6c0a123491c247d4de2e171a9e (diff) | |
download | ffmpeg-d9e41ead82263e96ebd14d4d88d6e7f858dd944c.tar.gz |
avfilter/avfilter: fix OOM case for default activate
Fixes OOM when caller keeps adding frames into filtergraph
that reached EOF by other means, for example EOF is signalled
by other filter in filtergraph or by buffersink.
Diffstat (limited to 'libavfilter')
-rw-r--r-- | libavfilter/avfilter.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index ab7782862a..bde1c33d07 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -1167,6 +1167,16 @@ static int ff_filter_activate_default(AVFilterContext *filter) { unsigned i; + for (i = 0; i < filter->nb_outputs; i++) { + int ret = filter->outputs[i]->status_in; + + if (ret) { + for (int j = 0; j < filter->nb_inputs; j++) + ff_inlink_set_status(filter->inputs[j], ret); + return 0; + } + } + for (i = 0; i < filter->nb_inputs; i++) { if (samples_ready(filter->inputs[i], filter->inputs[i]->min_samples)) { return ff_filter_frame_to_filter(filter->inputs[i]); |