summaryrefslogtreecommitdiff
path: root/libavfilter/af_astats.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2019-05-12 17:10:40 +0200
committerPaul B Mahol <onemda@gmail.com>2019-05-12 17:12:06 +0200
commitbd6942b4c031fabcc82e9487f0af41f278da429a (patch)
tree01e3d805c675d2ebfa1a914f6cf0bdd6c9206b2b /libavfilter/af_astats.c
parent2a4a364f6a00ae121ed1309b4f968362f69647fb (diff)
avfilter/af_astats: fix calculations involving last sample
Diffstat (limited to 'libavfilter/af_astats.c')
-rw-r--r--libavfilter/af_astats.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/libavfilter/af_astats.c b/libavfilter/af_astats.c
index 9c673b2392..7707f3158d 100644
--- a/libavfilter/af_astats.c
+++ b/libavfilter/af_astats.c
@@ -196,6 +196,7 @@ static void reset_stats(AudioStatsContext *s)
p->nb_nans = 0;
p->nb_infs = 0;
p->nb_denormals = 0;
+ p->last = NAN;
}
}
@@ -285,10 +286,12 @@ static inline void update_stat(AudioStatsContext *s, ChannelStats *p, double d,
p->sigma_x += nd;
p->sigma_x2 += nd * nd;
p->avg_sigma_x2 = p->avg_sigma_x2 * s->mult + (1.0 - s->mult) * nd * nd;
- p->min_diff = FFMIN(p->min_diff, fabs(d - p->last));
- p->max_diff = FFMAX(p->max_diff, fabs(d - p->last));
- p->diff1_sum += fabs(d - p->last);
- p->diff1_sum_x2 += (d - p->last) * (d - p->last);
+ if (!isnan(p->last)) {
+ p->min_diff = FFMIN(p->min_diff, fabs(d - p->last));
+ p->max_diff = FFMAX(p->max_diff, fabs(d - p->last));
+ p->diff1_sum += fabs(d - p->last);
+ p->diff1_sum_x2 += (d - p->last) * (d - p->last);
+ }
p->last = d;
p->mask |= i;
p->imask &= i;