summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2023-12-01 16:59:07 +0100
committerPaul B Mahol <onemda@gmail.com>2023-12-03 23:26:43 +0100
commitd9e41ead82263e96ebd14d4d88d6e7f858dd944c (patch)
tree64229efa35c0e2674c24c128986085c71aff9d23
parente3e3531d1ed85e6c0a123491c247d4de2e171a9e (diff)
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.
-rw-r--r--libavfilter/avfilter.c10
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]);