GNOME Bugzilla – Bug 662311
Upgrading to git master of plugins-good breaks pitivi and jokosher
Last modified: 2012-02-24 15:26:20 UTC
pitivi ** Message: pygobject_register_sinkfunc is deprecated (GstObject) /usr/share/pitivi/python/pitivi/application.py:255: Warning: g_object_set_qdata: assertion `G_IS_OBJECT (object)' failed self.mainloop.run() /usr/share/pitivi/python/pitivi/ui/filechooserpreview.py:72: Warning: g_object_set_qdata: assertion `G_IS_OBJECT (object)' failed self.__videosink = self.player.get_property("video-sink") Traceback (most recent call last):
+ Trace 228867
self._finishAnalysis("EOS")
if self._emitResult():
self._emitDone(factory)
self.emit("discovery-done", self.current_uri, factory)
*args, **kwargs)
res = cb(*ar, **kw)
self.preview_cache[uri] = factory
File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 233, in _tryToLink1 self._closeLink(element) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 233, in _tryToLink1 File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 169, in _closeLink self._closeLink(element) self._closePadLink(element, pad, pad.get_caps()) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 169, in _closeLink File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 263, in _closePadLink elif is_raw(caps) and pad_compatible_stream(pad, self.stream): RuntimeErrorself._closePadLink(element, pad, pad.get_caps()) : File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 280, in _closePadLink self._tryToLink1(element, pad, facts) maximum recursion depth exceeded File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 233, in _tryToLink1 self._closeLink(element) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 169, in _closeLink self._closePadLink(element, pad, pad.get_caps()) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 280, in _closePadLink self._tryToLink1(element, pad, facts) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 233, in _tryToLink1 self._closeLink(element) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 169, in _closeLink self._closePadLink(element, pad, pad.get_caps()) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 280, in _closePadLink self._tryToLink1(element, pad, facts) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 233, in _tryToLink1 self._closeLink(element) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 169, in _closeLink self._closePadLink(element, pad, pad.get_caps()) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 280, in _closePadLink self._tryToLink1(element, pad, facts) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 233, in _tryToLink1 self._closeLink(element) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 169, in _closeLink self._closePadLink(element, pad, pad.get_caps()) File "/usr/share/pitivi/python/pitivi/elements/singledecodebin.py", line 263, in _closePadLink elif is_raw(caps) and pad_compatible_stream(pad, self.stream): RuntimeError: maximum recursion depth exceeded
Getting the error above when I load a video into pitivi, drag it to the timeline and press play.
Adding same error from Jokosher for completeness: (jokosher:4970): GStreamer-WARNING **: pad audiotestsrc0:src accepted caps ANY although they are not a subset of its caps audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2 ]; audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2 ]; audio/x-raw-float, endianness=(int)1234, width=(int){ 32, 64 }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2 ]
+ Trace 228868
self._closePadLink(element, pad, pad.get_caps())
self._tryToLink1(element, pad, facts)
self._closeLink(element)
Tried downgradding all GStreamer modules from git to released versions and now everything works fine. Getting the following errors on the console though: pitivi ** Message: pygobject_register_sinkfunc is deprecated (GstObject) /usr/share/pitivi/python/pitivi/application.py:255: Warning: g_object_set_qdata: assertion `G_IS_OBJECT (object)' failed self.mainloop.run() /usr/share/pitivi/python/pitivi/ui/filechooserpreview.py:72: Warning: g_object_set_qdata: assertion `G_IS_OBJECT (object)' failed self.__videosink = self.player.get_property("video-sink") (pitivi:5990): GStreamer-CRITICAL **: Padname src is not unique in element pitivi+elements+singledecodebin+singledecodebin3, not adding Traceback (most recent call last):
+ Trace 228869
self._unblockPad(target=pad)
target.remove_event_probe(self._eventProbeId)
All these errors I discovered are caused by upgrading from plugins good 0.10.29 to todays git.
For the gst_pad_accept_caps() subset warning see bug #659606 and bug #662312. This warning shouldn't change any behaviour though and is unrelated to the others.
The endless recursion is caused by parsers accepting their output caps as input now. If you apply the old autoplugging logic to this, you end up re-plugging the same parser indefinitely. Moving to pitivi since this is where singledecodebin.py originates. Jokosher copied the file from there at some point (and they have diverged a bit), so attaching proposed patches for both. CC'ing Laszlo from Jokosher.
Created attachment 199627 [details] [review] pitivi proposed patch
Created attachment 199628 [details] [review] jokosher proposed patch
This does work here fpr pitivi. Thanks!
As I understand it, this is fixed/will be obsolete by the next pitivi version, as the GES port does not use the python discoverer.
Applying to pitivi's master branch for a 0.15.1 release in the meantime.