[gst-devel] Re: dparams roadmap (AKA dparams are dead, long live control pads)
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_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:
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'
shouldn't there be
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)
Where will we put it - gst-core/libs/gst ?
How will we name it - libgstcontroller ?
More information about the gstreamer-devel