How to bypass prerolling

Yogesh Tyagi yogesh.bit2006 at
Sun Feb 16 22:27:21 PST 2014


I tried to remove gstreamer prerolling from my plugin and in READY_TO_PAUSE
transition I tried to directly set my audio device to PAUSE state which
failed. Later I found that audio device needs some information about audio
format to be set before I can set it to PAUSE state.

I found audio format is set in gst_pad_set_setcaps_function which is not
being invoked from gstreamer until one audio buffer is received on audio
pad.This is not letting me set my audio device to PAUSE state and forcing
me to wait for one audio buffer.

Is it possible to get this information about audio format without waiting
for one audio buffer?


On Fri, Feb 7, 2014 at 2:07 AM, Sebastian Dröge
<sebastian at>wrote:

> On Do, 2014-02-06 at 22:40 +0530, Yogesh Tyagi wrote:
> > Hi,
> >
> > I tried setting async to false but due to this set caps is not  getting
> >  called  for audio where the audio format is set. So my audio decoder is
> > not getting initialized and due to this I hear no audio when I keep async
> > to false.
> async=false on the sink should have no effect on any other elements and
> especially not on setting caps anywhere. However you will need to do
> more than that to properly integrate your hardware pre-rolling into
> GStreamer. Check the code in GstBaseSink to see what it is doing for
> pre-rolling. You'll need to do that just with your hardware pre-rolling.
> I think it will also be a good idea to extend basesink a bit to allow
> easier integration of more special pre-rolling mechanisms. I.e. allow
> the subclass to get some control over what is happening there and when
> the sink is considered pre-rolled and when not.
> --
> Sebastian Dröge, Centricular Ltd -
> Expertise, Straight from the Source
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the gstreamer-devel mailing list