dashdemux: don't rebuild streams if manifest has not changed
Submitted by A Ashley
Link to original bug (#784791)
Description
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.