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.
pull/59/head
Anton Khirnov 13 years ago
parent a508e7a1ff
commit bb7431f4fc
  1. 4
      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,

Loading…
Cancel
Save