mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-05 06:40:03 +00:00
lavfi/setfield: add "progressive" option
Add "prog" parameter value, and deprecate numeric values. Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
This commit is contained in:
parent
9849515214
commit
c97201dd29
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user