v4.12.0
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)