lavfi/tile: switch to an AVOptions-based system.
authorClément Bœsch <ubitux@gmail.com>
Wed, 10 Apr 2013 21:15:06 +0000 (23:15 +0200)
committerClément Bœsch <ubitux@gmail.com>
Thu, 11 Apr 2013 09:51:47 +0000 (11:51 +0200)
doc/filters.texi
libavfilter/avfilter.c
libavfilter/vf_tile.c

index 63ca00f..a0616bf 100644 (file)
@@ -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:
-
-@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 +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
 
index 659aedd..de47b80 100644 (file)
@@ -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"  ) ||
index 64bf970..f92844b 100644 (file)
@@ -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,
 };