From 8156b5ac94368e5d4ddc66675ededf9b5dd507ab Mon Sep 17 00:00:00 2001 From: Nicolas George Date: Thu, 22 Dec 2016 12:04:12 +0100 Subject: [PATCH] avfilter/af_amerge: detect EOF immediately Fix an infinite loop in forward_status_change(). Signed-off-by: Nicolas George Signed-off-by: Marton Balint --- libavfilter/af_amerge.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libavfilter/af_amerge.c b/libavfilter/af_amerge.c index 4a8c6d5bd0..40bf7ab209 100644 --- a/libavfilter/af_amerge.c +++ b/libavfilter/af_amerge.c @@ -23,6 +23,9 @@ * Audio merging filter */ +#define FF_INTERNAL_FIELDS 1 +#include "framequeue.h" + #include "libavutil/avstring.h" #include "libavutil/bprint.h" #include "libavutil/channel_layout.h" @@ -182,7 +185,9 @@ static int request_frame(AVFilterLink *outlink) int i, ret; for (i = 0; i < s->nb_inputs; i++) - if (!s->in[i].nb_samples) + if (!s->in[i].nb_samples || + /* detect EOF immediately */ + (ctx->inputs[i]->status_in && !ctx->inputs[i]->status_out)) if ((ret = ff_request_frame(ctx->inputs[i])) < 0) return ret; return 0;