Dual pipe is stuck when one of the pipe never get any image

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Dual pipe is stuck when one of the pipe never get any image

Maxime Guyon
Hello, 

I use Windows and I have two TcpServer which run on my localhost and serve JPEG image which are generated by my PC with non fixed framerate.

I use the following pipe for save each server images into 2 different file:

gst-launch-1.0.exe -e ^
tcpclientsrc host=localhost port=9504 do-timestamp=true ! jpegparse ! matroskamux ! filesink location="../../data/videos/test0.mkv" ^
tcpclientsrc host=localhost port=9505 do-timestamp=true ! jpegparse ! matroskamux ! filesink location="../../data/videos/test1.mkv"

What I have observed is that if the second tcpclientsrc which run on port 9505 never receive any image (because none are generated by my server), then the first tcpclientsrc do not record the incoming image into the output file.

If I send just one or more image into the second tcpclientsrc then the recording works as expected on each tcpclientsrc.

To resume if one of the tcpclientsrc never get an image at all when recording, then the pipe seem to be stuck. But if each clientsrc receive at least one image, the pipe record seem to works.

Do I have something wrong here?

Regards.


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Dual pipe is stuck when one of the pipe never get any image

Gst-Geek
Hi Maxime Guyon,

Pipeline will not go to running stare unless every sink in the pipeline pre-rolls i.e at least one buffer should reach each sink.

You can "async"=true in filesink  to avoid this dead lock. In this case Sink moved to PAUSED state asynchronously