[gst-devel] Re: Distributed pipelines and modular synthesis ramble

Owen Fraser-Green owen at discobabe.net
Tue Feb 27 11:16:54 CET 2001


> Yeah, we haven't played much with the network yet, since we've been
> focusing on the core and some of the plugins.  There is a httpsrc, as well
> as a shoutcast sender (untested), but we do need someone to give some more
> network plugins (like a shoutcast receiver with some clue) a try.

I've been thinking a little about some of the issues in distributing a 
gstreamer network and I believe there are two ways of doing this. First 
imagine a pipeling of four elements:



1) P===P===S . . . S===P===P

The pipeline has been split in two and connected by an extra source-sink 
pair which handles the connection over a network. I believe this would be 
the type of topology which would be implemented by httpsrc and shortcast. I 
guess you could call this a bridge.

2) P===P= . . . =P===P

This time the pipeline has also been split in two but this time at a lower 
level. The middle arc is handled by gstreamer (or something even lower-
level) and the network connection is spanned without any additional nodes.

Now 1) is much easier to implement than 2) because it just needs someone to 
write the bridge source-sink pair and instant distribution. However I see a 
big problem here. Consider this situation (sorry for all the ASCII art!):

   P1===S1  . . S3=
   P2===S2  . . S4=/

This time the network is spread accross three diferent machines. My concern 
is that since the S's don't really know anything about the P's there will 
be a serious synchronisation problem. Supposing P1 and P2 are two audio 
sources which are to be mixed by P3. I can't see how S3 and S4 will be able 
to synchronise their inputs so that the P1 and P2 signals are aligned 
properly in the mix. The same would apply to the render farm example.

Also, I feel that neither http nor shortcast would make a suitable 
transport mechanism for distributing gstreamer pipelines because they are 
too unreliable and won't really facilitate passing synchronization 

I think the 2nd approach above is better and offers more flexibility as it 
doesn't require adding extra elements in the pipeline, however, I think it 
will be much harder to implement. CORBA/bonobo would provide a suitable 
means of integrating the the distinct sections of pipeline but I doubt it 
would be very suitable for the actual data stream as it slaps on quite a 
big payload. I'm wondering if a specialised streaming protocol over RTP 
would be more suitable.

Another thing I've been wondering about is whether there should be another 
meta data type for application control data such as MIDI and the states of 
switches and sliders. This could, for example, carry the positions of the 
sliders on a mixer to the gain pads of the mixing elements.

> Meds are good, but yes, this stuff has been on our minds for a long time.
> If you're interested in helping out, we could use all the help we can get
> to bring GStreamer into these areas.
I'm getting really interested in this project and will gladly lend all the 
help I can.


     Owen  Fraser-Green             "Hard work never killed anyone,
     owen at discobabe.net              but why give it a chance?"

More information about the gstreamer-devel mailing list