[FFmpeg-cvslog] lavfi/tile: switch to an AVOptions-based system.

Clément Bœsch git at videolan.org
Thu Apr 11 11:58:54 CEST 2013


ffmpeg | branch: master | Clément Bœsch <ubitux at gmail.com> | Wed Apr 10 23:15:06 2013 +0200| [64a103138c04c1155adb5868a0ae176be3550723] | committer: Clément Bœsch

lavfi/tile: switch to an AVOptions-based system.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=64a103138c04c1155adb5868a0ae176be3550723
---

 doc/filters.texi       |   26 +++++++++++++-------------
 libavfilter/avfilter.c |    1 +
 libavfilter/vf_tile.c  |    8 ++------
 3 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index 63ca00f..a0616bf 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -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 at var{h}".
 
+ at 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 at 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.
 
- at 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 at 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:
-
- at var{layout}[:@var{nb_frames}[:@var{margin}[:@var{padding}]]]
+ at subsection Examples
 
-For example, produce 8x8 PNG tiles of all keyframes (@option{-skip_frame
-nokey}) in a movie:
+ at itemize
+ at 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,
+ at 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
+ at end itemize
 
 @section tinterlace
 
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index 659aedd..de47b80 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -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"  ) ||
diff --git a/libavfilter/vf_tile.c b/libavfilter/vf_tile.c
index 64bf970..f92844b 100644
--- a/libavfilter/vf_tile.c
+++ b/libavfilter/vf_tile.c
@@ -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,
 };



More information about the ffmpeg-cvslog mailing list