From 34610e11e7d597d747d9b92e961e17c23ac5b4e0 Mon Sep 17 00:00:00 2001 From: Clément Bœsch Date: Wed, 10 Apr 2013 22:26:06 +0200 Subject: lavfi/curves: switch to an AVOptions-based system. --- doc/filters.texi | 32 ++++++++++++++------------------ libavfilter/avfilter.c | 1 + libavfilter/vf_curves.c | 18 ++++++++---------- 3 files changed, 23 insertions(+), 28 deletions(-) diff --git a/doc/filters.texi b/doc/filters.texi index d5b7e68c8d..c94e5123ad 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -2369,30 +2369,15 @@ If there is no key point defined in @code{x=0}, the filter will automatically insert a @var{(0;0)} point. In the same way, if there is no key point defined in @code{x=1}, the filter will automatically insert a @var{(1;1)} point. -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 -curves[=@var{preset}]. - -A description of the accepted parameters follows. +The filter accepts the following options: @table @option -@item red, r -Set the key points for the red component. -@item green, g -Set the key points for the green component. -@item blue, b -Set the key points for the blue component. -@item all -Set the key points for all components. -Can be used in addition to the other key points component -options. In this case, the unset component(s) will fallback on this -@option{all} setting. @item preset Select one of the available color presets. This option can not be used in addition to the @option{r}, @option{g}, @option{b} parameters. Available presets are: @table @samp +@item none @item color_negative @item cross_process @item darker @@ -2404,7 +2389,18 @@ Available presets are: @item strong_contrast @item vintage @end table -Default is unset. +Default is @code{none}. +@item red, r +Set the key points for the red component. +@item green, g +Set the key points for the green component. +@item blue, b +Set the key points for the blue component. +@item all +Set the key points for all components. +Can be used in addition to the other key points component +options. In this case, the unset component(s) will fallback on this +@option{all} setting. @end table To avoid some filtergraph syntax conflicts, each key points list need to be diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 0d76b985ab..8643992a4b 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -662,6 +662,7 @@ int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque !strcmp(filter->filter->name, "colormatrix") || !strcmp(filter->filter->name, "crop" ) || !strcmp(filter->filter->name, "cropdetect") || + !strcmp(filter->filter->name, "curves" ) || !strcmp(filter->filter->name, "delogo" ) || !strcmp(filter->filter->name, "drawbox" ) || !strcmp(filter->filter->name, "drawtext" ) || diff --git a/libavfilter/vf_curves.c b/libavfilter/vf_curves.c index 1f4e733c3d..5cd3f52c18 100644 --- a/libavfilter/vf_curves.c +++ b/libavfilter/vf_curves.c @@ -59,14 +59,8 @@ typedef struct { #define OFFSET(x) offsetof(CurvesContext, x) #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM static const AVOption curves_options[] = { - { "red", "set red points coordinates", OFFSET(comp_points_str[0]), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, - { "r", "set red points coordinates", OFFSET(comp_points_str[0]), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, - { "green", "set green points coordinates", OFFSET(comp_points_str[1]), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, - { "g", "set green points coordinates", OFFSET(comp_points_str[1]), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, - { "blue", "set blue points coordinates", OFFSET(comp_points_str[2]), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, - { "b", "set blue points coordinates", OFFSET(comp_points_str[2]), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, - { "all", "set points coordinates for all components", OFFSET(comp_points_str_all),AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, { "preset", "select a color curves preset", OFFSET(preset), AV_OPT_TYPE_INT, {.i64=PRESET_NONE}, PRESET_NONE, NB_PRESETS-1, FLAGS, "preset_name" }, + { "none", NULL, 0, AV_OPT_TYPE_CONST, {.i64=PRESET_NONE}, INT_MIN, INT_MAX, FLAGS, "preset_name" }, { "color_negative", NULL, 0, AV_OPT_TYPE_CONST, {.i64=PRESET_COLOR_NEGATIVE}, INT_MIN, INT_MAX, FLAGS, "preset_name" }, { "cross_process", NULL, 0, AV_OPT_TYPE_CONST, {.i64=PRESET_CROSS_PROCESS}, INT_MIN, INT_MAX, FLAGS, "preset_name" }, { "darker", NULL, 0, AV_OPT_TYPE_CONST, {.i64=PRESET_DARKER}, INT_MIN, INT_MAX, FLAGS, "preset_name" }, @@ -77,6 +71,13 @@ static const AVOption curves_options[] = { { "negative", NULL, 0, AV_OPT_TYPE_CONST, {.i64=PRESET_NEGATIVE}, INT_MIN, INT_MAX, FLAGS, "preset_name" }, { "strong_contrast", NULL, 0, AV_OPT_TYPE_CONST, {.i64=PRESET_STRONG_CONTRAST}, INT_MIN, INT_MAX, FLAGS, "preset_name" }, { "vintage", NULL, 0, AV_OPT_TYPE_CONST, {.i64=PRESET_VINTAGE}, INT_MIN, INT_MAX, FLAGS, "preset_name" }, + { "red", "set red points coordinates", OFFSET(comp_points_str[0]), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, + { "r", "set red points coordinates", OFFSET(comp_points_str[0]), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, + { "green", "set green points coordinates", OFFSET(comp_points_str[1]), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, + { "g", "set green points coordinates", OFFSET(comp_points_str[1]), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, + { "blue", "set blue points coordinates", OFFSET(comp_points_str[2]), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, + { "b", "set blue points coordinates", OFFSET(comp_points_str[2]), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, + { "all", "set points coordinates for all components", OFFSET(comp_points_str_all),AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, { NULL } }; @@ -447,8 +448,6 @@ static const AVFilterPad curves_outputs[] = { { NULL } }; -static const char *const shorthand[] = { "preset", NULL }; - AVFilter avfilter_vf_curves = { .name = "curves", .description = NULL_IF_CONFIG_SMALL("Adjust components curves."), @@ -458,5 +457,4 @@ AVFilter avfilter_vf_curves = { .inputs = curves_inputs, .outputs = curves_outputs, .priv_class = &curves_class, - .shorthand = shorthand, }; -- cgit v1.2.3