GNOME Bugzilla – Bug 757603
dashdemux: incorrect waiting for fragments to be available
Last modified: 2015-11-05 20:27:14 UTC
For a live stream, adaptive demux will call gst_adaptive_demux_stream_get_fragment_waiting_time to determine how much it needs to wait until a fragment is available. But that function uses gst_mpd_client_get_next_segment_availability_end_time in order to determine the availability. It should use the segment's availability start time (the beginning of the segment, not the end). As a consequence, a live stream will be delayed if the segment end is in the future, even if the start is in the past (so it is available on server). For example, if the live stream started to be available 10s ago (mpd->availabilityStartTime = now - 10s) and the first segment has a duration of 15s, adaptive demux will wait for another 5 seconds before playing. Normally, it should start playing right away, because first segment's availability start time is equal to mpd->availabilityStartTime which is in the past.
Created attachment 314849 [details] [review] proposed patch
wrong report. The gst_mpd_client_get_next_segment_availability_end_time actually returns the availability start time. I will soon rename this function to avoid future confusion.