diff options
author | Nicolas George <george@nsup.org> | 2016-12-22 12:04:12 +0100 |
---|---|---|
committer | Marton Balint <cus@passwd.hu> | 2016-12-23 03:47:43 +0100 |
commit | 8156b5ac94368e5d4ddc66675ededf9b5dd507ab (patch) | |
tree | 5182dcfd0af251ac615185268e4f0ac5d16f76cb /libavfilter | |
parent | 8dcb28cf6dd1c68810e7aa857bb6f2a778bef4de (diff) | |
download | ffmpeg-8156b5ac94368e5d4ddc66675ededf9b5dd507ab.tar.gz |
avfilter/af_amerge: detect EOF immediately
Fix an infinite loop in forward_status_change().
Signed-off-by: Nicolas George <george@nsup.org>
Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavfilter')
-rw-r--r-- | libavfilter/af_amerge.c | 7 |
1 files changed, 6 insertions, 1 deletions
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; |