question how to add own customized element between source element and decodebin2 element when using playbin2

Christophe Oosterlynck tiftof at gmail.com
Tue Nov 13 12:21:58 PST 2012


Tim-Philipp, thanks for your quick and helpful reply. I'm glad I asked here
first before starting to implement something. I will try your suggestion.

I'm also not sure if inserting a queue element right after the udp source
is the right way to catch my problems with udp streaming. The actual
problem I'm having is corrupted sound on playing a raw udp stream
containing a transport stream consisting of H264 video and MPEG 1 layer 2
audio. The image is fine but the sound starts crackling after a while until
it sometimes disappears completely until it plays fine again and repeats
this in a cycle of 60 seconds.

As there is no buffering for live sources in playbin2, I'm suspecting this
to be a problem. Why is there no facility in playbin2 to delay playback of
a udp stream a bit to buffer it and handle possible packet delays?

Best regards,

Christophe


On Tue, Nov 13, 2012 at 3:14 PM, Tim-Philipp Müller-2 [via GStreamer-devel]
<ml-node+s966125n4656890h50 at n4.nabble.com> wrote:

> On Tue, 2012-11-13 at 05:40 -0800, Christophe Oosterlynck wrote:
>
> > I'm looking to do the same thing. Right after the source, I want to
> insert
> > another element and let playbin2 do the rest.
> >
> > From what I see I have 2 possibilities:
> > * react to "notify::source" signal, add the extra element to the bin,
> link
> > it to the source and let playbin2 continue
> > * wait until playbin2 has finished constructing the whole pipeline,
> unlink
> > source and next element and insert extra element in between.
> >
> > Can I do one of these safely or shouldn't I fiddle with the playbin2
> > pipeline behind its back?
> >
> > What I want to achieve with this: buffer a live udp source.
> > The buffering mechanism in playbin2 is not usable for live sources as
> you
> > cannot pause them. I want to insert a queue element right behind the
> udpsrc
> > element with min-threshold-bytes. This works when I create a custom
> pipeline
> > with gst-launch. If this is not the best way to handle this, let me
> know.
> > Nevertheless, I'm still interested in the answer to my question on
> fiddling
> > with the playbin2 pipeline.
>
> You should not fiddle with playbin's pipeline, and certainly not link
> elements behind its back. It won't work. Even if it does work, it might
> stop working tomorrow. And we won't even feel bad for a second if your
> app breaks doing things like that ;)
>
> The only sane way to do things like this is to write your own element,
> which could be a GstBin subclass where you add some source and whatever
> additional elements you want and then create a ghost source pad. You can
> then register a new (or existing, if you must) URI protocol for it, so
> if you do playbin uri=fooudp://a.b.c.d:port it will plug your bin.
>
> Or you could try to come up with API for playbin to add such a thing,
> but I think would need to be rather well-justified and deemed
> interesting enough to be added.
>
> (What does your "routine" element do, "BCXA" ?)
>
>  Cheers
>   -Tim
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email] <http://user/SendEmail.jtp?type=node&node=4656890&i=0>
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://gstreamer-devel.966125.n4.nabble.com/question-how-to-add-own-customized-element-between-source-element-and-decodebin2-element-when-using-2-tp4353571p4656890.html
>  To unsubscribe from question how to add own customized element between
> source element and decodebin2 element when using playbin2, click here<http://gstreamer-devel.966125.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4353571&code=dGlmdG9mQGdtYWlsLmNvbXw0MzUzNTcxfDkxNzY2OTI5>
> .
> NAML<http://gstreamer-devel.966125.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>




--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/question-how-to-add-own-customized-element-between-source-element-and-decodebin2-element-when-using-2-tp4353571p4656896.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20121113/7a9712ed/attachment.html>


More information about the gstreamer-devel mailing list