summaryrefslogtreecommitdiff
path: root/docs/random/wtay
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2003-01-15 20:31:42 +0000
committerWim Taymans <wim.taymans@gmail.com>2003-01-15 20:31:42 +0000
commit95abdf3bce03da4ce428233a065db229342a4264 (patch)
tree64065419413a76311f44472b2c9d8c867e773db0 /docs/random/wtay
parent90cff6596499207b5cd35ade4baced5a3143164d (diff)
Some ideas
Original commit message from CVS: Some ideas
Diffstat (limited to 'docs/random/wtay')
-rw-r--r--docs/random/wtay/autoplug338
1 files changed, 38 insertions, 0 deletions
diff --git a/docs/random/wtay/autoplug3 b/docs/random/wtay/autoplug3
new file mode 100644
index 0000000000..4cf16a4ef5
--- /dev/null
+++ b/docs/random/wtay/autoplug3
@@ -0,0 +1,38 @@
+
+The autoplugger is a custom bin with a set of custom add/remove methods.
+The point is to virtually add a set of plugins that should take part in
+the autoplugging (like the src, sink elements). The autoplugger should
+try hard to included these plugins in the final pipeline.
+
+The autoplugger has to be a bin because else we cannot put it into the
+paused state when dynamically connecting elements.
+
+We cannot include the intermediate elements or sink/src elements to the bin
+right away because else they will be scheduled by the scheduler.
+
+The bin will use the elementfactory klass field to get a basic idea about
+the plugin:
+
+ - the 'Source' keyword is used to detect source elements
+ - the 'Sink' keyword is used to detect the sink elements or targets
+ of the autoplugging.
+ - other elements are considered intermediate elements and will be
+ inserted when possible.
+
+
+algorithm:
+
+- Autoplugging starts from a source element, it will be added to the real bin.
+- for all unconnected pads:
+ - if pad has NULL padtemplate caps add typefind + autoplugcache to the pad
+- if unconnected pad has fixed caps, find element in repository that can
+ connect.
+ - first check elements added to the bin
+ - test elements ordered by rank
+ - favour 'Demux' type elements close to sources, 'Decoder' elements after
+ that and 'Filter' elements close to sinks.
+- link dummy element with pads with non-fixed caps. The dummy element getcaps
+ function will use the repository to return a list of compatible caps, so that
+ the element can choose freely. The dummy element is replaced with a real
+ element when caps become fixed.
+- all new_pad signals and caps notifications trigger the above actions.