the previous code assumed that if the currentTime started on the segmentStart that we should include that as a valid syncPoint. From my testing this is not the case. We should instead exclude syncPoints that would start exactly on currentTime.
EX: segment#16 at 170s and currentTime at 170s should choose segment#15 rather than segment#16 as currentTime may need data from segment#15 and segment#16 to play.
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
* cuechange event not being triggered on audio only HLS streams #130
* fix linting
* change tabs to spaces
* fix linting trailing space
* add test to ensure id3 cues are parsed from audio-only streams
* Add allowSeeksWithinUnsafeLiveWindow property
This property will prevent the playback watcher from attempting to
correct seeks that fall outside of the safe live window, but still fall
within the playlist boundaries.
It can help resolve issues where the playback watcher's gap skipper tries
to seek past a gap, but the playback watcher then detects an illegal seek
and corrects it to the safe live point, which, being content already
played, leads to repeated content.
* 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