[gst-devel] Ogg and GStreamer
rbultje at ronald.bitfreak.net
Wed Jul 30 06:45:06 CEST 2003
On Wed, 2003-07-30 at 15:23, in7y118 at public.uni-hamburg.de wrote:
> So, what is the problem? The problem is the type of additional information that
> is put into the page headers. Ogg requires an "absolute granule position",
> which corresponds to a format that GStreamer calls "frame". It is media
> specific and up to the encoded packets to define. And ogg saves for each packet
> the number of frames _including_ the packet. Ogg uses this instead of
> timestamps. Now I am trying to put/get this stuff into/from GstBuffers.
> The obvious idea is to require that all streams that get muxed into ogg need to
> be framed so that you have 1 packet per buffer. There is one problem though:
> When you get a GstBuffer, you have no idea what the frame offset is _including_
> the frame. buffer->offset is the frame offset _excluding_ the buffer.
> So there are two options now:
> - include a frames field in GstBuffer, so that the frame offset can be
> computed. (That's what I vote for)
> - wait for the next buffer, and use the offset field of that buffer as
> the "absolute granule position" in the ogg stream.
(2) is evil. (1) could be used, but doesn't GST_BUFFER_DURATION(buf)
suffice here? It's the actual reason why I added it... And well, not all
plugins use it or fill it in perfectly, but it works, mostly.
If GST_BUFFER_DURATION(buf) isn't good enough, could you please explain
what more it should do? We could then remove GST_BUFFER_DURATION() in
favour of something else. We shouldn't add something, I think, they look
too much alike...
Ronald Bultje <rbultje at ronald.bitfreak.net>
More information about the gstreamer-devel