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
replaceAllin 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
preferredKeySystemstofilterManifest()(#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)