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.
This commit is contained in:
parent
a508e7a1ff
commit
bb7431f4fc
1 changed files with 2 additions and 2 deletions
4
avconv.c
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…
Add table
Add a link
Reference in a new issue