Files
shaka-player/CHANGELOG.md
T
2026-04-15 16:30:28 +02:00

577 KiB
Raw Blame History

Changelog

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)

5.0.0 (2026-02-06)

⚠ BREAKING CHANGES

  • Require apps to call updateStartTime instead of setting media element currentTime directly during startup (#9668)
  • Remove setTextTrackVisibility from the public API (#9664)
  • UI: Remove airplay button from uncompiled version (#9663)
  • UI: Remove airplay button (#9654)
  • UI: Change buttons order (#9651)
  • UI: Add bigButtons config and remove addBigPlayButton config (#9636)
  • UI: Enable customContextMenu by default on desktop browsers (#9635)
  • UI: Add documentPictureInPicture config (#9634)
  • Remove shaka.util.XmlUtils (#9616)
  • Remove codem-isoboxer dependency (#9608)
  • Use shared logic for MediaError details (#9594)
  • Text displayers should receive a shaka.Player pointer (#9515)
  • Move speech to text to the accessibility section in config (#9507)
  • ABR: Remove abr.removeLatencyFromFirstPacketTime config (#9496)
  • Remove autoShowText and simplify initial text track selection (#9435)
  • UI: Improve Media Session management (#9483)
  • Simplify shaka.ads.AdManager interface (#9357)
  • Remove LRC, SBV, SSA support (#9330)
  • Remove MSS support (#9329)
  • Remove setSequenceMode from TextParser plugins (#9326)
  • Remove enableTextDisplayer from TextDisplayer plugins (#9311)
  • Remove all deprecated things (#9162)

Features

  • ABR: Remove abr.removeLatencyFromFirstPacketTime config (#9496) (687f0ee)
  • Add a bufferAppending event (#9377) (d79d001), closes #9328
  • Add application/mp4 as valid mimetype on MoQ (#9558) (f1de698)
  • Add automatic subtitles (#9123) (61d80f6)
  • Add configurationchanged event (#9531) (909655f)
  • Add getMimeType method to shaka.Player (#9592) (55b0681)
  • Add isDynamic method to shaka.Player (#9471) (a7919e4)
  • Add listenMulti and listenOnceMulti to shaka.util.EventManager (#9652) (bd167c3)
  • Add MoQT draft-14 + WARP/MSF draft-1 experimental support (#9409) (ef361ed)
  • Add native chapters support (#9208) (9aed4df)
  • Add new config to allow stop fetching new segments on pause (#9567) (e96442c)
  • Ads: Add basic SVTA2053-2 support (#9172) (840ca96)
  • Ads: Add getCurrentAd method (#9291) (6c683d7)
  • Ads: Add new interstitials events (#9444) (2e124ba)
  • ads: Add option to disable snapback behavior in ad settings (#9188) (a09d18e)
  • Ads: Add support for SVTA2053-2 in HLS Interstitial with ASSET-LIST Carriage (#9159) (7dd132d)
  • Ads: Add support for tracking urls (#9144) (e6dfa90)
  • Ads: Add SVTA2053-2 support when using native HLS (#9310) (9a85fca)
  • Ads: Allow auto init MediaTailor (#9351) (470d01c)
  • Ads: Allow configure interstitial preload ahead time (#9464) (f690503)
  • Ads: Allow init Media Tailor without container (#9294) (3996872)
  • Ads: Allow preload post-roll interstitials (#9467) (be921e6)
  • Ads: Apply disableTrackingEvents config to MediaTailor (#9189) (454a285)
  • Ads: Support multi tracking urls in VAST (#9157) (1c941d7)
  • Ads: Support noJump and skipAfter on Alternative Media Presentations (#9246) (822dc0c)
  • Allow detect Fairplay on shaka.media.SegmentUtils (#9585) (eda2429)
  • Allow override subtitle position (#9522) (c6e6082)
  • Cast: Support getCurrentAd while casting (#9306) (02a2bb5)
  • Change dvvC box to free box for Dolby Vision workarounds (#9101) (729cea8)
  • CMCDv2: Response Received (#9362) (ac2d390)
  • DASH: Add programinformation event (#9202) (0ecc68c)
  • DASH: Add support for SegmentTimeline@Pattern (#9669) (4082ed7)
  • Derive frameRate from fMP4 samples and improve MP4 parsing in SegmentUtils (#9626) (1debeb8)
  • Disable remote usage on TV, CONSOLE and CAST devices (#9375) (b1a7e7b)
  • Disable streams from MSE errors (#9097) (57229da)
  • EME: Add retryLicensing() and failureCallback for manual license retry (#9638) (d98169b)
  • EME: Implement MediaKeySessionClosedReason handling (#9540) (2bfb798)
  • FairPlay: Add support for Gumlet (#9396) (49a4d56)
  • Handle AdManager in CastProxy, CastSender and CastReceiver (#9266) (76cea8d)
  • Handle forced subtitles automatically by default (configurable) (#9497) (1ace441)
  • HLS: Add a mediaTypes field to shaka.extern.DrmInfo (#9198) (1ad3497)
  • HLS: Add AES-256-GCM support (#9562) (e5d9471)
  • HLS: Add support for com.apple.hls.chapters (#9195) (7ccb20a)
  • HLS: Detect new chapter streams added after initial load (#9573) (c4a506a)
  • HLS: Remove enableAudioGroups usage (#9228) (e7c0a01)
  • HLS: Support chapters on Live and custom config to add it (#9561) (bdfd028)
  • Improve management of processLocally when using Speech To Text (#9449) (8f62320)
  • Move speech to text to the accessibility section in config (#9507) (86bfea0)
  • MSF: Add support for custom namespaces via config (#9586) (4c945af)
  • net: Allow request filters to be called multiple times (#9129) (6d04f7f)
  • Only disallow SourceBuffer.changeType on PlayReady when using Edge browser (#9603) (71af24f)
  • Preload Manager update language configuration for audio and text (#9244) (7a70998)
  • Queue: Allow set a custom player (#9256) (f20c5e4)
  • Remove enableTextDisplayer from TextDisplayer plugins (#9311) (7f662a1)
  • Remove all deprecated things (#9162) (945c57a)
  • Remove alwaysStreamText config (#9053) (dc235fc)
  • Remove autoShowText and simplify initial text track selection (#9435) (73ee27b)
  • Remove codem-isoboxer dependency (#9608) (12b9a9f)
  • Remove LRC, SBV, SSA support (#9330) (4bc2518)
  • Remove MSS support (#9329) (e85b648)
  • Remove setSequenceMode from TextParser plugins (#9326) (8e0e0d8)
  • Remove setTextTrackVisibility from the public API (#9664) (2db6038)
  • Remove shaka.util.XmlUtils (#9616) (d452350)
  • Require apps to call updateStartTime instead of setting media element currentTime directly during startup (#9668) (a10287e)
  • Simplify shaka.ads.AdManager interface (#9357) (643e2c8)
  • SRT: Improve SRT to WebVTT conversion and color handling (#9624) (afd2422)
  • Support HLS live chapters using PDT or relative to start time of the stream (#9563) (6557fee)
  • Suspend caption rendering when not visible using IntersectionObserver + Page Visibility + PiP (#9545) (14ebd65)
  • Temporarily increase of segmentPrefetchLimit at high playback rates (#9231) (3c91c16)
  • Text displayers should receive a shaka.Player pointer (#9515) (d5be5d6)
  • UI: Add bigButtons config and remove addBigPlayButton config (#9636) (3fd73ce)
  • UI: Add chapters marks to seek bar (#9643) (0542863)
  • UI: Add copy video frame button (#9384) (ad64dba)
  • UI: Add default config for CAST devices (#9257) (500672f)
  • UI: Add documentPictureInPicture config (#9634) (023111f)
  • UI: Add enableVrDeviceMotion config (#9303) (081beff)
  • UI: Add new config to keep the menu open until user closes it (#9245) (ea72a74)
  • UI: Add PiP placeholder with poster and exit icon (#9653) (333a941)
  • UI: Add showUIAlways config (#9648) (60366e7)
  • UI: Add showUIAlwaysOnAudioOnly config (#9390) (83d63d5)
  • UI: Add subtitle size button (#9530) (6ba19b2)
  • UI: Add support to nexttrack, previoustrack and skipad Media Session actions (#9218) (ffcbd4e)
  • UI: Add translations for qaa and qad languages (#9501) (7ae5328)
  • UI: Add video type button (#9107) (c0b85c7)
  • UI: Adjust context menu positioning to avoid overflow (#9632) (a0384a1)
  • UI: Allow all items registered in overflow to be in the context menu (#9527) (2d02ae3)
  • UI: Allow configure the key name for shortcuts and add some new ones (#9105) (9d7b37b)
  • UI: Allow display remaining time in the presentation time (#9249) (5be5289)
  • UI: Allow show the content title (#9206) (179f7e8)
  • UI: Change buttons order (#9651) (fbbfb11)
  • UI: Enable customContextMenu by default on desktop browsers (#9635) (0c0c2ff)
  • UI: Enable doubleClickForFullscreen for mobile (#9566) (6e23b40)
  • UI: Improve Media Session management (#9483) (ff72abc)
  • UI: Improve overflow menu style (#9631) (4b679d8)
  • UI: Improve title management via MediaSession (#9203) (77e7f77)
  • UI: Increase interactive area of seek bar and volume bar (#9124) (e9afbba), closes #9120
  • UI: Modernize style of big play button (#9630) (7c42832)
  • UI: Remove airplay button (#9654) (514246c)
  • UI: Remove airplay button from uncompiled version (#9663) (be208dd)
  • UI: Setup chapter information in Media Session (#9417) (955edba)
  • UI: Show chapter name on seek bar when hovering (#9413) (978c0ed)
  • UI: Support ad events when casting (#9280) (879f927)
  • UI: Support sub menus on context button (#9526) (0d3f3d0)
  • UI: Use audio description label when accessibility purpose is visually impaired (#9537) (9e5c1a9)
  • UI: Use com.apple.hls.poster for poster setup (#9216) (d540658)
  • UI: Use Intl.DisplayNames to show the language name (#9440) (fd2112b)
  • Unify text track selection and visibility by allowing null to disable text. (#9048) (48b1f09)
  • Update catalog format to MSF/CMSF v0 and standardize MOQ terminology (#9614) (c3b8461)
  • Use shared logic for MediaError details (#9594) (5c05132)

Bug Fixes

  • ABR: Check for the existence of variables (#9201) (aa7a9fc)
  • ABR: Safeguard calls to this.switch_ (#9565) (ae971d0)
  • Add cue fontSize fallback when using fontScaleFactor (#9117) (badaafc)
  • add guards to prevent errors removing already detached media sources (#9599) (b226f80)
  • Add usage of AccessibilityPurpose.VISUALLY_IMPAIRED when using src= (#9255) (cdf5f6d)
  • Ads: Avoid duplicated HLS interstitials request when using ASSET-LIST (#9168) (9df740a)
  • Ads: Avoid fire an error when calling to onHLSMetadata when it's not necessary (#9286) (1f20652)
  • Ads: Do not start interstitials when the main video paused (#9242) (b2a946d)
  • Ads: Don't allow change supportsMultipleMediaElements while an ad is playing (#9460) (4a657a3)
  • Ads: Fix back to live when using X-RESUME-OFFSET (#9171) (97b549e)
  • Ads: Fix bad detection of support multiple media elements on interstitials (#9145) (5f9ba4d)
  • Ads: Fix LL HLS with interstitials pre-roll ad is played slightly after primary content when using ASSET-LIST (#9183) (194af00)
  • Ads: Fix overlays when the base stream is live (#9040) (b65f685)
  • Ads: Fix playback of overlays ads on mobile devices (#9078) (2179c6a)
  • Ads: Fix playback of post roll-ads when using interstitials (#9428) (a8311da)
  • Ads: Fix send _HLS_primary_id on HLS interstitials (#9581) (dbfe560)
  • Ads: Fix start time of the interstitial when playing a pre/post-roll (#9459) (50610f8)
  • Ads: Fix TypeError: null is not an object (evaluating 'b.mimeType.startsWith') (#9060) (45a82ac)
  • Ads: Fix wrong interstitial id when deleting old interstitials (#9146) (67782e3)
  • Ads: Handle bad HTTP status errors as specified, play main content (#9612) (eefc8c2)
  • Ads: Harden MediaTailorAdManager state and cuepoint handling (#9619) (674e71d)
  • Ads: Only support mutipleMediaElements when not using native controls (#9217) (772b557)
  • Ads: Populate getTimeOffset for insterstitials (#9140) (468b84f)
  • Ads: Remove duplicate listener on IMA CS integration (#9367) (388548f)
  • Ads: Returns VAST <Ad> tag's id attribute in getAdId() (#9200) (b4252a6)
  • Ads: Update HLS ad skip control (#9276) (c08f27d)
  • Allow calculate the segment size from partials segments (#9094) (81344a8)
  • Always detect framerate as positive (#9133) (75dc75e)
  • Attach mediaKeys when the device does not force us to wait for the encrypted event (#9059) (4e1e9e6)
  • Audit all usage of readBytes for memory leaks (#9027) (849bff1)
  • Avoid audio streams filtering and use AdaptationSetCriteria instead (#9457) (2c1ab30)
  • Avoid create a cast sender on Cast devices (#9258) (de5ff7b)
  • Avoid download init segments again when not necessary (#9042) (f5fa1da)
  • Avoid InvalidStateError when getting buffering when MSE is closed (#9437) (72132f5)
  • Avoid null pointer exception on MSE reset (#9089) (5726c6a)
  • Bad init segment size calculation when using byte ranges (#9092) (8dbd074)
  • Bad segment size calculation when using byte ranges (#9090) (26c4b0d)
  • build: Fix build compat with mac homebrew java (#9225) (8f5770c)
  • Cast: Add missing player methods while casting (#9309) (dd95d45)
  • Cast: Allow serialize arrays (#9277) (1916b22)
  • Cast: Allow serialize nested events (#9281) (de4c7b6)
  • Cast: Allow serialize nested events (#9283) (b376cc9)
  • Cast: Fix propagation of currentAd while casting (#9307) (51ef883)
  • Cast: Fix propagation of currentAd while casting (#9308) (747578a)
  • CEA: Remove closed captions only on video update (#9125) (98fc330)
  • ci: Fix Firefox tests running on Windows (#9670) (8db8d7a)
  • CMCDv2: Memory leaks with ts param on request mode (#9193) (f526136)
  • CMCDv2: Prevent processing when target is disabled in response mode (#9065) (c79b66b)
  • ContentWorkarounds: Insert PSSH boxes for fake init encryption (#9600) (482117f)
  • Correctly destroy enqueue blocking operations (#9677) (ebcf0fe)
  • DASH: Fix can't access property "delete", unusedStreamsPerPeriod[(i - periodsMissing)] is undefined (#9038) (2ca6810)
  • DASH: Fix stall on multiperiod streams (#9030) (bc6a7f2)
  • DASH: Handle external SegmentBase BaseURL and SIDX offset fallback (#9477) (42df30a)
  • DASH: Memory leak on DASH streams (#9369) (219c733)
  • DASH: Shift segment timeline with cached presentationTimeOffset (#9481) (0bc7a96)
  • Delay position change during codec switch (#9293) (2cd7bd7)
  • demo: Fix assets metadata (#9609) (302e14b)
  • Demo: Fix report bug button (#9161) (c691bc6)
  • Disable smooth codec switching for Hisense VIDAA (#9601) (7d857b5)
  • Dispatch metadata events when stream is paused and the user seeks (#9628) (9de4a98)
  • Do not exclude time to first byte from measurements by default (#9476) (a84c6b5)
  • Don't cancel trick play on VOD end (#9239) (c52b51b)
  • don't clear text displayer cache for vtt if we're clearing cea cache (#9538) (2d23ea4)
  • DRM: Apply initDataTransform before deduping (#9393) (1aa2903)
  • DRM: Fix cache keys to include encryption scheme (#9392) (37b952d)
  • DRM: Fix multikey playback on devices with SW DRM only (#9443) (dfbcc64)
  • Ensure that the ABR has all the updated variants after making the initial selection (#9344) (f18c393)
  • FairPlay: Fix FairPlay compatibility with DASH (#9436) (2a45491)
  • Fire segmentappended event when adding a dependency data (#9382) (2ad4306)
  • Fix access violation in TimedMetadata handler (#9431) (39758c8)
  • Fix alignItems usage on old devices (#9544) (c4de8f1)
  • Fix audio/video bandwidth calculation when only one of them is provided (#9091) (cd8285f)
  • Fix blink subtitles when using NativeTextDisplayer in Safari (#9082) (2d8056a)
  • Fix CANNOT_ADD_EXTERNAL_CHAPTERS_TO_LIVE_STREAM error code (#9138) (c94a34f)
  • Fix case-insensitive MIME type matching in ManifestParser (#9416) (a5e262f)
  • Fix default modifyCueCallback config (#9322) (856cb53)
  • Fix exception reading audio-only content (#9465) (8d7a15b)
  • Fix external text track timing when using HLS (#9511) (84dccd3)
  • Fix getAudioTracks for HLS with multiplexed streams (#9047) (948a5f7)
  • Fix getAudioTracks() return twice the same track (#9588) (125badc)
  • Fix getLiveLatency when using Apple's native HLS (#9083) (5bd55ce)
  • Fix HDLR box parsing (#9582) (32c8911)
  • Fix HDR detection on WebOS on compiled builds (#9185) (1e0dcee)
  • Fix infinite evict loop on text unload (#9331) (5c5c72e)
  • Fix infinity initial loop when no autoplay and there is a initial gap (#9372) (91b2f51)
  • Fix playback of muxed(audio+video) mp4 (#9412) (e90c782)
  • Fix selectAudioTrack doesn't keep the same video stream when ABR is disabled (#9116) (fca4df7)
  • Fix some data population on shaka.media.SegmentUtils.BasicInfo when the segment is encrypted (#9406) (da14c9c)
  • Fix some EMSG events missing (#9064) (e2f8254)
  • Fix startAtSegmentBoundary config when using a live stream (#9640) (9fd0be1)
  • Fix usage of isRemotePlayback when casting (#9251) (9741079)
  • HLS: Allow calculate stream bandwidth using segment size (#9093) (bfec94d)
  • HLS: Allow get better segment size estimations (#9043) (06d92a5)
  • HLS: closeSegmentIndex of EXT-X-IMAGE-STREAM-INF when not necessary (#9070) (9a6cba1)
  • HLS: Determine the duration of an HLS content when it ends live (#9153) (17e3529)
  • HLS: Fix bandwidth detection (#9230) (a384e0c)
  • HLS: Fix handling of multiple audio groups (#9220) (c3ccf8f)
  • HLS: Fix infinite buffering instead of end of stream for live (#9150) (7fa6b95)
  • HLS: Fix label name for audio-only content without EXT-X-MEDIA (#9520) (691e7b5)
  • HLS: Fix playback of EVENT playlist when transition from live to vod (#9054) (830b863)
  • HLS: Fix subtitle codec detection when using MP4 (#9473) (3ab6a96)
  • HLS: Fix support DATERANGE from 1970-01-01T00:00:00.000Z (#9580) (33cf09c)
  • HLS: Improve abort decision logic (#9041) (3205235)
  • HLS: Keep syncTime continuous by using previous value, if available (#9135) (d9e9da3), closes #9086
  • HLS: Remove label for video streams (#9176) (afd9427)
  • HLS: Support PATHWAY-ID (Content Steering) for subtitles (#9442) (2100fd1)
  • HLS: Support playback with gaps (#9506) (25c4539)
  • Improve handling of in-progress content (#9414) (ab16b73)
  • Improve quota exceeded handler (#9130) (99d4a1e)
  • Increase tolerance of completion ratio calculation (#9366) (4b1c3fe), closes #9365
  • LCEVC: Add remove buffer functionality for LCEVCdecJS (#9163) (afd2577)
  • LCEVC: Return early if playerInterface object is destroyed (#9621) (dde661f)
  • Make clearLiveSeekableRange more robust (#9649) (b6a73d4)
  • Make selectVideoTrack more resilient when using HLS with audio groups (#9232) (8a0cdfb)
  • Make setLiveSeekableRange more robust (#9641) (5c013eb)
  • Make sure that all variants are either: audio-only, video-only, or audio-video when preload (#9046) (288c247)
  • Make sure the player is attached when loading a new stream (#9292) (d10c5bc)
  • MSF: Do not re-encapsulate Shaka errors (#9613) (a9df794)
  • MSS: Fix originalId creation in order to avoid duplicated originalId (#9126) (0ff4062)
  • Offline: Fix playback of streams with audio muxed in video (#9229) (ee00301)
  • parseHDLR for Apple QuickTime hdlr box compatibility (#9577) (66b0c74)
  • Prefer disableStream over create a gap when a segment is missing (#9516) (35b8b08)
  • Preload: Do not fetch license if delayLicenseRequestUntilPlayed is set (#9388) (cc73fc5)
  • prevent infinite loop when constructing CMCD relative urls (#9055) (89d12a8), closes #9050
  • Properly assign shaka.extern.DrmInfo#mediaTypes (#9340) (e47c05d)
  • Queue: Fix start time when go to previous item (#9222) (c3cb63f)
  • Return the correct getAudioTracks when only differs the codec (#9178) (00e634c)
  • Return the correct getVideoTracks when only differs the audioId (#9179) (e582fa8)
  • Setup correct video codecs on MSE (#9667) (fd83489)
  • Support use addTextTrackAsync with NativeTextDisplayer (#9122) (cad470c)
  • text track active property when using src= (#9462) (35f187e)
  • text track active property with SRC_EQUALS load mode (#9418) (888f6d3)
  • Thumbnails: Fix thumbnails precision issues (#9536) (b733fe2)
  • Transmuxer: Keep stream width/height if it already exists (#9553) (c7694ca)
  • TTML: Fix MP4 TTML Parser producing invalid image subtitles (#9559) (aaecc07)
  • UI: Add LCEVC label in resolution menu (#9186) (f7c7d2a)
  • UI: Align seek hover and drag time (#9429) (e03b2a9)
  • UI: Allow play in VR in all compatible devices (#9297) (bc0dd79)
  • UI: Always show thumbnail position in the correct place (#9264) (22ad6a6)
  • UI: apply background color only for configured icons (#9121) (07462f8)
  • UI: Avoid layout shift when displaying thumbnails (#9490) (12a3287)
  • UI: Avoid show NaN in ad info (#9284) (3f3a52d)
  • UI: Change AirPlay icon to unfilled variant (#9113) (0c93128)
  • UI: Change Cast icon to unfilled variant (#9250) (beb5f69)
  • UI: Change PiP icon to be consistent with YT (#9118) (fd0b5d2)
  • UI: Change PiP icons to non filled variant (#9106) (da7ceb8), closes #9102
  • UI: Disable VR mode while casting (#9296) (846799b)
  • UI: Don't allow seek with seek on taps when there is a linear ad (#9191) (79f0512)
  • UI: Fix constructed through DOM auto-setup (#9352) (8b6fbbc)
  • UI: Fix error showing resolution list (#9219) (87b44ac)
  • UI: Fix pointer events in some big buttons on small screens (#9650) (99ec36d)
  • UI: Fix position of ad containers (#9077) (ea0ce82)
  • UI: Fix position of elements when using Shaka UI with Bootstrap v5.0 (#9235) (dfb5ebd)
  • UI: Fix position of sub menus (#9485) (0f4e849)
  • UI: Fix position of tooltip on top controls (#9236) (965e88e)
  • UI: Fix seek on taps position in CSS (#9192) (46b8dbe)
  • UI: Fix show Ad Stats button when it's not necessary (#9525) (9b728fd)
  • UI: Fix show Replay button on big play when there is not loaded video (#9234) (79e94a9)
  • UI: Fix show seek bar ad markers (#9155) (624e13b)
  • UI: Fix use of text selection component with old cast receivers (#9262) (adc4e12)
  • UI: Fix video poster setup when using CastProxy on audio only streams (#9252) (9f68f8b)
  • UI: Improve image quality on posters (#9373) (a04d084)
  • UI: Make Overflow/Settings Menu position dynamic (#9395) (da7bb4d)
  • UI: Make top controls clickable when playing an ad (#9241) (a131576)
  • UI: Only setup the poster on local video (#9263) (a94fa3f)
  • UI: Only show ad containers if they have child nodes (#9156) (ccf0755)
  • UI: Prevent PiP window size issues by using relative sizing (#9633) (248b831)
  • UI: Respect prefers-reduced-transparency for big play button (#9104) (17c2b0b)
  • UI: Respect prefers-reduced-transparency for tooltips and seekbar times (#9057) (cd2b6d4)
  • UI: Show always thumb indicator in the seekbar (#9167) (872e465)
  • UI: Show Dolby Vision text for any DV codec (#9487) (38054c9)
  • UI: Show forced subtitles in subtitle selector (#9441) (98895ce)
  • UI: Show hours in time statistics (#9410) (2ceeec3)
  • UI: Support non-square pixels in getResolutionLabel_ (#9300) (3143505)
  • UI: Update chapters button on live (#9560) (ee97007)
  • UI: Update chapters marks on live (#9509) (ee859a6)
  • UI: Use the same icon in big and small play buttons (#9304) (a5c2c4f)
  • Use timeupdate event for buffering states (#9445) (06793e4), closes #9438
  • Validate prefetched variant in preload manager (#9213) (0890c2c)
  • webOS: Disable smooth codec switch on webOS (#9273) (578c087)
  • WebOS: Script-errors on WebOS when detecting HDR support (#9604) (ceb01dc)
  • WebVTT: Fix lines starting with spaces don't break correctly (#9069) (f2b5034)
  • WebVTT: Fix lines starting with spaces don't break correctly (#9100) (2eb3b0a)
  • WebVTT: Fix times when using HLS without X-TIMESTAMP-MAP (#9313) (72955e0)
  • Xbox: Enable little-endian PlayReady key IDs to resolve DRM error (#9348) (eed8573)
  • Xbox: Implement requiresClearAndEncryptedInitSegments method for xbox (#9254) (3290498)
  • Xbox: Report buffer satisfied if time is progressing (#9397) (cab5207)

Performance Improvements

  • ABR: Minor performance optimization in EWMA alpha calculation (#9623) (7faa386)
  • ABR: Try to suggest new streams after enable (#9177) (f702e55)
  • Ads: Detect earlier initial preloadError in order to increase the performance when using supportsMultipleMediaElements = false (#9666) (dbcf5ac)
  • Ads: Improve back to live performance when using interstitials and low latency (#9079) (f2aca29)
  • Ads: Lazy initialization of SVTA ad manager (#9350) (2f36d4f)
  • Allow update the segments on streaming engine more often (#9398) (afc91ce)
  • boundary: Call MSE reset only on leading content type. (#9598) (be34778)
  • CEA: Remove captions attached to removed segments (#9068) (f128e22)
  • Chapters: Check does parser exist before fetching chapters track (#9204) (ed70317)
  • Close media source only on audio(not muxed)/video updates (#9152) (74915ce)
  • Close segment index after 5 seconds without usage of getThumbnails (#9071) (a503034)
  • HLS: Assume that partial segments have the same mimetype as full segments (#9080) (a2b936f)
  • HLS: Optimise manifest text parser (#9131) (2146c81)
  • HLS: Optimize mimetype resolution during parsing (#9088) (72a9fdb)
  • HLS: Reduce redundant parser calls (#9066) (a36fb32)
  • HLS: Use find instead of filter to get attributes (#9405) (526d6e0)
  • Improve startup performance of LiveSeekableRange operations (#9665) (2562fcb)
  • Minor performance optimizations in TXml text processing and root lookup (#9622) (793749a)
  • Optimize restrictions check (#9261) (1dde5c7)
  • Prefer Uint8Array's {to,from}{Base64,Hex} methods (#9472) (2154049)
  • Remove unnecessary ABR update during load (#9029) (d465feb)
  • Speed up shaka.Player.probeSupport() (#9095) (3c0e932)
  • UI: Combine consecutive configure calls (#9049) (f8db982)
  • Use Map.getOrInsert/getOrInsertComputed native methods (#9546) (05b0972)

Reverts

  • Revert "fix(HLS): Keep syncTime continuous by using previous value, if available (#9135)" (#9425) (60d58c4)
  • Revert "fix(UI): Align seek hover and drag time (#9429)" (#9447) (f751ccb)

4.16.0 (2025-08-26)

Features

  • Add enableAudioGroups config (#8792) (93117d2)
  • Add HDR detection in Tizen and WebOS (#8680) (ff1ef7c)
  • Add shaka.extern.DrmSessionMetadata to LICENSE_REQUEST_FAILED error (#8788) (4713909)
  • Ads: Add EXT-X-DATERANGE schema for overlay support (#9014) (b5a8d95)
  • Ads: Support clickThroughUrl on interstitials ad manager (#8903) (6a1f793)
  • Allow switch between UITextDisplayer and NativeTextDisplayer on runtime (#8736) (a1cb769)
  • Allow update some prefer* config on the fly (#9001) (8e71a9b)
  • CMCD: Add bg key support (#8973) (eab22af)
  • CMCD: Add cmsdd key support (#8976) (842f2d4)
  • CMCD: Add cmsds key support (#8977) (51a9c9c)
  • CMCD: Add event mode support (#8980) (c33e19e)
  • CMCD: Add rc key support (#8972) (9e1ea12)
  • CMCD: Add response mode for CMCDv2 (#8782) (2420cc9)
  • CMCD: Add sn key support (#8975) (712850c)
  • CMCD: Add ts key support (#8971) (ab3a452)
  • CMCD: Add ttfb and ttlb keys support (#8974) (863714d)
  • CMCD: Add url key support (#8970) (c6df3cf)
  • DASH: Add support for certificate acquisition URL (#8824) (5b5e222)
  • DASH: Change from L3D to non-L3D after the successful playback (#8876) (a7cb005)
  • DASH: Remove multiTypeVariantsAllowed config and add support for it on all browsers (#8858) (bf26c3f)
  • Demo: Add new VR streams from Apple (#8728) (1c8f457)
  • Enable low latency by default on low latency streams only (#8843) (410eb05)
  • Expose video label in Track and VideoTrack (#8947) (5654aea)
  • Expose video roles in Track and VideoTrack (#8944) (4967e52)
  • HLS: Get info about projection from REQ-VIDEO-LAYOUT instead of parsing the init segment (#8731) (bc4d337)
  • Queue: Add preloadPrevItem config (#8910) (e3c8631)
  • Queue: Allow include preloadManager in QueueItem (#8906) (c56b5ec)
  • Support videoRole in AdaptationSetCriteria (#8945) (570fec9)
  • Transmuxer: Split init segment and segment data when appending to MSE (#8855) (b59066e)
  • UI: Add alwaysShowVolumeBar config (#8807) (6b9569a)
  • UI: Add enableKeyboardPlaybackControlsInWindow config (#8751) (e8208c2)
  • UI: Add MaterialSVGIcon element (#8969) (d798db5)
  • UI: Add more keyboard shortcuts (#8767) (ce391bc)
  • UI: Add Polish translation to skip previous button (#8852) (9313a46)
  • UI: Add skip previous button (#8849) (ca8c9bf)
  • UI: Change SVG icons for statistics (#8985) (9ab921a)
  • UI: Enable preferVideoFullScreenInVisionOS by default (#8806) (50dd978)
  • UI: Only show resolutions with the same video role (#9000) (681e85a)
  • UI: Remove save video frame on overflow menu by default (#8927) (67f4014)
  • UI: Replace icon font with SVG icons (#8986) (7d61334)
  • UI: Show the audio selector when they only differ in the label (#8745) (5022f9d)
  • UI: Use Dolby Vision as the name instead of HDR in the resolution menu (#8926) (f2d2ed7)
  • UI: Use Mbps notation in resolution selector (#8779) (becf5d3)

Bug Fixes

  • ABR: Fix abr switching in some cases (#8836) (fbb7161)
  • ABR: Only update the variants if they are different (#8999) (4891486)
  • Add Orange STB Back To requiresEncryptionInfoInAllInitSegments (#8966) (b6dd9b6), closes #8965
  • Ads: Fix AD_STARTED delayed when using the base video (#8880) (fbf408c)
  • Ads: Fix interstitials support when using PiP on Safari (#8875) (e0bdbd6)
  • Ads: Fix interstitials when not using multiple media elements (#8681) (863aa07)
  • Ads: Fix pre-roll identification when using VMAP (#8898) (b312314)
  • Ads: html unescape node attributes with urls (#9024) (e864848)
  • Allow change NativeTextDisplayer on runtime (#8735) (fa1a6b7)
  • Allow preload segments when we discard the reference by cross boundary logic (#8862) (0fb680a)
  • Another Sony Bravia TV Playready Failure (#8791) (62e55d4)
  • avoid calling new Date(null * 1000) (#8963) (47ea45d)
  • Avoid minifying AdaptationSetCriteria configuration (#8997) (41263d4)
  • Avoid reset or changeType in MSE when not necessary (#8744) (dbc76f9)
  • Avoid throw BUFFER_READ_OUT_OF_BOUNDS when not necessary (#8753) (231dd03)
  • Bail out on other decodingInfos when we found a preferred and supported one. (#8829) (5245bc3)
  • Cancel update before schedule an update after fetchAndAppend (#8878) (e65c3c6)
  • CEA: INVALID_MP4_CEA error being thrown when shouldn't be (#8748) (49c228c)
  • Check that the current reference exists before updating codecs (#8920) (bdae7a0)
  • Close segment index when calling to unloadTextStream (#8754) (66efb0a)
  • CMCD: Fix player expand/collapse events (#9016) (c8d2452)
  • DASH: Always fit segments to period boundaries on VOD (#8825) (f512b3a), closes #8774
  • DASH: Change start number for SubNumber templating, based on DASH 6th edition (#8860) (7526f2b), closes #8859
  • DASH: Consider codec profile when matching multi-period renditions (#8842) (f69a7fa)
  • DASH: Fix L3D streams (with k parameter) without SubNumber (#8770) (cb22ab6)
  • DASH: Fix Playback Fails on Widevine L1/L3 Streams (#8936) (087387b)
  • DASH: Fix segmentSequenceCadence default value (#8877) (1f115d3)
  • DASH: Prevent memory leak in uncompiled mode (#8884) (27163ff)
  • DASH: Update SegmentSequenceProperties according to latest spec (#8909) (e8ccbee)
  • DASH: Update timeline on PTO change (#8869) (ff34d1c)
  • DASH: Use the correct Representation ID for Uri substitution of media segments (#8760) (88627c3)
  • Demo: Assign valid regex to asset name input (#8815) (3dd685c)
  • Demo: Fix keep custom config on page reload (#8776) (d3fd770)
  • Demo: Fix keep custom config on page reload (#8777) (35124e4)
  • Demo: Interact with queueManager before do any adManager operation (#8894) (a8af2c2)
  • Don't cancel trick play near to live edge if rate is less than 1 (#8772) (15401c3)
  • Don't filter video streams with different roles (#8991) (cb52a88)
  • Don't sort TS samples (#8708) (c15e524)
  • EMSG: Fix memory leak in EMSG handling (#9004) (c79b796)
  • Fix 4k stream support within browser env on Tizen (#8764) (e303024)
  • Fix Apple Vision Pro (Vision OS) detection and other VR devices detection (#8805) (5b27f0f)
  • Fix Apple Vision Pro detection (#8732) (3506c4f)
  • Fix Apple Vision Pro integration with some features (#8915) (1ec86ef)
  • Fix bad assert on DeviceFactory (#8705) (1c4a206)
  • Fix buffering states when rebuffering goal is 0 (#9018) (d3fcb2b)
  • Fix chopped playback in some DASH multiperiod streams (#8717) (49f569d)
  • Fix default value of defaultAudioRobustnessForWidevine and defaultVideoRobustnessForWidevine on Android (#8896) (b87bf9d)
  • Fix disable captions after load using src= on Safari (#8841) (34484a3)
  • Fix end-of-stream detection for VOD (#8813) (75e2711)
  • Fix isAudioMuxedInVideo check on StreamingEngine (#8893) (42cf404)
  • Fix keyboard controls in fullscreen mode (#8962) (c767405), closes #8960
  • Fix PlayReady support on Chromium Windows (#8683) (642cecf)
  • Fix probeSupport when testing opus and flac codecs (#8987) (d7d3c51)
  • Fix QuickTime and MOV formats playback on Chromium (#8989) (dac3813)
  • Fix reloadTextStream function when using text with init segments (#8811) (80f407f)
  • Fix selectAudioTrack when using src= (#8857) (b02bb97)
  • Fix Tizen 3 default cross-boundary strategy (#8850) (4340864)
  • Fix ts parser when using B-frames (#8696) (cc98d40)
  • Fix URI encoding with plus characters (#8916) (6ce9cf4), closes #8713
  • Fix videoBandwidth when using LCEVC dual track (#9013) (f905bda)
  • Fix WebVTT position handling in UITextDisplayer (#9017) (aaef0ab)
  • HLS: Fix APAC detection (#8724) (8cd5470)
  • HLS: Fix disableVideo when the context has muxed audio (#8831) (441f60b)
  • HLS: Fix display stpp subtitles (#8995) (43a45ea)
  • HLS: Fix getAudioTracks in some HLS streams (#8996) (57d3eae)
  • HLS: Fix HLS audio only stream does not play when URI field is omitted from #EXT-X-MEDIA (#8988) (5abfc00)
  • HLS: Fix playback of content with mixed containers (mp4 and ts) (#8837) (f7c2295)
  • HLS: Fix preload initial variant (#8835) (c6b1390), closes #8830
  • HLS: Fix preload initial variant on Tizen (#8873) (97c28c9)
  • HLS: Fix presentation delay when there are not enough segments (#8793) (762063d)
  • HLS: Fix reset media source when using muxed content (#8738) (bb57889)
  • HLS: Fix resync issues on Safari (#8808) (7d43ee4)
  • HLS: Fix switching between muxed and alternate audios (#8741) (c1e2f7a)
  • HLS: mediaSequenceToStartTime isn't maintained correctly for AUDIO manifest (#8784) (e23112e)
  • HLS: Reset PTS/DTS reference at discontinuities when using TS (#8794) (f5c0fb2)
  • LCEVC: Create segmentIndex on makeAbortDecision_ (#8838) (57c7d73)
  • Live to VOD discards the wrong segments when crossBoundaryStrategy is not KEEP (#8863) (731c4f1)
  • MCap improvements in order to support more MCap implementations (#8821) (f056c8c)
  • NativeTextDisplayer.remove() not following the spec (#8714) (3cbc770)
  • net: Throw HTTP_ERROR if request header is not valid (#8990) (57f6980)
  • Offline: Fix persistent session removal (#8895) (62dce4a)
  • Only change appendWindowStart and appendWindowEnd when necessary (#8716) (b58a2e2)
  • Prevent text caret from showing with certain browser settings (#8953) (8e12f4d), closes #8950
  • Reset MSE when the current readyState is closed (#8930) (f4f3676)
  • Reset text visibility on unload (#8775) (7a8dc53)
  • Save current variant when using unloadAndSavePreload (#8907) (cd69646)
  • Separate gap jumping seeks from user seeks (#8911) (656c588)
  • Session Update Error Handling For Youview Platform (#8918) (d4e0809)
  • Transmuxer: Fix bad generation of silence frames (#8983) (e8b12d0)
  • Transmuxer: Fix width calculation when using HEVC-TS (#8868) (60cb17d)
  • UI: Avoid useless exception (#8992) (000fe3c)
  • UI: Disable keyboard controls when there is not asset loaded (#8766) (1577475)
  • UI: Don't exit Fullscreen and PiP when unloading an ad (#8879) (140abf9)
  • UI: Don't show improper bandwidths in the resolution selector (#8928) (2dc7a40)
  • UI: Don't show loop button for live streams (#8700) (28f8f11)
  • UI: Exit from Fullscreen and PiP when unloading (#8848) (55aabbb)
  • UI: Fix 3D detection (#8725) (ee5de11)
  • UI: Fix default value of enableKeyboardPlaybackControlsInWindow (#8765) (1dc4a96)
  • UI: Fix detection of some VR formats (#8727) (084d35a)
  • UI: Fix fullscreen doesnt work on iPad (Edge/Chrome) (#8757) (4c97ed8)
  • UI: Fix missing style for shaka-tooltip-status (#8699) (0fa8ab3)
  • UI: Fix PageDown and PageUp shortcuts (#8769) (1731b33)
  • UI: Fix unhandled rejection on remote button (#8778) (30166a6)
  • UI: Fix volume slider control is not accessible by keyboard (#8809) (1b2b6b8)
  • UI: Handle video duration greater than 24 hours (#8692) (35ccd2b)
  • UI: Hide player labels when More Settings menu is open (#8694) (f341535)
  • UI: Hide settings menus when the user changes the current time (#8693) (09f8130)
  • UI: Make the overflow menu visually smoother (#8773) (342e968)
  • UI: Not show thumbnails over ad periods (#8800) (f4bb0aa)
  • UI: Only enable enableFullscreenOnRotation and forceLandscapeOnFullscreen on mobile (#8701) (192fec9)
  • UI: Only show replay button when there is a duration in the media element (#8740) (4ac3c97)
  • UI: playback rate selection update and skip-previous icon size (#8993) (243a86b)
  • UI: Prevent override box-sizing style on range elements (#8810) (97ad3ea)
  • UI: Resize overflow and settings menus when necessary (#8742) (c7d2a38)
  • UI: Seek on double-tap regardless of player controls visibility (#8998) (7ebdc3b), closes #8949
  • UI: The playback time displayed in the seek bar is different from currentTime when click (#8758) (c97e0a6)
  • UI: Update play button state when the player is loaded (#8739) (e9d32be)

Performance Improvements

  • Ads: Improve the startup of interstitials when the starttime is 0 (#8899) (1267f5d)
  • Ads: Reduce VMAP processing time (#8897) (65fd477)
  • Close media source only on audio/video updates (#8826) (b1579eb)
  • DASH: Do not store duplicated pssh data buffers (#9006) (a054b7e)
  • DASH: Simplify multiperiod eviction (#9007) (048ee45)
  • DRM: Run expiration timer only when EME is in use (#8853) (c14e6cc)
  • HLS: Do not store duplicated pssh data buffers (#9009) (062259e)
  • Mp4Generator: Lazy initialize static buffers (#8919) (51ce66c)
  • net: Do not parse headers twice in XHR plugin (#8710) (e8a8ad9)
  • Only parse spatialVideoInfo for video segments (#8726) (4c2476d)
  • Simplify getAudioTracks internally when using src= (#8703) (53db655)
  • Simplify region timeline buffer management (#8921) (7b51098)
  • Simplify selectAudioTrack internally (#8687) (aab4c27)

4.15.0 (2025-06-03)

Features

  • ABR: Add abr.removeLatencyFromFirstPacketTime config (#8446) (a8bc7e2)
  • Add additional codec & channel count configs to Adaptation Set Criteria (#8597) (ce830d7)
  • Add backToLiveWhenOutsideOfLiveWindow config (#8575) (9406905)
  • Add Device API (#8210) (970d775)
  • Add getChaptersAsync method (#8541) (ba56bae)
  • Add isVideoOnly method (#8641) (f86245c)
  • Add more info on src= tracks when the browser support it (#8299) (9021bd8)
  • Add more info on src= tracks when the browser support it (#8302) (77a3f56)
  • Add oldEncrypted and newEncrypted to boundarycrossed event (#8421) (fe332bd)
  • Add queue manager (#8649) (3daeac6)
  • Add useTrickPlayTrackIfAvailable method (#8594) (ed69267)
  • Added MetadataAdded event (#8282) (f3a8113)
  • Ads: Add allowStartInMiddleOfInterstitial config (#8289) (c012b9c)
  • Ads: Support latest spec of background in DASH overlays (#8556) (91034c4)
  • Ads: Update DASH overlay implementation (#8503) (3fab47c)
  • Cast: Transfer side-loaded text/thumbnail/chapter tracks (#8553) (1cf5cad)
  • Create a new simple API for Video (#8454) (99a6f25)
  • DASH: Add support for "Spoken Subtitles" in tva:metadata:cs:AudioPurpose (#8364) (ab01bb7)
  • DASH: Parse ProducerReferenceTime nodes (#8439) (ce08da5)
  • Demo: Modernize cast receiver demo (#8484) (22bc6aa)
  • Expose Vast ad ID (#8477) (0a651cc)
  • Handle audio focus events (#8427) (8dd330f)
  • Improve stats when using src= in Safari (#8304) (251ff28)
  • LCEVC: Add buffering support to dual track implementation (#8516) (39ae0e6)
  • net: Add networking config (#8306) (36db472)
  • new TextDisplayer implementation to allow selecting subtitles via native API and controls (#8520) (724b0b2)
  • Offline: Allow no timeout when opening IndexedDB database (#8372) (8cd2c01)
  • Offline: Make timeout for opening IndexedDB configurable (#8366) (5752a21)
  • Preload: Allow use custom config when creating a PreloadManager (#8647) (6efaf53)
  • provide option to disable usage of source elements in MSE (#8386) (b0cd08b)
  • Provide Segment Reference to ABR Manager (via the request context) (#8316) (d9b0e85)
  • Shrink the size of language-mapping-list.js (#8526) (7331e01)
  • Simplicate Image/Thumbnails API (#8266) (d2f3657)
  • Simplicate Text and Chapters APIs (#8264) (c0455d7)
  • Simplify getStats to support MSE-AirPlay (#8309) (2d8ad94)
  • Stats: Add current codecs to stats (#8418) (cbcba99)
  • UI: Add scrollbar if necessary to statistics container (#8424) (eecf58f)
  • UI: Allow config cast sender URL (#8485) (aa502ce)
  • UI: Allow forceDisconnect when destroy the UI (#8472) (7c3df3b)
  • UI: Allow hide/show controls on tap (#8398) (06a8785)
  • UI: Customize scrollbar style (#8419) (a08d464)
  • UI: Disable add a cast button automatically on new UI (#8449) (b0b556e)
  • UI: Fix style of cast button on modern UI (#8451) (a2475e8)
  • UI: Hide volume slider when not hovering over the mute button (#8426) (74fda8b)
  • UI: Modernization of the UI (#8409) (1c85396)
  • UI: Optimize default UI for small screens (#8436) (f760dbd)
  • UI: Optimize the buttons that appear when using a Smart TV (#8429) (a8fc3bd)
  • UI: Resolution selector should display width for vertical videos (#8502) (94bdb7c)
  • UI: Show current playback rate and quality without hover (#8437) (9992d67)
  • UI: Show the quality mark when using src= (#8511) (0aa886d)
  • UI: Update some selectors after loading content always (#8465) (20659db)
  • Use Date for playback start time (#8415) (fc59408)

Bug Fixes

  • Add a small fudge to prefetch eviction (#8470) (9d3b586)
  • Add new crossBoundaryStrategy for Apple browsers (#8345) (3c60254)
  • Add new parameters to thumbnails in order to work with cast proxy (#8554) (023d06a)
  • Add optional content workaround to force ENCA.ChannelCount to 2 for EAC-3 Audio init segments (#8517) (bd97fb1)
  • Add support to crossBoundaryStrategy when using HLS (#8343) (6d5cdb6)
  • Add vp9 to normalized codec list (#8416) (c6459d5)
  • Ads: Destroy preloadManagers on stop interstitials (#8268) (ace6cb7)
  • Ads: Fix overlay interstitial when the seeked is outside of the current window (#8288) (9fd5900)
  • Allow use Chapter API on browsers without track element support (#8515) (6271282)
  • Allow use isLive, seekRange and isAudioOnly when using remote playback (#8629) (dabb562)
  • Avoid installing/uninstalling PatchedMediaKeysApple polyfill twice (#8593) (fb120f8)
  • Avoid reset MSE engine when using remote playback (#8626) (ce9db86)
  • Cancel trick play when current time catch the seek range (#8410) (e0770ff)
  • Cast: Add response to async calls on cast proxy (#8549) (c6bfc34)
  • Cast: Fix getChaptersTracks method while casting (#8552) (586051d)
  • CEA: cache and restore cea decoders based on the period continuity for dash content that uses SegmentTemplate (#8378) (6e029d1)
  • changelog: Add missing ref to PR #8156 in v4.14.0 (#8259) (b5a261a)
  • Check addTextTrack in video (#8388) (70a8317)
  • Closure compiler removes call to modifyCueCallback in src= mode (#8261) (b7865b4)
  • Count line break characters as ASCII (#8376) (b809646), closes #8336
  • DASH: Fix infinite buffering on end of content (#8677) (6b976db), closes #8672
  • DASH: Fix live playback with Period duration (#8493) (a7abb29), closes #8481
  • DASH: Inconsistent DRM across periods when using clearkeys (#8602) (3c32f7a), closes #8559
  • Demo: Fix bad tooltip position of last control panel element (#8658) (8065cf9), closes #8655
  • Detect and skip stall correctly (#8390) (fdd9652)
  • Detect screen change to update ABR according HDR vs SDR (#8606) (5413b5f)
  • Disable translate of cues when using UITextDisplayer (#8636) (b987662)
  • Do not fire metadataadded event for duplicated cues (#8617) (ffd048c)
  • Don't allow MSE reset in middle of a reset (#8338) (1c2c8c3)
  • Don't return video tracks when using remote playback (#8627) (79e62bc)
  • External text tracks in src mode related issues (#8527) (f9c8028)
  • Fix audio selection by channel count (#8286) (b9625c7)
  • Fix buffering event on native playback (#8310) (a18b37f)
  • Fix cast proxy args for side-loaded tracks (#8560) (d7f056a)
  • Fix config failures with multiple references to an input array (#8585) (5c94164), closes #8478
  • Fix cross boundary when playing at higher playbackRates (#8392) (05f3318)
  • Fix destroy CastProxy on browser without Cast support (#8294) (b2a1d35)
  • Fix dispatch complete event when the percentage is greater than 100 (#8643) (81b2ff5)
  • Fix exception updating partial config with deprecated fields (#8512) (9f18e9f)
  • Fix Firefox PlayReady support (#8497) (f6df1f0)
  • Fix garbage-collection issue in safari on mediaCapabilities polyfill (#8613) (394ed7b)
  • Fix getAudioTracks when audioId is null but exists originalAudioId (#8462) (82b9541)
  • Fix getAudioTracks when using remote playback (#8630) (952590e)
  • Fix getVideoTracks when videoId is null but exists originalVideoId (#8463) (5627153)
  • Fix initial buffering state when we load a stream (#8500) (ed48de9)
  • Fix MediaCapabilities polyfill on Vizio (#8542) (d15e21c)
  • Fix memory leak on Metadata and EMSG timelines (#8570) (59a1254), closes #8535
  • Fix metadata timestamp when using raw segments (#8654) (602515c)
  • Fix MSE recovery on Apple platform (#8341) (82da6b1)
  • Fix NTP conversion on Tizen 3 (#8444) (89584bf)
  • Fix onUpdateEnd when the MSE engine has been destroyed (#8591) (f5ea7ad)
  • Fix race condition stoping timers (#8530) (45e7c39)
  • Fix side-loaded track when resuming local and cast again (#8564) (9a17243)
  • Fix text visibility when switching between stream with text and without text (#8572) (e1b96d3)
  • Fixes eme-encryption-scheme-polyfill, null encryptionScheme is valid (#8599) (e3a438b), closes #8596
  • FRMA generation (#8367) (9c517a9)
  • Handle missing window.matchMedia API (#8385) (4d8f855)
  • Handle null response body for fetch responses (#8384) (8e0d45f)
  • Handle updateend event on duration reduction (#8403) (20bcfdd)
  • HLS: Add key ids to Fairplay DRM parser (#8371) (25021bb)
  • HLS: Avoid duplicate init segment request when using SAMPLE-AES (#8361) (4517999)
  • HLS: Do not skip DateRanges based on ID (#8638) (c6b53b3)
  • HLS: Fix disableAudio and disableVideo when loading a media playlist (#8642) (ccd31aa)
  • HLS: Fix HLS live playback on older Webkit STBs (#8325) (02a29a0), closes #8324
  • HLS: Fix MP4 data segment being parsed as MPEG2-TS (#8612) (a53f82b)
  • HLS: Fix mp4 detection when the mimetype is application/octet-stream (#8459) (b4d9b43)
  • HLS: Fix queryData to prevent url params percent encoding (#8346) (3b3c95a)
  • HLS: Fix text tracks disappear after seek (#8494) (995da46)
  • HLS: Fix variable substitution when using relative paths (#8350) (922dfee)
  • HLS: Handle redirect URLs correctly (#8331) (8d4087e)
  • HLS: Supports SUPPLEMENTAL-CODECS with muxed audio (#8323) (e7d1734)
  • Improve boundary gap mitigation at DASH period transitions (#8344) (c46963f)
  • Improve maxResolution detection on Tizen (#8365) (ee1926e)
  • Keep unique references in getAudioTracks (#8460) (34b5b4a)
  • LCEVC: Ensure unique originalVideoId for LCEVC dual-track (#8562) (4ef126b)
  • Make shaka.util.Lazy work with null (#8267) (e0a57bb)
  • Make sure we are calling setLiveSeekableRange and clearLiveSeekableRange at the correct time (#8523) (ddd97f0)
  • Make sure we are calling setLiveSeekableRange and clearLiveSeekableRange at the correct time (#8569) (6a9ee08)
  • Mixed clear/encrypted playback on Safari MSE (#8354) (5f18231)
  • net: Fix "Payload length does not match range requested bytes" when using open end (#8651) (c19cbaf)
  • Offline: Fix HLS-AES download (#8374) (60c6b19)
  • Offline: Handle missing window.matchMedia API (#8442) (3dbf4c4)
  • Only check key status changes when drm engine is available (#8589) (892be53)
  • Only create shaka-text-container when necessary (#8581) (3618d4f)
  • Only expand robustness on each stream once (#8458) (9ba8ceb), closes #8408
  • Only schedule an update on reset when we are not clearing the buffer (#8340) (d1be137)
  • Persist selected audio track role after variant update in selectVariantTrack (#8249) (b30e0ce), closes #8248
  • preload: Fix preload segments in some cases (#8401) (da271ac)
  • Prevent unhandled rejections on segment fetch failures (#8313) (8ba2722)
  • Read TRUN data_offset as signed int (#8383) (7e827ac)
  • Remove active audio channel count from default pref based criteria (#8674) (b8ff4e9)
  • Reset external tracks when unloading in cast proxy (#8573) (5ec05ca)
  • Reset lastMediaSourceReset when seeking to unbuffered part (#8339) (deb53fc)
  • Sony Bravia TV Playready DRM Failure (#8577) (f987f45)
  • Subtitles appearing twice when switching to Fullscreen on iOS (#8476) (9042872)
  • Support more Dolby codec notations (#8387) (933a4f2)
  • Text tracks with src= on Safari & UITextDisplayer are sometimes rendered natively (#8256) (306b682)
  • Try to reset MSE on STREAMING_NOT_ALLOWED error (#8625) (e1673cd)
  • UI: Add missing replay icon to big play button (#8648) (f2cb927)
  • UI: Avoid hide controls when seeking (#8303) (6cc035a)
  • UI: Avoid show resolution bandwidth when it's not necessary (#8440) (bb1fdb4)
  • UI: Avoid show resolution selector when using remote playback (#8628) (d60dbf3)
  • UI: Check remote availability on remote button (#8453) (03fd784)
  • UI: Create watermark element only when necessary (#8551) (95e6d01)
  • UI: Disable doubleClickForFullscreen while casting (#8488) (12feb3f)
  • UI: Disable save video frame button while casting (#8258) (e71d94c)
  • UI: Display max segment duration in seconds (#8305) (1c42190)
  • UI: Don't allow click on the buttons when the UI is not visible (#8396) (ea07907)
  • UI: Don't cover useless space with the position in the thumbnail image (#8322) (30af37e)
  • UI: Don't hide the UI when using the wheel over the UI (#8425) (d761dae)
  • UI: Filter audio qualities when bandwidth is missing (#8650) (370b042)
  • UI: Fix a11y issue with shaka.ui.AdInfo (#8420) (46c998d)
  • UI: Fix display language when showing the codec name (#8455) (48f217e)
  • UI: Fix duplicate visibility events (#8665) (b6ab228), closes #8656
  • UI: Fix erroneous current time when dragging (#8558) (eb83157)
  • UI: Fix get thumbnails while casting (#8509) (43389b2)
  • UI: Fix position of menus and tooltips when the seekbar is missing (#8639) (9d4e4d0)
  • UI: Fix seek on the seekbar at the init (#8555) (5d27b56)
  • UI: Fix seekbar allows seeking even when hidden (#8540) (1a82e27)
  • UI: Fix some bugs when joining an existing cast session (#8452) (9112ca1)
  • UI: Fix thumbnail exception when the thumbnails doesn't exist (#8318) (9010483)
  • UI: Fix transition from FullScreen to PiP in Safari (#8566) (42c08f6)
  • UI: Fix UI behaviour when switching between PiP and fullscreen and vice versa (#8544) (d274d38)
  • UI: Fix visibility events on the UI (#8619) (95cf682)
  • UI: Fix visibility events while casting (#8574) (2693bc7)
  • UI: honors singleClickForPlayAndPause when made a single tap with seekOnTaps = true (#8393) (0d7838e)
  • UI: Improve layout of current time container above hovered seek bar (#8412) (a27434b), closes #8411
  • UI: Keep the current position gradient when seeked (#8571) (7b98c10), closes #8548
  • UI: Make UI display 4096x2160 (DCI 4k) video as also being "4k" (#8359) (00ae291)
  • UI: Only create VR canvas when necessary (#8580) (6c3f71b)
  • UI: Only show the volume bar on hover (#8433) (1faa11e)
  • UI: Optimize portrait thumbnail display (#8274) (1f336dd)
  • UI: Reset quality mark when switching from video stream to audio only stream (#8605) (1d04801)
  • UI: Save track preferences for casting purposes (#8489) (e13e125)
  • UI: Show the remote button when we already connected (#8461) (09d2041)
  • UI: Show the video codec only when there are two codecs for the same resolution (#8407) (b93303c)
  • UI: Show time when the thumbnail is not available (#8510) (fefe61f)
  • UI: Sync volume and mute values when loading a new content or casting (#8487) (8555da7)
  • Update eme-encryption-scheme-polyfill (#8546) (e54d2dc)
  • Update region observer with new rules for small regions (#8275) (2f18b47)
  • Use proper method for checking is object an array (#8644) (769ced5)
  • WebOS: Do not throw error during parsing ID3 (#8623) (b2595ce)

Performance Improvements

  • AdaptationSetCriteria improvements (#8287) (78a16d9)
  • Ads: Improve presentation time of pre-roll interstitials (#8284) (fad638e)
  • Ads: Preload images on interstitials (#8269) (c49102c)
  • ContentWorkarounds: Do not override codec twice (#8358) (b9c5571)
  • DASH: Release period combiner after parsing a VOD (#8443) (396bdf6)
  • Do not process stream DRM info several times (#8505) (9678b1c)
  • HLS: Make initial segment requests in parallel (#8337) (5f4d351)
  • HLS: Reduce load time when loading in the player a media playlist (#8333) (aed6471)
  • Init source buffers synchronously (#8646) (34827b4)
  • net: Avoid parsing headers twice (#8618) (cd9c850)
  • Optimize DRM compatibility check across streams (#8652) (784246b)
  • Optimize getAllThumbnails() (#8525) (f15d627)
  • Remove extendedType when checking isTypeSupported on Tizen (#8507) (e3d8140)
  • Remove redundant collection in Streaming Engine (#8645) (c81e9a8)
  • Stop parsing the mp4 when the init segment is encrypted on ContentWorkarounds (#8353) (fd61961)

4.14.0 (2025-03-12)

Features

  • Add avoidEvictionOnQuotaExceededError config (#8031) (6d30f61)
  • Add config to allow reset MSE on cross boundary (#8156) (3699164)
  • Add LCEVC dual track rendering (#8168) (389f45c)
  • Add new error code when the streaming is not allowed (#7994) (455163f)
  • Add Vizio as community support (#8049) (16ca489)
  • Ads: Add double box format ad experience for Custom Overlay Interstitials (#8074) (e344f5d)
  • Ads: Add overlayAds to AdsStats (#8068) (ace9d4a)
  • Ads: Add support for L-Shape ad experience (#8051) (6bd0afe)
  • Ads: Update DASH Media Presentation Insertion according to the latest draft (#8065) (171bdb3)
  • Allow acquire thumbnails without track ID (#8129) (c312bd6)
  • Allow preload text tracks and expose the preloaded variant and text tracks (#8187) (4e05551)
  • Change the way to handle the STREAMING_NOT_ALLOWED error (#8033) (c2ff501)
  • Create a new simple API for Audio (#8005) (f778713)
  • DASH: Add dependencyVideo to video streams (#8057) (4936b0c)
  • Deprecate selectVariantsByLabel because the same can be done with the new Audio API (#8095) (e9b1a6c)
  • Do not make corrective seeks when setLiveSeekableRange is used (#8053) (dbdfa49)
  • FairPlay: Add support for Mux (#8201) (31b32d3)
  • HLS: Add allowRangeRequestsToGuessMimeType config (#7979) (195fd2b)
  • HLS: Add an option to ignore DRM info (#7986) (9461bc2)
  • LCEVC: Detect as supported dual track content with LCEVC (#8134) (8f0b0e3)
  • Make the filters provided for FairPlay more error-resistant (#7974) (6ba871b)
  • Move caption scaling from css to new textDisplayer.fontScaleFactor config (#8242) (c8747ab)
  • Move shaka.util.FairPlayUtils to shaka.drm.FairPlay (#8217) (c2ce68f)
  • Retain segment in memory on QuotaExceededError (#7954) (4c6c576)
  • Simplify ignoreSupplementalCodecs config (#7967) (abaf82f)
  • Simplify updatePeriod config (#7980) (7fa6cde)
  • Text font scaling customisation ability (#8215) (18695c6)
  • Time ID3, emsg, and metadata events to the presentation timeline (#8012) (cd32556)
  • UI: Add halfequirectangular (180) VR support (#8238) (6e9e5a0)
  • UI: Close submenu or context menu on option click (#8193) (5fc0fec)

Bug Fixes

  • Add more info in getVariantTracks for muxed streams (#8002) (8e17bad)
  • Ads: Fix default background color on interstitial (#8091) (a614786)
  • Ads: Only set ad-active in the controls-container when the ad has custom clicks (#8075) (16d4e29)
  • Ads: Remove default background color on interstitial overlay (#8085) (64a1076)
  • Ads: Reset playRangeEnd value between interstitials (#8082) (2f3a868)
  • Ads: Support urn:scte:dash:scte214-events schemeIdUri for overlays (#8086) (1071f40)
  • Allow change the native playbackRate with the same functionality as trickPlay (#7993) (410d2e6)
  • audio label when selecting variants by label (#8038) (56a920a)
  • Avoid DRM setup for VOD that does not need it (#8154) (2573af7)
  • Avoid launch RESTRICTIONS_CANNOT_BE_MET when it's not necessary (#8014) (ece88d6)
  • Avoid rebuffering when using big trick play rates (#7988) (213b2b7)
  • Call modifyCueCallback in src= mode (#8254) (bd9784a)
  • Check bandwidth when filtering streams (#8125) (ccbbb01)
  • Clear some caches when install/uninstall PatchedMediaKeysApple (#8198) (61d44c9)
  • CMCD: Do not call play() if CMCD is not enabled (#8149) (3338ea7)
  • CMCD: Only report ltc if playing; round to int (#8011) (6ce3c73), closes #8010
  • DASH: ContentSteering promise is resolved too late for fetching of init segment (#8126) (65da004)
  • DASH: Fix DASH_DUPLICATE_REPRESENTATION_ID error when using supplemental codec (#7961) (66ca230)
  • DASH: Fix Dolby Atmos detection (#7966) (56c5f52)
  • DASH: Fix playback of ClearKey when only part of keys are defined (#8055) (9a618d4)
  • DASH: Revert Dolby Atmos detection when there is not SupplementalProperty (#8132) (5c3e1a0)
  • Do not autoplay if autoplay is not set (#8024) (0efdd2b), closes #8022
  • Do not recognize MultiChoice & Ziggo as Apple (#7996) (e0f3f5a)
  • DRM: Fix drm choice when the user provide a server in the manifest (#8067) (bdce076)
  • Duplicate timelineregion* events fired for the same event id (#8013) (e270b28)
  • Evict the buffer against seekRangeStart (#8026) (44748b4)
  • FairPlay: Install by default shaka.polyfill.PatchedMediaKeysApple on older Safari versions (#8106) (324b121)
  • Fit template check template info (#8162) (b26dd1f)
  • Fix AC-3 playback on Tizen 3.0 devices (#7969) (4eb2cea)
  • Fix AC-3 playback on Tizen 3.0 devices when transmuxing (#7972) (dc62c8b)
  • Fix codec selection (#8197) (2d0995f)
  • Fix displaying subtitles in UITextDisplayer at high playback rates (#7991) (3be3b14)
  • Fix DRM workaround with fLaC and Opus boxes (#8070) (186b2b6)
  • Fix Hisense 4K detection (#8133) (ec37591)
  • Fix playback with Apple Media Keys polyfill detection (#7958) (1825266)
  • Fix seek to initial live position on slow devices (#8181) (6c01f18)
  • Fix segmentappended event when using muxed streams (#7987) (10b1f63)
  • Fix select label audio when using selectAudioLanguage (#7970) (20ed3b0)
  • HLS: Better detect mimetype when server returns application/octet-stream (#8077) (d4ecdad)
  • HLS: Detect spatial audio when using Dolby AC-4 (#8223) (88fa167)
  • HLS: Fix duplicate segments on some inaccurate live streams (#8084) (be27a9d)
  • HLS: Fix redirect management at media playlist level (#7944) (a38a810)
  • HLS: Fix support for SUPPLEMENTAL-CODECS on EXT-X-I-FRAME-STREAM-INF (#7992) (307e3d8)
  • HLS: Fix switching between muxed MP4 and muxed TS (#8061) (af4eb84)
  • HLS: Only apply compensation if the difference is greater than 150ms (#8207) (04658d1)
  • HLS: Populate encrypted info correctly on updates (#8153) (433a32a)
  • HLS: Populate originalVideoId in HLS with the URI (#8003) (6c9b634)
  • hls: Removing Possible encoding problem detected (#8253) (3c99d37)
  • Install Safari workarounds on WPE STBs (#8103) (09b3333)
  • net: Add 304 as successful request (#7963) (a0ed8da)
  • net: Allow preventDefault() on retry event (#8058) (a30f1da)
  • Only dispatch spatialvideoinfo and nospatialvideoinfo for video streams (#8236) (13a1340)
  • Prevent race condition when seeking backwards during load (#8188) (bcf159d)
  • PS5: Disable sequence mode in PS5 (#8004) (bb7ab3c)
  • Remove isSafari and always use isApple (#8104) (7570935)
  • Remove timeout for decodingInfo in some platforms and increase the timeout (#8172) (6ffc302)
  • Subtitles: Prevent rounding errors when filtering duplicated cues (#8018) (24283e6)
  • Throw preload destroyed error when re-using same preloadManager (#8046) (6583f96)
  • TTML: Correctly handle multiple samples in a segment (#8088) (2562384)
  • tXml: Allow case insensitive in parseDuration (#8064) (0400d1e)
  • UI: Allow configure close menu delay time (#8235) (de4bb9e)
  • UI: Allow play/pause when seekOnTaps is enabled (#8206) (db43a18)
  • UI: Allow use hideUI on mobile devices (#8233) (4be4dbd)
  • UI: Close context menu when hide the UI (#8234) (8739820)
  • UI: Don't sort playback rates (#8230) (78ea4ee)
  • UI: Fix bad behavior when we are on muted status and we turn volume up (#8231) (79ad771)
  • UI: Fix scrolling with player in iframe (#8180) (97f2255)
  • UI: Fix show AdStatisticsButton when it's not necessary (#7989) (e7d428a)
  • UI: Fix thumbnail sometimes not disappearing due to mouse hover (#8089) (a3ccf83)
  • UI: Fix weird behaviour when volume was 0, and we unmute (#8186) (3ff0e28)
  • UI: Improve performance and compatibility with MediaSession (#8100) (3277f04)
  • UI: Improve seekOnTaps behavior on tap and scroll (#8225) (c8d93a6)
  • UI: Show GB unit in StatisticsButton (#7990) (8816086)
  • UI: Update UI in order to support AC-4 (#8205) (051da08)
  • Use audio label on ExampleBasedCriteria (#7971) (b491e4a)
  • WebOS: Do not preload DRM on legacy EME (#8083) (477bbbf)
  • When standard load, do not wait for pending license requests to finish. (#8219) (b8519f1)

Performance Improvements

  • Ads: Only create the listeners/timers when there are interstitials (#8113) (cbcb1d8)
  • Close segmentIndex after getAllThumbnails (#8128) (31373b3)
  • Only set the timers on UITextDisplayer when there are cues (#8114) (f310833)
  • Pause PlayheadObserverManager operations on pause event (#8183) (870a3f0)
  • Prevent CastSender initialization on CastProxy on unsupported browsers (#7995) (b4ab526)
  • Region timeline improvements (#8203) (235fbea)
  • Remove promises from getAllThumbnails loop (#8118) (49706b9)
  • UI: Avoid unnecessary calls to controls configure (#8116) (356de09)
  • UI: Improve VR performance (#8237) (e672216)
  • UI: Reduce configure calls to use shakaPlayerCastReceiverId (#8115) (b3c9722)
  • Use navigator.userAgentData.platform to detect Android and Fuchsia (#8102) (7704a31)

4.13.0 (2025-01-23)

Features

  • ABR: Use PiP window size when using documentPictureInPicture (#7880) (c232867)
  • ABR: Use PiP window size when using requestPictureInPicture (#7882) (a583c4a)
  • Add 'downloadcompleted' event (#7609) (13186bd), closes #7608
  • Add adaptation set criteria factory configuration (#7886) (6e4bfdf), closes #7768
  • Add basic support for the Common Access Token (#7651) (c10b796)
  • Add configuration to ignore SCTE214 supplemental codecs (#7717) (e1d1d19)
  • Add downloadcompleted event description (#7615) (0db5813)
  • Add new error code for missing EME support (#7596) (3a83e76)
  • Add streaming.preferNativeDash config (#7737) (27976f1)
  • add support for multiple robustness levels in drm (#7753) (88472b3)
  • Add support for WisePlay DRM (#7854) (7ef0f92)
  • Add Watermark Support to Shaka Player UI (#7877) (56523e4)
  • Add watermark to uncompiled mode (#7895) (14c4fe1)
  • Ads: Add basic support to DASH OverlayEvent (#7701) (b704af0)
  • Ads: Add support for images and iframes in interstitials (#7712) (8db876f)
  • Ads: Add support for overlay interstitials (or non-linear ads) (#7657) (70257ff)
  • Ads: Allow OverlayEvents without viewport (#7734) (426090d)
  • Ads: Expose the interstitial player (#7793) (6783ce0)
  • Ads: Parse non-linear VAST ads (#7702) (0c7d204)
  • Ads: Populate getAdId and getMediaUrl for interstitials (#7922) (1a6a0db)
  • Ads: Support HTMLResource on non-linear VAST ads (#7710) (6f4d2d2)
  • Check minHdcpVersion in probeSupport (#7809) (fab3faf)
  • CMCD v2 LTC and MSD keys (#7412) (b2673fd)
  • Create segmentIndex when there is only one variant (#7868) (3a85217)
  • DASH: Extract PlayReady licenseServerUri from PSSH (#7898) (8fda5d8)
  • Demo: Allow storage of MSS-PlayReady in demo (#7801) (8764169)
  • Demo: Display unhandled rejections in demo (#7638) (d7e78f6)
  • HLS: Add support for getting license server url for PlayReady (#7790) (effa244)
  • net: Add originalRequest to shaka.extern.Response (#7857) (59c9989)
  • Offline: Allow downloading some clearkey content without persistent license support (#7811) (50a1851)
  • Save CEA708 caption cues on all windows when deleting/clearing windows (#7909) (19bd472)
  • Simplify the use of low latency (#7748) (6616ff2)
  • Stop setting playbackRate to 0 to control buffering state when streaming.rebufferingGoal = 0 (#7617) (84b64af)
  • UI: Add config to show the audio codec in the audio selector (#7644) (ee72b89)
  • UI: Add option to show the video codec name (#7747) (075c3fd)
  • Update usage of minBufferTime according to the DASH spec (#7616) (2260aa9)
  • Use MSE clearLiveSeekableRange and setLiveSeekableRange when available (#7905) (87d9392)

Bug Fixes

  • Abort operations only once (#7624) (d407d15)
  • Ads: Always fire CUEPOINTS_CHANGED when not using multi video elements (#7584) (a4d0fc8)
  • Ads: Always set endTime for MPD Alternate (#7583) (16580ea)
  • Ads: Apply X-PLAYOUT-LIMIT to entire interstitial (#7804) (e40341c)
  • Ads: Avoid adding custom interstitials without URI (#7696) (743b451)
  • Ads: Avoid skip interstitial when is not allowed (#7686) (7be22db)
  • Ads: Calculate the mimeType in an earlier step so that there is no impact on the ad playback (#7742) (c113738)
  • Ads: Disable interstitials when playing an interstitials (#7621) (7401adf)
  • Ads: Don't allow play an overlay video ad using the base video (#7740) (172e713)
  • Ads: Don't dispatch cue points changed if it is an overlay (#7695) (eb4a45e)
  • Ads: Don't try to play Image and HTML overlay interstitials (#7697) (87cbf4d)
  • Ads: Fix ad position by default (#7659) (ef2c7eb)
  • Ads: Fix bad static overlay ad position (#7735) (e4825c3)
  • Ads: Fix behavior when user JUMPS across more than one interstitial (#7667) (4aa9306)
  • Ads: Fix id of X-ASSET-LIST (#7662) (79b1536)
  • Ads: Fix post-roll playback (#7663) (9fd349a)
  • Ads: Fix unnecessary request when using VAST (#7660) (d09cd7e)
  • Ads: Fix usage of ENABLE-SKIP-AFTER and ENABLE-SKIP-FOR (#7677) (8048d02)
  • Ads: Fix usage of ENABLE-SKIP-FOR in Interstitals (#7652) (46ab1cb)
  • Ads: Fix VAST_INVALID_XML error code (#7593) (c1e26ea)
  • Ads: Limit static overlay playback to the timeline (#7741) (eff0aef)
  • Ads: Only display the secondary video if necessary (#7709) (072acf0)
  • Ads: Prevent playing the same ad twice (#7585) (10659c5)
  • Ads: Remove iframe border in overlays (#7738) (60c88eb)
  • Ads: Stop properly interstitial ads (#7708) (f186185)
  • Ads: Update Alternative MPD to match the latest spec (#7706) (cd78811)
  • Ads: Use region.id as id for Alternative MPD interstitial (#7671) (18ed02c)
  • Allow set maxLatency and minLatency to 0 (#7704) (4744d1e)
  • Allow the user to disable subtitles while paused (#7578) (f41c65d)
  • Avoid setAppendWindow when the window is Infinity (#7923) (c75ebd7)
  • Avoid stack overflow when stringifying objects (#7721) (90e47eb), closes #7435
  • Avoid useless MSE reset when transmuxing muxed content (#7818) (cc930a8)
  • Calculate timeToFirstByte before fire the event 'downloadheadersreceived' (#7605) (0fc5316), closes #7604
  • Cast: Incorrect detection of MediaCapabilities on Linux Chromecast (#7628) (bc0b9f2)
  • CEA: Fix multi byte language support in CEA-708 (#7837) (5b13332)
  • CEA: Fix multi byte language support in CEA-708 (#7929) (3856c58)
  • Codec switch reload - apply boundaries correctly (#7700) (8dd9d20), closes #7595
  • DASH: Change fallback presentation delay (#7918) (b9eabe5)
  • DASH: Error due to deleted stream (#7723) (0ca6ff7)
  • dash: Fix Time usage with SegmentTemplate (#7849) (abd6d8b)
  • DASH: Fix Dolby Atmos detection when there is not SupplementalProperty (#7847) (cf581cd)
  • DASH: Fix playback after DASH period eviction (#7603) (d8a14b0)
  • DASH: Ignore early segments in a period (#7910) (c7a93d7)
  • DASH: Notify time range with the fitted timeline (#7911) (a89ee1a)
  • Detect mov extension as video/quicktime (#7884) (b0be779)
  • Detect smooth codec switch support on Apple devices (#7678) (f765e05)
  • Disable live sync when the stream is paused (#7579) (89267cc)
  • Disable smooth codec switch on Tizen 8 (#7614) (cd6aae7)
  • Disable smooth codec switch on webOS 6 (#7636) (93e6921)
  • Docs: Remove info about small/large gaps from manual (#7762) (9234e44)
  • Don't ignore the license server in manifest when another key-system has license server in configuration (#7797) (ae34b68)
  • Fix cast support for HLG HDR (#7632) (f964708)
  • Fix CBCS support in recent WebOS (#7647) (137f256)
  • Fix change timestampOffset on discontinuities when not necessary (#7823) (d3238dd)
  • Fix ClearKey license on old CDMs (#7816) (fe1f35b)
  • Fix gaps produced by the transmuxer (#7822) (934bdff)
  • Fix isEnded for live streams (#7866) (5e5e5a8)
  • Fix isEnded when is not fullyLoaded (#7883) (7e6116f)
  • Fix missing EMSG events (#7839) (e6ca059)
  • Fix normalized codec for VP9 (#7645) (f2061e4)
  • Fix parameters lost during codec switch (#7630) (7837b60)
  • Fix playback on Apple devices without ManagedMediaSource (#7669) (ff7c465), closes #7666
  • Fix SEGMENT HEAD requests, compatibility with Cast SDK (#7851) (b153a9c), closes #7600
  • Fix select spatial audio when using selectAudioLanguage (#7846) (c5dc5f4)
  • Fix setLiveSeekableRange when the seekable range is too short (#7916) (30be525)
  • Fix support for supplemental codecs (Dolby Vision) (#7720) (279e6cd)
  • Fix unload call after destroy (#7690) (18652b6)
  • Fix usage of keySystemsMapping (#7736) (79a481e)
  • Fix video progress events accuracy (#7654) (5f8e958)
  • Follow the configured playRange for src= (#7825) (b22e546)
  • Forbid usage of instanceof ArrayBuffer (#7653) (55b7bd0), closes #6279
  • HLS: Assign EXT-X-TILES to segment tags (#7864) (851308c)
  • HLS: Correctly identify webvtt subtitles with cmft extension (#7791) (7ef5e62)
  • HLS: Disable audio/video correctly when loading a TS media playlist (#7815) (626591e)
  • HLS: Disable text correctly when loading a media playlist (#7840) (0fa17f6)
  • HLS: Do not use EXT-X-PROGRAM-DATE-TIME on vod when there is only video or audio (#7802) (fe94b6b)
  • HLS: Fix audio detection when there is no audio data but it appears in PMT (#7838) (34b69fa)
  • HLS: Fix playback of raw AAC (#7641) (1d9ac65)
  • HLS: Fix subtitle timing (#7625) (9e2b15e)
  • HLS: Fix subtitle timing when no discontinuity but there is X-TIMESTAMP-MAP (#7681) (7afe08e)
  • HLS: Fix timestamp offset for raw formats when using segments mode (#7819) (bd29645)
  • HLS: Ignore errors when try to detect CC (#7668) (5be0fc4)
  • HLS: Omit daterange without START-DATE in order to avoid errors (#7841) (bc0e1c6)
  • Offline: Allow downloading AES content (#7827) (21bbd93)
  • Offline: Allow storage of MSS streams (#7799) (bc41643)
  • Offline: Fix download HLG tracks when using AUTO hdr level (#7865) (0eedbc9)
  • Offline: Fix some aborted downloads continue to download (#7842) (fb8086b)
  • Only create TextTrack of SimpleTextDisplayer when necessary (#7913) (9e71a01)
  • Prefer Dolby Vision p5 over Dolby Vision p8 (#7745) (60429e9)
  • Prefer SimpleTextDisplayer on iOS (#7569) (bd2c9a7)
  • preload: Wait for drm keys when preloading (#7698) (a1e2f0a), closes #7520
  • PS5: Prevent uncaught promise rejections when requests are aborted (#7637) (09cfac2)
  • re-open the MediaSource if readyState is not open when the init() method is called. (#7783) (6610fa3)
  • Remove useless calls to isTypeSupported (#7817) (bd99632)
  • Remove useless deprecation in UITextDisplayer and add some guards in SimpleTextDisplayer (#7805) (fd78ec4)
  • Silence aborted errors from PreloadManager. (#7619) (f277f2c), closes #7618
  • Silence uncaught rejection errors when closing EME sessions (#7881) (bc6a79f)
  • Timeout unfulfilled request to decodingInfo and requestMediaKeySystemAccess (#7682) (07894ec), closes #7680
  • Transmuxer: Fix transmuxer with overflow data (video nalus and aac samples) between PES (#7813) (77c4251)
  • tXml: Fix findChildrenNS when the namespace is in the element (#7896) (bcff34c)
  • UI: Allow 1x playback rate when default playback rate is not x1 (#7787) (724166e)
  • UI: Allow pause non-linear video ads (#7699) (2953b6f)
  • UI: Change to use legacy css format to support old TVs (#7658) (e03dfc6)
  • UI: Do not show codec name when the same codec is used for the same language (#7643) (87f6aa6)
  • UI: Fix exception while casting to mismatched player version (#7631) (c9534a0)
  • UI: Fix handle of seek on MediaSession (#7879) (57992b2)
  • UI: Fix playback rate resets when pausing or playing the video (#7728) (6e382ce)
  • UI: Hide ad counter when the ad is non-linear (#7718) (effaf95)
  • UI: Hide ad position when the ad is non-linear (#7711) (8566836)
  • UI: Show Dolby Atmos name in the UI (#7848) (a0848f7)
  • UI: Show presentation time when playing non-linear ads (#7707) (d00ea51)
  • UI: Use trickPlay method to control the playback rate (#7580) (70c2fda)
  • UI: Video starts playing automatically when selecting a playback rate (#7786) (ac568a4)
  • Use getSegmentAvailabilityStart instead of getSeekRangeStart to evict segments (#7867) (11afdc8)
  • Use infiniteLiveStreamDuration equal to true in Safari 17 or above (#7901) (5005fac)
  • Widevine: Add default audio/video robustness for Widevine (#7808) (a018f53)
  • Xbox: Simplify the use of WebView2 (#7743) (775bc4e)

Performance Improvements

4.12.0 (2024-11-13)

Features

  • Add config to ignore hardware resolution (#7572) (11a7b92)
  • Add manifest.disableIFrames config (#7255) (7b07614)
  • Add preferredTextFormats config (#7523) (597e129)
  • Add safeSeekEndOffset feature for live reposition (#7532) (73524d0)
  • Ads: Add config to allow disable interstitials (#7271) (64e45c9)
  • Ads: New HLS interstitial DATERANGE attributes for Skip Button (#7467) (3107de3)
  • Cast: Enable storage in Android Cast devices (#7292) (1434426)
  • DASH: Disable xlink processing by default (#7264) (d5ed8ed)
  • Demo: Add new asset with DASH-FairPlay (#7487) (fbc6179)
  • Enable AirPlay in MSE (#7431) (a6cf9cb)
  • Enable audio groups by default (#7549) (5024184)
  • HLS: Add the update period for HLS manifest (#7498) (7b38ca8)
  • HLS: Make dummy streams for tags representing muxed audio (#7343) (e2413ed)
  • i18n: Add Belarusian translation (#7409) (51d00b8)
  • Offline: Allow store external text (#7328) (346cf48)
  • Offline: Allow store external thumbnails (#7322) (013b3c7)
  • preload: Wait for prefetches when preloading (#7533) (2ad1eff), closes #7520
  • Remove streaming.parsePrftBox config (#7358) (fc4893d)
  • Support Fairplay DRM in DASH manifest. (#7454) (c9f7723)
  • UI: Add close button to statistics panel (#7482) (4e6e37c)
  • UI: Added Mute button to context menu and overflow menu (#7439) (e883fed)
  • UI: Allow configure the fullscreen mode in VisionOS (#7540) (3bd0978)
  • UI: Use the lang= attribute to help screen-readers recognize localized labels (#7267) (3590aee)
  • Use source tags instead of src attribute (#7406) (445b0ce)

Bug Fixes

  • Active track state on variantchanged and adaptation events (#7350) (c15ca1d)
  • Ads: Allow play interstitials on iOS fullscreen (#7538) (84ae806)
  • Ads: Allow play interstitials using single video element when use native HLS (#7550) (fd6c322)
  • Ads: Allow preload and remove old interstitials when playing a interstitial (#7465) (25e7620)
  • Ads: Disable interstitials when using AirPlay (#7479) (2394ec2)
  • Ads: Don't load useless segments when using playoutLimit on interstitial ads (#7469) (7d8510b)
  • Ads: Fix duplicate Ads when playing interstitials through native HLS player (#7527) (075713f)
  • Ads: Fix JUMP implementation to avoid loop the same ad group in Interstitials (#7329) (524014e)
  • Ads: fix pre-roll identification when using src= (#7493) (576e4a5)
  • Ads: Limit interstitial duration to actual duration if available (#7480) (ad9f2ac)
  • Ads: Limit interstitial duration to actual duration if available when using src= (#7488) (334a00e)
  • Ads: Release interstitials timer correctly (#7373) (53b704f)
  • AirPlay: Don't show subtitles on the player when using AirPlay (#7514) (7c6dac5)
  • AirPlay: Prefer Playback Remote API for closeOpenSessions (#7500) (30068a1)
  • AirPlay: Show AirPlay button when starting the playback with AirPlay (#7515) (edb9e53)
  • Allow show subtitles using webkit Fullscreen API when playing native HLS (#7539) (6ab6a8f)
  • Allow streaming again when we reset MSE (#7495) (bc90c87)
  • Avoid make HEAD request for image mime type (#7332) (6716ff0)
  • Avoid notify buffered changes when segment appended is text (#7353) (43314a1)
  • calculations of channel count for DASH AudioChannelConfiguration elements. (#7421) (669b7b3)
  • DASH: Allow mixing SegmentTemplate-SegmentTimeline with SegmentTemplate-numbering (#7286) (e7229fb)
  • DASH: Avoid adding originalId when it is not necessary (#7281) (a88be00)
  • DASH: Clear streamMap when period is removed from the manifest (#7297) (da71e6d)
  • DASH: Clear usedPeriodIds when period is removed from the manifest (#7305) (f8e3aa4)
  • DASH: Clone closedCaptions map in PeriodCombiner output stream (#7309) (873bb24), closes #7303
  • DASH: Clone EventStream nodes to reduce memory consumption (#7285) (0023acc), closes #7148
  • DASH: Evict (by time) indexes in MetaSegmentIndex (#7296) (69b317f)
  • DASH: Evict empty indexes in MetaSegmentIndex (#7272) (c9998f9)
  • DASH: Exclude text segments when calculating max segment size (#7564) (3f9dec2)
  • DASH: Fix HTTP redirect during manifest update (#7339) (6532a7c)
  • DASH: Live DASH allows segment overlap in the updated manifest for first new segments (#7405) (051a8c5)
  • DASH: Live to vod transition (#7404) (2d14dd5)
  • dash: live to vod transition seek start (#7347) (e02367c)
  • DASH: Release period combiner info correctly (#7364) (fe2ea80)
  • DASH: Use presentationTimeOffset in EventStream (#7282) (c541b1c), closes #7277
  • Disable Encryption Scheme Polyfil On Some Devices (#7355) (58f666b)
  • Disable smooth codec switch if changeType is unavailable (#7414) (c90d5ff)
  • Do not allow MSE operations when using Remote Playback (#7503) (b04caa3)
  • Do not recognize Sky Q as Apple device (#7357) (e5fadab)
  • Do not reuse the same tsParser for different contentType (#7563) (a020b19)
  • Do not seek to first subtitle (#7312) (0980ba3), closes #7310
  • docs: Add mising description of PRFT event (#7403) (072f46c)
  • Don't use info from MSE mode when using Remote Playback (#7504) (e14a8eb)
  • DRM: Fix persistent licenses not working for online playback (#7457) (6088c1d)
  • Evict buffer on QUOTA_EXCEEDED_ERROR error (#7361) (0048e9d)
  • Evict text buffer when unload the text stream (#7360) (5b6652f)
  • Exclude TIMEOUT errors when disabling streams (#7369) (67826ac), closes #7368
  • Export getFetchedPlaybackInfo (#7418) (ce38dd9), closes #7416
  • Fire PRFT event every time (#7408) (e7f7825)
  • Fix disable stream when no manifest (#7497) (5e1fc5a)
  • Fix external image track mime type (#7333) (3a146c2)
  • Fix metadata timing when using TS (#7478) (2b56dcd)
  • Fix rendering of image subs when using SimpleTextDisplayer (#7258) (3d0b817)
  • Fix reset MSE to last independent segment (#7494) (8c62370)
  • Fix select HLG tracks when using AUTO hdr level (#7470) (322ea6b)
  • Fix support of getAllThumbnails when using shaka.dash.TimelineSegmentIndex (#7508) (0ff61a5)
  • Fix Windows detection (#7476) (fac9d84)
  • HLS: Allow sync live streams without PROGRAM-DATE-TIME (#7340) (db27227)
  • HLS: Avoid disabling muxed audio streams (#7351) (53cea44)
  • HLS: Fix uncaught error in slow network scenario (#7321) (68e579b)
  • HLS: Ignore DATERANGE with errors instead of fire an error (#7499) (b2b4238)
  • Install polyfills for Comcast X1 devices (#7529) (2b2df4b)
  • MSS: Don't allow prefetch segments with self-generated data (#7485) (d502e9b)
  • MSS: Fix playback of some MSS streams (#7517) (6d0ee51)
  • MSS: Fix timeline repetitions (#7484) (b1d3a3a)
  • offline: Text segments are downloaded before audio&video (#7336) (e28a07e)
  • only use lastSegmentReference for knowing if variant changed (#7537) (abfc0b2)
  • preload: Resolve manifest promise sooner (#7380) (c548315)
  • preload: Set manifest before initializing DRM (#7359) (b9ba66f)
  • PS4/5: Disable smooth codec switch on PS4/5 (#7413) (7268a2b)
  • Reduce calls to EME by ignoring MIME type in MediaKeySystemAccess cache (#7374) (6a4e95b), closes #7325
  • Reset MSE when we disconnect from Remote Playback (#7506) (cf22042)
  • Seek delay for Cast Nest hub (#7423) (d454514)
  • Tizen: Adding gapPadding to gap manager to solve Tizen issue (#7331) (330e487)
  • TTML: Fix absence of conversion of alpha (transparency) from 0-255 -> 0-1 (#7280) (fdf68d1), closes #7279
  • TTML: Fix subtitles not rendered due to complaint about xml:id (#7270) (257de7f)
  • UI: Disable fullscreen button conditionally when playing ads (#7534) (1497148)
  • UI: Disable save frame when using remote playback (#7433) (263c6a6)
  • UI: Display the font-family correctly in some cases (#7266) (96f8914)
  • UI: Don't enable StatisticsButton when create overflow menu (#7481) (ba36958)
  • UI: Don't try to add MediaSessionHandler for PiP when it's not available (#7376) (e71dca2)
  • UI: Fix "Live" label in some languages (#7560) (8dae6e4)
  • UI: Fix auto-load with source tags (#7430) (0f2ee89)
  • UI: Fix mediaSession metadata update on Firefox (#7375) (6884721)
  • UI: Fix missing tracks in resolution selector (#7352) (1314377)
  • UI: Fix name for Dolby Digital Plus (#7541) (a01b5fd)
  • UI: Fix remote button availability and icon (#7513) (c8bcfdb)
  • UI: Fix set MediaSession info when no previous Metadata (#7521) (b00a2c3)
  • UI: Fix the position of save video frame in the overflow menu (#7438) (85282ce)
  • UI: Hidden cursor correctly (#7464) (3338579)
  • UI: Hidden cursor correctly when no touch screen (#7458) (6e62cfa)
  • UI: Remove buffering spinner when playing a client side ad (#7507) (b980f67)
  • UI: Remove spinner and client side ad container elements when calling destroy (#7320) (3d51cb3)
  • UI: Restore missing AirPlay button (#7389) (96da45a)
  • WebVTT: Fix display italic subtitles with end align (#7559) (781a27d)
  • WebVTT: Fix mapNativeCueToShakaCue in Chromium browsers (#7273) (76376e9)

Performance Improvements

  • Ads: Reduce latency for interstitial to start playing (#7525) (5ee6a4d)
  • Ads: Reduce latency for interstitial to start playing (#7528) (6303924)
  • DASH: Create segment indexes only on new periods (#7294) (173a814)
  • DASH: Delete old matchedStreams (#7301) (d559366)
  • DASH: Delete old matchedStreams when using trickmodeVideo (#7306) (4ab3dea)
  • Improve performance when parsing EMSG (#7557) (cb66f47)
  • Only use tXml parent when necessary (#7304) (7ceffc0)

4.11.0 (2024-09-04)

Features

Bug Fixes

  • ABR: Do not adapt between spatial & non spatial audio (#7067) (1dc5c87)
  • ABR: Fix restrictToElementSize running while abr disabled (#7153) (aea85b0)
  • ABR: Not change to another quality without respecting a min time (#6979) (a5095a8)
  • Add more info in getVariantTracks for muxed streams (#7181) (d63c44a)
  • Add null check for current reference (#7184) (f5aceed)
  • Adjust timing of mediaqualitychanged event when safe margin is set (#7114) (f6ac236)
  • Ads: Detect correctly interstitial preroll when using native HLS playback in Safari (#7093) (9912798)
  • Ads: Don't show duplicate SKIP UI in IMA CS (#7084) (9337143)
  • Ads: Fix back to live for native HLS when interstitial endTime is Infinity (#7095) (18aea54)
  • Ads: Fix mangled properties when using X-ASSET-LIST (#7002) (ade19cb)
  • Ads: Fix playback of preroll interstitial when the currentTime is 0 (#7092) (0cdeb65)
  • Ads: Fix timelineRange detection in HLS interstitials (#7091) (d79f8e2)
  • Ads: Only allow play the preroll once (#7096) (0248268)
  • Allow dispatch metadata event with cueTime equal to 0 (#7098) (dcdecf9)
  • Allow recover normal stream when trick play stream fails (#7234) (2638ada)
  • Allow reference mimeType change in StreamingEngine (#7061) (bf6632e)
  • Apply playRange config to src= (#7168) (7cf332e)
  • Avoid clear buffer when select the same audio track (#6959) (b953a75)
  • Avoid reset iterator when seek into the buffer (#7004) (dc34ec4)
  • CEA: Always init CEA parser with new init segment (#7102) (61e570e)
  • CEA: Offset text CEA-608 that are out of viewport (#7024) (230f6e0)
  • Compare normalized codecs in codec switching checks (#7143) (01545f4)
  • Correct the behavior to defer closeSegmentIndex() calls during updates (#7217) (7ba7e61)
  • DASH: Allow play all time fastSwitching tracks (#7180) (4abfc5a)
  • DASH: Clear streamMap when period is removed from the manifest (#7202) (c5df88b)
  • DASH: Fix allPartialSegments signal when using L3D (#7179) (a1d3927)
  • DASH: Fix codec/mimeType for single text file (#7075) (4728d08)
  • DASH: Fix creation of multiperiod trickmode streams (#7229) (ebab340)
  • DASH: Fix EventStream Elements creation (#7194) (bd06fe7)
  • DASH: Fix MPD Patch when SegmentTemplate is shared between Representations (#7218) (b2502fd), closes #7214
  • DASH: Fix period combining when roles are equal (#7065) (38c691b)
  • DASH: Fix transitions from 'dynamic' to 'static' (#7029) (3ba94b8)
  • DASH: Improve memory usage with live streams (#7039) (d1435c7)
  • DASH: Patch manifest Adaptationset indexing, @n=<Numbering> and @t=
  • DASH: Prioritize highest bandwidth in PeriodCombiner (#7045) (29ed0a8)
  • DASH: Use proper namespace when mapping TXml node to Element (#7240) (cd2fc71)
  • Defer closeSegmentIndex() for old streams during ABR switches when segment fetches are ongoing (#7157) (4cff18d)
  • Destroy correctly unused transmuxer (#7059) (f161a1c)
  • Disable CC with disableText config (#7078) (f9040ce)
  • Disable seek retry cooldown on most platforms (#7010) (dcc60f9)
  • Do not minify CodecSwitchingStrategy enum keys (#7200) (f718139)
  • Don't throw an error when trying to disable a trick mode stream (#7235) (92f70ee)
  • Dont use inaccurateManifestTolerance for sequenceMode (#7207) (b119c03)
  • Dont use trick play track for liveSync feature (#7219) (b7481f2)
  • Exclude future segments in notifyTimeRange calculations (#6970) (62881f6)
  • Filter duplicate cues on text displayer append (#6949) (fa9feb3)
  • Fire the correct error code in src= mode in some situations (#7167) (a7a307c)
  • Fix bad warning when use selectAudioLanguage (#6999) (fbf1ad0)
  • Fix ended state in stateHistory (#7189) (f6be619)
  • Fix error thrown after catching null error (#7177) (b4dc2ad)
  • Fix horizontal alignment of WebVTT in UITextDisplayer (#7169) (efac129)
  • Fix ID3 timing when included in EMSG (#7099) (eb36c0d)
  • Fix iteration of document.fonts (#6976) (c70586c)
  • Fix MSE polyfill for iOS (#7049) (fcd87aa)
  • Fix NaN and empty objects in getNonDefaultConfiguration (#6956) (52e3864)
  • Fix normalized codec for VVC (#7201) (8ca1b74)
  • Fix skip interstitials with another ID but same URL (#7050) (8b70bb6)
  • Fix support for Dolby Vision based in VVC (#7212) (cdbbe23)
  • Fix type passed to isTypeSupported in some cases (#7233) (3e3953d)
  • Fix UITextDisplayer desync & null pointer exception (#7199) (247753d)
  • HLS: A/V sync regression for HLS live (#6987) (da6c605)
  • HLS: A/V sync regression for HLS with different segment sizes (#7015) (83955ee)
  • HLS: Add HLS_EMPTY_MEDIA_PLAYLIST error (#6951) (b3df270)
  • HLS: Calculate the delay based on the sum of the segment lengths (#7209) (abdabb0)
  • HLS: Check that segment 0 exists (#7208) (d744ef8)
  • HLS: Expose tilesLayout properly for live (#7123) (388050c)
  • HLS: Fix filtering video/audio streams without bandwidth (#7008) (64430ed)
  • HLS: Fix load AES media playlist (#7012) (3bd032c)
  • HLS: Fix parsing of width and height when using media playlist (#6989) (cec6166)
  • HLS: Fix use of EXT-X-MEDIA when not using Content Steering (#7166) (fcacb95)
  • HLS: Propagate bandwidth to stream in audio-only and video-only (#7006) (1f5badf)
  • HLS: Remove init segment on formats without init segment (#7060) (c576bc3)
  • honor autoShowText on non-audio streams (#6977) (ef15d13)
  • net: Remove AbortController polyfill (#7149) (65e6681)
  • Offset text regions that are out of viewport (#6986) (ca7fd6e)
  • Only check encryptionScheme when is not null and not empty string (#7079) (c62c5b5)
  • Pass correct adaptation value to MediaSourceEngine (#7111) (0ff0578)
  • PeriodCombiner: Use normalized codec to remove duplicates (#7032) (0669d24)
  • Prefetch: Use the same references time for evict and prefetchSegmentsByTime (#7003) (9fcaf4d)
  • properly map region height/width when applying anchors (#7105) (ac9a6ca)
  • Repeated initial segment load & cancellations (#7147) (3f3bbc6)
  • Revert change that caused a lot of warning with "cannot find endTime" and hls playback errors (#7239) (e522921)
  • Revert change that caused stalls with "cannot find endTime" (#7213) (2d2bddd)
  • SimpleTextDisplayer: Do not disable metadata & chapters tracks (#6948) (c6d834e)
  • SSA: Support files with line breaks that are not necessary (#6947) (88431b6)
  • Stats: Fix bytesDownloaded when using src= (#7223) (1faada6)
  • Stats: Fix completionPercent for Live (#6957) (d719328)
  • Transmuxer: Fix init segment between discontinuities (#7042) (6850f68)
  • TTML: Fix font styles parsing (#6969) (f56f7ba)
  • ttml: Handle escaped special characters. (#7047) (90668c2), closes #7044
  • TTML: Show background color with image subtitles (#6967) (e68fd55)
  • UI: Don't display NaN stats (#6958) (7c33192)
  • UI: Fix ad markers set before full initialization (#7089) (1d5c7d2)
  • UI: Fix display seekbar and time when the seekrange is infinite (#7182) (867f8b2)
  • UI: Fix font-family override in UITextDisplayer (#7249) (3d33277)
  • UI: Fix resolution label when the stream has not resolution (#7043) (089518c)
  • UI: Fix seek preview time in VoD (#7027) (226c740)
  • UI: fix wrong french in translation (#6982) (2d6c2af)
  • UI: Only show frame rate if there are several frame rates (#7190) (d4249b1)
  • UI: Remove not loaded font (#7242) (47f686f)
  • UI: Show all resolutions when there are only one audio. (#7017) (2a2c9cd)
  • UI: Show the ad marker in the seek bar when there are some intersections (#6990) (247037e)
  • Unify maxDisabledTime behaviour (#7077) (8e13e91)
  • WebVTT: Fix rendering of WebVTT in UITextDisplayer (#7023) (22a7c49)
  • WebVTT: Re-add rollover logic (#7104) (0708379)
  • Xbox: Fix screen resolution detection (#6988) (4d2aa24)
  • Xbox: Override Dolby Vision codecs (#7115) (2c399e0)
  • Xbox: Support screen resolution detection on Xbox when using WebView2 (#7144) (d93a019), closes #7141

Performance Improvements

  • DRM: compare init data only when config flag is set (#6952) (be22e5b)
  • HLS: do not loop twice when processing nalus (#6954) (a779d31)

4.10.0 (2024-07-01)

Features

  • add an audiotrackchanged event for when label, language, or roles of an audio track change (#6913) (8825af7)
  • Add audio codec to selectAudioLanguage() (#6723) (48bdf17)
  • Add dontChooseCodecs config (#6759) (5067d5c)
  • Add isLowLatency to shaka.extern.Manifest (#6842) (e020814)
  • add liveSyncTargetLatency option and deprecate liveSyncMinLatency and liveSyncMaxLatency options (#6822) (277afbf)
  • Add option to disable continue loading live stream manifest when paused (#6916) (0ea31b4)
  • Add segment URIs to segment-related errors (#6714) (8d680e5), closes #6712
  • Ads: Add averageLoadTime and errors to ad stats (#6828) (037d4cb)
  • Ads: Add content resume/pause requested events (#6738) (9b47b8f)
  • Ads: Add CUE ONCE support in Interstitials (#6785) (c72493a)
  • Ads: Add CUE PRE and POST support in Interstitials (#6799) (4ea9a44)
  • Ads: Add CUEPOINTS_CHANGED event to interstitials (#6791) (9b25ff5)
  • Ads: Add support for interstitials when using src= (#6777) (59304b8)
  • Ads: Add support for X-TIMELINE-OCCUPIES (#6806) (7844fed)
  • Ads: Fill loadTime stats in interstitials (#6817) (28d3c98)
  • Ads: Fix playback of interstitials in iOS (#6776) (363989c)
  • Ads: Improve preload timing on interstitials (#6792) (4638775)
  • Ads: Improve resume times when the interstial uses two video elements (#6774) (5bfe37f)
  • Ads: Remove circular dependency (#6868) (e39defb)
  • CEA: Add CEA support for VVC/H.266 (#6912) (a3d09a9)
  • DASH: add MPD_PATCH advanced request type (#6787) (2f3a1eb)
  • Dynamic target latency (#6858) (68b4777)
  • Export getMaxSegmentEndTime and getAvailabilityTimeOffset in PresentationTimeline (#6839) (680c0f1)
  • Fix processing EXT-X-DATERANGE on live streams (#6740) (4820565)
  • Fix useNativeHlsOnSafari deprecation (#6935) (b71d0a1)
  • HLS: Add HLS interstitial support (#6761) (60e6847)
  • HLS: Add support for EXT-X-DATERANGE (#6718) (2ec6444)
  • HLS: Add support for MediaQualityInfo events (#6927) (0895e2e)
  • HLS: Add support to variable substitution in EXT-X-DATERANGE (#6751) (3b2477f)
  • HLS: Allow disable streams when the media playlist fails (#6807) (c866d7b)
  • hls: expose manifest skd uri on drmInfo (#6857) (644677c)
  • HLS: Ignore EXT-X-DATERANGE in the past (#6757) (8d7dd37)
  • HLS: Only process DATE-RANGE in AUDIO and VIDEO playlists (#6793) (a1c91ae)
  • HLS: Use PLANNED-DURATION to determine the end time (#6800) (bf5a103)
  • move live sync options into their own object (#6845) (da0bc4d)
  • MSS: Add support for MediaQualityInfo events (#6923) (767cbed)
  • Parse dvvC box for Dolby Vision support (#6866) (69fe20f)
  • preload: Add new method destroyAllPreloads (#6756) (b500799)
  • Stats: Add manifestGapCount to stats (#6804) (8a678f3), closes #6789
  • Stats: Add manifestPeriodCount to stats (#6798) (65b0b8d), closes #6788
  • Stats: add size of the manifest to player stats (#6783) (d0d5843)
  • Stats: count non fatal errors (#6781) (081afde)
  • UI: Add ad statistics button (#6827) (ea82028)
  • UI: Add new stats to context menu (#6814) (8395b91)
  • UI: Add save video frame button (#6926) (19cfbf9)
  • UI: Highlight current time when hovered on seek bar (#6870) (f46dbdc)
  • UI: Initialize interstitials by default when using UI (#6797) (31d0445)

Bug Fixes

  • getPresentationStartTimeAsDate() should return time unaffected by clock drift (#6790) (0820491)
  • selectAudioLanguage() should ignore unplayable variants (#6805) (95590ad)
  • ABR: Add a guard when variant is null (#6928) (3be95a8)
  • ABR: Fix variant choose when two variants have the same bandwidth but different resolution (#6760) (a053dd2)
  • Ads: Fix duplicate interstitials when using src= (#6784) (3949686)
  • Ads: Fix interstitial ad values when the ad is loading (#6782) (08e8111)
  • Ads: Fix skip functionality in MediaTailor (#6910) (339bab4)
  • Allow use startTime equal to 0 in HLS live streams using src= (#6843) (224c1b9)
  • Avoid filter manifest when the DRM is not initialized (#6737) (80139b0)
  • Avoid firing SEGMENT_MISSING when there is an alternative (#6881) (aed859b)
  • CEA: CEA-608 is not rendered in some cases (multiples TRAF boxes) (#6878) (a3e1fdd)
  • CMCD: Fix reset CMCD on unload (#6821) (7bea10c)
  • CS: Fix IMA integration (#6907) (9b1ef04)
  • DASH: Allow play when SegmentTimeline has a duration 0 "S" element (#6896) (3e45e66)
  • Do not export functions in getNonDefaultConfiguration (#6739) (93c6123)
  • Don't clear the buffer when disable a stream (#6931) (5dac2c0)
  • DRM: close properly webkit media key sessions (#6775) (309bd72)
  • DRM: Probe robustness only for modern PlayReady keysystem (#6851) (96f248c)
  • ensure all timelineregionenter events are fired (#6713) (76863f2), closes #6711
  • Exclude fetch polyfill from fetch plugin (#6838) (8bb2d6e)
  • Fix AC-4 codec string in MediaSourceEngine (#6780) (8fb31c1)
  • Fix audio properties detection (#6867) (e204bf6)
  • Fix continues to play a few seconds after reaching playRangeEnd (#6861) (9f5b5a5)
  • Fix green screen issue on Edge with mixed content (#6719) (d5b1863)
  • Fix initial track selection in src= when using HLS (#6803) (a65a6f8)
  • Fix normalized codec for Dolby Vision (#6865) (465a69a)
  • Fix timestampOffset when is greater than baseMediaDecodeTime (#6849) (3eb85f9)
  • Generate the correct codec for AV1 HDR (#6879) (1c863c8)
  • HLS: Allow detect mimeType from non-gap segments (#6892) (14ce038)
  • HLS: Allow disable initial variant if necessary (#6940) (3416054)
  • HLS: Avoid get basic info when the first segment is a gap (#6882) (f217344)
  • HLS: Avoid make a HEAD request of gap segments (#6880) (c90bc5f)
  • HLS: Disable stream when the media live playlist is stuck (#6900) (c555b38)
  • HLS: Fix AC-4 codec selection in HLS (#6818) (bf15b24)
  • HLS: Fix get basic info from segments (#6898) (02331e1)
  • HLS: Fix getAvailableSegment_ function (#6915) (7bbf612)
  • HLS: Fix MPEG-H codec selection in HLS (#6901) (3db66b3)
  • HLS: Fix seekRange when using delta playlist (#6758) (7bcb86e)
  • HLS: Identify EXT-X-GAP with segment tags (#6884) (4ff0859)
  • HLS: Ignore query params in the uri of EXT-X-SESSION-KEY tags (#6755) (c3e6450)
  • ignore buffered content less than 1e-4s (#6802) (d6fcf66)
  • Only request initialization segment when it's necessary (#6929) (2f762ec)
  • Prefetch: cache iterator to avoid precision issues (#6899) (b5f1ee9)
  • Prefetch: Ensure prefetched segments are continuous (#6908) (db679e0)
  • preload: Fix error handling (#6753) (9d1fe4a)
  • preload: Fix memory leak with preload feature (#6894) (88d2a02), closes #6883
  • preload: Fix preload error reporting (#6746) (95422b1)
  • preload: Fix preload load latency logic. (#6890) (878bf62), closes #6871
  • PS4: Fix serverCertificate defaulted to null (#6716) (6f84e41)
  • Support for Zenterio (#6717) (97910dc)
  • TTML: Extended subtitle codec support (#6832) (601098b), closes #6831
  • TTML: Fix timing parsing when using 1dp (#6830) (3783ffd), closes #6829
  • UI: Don't show presentation time in ads (#6752) (2e4ace5)
  • UI: Fix resolution sorting (#6742) (aaf4b63)
  • UI: UI does not update after loading a new stream (#6721) (d9242cd)
  • UI: update French translations (#6873) (620756b)
  • UI: update Polish translations (#6846) (2c610a4)
  • UI: update Portuguese translations (#6874) (1fed8b7)
  • UI: update Spanish translations (#6875) (34cc33c)

4.9.0 (2024-05-30)

Features

  • ABR: Add cacheLoadThreshold config (#6657) (f374173)
  • Add a new setting to allow remove based on channels count (#6600) (0206e5a)
  • Add config for add headers to license requests (#6650) (e7b893b)
  • add config to clear decodingInfo cache on unload (#6678) (e0eeb5b)
  • Add getNonDefaultConfiguration (#6620) (907e6ba)
  • Add response URI to BAD_HTTP_STATUS error (#6561) (ed93987)
  • Add support for probing encryption scheme support (#6506) (2dea350)
  • Ads: Implement skip ad functionality in Media Tailor (#6598) (1429763)
  • Ads: Support CS on devices that don't support multiple media elements (#6575) (520930c)
  • Check encryptionScheme against MCap (#6484) (ec29f82)
  • DASH: Add manifest.dash.enableFastSwitching config (#6500) (2fc0c93)
  • DASH: Add MPD Chaining support (#6641) (82c5149)
  • DASH: Add MPD Patch support (#5247) (d38aabf)
  • DASH: Parse and use target latency (#6683) (9060ab0)
  • DASH: Support Dolby Vision profile 8.x (HEVC) and 10.x (AV1) (#6590) (e480bf0)
  • Expose the maximum hardware resolution through probeSupport() (#6569) (5da5de2)
  • HLS: Build closed captions metadata on-the-fly (#6700) (082f897)
  • Improve default retry delay for Low Latency (#6514) (5f8e7fd)
  • Optionally force HTTP content URIs (#6649) (dda713a)
  • Parse colorGamut and use it in MCap (#6663) (329d42a)
  • Preload AES key when the key is available in EXT-X-SESSION-KEY (#6495) (57cb6ad)
  • Preload: Add detachAndSavePreload method (#6630) (0a68e93)
  • Set autoCorrectDrift to false by default for low latency streaming (#6549) (3d1c546)
  • Set maxDisabledTime to 1 by default for low latency streaming (#6617) (1cdbbe0)
  • UI: List bandwidth for duplicate resolutions (#6548) (a9d5dc3), closes #6494

Bug Fixes

  • Add timeout to fullyLoaded in src= (#6676) (64e4fd8)
  • Ads: Fix CS destroy (#6624) (0e9c2d8)
  • Ban smooth codec switching on Tizen 5 & 6 (#6686) (c541515)
  • Cast: Incorrect detection of MediaCapabilities on Chromecast (#6656) (00c5c1d)
  • CEA: Fix stream detection when the stream has not control codes (#6703) (dd5658b)
  • CEA: Ignore XDS control codes (#6702) (f69694a)
  • CEA: reset PTS on new init segment (#6606) (024cb9b)
  • CEA: reset PTS on new init segment (#6671) (bcc6791)
  • Clear preload array before awaiting destroy (#6584) (be60f40)
  • DASH: decrease memory preasure on manifest with SegmentReference by updating old initSegmentReference (#6499) (2dd85e4)
  • DASH: Firefox multi-period/multi-codec bug (#6691) (b3cacad), closes #6690
  • DASH: Fix get partial current position for LL when using SegmentTemplate@duration (#6516) (6c47f8b)
  • DASH: Fix unescape UTCTiming uris (#6501) (27109fe)
  • DASH: Fix update of SegmentTemplate with number for LL (#6687) (c574be4)
  • Destroy preload managers on player destroy (#6576) (265784e)
  • Disallow Object.fromEntries in Tizen (#6634) (11272a3)
  • Do not assume 1080p Cast devices, some are 720p (#6562) (4498dcd)
  • Enable SMOOTH codec switching on Fuchsia cast devices (#6609) (f1d620c)
  • Fix COLR box parsing (#6699) (2b358c5)
  • Fix default value of liveSyncMinPlaybackRate (#6685) (a219e2f)
  • Fix deprecation warning for manifestPreprocessor that is always logged (#6496) (0873d1e)
  • Fix flac detection in Safari (#6497) (0e00d65)
  • Fix inefficient buffering behavior with negative trick play rate (#6489) (a57002b)
  • Fix init segment equality in Segment Prefetch (#6537) (ce7cef4)
  • Fix internal network filter for HEAD requests (#6660) (d816e7c)
  • Fix MCap checking when using src= (#6675) (54234f1)
  • Fix multi-codec filtering on DASH live (#6647) (9071002)
  • Fix numBytesRemaining when the request is done (#6653) (812163a)
  • Fix Opus support in Safari (#6607) (0a4c9d1)
  • Fix progress events for VOD when using vodDynamicPlaybackRate (#6688) (95d3c4a)
  • Fix seeking timeouts (#6539) (fda3c8f), closes #5202
  • Fix tXml conversion to DOMElement (#6538) (d494068)
  • Handle non existing navigator.platform string (#6517) (#6518) (f337e06)
  • HLS: Fix bad detection in some MediaPlaylist (#6608) (c5af5c7)
  • HLS: Fix HLS load when using #EXT-X-I-FRAME-STREAM-INF without resolution (#6680) (e51cd3b)
  • HLS: Fix mimetype checking when using SUPPLEMENTAL-CODECS (#6597) (5a90547), closes #6586
  • HLS: Support request byterange on media playlist detection (#6629) (d66446f)
  • Issue with compiler minifying webOS device properties (#6558) (61ce88b)
  • Make UITextDisplayer constructor backward compatible (#6532) (d564be8)
  • patch setServerCertificate() on older Tizens & webOS (#6696) (9e26166)
  • preload: Copy net filters to preload manager (#6709) (1cfb53e), closes #6698
  • Re-add setting playbackRate to 0 to control buffering state (#6546) (8232c60)
  • Remove preloaded segment when segment has network error (#6515) (2f5062a)
  • UI: Allow show same resolution with different video bandwidth (#6536) (9fb9b26)
  • UI: Fix dragging the seek bar seeks and pans the view in VR mode (#6677) (e3f85eb)
  • UI: Fix unhandled error when playing VR (#6679) (35cd411)
  • Xbox - round gap jumping values (#6695) (5b6e340)

4.8.0 (2024-04-26)

Features

  • ABR: Additional request information for ABR Managers (#6313) (6c4333c)
  • add mediaSource.addExtraFeaturesToSourceBuffer (#6362) (d0aa697), closes #6358
  • add a live sync panic mode (#6149) (65981e2)
  • add an option specifying when source buffer removals happen (#6242) (93d616e)
  • Add bytesDownloaded to stats (#6469) (d532bf4)
  • Add config to set live stream duration to Infinity (#6207) (de2957e)
  • Add disableTextPrefetch config (#6197) (202f308)
  • Add encryptionScheme support on MCap polyfill (#6482) (5a0e60a)
  • Add encryptionScheme to shaka.extern.DrmInfo (#6480) (c6c39df)
  • add includeKeys to CMCD config to allow filtering of CMCD data (#6248) (5a025fb)
  • Add Opus TS transmuxer (#6387) (3b5a71c)
  • Add preload system to player (#5897) (489b11a), closes #880
  • Add segmentData info to SegmentReference (#6370) (2bb6dbc)
  • Add support for Dolby Vision based on AVC and AV1 (#6154) (c100053)
  • Add TextDisplayer config (#6477) (de2a2d8)
  • Add unloadAndSavePreload (#6214) (0d929ca)
  • Ads: Add ability to set tracking URL for Media Tailor (#6365) (b51e661)
  • Ads: Skip play detection in some devices (#6443) (91f74e7)
  • Change default preferredKeySystems for Xbox and PS4 (#6471) (cff3d84)
  • CMCD: Add support to dl, nrr and nor parameters (#6171) (8a9f17d)
  • CMCD: Add support to rtp parameter (#6184) (038e894)
  • DASH: Add signalling the last segment number in Period (#6416) (07a3241)
  • DASH: Allow PeriodCombiner for using streams once (#6097) (5e3db78)
  • DASH: update period as part of configuration (#6419) (bdabddc)
  • demo: Add new demo asset for multi-mimeType/codec feature (#6349) (067d9ce), closes #6010
  • Demo: Show APIC(ID3) as poster for audio only streams (#6122) (291b497)
  • Detect maximum HW resolution automatically on some platforms (#6180) (278c7bc)
  • Escape html codes when getting node contents (#6198) (a1c1620)
  • Evict instead delete on prefetch (#6404) (0fc5814)
  • Expose PresentationTimeline segment availability duration through Player (#6075) (8ff5b59)
  • HLS: Add AES-256 and AES-256-CTR support (#6002) (c3380ce)
  • HLS: Add automatically keyId-key for identity format (#6308) (d251649)
  • HLS: Add ignoreManifestProgramDateTimeForTypes (#6372) (03bb463)
  • HLS: Add support for SUPPLEMENTAL-CODECS (#6155) (8d6ad7e)
  • HLS: Create segmentIndex when there is only one variant (#6383) (3ba7492)
  • Make getPlayheadTimeAsDate and getPresentationStartTimeAsDate available for VOD (#6417) (986071b)
  • Parse avcC, hvcC and dvcC boxes (#6146) (b8520ed)
  • Parse colr box (#6438) (b8b1aa6)
  • Parse vpcC and av1C boxes (#6157) (151b29c)
  • Parse XPath (#6470) (0883c32)
  • Prefer MSE HLS over native HLS in Apple platform when not encrypted (#6188) (fc38aee)
  • prefetch audio languages. (#6139) (a8ab0c8), closes #6128
  • Remove com.adobe.primetime keysystem (#6189) (47602c6)
  • Rename aes128Key to aesKey to allow aes256 in the future (#5990) (31c06ca)
  • Replace native DOM Parser with a more performant one (#6063) (7116a34)
  • SegmentIndex minimal interface (#6095) (f064811)
  • Set updateIntervalSeconds to 0.1 by default for low latency streaming (#6403) (9838622)
  • text: Add MediaSource.modifyCueCallback (#6167) (bd944d1)
  • text: Add time context to modifyCueCallback (#6252) (03633e4)
  • Trigger an event with spatial video info (#6437) (d8d96c8)
  • UI: Add config for refreshTickInSeconds (#6386) (dbdef5d)
  • UI: Allow show/hide ui programmatically (#6117) (4e599cb)
  • UI: Disable forward and rewind with arrows while seekbar not active (#6049) (c189922)
  • UI: Hide resolution overflow menu button if there's only one choice (#6004) (8649e7e)
  • UI: Separate trackLabelFormat settings for text tracks and audio tracks (#6052) (a94a602)
  • UI: UI support for VR content (#6450) (95c6a7d)
  • UI: Use the same logic to group variants into audio and quality selectors (#6069) (eabfc47)
  • UI: Use the same logic to group variants into audio and quality selectors (#6096) (c596677)
  • Update for LCEVC Integration with new features added. (#6263) (7b717e5)
  • vod dynamic playback rate buffer control (#6172) (8fc292b)
  • WebVTT: Handle badly formed VTT (#6147) (335eab0)
  • WebVTT: Remove un-needed VTT payload normalisation (#6145) (ee600c4)

Bug Fixes

  • AC-3 audio codec support on Tizen (#6166) (08cc34a)
  • Add LOAS-AAC detection in TS (#6390) (535d386)
  • Add ManagedMediaSource support in MediaSource polyfill (#6361) (12bf642)
  • add missing properties to PlayButton type (#6130) (8f0db8e)
  • Add Opus and AV1 detection in TS (#6385) (bc23fff)
  • Ads: Fix ad pausing when using customPlayheadTracker (#6444) (2d42933)
  • Ads: Fix initial ads configuration (#6176) (5b141eb)
  • Ads: Fix muting/unmuting ads won't affect video and vice versa (#6073) (01a217f)
  • Ads: Fix VMAP won't play in muted autoplay (#6046) (a8bbbce)
  • Allow by default variants without pssh in the manifest (#6144) (e1cd031)
  • APL set-top box wrongly identifies as an Apple device. (#6026) (7f5005d)
  • auto cancel trickPlay on live as specified (#6100) (45505b0)
  • avoid uiTextDisplayer.destroy crashing if called more than once (#6022) (42c235d)
  • call to load in MediaElement using src= in HLS Safari (#6478) (064c3b7)
  • Cast: Don't pause local video until the cast connection is established (#6359) (ac833da)
  • Cast: Force TS content to be transmuxed on Chromecast (#6262) (b8905bd), closes #5278
  • Change quality only when adding the last partial segment and it is fast switching (#6114) (48626f2)
  • clear listeners when resetting media source (#6449) (ab36ce7)
  • CMCD: Allow reconfigure session ID (#6177) (3537dc0)
  • CMCD: allow session id to be configured (#6192) (78c12a6)
  • CMCD: Fix CMCD for some mimetypes in src= (#6178) (33b40cf)
  • Correct playhead when seek beyond seekRange (#6304) (a6d27a9)
  • DASH: Check if periodCombiner_ exists before configuring (#5998) (bb64cb1)
  • DASH: Fix bad error on DASH DAI (#6047) (a371f43)
  • DASH: Fix PERIOD_FLATTENING_FAILED on fastswitching streams (#6113) (af12b0b)
  • DASH: Fix precision issue on some platforms (#6258) (4a0d1ca)
  • DASH: Fix support for multi-mimeType variants (#6348) (1da5da9)
  • DASH: Set delay to 0 for LL streams (#6406) (b7b2fc9)
  • DASH: Update dash manifest when minimumUpdatePeriod = 0 (#6187) (a332070)
  • DASH: Use labels to stitch streams across periods (#6121) (0de7af9)
  • Demo: Allow play MP4 and TS in legacy iOS devices (#6051) (f0751cd)
  • Demo: Fix MSS assets (#6194) (844c208)
  • demo: Remove max height of demo config tabs (#6324) (4655271)
  • Disable smooth codec switching in Edge Windows (#6384) (fdc7c6c)
  • do not append blank codec strings (#6093) (ed0aa22), closes #6092
  • Do not make LICENSE_REQUEST_FAILED fatal if other keys are successful (#6457) (a6c748a)
  • Do not use replaceAll in XPath parsing (#6473) (bf17a34)
  • don't double wrap URIs for HLS key requests (#6246) (948660b)
  • Don't retry MSE errors on startup (#6112) (de7d8d3)
  • Don't update captions when video is paused (#6474) (2f653f1)
  • ENCRYPTED CONTENT WITHOUT DRM INFO on comcast X1 due to safari blocklist (#6034) (3bf0664)
  • Fix cea608 whitespace rendering (#6329) (8cf9d59), closes #6328
  • Fix compiler issue in Mp4BoxParsers (#6312) (5badb6a)
  • Fix detection of flac support on Safari (#6250) (bb712c0), closes #6249
  • Fix detection of spatial rendering support in Cast (#6138) (4e47acd)
  • Fix DRM workaround for Xbox with Dolby Vision boxes (#6201) (d938837)
  • Fix duplicate init segment download when using startAtSegmentBoundary (#6479) (da7863d)
  • Fix ENCA box parsing (#6298) (bca9f25)
  • Fix encryptionScheme for FairPlay (#6483) (bf9787a)
  • Fix exceptions in StreamingEngine when reloading (#6466) (d570ae1), closes #6458
  • Fix gitpkg.now.sh dependencies (#6211) (62ab048)
  • fix handling of multiple CC tracks (#6076) (44cb8a2)
  • Fix HLS segment index errors and x-program-date-time errors since v4.7.4 (fd6b3d0)
  • Fix liveLatency in stats (#5982) (00c918f)
  • Fix nalu parsing in TS (#6137) (df8dbb9)
  • Fix PES rollover in TS (#6363) (e8f37f0)
  • Fix playback stuck on initial gap (#6340) (292ef20), closes #6339
  • Fix reusing region elements in UITextDisplayer (#6476) (4302a6b)
  • Fix SAR when transmuxing (#6309) (b5d69f0)
  • Fix SegmentPrefetch in some cases (#6199) (b508d48)
  • Fix support of getAllThumbnails when using DASH multi-period (#6464) (6905c74)
  • Fix transmuxer when some PES has the same pts and dts value (#5985) (165feac)
  • Fix uncaught global OBJECT_DESTROYED errors (#6460) (32d7054)
  • Fix untrusted types in MediaTailorAdManager (#5996) (2f06039)
  • Fix waiting for empty init datas (#6292) (118f47f), closes #6228
  • Fix webOS 4 & 5 utility methods (#6463) (8c549f3)
  • Fix wrong aspect ratio in transmuxed videos (#6170) (eb1fef8)
  • HLS: Avoid duplicate AES request when using the same info (#6118) (1671a3e)
  • HLS: Avoid duplicate AES requests (#6399) (ea740ba)
  • HLS: Ban unsupported combinations of SAMPLE-AES encryption (#6295) (edbac36)
  • HLS: Fix bad init segment request with byterange when using media playlist (#6297) (6a8f972)
  • HLS: Fix bad warning when playing HLS-AES128 (#6434) (17df192)
  • HLS: Fix clear init segment mapping (#6000) (8a44111)
  • HLS: Fix IAMF codec selection in HLS (#6389) (c59a3b8)
  • HLS: Fix labelling of captions in Safari (#6426) (35dd543)
  • HLS: Fix playback of muxed TS content in Safari (#6045) (1b675cb)
  • HLS: Fix SAMPLE-AES playback (#6402) (af88a32)
  • HLS: Fix variant synchronization in HLS after selectVariantTrack (#5984) (8da033f)
  • HLS: Fix VVC codec selection in HLS (#6156) (701ec9b)
  • HLS: getPlayheadTimeAsDate() differs from X-EXT-PROGRAM-DATE-TIME (#6059) (776b69d)
  • HLS: getPlayheadTimeAsDate() differs from X-EXT-PROGRAM-DATE-TIME (#6371) (c615cf4)
  • HLS: Live recovery after disconnects (#6048) (8476631)
  • HLS: Only offset segment ref times when needed w/ EXT-X-MEDIA-SEQUENCE (#6378) (bca6252)
  • HLS: Reset textSequenceModeOffset on discontinuity (#6388) (966302d)
  • HLS: Set the bandwidth correctly for audio/video-only variants (#6165) (658386b)
  • Improved HEAD request fail test when fallback-ing to GET request (#6044) (b45877d)
  • Include text bandwidth in stats (#6109) (4823dfe)
  • Install by default shaka.polyfill.PatchedMediaKeysApple when there is no unprefixed EME support (#6053) (5b5b2ce)
  • log prefetch miss for missing segments (#6012) (a70136d)
  • Looser tolerance for ending trick play at edge of seek range. (#6422) (9f603ad), closes #6421
  • offline: Fix server certificate error when trying to delete stored content (#6080) (e1eb003)
  • offline: Fix store persistent licenses with drm info in the pssh (#6143) (5acc773)
  • player Dropping Variant (better codec available) when it should not (#6163) (07ebdb1)
  • preload: Fix load interruption (#6271) (d795a00), closes #6225
  • preload: Fix timing of call to stopQueuingLatePhaseQueuedOperations (#6238) (fd57e7f), closes #6225
  • preload: Only start preload if manager exists (#6222) (36b7367)
  • Prevent license requests for unplayable variants (#6204) (cac1fd0)
  • Provide a fallback to GET request when HEAD request fails (#5986) (1af93e6)
  • Reject Opus encrypted on Firefox Android (#6115) (e692d68)
  • Reject TS content on all platforms and transmux always (#6382) (7e32636)
  • Reset to default playback rate on release playback rate controller (#6089) (23fb2f5)
  • stay paused after codec switch (#6108) (e48438f)
  • text roles being combined incorrectly in some multiperiod cases (#6055) (b463e39), closes #6054
  • transmuxer: Support raw AAC with TS extension (#6360) (7c6e846)
  • TTML: Clip to video when extent is not present (#6086) (2862228)
  • TTML: Fix trim surrounding spaces with xml:space="default" (#6395) (bcedec3)
  • tXml: html unescape node attributes with urls (#6267) (67cd2dd)
  • UI: Disable PiP on casting (#6110) (6312fa3)
  • UI: Fix disable PiP when using documentPictureInPicture (#5992) (6229284)
  • UI: Fix keyboard navigation of volume bar on Firefox (#5981) (90f1d61)
  • UI: Fix replay button when the post-roll is running using CS (#6072) (6b7a02a)
  • UI: Fix the scrolling when scrolling from the laterals when seekOnTaps is enabled (#6050) (df05692)
  • UI: Update the playbackrate on loaded event (#6090) (9b9ff16)
  • VTT: fix setting textShadow when multiple CSS classes provided (#6287) (d0e64d7)
  • WebVTT: Fix multiline colored VTT subtitles (#6394) (25427c7)
  • WebVTT: Remove rollover logic because we always transmux TS (#6397) (286126e)
  • When disconnecting from chromecast, subtitles are turned off (#6103) (d4cd66d)

Performance Improvements

  • Cast: memoize/cache canDisplayType results to reduce startup latency (#6367) (30285b2)
  • DRM: pass preferredKeySystems to filterManifest() (#6468) (c9b61fe)
  • HLS: do not filter all tags to get the first tag (#6088) (9802f65)
  • Improve performance of addThumbnailsTrack (#6067) (3a14047)
  • mp4generator: stop nesting concat in methods (#6041) (f52dd2b)
  • Optimize init segment reference comparison for common case (#6014) (58d946e)
  • PeriodCombiner improvements (#6005) (4022788)
  • transmuxer: Improve performance on video transmuxing (#6364) (d0c3d9a)
  • transmuxer: various performance improvements (#6003) (cd326e2)
  • ts parser O(n^2) performance bug. (#6035) (dd50028)
  • WebVTT: Improve parsing time for unstyled payloads (#6066) (9462e12)

Reverts

  • Add chapter titles and dividers on the seek bar (#6208) (32f8dc5)
  • Fix potential AV sync issues after seek or adaptation (#6435) (73117f0), closes #5785 #4589
  • Install by default shaka.polyfill.PatchedMediaKeysApple when there is no unprefixed EME support (#6068) (3ce4399)

4.7.0 (2023-12-04)

Features

  • Add config to allow Media Source recoveries (#5938) (0deb25b)
  • Add config to prefer spatial audio (#5963) (90bc6a7)
  • add preferred video label (#5948) (503327a)
  • Add support for Common Media Server Data (CMSD) (#5900) (966b910)
  • Avoid streams which cannot fit into the browser's MediaSource quota (#5937) (c496aaf)
  • DASH: Add support for location in Content Steering (#5914) (8f453c2)
  • DASH: Handle mixed-codec variants. (#5950) (24e3255), closes #5961
  • Demo: Add field for chapters URL when adding custom content (#5934) (d1bc83d)
  • Demo: Add field for text URL when adding custom content (#5953) (5c4a3a2)
  • Demo: Use MediaSession action handler in the demo (#5927) (078ab36)
  • expose CEA708 window position in the cue's region (#5924) (2a524bf)
  • Fix Media Source recoveries in some cases (#5966) (b2a880b)
  • Improve npm package size (#5955) (ca28063)
  • Set baseDelay to 100 by default for low latency streaming (#5926) (515a4ab)
  • UI: Add double tap to forward/rewind in the video (#5943) (918c30b)
  • UI: Add more keyboard shortcuts (#5942) (2fcc2f8)
  • UI: Hide language and resolution overflow menu button if there's only one choice (#5928) (628bb63)

Bug Fixes

  • CEA: Fix positioning in CEA-608 (#5925) (83f6f53)
  • DASH: Fix bad url when specify using a full WebVTT with BaseURL (#5954) (ba85ece)
  • DASH: Fix false redirect detection (#5910) (3a68623)
  • DASH: SegmentTemplate@media not updated after change in manifest (#5899) (30de177)
  • Demo: Allow configure some missing configs (#5918) (c62e38c)
  • Demo: Pressing "Edit" button unstores custom asset, but does not update "stored" button (#5936) (82b958f)
  • Fix color detection in text utils (#5970) (68903e1)
  • Fix ESDS box parser (#5952) (7683892)
  • Fix init segment comparison (#5920) (82ab893)
  • Fix language comparison in addTextTrackAsync (#5904) (f708318)
  • Fix reset Media Source when using mixed codecs in different containers (#5949) (419b1c3)
  • Fix trackschanged event not fired after a license request is denied for some tracks (#5962) (4eba182)
  • Fix transmuxer when sample has no video data (#5933) (6102060)
  • HLS: Fix m4s extension detection (#5951) (d89945f)
  • HLS: Provide a fallback to GET request when HEAD request fails (#5964) (fb5a833)
  • HLS: Recognize CEA subtitles when CLOSED-CAPTIONS attribute is missing (#5916) (58d4597)
  • Only append to the buffer init segments when the segment is independent (#5921) (09f2a2e)
  • Properly size region anchor from LINE units (#5941) (8b6602e)
  • UI: Correctly display video time and duration for VOD (#5929) (00ff864)
  • Unmask errors on LL (#5908) (c898364)
  • WebVTT: Fix support for line vertical alignment (#5945) (9f5e461)

4.6.0 (2023-11-16)

Features

  • Add a stub text display class (#5804) (#5806) (700d181)
  • Add config to ignore duplicate init data (#5853) (acf23f8)
  • Add partial info to shaka.media.SegmentReference (#5822) (766b0a1)
  • Add support for WPE based browsers in RDK set-top boxes (#5852) (2eedb12)
  • Add thumbnails support in src= (#5802) (88e4cd4)
  • Add video progress events (#5850) (c3beee6)
  • Allow prefetch init segments (#5825) (3f392c0)
  • DASH: Add initial support for "urn:mpeg:dash:ssr:2023" (#5762) (508e5cf)
  • DASH: Add support for Content Steering (#5710) (42f491f)
  • DASH: Add support for Content Steering in AdaptationSet BaseURL (#5884) (1c6f1fa)
  • DASH: Add support for minimum values in service descriptions (#5844) (5f94a62)
  • Demo: Add CBCS content to demo (#5862) (9777c52)
  • Demo: Add Content Steering assets (#5888) (8e0ee8a)
  • demo: Add icon for new demo asset (#5866) (f7448b7)
  • Demo: Add new 3D movie stream from Apple (#5872) (a5adf31)
  • HLS: Add new config for allow LL-HLS byterange optimization (#5877) (3e91e8e)
  • HLS: Add new config to get codecs from media segment for playlists without CODECS attribute (#5772) (80630bb), closes #5769
  • HLS: Add support for Content Steering (#5881) (b75ca1d)
  • HLS: Add support for mjpg I-Frames playlist (#5856) (801131f)
  • HLS: Add support for QUERYPARAM variable type in #EXT-X-DEFINE (#5801) (fda3189)
  • HLS: Add support for REQ-VIDEO-LAYOUT (#5809) (81fc82b)
  • HLS: Build closed captions metadata for media playlist on-the-fly. (#5811) (754bfac)
  • HLS: Improve the stream info when EXT-X-MEDIA has not uri (#5886) (b5b6a0f)
  • ID3: decode APIC frames (#5857) (6a862d2)
  • Improve latency in LL DASH streams (#5820) (20b4abf)
  • net: Add shaka.net.NetworkingUtils (#5756) (be96fd0)
  • Stop setting playbackRate to 0 to control buffering state (#5696) (6156dce)
  • thumbnails: Add Player.getAllThumbnails (#5783) (9f7576b), closes #5781
  • UI: Add chapter titles and dividers on the seek bar (#5863) (c1198df)
  • UI: Bucketize resolution names in the UI (#5816) (b56b9df)
  • UI: Display frame rates in the quality selector (#5753) (3096378)
  • UI: Show the channel count in the audio selector (#5868) (1681acd)
  • Use ManagedMediaSource when available (#5683) (01da5fa)

Bug Fixes

  • ABR: Fix HLS playback after internet connection is restored (#5879) (f5777e5)
  • AD_STARTED fires before ad started with AWS Media Tailor (#5855) (b39f334)
  • Add Orange platform to requiresEncryptionInfoInAllInitSegments (#5895) (9d23a87)
  • Allow get seekRange on manifestparsed event in some cases (#5892) (606d693)
  • Allow parseXmlString when createNodeIterator is not available (#5805) (ea7764d)
  • ban new Uint16Array(buffer) (#5838) (155befb)
  • CEA decoder should return early if packet is not large enough (#5893) (9a694b5)
  • DASH: Fix bad url when specify MPD BaseURL and AdaptationSet BaseURL (#5883) (5f891d9)
  • DASH: Fix manifest update time for Live manifests (#5763) (65449d1)
  • DASH: Fix manifest update time for LL-DASH (#5736) (8b7141f)
  • dash: fix race condition in segment template (#5842) (8d2b657)
  • DASH: Handle minimumUpdatePeriod=0 with urn:mpeg:dash:event:2012 (EMSG) (#5823) (f8438df)
  • DASH: Segments being fetched out of the range of the timeline (#5889) (d8aa24f)
  • Dispatch streamDataCallback correctly in SegmentPrefetchOperation (#5764) (bab8153)
  • Fix bug with live start time (#5835) (577d141)
  • Fix chooseCodecsAndFilterManifest for similar frameRate (#5817) (8ff204d)
  • Fix chooseCodecsAndFilterManifest for some HLS manifest (#5800) (51870e9)
  • Fix converts legacy avc1 codec strings on transmuxer (#5790) (8944ca9)
  • Fix crash while playing HLS AES 128 streams (#5830) (64b12c1)
  • Fix DRM workaround for Tizen and Xbox with ac-4 boxes (#5812) (72a5de3)
  • Fix incompatible codec is selected in Windows Edge for Widevine (#5831) (5aa3597)
  • Fix mangled property in compiled mode in Content Steering (#5887) (0e62b8e)
  • Fix missing audio streams (#5869) (d6aab6b)
  • Fix nalu parsing and improve performance in the transmuxer (#5846) (ae423b4)
  • Fix selectAudioLanguage using channelsCount param (#5875) (c830a99)
  • Fix variant filtering by preferredAudioChannelCount (#5859) (51edeae)
  • For text content is not necessary codec switching (#5731) (bdbaae5)
  • hisense: set stallSkip to 0 for HiSense devices (#5833) (c457db8)
  • HLS: Fix accessibilityPurpose detection (#5840) (ceaa9fa)
  • HLS: Fix bad detection in some MediaPlaylist (#5878) (5e797bd)
  • HLS: Fix decryption of AES-128 (#5871) (da38b36)
  • HLS: Fix init segment when EXT-X-MAP is preceded by EXT-X-BYTERANGE (#5732) (24e5de3)
  • HLS: Fix kind detection for 'captions' text tracks (#5819) (8e442b3)
  • HLS: Fix LL-HLS with byterange optimization using segments mode (#5876) (c79e5a5)
  • HLS: Fix url management in HLS (#5722) (8deab71)
  • Offline: Fix download of some HLS manifests (#5861) (c2c8320)
  • offline: Fix server certificate error when trying to store content (#5848) (f4a35f2)
  • TTML: Fix support of urls in smpte:backgroundImage (#5851) (fa93d53)
  • UI: Console error on remote.cancelwatchavailability() method in remote playback feature (#5793) (b66a8e8)
  • UI: Fix text selector when the trackLabelFormat is set to LABEL (#5751) (bba0651)
  • UITextDisplayer font-family is overridden by UI's Roboto font (#5829) (cb8a5ed)
  • WebVTT: Fix wrong writing-mode in nested cues (#5807) (ea7d83e)

Performance Improvements

  • dash: improve readability and reduce number of loops in dash parser (#5768) (17a4363)
  • DASH: PeriodCombiner optimisations (#5837) (ade93b0)
  • DASH: reduce looping and remove chaining awaits in period (#5774) (be755e8)
  • HLS: Improve detection of all partial segments (#5761) (2a35579)
  • Improve transmuxer performance (#5789) (aa41e87)
  • manifest: avoid unnecessary looping in uri resolver (#5773) (4d5caee)
  • simplify and improve performance of parsing initData when deduping (#5775) (041a08f)
  • utils: use WeakSet to track object references (#5791) (daa9d1f)
  • Xbox: drop incompatible variants for XBOX early (#5777) (170a40c)

4.5.0 (2023-10-04)

Features

  • ABR: Allow some downscale when use restrictToElementSize or restrictToScreenSize (#5631) (cad1ac8)
  • Add getBandwidthEstimate to the player interface for custom manifest parser (#5714) (1271a18)
  • Add H.265 TS transmuxer (#5611) (3c2c095)
  • Add KeyStatusChanged and UpdateState events (#5695) (2f97fa7)
  • Add manifestupdated event (#5602) (b16d2f0)
  • Add TS transmuxer for muxed content (#5571) (7df3321)
  • Ads: Add support for AWS Elemental MediaTailor (#5679) (cf5a72b)
  • CEA: Parse CEA from TS with H.265 (#5610) (54eaf63)
  • DASH: Add new config to prevent mixing of audio representations from different adaptation sets (#5620) (0bbb470)
  • DASH: Add support for AES-128 (#5656) (96ae7f2)
  • DASH: Allow the playback of DASH with time and large timescale value (#5621) (4a1c96e)
  • demo: Added icons for new demo assets (#5691) (12400b1)
  • Enable codec switching (#5470) (0078137)
  • HLS: Get the correct video info for TS segments with H.265 (#5616) (e191c75)
  • HLS: Take into account the parsing time for manifest schedule update (#5678) (f7e33a3)
  • Migration of LCEVC DIL (Decoder Integration Layer) to LCEVC Dec (Decoder) (#5459) (c1e18d3)
  • TTML: Add support to tts:ruby (#5645) (9fd220e)
  • TTML: Add support to tts:textCombine (#5644) (73a3bd9)
  • UI: Add config to preferDocumentPictureInPicture (#5690) (025502a)
  • UI: Add PiP function to controls (#5629) (b422847)
  • UI: Add remote button with RemotePlayback API (#5650) (1ef5ae0)
  • WebVTT: Add support to ruby, rt, rp html tags (#5642) (76ffd38)
  • WebVTT: Add support to text-combine-upright (#5633) (a2f253f)

Bug Fixes

  • Allow PID change in TsParser (#5681) (d9b49d9)
  • CMCD: Fix CMCD for some mimetypes in src= (#5699) (e2c32c5)
  • com.apple.fps should work with the default initDataTransform when using legacy Apple Media Keys (#5603) (76fdda6)
  • Compute correctly the positionAlign in UITextDisplayer (#5630) (3a2dbc3)
  • DASH: Fix bigint implementation (#5707) (45009d2)
  • DASH: Fix race condition error while switching audio tracks (#5619) (29d9a10)
  • Demo: Allow com.apple.fps.1_0 in the custom DRM System field (#5600) (ab86000)
  • Demo: Fix url of "Low Latency HLS Live" asset (#5708) (146d3ec)
  • Fix compiled-mode error formatting (#5623) (a19912e)
  • Fix creation of new Stream object for each manifest request in DASH Live when using CEA (#5674) (0a8b519)
  • Fix MediaSourceEngine reset operation (#5576) (9f5e91f)
  • Fix Mp4Generator (#5566) (effafbc)
  • Fix NALU parsing in some HLS muxed live streams (#5688) (756a576)
  • Fix PES parsing (#5559) (5c6ab9e)
  • fix preferred track selection on Safari (#5601) (d021d6f)
  • Fix some properties on the shaka.text.Cue that are mangled (#5673) (d2b7cb2)
  • Fix transmuxed audio timestamps (#5595) (0260aef)
  • Fix transmuxing of muxed content (#5686) (f20d50a)
  • Fix TS transmuxer when the main content is muxed (#5575) (65b3037)
  • Fix unreleased stack overflow on statechanged (#5712) (ebacf32)
  • HLS: Allow audio groups on audio-only content (#5578) (3cbc444)
  • HLS: Fix audio and video out of sync (#5658) (4cc4143)
  • HLS: Fix display CEA-708 in HLS (#5694) (2097193)
  • HLS: Fix presentation delay for small live playlists (eg: 3-4 segments) (#5687) (caef5a4)
  • HLS: Get the correct video codec for TS segments (#5598) (1135115)
  • HLS: Show WebVTT subtitles with X-TIMESTAMP-MAP in segments mode (#5643) (bd636d4)
  • HLS: Skip segments without duration and without partial segments (#5705) (f53d50d)
  • HLS: Support AES-128 in init segment according the RFC (#5677) (806d91a)
  • Improve TsParse to avoid parsing errors (#5615) (5fa8b42)
  • Prevent codecs override in the transmuxer (#5568) (66c625f)
  • Remove debugging code on Simple Text (#5582) (991130a)
  • seeking in segment timeline returns incorrect index (#5716) (c02ccee), closes #5664
  • TTML: Fix wrong writing-mode in nested cues (#5646) (3a4f108)
  • UI: Fix broken language names on Google TV (#5613) (fc93292)
  • WebVTT: Fix support for line:0 vertical alignment (#5632) (eed393f)
  • WebVTT: Fix text displayed out of picture and with overlapping lines (#5662) (6975be9), closes #5661
  • WebVTT: Fix wrong writing-mode in nested cues (#5641) (56a4cea)

Performance Improvements

4.4.0 (2023-08-30)

Features

  • ABR: Abr improvement config (#5400) (b51ee6e)
  • Add a Mp4Generator (#5127) (d475a73)
  • Add AAC silent frame getter (#5557) (933f039)
  • Add AAC transmuxer (#5240) (00d3a45)
  • Add AC-3 and EC-3 support in Mp4Generator (#5235) (28d18ad)
  • Add AC-3 detection in TS (#4931) (48c30bc)
  • Add AC3 transmuxer (#5297) (6f83997)
  • Add EC-3 detection in TS (#5144) (24a3b7d)
  • Add EC3 transmuxer (#5352) (7d24e14)
  • Add ExpressPlay FairPlay util (#4926) (7fa40fd)
  • add feature-flag to insert fake encryption in init segments on broken platforms (#5561) (f14f295)
  • Add getManifestType method (#5021) (c7c5e94)
  • Add liveSync configuration to catch up on live streams (#5304) (db44dc8)
  • Add missing export in TsParser (#5145) (412a7e8)
  • Add MP3 transmuxer (#5208) (82e905b)
  • add Occitan locale (#4900) (68486a3)
  • Add originalLanguage to the Track structure (#5409) (f53349f)
  • Add preferredAudioLabel to PlayerConfiguration (#4763) (aadecd6)
  • Add preferredVideoHdrLevel config. (#5370) (2f511a2)
  • Add safeMargin as a parameter of the player selectAudioLanguage method (#5316) (e4a4138)
  • Add support for AC-3 and EC-3 audio in DVB streams (#5484) (9bd559b)
  • Add support for changing codecs in MediaSourceEngine (#5217) (464f33c)
  • Add support for Document Picture-in-Picture (#4969) (3828fd6)
  • Add support to old EMSG schemeId for ID3 (#5320) (cd9ee09)
  • Add support to streamDataCallback when using prefetch (#5310) (6104b57)
  • Add TS transmuxer (#5386) (eec25b2)
  • Ads: Add ads config (#5085) (dfe263a)
  • Ads: Add control AdsRenderingSettings (#5536) (d37143e)
  • ads: Add getPodIndex to CS and SS ads (#5524) (65cf077)
  • ads: Add new methods to Ads (#5107) (2b33315)
  • Ads: Allow multiple calls to requestAds in CS (#5542) (837e0fb)
  • Ads: Allow use a custom playhead tracker in CS (#5543) (362f03f)
  • Ads: Disable custom playback on iOS 10+ browsers for client-side ads (29e022e)
  • ads: Dispatch a player event for client-side ad errors (#5045) (673b7fc)
  • Allow custom plugins for transmuxing (#4854) (fac721d)
  • Allow generate muxed content with Mp4Generator (#5555) (1112d1d)
  • Allow generate segments with Mp4Generator (#5185) (8da971f)
  • allow reuse of persistent license sessions (#4461) (cc97da1)
  • Allow VTT files with erroneous linebreaks (#2394) (9b1c614), closes #2358
  • Cache mediaCapabilities.decodingInfo results (#4789) (b7781f0), closes #4775
  • Caching and other efficiency improvements for mcap polyfill (#4708) (884c4ca), closes #4574
  • cea: Add CEA parser for TS (#4697) (70fad8d)
  • CEA: Add support to vertical position in CEA-608 (#5531) (47224ff)
  • Config to require a minimum HDCP version (#4883) (61613cf)
  • Convert CEA parsers to plugins (#5195) (7bda65d)
  • DASH: Achieve better latency in LL streams (#5291) (f4bcc87)
  • DASH: Add support for <dashif:Laurl> (#4849) (b441518), closes #4748
  • DASH: Add support for service descriptions (#5394) (693abd5)
  • DASH: Expose accessibility purpose in track (#5216) (654a028), closes #5211
  • dash: Improve DASH SegmentTemplate performance with on-demand segment references (#5061) (f1c5a1c)
  • DASH: Remove MIN_UPDATE_PERIOD_ to achieve better latency in Live (#5286) (1515b7a)
  • Demo: Add Low Latency filter in demo page (#5392) (c378e10)
  • Demo: Add MSS Playready asset (#5485) (89ca242)
  • demo: Improve bug report button in demo (#5510) (4329d79), closes #5056
  • DRM: use preferredKeySystems to reduce requestMediaKeySystemAccess() calls (#5391) (6d75d89)
  • Enable variant failover for BAD_HTTP_STATUS and TIMEOUT (#4769) (b46012d)
  • export period combiner (#5324) (e9ba2f4), closes #5307
  • HLS: Add HLS config to ignore manifest timestamps when in segments mode (#5103) (4d487e4)
  • HLS: Add HLS support for non-sequence mode (#4623) (2b50b88)
  • HLS: Add support to _HLS_msn query param in LL streams (#5262) (2ece86f)
  • HLS: Add support to _HLS_part query param in LL streams (#5265) (ec8804d)
  • HLS: Add support to blocking playlist reload by adding the CAN-BLOCK-RELOAD=YES (#5279) (090554b)
  • HLS: Add support to BYTERANGE-LENGTH in EXT-X-PRELOAD-HINT (#5267) (ea97a5a)
  • HLS: Add support to HLS-AES128 low latency (#4982) (07787a8)
  • HLS: Add support to HOLD-BACK in EXT-X-SERVER-CONTROL (#5281) (bb2c06a)
  • HLS: Allow delivery directives in Live streams (#5292) (aedf634)
  • HLS: Fix update time when using LL-HLS and byterange optimization (#5495) (bba7537)
  • HLS: Get resolution from TS when load a Media Playlist (#5058) (42a9f96)
  • HLS: Improve detection of basic info from Media Playlist (#4809) (d465942)
  • HLS: Improve HLS parsing time (#5264) (2ca7d0b)
  • HLS: Improve Low Latency performance in HLS (#4952) (5514385)
  • HLS: Optimization of LL-HLS with byterange (#5319) (9e6655a)
  • HLS: Optimize LL-HLS with byterange (#5342) (53d6378)
  • HLS: Parse #EXT-X-BITRATE (#5550) (123183d)
  • HLS: Parse SAMPLE-RATE attribute (#5375) (5af34ad)
  • HLS: Poll HLS playlists using last segment duration (#4779) (1ba3806), closes #4771
  • HLS: Support byterange optimization on servers with support to blocking playlist reload (#5347) (263a17b)
  • Improve live latency on load (#5268) (236dacb)
  • Improve parsing time in DASH and HLS (#5261) (f1e35fd)
  • Improve performance of multi-period DASH parsing (#5350) (5b0b429)
  • Improve performance of setStreamProperties on low-end devices (#5380) (ddbc249)
  • Improve sequence mode start time (#5326) (80cacf6)
  • Include stack trace in errors dispatched from production builds (#5407) (7d049eb), closes #5406
  • logs: Add extra logging for 3015 errors (#4932) (67a2451)
  • Make gap jump timer time configurable (#5525) (97b7412)
  • Move forceTransmux from streaming to mediasource config (#4783) (b491a6b)
  • MSS: Add support for Microsoft Smooth Streaming (VOD only) (#5002) (f80bf20)
  • MSS: Fix MSS PlayReady support (#5486) (1dd9809)
  • net: Added advanced type to filters (#5006) (fbce38a), closes #4966
  • Optimize appendBuffer operations for init segments (#5377) (68f7a0e)
  • Parses a PRFT Box, with a loss of precision beyond 53 bits (#5354) (a797651)
  • Parses a TFDT Box, with a loss of precision beyond 53 bits (#5329) (db73e1f)
  • Parses a TFDT Box, with a loss of precision beyond 53 bits (#5501) (c6e8449)
  • Raise fatal error on linear manifest request update failure (#5138) (3ff7ba3)
  • Set segmentPrefetchLimit to 2 by default for low latency streaming (#5275) (62f24d2)
  • SRT: Support stylized payload in SRT format (#5500) (963cf61)
  • Support customizing clearBuffers and safeMargin when select variants by label (#4770) (c724625)
  • Support Parallel Segment Fetching (#4784) (de6abde)
  • Support private-use language tags (#5223) (fa041d7)
  • UI: Add HDR label to resolution when the track is HDR (#5373) (3f9eade)
  • UI: Add PageUp and PageDown to UI seek bar (#5519) (8e22a50)
  • UI: Add thumbnails to the UI (#5502) (c483975)
  • UI: Allow customizing FullScreen element (#4963) (c471d23)
  • UI: Remove copyStyleSheets (#5273) (fe43ed3)
  • UI: Use Intl.DisplayNames to show the language name (#5365) (35cb193)
  • Use local assets for transmuxer tests (#5549) (a75e776)
  • Use shaka.text.Cue everywhere instead of shaka.extern.Cue (#5529) (62156ba)
  • utils: Export shaka.util.StreamUtils.meetsRestrictions (#5100) (3543e57)
  • WebVTT: Add support to auto position (#5532) (a8f7c41)
  • webvtt: webvtt colors output (#4954) (ed7a736)

Bug Fixes

  • config.streaming.preferNativeHls only applies to HLS streams (#5167) (bf4b4a5), closes #5166
  • add MIME type for HTML5 tracks (#5452) (4f1a119)
  • Add missing AdvancedRequestType in some requests (#5113) (b60bf16)
  • Add missing StreamInfo value in AAC transmuxer (#5260) (5175e88)
  • Add mux.js to support.html (#4923) (d9fa4eb)
  • Adds missing CMCD params to some http requests (#5072) (fe38e45), closes #5067 #5094
  • ads: Fix ads starting muted behavior (#5153) (211624f), closes #5125
  • Ads: Fix CS volume ad (#5016) (492b5f3)
  • Ads: Fix SS configure (#5155) (49ed4ab)
  • Ads: Fix usage of EventManager on CS (#5017) (541badc)
  • Ads: Fix usage of EventManager on CS (#5084) (122f5f3)
  • ads: Fix VMAP ads stay muted on muted autoplay (#4995) (d074afc)
  • Ads: Initialize correctly the IMA ads manager (#5541) (4428adf)
  • Allow the playback of TS without mux.js (#5041) (0b785f7)
  • Avoid unnecessary timestampOffset updates when using HLS segments mode (#5270) (9059944)
  • Caption can not turn off at iOS Safari (#4978) (9d2c325)
  • cast: Added existence checks for MediaDecodingConfig.{audio|video} in decodingInfo(). (#4796) (36db83d)
  • cast: Use cast platform APIs in MediaCapabilties polyfill (#4727) (5d6f56a)
  • CEA 608 captions not work with H.265 video streams (#5252) (f0ee16b), closes #5251
  • cea: Fix MAX_ROWS in CEA-708 window (#4757) (e89eeb6)
  • cea: Fix not rendering CEA-608 on encrypted mp4 segments (#4756) (d600109)
  • chapters: removed duplicate chapters by id (#4810) (151bdda)
  • cmcd not applying configuration changes (#5119) (58aa45f)
  • Correct default initDataTransform for legacy Apple Media Keys (#4797) (67a5d56)
  • DASH: Avoid "Possible encoding problem detected!" when appending chunked data (#5376) (2071e3a)
  • DASH: Fix bufferBehind with image tracks regression (#5210) (2d9f566)
  • DASH: Fix dynamic manifests from edgeware (#4914) (056588b)
  • DASH: Fix seeking on multiperiod content after variant change (#5110) (3b0f013)
  • DASH: Ignore minBufferTime when using LL (#5285) (fea46d8)
  • Default language to 'und' for native tracks (#5464) (8cd3e2d)
  • Demo: Allow enable LL only with Low Latency Mode config (#5266) (70823f9)
  • Demo: Allow manifest type for DAI custom assets (#4977) (1e50630)
  • Demo: Fix deployment of codem-isoboxer in the Demo (#5257) (03b39f7)
  • Demo: Fix error link width to avoid overlap with close button (#5309) (08317d0)
  • demo: Fix native controls pointer events stolen by LCEVC canvas (#5065) (6508f40)
  • Demo: Show correctly external text in the Demo (#5521) (e2bf1de)
  • Demo: Trim custom manifestUri to avoid copy-paste errors (#5378) (0e32256)
  • Dispatch all emsg boxes, even if they are ID3 (#5428) (25ecfa7)
  • docs: fix player configuration code in drm config tutorial (#5359) (5487236)
  • Document Picture-in-Picture: Use width/height instead of initialAspectRatio (#5224) (0da63a0)
  • don't use navigator.connection event listener if it isn't implemented (#5157) (fb68306), closes #4542
  • DRM: broken keySystemsMapping due to multiple references of drmInfo (#5388) (6513ac0)
  • DrmEngine exception thrown when using FairPlay (#4971) (eebf18c)
  • exclude "future" segments from presentation timeline auto correct drift calculations (#4945) (ea6774a), closes #4944
  • Explicitly specify @externs in transmuxer externs. (#4999) (ef8078a)
  • Failed to set 'currentTime' property on 'HTMLMediaElement' on a Hisense TV (#4962) (5d93b8f)
  • Fallback to isTypeSupported when cast namespace is undefined (#5012) (50d0645)
  • Fire correctly MIN_HDCP_VERSION_NOT_MATCH error (2ae5a99)
  • Fix bufferBehind setting broken by image segments (#4718) (cd1b7c0), closes #4717
  • Fix buffering on the end of MSS streams (#5196) (a8e3c9a)
  • Fix captions from MP4s with multiple trun boxes (#5422) (bccfdbc), closes #5328
  • Fix compiler error on static use of "this" (#4699) (b06fd6a)
  • Fix DASH rejection of streams with ColourPrimaries and MatrixCoefficients (#5345) (226ffa9)
  • Fix DRM workaround for Tizen and Xbox with hvc1/hev1 boxes (#4743) (a61c084), closes #4742
  • Fix duplicate updates in StreamingEngine (#4840) (224207b), closes #4831
  • Fix duration error when HLS goes from LIVE to VOD (#5001) (1aee989)
  • Fix error when network status changes on src= playbacks (#5305) (07ca8f5)
  • Fix exception enabling captions on HLS (#4894) (b7b2a7c), closes #4889
  • Fix exception on Tizen due to unsupported Array method (#5429) (8ff2917)
  • Fix exiting fullscreen on Safari (#5439) (ed93a0c), closes #5437
  • Fix failure when drivers lag behind browser (#5423) (a909ed4)
  • Fix fetch plugin with old implementations (#5091) (36bcc37)
  • Fix flattenedCues in WebVttGenerator (#4867) (15232dd)
  • Fix gap jump at start when first jump lands in a new gap (f56d49b)
  • Fix handling of CC when switching between codecs (#5160) (6937325)
  • Fix HEAD request exception (#5194) (330f04b), closes #5164
  • Fix implementation of AAC and MP3 transmuxers (#5296) (df18f10)
  • Fix legacy codec support by rewriting codec metadata (#4858) (e351395)
  • Fix media source duration when using sequence mode (#4848) (1762267)
  • Fix MediaCapabilities polyfill on Hisense (#4927) (6a48cfe)
  • Fix memory leak on SimpleAbrManager (#5478) (e8f3ed0)
  • Fix missing originalUri in response filters (#5114) (8bffb99)
  • Fix parsing error on Chromecast when resyncing HLS (#4869) (afca6af), closes #4589
  • Fix playRangeEnd does not work with HLS streams (#5494) (1775672)
  • Fix potential AV sync issues after seek or adaptation (#4886) (c42565c), closes #4589
  • Fix potential duplicate segments, AV sync issues (#4884) (52f4b63), closes #4589
  • Fix race that allows multiple text streams to be loaded (#5129) (2ae9095)
  • Fix rare exception after StreamingEngine teardown (#4830) (234beef), closes #4813
  • Fix selectVariantsByLabel using src= (#5154) (e7d94f7)
  • Fix subtitles not added to DOM region (#4733) (4081434), closes #4680
  • Fix temporarily disable streams on network error (#5057) (fdc5cb1), closes #5055 #5150
  • Fix timestamp offset for ID3 on DAI-HLS (#4696) (386a28a)
  • Fix usage of WebCrypto in old browsers (#4711) (9afce3b)
  • Fix video/mp2t mimetype conversion. (#5039) (2d0e4cc)
  • Fix WebVTT parser failure on REGION blocks (#4915) (da84a2c)
  • gap jumping when gap exists at start position (#5384) (6c71b0e)
  • Get the correct timescale when there are two trak boxes (#5327) (022f6b9)
  • gettting maxWidth and maxHeight for restrictToElementSize option (#5481) (9a3ac18)
  • Handle empty media segments for Mp4VttParser (#5131) (6fd44c4), closes #4429
  • HLS: Add .tsa and .tsv file extensions as valid MPEG2-TS. (#5034) (a22bdc5)
  • HLS: Add subtitle role when there are no roles (#5357) (7de6340), closes #5355
  • HLS: Adding support for DTS Express in HLS fMP4 (#5112) (#5117) (67b1e90)
  • HLS: Avoid "Possible encoding problem detected!" when is a preload reference (#5332) (bd18a9d)
  • HLS: Avoid HLS resync when there is a gap in the stream (#5284) (b8c2004)
  • HLS: Avoid variable substitution if no variables (#5269) (5a5a7ac)
  • HLS: Consider skipped segments to calculate next media sequence (#5414) (b7d2305)
  • HLS: don't do sequence mode workaround unless there's a text stream (#5079) (fb22669)
  • HLS: Don't do sequence mode workaround unless there's a text stream (#5315) (019dcfd)
  • HLS: Fix AV sync over ad boundaries (#4824) (35033bb), closes #4589
  • HLS: Fix avoid prefetch missing segments (#5372) (7f8e051)
  • HLS: Fix detection of Media Playlist for audio and video only in MP4 (#4803) (76f96b9)
  • HLS: Fix detection of WebVTT subtitles in HLS by extension (#4928) (15b0388), closes #4929
  • HLS: Fix discontinuity tracking (#4881) (fc3d5c1), closes #4589
  • HLS: Fix dvh1 and dvhe detection as video codec (#5364) (37b7be6)
  • HLS: Fix external subtitles out of sync in HLS (#5491) (de19884)
  • HLS: Fix HLS seekRange for live streams (#5263) (258962f)
  • HLS: fix lazy load with multiple raw audio tracks (#4715) (76149ae)
  • HLS: Fix live playlist update when using no LL in a LL stream (#5282) (ad2eef6)
  • HLS: Fix load of LL-HLS when the partial segment is not independent (#5277) (ed5915e)
  • HLS: Fix lowLatencyPresentationDelay when using autoLowLatencyMode (#4712) (877e954)
  • HLS: Fix missing roles (#4760) (2bc481d), closes #4759
  • HLS: Fix prefetch with LL-HLS stream (#5274) (551422a)
  • HLS: Fix seek on LL streams when using segments mode (#5283) (d4f3f5c)
  • HLS: Fix seekRange for EVENT playlist not using EXT-X-PLAYLIST-TYPE (#5220) (1c89204)
  • HLS: Fix support for mixed AES-128/NONE decryption (#4847) (452694d)
  • HLS: Fix support legacy AVC1 codec used in HLS (#4716) (c3ff8e5)
  • HLS: Fix support of fragmented WebVTT (#5156) (9c4a61f)
  • hls: Fix type error in lazy-loading (#4687) (28b73b9)
  • HLS: Ignore segments with zero duration (#5371) (c25b26a)
  • HLS: IMSC1 subtitles not working in a HLS stream (#4942) (974f5dc)
  • HLS: Mark first partial segment as independent always (#5312) (ea896d5)
  • HLS: Parse EXT-X-PART-INF as media playlist tag (#5311) (d29f4bc)
  • HLS: Parse the correct codec for AVC and MP4A in HLS parser (#5515) (f3fa4f8)
  • HLS: preserve discontinuitySequence in SegmentIndex#fit (#5066) (36a15f6)
  • HLS: Report HLS playlist updates as media playlist in network filters (#5120) (c2a59d0)
  • HLS: Require SegmentIndex to return independent segments only (#5288) (9f80e3c)
  • HLS: Single alternative video renditions not working (#4785) (6915a97)
  • HLS: Skip EXT-X-PRELOAD-HINT without full byterange info (#5294) (32d141d)
  • HLS: support discontinuities in segments mode (#5102) (71affe7)
  • HLS: Supports syncTime in partial segments (#5280) (9dddc09)
  • Increase IndexedDB timeout (#4984) (ea290ab)
  • logging: Simplify log code. (#5050) (6944976), closes #5032
  • Make encoding problem detection more robust (#4885) (0e3621c), closes #4589
  • Manually order key for decodingInfo cache (#4795) (806a9a8)
  • MCap: Remove robustness when robustness value is default (#4953) (7439a26)
  • media source object URL revocation (#5214) (fecb11a)
  • media: Fix region checking in livestreams (#5361) (9fffcb9), closes #5213
  • mitigate uncaught type error in media_source_engine (#5069) (e19fa80), closes #4903
  • net: Fix HEAD requests in new Chromium (#5180) (5155493), closes #5164
  • Only parse/probe TS if the reference is not an MP4 and not WebM (#5381) (b1e7cc4)
  • Orange set top box is incorrectly categorized as Apple (#5545) (937484e)
  • PERIOD_FLATTENING_FAILED error with shaka 4.3.4 that did not occur with shaka 3.1.2 #5183 (#5188) (e855326)
  • Polyfill missing AbortController on Tizen (#4707) (75ef975)
  • Populate HDR correctly (#5369) (1ad75ec)
  • prevent access to null config_ in SimpleAbrManager (#5362) (d1db694)
  • Prevent bad calls to MediaSource.endOfStream (#5071) (64389a2), closes #5070
  • Prevent content from being restarted after Postroll ads (#4979) (64e94f1), closes #4445
  • prevent memory leak in SimpleAbrManager while destroying (#5149) (bbf228c)
  • Reject TS content on Edge (#5043) (8818a02)
  • Release region timeline when unloading (#4871) (a236180), closes #4850
  • Remove duplicate adaptation event before init (#5492) (e3b2e7d)
  • Remove sourcebuffer before create a new media source instance (#5533) (0056c0a)
  • Ship to NPM without node version restrictions (#5253) (524a80b), closes #5243
  • stream property of request context obfuscated in production builds (#5118) (93baba2)
  • Support fLaC and Opus codec strings in HLS (#5454) (ccc3d2f), closes #5453
  • Sync each segment against EXT-X-PROGRAM-DATE-TIME (#4870) (50c9df4), closes #4589
  • Tizen video error fixed by checking the extended MIME type (#4973) (eb01c60), closes #4634
  • Transmux containerless to the correct mimetype (#5205) (bb40d3b)
  • Treat regions uniquely (#4841) (5681efe), closes #4839
  • TTML: Add font-family mapping (#4801) (db8987d)
  • TTML: Fix duplicate cues overlapping segment boundaries (#4798) (bd75032), closes #4631
  • Typing of PeriodCombiner.Period was incorrect (#5442) (845649b)
  • ui: Avoid submitting form if player is inside form (#4866) (da21850), closes #4861
  • ui: Check event cancelable before event.preventDefault (#4690) (6d8de72)
  • UI: Disable right click on range elements (#5497) (3333ca4)
  • ui: Fix iOS fullscreen on rotation (#4679) (86256f4)
  • UI: Fix playback restarts in safari when click on seekbar end (#5527) (4235658)
  • UI: Fix resolution selection on src= (#5367) (3863c73)
  • UI: Suppress error log from fullscreen button on desktop (#4823) (99da4ce), closes #4822
  • UI: Use pagehide instead of unload for PiP (#5303) (a543b80)
  • unnecessary parsing of in-band pssh when pssh is in the manifest (#5198) (05aa931), closes #5197
  • Update karma-local-wd-launcher to fix Chromedriver >= 115, fix M1 mac (#5489) (c8a27ca)
  • Update karma-local-wd-launcher to fix Edge >= 115 (#5506) (3104a76)
  • VTT: Fix combining style selectors (#4934) (128562d)
  • VTT: Fix spacing between text lines (#4961) (2d0469f)
  • WebVTT: Add support to  , and (#4920) (726ef42)
  • WebVTT: Add support to middle position (#5366) (5691d5e)
  • WebVTT: Fix horizontal positioning with cue box size (#4949) (f456318)
  • WebVTT: Fix text-shadow in WebVTT not working (#5499) (ac6a92a)
  • WebVTT: Fix voice tag styles (a5f8b43)
  • WebVTT: Fix voices with styles and support to multiple styles (#4922) (68968c1)
  • WebVTT: Tags in the WebVTT subtitle are not parsed (#4960) (d4fc54f)

Performance Improvements

  • Caching mediaSource support for browser engine (#4778) (ad6c085)

4.3.0 (2022-11-10)

Features

Bug Fixes

4.2.0 (2022-08-16)

Features

  • add Amazon Fire TV platform support (#4375) (5102dac)
  • Add support for Modern EME and legacy Apple Media Keys for FairPlay (#4309) (5441f93)
  • Automatic ABR quality restrictions based on size (#4404) (cfe8af5), closes #2333
  • hls: Support AES-128 in HLS (#4386) (6194021), closes #850
  • Improve gap-detection robustness (#4399) (4293a14)
  • Upgrade eme-encryption-scheme-polyfill to support ChromeCast version of PlayReady (#4378) (e6b6d7c)
  • webvtt: add support for karaoke style text in WebVTT (#4274) (60af516)

Bug Fixes

  • Add fallback to TextDecoder and TextEncoder #4324 (5b18069)
  • add strictMissingProperties suppressions to unblock strict missing properties on union types. (#4371) (b361948)
  • Debug buffer placement (#4345) (47fa309)
  • demo: allow switch between UITextDisplayer and SimpleTextDisplayer (#4275) (28689f3)
  • demo: erroneous FairPlay keysystem in demo (#4276) (8719bdc)
  • exception if on early adError (#4362) (3c92f05), closes #4004
  • Fix EOS set-top box being identified as Apple. (#4310) (7c2c4be)
  • Fix getVideoPlaybackQuality in WebOS 3 (#4316) (5561111)
  • Fix key ID byteswapping for PlayReady on PS4 (#4377) (25fd4f4)
  • Fix MediaCapabilities polyfill on Playstation 4 (#4320) (0335b2a)
  • Fix MediaCapabilities polyfill on Tizen and WebOS (#4396) (eb2aed8), closes #4383 #4357
  • Fix segment index assertions with DAI (#4348) (c2b3853)
  • Fix TextDecoder fallback and browser support check (#4403) (04fc0d4)
  • Fix UI captions icon state (#4384) (d462633), closes #4358
  • Fix VP9 codec checks on Mac Firefox (#4391) (b6ab769)
  • hls: Fix AV sync issues, fallback to sequence numbers if PROGRAM-DATE-TIME ignored (#4289) (314a987), closes #4287
  • New EME polyfill fixes EME/MCap issues on some smart TVs (#4279) (db1b20e)
  • Populate track's spatialAudio property (#4291) (713f461)
  • Remove IE 11 from default browsers for Windows (#4272) (490b06c), closes #4271
  • text: Fix cue region rendering in UI (#4412) (b1f46db), closes #4381
  • text: Fix TTML render timing and line break issues for native display (122f223)
  • Update main branch Cast receiver ID (#4364) (46b27f1)
  • Use middle segment when guessing MIME type on HLS (#4269) (#4270) (3d27d2a)
  • VTT Cue Parsing On PlayStation 4 (#4340) (b5da41e), closes #4321

4.1.0 (2022-06-02)

Features

Bug Fixes

4.0.0 (2022-04-30)

⚠ BREAKING CHANGES

  • Remove small/large gap config, always jump gaps (#4125)
  • config: manifest.dash.defaultPresentationDelay has been replaced by manifest.defaultPresentationDelay (deprecated in v3.0.0)
  • config: Configuration of factories should be plain factory functions, not constructors; these will not be invoked with new (deprecated in v3.1.0)
  • player: shaka.Player.prototype.addTextTrack() has been replaced by addTextTrackAsync(), which returns a Promise (deprecated in v3.1.0)
  • ui: shaka.ui.TrackLabelFormat has been renamed to shaka.ui.Overlay.TrackLabelFormat (deprecated in v3.1.0)
  • ui: shaka.ui.FailReasonCode has been renamed to shaka.ui.Overlay.FailReasonCode (deprecated in v3.1.0)
  • offline: shaka.offline.Storage.prototype.store() returns AbortableOperation instead of Promise (deprecated in v3.0.0)
  • offline: shaka.offline.Storage.prototype.getStoreInProgress() has been removed; concurrent operations are supported, so callers don't need to check this (deprecated in v3.0.0)
  • shaka.util.Uint8ArrayUtils.equal has been replaced by shaka.util.BufferUtils.equal, which can handle multiple types of buffers (deprecated in v3.0.0)
  • manifest: shaka.media.SegmentIndex.prototype.destroy() has been replaced by release(), which is synchronous (deprecated in v3.0.0)
  • manifest: shaka.media.SegmentIterator.prototype.seek(), which mutates the iterator, has been replaced by shaka.media.SegmentIndex.getIteratorForTime() (deprecated in v3.1.0)
  • manifest: shaka.media.SegmentIndex.prototype.merge() has become private; use mergeAndEvict() instead (deprecated in v3.2.0)
  • plugin: AbrManager plugins must implement the playbackRateChanged() method (deprecated in v3.0.0)
  • plugin: shaka.extern.Cue.prototype.spacer has been replaced by the more clearly-named lineBreak (deprecated in v3.1.0)
  • plugin: IUIElement plugins must have a release() method (not destroy()) (deprecated in v3.0.0)
  • Remove deprecated features, update upgrade guides (#4089)
  • Remove support for Safari 12 and iOS 12 (#4112)
  • hls: HLS disabled in old browsers/platforms due to incompatibilities (#3964)

Features

  • shaka.util.Uint8ArrayUtils.equal has been replaced by shaka.util.BufferUtils.equal, which can handle multiple types of buffers (deprecated in v3.0.0) (ac5acc8)
  • Add Dockerfile and docker build instructions (925de19)
  • add modern EME support for FairPlay (#3776) (6d76a13)
  • add new methods to FairPlayUtils (#4029) (f1eeac1)
  • add option for segment-relative VTT timings (#4083) (f382cc7)
  • Add separate audio and video MIME types to Track API (#3892) (74c491d), closes #3888
  • Allow WebP and AVIF image streams (#3856) (9f3fb46), closes #3845
  • config: manifest.dash.defaultPresentationDelay has been replaced by manifest.defaultPresentationDelay (deprecated in v3.0.0) (ac5acc8)
  • config: Configuration of factories should be plain factory functions, not constructors; these will not be invoked with new (deprecated in v3.1.0) (ac5acc8)
  • dash: Construct ClearKey PSSH based on MPD ContentProtection (#4104) (b83b412)
  • dash: Parse ClearKey license URL in MPD (#4066) (19e24b1)
  • demo: Add Apple Advanced HLS Stream (TS) with raw AAC (#3933) (1becadf)
  • demo: Added demo asset with raw AAC. (014c7b3), closes #2337
  • DRM: add drmInfo to license requests (#4030) (abe846e)
  • DRM: add initData and initDataType to license requests (#4039) (bdc5ea7)
  • HLS: Containerless format support (36d0b54), closes #2337
  • hls: HLS disabled in old browsers/platforms due to incompatibilities (#3964) (0daa00f)
  • hls: make a head request if hls subtitles have no extension (#4140) (19e12b5)
  • hls: parse EXT-X-GAP (#4134) (42eecc8)
  • HLS: Re-add TS support to Safari (#4097) (8a3bed7)
  • hls: Read EXT-X-PROGRAM-DATE-TIME (#4034) (89409ce), closes #2337
  • manifest: shaka.media.SegmentIndex.prototype.destroy() has been replaced by release(), which is synchronous (deprecated in v3.0.0) (ac5acc8)
  • manifest: shaka.media.SegmentIndex.prototype.merge() has become private; use mergeAndEvict() instead (deprecated in v3.2.0) (ac5acc8)
  • manifest: shaka.media.SegmentIterator.prototype.seek(), which mutates the iterator, has been replaced by shaka.media.SegmentIndex.getIteratorForTime() (deprecated in v3.1.0) (ac5acc8)
  • offline: shaka.offline.Storage.prototype.getStoreInProgress() has been removed; concurrent operations are supported, so callers don't need to check this (deprecated in v3.0.0) (ac5acc8)
  • offline: shaka.offline.Storage.prototype.store() returns AbortableOperation instead of Promise (deprecated in v3.0.0) (ac5acc8)
  • offline: improve the speed of offline downloads (#4168) (73f6de3)
  • only polyfill MCap for non Android-based Cast devices. (#4170) (11321d8)
  • player: shaka.Player.prototype.addTextTrack() has been replaced by addTextTrackAsync(), which returns a Promise (deprecated in v3.1.0) (ac5acc8)
  • plugin: AbrManager plugins must implement the playbackRateChanged() method (deprecated in v3.0.0) (ac5acc8)
  • plugin: IUIElement plugins must have a release() method (not destroy()) (deprecated in v3.0.0) (ac5acc8)
  • plugin: shaka.extern.Cue.prototype.spacer has been replaced by the more clearly-named lineBreak (deprecated in v3.1.0) (ac5acc8)
  • Public release of Sindarin (sjn) translation easter egg (#4033) (9029d06)
  • Remove deprecated features, update upgrade guides (#4089) (ac5acc8)
  • Remove small/large gap config, always jump gaps (#4125) (0fd1999)
  • Remove support for Safari 12 and iOS 12 (#4112) (8bb7044)
  • ui: shaka.ui.FailReasonCode has been renamed to shaka.ui.Overlay.FailReasonCode (deprecated in v3.1.0) (ac5acc8)
  • ui: shaka.ui.TrackLabelFormat has been renamed to shaka.ui.Overlay.TrackLabelFormat (deprecated in v3.1.0) (ac5acc8)
  • ui: Add quality selection for audio-only content (#3649) (adc3502), closes #2071
  • UI: Add video fullscreen support for iOS (#3853) (8d1b5e6), closes #3832

Bug Fixes

Older changelogs: