* 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#5218Closes#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
* Load Steering Manifest
* Make UA check lazy for legacy unsupported MP3 in MP4 container check
* Add Redundant Streams tests
* Add FRAME-RATE to Redundant Stream group key and level sorting
Optimize MANIFEST_PARSED level filtering
Optimize Media Playlist check
* Do not group Variant levels with PATHWAY-ID into Fallback Stream URLs (unless building without Content Steering support)
Store and return seperate LevelAttributes per Fallback Stream URL
Align Level audio and text group ids with Fallback Stream URLs (Level._urlId)
* Content Steering Pathway grouping and selection
#5074
* Support removeLevel and improve capLevelController with level index changes
* Pathway Clone Variants
* Pathway Clone Rendition Groups
* Fix audio track alignment with timescales that differ and smooth switch when attributes do not change
* Always emit LEVEL_SWITCHING on Pathway change to ensure audio and subtitle tracks update as well
* Fix unregister listeners in fps and latency controller
* Unit test clean up
* Update README for Content Steering
* [skip netlify] Update dependency sinon to v14
* use existing clock object in gap controller test
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Tom Jenkinson <tom@tjenkinson.me>
* upstream/master: (81 commits)
Prevent seeking to 0 when startPosition is -1 Fixes#2438
Prevent RangeError exception when parsing incomplete PES Fixes#2415 Relates to #2109
Log license key size (DRM functional test troubleshooting)
Improve functional test assertion feedback
Handle stalls when seeking into buffer gaps
Update gap controller to observe buffer gaps regardless of max buffer hole
Update gap-controller comments
Add seek back to start functional test
Fix start gap jumping with partial fragments and when seeking back to start
Reset stall time after seeked and fix logger statments
Fix partial and large start gap jumping
Do not jump gaps larger than JUMP_THRESHOLD_SECONDS
Update gap-controller comments
Avoid jumping gaps that Chrome will jump Prevent reporting stalls right after "seeked"
Jump start gap in Safari fixes#2436
Update gap-controller to match v1 branch
gap-controller: add handling for audio-only autoplay issues in Chrome
gap-controller: improve some log lines
gap-controller: add unit tests for initial gap skipping + paused/hasPlayed cases
gap-controller: documentation/comments improvements
...
# Conflicts:
# package-lock.json
# scripts/travis.sh
# src/controller/audio-stream-controller.js
# src/controller/audio-track-controller.ts
# src/controller/buffer-controller.ts
# src/controller/gap-controller.js
# src/controller/id3-track-controller.js
# src/controller/stream-controller.js
# src/controller/subtitle-stream-controller.ts
# src/controller/subtitle-track-controller.ts
# src/controller/timeline-controller.ts
# src/demux/tsdemuxer.ts
# src/events.js
# src/loader/m3u8-parser.ts
# src/utils/buffer-helper.ts
# tests/functional/auto/setup.js
# tests/test-streams.js
# tests/unit/controller/ewma-bandwidth-estimator.js
# tests/unit/controller/gap-controller.js
# tests/unit/controller/subtitle-stream-controller.js
Named exports can be more easily tree-shook or deadcode detected by the
available options that can do that, so using them over default exports
could make a future optimization easier to do.