summaryrefslogtreecommitdiffstats
path: root/libavfilter/af_amerge.c
diff options
context:
space:
mode:
authorNicolas George <george@nsup.org>2016-12-22 12:04:12 +0100
committerMarton Balint <cus@passwd.hu>2016-12-23 03:47:43 +0100
commit8156b5ac94368e5d4ddc66675ededf9b5dd507ab (patch)
tree5182dcfd0af251ac615185268e4f0ac5d16f76cb /libavfilter/af_amerge.c
parent8dcb28cf6dd1c68810e7aa857bb6f2a778bef4de (diff)
downloadffmpeg-streaming-8156b5ac94368e5d4ddc66675ededf9b5dd507ab.zip
ffmpeg-streaming-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/af_amerge.c')
-rw-r--r--libavfilter/af_amerge.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libavfilter/af_amerge.c b/libavfilter/af_amerge.c
index 4a8c6d5..40bf7ab 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;
OpenPOWER on IntegriCloud