Commit c97201dd authored by Tim Nicholson's avatar Tim Nicholson Committed by Stefano Sabatini

lavfi/setfield: add "progressive" option

Add "prog" parameter value, and deprecate numeric values.
Signed-off-by: 's avatarStefano Sabatini <stefasab@gmail.com>
parent 98495152
......@@ -2534,19 +2534,21 @@ Force field for the output video frame.
The @code{setfield} filter marks the interlace type field for the
output frames. It does not change the input frame, but only sets the
corresponding property, which affects how the frame is treated by
followig filters (e.g. @code{fieldorder} or @code{yadif}).
following filters (e.g. @code{fieldorder} or @code{yadif}).
It accepts a parameter representing an integer or a string, which can
assume the following values:
It accepts a string parameter, which can assume the following values:
@table @samp
@item -1, auto
@item auto
Keep the same field property.
@item 0, bff
@item bff
Mark the frame as bottom-field-first.
@item 1, tff
@item tff
Mark the frame as top-field-first.
@item prog
Mark the frame as progressive.
@end table
@section setpts
......
......@@ -30,7 +30,7 @@
#define LIBAVFILTER_VERSION_MAJOR 2
#define LIBAVFILTER_VERSION_MINOR 71
#define LIBAVFILTER_VERSION_MICRO 101
#define LIBAVFILTER_VERSION_MICRO 102
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \
......
......@@ -40,21 +40,24 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
if (sscanf(args, "%d%c", &setfield->top_field_first, &c) != 1) {
if (!strcmp("tff", args)) setfield->top_field_first = 1;
else if (!strcmp("bff", args)) setfield->top_field_first = 0;
else if (!strcmp("prog", args)) setfield->top_field_first = 2;
else if (!strcmp("auto", args)) setfield->top_field_first = -1;
else {
av_log(ctx, AV_LOG_ERROR, "Invalid argument '%s'\n", args);
return AVERROR(EINVAL);
}
} else {
if (setfield->top_field_first < -1 || setfield->top_field_first > 1) {
av_log(ctx, AV_LOG_ERROR,
"Provided integer value %d must be included between -1 and +1\n",
setfield->top_field_first);
return AVERROR(EINVAL);
}
av_log(ctx, AV_LOG_WARNING,
"Using -1/0/1 is deprecated, use auto/tff/bff/prog\n", args);
}
}
if (setfield->top_field_first < -1 || setfield->top_field_first > 1) {
av_log(ctx, AV_LOG_ERROR,
"Provided integer value %d must be included between -1 and +1\n",
setfield->top_field_first);
return AVERROR(EINVAL);
}
return 0;
}
......@@ -63,7 +66,9 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
SetFieldContext *setfield = inlink->dst->priv;
AVFilterBufferRef *outpicref = avfilter_ref_buffer(inpicref, ~0);
if (setfield->top_field_first != -1) {
if (setfield->top_field_first == 2) {
outpicref->video->interlaced = 0;
} else if (setfield->top_field_first != -1) {
outpicref->video->interlaced = 1;
outpicref->video->top_field_first = setfield->top_field_first;
}
......
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