Commit 394a0267 authored by Robert Nagy's avatar Robert Nagy Committed by Anton Khirnov

yadif: Flush filter on eof.

Signed-off-by: default avatarAnton Khirnov <anton@khirnov.net>
parent 7dd56d41
...@@ -61,6 +61,7 @@ typedef struct { ...@@ -61,6 +61,7 @@ typedef struct {
int w, int prefs, int mrefs, int parity, int mode); int w, int prefs, int mrefs, int parity, int mode);
const AVPixFmtDescriptor *csp; const AVPixFmtDescriptor *csp;
int eof;
} YADIFContext; } YADIFContext;
#define CHECK(j)\ #define CHECK(j)\
...@@ -304,8 +305,21 @@ static int request_frame(AVFilterLink *link) ...@@ -304,8 +305,21 @@ static int request_frame(AVFilterLink *link)
do { do {
int ret; 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; return ret;
}
} while (!yadif->cur); } while (!yadif->cur);
return 0; return 0;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment