dynamically remove custom branch from tee and videomixer

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

dynamically remove custom branch from tee and videomixer

kaija
This post was updated on .
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: dynamically remove custom branch from tee and videomixer

kaija

anyone help?


kaija wrote:

>
> I try to create a picture in picture channel to the main pipeline.
> I read this post and succeeded to create PIP channel dynamically.
> (http://gstreamer-devel.966125.n4.nabble.com/Dynamically-adding-and-removing-branches-of-a-tee-td973635.html#a973637)
> However, while I attempt to release the PIP channel while the main
> pipeline is still running, the main pipeline stops to refresh video
> frames.
> I cannot figure out the reason why main pipeline stops.
> Could anyone help me to solve the problem?
>
> Here is my pipeline looks like:
>
>
>    / (main pipeline)queue - videomixer - videoscale - videocrop - caps -
> videosink
> tee                                                                                                                                      
> /
>    \ (pip branch )  queue - videoscale - videocrop - caps ------ mix
> -----/
>
>
> the following code shows how I unlink pip branch from tee and videomixer
>
> void CPiPChannel::Unlink(void) {
> gst_pad_set_blocked_async(m_pVideoTeeSrcPad, TRUE, (GstPadBlockCallback)
> PadBlockHandler, m_pVideoTee);
> gst_element_remove_pad(m_pVideoMixer, m_pVideoMixerSinkPad);
> }
>
> void CPiPChannel::PadBlockHandler(GstPad* pPad, gboolean bBlocked,
> gpointer pData)
> {
> GstPad* pPeer = NULL;
> GstEvent* pEvent = NULL;
> GstElement* pTee = NULL;
>
> if(bBlocked) {
> pPeer = gst_pad_get_peer(pPad);
> pEvent = gst_event_new_eos();
> pTee = (CPiPChannel*) pData;
>
> if(gst_pad_unlink(pPad, pPeer);
> dprintf("unlink pad success");
> else
> dprintf("unlink pad failed");
>
> gst_element_set_state(pBin, GST_STATE_READY);
> gst_element_set_state(pBin, GST_STATE_NULL);
>
> gst_pad_push_event(pPeer, pEvent);
> gst_pad_set_blocked_async(pPad, FALSE, (GstPadBlockCallback)
> PadBlockHandler, pData);
> gst_element_remove_pad(pTee, pPad);
> gst_object_unref(pPad);
> } else {
> dprintf("unblocked");
> }
> }
>

--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/dynamically-remove-custom-branch-from-tee-and-videomixer-tp3163782p3169949.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Gaining the trust of online customers is vital for the success of any company
that requires sensitive data to be transmitted over the Web.   Learn how to
best implement a security strategy that keeps consumers' information secure
and instills the confidence they need to proceed with transactions.
http://p.sf.net/sfu/oracle-sfdevnl 
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: dynamically remove custom branch from tee and videomixer

Nathanael D. Noblet
In reply to this post by kaija
On 12/25/2010 07:35 AM, kaija wrote:
>
> I try to create a picture in picture channel to the main pipeline.
> I read this post and succeeded to create PIP channel dynamically.
> (http://gstreamer-devel.966125.n4.nabble.com/Dynamically-adding-and-removing-branches-of-a-tee-td973635.html#a973637)
> However, while I attempt to release the PIP channel while the main pipeline
> is still running, the main pipeline stops to refresh video frames.
> I cannot figure out the reason why main pipeline stops.
> Could anyone help me to solve the problem?

http://gstreamer-devel.966125.n4.nabble.com/SOLVED-Dynamically-Recording-From-a-Live-Stream-amp-EOS-Handling-td3057813.html

Here is what I had to do to remove a branch from a running pipeline. Not
exactly for the same purpose, however my guess is that you are running
into the same issue.

*IF* you don't have both audio and video streams then perhaps you can do
the simpler version detailed here:


http://gstreamer-devel.966125.n4.nabble.com/Handling-EOS-in-a-branched-pipeline-td2965563.html


I'm a newbie to this so can't profess expertise in solving this for you
- good luck

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand
malware threats, the impact they can have on your business, and how you
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel