diff options
author | Anton Khirnov <[email protected]> | 2012-06-03 11:35:38 +0200 |
---|---|---|
committer | Anton Khirnov <[email protected]> | 2012-06-04 14:18:34 +0200 |
commit | bb7431f4fc44553fc0a52a69b57d220d174177d4 (patch) | |
tree | 21eac17d9095af1562149f985faa492943876aa0 /avconv.c | |
parent | a508e7a1ff3c2d3c63f3ba803a404c4acef6c149 (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.
Diffstat (limited to 'avconv.c')
-rw-r--r-- | avconv.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -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, |