GNOME Bugzilla – Bug 694389
non flushing seeks after a segment done, don't sync the ringbuffer
Last modified: 2013-03-22 10:42:24 UTC
When doing a non-flushing seek on segment_done. the audio does not loop properly. The ringbuffer implementations in gstaudioringbuffer and also the custom one in pulsesink believe that they have to drop the buffers to catch up. This was working in 0.10. I am a bit at loss in the code. The audiosinks don't seem to handle newsegment events. Not sure if the should call gst_audio_ring_buffer_set_sample() so sync.
in 1.0, segment accumulation was removed from the segment event. This means that now the source/demuxer/parser needs to add the elapsed time of the previous segment themselves (this must be added to segment->base).
Shouldn't that be done on basesrc?
More questions: * why would it work with flushing seeks? What is the benefit with the new approach? How do we find all the places that now need to deal with segment accumulation manually?
Should perhaps gst_segment_do_seek() update segment->base for seeks with a SEGMENT flag set?
This was a bug in adder: commit 37bf14dafd3c652be091dedcb3b06ef75b13191c Author: Stefan Sauer <ensonic@users.sf.net> Date: Wed Feb 27 21:57:15 2013 +0100 tests: add a loop test for adder commit 13e8c9878a5fe6aab8094ac0ffff0abebcdb8677 Author: Stefan Sauer <ensonic@users.sf.net> Date: Wed Feb 27 21:38:27 2013 +0100 adder: fix looping Use gst_segment_do_seek() and clip position before updating the segment.