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