[gst-devel] Re: dparams roadmap (AKA dparams are dead, long live control pads)

Stefan Kost ensonic at hora-obscura.de
Wed Feb 23 11:28:42 CET 2005


Hi Edward and others,

the reason to name the thing GstEnvelope is quite obvious, when thinking 
about a timeline and smoothed control values on it.
When looking on the purpose, that it offers a convinient way to control 
elements, I would rather prefer GstController.


== Now some nitpicking about the naming:

GstEnvelope *gst_envelope_properties (...);
GstEnvelope *gst_element_envelope_properties (...);

should be something like
GstEnvelope *gst_envelope_new(...);
GstEnvelope *gst_element_new_envelope(...); // not sure about this one

Question here is, what does the first, if the object already has an envelope attached to these properties?


== Again some naming:

gboolean gst_unenvelope_properties (...);
gboolean gst_element_unenvelope_properties (...);

should be called

gboolean gst_envelope_detach (...);
gboolean gst_element_detach_envelope (...);


== Does adding:

gst_element_get/get_envelope();

means

g_object_get(element,"envelope",&envelope,NULL);

won't work? The only reason for this deviation from gobject style I see is to avoid this property beeing used together with an envelope. But thats easy to avoid (GObject derived properties wont IMHO make sense to be controlled).

== Removing envelope points

gboolean gst_envelope_set (...);
gboolean gst_envelope_set_many (...);

can be used to add control changes at given timestamps.
We also need API to remove single control changes (imagine you cut a piece of video/audio from the timeline, one won't need the envelope there):

gboolean gst_envelope_remove (...);
gboolean gst_envelope_remove_many (...);

== More nit picking:

When naming things 'property_name', we should name 'timedvalues' 
'timed_values'.

== GstValueArray;

shouldn't there be

gst_value_array_new();
gst_value_array_free();

methods? To me it sounds better to keep the internals hidden.

== Current conclusion ;)

I belive it does much more that I need. Things that I personally find a 
bit complex are:

=== attaching multiple envelopes to one property
  are they added and clipped or mixed?
  what happens to envelopes controlling an enum property then?

=== attaching one envelope to multiple properties
  yes synthesizer do that, it called a modulation matrix there.
  the difference is that for each target one would like to set a weight 
(percentage of influence)


== Finally:
Where will we put it - gst-core/libs/gst ?
How will we name it - libgstcontroller ?

Ciao
  Stefan




More information about the gstreamer-devel mailing list