summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2012-06-03 11:35:38 +0200
committerAnton Khirnov <anton@khirnov.net>2012-06-04 14:18:34 +0200
commitbb7431f4fc44553fc0a52a69b57d220d174177d4 (patch)
tree21eac17d9095af1562149f985faa492943876aa0
parenta508e7a1ff3c2d3c63f3ba803a404c4acef6c149 (diff)
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.
-rw-r--r--avconv.c4
1 files changed, 2 insertions, 2 deletions
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,