Commit Graph
18 Commits
Author SHA1 Message Date
Rob Walch 0d2b39677d PLAYLIST_UNCHANGED_ERROR should not be fatal so that playback is allowed to reach the end of the playlist 2026-04-23 08:50:09 -07:00
Rob WalchandRob Walch 074821e317 Update chai, sinon, mocha, and wrangler dependencies with compatibility fixes
Replaces #7558
2026-02-09 13:45:41 -08:00
Rob WalchandGitHub 128d6fd33e Handle MEDIA_SOURCE_REQUIRES_RESET with adaptation and reset (#7702)
* Handle `MEDIA_SOURCE_REQUIRES_RESET` with variant switch, switch to SDR, and reset media source error action and flags
Fixes #7535 with unsupported HLG only variants
Follow-up to #7699 and #7697

* Do not recover from MediaSource close while attached following fatal append error

* Add media error event logging
Related to #7116

* Use add/remove event listener helpers in buffer-controller
2026-01-29 12:04:50 -08:00
Dzianis DashkevichandGitHub 3112e7071b feat: Max Unchanged Live Updates (#7704) 2026-01-26 22:58:48 -08:00
Chris TriantafilisandRob Walch e1a424fe4f refactor: route MediaSource close through error flow 2026-01-23 13:24:51 -08:00
Chris TriantafilisandRob Walch ec14649332 Update dependency sinon to v21 2025-09-20 12:25:20 -07:00
Rob WalchandGitHub 178333c022 Add ESLint syntax rules to restrict async syntax, no-floating-promises, and no-misused-promises (#7480)
ESlint error messages explain reasoning
2025-08-24 19:10:26 -07:00
Rob WalchandGitHub f70ecdc631 Supplemental codecs support (#7095)
* Parse supplemental codecs and skip auto selection when support check fails
#5558

* Add parsed supplemental video codec to tracks

* Add supplemental video codec (DoVi fourCC + profile) to codecSet to prevent adaptation across supplemental codecs

* Use supplemental video codec when supported when adding SourceBuffer
Related to #5558

* Add unit test to cover supplemental codec parsing (DoVi 8, DoVi 10, and HDR10+)
2025-03-20 12:37:52 -07:00
Rob WalchandGitHub b3be549eb7 Live reload throttling per level details schedule (#6879)
Live reload throttling per level details schedule
- Improve blocking requests with parts and low-latency mode disabled
- Defer autostart until after manifest loasded and level loaded when media playlist is source
Fixes #6858

Interstitial startup fixes
- Added `hls.loadingEnabled` getter
- Do not call startLoad when stopped and do not resume primary on first item
Fixes #6839

Break start/stop load function synchronously if loading state was changed or instance destroyed
- Fix segment loading edge cases following `removeLevel(<currentLevelIndex>)`
Addresses functional test failure: https://github.com/video-dev/hls.js/actions/runs/12124731664/job/33809171310?pr=6879
2024-12-02 16:22:32 -08:00
Rob WalchandGitHub 2299042f74 Add import/order eslint rules and run npm run lint:fix (#6378) 2024-10-10 07:44:14 -07:00
Rob WalchandGitHub a99be72ddb Use Content Steering Pathways to manage Redundant Streams (#5970)
* Use Content Steering Pathways to manage Redundant Streams and resolve their errors
* Ensure correct Pathway penalization on Playlist loading errors
* Do not reload Content Steering manifest while media is ended or detached
2023-11-15 09:21:58 -08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Tom Jenkinson
359197f20b chore(deps): update dependency prettier to v3 (#5646)
* chore(deps): update dependency prettier to v3

* run prettier

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tom@tjenkinson.me>
2023-08-22 11:24:59 +01:00
Rob WalchandGitHub b536883327 Initial selection and level filtering based on preferred codecs and MediaCapabilities (#5704)
* Make initial variant selection based on preferred codec rather than the first variant in the multivariant playlist

* Fix `minAutoLevel` and `ttfb` usage in abandon rules check

* Fix filtering of invalid video-ranges

* Log reason for ignoring start candidates with a particular codec

* Add rendition helper and move SCORE logic into getStartCodecTier

* Add support for MediaCapabilities video configuration filtering
FIxes #5707

* Add support for MediaCapabilities audio configuration filtering
Related to #5704 and #4072

* Add __USE_MEDIA_CAPABILITIES__ build const to remove MediaCapabilities checks from light build

* MediaCapabilities: Assume a framerate of 30fps since decodingInfo will throw with Level default of 0.

* Select variant with alternate video codec on video append error

* Use complete media-parsed codec name when determining if changeType should be appended

* Add `firstAutoLevel` to API.md
2023-08-21 15:24:26 -07:00
Rob WalchandGitHub a9982f7db9 Only allow large gaps to be skipped if start gap or all fragments in range are partial (#5366)
* Only allow large gaps to be skipped if start gap or all fragments in range are partial
Fixes #5360

* Fix adaptation and fragment tracking after fragment errors (gap tags)
#2940
2023-04-06 09:23:15 -07:00
Rob WalchandGitHub c5134d8a2a Relax TTFB timeout on manifest request (#5364)
* Relax TTFB timeout on manifest request
(Add support for LoadPolicy `maxTimeToFirstByteMs` of Infinity and similarly ignore value of 0)

* Add LoadPolicy API documentation
2023-04-04 11:00:34 -07:00
8e6efb1c12 Migrate to Rollup with new ESM target and improved Worker support (#5299)
* Convert build packager to rollup
* Add an es module target (#2910)
* UMD build worker injection (#5107)
* Add ES5 syntax check for UMD builds (#5301, #5288)
* Add common rollup config
* handle `self` not existing (happens in nodejs. The check that makes sure the dist file can be required in node and not throw was failing because of this.)
* Disable coverage in CI
* Add `config.workerPath` option and "hls.worker.js" build output (#5107)
* Include transmuxer-interface id ("main" and "audio") in Web Worker setup and error logs

Co-authored-by: Tom Jenkinson <tom@tjenkinson.me>
2023-03-27 11:03:39 -07:00
Rob WalchandGitHub 3e959c289f GAP Tag/Attribute Support with FRAG_GAP Error (#5257)
* Handle fragments and parts with a GAP tag/attribute
* Improve GAP fragment picking, post gap buffering, and level switching error resolution
* Cleanup FRAG_GAP error creation and inlcude current buffer length in forward gap buffer limit
* Fix gap jump over waiting for data stall when buffer length is larger than maxBufferHole but less than one second
* Warn when observing "seeked" event with empty buffer (Related to #5274)
* Handle forward buffering past GAP tags in alt audio Playlists
* Fix GAP tag handling with Redundant Streams
* Implement penalty box for Redundant Streams
2023-03-23 13:53:30 -07:00
Rob WalchandGitHub 8063580aa0 Error Handling controller and LoadPolicies (#5241)
* Implement ErrorController …
Add Error Handling Integration Tests
Handle missed probe transmux probe with with FRAG_PARSING_ERROR
Handle encrypted init segment and subtitle decryption failure with FRAG_DECRYPT_ERROR
Remove delay when retrying after timeout
Trigger FRAG_LOADING after request is made
ERROR event data type must include an error property
Add stats to network loader error callbacks to allow error handling to use request timing
Remove use of console.warn from mp4-tools
Add missing TypeScript type exports

* Remove console.assert statements
Resolves #5218
Closes #5221

* Remove unused frag buffered monitor

* Add Load Policies and deprecate frag/level/manifest timeout and retry config options

* Switch on FRAG_PARSING_ERROR or continue trying fragLoadPolicy.default.errorRetry.maxNumRetry (6) times
Fixes #5011

* Switch on FRAG_PARSING_ERROR or continue trying fragLoadPolicy.default.errorRetry.maxNumRetry (6) times 2/2
Fixes #5011

* Do not reload level after calling stopLoad() and startLoad()
Warn on currentFrag context reference change and use currentFrag to maintain correct stats ref
Fixes #5230

* Implement ErrorActions and Pathway Switching

* Fix part timeout handling
Cleanup frag stats handoff

* Update retry rules to require http status or timeout error (deprioritizes retry on parse errors)

* Retry audio and subtitle playlist loading after failure on level switch when no alternate is available
2023-02-27 11:31:16 -08:00