Skip to content

v4.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 02 May 19:59
20ddf6a

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