3.1.3: Seamless period transition issue in static MPD
Created by: fabienvallee
Environment
-
The MPD passes the DASH-IF Conformance Tool on https://conformance.dashif.org/ -
The stream has correct Access-Control-Allow-Origin headers (CORS) -
There are no network errors such as 404s in the browser console when trying to play the stream -
The issue observed is not mentioned on https://github.com/Dash-Industry-Forum/dash.js/wiki/FAQ -
The issue occurs in the latest reference client on http://reference.dashif.org/dash.js/ and not just on my page
- Link to playable MPD file:
- Dash.js version: 3.1.3
- Browser name/version: firefox/chromium
- OS name/version: linux
Seamless period transition seems to work quite well in the last release, this is really great! However I face an issue with a static MPD.
Steps to reproduce
- Play a multiperiod static mpd ( not sure mine had anything special - there is a small gap at the end of the first period but I don't know if it's related).
Observed behaviour
- period transition is not seamless (no prebuffering, playback stops for buffering). Was seamless (w/ prebuffering) in previous versions.
Console output
The issue comes from the StreamController, in checkIfPrebufferingCanStart(). timelineConverter.calcSegmentAvailabilityRange always return invalid range. https://github.com/Dash-Industry-Forum/dash.js/blob/52301f595c00937f6bdbbd86be4e949bc6a45c6a/src/streaming/controllers/StreamController.js#L285
I believe this is because the "dynamic" behavior is forced , it should be changed to:
timelineConverter.calcSegmentAvailabilityRange(voRep, adapter.getIsDynamic());