Ignore unsupported renditions (those with an excludeUntil of Infinity)
This time use a separate timer for the final rendition.
Second try at #396. Reverts #471.
* Add document for program time from player time
* Attach video timing info from probe and transmuxer to segments
* Change `appendBuffer` to use a config instead of an optional trailing
callback parameter
* Add TODO for fmp4 timing info, since fmp4 segments won't go through
the transmuxer
* Add creating-content.md doc file with ffmpeg command to create HLS VOD
stream with EXT-X-PROGRAM-DATE-TIME tags
* Fix seekToStreamTime to perform seeks when findSegmentForStreamTime
returns estimates
* Rename convertToStreamTime and seekToStreamTime as convertToProgramTime
and seekToProgramTime
* Fix intermittent Firefox loop test failures
* Bump mux.js to 5.1.0
* add clock.ticks to now async operations
* adding more comments
* use real browser for Chrome
* skip fullscreen test for now
* export path to chrome, start xvfb, add display flag
* use base Chrome
* initial method stub
* take playlist directly instead of reference to MasterPlaylistController. Simplify method arguments.
* rework API to have onsuccess and onreject callbacks. Return accurate and estimate values where appropriate
* use node style callback. Added top-level test for convertToStreamTime
* skip flakey test
* Update sinon to 1.10.3
* Update videojs-contrib-quality-levels to ^2.0.4
* Fix test for event handler cleanup on dispose by calling event handling methods
* Remove IE11 section from README (#1325)
* Throttler: Minor changes to make throttler work with native safari (#1118
Run a test pass with video.js 6 and video.js 5.
Also, use in-publish to not run build when running `npm install`.
Consolidate karma configs into one config but keep npm scripts for them.
Add `this.clock.tick(1)` after player creation to support video.js 6.
* Use a starting `bandwidth` value of `0.0625 MB/s` on Android devices
* Do not allow an up-switch in quality until a certain amount of forward buffer has been filled, `BUFFER_LOW_WATER_LINE`
* Dynamically increase the `BUFFER_LOW_WATER_LINE` and `GOAL_BUFFER_LENGTH` from `0 - > 30` and `30 -> 60` respectively during the first 30 seconds of playback
* Abort segment requests before completion if bandwidth reported by the XHR `progress` event shows that network conditions are not fast enough to complete the request without causing rebuffering
* blacklist the playlist that has stopped being updated
* pull out the playlistEnd calculation to a separate function, rewrite seekable and playlistEnd to reduce the amount of repeat code and add tests for playlistEnd
* handle the expired for VOD case, check for null on expired instead of checking the sync points and rename playlist update check function
* add event listener for playlist isn't a fresh update in playlist-loader
* never blacklist final available final rendition
* reset the loader state after error occurs to keep requesting the final rendition
* delay the requests for final rendition and get the segment loader start loading after errors
* 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