-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Description
HLS.js today may still use parts without PDT and Rendition Reports. Make sure that the conditions for Low-Latency Server Configuration Profile are met before using parts and part hold back.
This issue is blocked by #6356. Don't forget to follow-up on the CMCD stream-type check to add requirements like preload hint and independent segment violations once available:
Originally posted by @robwalch in #7725
Only checking EXT-X-SERVER-CONTROL for blocking reload or delta playlist capabilities is not enough. Both of these features can be used without partial segments (
details.partList) for live playback at a standard three target duration hold back.If we follow the requirements of a "Low-Latency Server Configuration Profile":
if ( // Playlist has EXT-X-PROGRAM-DATE-TIME details.hasProgramDateTime && // Segments have at least one key-frame (EXT-X-INDEPENDENT-SEGMENTS or track violations) // skip this requirement - something like `couldBacktrack` on LevelDetails could be nice to have // Playlist has EXT-X-PART(s) !!details.partList?.length && // Playlist has EXT-X-PRELOAD-HINT // skip this requirement - support will be added with #6356 / // Playlists has at least one EXT-X-RENDITION-REPORT or only one variant (!!details.renditionReports || this.hls.levels.length === 1) && // Blocking Playlist Reload is required details.canBlockReload ) { return CmcdStreamType.LOW_LATENCY; }Delta playlists are not required because playlist can be short enough that skipping segments doesn't add much if any benefit. Blocking reload is critical - servers that don't implement it, and worse only signal they do, perform miserably. HLS.js today may still use parts without PDT and Rendition Reports (I'll have to check), but it should not. I'll file an issue to follow up with other scheduled LL-HLS enhancements.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Status