GNOME Bugzilla – Bug 701146
gnonlin : Don't send flush start flush stop on user demand.
Last modified: 2013-06-11 19:54:42 UTC
This caused a bug following that pattern: Have two sources one after another. seek in the first source with the flush flag. Play. The playback will freeze when passing from a clip to another. A WIP modified test case is in the linked branch as well. The bug occured that way : 1) we get a seek -> comp->priv->user_seek_flush = TRUE 2) at the update at the end of the first clip, no_more_pads gets called 3) user_seek_flush == TRUE -> send flush_start 4) element lost state 5) pipeline updates base time The proposed patch doesn't use the reset_time argument of flush_stop, as for some reason the playback becomes correct but you still observe a jump on the call to update_pipeline. Instead, it removes all notions of user_seek_flush as we take care of that ourselves, and the only observed use for this is to break playback .. Tests still pass, and the observed behaviour in the updated test case is now correct.
https://github.com/MathieuDuponchelle/gnonlin/commits/eos_thread by the way.
Ok, so basically this is about reverting: commit d196cd3cdc850f2355bb16518e22ccfda1170078 Author: Sebastian Dröge <sebastian.droege@collabora.co.uk> Date: Wed Nov 28 15:49:37 2012 +0100 gnlcomposition: Make sure to pass flushes downstream if flushing seeks were received Conflicts: gnl/gnlcomposition.c
As discussed on IRC it seems that this change is causing other negative side effects. What's missing it seems is the direct correlation of a user seek event and the flush event that is generated from that, it could be generated by something else too in the time between sending the seek upstream and receiving the real flush-start. A solution to this must make sure that: a) No flushes go downstream at all for internal composition work (e.g. switching segments) b) A flushing seek should produce for downstream exactly one flush-start and flush-stop during seeking c) It must work reliable with scrub-seeking, non-flushing seeks, reverse playback, just changing/reversing playback rate, ...
commit cb1818f086dd4772ef6344193831aba8273b8215 Author: Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> Date: Wed May 29 16:55:34 2013 +0200 gnlcomposition: forward non time-resetting flush stops outside the compositi except those consecutive to a seek event. The 'reset-time' parameter has been added in 1.0, and we need it to be FALSE outside the composition. Related to https://bugzilla.gnome.org/show_bug.cgi?id=701146 commit 8153731bee539183597145ada7ba1157a546ad4b Author: Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> Date: Tue May 28 19:09:23 2013 +0200 gnlcomposition: Don't flush_start / flush_stop according to user's flags. We do it ourselves when needed, doing so led the pipeline to lose state, which was updating the base time. fixes https://bugzilla.gnome.org/show_bug.cgi?id=701146