Commit a87e85fa authored by Michael Niedermayer's avatar Michael Niedermayer

Merge remote-tracking branch 'ubitux/shorthand-cleanup'

* ubitux/shorthand-cleanup:
  lavfi/setfield: switch to an AVOptions-based system.
  lavfi/asettb: switch to an AVOptions-based system.
  lavfi/aselect: switch to an AVOptions-based system.
  lavfi/sine: switch to an AVOptions-based system.
  lavfi/deshake: switch to an AVOptions-based system.
  lavfi/tinterlace: switch to an AVOptions-based system.
  lavfi/tile: switch to an AVOptions-based system.
  lavfi/concat: switch to an AVOptions-based system.
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents 0724b4a1 77add967
......@@ -1688,11 +1688,7 @@ Generate an audio signal made of a sine wave with amplitude 1/8.
The audio signal is bit-exact.
It accepts a list of options in the form of @var{key}=@var{value} pairs
separated by ":". If the option name is omitted, the first option is the
frequency and the second option is the beep factor.
The supported options are:
The filter accepts the following options:
@table @option
......@@ -2529,16 +2525,14 @@ Attempt to fix small changes in horizontal and/or vertical shift. This
filter helps remove camera shake from hand-holding a camera, bumping a
tripod, moving on a vehicle, etc.
The filter accepts parameters as a list of @var{key}=@var{value}
pairs, separated by ":". If the key of the first options is omitted,
the arguments are interpreted according to the syntax
@var{x}:@var{y}:@var{w}:@var{h}:@var{rx}:@var{ry}:@var{edge}:@var{blocksize}:@var{contrast}:@var{search}:@var{filename}:@var{opencl}.
A description of the accepted parameters follows.
The filter accepts the following options:
@table @option
@item x, y, w, h
@item x
@item y
@item w
@item h
Specify a rectangular area where to limit the search for motion
vectors.
If desired the search for motion vectors can be limited to a
......@@ -2556,7 +2550,8 @@ without specifying the bounding box for the motion vector search.
Default - search the whole frame.
@item rx, ry
@item rx
@item ry
Specify the maximum extent of movement in x and y directions in the
range 0-64 pixels. Default 16.
......@@ -5062,9 +5057,12 @@ output frames. It does not change the input frame, but only sets the
corresponding property, which affects how the frame is treated by
following filters (e.g. @code{fieldorder} or @code{yadif}).
This filter accepts a single option @option{mode}, which can be
specified either by setting @code{mode=VALUE} or setting the value
alone. Available values are:
The filter accepts the following options:
@table @option
@item mode
Available values are:
@table @samp
@item auto
......@@ -5079,6 +5077,7 @@ Mark the frame as top-field-first.
@item prog
Mark the frame as progressive.
@end table
@end table
@section showinfo
......@@ -5414,8 +5413,7 @@ ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
Tile several successive frames together.
It accepts a list of options in the form of @var{key}=@var{value} pairs
separated by ":". A description of the accepted options follows.
The filter accepts the following options:
@table @option
......@@ -5423,6 +5421,11 @@ separated by ":". A description of the accepted options follows.
Set the grid size (i.e. the number of lines and columns) in the form
"@var{w}x@var{h}".
@item nb_frames
Set the maximum number of frames to render in the given area. It must be less
than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
the area will be used.
@item margin
Set the outer border margin in pixels.
......@@ -5431,19 +5434,13 @@ Set the inner border thickness (i.e. the number of pixels between frames). For
more advanced padding options (such as having different values for the edges),
refer to the pad video filter.
@item nb_frames
Set the maximum number of frames to render in the given area. It must be less
than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
the area will be used.
@end table
Alternatively, the options can be specified as a flat string:
@var{layout}[:@var{nb_frames}[:@var{margin}[:@var{padding}]]]
@subsection Examples
For example, produce 8x8 PNG tiles of all keyframes (@option{-skip_frame
nokey}) in a movie:
@itemize
@item
Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
@example
ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
@end example
......@@ -5451,12 +5448,14 @@ The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
duplicating each output frame to accomodate the originally detected frame
rate.
Another example to display @code{5} pictures in an area of @code{3x2} frames,
@item
Display @code{5} pictures in an area of @code{3x2} frames,
with @code{7} pixels between them, and @code{2} pixels of initial margin, using
mixed flat and named options:
@example
tile=3x2:nb_frames=5:padding=7:margin=2
@end example
@end itemize
@section tinterlace
......@@ -5465,13 +5464,7 @@ Perform various types of temporal field interlacing.
Frames are counted starting from 1, so the first input frame is
considered odd.
This filter accepts options in the form of @var{key}=@var{value} pairs
separated by ":".
Alternatively, the @var{mode} option can be specified as a value alone,
optionally followed by a ":" and further ":" separated @var{key}=@var{value}
pairs.
A description of the accepted options follows.
The filter accepts the following options:
@table @option
......@@ -6387,7 +6380,7 @@ This filter accepts the following options:
@table @option
@item expr
@item expr, e
An expression, which is evaluated for each input frame. If the expression is
evaluated to a non-zero value, the frame is selected and passed to the output,
otherwise it is discarded.
......@@ -6884,7 +6877,7 @@ This filter accepts the following options:
@table @option
@item expr
@item expr, tb
The expression which is evaluated into the output timebase.
@end table
......@@ -6937,7 +6930,8 @@ The filter works on segments of synchronized video and audio streams. All
segments must have the same number of streams of each type, and that will
also be the number of streams at output.
The filter accepts the following named parameters:
The filter accepts the following options:
@table @option
@item n
......
......@@ -210,8 +210,6 @@ static const AVFilterPad sine_outputs[] = {
{ NULL }
};
static const char *const shorthand[] = { "frequency", "beep_factor", NULL };
AVFilter avfilter_asrc_sine = {
.name = "sine",
.description = NULL_IF_CONFIG_SMALL("Generate sine wave audio signal."),
......@@ -222,5 +220,4 @@ AVFilter avfilter_asrc_sine = {
.inputs = NULL,
.outputs = sine_outputs,
.priv_class = &sine_class,
.shorthand = shorthand,
};
......@@ -409,8 +409,6 @@ static av_cold void uninit(AVFilterContext *ctx)
av_free(cat->in);
}
static const char *const shorthand[] = { NULL };
AVFilter avfilter_avf_concat = {
.name = "concat",
.description = NULL_IF_CONFIG_SMALL("Concatenate audio and video streams."),
......@@ -421,5 +419,4 @@ AVFilter avfilter_avf_concat = {
.inputs = NULL,
.outputs = NULL,
.priv_class = &concat_class,
.shorthand = shorthand,
};
......@@ -697,11 +697,13 @@ int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque
!strcmp(filter->filter->name, "channelsplit") ||
!strcmp(filter->filter->name, "color" ) ||
!strcmp(filter->filter->name, "colormatrix") ||
!strcmp(filter->filter->name, "concat" ) ||
!strcmp(filter->filter->name, "crop" ) ||
!strcmp(filter->filter->name, "cropdetect") ||
!strcmp(filter->filter->name, "curves" ) ||
!strcmp(filter->filter->name, "decimate" ) ||
!strcmp(filter->filter->name, "delogo" ) ||
!strcmp(filter->filter->name, "deshake" ) ||
!strcmp(filter->filter->name, "drawbox" ) ||
!strcmp(filter->filter->name, "drawtext" ) ||
!strcmp(filter->filter->name, "ebur128" ) ||
......@@ -748,19 +750,25 @@ int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque
!strcmp(filter->filter->name, "rgbtestsrc") ||
!strcmp(filter->filter->name, "setpts" ) ||
!strcmp(filter->filter->name, "settb" ) ||
!strcmp(filter->filter->name, "asettb" ) ||
!strcmp(filter->filter->name, "setfield") ||
!strcmp(filter->filter->name, "showspectrum") ||
!strcmp(filter->filter->name, "silencedetect") ||
!strcmp(filter->filter->name, "sine" ) ||
!strcmp(filter->filter->name, "smartblur") ||
!strcmp(filter->filter->name, "split" ) ||
!strcmp(filter->filter->name, "stereo3d" ) ||
!strcmp(filter->filter->name, "subtitles") ||
!strcmp(filter->filter->name, "testsrc" ) ||
!strcmp(filter->filter->name, "thumbnail") ||
!strcmp(filter->filter->name, "tile") ||
!strcmp(filter->filter->name, "tinterlace") ||
!strcmp(filter->filter->name, "transpose") ||
!strcmp(filter->filter->name, "treble" ) ||
!strcmp(filter->filter->name, "unsharp" ) ||
// !strcmp(filter->filter->name, "scale" ) ||
!strcmp(filter->filter->name, "select") ||
!strcmp(filter->filter->name, "aselect" ) ||
!strcmp(filter->filter->name, "volume" ) ||
!strcmp(filter->filter->name, "yadif" ) ||
0
......
......@@ -388,8 +388,6 @@ static int query_formats(AVFilterContext *ctx)
return 0;
}
static const char *const shorthand[] = { "expr", NULL };
#if CONFIG_ASELECT_FILTER
#define OFFSET(x) offsetof(SelectContext, x)
......@@ -445,7 +443,6 @@ AVFilter avfilter_af_aselect = {
.inputs = avfilter_af_aselect_inputs,
.outputs = avfilter_af_aselect_outputs,
.priv_class = &aselect_class,
.shorthand = shorthand,
};
#endif /* CONFIG_ASELECT_FILTER */
......
......@@ -60,7 +60,9 @@ typedef struct {
#define OFFSET(x) offsetof(SetTBContext, x)
#define DEFINE_OPTIONS(filt_name, filt_type) \
static const AVOption filt_name##_options[] = { \
{ "tb", "Expression determining the output timebase", OFFSET(tb_expr), AV_OPT_TYPE_STRING, {.str="intb"}, \
{ "expr", "set expression determining the output timebase", OFFSET(tb_expr), AV_OPT_TYPE_STRING, {.str="intb"}, \
.flags=AV_OPT_FLAG_##filt_type##_PARAM|AV_OPT_FLAG_FILTERING_PARAM }, \
{ "tb", "set expression determining the output timebase", OFFSET(tb_expr), AV_OPT_TYPE_STRING, {.str="intb"}, \
.flags=AV_OPT_FLAG_##filt_type##_PARAM|AV_OPT_FLAG_FILTERING_PARAM }, \
{ NULL } \
}
......@@ -118,8 +120,6 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
return ff_filter_frame(outlink, frame);
}
static const char *const shorthand[] = { "tb", NULL };
#if CONFIG_SETTB_FILTER
DEFINE_OPTIONS(settb, VIDEO);
......@@ -188,6 +188,5 @@ AVFilter avfilter_af_asettb = {
.inputs = avfilter_af_asettb_inputs,
.outputs = avfilter_af_asettb_outputs,
.priv_class = &asettb_class,
.shorthand = shorthand,
};
#endif
......@@ -560,12 +560,6 @@ static const AVFilterPad deshake_outputs[] = {
{ NULL }
};
static const char *const shorthand[] = {
"x", "y", "w", "h", "rx", "ry", "edge",
"blocksize", "contrast", "search", "filename",
NULL
};
AVFilter avfilter_vf_deshake = {
.name = "deshake",
.description = NULL_IF_CONFIG_SMALL("Stabilize shaky video."),
......@@ -576,5 +570,4 @@ AVFilter avfilter_vf_deshake = {
.inputs = deshake_inputs,
.outputs = deshake_outputs,
.priv_class = &deshake_class,
.shorthand = shorthand,
};
......@@ -85,8 +85,6 @@ static const AVFilterPad setfield_outputs[] = {
{ NULL }
};
static const char *const shorthand[] = { "mode", NULL };
AVFilter avfilter_vf_setfield = {
.name = "setfield",
.description = NULL_IF_CONFIG_SMALL("Force field for the output video frame."),
......@@ -94,5 +92,4 @@ AVFilter avfilter_vf_setfield = {
.inputs = setfield_inputs,
.outputs = setfield_outputs,
.priv_class = &setfield_class,
.shorthand = shorthand,
};
......@@ -51,12 +51,12 @@ typedef struct {
static const AVOption tile_options[] = {
{ "layout", "set grid size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE,
{.str = "6x5"}, 0, 0, FLAGS },
{ "nb_frames", "set maximum number of frame to render", OFFSET(nb_frames),
AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, FLAGS },
{ "margin", "set outer border margin in pixels", OFFSET(margin),
AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1024, FLAGS },
{ "padding", "set inner border thickness in pixels", OFFSET(padding),
AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1024, FLAGS },
{ "nb_frames", "set maximum number of frame to render", OFFSET(nb_frames),
AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, FLAGS },
{NULL},
};
......@@ -230,9 +230,6 @@ static const AVFilterPad tile_outputs[] = {
{ NULL }
};
static const char *const shorthand[] =
{ "layout", "nb_frames", "margin", "padding", NULL };
AVFilter avfilter_vf_tile = {
.name = "tile",
.description = NULL_IF_CONFIG_SMALL("Tile several successive frames together."),
......@@ -242,5 +239,4 @@ AVFilter avfilter_vf_tile = {
.inputs = tile_inputs,
.outputs = tile_outputs,
.priv_class = &tile_class,
.shorthand = shorthand,
};
......@@ -385,8 +385,6 @@ static const AVFilterPad tinterlace_outputs[] = {
{ NULL }
};
static const char *const shorthand[] = { "mode", NULL };
AVFilter avfilter_vf_tinterlace = {
.name = "tinterlace",
.description = NULL_IF_CONFIG_SMALL("Perform temporal field interlacing."),
......@@ -396,5 +394,4 @@ AVFilter avfilter_vf_tinterlace = {
.inputs = tinterlace_inputs,
.outputs = tinterlace_outputs,
.priv_class = &tinterlace_class,
.shorthand = shorthand,
};
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