| $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 |
| |