mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-04-02 20:35:37 +02:00
lavfi/curves: switch to an AVOptions-based system.
This commit is contained in:
parent
8da1f1f208
commit
34610e11e7
@ -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
|
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.
|
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}
|
The filter accepts the following options:
|
||||||
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.
|
|
||||||
|
|
||||||
@table @option
|
@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
|
@item preset
|
||||||
Select one of the available color presets. This option can not be used in
|
Select one of the available color presets. This option can not be used in
|
||||||
addition to the @option{r}, @option{g}, @option{b} parameters.
|
addition to the @option{r}, @option{g}, @option{b} parameters.
|
||||||
Available presets are:
|
Available presets are:
|
||||||
@table @samp
|
@table @samp
|
||||||
|
@item none
|
||||||
@item color_negative
|
@item color_negative
|
||||||
@item cross_process
|
@item cross_process
|
||||||
@item darker
|
@item darker
|
||||||
@ -2404,7 +2389,18 @@ Available presets are:
|
|||||||
@item strong_contrast
|
@item strong_contrast
|
||||||
@item vintage
|
@item vintage
|
||||||
@end table
|
@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
|
@end table
|
||||||
|
|
||||||
To avoid some filtergraph syntax conflicts, each key points list need to be
|
To avoid some filtergraph syntax conflicts, each key points list need to be
|
||||||
|
@ -662,6 +662,7 @@ int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque
|
|||||||
!strcmp(filter->filter->name, "colormatrix") ||
|
!strcmp(filter->filter->name, "colormatrix") ||
|
||||||
!strcmp(filter->filter->name, "crop" ) ||
|
!strcmp(filter->filter->name, "crop" ) ||
|
||||||
!strcmp(filter->filter->name, "cropdetect") ||
|
!strcmp(filter->filter->name, "cropdetect") ||
|
||||||
|
!strcmp(filter->filter->name, "curves" ) ||
|
||||||
!strcmp(filter->filter->name, "delogo" ) ||
|
!strcmp(filter->filter->name, "delogo" ) ||
|
||||||
!strcmp(filter->filter->name, "drawbox" ) ||
|
!strcmp(filter->filter->name, "drawbox" ) ||
|
||||||
!strcmp(filter->filter->name, "drawtext" ) ||
|
!strcmp(filter->filter->name, "drawtext" ) ||
|
||||||
|
@ -59,14 +59,8 @@ typedef struct {
|
|||||||
#define OFFSET(x) offsetof(CurvesContext, x)
|
#define OFFSET(x) offsetof(CurvesContext, x)
|
||||||
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
|
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
|
||||||
static const AVOption curves_options[] = {
|
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" },
|
{ "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" },
|
{ "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" },
|
{ "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" },
|
{ "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" },
|
{ "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" },
|
{ "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" },
|
{ "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 }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -447,8 +448,6 @@ static const AVFilterPad curves_outputs[] = {
|
|||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *const shorthand[] = { "preset", NULL };
|
|
||||||
|
|
||||||
AVFilter avfilter_vf_curves = {
|
AVFilter avfilter_vf_curves = {
|
||||||
.name = "curves",
|
.name = "curves",
|
||||||
.description = NULL_IF_CONFIG_SMALL("Adjust components curves."),
|
.description = NULL_IF_CONFIG_SMALL("Adjust components curves."),
|
||||||
@ -458,5 +457,4 @@ AVFilter avfilter_vf_curves = {
|
|||||||
.inputs = curves_inputs,
|
.inputs = curves_inputs,
|
||||||
.outputs = curves_outputs,
|
.outputs = curves_outputs,
|
||||||
.priv_class = &curves_class,
|
.priv_class = &curves_class,
|
||||||
.shorthand = shorthand,
|
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user