udpsrc: Blocks entire pipeline until first packet arrives
I'm using gstreamer 1.14.4 on Debian Linux and I've noticed a problem where if I have multiple gstreamer pipelines in a single command, they all block until the udpsrc receives its first UDP packet.
For example, the videotestsrc ! autovideosink is paused in this example:
gst-launch-1.0 videotestsrc ! autovideosink sync=false udpsrc port=5600 timeout=1 ! fakesink sync=false
If you run the following command, then the videotestsrc starts animating forever after that, even though no new packets are arriving:
echo hello | nc -u localhost 5600
I've tried workarounds like injecting a fake packet on the side (filesrc location=/etc/hostname ! udpsink port=5600 host=localhost), but it doesn't work when I pipe the udpsrc into an rtpjitterbuffer.
Is there some kind of workaround that I can add to udpsrc to make it not block everything, or is this a bug that needs to be fixed in udpsrc? This is part of a much larger problem that I'm having and I need to have multiple udpsrc's going and some of them may not receive any packets for a while.