After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 784791 - dashdemux: don't rebuild streams if manifest has not changed
dashdemux: don't rebuild streams if manifest has not changed
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other All
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-07-11 12:24 UTC by A Ashley
Modified: 2018-11-03 14:10 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
dashdemux: don't rebuild streams if manifest has not changed (27.50 KB, patch)
2017-07-11 12:26 UTC, A Ashley
none Details | Review
dashdemux: don't rebuild streams if manifest has not changed (27.55 KB, patch)
2017-07-24 12:13 UTC, A Ashley
none Details | Review

Description A Ashley 2017-07-11 12:24:05 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.
Comment 1 A Ashley 2017-07-11 12:26:30 UTC
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.
Comment 2 A Ashley 2017-07-24 12:13:39 UTC
Created attachment 356292 [details] [review]
dashdemux: don't rebuild streams if manifest has not changed

fixed bug in gst_mpd_compare_base_url()
Comment 3 GStreamer system administrator 2018-11-03 14:10:50 UTC
-- 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.