Module: libav Branch: master Commit: 394a0267abd6a292932f858949449b5cd6f8efda
Author: Robert Nagy <[email protected]> Committer: Anton Khirnov <[email protected]> Date: Mon May 14 14:25:25 2012 +0200 yadif: Flush filter on eof. Signed-off-by: Anton Khirnov <[email protected]> --- libavfilter/vf_yadif.c | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-) diff --git a/libavfilter/vf_yadif.c b/libavfilter/vf_yadif.c index fac0e5b..1cecdd9 100644 --- a/libavfilter/vf_yadif.c +++ b/libavfilter/vf_yadif.c @@ -61,6 +61,7 @@ typedef struct { int w, int prefs, int mrefs, int parity, int mode); const AVPixFmtDescriptor *csp; + int eof; } YADIFContext; #define CHECK(j)\ @@ -304,8 +305,21 @@ static int request_frame(AVFilterLink *link) do { int ret; - if ((ret = avfilter_request_frame(link->src->inputs[0]))) + if (yadif->eof) + return AVERROR_EOF; + + ret = avfilter_request_frame(link->src->inputs[0]); + + if (ret == AVERROR_EOF && yadif->next) { + AVFilterBufferRef *next = avfilter_ref_buffer(yadif->next, AV_PERM_READ); + next->pts = yadif->next->pts * 2 - yadif->cur->pts; + + start_frame(link->src->inputs[0], next); + end_frame(link->src->inputs[0]); + yadif->eof = 1; + } else if (ret < 0) { return ret; + } } while (!yadif->cur); return 0; _______________________________________________ libav-commits mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-commits
