[FFmpeg-cvslog] avfilter/af_dynaudnorm: fix hang with too short input
Paul B Mahol
git at videolan.org
Sun Jan 8 21:45:59 EET 2017
ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Sun Jan 8 20:41:36 2017 +0100| [0ddc24d23248b5070c7fcdaee22c7852381fce1d] | committer: Paul B Mahol
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 <onemda at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0ddc24d23248b5070c7fcdaee22c7852381fce1d
---
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 91ec45a..ddbef26 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;
}
More information about the ffmpeg-cvslog
mailing list