I have used various gstreamer demuxers like qt, ogg and matroska, and every time i have found deadlocking/stalling issues when not using a queue after each demuxer pad.
However i can not seem to find the cause of this either in the source code or documentation. Doesnt gstreamer use one thread per pad? As such one pad being blocked wouldnt block the other too.
Depending on the rate of the incoming stream, the demuxing process might not be fast enough.
In simple cases where the demux is done for a single pad and downstream elements are able to process the data fast enough, a queue might not be needed, but that is a very specific use case.
It also depends on the pipeline elements downstream that have their own slow processing time. This could cause latency to build up until the demux possibly can't dequeue already processed buffers.