* Fix a bug with the combination of seek-to-live (#1006) and resync-on-a-poor-guess (#1016) behaviors
* Added tests to ensure the proper sequence of events for seekable and resync logic
* Unregister the seekablechanged event handler from the tech on dispose
* Fix discontinuity sync-strategy and re-enable tests
* Fixed segment strategy to always return the segment sync-point that is closest to currentTime to ensure the most accurate decisions
* Improve sync-point determination by trying each sync-strategy and selecting the sync-point that is closest to the currentTime regardless of the order of sync-strategies
* If the last segment loaded was too far in the past, attempt to generate a better sync-point and guess again
* Changed the resync on poor guess logic to no longer rely on the buffered value for Flash compatibility
* Fix resuming after long pause on live streams by keeping seekable updated
* If new sync info shows we are trying to seek outside of seekable range, seek back to live point
* Set seekable to main when audio seekable and main seekable have no intersection
* Always trigger syncinfoupdate when updating a segment loader playlist
* Move seeking outside of seekable check to playback watcher
* fix: swap to use getTech and null-check flash tech
* Fix#968
* only registerComponent Hls in older vjs
* use registerPlugin if it exists
* addTrack cross-compat
* Add events for underflow and live resync
For QoS measurement purposes, it may be useful to know how often the playback watcher is activating. Add new events for when the player falls off the back of the live window or stalls due to a video buffer gap.
* Review comments
Minor cleanup and an additional assertion.
* Add test for qualityLevels from video with source.
* Fix qualityLevels integration where a player is created from a video
with a source.
* Defer setQualityLevels_ until tech is ready.
overrideNative requires emulated text tracks and silently fails if it's misconfigured. Instead, fail spectacularly and early and document that behavior.
* Fixed mediaIndex tracking so that it is consistent when the playlist updates during a live stream
* Removed any code in SegmentLoader#handleUpdateEnd_ that changed the mediaIndex
* Reordered SegmentLoader#playlist to make it easier to follow
* All changes to both mediaIndexes (SegmentLoader's and segmentInfo's) now happen in SegmentLoader#playlist
* Added tests for proper mediaIndex tracking with live playlists
If the segment request triggers progress events (that is, XHR2 is supported), bubble those up to the tech. This makes it clearer that buffering is happening even on very slow connections.
* Change processing segment reference on playlist refresh
* Test for correct segment references on pending segments
* Fix unreachable segment tests after rebase on async monitor buffer change
* Update media index on playlist refreshes for all requests (including syncs)
- Convert all calls to fillBuffer_ to calls to monitorBuffer_
- Rename monitorBuffer_ to monitorBufferTick_ which becomes the 500ms buffer check timer loop
- Make monitorBuffer_ schedule an immediate timer for monitorBufferTick_