* chore: add npm publish step for release workflow
* chore: update documentation for release flow
* chore: rename workflow name from github-release to release and add discussion category name for github releases
---------
Co-authored-by: Dzianis Dashkevich <ddashkevich@brightcove.com>
* Get Codecs: Always use playlist for current pending segment instead of currently loaded playlist.
* Clear active segment id during reset everything
---------
Co-authored-by: Dzianis Dashkevich <ddashkevich@brightcove.com>
* fix: Add exception guard for VTT parsing state if vtt.js is not loaded for any reasons.
* fix: Do not override native for all iOS/iPadOS browsers
* fix: Add guard for vtt-segment-loader to actually load vtt.js in case we do not have it loaded
* chore: fix eslit errors
* chore: Add loadVttJs test
* chore: Add test for parse exception if no vtt.js is loaded for any reason
Co-authored-by: Dzianis Dashkevich <ddashkevich@brightcove.com>
Previously, if there was a segment timeout and
`experimentalBufferBasedABR` was set to `true`, then the main segment
loader would stay in a `READY` state and never resume loading segments.
This is because the buffer based ABR path doesn't follow the same flow
as non buffer based ABR, where a new playlist would be loaded
immediately and it would trigger a load. Buffer based ABR may determine
that no rendition change should be made, despite the timeout, leading
to nothing happening. This change makes the call to load explicit, but
only for buffer based ABR on timeouts.
The current live DASH playback test source uses a source where segments
are referenced by a SegmentTemplate and duration, but the server
doesn't have time syncing and appears to be about two minutes behind
local time. This leads to requests for segments beyond expected and
occasional failures.
Until that issue is fixed in VHS, switch to a live source that uses
SegmentTemplate, to be a more reliable basic live DASH playback test.
Co-authored-by: Pat O'Neill <pgoneill@gmail.com>
`PlaylistController#excludePlaylist` now takes a single object with 3 properties:
* `playlistToExclude`, defaults to the currently selected playlist
* `error`
* `playlistExclusionDuration`, defaults to the value passed in the constructor
BREAKING CHANGE: This changes the arguments for the `PlaylistController#excludePlaylist` method to take a single object instead of multiple arguments.
* `experimentalBufferBasedABR` becomes `bufferBasedABR`
* `experimentalLLHLS` becomes `llhls` (and is now `true` by default)
* `experimentalExactManifestTimings` becomes `exactManifestTimings`
* `experimentalLeastPixelDiffSelector` becomes `leastPixelDiffSelector`
BREAKING CHANGE: This renames four experimental options to no longer be experimental and enables Low Latency HLS support by default (`llhls: false` will still disable it, if desired).