[Bug 753751] Dashdemux: returned seekable range for live streams is not usable

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Sep 22 07:09:21 PDT 2015


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

--- Comment #13 from A Ashley <bugzilla at ashley-family.net> ---
When I looked at this, I thought I traced it down to discarding the seek
request in the GST_EVENT_SEEK handler in gstadaptivedemux.c:

      if (gst_adaptive_demux_is_live (demux)) {
        gint64 range_start, range_stop;
        if (!gst_adaptive_demux_get_live_seek_range (demux, &range_start,
                &range_stop)) {
          gst_event_unref (event);
          return FALSE;
        }
        if (start < range_start || start >= range_stop) {
          GST_WARNING_OBJECT (demux, "Seek to invalid position");
          gst_event_unref (event);
          return FALSE;
        }
      }

If an app issues a GST_QUERY_SEEKING and then a GST_EVENT_SEEK with the start
position set to the start value from the GST_QUERY_SEEKING call, 
then the (start < range_start) condition triggers. This is because range_start
is calculated from a call to gst_adaptive_demux_get_live_seek_range() that
occurs after the call to gst_adaptive_demux_get_live_seek_range() call that
responded to the query. For DASH, gst_adaptive_demux_get_live_seek_range() is
calculated by sampling current time of day. It only takes one tick of the RTC
between GST_QUERY_SEEKING and GST_EVENT_SEEK to make start<range_start.

-- 
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