You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +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:
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;
|
||||
|
Reference in New Issue
Block a user