Queue prevents pipeline to preroll

Edward Hervey bilboed at bilboed.com
Mon Dec 12 10:30:03 UTC 2022


Hi,

  The pipeline never prerolls because you don't have a queue element before each
sink (i.e. the only thread blocks on a sink, waiting for the pipeline to
preroll... but it never can since it can't preroll the other sink).

  Also not that queue != buffering. The queue elements are used to decouple
processing (by creating a new thread).

  BR,

    Edward

On Sun, 2022-12-11 at 17:32 -0300, Rodrigo Santos via gstreamer-devel wrote:
> Just bumping this thread again as I've got no response. Does anyone have any
> idea why this is happening for this particular file (and others similar)?
> 
> Rodrigo Santos
> 
> 
> 
> ---- On Mon, 05 Dec 2022 12:16:42 -0300 Rodrigo Santos <rsantos at sequence.film>
> wrote ---
> 
> > Hey folks,
> > 
> > I have this pipeline that works without issues:
> > 
> > gst-launch-1.0.exe filesrc location="$LOCATION" ! decodebin name=decoder !
> > audioresample ! audioconvert ! autoaudiosink decoder. ! autovideosink
> > 
> > We are developing our own plugin with a custom buffering strategy. To better
> > understand how buffering works in pipelines I'm using a queue after filesrc,
> > the idea is to later add our custom element before the queue. However, I
> > noticed that for some files this pipeline never prerolls:
> > 
> > gst-launch-1.0.exe filesrc location="$LOCATION" ! queue ! decodebin
> > name=decoder ! audioresample ! audioconvert ! autoaudiosink decoder. !
> > autovideosink
> > 
> > PS: same behavior happens if I use queue2 or multiqueue. Here's the output:
> > 
> > gst-launch-1.0.exe filesrc location="$LOCATION" ! queue ! decodebin
> > name=decoder ! audioresample ! audioconvert ! autoaudiosink decoder. !
> > autovideosink 
> > Use Windows high-resolution clock, precision: 1 ms
> > Setting pipeline to PAUSED ...
> > Pipeline is PREROLLING ...
> > Got context from element 'autovideosink0': gst.d3d11.device.handle=context,
> > device=(GstD3D11Device)"\(GstD3D11Device\)\ d3d11device2", adapter=(uint)0,
> > adapter-luid=(gint64)97066, device-id=(uint)39745, vendor-id=(uint)32902,
> > hardware=(boolean)true, description=(string)"Intel\(R\)\ UHD\ Graphics";
> > Redistribute latency...
> > Redistribute latency...
> > Redistribute latency...0.0 %)
> > 0:00:00.0 / 0:01:56.1 (0.0 %)
> > 
> > It shows the first video frame and gets stuck. The weird thing is that if I
> > link ONLY video or ONLY audio-related elements to the decode bin the
> > pipeline executes without problem. That is, the following pipelines work:
> > 
> > without video:
> >       gst-launch-1.0.exe filesrc location="$LOCATION" ! queue ! decodebin
> > name=decoder ! audioresample ! audioconvert ! autoaudiosink 
> > 
> > without audio:
> >       gst-launch-1.0.exe filesrc location="$LOCATION" ! queue ! decodebin
> > name=decoder ! autovideosink
> > 
> > Could someone help me understand what is going on? It seems the issue only
> > happens with some files. The issue I just reported is happening when
> > $LOCATION is set to this
> > file: CRAZYCAR_HD_422_23p98_STEREO_MiniClip_20211021_2.mov - Google Drive
> > 
> > Rodrigo Santos
> > 
> > 
> 
> 



More information about the gstreamer-devel mailing list