GNOME Bugzilla – Bug 696915
decodebin: get_sticky event STREAM_START fails on newly-exposed pad
Last modified: 2013-04-04 13:11:27 UTC
I am trying to get hold of the incoming streamid from uridecodebin using the get_sticky_event API call, unfortunately it just returns 'NONE'. stick=src_pad.get_sticky_event(Gst.EventType.STREAM_START, 0) print(stick) while x < len(self.audiodata): if stick==self.audiodata[x]['streamid']: #print(str(pad)+" - "+"streamid from parse_stream_start "+ str(self.probestreamid)) sinkpad = self.encodebin.emit("request-profile-pad", self.audioprofilenames[x]) src_pad.link(sinkpad) x=x+1
For this we need a) decodebin, uridecodebin, etc. to push all sticky events downstream already from the pad probes before exposing the pad b) ghostpad in the src case to copy all sticky events of the target to the proxy pad and the ghostpad immediately when calling gst_ghost_pad_set_target(). But *not* forward them downstream, only copy them. There's currently no API for that in GstPad.
I think this should do it, reopen if it still fails. There is also some debug now in decodebin to list the sticky events before exposing the pad in case something is wrong. commit 92b77c5aa4536dfa5f1eff0c729560fbf0ba2c52 Author: Wim Taymans <wim.taymans@collabora.co.uk> Date: Thu Apr 4 15:00:52 2013 +0200 decodebin2: forward all sticky events to decodepad Forward all sticky events to the decodepad before exposing the pads. This makes sure all sticky events are on the exposed pad. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=696915