Merge remote-tracking branch 'ubitux/shorthand-cleanup'
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 10 Apr 2013 22:37:21 +0000 (00:37 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 10 Apr 2013 22:37:32 +0000 (00:37 +0200)
* ubitux/shorthand-cleanup:
  lavfi/mptestsrc: switch to an AVOptions-based system.
  lavfi/mandelbrot: switch to an AVOptions-based system.
  lavfi/life: switch to an AVOptions-based system.
  lavfi/cellauto: switch to an AVOptions-based system.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
doc/filters.texi
libavfilter/avfilter.c
libavfilter/vf_decimate.c
libavfilter/vf_transpose.c

index f68b46a..07cfeaa 100644 (file)
@@ -2452,11 +2452,6 @@ The main use of this filter is for very-low-bitrate encoding
 (e.g. streaming over dialup modem), but it could in theory be used for
 fixing movies that were inverse-telecined incorrectly.
 
-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:
-@option{max}:@option{hi}:@option{lo}:@option{frac}.
-
 A description of the accepted options follows.
 
 @table @option
@@ -5545,17 +5540,15 @@ Vertical low-pass filtering can only be enabled for @option{mode}
 
 Transpose rows with columns in the input video and optionally flip it.
 
-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{dir}:@var{passthrough}.
+This filter accepts the following options:
 
 @table @option
+
 @item dir
-Specify the transposition direction. Can assume the following values:
+The direction of the transpose.
 
 @table @samp
-@item 0, 4
+@item 0, 4, cclock_flip
 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
 @example
 L.R     L.l
@@ -5563,7 +5556,7 @@ L.R     L.l
 l.r     R.r
 @end example
 
-@item 1, 5
+@item 1, 5, clock
 Rotate by 90 degrees clockwise, that is:
 @example
 L.R     l.L
@@ -5571,7 +5564,7 @@ L.R     l.L
 l.r     r.R
 @end example
 
-@item 2, 6
+@item 2, 6, cclock
 Rotate by 90 degrees counterclockwise, that is:
 @example
 L.R     R.r
@@ -5579,7 +5572,7 @@ L.R     R.r
 l.r     L.l
 @end example
 
-@item 3, 7
+@item 3, 7, clock_flip
 Rotate by 90 degrees clockwise and vertically flip, that is:
 @example
 L.R     r.R
index 6746dad..935c6fa 100644 (file)
@@ -665,6 +665,7 @@ int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque
         !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,  "drawbox"   ) ||
         !strcmp(filter->filter->name,  "drawtext"  ) ||
@@ -702,6 +703,7 @@ int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque
         !strcmp(filter->filter->name, "smartblur") ||
         !strcmp(filter->filter->name, "subtitles") ||
         !strcmp(filter->filter->name, "thumbnail") ||
+        !strcmp(filter->filter->name, "transpose") ||
 //         !strcmp(filter->filter->name, "scale"      ) ||
         !strcmp(filter->filter->name, "select") ||
         0
index 2410344..182f48b 100644 (file)
@@ -244,8 +244,6 @@ static const AVFilterPad decimate_outputs[] = {
     { NULL }
 };
 
