GNOME Bugzilla – Bug 762739
dashdemux: try all URLs in a UTCtiming element
Last modified: 2018-11-03 13:46:51 UTC
The UTCTiming element in a DASH manifest identifies a time synchronisation method and one or more URLs that can be contacted using the specified method. Currently the gst_dash_demux_poll_clock_drift() function selects one server to poll and if that fails, it will wait 30 seconds before trying another server. If this error occurs when starting playback, dashdemux will start playback without achieving clock drift compensation, which can cause it to select the wrong starting segment. Selecting the wrong starting segment can cause requests for segments to fail with HTTP404 errors, as the chosen segment might have already been deleted from the origin or might not yet exist. Also, when a manifest update occurs, gst_dash_demux_poll_clock_drift() does not check that the currently active URL is still valid.
Created attachment 322472 [details] [review] dashdemux: try all URLs in a UTCtiming element This patch changes the behaviour to try each URL in turn until it succeeds or all URLs have been tried. If the gst_dash_demux_poll_clock_drift() function successfully polls a clock server, the existing behaviour of performing a round-robin amongst the listed URLs is preserved. When a manifest update occurs, gst_dash_demux_poll_clock_drift() will check that the currently active URL is still valid. If not, a new URL is selected.
Created attachment 322473 [details] [review] dashdemux: tests: add test of changing UTC timing method
These patches are based upon the unit tests from https://bugzilla.gnome.org/show_bug.cgi?id=762150
Created attachment 322480 [details] [review] dashdemux: tests: add test of changing UTC timing method Previous test was sometimes failing when running under Valgrind, as the test would fail if the manifest was requested more than twice. This updated version survives valgrind-forever testing.
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/352.