From bb7431f4fc44553fc0a52a69b57d220d174177d4 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 3 Jun 2012 11:35:38 +0200 Subject: avconv: check output stream recording time before each frame returned from filters There may be multiple frames returned, so with just one check we can write more than requested to the output. --- avconv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'avconv.c') diff --git a/avconv.c b/avconv.c index c06b4971c8..3cbdfab143 100644 --- a/avconv.c +++ b/avconv.c @@ -1668,7 +1668,7 @@ static int poll_filters(void) OutputFile *of = output_files[ost->file_index]; int ret = 0; - if (!ost->filter || ost->is_past_recording_time) + if (!ost->filter) continue; if (!ost->filtered_frame && !(ost->filtered_frame = avcodec_alloc_frame())) { @@ -1677,7 +1677,7 @@ static int poll_filters(void) avcodec_get_frame_defaults(ost->filtered_frame); filtered_frame = ost->filtered_frame; - while (ret >= 0) { + while (ret >= 0 && !ost->is_past_recording_time) { if (ost->enc->type == AVMEDIA_TYPE_AUDIO && !(ost->enc->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE)) ret = av_buffersink_read_samples(ost->filter->filter, &picref, -- cgit v1.2.3