Hi everyone,
I'm in the process of modifying an RTSP-server application that uses gstrtpbin to stream audio and video. Initially each stream was a separate pipeline with it's own gstrtbin, which made it easy to start and stop the streams individually. But, for several reasons, I have now changed it so that all streams are run in the same pipeline, using one gstrtpbin. I still want to be able to start and stop the individual streams though. I have solved it in the following way: When a stream is set up the elements are added to the pipeline and then linked together. The gstrtpbin is created when the first stream is set up. The stream's rtp and rtcp sources are linked to the gstrtpbin using gst_element_link_pads(). Once a stream is added to the pipeline the state of it's source and rtcp source elements is locked (using gst_element_set_locked_state()) so that state changes of the pipeline does not affect them. Thus I can start and stop the streams individually by setting these two elements to PLAYING and PAUSED state. When the first stream is started the whole pipeline is set to PLAING state and will remain in that state. When a stream is teared down it's elements are first set in NULL state and then the elements are removed from the pipline using gst_bin_remove_many(), which unlinks the elements and removes them from the pipeline. When the last stream is unlinked the whole pipeline is destroyed. After some fiddling around with details it now works fine as far as I can tell. No GStreamer criticlas anymore, no warnings :-) My question now is ... is this the way to do it? Is there an better way to handle the different streams individualy in one pipeline? Have I missed something when removing a stream from the pipeline? Do I have to unlink and remove the elements linked to the gstrtpbin individually, or is it OK to use gst_bin_remove_many() to do it? All views and suggestions are welcome. Best regards /Branko ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |