• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1$Id$
2
3= distributed gstreamer pipelines =
4
5The idea is to have a proxy element for remote elements so that you can treat
6the whole pipeline as a local one. The proxy element creates the real instance
7by talking to GOD (GStreamer Object Daemon, GObject Daemon, ...) on the
8respective machine.
9
10At runtime when the proxy-element receives data it sends it to the remote
11element and after processing it gets it back and forwards it to the element.
12The challenge is to optimize links when multiple connected elements are on the
13same remote machine so that the data gets passed directly there.
14
15== proxy creation ==
16
17In addition to
18GstElement* gst_element_factory_make        (const gchar *factoryname,
19                                             const gchar *name);
20
21we need:
22GstElement* gst_element_factory_make_remote (const gchar *factoryname,
23                                             const gchar *name,
24                                             GstRemoteFactory *remote);
25
26and some API to get a remote factory handle via hostname lookup, ip address
27lookup or even zeroconf (avahi).
28
29== remote server ==
30
31The remote server manages pipelines with elements that are bound to the proxies.
32Each pipeline has an id, that refers to the client+the clients pipeline address.
33Proxyelements supply the client. pipeline address pair when creating remote
34elements.
35
36== issues / thoughts ==
37
38* we need to distribute the clock
39* is dataprotocol-library useful to send events, data, property- and state-
40  changes
41* we need to sync the remote pipelines with the main-pipeline
42
43