mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 10:11:08 +00:00
eb80a8aef5
Original commit message from CVS: * docs/random/ensonic/distributed.txt: * docs/random/ensonic/profiling.txt: more ideas
42 lines
1.5 KiB
Text
42 lines
1.5 KiB
Text
$Id$
|
|
|
|
= distributed gstreamer pipelines =
|
|
|
|
The idea is to have a proxy element for remote elements so that you can treat
|
|
the whole pipeline as a local one. The proxy element creates the real instance
|
|
by talking to GOD (GStreamer Object Daemon, GObject Daemon, ...) on the
|
|
respective machine.
|
|
|
|
At runtime when the proxy-element receives data it sends it to the remote
|
|
element and after processing it gets it back and forwards it to the element.
|
|
The challenge is to optimize links when multiple conected elements are on the
|
|
same remote machine so that the data gets passed directly there.
|
|
|
|
== proxy creation ==
|
|
|
|
In addition to
|
|
GstElement* gst_element_factory_make (const gchar *factoryname,
|
|
const gchar *name);
|
|
|
|
we need:
|
|
GstElement* gst_element_factory_make_remote (const gchar *factoryname,
|
|
const gchar *name,
|
|
GstRemoteFactory *remote);
|
|
|
|
and some API to get a remote factory handle via hostname lookup, ip address
|
|
lookup or even zeroconf (avahi).
|
|
|
|
== remote server ==
|
|
|
|
The remote server manages pipelines with elements that are bound to the proxies.
|
|
Each pipeline has an id, that refers to the client+the clients pipeline address.
|
|
Proxyelements supply the client. pipeline address pair when creating remote
|
|
elements.
|
|
|
|
== issues / thoughts ==
|
|
|
|
* we need to distribute the clock
|
|
* is dataprotocol-library useful to send events, data, property- and state-
|
|
changes
|
|
* we need to sync the remote pipelines with the main-pipeline
|
|
|