On Tue, Mar 10, 2015 at 2:41 PM, Stefano Sabatini <stefa...@gmail.com> wrote:
> On date Tuesday 2015-03-10 00:27:52 +0530, Arwa Arif encoded: > > On Fri, Feb 20, 2015 at 5:41 AM, Stefano Sabatini <stefa...@gmail.com> > > wrote: > > > > > On date Thursday 2015-02-19 17:13:15 +0530, Arwa Arif encoded: > > > > Updated the patch. > > > > > > > From 66a8c9d03995c9e7c6ccc05fb9b20756f51c17f4 Mon Sep 17 00:00:00 > 2001 > > > > From: Arwa Arif <arwaarif1...@gmail.com> > > > > Date: Thu, 19 Feb 2015 01:26:44 +0530 > > > > Subject: [PATCH] Add process_command to eq. > > > > > > > > --- > > > > doc/filters.texi | 35 +++++++++++ > > > > libavfilter/vf_eq.c | 171 > > > +++++++++++++++++++++++++++++++++++++-------------- > > > > libavfilter/vf_eq.h | 56 +++++++++++++++-- > > > > 3 files changed, 210 insertions(+), 52 deletions(-) > > > > > > > > diff --git a/doc/filters.texi b/doc/filters.texi > > > > index 191b52f..e5bf3a2 100644 > > > > --- a/doc/filters.texi > > > > +++ b/doc/filters.texi > > > > @@ -4402,6 +4402,41 @@ Default is @code{1.0}. > > > > > > > > @end table > > > > > > > > +@subsection Commands > > > > +The filter supports the following commands: > > > > + > > > > +@table @option > > > > +@item contrast > > > > +Set the contrast expression. > > > > + > > > > +@item brightness > > > > +Set the brightness expression. > > > > + > > > > +@item saturation > > > > +Set the saturation expression. > > > > + > > > > +@item gamma > > > > +Set the gamma expression. > > > > + > > > > +@item gamma_r > > > > +Set the gamma_r expression. > > > > + > > > > +@item gamma_g > > > > +Set gamma_g expression. > > > > + > > > > +@item gamma_b > > > > +Set gamma_b expression. > > > > + > > > > +@item gamma_weight > > > > +Set gamma_weight expression. > > > > + > > > > +The command accepts the same syntax of the corresponding option. > > > > > > What parameters do the expressions accept? Can you suggest some useful > > > use-case? (And add useful examples in the docs?) > > > > > > > > > There are no parameters accepted by the expressions. I will add some > > examples in the doc. > > Look how it is done in hue. In general an expression is useful if you > want to express something in function of the time or the number of > frame or something else. > So, I should add these options: 1. frame count 2. frame rate 3. timestamp expressed in seconds 4. timebase > > [...] > > > > + if (!strcmp(cmd, "contrast")) { > > > > + ret = set_expr(&eq->contrast_pexpr, args, cmd, ctx); > > > > + set_contrast(eq); > > > > + return ret; > > > > + } > > > > + else if (!strcmp(cmd, "brightness")) { > > > > + ret = set_expr(&eq->brightness_pexpr, args, cmd, ctx); > > > > + set_brightness(eq); > > > > + return ret; > > > > + } > > > > + else if (!strcmp(cmd, "saturation")) { > > > > + ret = set_expr(&eq->saturation_pexpr, args, cmd, ctx); > > > > + set_saturation(eq); > > > > + return ret; > > > > + } > > > > + else if (!strcmp(cmd, "gamma")) { > > > > + ret = set_expr(&eq->gamma_pexpr, args, cmd, ctx); > > > > + set_gamma(eq); > > > > + return ret; > > > > + } > > > > + else if (!strcmp(cmd, "gamma_r")) { > > > > + ret = set_expr(&eq->gamma_r_pexpr, args, cmd, ctx); > > > > + set_gamma(eq); > > > > + return ret; > > > > + } > > > > + else if (!strcmp(cmd, "gamma_g")) { > > > > + ret = set_expr(&eq->gamma_g_pexpr, args, cmd, ctx); > > > > + set_gamma(eq); > > > > + return ret; > > > > + } > > > > + else if (!strcmp(cmd, "gamma_b")) { > > > > + ret = set_expr(&eq->gamma_b_pexpr, args, cmd, ctx); > > > > + set_gamma(eq); > > > > + return ret; > > > > + } > > > > + else if (!strcmp(cmd, "gamma_weight")) { > > > > + ret = set_expr(&eq->gamma_weight_pexpr, args, cmd, ctx); > > > > + set_gamma(eq); > > > > + return ret; > > > > > > this can be probably factorized using a macro > > > > > > > > > Okay. I was going through other filters which use macros, can you explain > > me the what is meant by the symbol ## in statement no.2 of the following > > code snippet: > > ## is the concatenation operator. See for example: > https://gcc.gnu.org/onlinedocs/cpp/Concatenation.html Okay. Thanks. > > > > #define SET_SIZE_EXPR(name, opt_name) do { > > \ > > ret = av_expr_parse_and_eval(&res, expr = rot->name##_expr_str, > > \ > > var_names, rot->var_values, > > \ > > func1_names, func1, NULL, NULL, rot, 0, > > ctx); \ > > if (ret < 0 || isnan(res) || isinf(res) || res <= 0) { > > \ > > av_log(ctx, AV_LOG_ERROR, > > \ > > "Error parsing or evaluating expression for option %s: " > > \ > > "invalid expression '%s' or non-positive or indefinite > value > > %f\n", \ > > opt_name, expr, res); > > \ > > return ret; > > \ > > } > > Something like: > > #define SET_PARAM(param_name) \ > if (!strcmp(cmd, param_name)) { \ > ret = set_expr(&eq->param_name##_pexpr, args, cmd, ctx); \ > set_##param_name(eq); \ > return ret; \ > } > > SET_PARAM(contrast); > SET_PARAM(brightness); > ... > > should probably work. > > [...] > -- > FFmpeg = Faithful and Forgiving Multimedia Pacific Exploitable Gadget > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel