[Bug 777780] New: GstBaseParse incorrectly handles non-flush seek

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Thu Jan 26 09:49:18 UTC 2017


https://bugzilla.gnome.org/show_bug.cgi?id=777780

            Bug ID: 777780
           Summary: GstBaseParse incorrectly handles non-flush seek
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Mac OS
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: julien.isorce at gmail.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

With a simple hello world app that basically just creates a playbin and sets
its uri, it is possible to highlight a problem that prevents to properly loop
over playbacks.

When doing a gst_element_seek(flag=~flush, position=0) upon
GST_MESSAGE_SEGMENT_DONE it waits the duration of the stream before looping.

This is because segment.base is incremented by twice the duration of the
stream.

I encountered the problem when playing audio files like file.{aac, flac, mp3,
ac3} where there is no proper demuxer involved. More generally the problem
happens when this is GstBaseParse that handles the seek.

The segment.base is first incremented here
https://cgit.freedesktop.org/gstreamer/gstreamer/tree/libs/gst/base/gstbaseparse.c#n4551
and then here
https://cgit.freedesktop.org/gstreamer/gstreamer/tree/libs/gst/base/gstbaseparse.c#n4649
(the memcpy just below actually writes it)

In short it is like gst_segment_to_running_time is called recursively twice
(output transfered to input).

So I am wondering if the line 4649 pointed above should just be removed. Any
comment ? Thx!

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list