56 #define OFFSET(x) offsetof(InterlaceContext, x)
57 #define V AV_OPT_FLAG_VIDEO_PARAM
59 {
"scan",
"scanning mode",
OFFSET(scan),
61 {
"tff",
"top field first", 0,
63 {
"bff",
"bottom field first", 0,
65 {
"lowpass",
"enable vertical low-pass filter",
OFFSET(
lowpass),
106 "the resulting video will be aliased rather than interlaced.\n");
109 outlink->
w = inlink->
w;
110 outlink->
h = inlink->
h;
133 int lines = (plane == 1 || plane == 2) ?
FF_CEIL_RSHIFT(inlink->
h, vsub) : inlink->
h;
146 int srcp_linesize = src_frame->
linesize[plane] * 2;
147 int dstp_linesize = dst_frame->
linesize[plane] * 2;
148 for (j = lines; j > 0; j--) {
155 for (i = 0; i < linesize; i++) {
159 dstp[i] = (1 + srcp[i] + srcp[i] + srcp_above[i] + srcp_below[i]) >> 2;
161 dstp += dstp_linesize;
162 srcp += srcp_linesize;
166 srcp, src_frame->
linesize[plane] * 2,
190 "video is already interlaced, adjusting framerate only\n");
244 .priv_class = &interlace_class,