Ticket #1632 (closed enhancement: fixed)
HLS: improve heuristics to start with high quality
|Reported by:||jeroen||Owned by:||courtenay|
Description (last modified by jeroen) (diff)
The current HLS provider implements its heuristics like Smooth Streaming: it starts low and then bumps up the speed one segment at a time. It would be better to actually start at the right quality instantly (like we do for RTMP). We agreed to do it in this way:
- Start off with the segment that best fits the screen width
- Defined as the stream for which Math.abs(player.width - source.width) is smallest.
- If the manifest does not contain any stream RESOLUTION, start with the highest quality instead.
- Set a timer to 3 seconds. If the first fragment still isn't loaded after 3 seconds, discard it and restart with the lowest quality fragment.
- After the first fragment is fully loaded, we have a bandwidth estimation. Use that to load subsequent fragments.
- Defined as the highest quality stream for which player.bandwidth /source.bitrate > 1.5.
- Note the screen width heuristic still applies as well, in addition to the bandwidth heuristic.
As a last note, we are not taking framedrops into account. If there's still code in the HLS provider that monitors / responds to framedrops, you can take that out. I don't there is anymore at this point...