GNOME Bugzilla – Bug 696899
oggdemux: non flushing segment seek makes buffers late
Last modified: 2013-04-04 08:11:35 UTC
Created attachment 240163 [details] Test application to demonstrate the bug I wrote a small video looping test and found that looping with non-segment seek no longer work with oggdemux. The bug was tracked down to GstSegement::base being set as NONE in gst_segment_do_seek() if position is outside the segement. After discussion with Wim, it's a normal that position is slightly outside the segment since being equal or outside is what most demuxer checks to determin EOS. Instead of clamping the value in every demuxer, we suggested doing the clamp in the gst_segment_do_seek() helper function. Path coming.
Created attachment 240164 [details] [review] [PATCH] segment: Fix seeking when position is slightly outside the segment Very often, when the end of a segment is detected by demuxer, the position is slightly outside the segment boundaries. Currently, if that is the case the base will be set to NONE instead of normal accumulation. This would break non-flushing seeks in oggdemux and most likely other demuxers. --- gst/gstsegment.c | 3 +++ 1 file changed, 3 insertions(+)
Created attachment 240165 [details] [review] [PATCH] oggdemux: Allow EOS on timestamp equal to stop/start Changed the check to a current_time equal to the stop will produce EOS instead of the next one. Also, segment.start can't be NONE, so removing this check. --- ext/ogg/gstoggdemux.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
Note, segment seek in push mode simply does not stop with oggdemux, different bug ?
commit ab44e14c52555136738ff77aaad48b2eeea46ce6 Author: Nicolas Dufresne <nicolas.dufresne@collabora.com> Date: Sat Mar 30 11:06:59 2013 +0000 segment: Fix seeking when position is slightly outside the segment Very often, when the end of a segment is detected by demuxer, the position is slightly outside the segment boundaries. Currently, if that is the case the base will be set to NONE instead of normal accumulation. This would break non-flushing seeks in oggdemux and most likely other demuxers. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=696899 commit e58f838ca3a69c5eb2efcb01dc033097e31b5d83 Author: Nicolas Dufresne <nicolas.dufresne@collabora.com> Date: Sat Mar 30 11:00:35 2013 +0000 oggdemux: Allow EOS on timestamp equal to stop/start Changed the check to a current_time equal to the stop will produce EOS instead of the next one. Also, segment.start can't be NONE, so removing this check. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=696899