[gst-devel] ogg and friends

David Schleef ds at schleef.org
Wed May 19 14:58:01 CEST 2004

On Wed, May 19, 2004 at 07:38:56PM +0200, Thomas Vander Stichele wrote:
> - encoding and muxing an "Ogg A/V" stream and create a live TCP stream:
>   ... oggmux ! tcpserversink
>   clients can connect to this server at any given point in time, and
> when they do, tcpserversink should give them all the "bos pages" and
> "additional header pages" before serving them encoded data.

I have long suspected that you were trying to do this, but I never
brought it up because it sounded so dumb.  In this case, you are
making tcpserversink into a "post-muxer", which takes an already
muxed ogg stream and _remuxes_ it to make the first data packet
going out the tcp socket correspond to the current time.  This is
fine if you want to write it that way, but it only works with OGG.
Other stream formats (MPEG, QT, etc) don't work in a way that you
can just chop some bytes out of the center and still get a workable
stream.  And it's important to remember that you're making an element
that does two fundamental tasks -- remuxing oggs streams and sending
data over a tcp socket.

So I would suggest moving to a model where you have a true oggremux
element, and a simple tcpserversink.  The oggremux element needs
only to know how to find header packets, and how to seek to the
appropriate place in the stream.  For bonus points, you can make
the oggremux element have lots of request source pads, and serve
potentially lots of remuxed streams off one input stream.


More information about the gstreamer-devel mailing list