From 0ddc24d23248b5070c7fcdaee22c7852381fce1d Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Sun, 8 Jan 2017 20:41:36 +0100 Subject: [PATCH] avfilter/af_dynaudnorm: fix hang with too short input The only thing we can do at such point is return samples unchanged. Signed-off-by: Paul B Mahol --- libavfilter/af_dynaudnorm.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libavfilter/af_dynaudnorm.c b/libavfilter/af_dynaudnorm.c index 91ec45a2da..ddbef26ab5 100644 --- a/libavfilter/af_dynaudnorm.c +++ b/libavfilter/af_dynaudnorm.c @@ -708,8 +708,15 @@ static int request_frame(AVFilterLink *outlink) ret = ff_request_frame(ctx->inputs[0]); - if (ret == AVERROR_EOF && !ctx->is_disabled && s->delay) - ret = flush_buffer(s, ctx->inputs[0], outlink); + if (ret == AVERROR_EOF && !ctx->is_disabled && s->delay) { + if (!cqueue_empty(s->gain_history_smoothed[0])) { + ret = flush_buffer(s, ctx->inputs[0], outlink); + } else if (s->queue.available) { + AVFrame *out = ff_bufqueue_get(&s->queue); + + ret = ff_filter_frame(outlink, out); + } + } return ret; }