[gst-devel] Any ways to add/remove branches to/from a running pipeline
shiping.li at gmail.com
Fri Oct 16 18:33:39 CEST 2009
Thanks sledge and Aurelien for quick reply. I will give it a shot ASAP and,
may come back with a successful story :handshake: or more questions.
Aurelien Grimaud (elzz) wrote:
> Le 13/10/2009 20:23, Shiping a écrit :
>> 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
>> tee->src to preview bin, BUT it stopped the whole pipeline, including
>> 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
> If you do your stuff (link/unlink) between two buffers, it will be ok.
> But a buffer arrives on tee:sink, then you had a src pad and tee
> forwards to the new src pad which is NOT LINKED. Therefore you get the
> internal data flow problem.
> Moreover this error is carried on all upstream elements and your whole
> pipeline stops !
> I used tee to forward the same stream to many udpsrc which were
> linked/unlinked dynamically.
> Without blocking stream, sometimes, the streaming process for all udpsrc
> stopped for the reason mentionned before.
> You have to make sure no buffer arrives to tee, therefore block your tee
> input (sink pad).
> When blocked (in the blocked call back for instance), link or unlink as
> needed, the (always in your callback) unblock the tee:sink pad.
> Non blocking the pad will work only to remove a downstream bin, if you
> remove the tee:src request pad while pipeline is running.
> The locks used in tee ensure (I think) that it works.
> To be sure : use block.
>> Then when I tried to add stream bin, it became more difficult. I tried
>> 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
>> warning: Received buffer without a new-segment. Assuming timestamps start
>> from 0.
>> INFO GST_ERROR_SYSTEM
>> gstelement.c:1763:gst_element_message_full:<udpsink0> posting message:
>> Internal data flow problem.
>> INFO GST_ERROR_SYSTEM
>> 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
>>>> And during this process, I would like to preview the video from source.
>>>> I add a tee to the recording pipeline and branch out for previewing.
>>>> preview stopped, the branch was removed from the pipeline.
>>>> I tried hard not to pause recording pipeline, but got all kinds of
>>>> 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?
>>> You should read
>>> 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.
>>> 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
>>> ahead of the curve. Join us from November 9 - 12, 2009. Register now!
>>> gstreamer-devel mailing list
>>> gstreamer-devel at lists.sourceforge.net
> 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!
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
View this message in context: http://www.nabble.com/Any-ways-to-add-remove-branches-to-from-a-running-pipeline-tp25794577p25928355.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
More information about the gstreamer-devel