GNOME Bugzilla – Bug 678575
[0.10] regression: playbin2 visualisation sync messed up after seeking
Last modified: 2012-06-25 15:39:37 UTC
This seems to work fine with the last release (seek with arrows right/left): gst-launch-0.10 playbin2 uri=file:///path/to.mp3 video-sink='navseek ! ximagesink' vis-plugin=goom flags="soft-colorbalance+soft-volume+text+audio+video+vis" but not with current 0.10 git. When seeking forward the segment/timestamps seem to be messed up somewher ein the visualisation branch, at least it complains about my computer being too slow and only rendering an emergency frame every second. I should add that it works fine in totem in 0.10 git though, not sure yet why that behaves differently.
Created attachment 217053 [details] [review] bin: do not skip state_changes of other bins The problem was caused by patch: commit 554b81ed243c27385e11b925722b91c2fafdcfb4 bin: try harder to avoid state changes in wrong direction When the bin does an upward state change, try to avoid doing a downward state change on the child and vice versa. Add some more unit tests for this fix. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=621833 And some bin's state changes were being skipped on this pipeline, leaving some element's base_time broken, causing sync issues. The patch attached is really simple. It just won't skip bins state changes. If we think that skipping bins state changes is good, we need to propagate the base_time to children even when se skip a bin state change (add some extra function to gstbin to do that), which is equally simple.
I guess distributing the base time should be separated from the state change function somehow
I think this was fixed with commit d05ad920ce09b3b9c941f757163df9caacda97fd Author: Wim Taymans <wim.taymans@collabora.co.uk> Date: Tue Jun 12 17:11:51 2012 +0200 bin: always recurse into bins when doing state changes Never skip the state change of a bin because it needs to update the base time of its children when needed.
(In reply to comment #2) > I guess distributing the base time should be separated from the state change > function somehow I agree, I had problems in camerabin2 because of this. Could we make gst_element_set_base_time overrideable and bins would pass it on to its children?
(In reply to comment #3) > I think this was fixed with > > > commit d05ad920ce09b3b9c941f757163df9caacda97fd > Author: Wim Taymans <wim.taymans@collabora.co.uk> > Date: Tue Jun 12 17:11:51 2012 +0200 > > bin: always recurse into bins when doing state changes > > Never skip the state change of a bin because it needs to update the base > time of > its children when needed. Great, I'll backport and push to 0.10
Pushed as 36c61df29724eb2b2732eb0efb49ba897d0bb64a to 0.10