mirror of
https://git.videolan.org/git/ffmpeg.git
synced 2024-09-09 01:07:01 +02:00
ffmpeg: probe buffersinks once more after EOF.
Reap buffers stored in the buffer sinks even when the avfilter_graph_request_oldest() loop only returns EOF. avfilter_graph_request_oldest() can cause frames to arrive to the sinks even when it returns EOF.
This commit is contained in:
parent
5e99df019a
commit
bf8ce5a5c3
6
ffmpeg.c
6
ffmpeg.c
@ -1928,7 +1928,7 @@ static int poll_filters(void)
|
||||
AVFilterBufferRef *picref;
|
||||
AVFrame *filtered_frame = NULL;
|
||||
int i, ret, ret_all;
|
||||
unsigned nb_success, nb_eof;
|
||||
unsigned nb_success = 1, av_uninit(nb_eof);
|
||||
int64_t frame_pts;
|
||||
|
||||
while (1) {
|
||||
@ -2001,6 +2001,8 @@ static int poll_filters(void)
|
||||
avfilter_unref_buffer(picref);
|
||||
}
|
||||
}
|
||||
if (!nb_success) /* from last round */
|
||||
break;
|
||||
/* Request frames through all the graphs */
|
||||
ret_all = nb_success = nb_eof = 0;
|
||||
for (i = 0; i < nb_filtergraphs; i++) {
|
||||
@ -2017,8 +2019,6 @@ static int poll_filters(void)
|
||||
ret_all = ret;
|
||||
}
|
||||
}
|
||||
if (!nb_success)
|
||||
break;
|
||||
/* Try again if anything succeeded */
|
||||
}
|
||||
return nb_eof == nb_filtergraphs ? AVERROR_EOF : ret_all;
|
||||
|
Loading…
Reference in New Issue
Block a user