design: update controller design and add some thoughs for future stuff
authorStefan Sauer <ensonic@users.sf.net>
Fri, 8 Mar 2013 12:15:32 +0000 (13:15 +0100)
committerStefan Sauer <ensonic@users.sf.net>
Fri, 8 Mar 2013 12:16:40 +0000 (13:16 +0100)
docs/design/part-controller.txt

index 1a2f23e..9476092 100644 (file)
@@ -13,7 +13,9 @@ Elements don't need to do much. They need to:
 - call gst_object_sync_values (self, timestamp) in the processing function
   before accessing the parameters.
   
-All ordered property types can be automated (int, double, boolean, enum). 
+All ordered property types can be automated (int, double, boolean, enum). Other
+property types can be automates as well by using special control bindings. One can
+e.g. write a control-binding that updates a text property based on timestamps.
 
 Application view
 ~~~~~~~~~~~~~~~~
@@ -37,4 +39,29 @@ frequency of the first GstLFOControlSource.
 In most cases GstControlBindingDirect will be the binding to be used. Other
 control bindings are there to handle special cases, such as having 1-4 control-
 sources and combine their values into a single guint to control a rgba-color
-property. 
+property.
+
+
+TODO
+~~~~
+control-source value ranges
+- control sources should ideally emit values between [0.0 and 1.0]
+- right now lfo-control-sources emits values between [-1.0 and 1.0]
+- we can make control-sources announce that or fix it in a lfo2-control-source
+
+ranged-control-binding
+- it might be a nice thing to have a control-binding that has scale and offset
+  properties
+- when attaching a contro-source to e.g. volume one needs to be aware that the values
+  go from [0.0 to 4.0]
+- we can also have a "mapping-mode"={AS_IS, TRANSFORMED} on direct-control-binding
+  and two extra properties that are used in TRANSFORMED mode
+  
+control-setup descriptions
+- it would be nice to have a way to parse a textual control-setup description. This
+  could be used in gst-launch and in presets. It needs to be complemented with a
+  formatter (for the preset storage or e.g. for debug logging).
+- this could be function-style:
+  direct(control-source=lfo(waveform='sine',offset=0.5))
+  or gst-launch style (looks weird)
+  lfo wave=sine offset=0.5 ! direct .control-source