[gst-devel] addition of a buffer flag

Benjamin Otte in7y118 at public.uni-hamburg.de
Fri May 14 06:51:05 CEST 2004


Quoting Thomas Vander Stichele <thomas at apestaart.org>:

> OTOH, Ogg does not care
> about the data you are wrapping in it, so the streamer should be able to
> get all hints it needs through GStreamer, without being ogg-specific.
> 
There is the one thing where you are irritated. Ogg itself doesn't care very 
much, but the data contained in ogg does. Raw vorbis (or theora) very much 
cares about setup data being resent. Just like all the other _containers_.
The difference between ogg and every other container is that header data for 
ogg codec is part of the codec while for every other container it's part of the 
container. So you obviously need knowledge about the codecs only if you use 
ogg. Blame the container designers.


> The point I'm making is that whatever mechanism is chosen, it should be
> a core mechanism, since a) the project is called GStreamer so we want it
> to stream and b) this is a necessity for all formats except MPEG.
> 
> The reason it wasn't seen as a necessity before is because no one ever
> did multiclient live streaming with something beside MPEG from GStreamer
> (that's a mouthful).
> 
What you want is a magic solution that just takes ANY caps and magically 
streams them with everything already somehow setup by some magic flags. You 
won't get that I'm afraid. What you can already get quite easily though is a 
way to use a general purpose streamer element that gets a custom mime type (say 
application/x-fluendo-server) and loads of elements per format that transform 
application/ogg or video/quicktime to application/x-fluendo-server. All of that 
would work right now without changing anything in the current GStreamer core or 
elements.

Benjamin


PS: I'm still not sure if it wouldn't be nicer to have elements similar to tee 
that do the splitting. That way your server pipeline would look like this:
                  / connection1
source - splitter - connection2
                  \ connection3
Whenever you get a new connection you setup a new connection element and 
connect it to the splitter who would then know how to setup the current format 
correctly for streaming. This would of course not work in gst-launch but would 
be able to construct headers on demand which might be useful if you need to 
send different headers to different clients.




More information about the gstreamer-devel mailing list