summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Nicholson <Tim.Nicholson@bbc.co.uk>2012-04-20 10:51:42 +0100
committerStefano Sabatini <stefasab@gmail.com>2012-04-21 10:09:49 +0200
commitc97201dd29d2762ae79cd09865793e5a1b74d4c0 (patch)
tree5124c68f04ad6edaad09169859c6d07c0b096259
parent98495152145ce29cbb5147a50648df4e3ac1b468 (diff)
lavfi/setfield: add "progressive" option
Add "prog" parameter value, and deprecate numeric values. Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
-rw-r--r--doc/filters.texi14
-rw-r--r--libavfilter/version.h2
-rw-r--r--libavfilter/vf_setfield.c21
3 files changed, 22 insertions, 15 deletions
diff --git a/doc/filters.texi b/doc/filters.texi
index 64335930ca..56299771a5 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -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
diff --git a/libavfilter/version.h b/libavfilter/version.h
index 7ff2c35ba6..361155fe33 100644
--- a/libavfilter/version.h
+++ b/libavfilter/version.h
@@ -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, \
diff --git a/libavfilter/vf_setfield.c b/libavfilter/vf_setfield.c
index bfb8006acf..6a9bf589f6 100644
--- a/libavfilter/vf_setfield.c
+++ b/libavfilter/vf_setfield.c
@@ -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;
}