-static const char *const shorthand[] = { "max", "hi", "lo", "frac", NULL };
-
 AVFilter avfilter_vf_decimate = {
     .name        = "decimate",
     .description = NULL_IF_CONFIG_SMALL("Remove near-duplicate frames."),
@@ -257,5 +255,4 @@ AVFilter avfilter_vf_decimate = {
     .inputs        = decimate_inputs,
     .outputs       = decimate_outputs,
     .priv_class    = &decimate_class,
-    .shorthand     = shorthand,
 };
index ed87017..2b1fa1f 100644 (file)
@@ -32,6 +32,7 @@
 #include "libavutil/pixdesc.h"
 #include "libavutil/imgutils.h"
 #include "libavutil/internal.h"
+#include "libavutil/opt.h"
 #include "avfilter.h"
 #include "formats.h"
 #include "internal.h"
@@ -43,36 +44,22 @@ typedef enum {
     TRANSPOSE_PT_TYPE_PORTRAIT,
 } PassthroughType;
 
+enum TransposeDir {
+    TRANSPOSE_CCLOCK_FLIP,
+    TRANSPOSE_CLOCK,
+    TRANSPOSE_CCLOCK,
+    TRANSPOSE_CLOCK_FLIP,
+};
+
 typedef struct {
     const AVClass *class;
     int hsub, vsub;
     int pixsteps[4];
 
-    /* 0    Rotate by 90 degrees counterclockwise and vflip. */
-    /* 1    Rotate by 90 degrees clockwise.                  */
-    /* 2    Rotate by 90 degrees counterclockwise.           */
-    /* 3    Rotate by 90 degrees clockwise and vflip.        */
-    int dir;
     PassthroughType passthrough; ///< landscape passthrough mode enabled
+    enum TransposeDir dir;
 } TransContext;
 
-#define OFFSET(x) offsetof(TransContext, x)
-#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
-
-static const AVOption transpose_options[] = {
-    { "dir", "set transpose direction", OFFSET(dir), AV_OPT_TYPE_INT, {.i64=0},  0, 7, FLAGS },
-
-    { "passthrough", "do not apply transposition if the input matches the specified geometry",
-      OFFSET(passthrough), AV_OPT_TYPE_INT, {.i64=TRANSPOSE_PT_TYPE_NONE},  0, INT_MAX, FLAGS, "passthrough" },
-    { "none",      "always apply transposition",   0, AV_OPT_TYPE_CONST, {.i64=TRANSPOSE_PT_TYPE_NONE},      INT_MIN, INT_MAX, FLAGS, "passthrough" },
-    { "portrait",  "preserve portrait geometry",   0, AV_OPT_TYPE_CONST, {.i64=TRANSPOSE_PT_TYPE_PORTRAIT},  INT_MIN, INT_MAX, FLAGS, "passthrough" },
-    { "landscape", "preserve landscape geometry",  0, AV_OPT_TYPE_CONST, {.i64=TRANSPOSE_PT_TYPE_LANDSCAPE}, INT_MIN, INT_MAX, FLAGS, "passthrough" },
-
-    { NULL },
-};
-
-AVFILTER_DEFINE_CLASS(transpose);
-
 static int query_formats(AVFilterContext *ctx)
 {
     AVFilterFormats *pix_fmts = NULL;
@@ -236,6 +223,28 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
     return ff_filter_frame(outlink, out);
 }
 
+#define OFFSET(x) offsetof(TransContext, x)
+#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
+
+static const AVOption transpose_options[] = {
+    { "dir", "Transpose direction", OFFSET(dir), AV_OPT_TYPE_INT, { .i64 = TRANSPOSE_CCLOCK_FLIP },
+        TRANSPOSE_CCLOCK_FLIP, TRANSPOSE_CLOCK_FLIP, FLAGS, "dir" },
+        { "cclock_flip", "counter-clockwise with vertical flip", 0, AV_OPT_TYPE_CONST, { .i64 = TRANSPOSE_CCLOCK_FLIP }, .unit = "dir" },
+        { "clock",       "clockwise",                            0, AV_OPT_TYPE_CONST, { .i64 = TRANSPOSE_CLOCK       }, .unit = "dir" },
+        { "cclock",      "counter-clockwise",                    0, AV_OPT_TYPE_CONST, { .i64 = TRANSPOSE_CCLOCK      }, .unit = "dir" },
+        { "clock_flip",  "clockwise with vertical flip",         0, AV_OPT_TYPE_CONST, { .i64 = TRANSPOSE_CLOCK_FLIP  }, .unit = "dir" },
+
+    { "passthrough", "do not apply transposition if the input matches the specified geometry",
+      OFFSET(passthrough), AV_OPT_TYPE_INT, {.i64=TRANSPOSE_PT_TYPE_NONE},  0, INT_MAX, FLAGS, "passthrough" },
+    { "none",      "always apply transposition",   0, AV_OPT_TYPE_CONST, {.i64=TRANSPOSE_PT_TYPE_NONE},      INT_MIN, INT_MAX, FLAGS, "passthrough" },
+    { "portrait",  "preserve portrait geometry",   0, AV_OPT_TYPE_CONST, {.i64=TRANSPOSE_PT_TYPE_PORTRAIT},  INT_MIN, INT_MAX, FLAGS, "passthrough" },
+    { "landscape", "preserve landscape geometry",  0, AV_OPT_TYPE_CONST, {.i64=TRANSPOSE_PT_TYPE_LANDSCAPE}, INT_MIN, INT_MAX, FLAGS, "passthrough" },
+
+    { NULL },
+};
+
+AVFILTER_DEFINE_CLASS(transpose);
+
 static const AVFilterPad avfilter_vf_transpose_inputs[] = {
     {
         .name        = "default",
@@ -255,18 +264,15 @@ static const AVFilterPad avfilter_vf_transpose_outputs[] = {
     { NULL }
 };
 
-static const char *const shorthand[] = { "dir", "passthrough", NULL };
-
 AVFilter avfilter_vf_transpose = {
     .name      = "transpose",
     .description = NULL_IF_CONFIG_SMALL("Transpose input video."),
 
     .priv_size = sizeof(TransContext),
+    .priv_class = &transpose_class,
 
     .query_formats = query_formats,
 
     .inputs    = avfilter_vf_transpose_inputs,
     .outputs   = avfilter_vf_transpose_outputs,
-    .priv_class = &transpose_class,
-    .shorthand = shorthand,
 };