summaryrefslogtreecommitdiff
path: root/libavfilter/vf_separatefields.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavfilter/vf_separatefields.c')
-rw-r--r--libavfilter/vf_separatefields.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libavfilter/vf_separatefields.c b/libavfilter/vf_separatefields.c
index 7db64c5479..814ea52e21 100644
--- a/libavfilter/vf_separatefields.c
+++ b/libavfilter/vf_separatefields.c
@@ -71,13 +71,14 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpicref)
inpicref->height = outlink->h;
inpicref->interlaced_frame = 0;
+ inpicref->flags &= ~AV_FRAME_FLAG_INTERLACED;
if (!s->second) {
goto clone;
} else {
AVFrame *second = s->second;
- extract_field(second, s->nb_planes, second->top_field_first);
+ extract_field(second, s->nb_planes, !!(second->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST));
if (second->pts != AV_NOPTS_VALUE &&
inpicref->pts != AV_NOPTS_VALUE)
@@ -94,7 +95,7 @@ clone:
return AVERROR(ENOMEM);
}
- extract_field(inpicref, s->nb_planes, !inpicref->top_field_first);
+ extract_field(inpicref, s->nb_planes, !(inpicref->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST));
if (inpicref->pts != AV_NOPTS_VALUE)
inpicref->pts *= 2;
@@ -110,7 +111,7 @@ static int flush_frame(AVFilterLink *outlink, int64_t pts, int64_t *out_pts)
if (s->second) {
*out_pts = s->second->pts += pts;
- extract_field(s->second, s->nb_planes, s->second->top_field_first);
+ extract_field(s->second, s->nb_planes, !!(s->second->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST));
ret = ff_filter_frame(outlink, s->second);
s->second = NULL;
}