Dual appsink in a pipeline, C API -> pipeline is stuck

Michael Gruner michael.gruner at ridgerun.com
Fri Sep 1 15:41:41 UTC 2023


It's hard to diagnose without the actual pipeline, but it seems like a prerolling problem. In a GStreamer pipeline (in default conditions at least) every sink element needs to receive a buffer for the pipeline to transition to the PLAYING state. Otherwise it will get stuck in the transition in a way similar as you describe. You can either:

1. Use queues after the tee, like:

rtp stream ... ! tee name=t       t. ! queue ! appsink     t. ! queue ! appsink

As a rule of thumb, you always want to place queues at the src pads of an element with multiple outputs, like the tee.

2. Set async=false in the appsinks, which will instruct the pipeline that it doesn't need to wait for these appsinks to receive buffers to actually start PLAYING.

Hope it helps


Michael
www.ridgerun.com

> On 1 Sep 2023, at 05:49, Centraladmin via gstreamer-devel <gstreamer-devel at lists.freedesktop.org> wrote:
> 
> Hello here, 
> 
> In a pipeline, after decoding the input pictures from a RTP stream, I put a "tee" element. 
> 
> The first of the "branch" of this tee re-encodes the picture and then sends the encoded packet to the application thru an appskink element.
> 
> The second "branch" of the tee is connected to another encoder and then connected also to the application with another appsink element.
> 
> My problem is that as soon I declare the second appsink element (without even connecting it), the pipeline is stuck. Without creaing the second appsink, the first branch is working.
> 
> Any ideas ? Is is possible to insert multiple appsink in 1 single pipeline ? Any properties that I can try?
> 
> Thanks for ideas and help,
> Sylvain.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20230901/2d87ab35/attachment.htm>


More information about the gstreamer-devel mailing list