GNOME Bugzilla – Bug 784791
dashdemux: don't rebuild streams if manifest has not changed
Last modified: 2018-11-03 14:10:50 UTC
Every time the manifest is re-loaded, dashdemux creates a new set of stream objects and destroys the old objects. It then tries to position playback within these new streams to match the position before the manifest update. As shown by comments in the source code, this position calculation is not entirely accurate and there are several open bug tickets relating to manifest refreshes. For example https://bugzilla.gnome.org/show_bug.cgi?id=762933 In most situations, the manifest hasn't actually changed and there is no need to perfom the complex, expensive and slightly inaccurate process of full stream recreation. To make matters worse, some commercial DASH packagers set the minimumUpdatePeriod to the same as fragment duration, causing a manifest reload after every fragment. I think it would be useful if dashdemux detected that the manifest has not changed so that it could avoid the whole stream re-creation step when there are no changes.
Created attachment 355325 [details] [review] dashdemux: don't rebuild streams if manifest has not changed This patch adds a new function gst_mpd_equal() which allows a comparison between two parsed MPD files, by performing a deep compare of the fields in each GstMPDNode. This allows dashdemux to download the manifest as required by the value of the minimumUpdatePeriod field but only perform stream re-creation when the manifest has actually changed.
Created attachment 356292 [details] [review] dashdemux: don't rebuild streams if manifest has not changed fixed bug in gst_mpd_compare_base_url()
-- 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/581.