[FFmpeg-devel] [PATCH] avfilter/af_join: detect EOF immediately
Paul B Mahol
onemda at gmail.com
Fri Aug 25 21:42:41 EEST 2017
Prevents hang.
Signed-off-by: Paul B Mahol <onemda at gmail.com>
---
libavfilter/af_join.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/libavfilter/af_join.c b/libavfilter/af_join.c
index f8af0a1..7fbab47 100644
--- a/libavfilter/af_join.c
+++ b/libavfilter/af_join.c
@@ -24,6 +24,9 @@
* a single output
*/
+#define FF_INTERNAL_FIELDS 1
+#include "framequeue.h"
+
#include "libavutil/avassert.h"
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
@@ -402,13 +405,16 @@ static int join_request_frame(AVFilterLink *outlink)
{
AVFilterContext *ctx = outlink->src;
JoinContext *s = ctx->priv;
- int i;
+ int i, ret;
/* get a frame on each input */
for (i = 0; i < ctx->nb_inputs; i++) {
AVFilterLink *inlink = ctx->inputs[i];
- if (!s->input_frames[i])
- return ff_request_frame(inlink);
+ if (!s->input_frames[i] ||
+ /* detect EOF immediately */
+ (ctx->inputs[i]->status_in && !ctx->inputs[i]->status_out))
+ if ((ret = ff_request_frame(inlink)) < 0)
+ return ret;
}
return 0;
}
--
2.9.3
More information about the ffmpeg-devel
mailing list