5.1.0 (2026-04-15)
Features
- ABR: Inform the ABR whether the stream is low latency or not (#9882) (6805b55)
- ABR: Monitor dropped frames to influence decisions (#9918) (c3d82be)
- Add basic support for TiVo OS (#9758) (5dbb298)
- Add basic support to Titan OS (#9696) (123d665)
- Add clampAppendWindowToDuration option (#9699) (2e732b5), closes #9674
- add emsgregions, timelineregions, timelineregions as public functions for easy ID3 parsing (#9786) (b61a368)
- Add HDR and screen size detection on Titan OS (#9700) (02f579f)
- Add requestType and context to download events (#9723) (5abd49c)
- Add subtitleDelay config for manual subtitle timing offset (#9939) (4706d5f)
- Ads: Add _HLS_start_offset support for X-ASSET-LIST in HLS Interstitials (#9967) (657f31a)
- Ads: Add ad-interstitial-preloaded event (#9853) (ea95bef)
- Ads: Add ad-playing event to signal real ad playback start (#9855) (feae1d1)
- Ads: Add startedAt param to ad-break-started event (#9858) (d604cc2)
- CEA: Implement raw CEA-608 packet extraction (#9730) (6826ffa)
- DASH: Add json format support (#9788) (c92c3bd)
- DASH: Enable automatic XLink processing with fast detection and performance improvements (#9764) (e3781c4)
- Demo: offer UI configuration in the demo app (#9807) (ef6c1fe)
- HLS: Add CAN-SKIP-DATERANGES support (#9679) (943a5f5)
- HLS: Add chapter images (#9738) (e59b8b4)
- MSF: Add authorizationToken support (#9916) (83cc351)
- MSF: Add CMSF contentProtection signaling support (#9972) (aa2dfae)
- MSF: Add FETCH support for catalog (#9965) (d435f9b)
- MSF: Add MoQT draft-16 support (#9966) (90a7379)
- MSF: Make subscribe filter type configurable (#9941) (0522d0b)
- net: Add commonAccessTokenHeaderName config (#9949) (ccb4b14)
- Queue: Add metadata support in queue items (#9952) (51d3256)
- Remove com.widevine.alpha.experiment from probeSupport (#9687) (9cef117)
- Remove testing of MSS support (#9733) (42a88bc)
- UI: Add fastSeek support for MediaSession seekTo (#9884) (f7f28be)
- UI: Add mediaSession.allowAutoPiP config (#9885) (c03026f)
- UI: Add new TrackLabelFormat: LABEL_OR_LANGUAGE and LANGUAGE_OR_LABEL (#9719) (652f391)
- UI: Add showMenusOnTheRight config (#9838) (268fb19)
- UI: Add showUIOnPaused config (#9751) (5b2eb37)
- UI: Add support for chapter images in MediaSession (#9761) (fd5dac0)
- UI: Display additional information when using TrackLabelFormat.LABEL for audio tracks (#9714) (f9db524)
- UI: Enable seekOnTaps on touch-enabled desktop devices (#9935) (8ef8334)
- UI: Enable volume adjustment via mouse wheel on VolumeBar (#9888) (01165e5)
- UI: Enrich the chapter selection menu with thumbnails if the chapter does not have an image (#9811) (00f5cf6)
- UI: Modernize Watermark (#9759) (df3caa4)
- UI: Show chapter images on seek bar hover if there are no thumbnails (#9741) (3c45ae0)
- UI: Show thumbnails in Chapters button (#9740) (04c96f9)
Bug Fixes
- Ads: Fix ended detection when using supportsMultipleMediaElements = false (#9798) (3f4339d)
- Ads: Fix getting uri of InsertPresentation and ReplacePresentation (#9766) (70441a3)
- Ads: Fix playback of X-ASSET-LIST with X-PLAYOUT-LIMIT on Live (#9915) (b6a2d55)
- Ads: Improvements to the use of ASSET-LIST on devices with single-element video support (#9810) (87ac4cb)
- Ads: Synchronize the audio between ad and main content when using interstitials (#9767) (be8014e)
- Allow MSE ended in canPerformOperations_ (#9683) (f9ce5ce)
- Call endOfStream when no data available close to duration (#9866) (a62e87b)
- Check end time when getting next segment reference (#9752) (99c4184)
- ci: Update release for trusted publishing (#9768) (f6c99d4), closes #9132
- Correctly extract file extension from URLs with dots in query params (#9946) (14821c3)
- delay appending vtt subtitles depending on presence of discontinuity sequence and timestamp offset (#9676) (8b86ba5), closes #9470
- Do not update the player position with negative playback rates if the video is paused (#9732) (ab09d4d)
- Fix CryptoKey definition (#9686) (7d0422d)
- Fix HDR detection in some devices (#9908) (7e80575)
- Fix MIME type detection for uppercase types (#9976) (7e18f8c)
- Fix suspend caption rendering when captions container is not visible (#9959) (d689f69)
- Fix usage of mediaElement in shaka.Player constructor (#9698) (59f3831)
- Fix video freezes when seeking to the end when the audio and video duration are slightly different (#9695) (5c8ffe4)
- Handle ID3 EMSG duration according to AOM spec (#9757) (7a32fa2)
- HLS: Add support for DTS and DTS-HD audio codec variants (#9863) (dd5b2da)
- HLS: Fix timing of EMSG boxes when using HLS (#9744) (04c5b10)
- HLS: Prevent infinite manifest update delay (#9867) (45a86ca)
- HLS: Support external chapters (chaptersUri config) when load a Media Playlist (#9720) (08eb22f)
- Honors streaming.retryParameters for segments (#9796) (90f5921)
- Improve NativeTextDisplayer robustness, track-kind issues and enhance cleanup logic (#9776) (e35ab38)
- Include isSwitchingContent in UnloadingEvent when load replaces existing content (#9934) (6c286b6)
- include unencrypted decodingConfigs in preferredKeySystems loop (#9975) (0f322b0)
- Increase tolerance for duplicate segment detection (#9865) (12f7296)
- LCEVC: Fix live support when using DASH dual track (#9841) (72a8e94)
- LCEVC: Fix multi-period VOD support (#9837) (b9abb39)
- Limit recursion depth in TXml to prevent stack overflow DoS (#9964) (f48bd96)
- MSF: Add PUBLISH_NAMESPACE_OK response to server PUBLISH_NAMESPACE (#9909) (e85e74a)
- MSF: Add support for moqtail relay (#9819) (c2bd00a)
- MSF: Correct handling of PUBLISH_DONE (#9893) (c272e0b)
- MSF: Correct parsing of publishDone message (#9890) (47ed5ac)
- MSF: fall back to session namespace for media subscribes (#9808) (0db1349)
- MSF: Fix CMSF catalog parsing (#9710) (48b553a)
- MSF: fix namespace tuple encoding in SUBSCRIBE message (#9803) (6630340)
- MSF: Fix target latency support (#9825) (59c41c1)
- MSF: handle SUBSCRIBE_NAMESPACE (0x11) control message (#9871) (313d1ce)
- MSF: Improve buffer management (#9831) (ecfccbb)
- MSF: move catalog typedefs to externs to prevent property mangling (#9804) (2682367)
- MSF: prevent video segment eviction during initial buffering (#9809) (04eab23)
- MSF: Remove "Possible encoding problem detected!" (#9814) (5c6b1c9)
- MSF: Remove minimum segment availability duration (#9812) (4eec222)
- MSF: support draft-14 SubgroupHeader types (0x10-0x1D) (#9802) (184ae48)
- MSF: Use bigint natively (#9826) (0c0a47c)
- net: Avoid duplicate progressUpdated in HttpXHRPlugin onload (#9726) (ff7cea5)
- Prevent live stream infinite buffering when isAudioMuxedInVideo is present (#9835) (941d165)
- prevent negative times in Stats (#9784) (cca8f50)
- Properly clone nested cues and CueRegion in Cue.clone() (#9940) (845b6bd)
- Set IntersectionObserver root to null (document not supported in Chrome 63) (#9782) (26ecc07)
- StreamingEngine: correct variable reference in discardReferenceByBoundary_() (#9943) (93290d2)
- TTML: sanitize backgroundImage URL to prevent CSS injection (#9929) (b6bc406)
- TTML: Update position alignment map (#9735) (548fe29)
- tXml: Return default value for a missing attribute (#9734) (5b81f70)
- UI: Add a gap to settings menu to avoid overlapping with the edge of the video (#9765) (93080cd)
- UI: Close overflow and settings menus when user seeks (#9834) (7669984)
- UI: Ensure consistent language names with languageDisplay 'standard' (#9887) (59afe8a)
- UI: Fix chapter marker issues (#9708) (3948908)
- UI: Fix chapters markers size (#9728) (e8c8e0c)
- UI: Fix delay updating the styles after seeks (#9846) (2e266d6)
- UI: Fix delay updating the styles while seeking (#9847) (3419e29)
- UI: Fix display "live" label on streams without seek bar (#9891) (1407596)
- UI: Fix display chapter images on chapter selector. (#9889) (ab317c0)
- UI: fix presentation time display when display time is larger than duration (#9712) (1d57fc4), closes #9711
- UI: Fix seek using keyboard when the UI is hidden (#9933) (f205d4e)
- UI: Fix tooltip text on subtitle position and size buttons (#9886) (b41d79c)
- UI: Improve touch handling for single and double tap actions (#9937) (b6a0c05)
- UI: Improve touch handling for single and double tap actions (#9944) (8d5f33e)
- UI: Player automatically enters fullscreen on single tap on mobile (#9709) (5a6f1c6)
- UI: Prevent hidden seek button from interfering with double-tap (#9748) (a3f4fd4), closes #9705
- UI: Slight delay in removing chapter title labeling (#9707) (ffb67bc)
- UI: sync seek position with hover and onChange timestamp using consistent position calculation (#9827) (3de29d4)
- UI: sync seek position with hover timestamp using consistent position calculation (#9818) (6ee5d38)
- UI: sync seekbar on timestamp position value between mousemove and onChange in firefox (#9840) (a7a37f5)
- UITextDisplayer: avoid ResizeObserver loop warning (#9722) (1139a4e)
- Use resize event to look for resolution change (#9951) (9e0bf22)
- util: Add support for MPEG-2 video codec (#9860) (d15a070)
- Validate that mediaElement.getStartDate returns a Date (#9701) (e57a509)
- wrong variable reference in
discardReferenceByBoundary_()causing (93290d2)
Performance Improvements
- DASH: Add period caching to speed up manifest parsing (#9353) (1c83a69)
- DASH: drop array operations on unique IDs when parsing periods (#9870) (3a5d588)
- DASH: loop over adaptation sets using the partition method (#9862) (c9f8057)
- Eliminate DataViewReader allocation and use native clz32 in ExpGolomb (#9779) (9575e2a)
- hls: optimize playlist newline parsing to reduce memory overhead in text parser (#9775) (a789c89)
- HLS: parse tag string directly instead of creating an array (#9856) (8819786)
- HLS: reduce GC pressure when parsing HLS manifest tags (#9857) (79d29e0)
- Improve performance of TsParser (#9783) (ac010c4)
- media: replace filter calls in SegmentIndex with binary search (#9880) (c86ce86)
- MSF: Improve compatibility with the draft-14 (#9895) (76d655b)
- MSF: Reduce live latency to one segment (#9947) (2db061d)
- MSF: Reduce startup latency changing the type of subscribe (#9903) (40e46d5)
- net: avoid array allocations in XHR header parsing to reduce GC pressure (#9874) (c2531a8)
- net: Optimize getExtension URI parsing (#9816) (e7b6d10)
- player: stop recreating functions on video time update (#9854) (39cc2bd)
- Remove redundant base64/xml conversions in PlayReady (#9778) (15c6022)
- replace shift lpop with binary search (#9936) (6f57772)
- S2T: Improve SpeechToText code (#9718) (56ac70d)
- transmuxer: Reduce allocations in the h264 transmuxer (#9963) (d2ba9fb)
- Transmuxer: replace identical object literals with named constants (#9852) (e687a6c)
- TS: Eliminate per-PES wrapper array allocations in parse loop (#9883) (2c8cfd2)
- UI: Optimization of chapter operations (#9739) (442ff14)
- VTT: reduce GC pressure in VTT text parser (#9869) (503234e)