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.
This commit is contained in:
Nicolas George 2012-10-17 19:42:20 +02:00
parent ce028ab9a7
commit 48ec8b25a7

View File

@ -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; print_stats(ctx);
int ret = ff_request_frame(ctx->inputs[0]);
if (ret == AVERROR_EOF)
print_stats(ctx);
return ret;
} }
AVFilter avfilter_af_volumedetect = { AVFilter avfilter_af_volumedetect = {
@ -141,6 +137,7 @@ AVFilter avfilter_af_volumedetect = {
.priv_size = sizeof(VolDetectContext), .priv_size = sizeof(VolDetectContext),
.query_formats = query_formats, .query_formats = query_formats,
.uninit = uninit,
.inputs = (const AVFilterPad[]) { .inputs = (const AVFilterPad[]) {
{ .name = "default", { .name = "default",
@ -152,8 +149,7 @@ AVFilter avfilter_af_volumedetect = {
}, },
.outputs = (const AVFilterPad[]) { .outputs = (const AVFilterPad[]) {
{ .name = "default", { .name = "default",
.type = AVMEDIA_TYPE_AUDIO, .type = AVMEDIA_TYPE_AUDIO, },
.request_frame = request_frame, },
{ .name = NULL } { .name = NULL }
}, },
}; };