From 621b18a278c3d314da773b8eec9f9e12707a20bb Mon Sep 17 00:00:00 2001
From: Martin Vignali <martin.vignali@gmail.com>
Date: Sat, 7 Mar 2015 23:09:40 +0100
Subject: [PATCH] Fix crash in astats filter, whith no audio input

Avoid Zero division in print part.
---
 libavfilter/af_astats.c | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/libavfilter/af_astats.c b/libavfilter/af_astats.c
index 60ccd73..8e90f6b 100644
--- a/libavfilter/af_astats.c
+++ b/libavfilter/af_astats.c
@@ -222,18 +222,20 @@ static void print_stats(AVFilterContext *ctx)
         av_log(ctx, AV_LOG_INFO, "Peak count: %"PRId64"\n", p->min_count + p->max_count);
     }
 
-    av_log(ctx, AV_LOG_INFO, "Overall\n");
-    av_log(ctx, AV_LOG_INFO, "DC offset: %f\n", max_sigma_x / (nb_samples / s->nb_channels));
-    av_log(ctx, AV_LOG_INFO, "Min level: %f\n", min);
-    av_log(ctx, AV_LOG_INFO, "Max level: %f\n", max);
-    av_log(ctx, AV_LOG_INFO, "Peak level dB: %f\n", LINEAR_TO_DB(FFMAX(-min, max)));
-    av_log(ctx, AV_LOG_INFO, "RMS level dB: %f\n", LINEAR_TO_DB(sqrt(sigma_x2 / nb_samples)));
-    av_log(ctx, AV_LOG_INFO, "RMS peak dB: %f\n", LINEAR_TO_DB(sqrt(max_sigma_x2)));
-    if (min_sigma_x2 != 1)
+    if ((s->nb_channels != 0)&&(nb_samples !=0)){/* Avoid crash when input don't have sound */
+        av_log(ctx, AV_LOG_INFO, "Overall\n");
+        av_log(ctx, AV_LOG_INFO, "DC offset: %f\n", max_sigma_x / (nb_samples / s->nb_channels));
+        av_log(ctx, AV_LOG_INFO, "Min level: %f\n", min);
+        av_log(ctx, AV_LOG_INFO, "Max level: %f\n", max);
+        av_log(ctx, AV_LOG_INFO, "Peak level dB: %f\n", LINEAR_TO_DB(FFMAX(-min, max)));
+        av_log(ctx, AV_LOG_INFO, "RMS level dB: %f\n", LINEAR_TO_DB(sqrt(sigma_x2 / nb_samples)));
+        av_log(ctx, AV_LOG_INFO, "RMS peak dB: %f\n", LINEAR_TO_DB(sqrt(max_sigma_x2)));
+        if (min_sigma_x2 != 1)
         av_log(ctx, AV_LOG_INFO, "RMS trough dB: %f\n", LINEAR_TO_DB(sqrt(min_sigma_x2)));
-    av_log(ctx, AV_LOG_INFO, "Flat factor: %f\n", LINEAR_TO_DB((min_runs + max_runs) / (min_count + max_count)));
-    av_log(ctx, AV_LOG_INFO, "Peak count: %f\n", (min_count + max_count) / (double)s->nb_channels);
-    av_log(ctx, AV_LOG_INFO, "Number of samples: %"PRId64"\n", nb_samples / s->nb_channels);
+        av_log(ctx, AV_LOG_INFO, "Flat factor: %f\n", LINEAR_TO_DB((min_runs + max_runs) / (min_count + max_count)));
+        av_log(ctx, AV_LOG_INFO, "Peak count: %f\n", (min_count + max_count) / (double)s->nb_channels);
+        av_log(ctx, AV_LOG_INFO, "Number of samples: %"PRId64"\n", nb_samples / s->nb_channels);
+    }
 }
 
 static av_cold void uninit(AVFilterContext *ctx)
-- 
1.9.3 (Apple Git-50)

