#include "avfilter.h"
#include "filters.h"
#include "internal.h"
+#include "video.h"
typedef struct SeparateFieldsContext {
int nb_planes;
int ret;
inpicref->height = outlink->h;
+#if FF_API_INTERLACED_FRAME
+FF_DISABLE_DEPRECATION_WARNINGS
inpicref->interlaced_frame = 0;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
+ 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)
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;
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;
}
av_frame_free(&s->second);
}
-static const AVFilterPad separatefields_inputs[] = {
- {
- .name = "default",
- .type = AVMEDIA_TYPE_VIDEO,
- },
-};
-
static const AVFilterPad separatefields_outputs[] = {
{
.name = "default",
.priv_size = sizeof(SeparateFieldsContext),
.activate = activate,
.uninit = uninit,
- FILTER_INPUTS(separatefields_inputs),
+ FILTER_INPUTS(ff_video_default_filterpad),
FILTER_OUTPUTS(separatefields_outputs),
};