From 48ec8b25a7deb1a12cd06a064d2bc16440bcbe92 Mon Sep 17 00:00:00 2001
From: Nicolas George <nicolas.george@normalesup.org>
Date: Wed, 17 Oct 2012 19:42:20 +0200
Subject: [PATCH] lavfi/af_volumedetect: print stats in uninit().

If the stats are printed when request_frame on the input
returns EOF, then they are never printed if the filter is
not flushed, in particular when using the -t ffmpeg option.

Fix trac ticket #1727.
---
 libavfilter/af_volumedetect.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/libavfilter/af_volumedetect.c b/libavfilter/af_volumedetect.c
index 9bc40f65c7..0ec69604b7 100644
--- a/libavfilter/af_volumedetect.c
+++ b/libavfilter/af_volumedetect.c
@@ -126,13 +126,9 @@ static void print_stats(AVFilterContext *ctx)
     }
 }
 
-static int request_frame(AVFilterLink *outlink)
+static void uninit(AVFilterContext *ctx)
 {
-    AVFilterContext *ctx = outlink->src;
-    int ret = ff_request_frame(ctx->inputs[0]);
-    if (ret == AVERROR_EOF)
-        print_stats(ctx);
-    return ret;
+    print_stats(ctx);
 }
 
 AVFilter avfilter_af_volumedetect = {
@@ -141,6 +137,7 @@ AVFilter avfilter_af_volumedetect = {
 
     .priv_size     = sizeof(VolDetectContext),
     .query_formats = query_formats,
+    .uninit        = uninit,
 
     .inputs    = (const AVFilterPad[]) {
         { .name             = "default",
@@ -152,8 +149,7 @@ AVFilter avfilter_af_volumedetect = {
     },
     .outputs   = (const AVFilterPad[]) {
         { .name = "default",
-          .type = AVMEDIA_TYPE_AUDIO,
-          .request_frame = request_frame, },
+          .type = AVMEDIA_TYPE_AUDIO, },
         { .name = NULL }
     },
 };