[gst-devel] Can a bin have double static ghost sink pad?

Hecate_Eos xflxmin17 at 163.com
Tue Jul 13 05:39:50 CEST 2010


I want use gstrtpbin to transmit my auido & video and in order to looks
simple and logical, so I packaged video & audio process into a bin. Looks
like the below.

.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|                                                                                                                                                                               
|
| queue -> ffmpegcolorspace -> x264enc -> rtph264pay -> queue ->
|-----------------.-> udpsink (for output video rtp data)       |
|                                                                                                
|                 | -> udpsink (for output video rtcp data)     |
|                                                                                                
|  gstrtpbin  | <-  udpsrc ( for input video rtcp data)       |
|                                                                                                
|                 | ->udpsink (for output audio rtp data)        |
|queue-> audioconvert -> faac -> rtpmp4apay           -> queue  ->    |                
| -> udpsink (for output audio rtcp data)     |
                                                                                                 
| _________| <- udpsrc ( for input audio rtcp   data)      | 
|.___________________________________________________________________________________________________ 
|
 
I create double ghost sink pad for this big bin. a bin named "sink_video",
the other "sink_audio". 
If add it in to a pipeline before the pipeline change state to running in
the pipeline creating stage, I can get the result. It works well.
But, If I dynamicly add the big bin into the running pipeline, it does NOT
work.
In my pipeline, I will link the big bin to double tee elements. tee0 --->>>
(ghost pad)"sink_video".....
                                                                                      
tee1 --->>> (ghost pad)"sink_audio"......
In order to link pads,I blocked the tee's sink pad.
After that, I link the double tees to the ghost pads.
******now I make the big bin running
********gst_element_set_state(transmit_bin, GST_STATE_PLAYING);
unblock the tee's sink pad.
In the recevieing end, I just can receive the video, no audio received. I am
assure the receive end is ok.so the problem is the big bin.
I guess " gst_element_set_state(transmit_bin, GST_STATE_PLAYING)" does not
make the whole bin's elements change into running state.So I get the bin's
iterator, and make all the elements change into running state. Not very
lucky, it can't work.
Does the bin can have double static ghost pads? And how to make them all
into running or work?
Or, this is a bad solution? Can you give me some advice?
Thanks in advance! Sincerely! 


-- 
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Can-a-bin-have-double-static-ghost-sink-pad-tp2286973p2286973.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.




More information about the gstreamer-devel mailing list