On Sat, 8 Apr 2017, Marton Balint wrote:
Fixes ticket #6285. Signed-off-by: Marton Balint <c...@passwd.hu> --- libavfilter/vf_framerate.c | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-)
Applied this as well.
@@ -695,7 +689,23 @@ static int request_frame(AVFilterLink *outlink) } set_work_frame_pts(ctx); - return process_work_frame(ctx, 0); + ret = process_work_frame(ctx, 0); + if (ret < 0) + return ret; + if (ret) + return ff_filter_frame(ctx->outputs[0], s->work); + +request: + ff_dlog(ctx, "request_frame() call source's request_frame()\n"); + ret = ff_request_frame(ctx->inputs[0]); + if (ret < 0 && (ret != AVERROR_EOF)) { + ff_dlog(ctx, "request_frame() source's request_frame() returned error:%d\n", ret); + return ret; + } else if (ret == AVERROR_EOF) { + s->flush = 1; + } + ff_dlog(ctx, "request_frame() source's request_frame() returned:%d\n", ret); + return 0; }
Note that the above code which I moved returns 0 if ff_request_frame returns AVERROR_EOF. As far as I see, this can only happen a few times, not infinitely, so I am not sure if this is an error or not, so I kept is as it was before.
Regards, Marton _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel