[gst-devel] Any ways to add/remove branches to/from a running pipeline

Shiping shiping.li at gmail.com
Tue Oct 13 20:23:01 CEST 2009

Thanks Aurelien for your suggestion, and many thanks to all the answers
posted here.  I really appreciated.  This makes me feel I am not alone,
there are still many experts out there willing to provide help. :-)

I tried the method, and here are the results:

First let me put my pipeline here:

video source -> tee -> record bin
                             -> preview bin
                             -> stream bin

I tried to add preview bin when recode bin was running, first I blocked the
tee->src to preview bin, BUT it stopped the whole pipeline, including record
bin.  I tried several times, but could not figure out why, and no error
messages printed out when I set debug level to 3.

Then I tried adding preview bin directly to running pipeline, it worked
unexpectedly.  I do not know why it worked, it should not according the
documents you pointed.  Removing preview bin from running pipeline was also

Then when I tried to add stream bin, it became more difficult.  I tried many
methods - blocking, unblocking, directly adding to running pipeline, etc. 
None of them worked, and the most problems were like this:

<udpsink0> warning: Internal data flow problem.
WARN     basesink gstbasesink.c:3279:gst_base_sink_chain_unlocked:<udpsink0>
warning: Received buffer without a new-segment. Assuming timestamps start
from 0.
gstelement.c:1763:gst_element_message_full:<udpsink0> posting message:
Internal data flow problem.
gstelement.c:1786:gst_element_message_full:<udpsink0> posted warning
message: Internal data flow problem.

So I am  technically stuck here for a couple of days now.

Could you guys please shad a light on me?

Many thanks


Aurelien Grimaud (elzz) wrote:
> Le 07/10/2009 23:14, Shiping a écrit :
>> Hi, there:
>> I am trying to record live video, so a pipeline is setup to record video
>> continuously.
>> And during this process, I would like to preview the video from source. 
>> So
>> I add a tee to the recording pipeline and branch out for previewing. 
>> When
>> preview stopped, the branch was removed from the pipeline.
>> I tried hard not to pause recording pipeline, but got all kinds of errors
>> and unstable recording.  Currently all I can do is pause recording,
>> inset/remove branch, and restart the whole pipeline.
>> Of cause, I lost some frames in above process.
>> My question is:  Is there a way to do it without pausing the recording?
>> Any suggestions?
>> Thanks
>> Shiping
> Hi,
> You should read 
> http://cgit.freedesktop.org/gstreamer/gstreamer/tree/docs/design/part-block.txt
> Dynamically changing a PLAYING pipeline should be done with pad block to 
> prevent any error.
> Block your tee sink pad, link/unlink your preview branch, unblock.
> Aurelien
> ------------------------------------------------------------------------------
> Come build with us! The BlackBerry(R) Developer Conference in SF, CA
> is the only developer event you need to attend this year. Jumpstart your
> developing skills, take BlackBerry mobile applications to market and stay 
> ahead of the curve. Join us from November 9 - 12, 2009. Register now!
> http://p.sf.net/sfu/devconference
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel

View this message in context: http://www.nabble.com/Any-ways-to-add-remove-branches-to-from-a-running-pipeline-tp25794577p25878111.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.

More information about the gstreamer-devel mailing list