:: Re: [Frei0r] 5 Cairo based plugins,…
Αρχική Σελίδα
Delete this message
Reply to this message
Συντάκτης: Janne Liljeblad
Ημερομηνία:  
Προς: Minimalistic plugin API for video effects
Αντικείμενο: Re: [Frei0r] 5 Cairo based plugins, PATCH 2 - multivalue support
> We have made an exception for the curves filter's bezier spline and
> the OpenCV filters' classifiers because there was not an adequate way
> to do it otherwise.


Why is "curves" using bezier spline instead of Catmull-Rom spline,
which is industry standard for curves (Gimp, Photoshop, After
Effects...) and a lot less twitchy? Open Kdenlive and Gimp side by
side and do some curves manipulations and you'll see what I mean. Does
anyone have any objections for me creating a filter called "crcurves"
to provide a Catmull-Rom based curves implementation?

> It already works for all frei0r double params within MLT and has for a
> long time. The MLT-frei0r filter bridge is currently using
> mlt_geometry to accomplish this, but only using the x field of it.
> Thus, any f0r_param_double (or f0r_param_bool) can be animated in a
> mlt_property with something like: 0=0.01; 50=0.1; 100=0.5; 500=1.0.
> Kdenlive has been taking advantage of this capability for a while.


So that happens fully on application/MLT side then. Kdenlive sets "x"
MLT property value to "0=0.01; 50=0.1" and MLT sets Freior "x" param
values per frame. Plugin knows nothing of any of this happening, and
just uses value of x?

> Sorry, but you need to get rid of frei0r_multivalue.h and make
> discreet parameters.


So in case of "cairoblend" I'll go from current:

   typedef struct cairo_blend_instance
  {
     unsigned int width;
     unsigned int height;
     char *opacity;
     char *blend_mode;
   } cairo_blend_instance_t;


to:

   typedef struct cairo_blend_instance
   {
     unsigned int width;
     unsigned int height;
     double opacity; //  this is now F0R_PARAM_DOUBLE;
     char *blend_mode;
   } cairo_blend_instance_t;


and just use opacity when drawing:

double frame_opacity = inst->opacity;

and now if i set "opacity" in Flowblade to "0=0.01; 50=0.1" MLT sets
correct value to opacity for each frame?

Is this correct?