From a57029bba52ea55304da6d63317693e5ff73194d Mon Sep 17 00:00:00 2001
From: Jonathan <jb@amazing-discoveries.org>
Date: Mon, 4 Dec 2017 13:32:45 +0100
Subject: [PATCH] unify blackdetect with af_silencedetect. Is more usefull for
 monitoring streams.

---
 libavfilter/vf_blackdetect.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/libavfilter/vf_blackdetect.c b/libavfilter/vf_blackdetect.c
index 06ef9988d..53425d8ff 100644
--- a/libavfilter/vf_blackdetect.c
+++ b/libavfilter/vf_blackdetect.c
@@ -107,15 +107,19 @@ static int config_input(AVFilterLink *inlink)
     return 0;
 }
 
-static void check_black_end(AVFilterContext *ctx)
+static void check_black(AVFilterContext *ctx)
 {
     BlackDetectContext *blackdetect = ctx->priv;
     AVFilterLink *inlink = ctx->inputs[0];
 
+    if ((blackdetect->last_picref_pts - blackdetect->black_start) >= blackdetect->black_min_duration) {
+        av_log(blackdetect, AV_LOG_INFO,
+               "black_start: %s \n",
+               av_ts2timestr(blackdetect->black_start, &inlink->time_base));
+    }
     if ((blackdetect->black_end - blackdetect->black_start) >= blackdetect->black_min_duration) {
         av_log(blackdetect, AV_LOG_INFO,
-               "black_start:%s black_end:%s black_duration:%s\n",
-               av_ts2timestr(blackdetect->black_start, &inlink->time_base),
+               "black_end: %s | black_duration: %s\n",
                av_ts2timestr(blackdetect->black_end,   &inlink->time_base),
                av_ts2timestr(blackdetect->black_end - blackdetect->black_start, &inlink->time_base));
     }
@@ -131,7 +135,7 @@ static int request_frame(AVFilterLink *outlink)
     if (ret == AVERROR_EOF && blackdetect->black_started) {
         // FIXME: black_end should be set to last_picref_pts + last_picref_duration
         blackdetect->black_end = blackdetect->last_picref_pts;
-        check_black_end(ctx);
+        check_black(ctx);
     }
     return ret;
 }
@@ -171,7 +175,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *picref)
         /* black ends here */
         blackdetect->black_started = 0;
         blackdetect->black_end = picref->pts;
-        check_black_end(ctx);
+        check_black(ctx);
         av_dict_set(&picref->metadata, "lavfi.black_end",
             av_ts2timestr(blackdetect->black_end, &inlink->time_base), 0);
     }
-- 
2.15.1

