[gst-devel] Losing prerolled buffers

Iain * iaingnome at gmail.com
Tue May 23 16:42:20 CEST 2006


On 5/23/06, Iain * <iaingnome at gmail.com> wrote:
> On 5/23/06, Thomas Vander Stichele <thomas at apestaart.org> wrote:
>
> > There's a lot of unknowns to answer the question just by looking at
> > code.  For example, does your channel splitter's signal callback get
> > fired from the streaming thread ? If it doesn't, your streaming thread
> > may happily be pushing buffers over the cliff like lemmings before you
> > link something to the pad.  Just an example of course.

It seems that the new-segment (and a tag) event are being sent to the
splitter before the caps sent (obviously when you think about it). But
this means that anything the splitter receives before the caps will
get lost. How should it handle this? Is the proper thing to do store
up all the events and then send them onto the srcpads once the pad is
linked to something?

I managed to stop the buffer loss by using gst_element_get_state with
a short timeout to allow the newly added sink time to get up to the
same state as everything else. This works, but also feels like a bit
of a hack really :/

Sorry for asking so many questions, but I really want to get marlin
doing the right thing.

iain




More information about the gstreamer-devel mailing list