Dynamically changing a live pipeline with live sinks

Sérgio Agostinho sergio.r.agostinho at gmail.com
Tue Nov 25 06:16:38 PST 2014


Hello,

I'm currently trying to build a pipeline that is changed upon request. Most
(if not all) of the work has been based on the guidelines provided in
this example
from the manual
<http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-dynamic-pipelines.html#section-dynamic-changing>.
For now I'm working with the following setup

pulsesrc ! tee name=t \

t. ! queue ! faac ! rtpmp4apay ! udpsink \

t. ! queue ! audioresample ! tcpserversink


My idea is to able to active/deactivate each one of these sinks (and the
required upstream elements) as needed, while the pipeline is live in
playing state. Currently I'm facing some issues when I need to disable and
remove one of the sinks/branches. Every time one of the sinks is not
needed, I block the corresponding srcpad on the tee element, unlink all
elements in that branch of the pipeline and remove them from the pipeline,
set them to a NULL state. When I do that (e.g. udpsink branch), I've
noticed that the other branch (tcpsink brnahc) stops streaming data. To be
honest, it is more like it pauses, because once I activate the other one
again (udpsink branch), it (tcpsink branch) resumes streaming from exactly
the point it initially stopped. It is as if the tcp branch was buffering
but not sending data while the udpsink was off.

Any hints on what might be happening?

Sérgio
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20141125/56f77a5f/attachment.html>


More information about the gstreamer-devel mailing list