mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-29 22:00:58 +02:00
lavfi/tile: switch to an AVOptions-based system.
This commit is contained in:
parent
35a27402ad
commit
64a103138c
@ -5414,8 +5414,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 +5422,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 +5435,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:
|
||||
@subsection Examples
|
||||
|
||||
@var{layout}[:@var{nb_frames}[:@var{margin}[:@var{padding}]]]
|
||||
|
||||
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 +5449,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
|
||||
|
||||
|
@ -757,6 +757,7 @@ int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque
|
||||
!strcmp(filter->filter->name, "subtitles") ||
|
||||
!strcmp(filter->filter->name, "testsrc" ) ||
|
||||
!strcmp(filter->filter->name, "thumbnail") ||
|
||||
!strcmp(filter->filter->name, "tile") ||
|
||||
!strcmp(filter->filter->name, "transpose") ||
|
||||
!strcmp(filter->filter->name, "treble" ) ||
|
||||
!strcmp(filter->filter->name, "unsharp" ) ||
|
||||
|
@ -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,
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user