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.preferNativeHlsonly 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
.tsaand .tsvfile 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)