Emit warnings in log + visible warnings in sample player when playback issues are possible due to nonconforming content
Created by: sandersaares
It is normal that a player attempts to play back even abnormal content, for some definitions of abnormal. After all, a player is not a validation tool.
Yet, many people often use the player as a validation tool! "It plays, therefore it is valid" is a very widespread attitude. As DASH-IF, we should be doing our utmost to educate the DASH community on best practices, so this situation is suboptimal.
I propose dash.js be modified to better guide users toward creating good content as follows.
Mechanism for educating users
When dash.js detects that content does not follow DASH-IF guidelines (including those inherited from DASH or other specs/standards):
- A warning is emitted in the log.
- A "conformance violation" event is raised via the API.
The warning text should briefly describe the violation and a call-to-action to use the DASH-IF conformance tooling for additional validation, something like:
Warning: (Description of violation). You may experience playback failures. For detailed validation use https://conformance.dashif.org/
In case of missing UTCTiming element, for example, it would be:
Warning: No UTCTiming element is present in the manifest. You may experience playback failures. For detailed validation use https://conformance.dashif.org/
In the DASH-IF reference player, the "conformance violation" event is hooked up to a visual non-modal warning message, to make it as obvious as possible to developers.
What is a conformance violation?
Profile signaling in the MPD is not reliable. People do not mark the right profile. So we cannot know what the intent really is. All we know from dash.js perspective is "hmmm this might get you in trouble". So let's roll with that.
Warn on any violation of any should/shall statement in relevant MPEG standards, DASH-IF guidelines and partner organization guidelines (e.g. DVB) that may cause issues for dash.js playback. The idea is not to validate conformance, the idea is to educate on aspects we know are problematic, regardless of profiling and intent of content author.