diff options
author | Nicolas George <nicolas.george@normalesup.org> | 2012-07-17 18:02:33 +0200 |
---|---|---|
committer | Nicolas George <nicolas.george@normalesup.org> | 2012-07-20 10:18:45 +0200 |
commit | bf8ce5a5c382e85f6e7c0bb9d5e698a4c929b0b9 (patch) | |
tree | 5d8df18de14081c2d4a3e760fd5e89a3dfe1c03f | |
parent | 5e99df019a850e9ffa96d73e72b8a47a93a61de8 (diff) | |
download | ffmpeg-bf8ce5a5c382e85f6e7c0bb9d5e698a4c929b0b9.tar.gz |
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.
-rw-r--r-- | ffmpeg.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -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; |