[FFmpeg-cvslog] avfilter/af_dynaudnorm: process also short durations

Paul B Mahol git at videolan.org
Fri Nov 4 19:28:38 EET 2022


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Fri Nov  4 13:35:46 2022 +0100| [4a672f1c0e660cdb7b3e93f0e830d64e8f819ccb] | committer: Paul B Mahol

avfilter/af_dynaudnorm: process also short durations

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4a672f1c0e660cdb7b3e93f0e830d64e8f819ccb
---

 libavfilter/af_dynaudnorm.c | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/libavfilter/af_dynaudnorm.c b/libavfilter/af_dynaudnorm.c
index 9505c33b49..5aecefff5e 100644
--- a/libavfilter/af_dynaudnorm.c
+++ b/libavfilter/af_dynaudnorm.c
@@ -824,19 +824,13 @@ static int flush(AVFilterLink *outlink)
     AVFilterContext *ctx = outlink->src;
     AVFilterLink *inlink = ctx->inputs[0];
     DynamicAudioNormalizerContext *s = ctx->priv;
-    int ret = 0;
 
-    if (!cqueue_empty(s->gain_history_smoothed[0])) {
-        ret = flush_buffer(s, inlink, outlink);
-    } else if (s->queue.available) {
-        AVFrame *out = ff_bufqueue_get(&s->queue);
-
-        s->pts = out->pts + av_rescale_q(out->nb_samples, av_make_q(1, outlink->sample_rate),
-                                         outlink->time_base);
-        ret = ff_filter_frame(outlink, out);
+    while (s->eof && cqueue_empty(s->gain_history_smoothed[0])) {
+        for (int c = 0; c < s->channels; c++)
+            update_gain_history(s, c, (local_gain){ cqueue_peek(s->gain_history_original[c], 0), 1.0});
     }
 
-    return ret;
+    return flush_buffer(s, inlink, outlink);
 }
 
 static int activate(AVFilterContext *ctx)



More information about the ffmpeg-cvslog mailing list