From c09248aecd0d3f03064387734094ec75a23e1078 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Wed, 24 Feb 2016 22:10:32 +0100 Subject: avfilter/af_astats: reset stats prior not after filtering This way stats printed at uninit are also useful. Signed-off-by: Paul B Mahol --- libavfilter/af_astats.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'libavfilter/af_astats.c') diff --git a/libavfilter/af_astats.c b/libavfilter/af_astats.c index b3b8f2818c..70ec28a50f 100644 --- a/libavfilter/af_astats.c +++ b/libavfilter/af_astats.c @@ -119,6 +119,7 @@ static int config_output(AVFilterLink *outlink) s->nb_channels = outlink->channels; s->mult = exp((-1 / s->time_constant / outlink->sample_rate)); s->tc_samples = 5 * s->time_constant * outlink->sample_rate + .5; + s->nb_frames = 0; reset_stats(s); @@ -269,6 +270,14 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf) const double *src; int i, c; + if (s->reset_count > 0) { + if (s->nb_frames >= s->reset_count) { + reset_stats(s); + s->nb_frames = 0; + } + s->nb_frames++; + } + switch (inlink->format) { case AV_SAMPLE_FMT_DBLP: for (c = 0; c < channels; c++) { @@ -292,14 +301,6 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf) if (s->metadata) set_metadata(s, metadata); - if (s->reset_count > 0) { - s->nb_frames++; - if (s->nb_frames >= s->reset_count) { - reset_stats(s); - s->nb_frames = 0; - } - } - return ff_filter_frame(inlink->dst->outputs[0], buf); } -- cgit v1.2.3