After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 694389 - non flushing seeks after a segment done, don't sync the ringbuffer
non flushing seeks after a segment done, don't sync the ringbuffer
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal critical
: 1.1.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-02-21 21:46 UTC by Stefan Sauer (gstreamer, gtkdoc dev)
Modified: 2013-03-22 10:42 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Stefan Sauer (gstreamer, gtkdoc dev) 2013-02-21 21:46:46 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.
Comment 1 Wim Taymans 2013-02-22 07:34:34 UTC
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).
Comment 2 Stefan Sauer (gstreamer, gtkdoc dev) 2013-02-23 16:29:36 UTC
Shouldn't that be done on basesrc?
Comment 3 Stefan Sauer (gstreamer, gtkdoc dev) 2013-02-23 21:07:03 UTC
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?
Comment 4 Stefan Sauer (gstreamer, gtkdoc dev) 2013-02-25 20:36:35 UTC
Should perhaps gst_segment_do_seek() update segment->base for seeks with a SEGMENT flag set?
Comment 5 Stefan Sauer (gstreamer, gtkdoc dev) 2013-02-27 21:25:49 UTC
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.