diff options
author | Tim Nicholson <Tim.Nicholson@bbc.co.uk> | 2012-04-20 10:51:42 +0100 |
---|---|---|
committer | Stefano Sabatini <stefasab@gmail.com> | 2012-04-21 10:09:49 +0200 |
commit | c97201dd29d2762ae79cd09865793e5a1b74d4c0 (patch) | |
tree | 5124c68f04ad6edaad09169859c6d07c0b096259 | |
parent | 98495152145ce29cbb5147a50648df4e3ac1b468 (diff) | |
download | ffmpeg-c97201dd29d2762ae79cd09865793e5a1b74d4c0.tar.gz |
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.texi | 14 | ||||
-rw-r--r-- | libavfilter/version.h | 2 | ||||
-rw-r--r-- | libavfilter/vf_setfield.c | 21 |
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; } |