summaryrefslogtreecommitdiff
path: root/ffmpeg.c
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2012-07-17 18:02:33 +0200
committerNicolas George <nicolas.george@normalesup.org>2012-07-20 10:18:45 +0200
commitbf8ce5a5c382e85f6e7c0bb9d5e698a4c929b0b9 (patch)
tree5d8df18de14081c2d4a3e760fd5e89a3dfe1c03f /ffmpeg.c
parent5e99df019a850e9ffa96d73e72b8a47a93a61de8 (diff)
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.
Diffstat (limited to 'ffmpeg.c')
-rw-r--r--ffmpeg.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 9ef2b579ca..93e3f04b63 100644
--- a/ffmpeg.c
+++ b/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;