## 8.134.0

Released: 2023-09-25

### Added

  • [`PlayerEvent.Metadata`](🔗) and [`PlayerEvent.MetadataParsed`](🔗) with `metadataType` [`EVENT_STREAM`](🔗) will have their `schemeIdUri` exposed on the `metadata.schemeIdUri` field

### Changed

  • **UI:** When having a spatial navigation and using a mouselike device, components will lose focus when the mouse leaves the hovered component. Spatial navigation will continue at the last active component when using arrow keys again.

  • [`PlayerAPI.getAvailableAudioQualities`](🔗) for HLS streams now returns bitrates based on a preset of values, as opposed to returning 0

  • Update bundled analytics collector from version 2.31.1 to [2.31.2](🔗)

  • A [`MODULE_MISSING`](🔗) error is thrown when attempting to play AES-128 encrypted content without importing the `Crypto` module first

  • A [`WarningEvent`](🔗) is dispatched when passing an invalid subtitle object to [`PlayerSubtitlesAPI.add`](🔗) or [`SourceConfig.subtitleTracks`](🔗)

### Fixed

  • Audio quality adaptation not working properly for HLS

  • Legacy API Doc URLs pointing to previous player version

## 8.133.0

Released: 2023-09-18

### Changed

  • Player to trigger [`PlayerEvent.CueExit`](🔗) and [`PlayerEvent.CueEnter`](🔗) events immediately after seeking, even when paused

  • **UI:**: On seek/timeshift operations the UI will only remove subtitle cues which do not enclose the seek target instead of removing all

### Fixed

  • [`DRM_INIT_DATA_MISSING`](🔗) error sometimes being thrown on PS4 when playing mixed protected and clear content

  • VAST pod ad not playing with [`BitmovinAdvertisingModule`](🔗) if it provides a Wrapper and the ad in wrapper response does not specify a sequence

  • Missing [`Metadata`](🔗) events when using [`native_hls_parsing`](🔗) and the same URL is present in different discontinuities inside the playlist

## 8.132.0

Released: 2023-09-11

### Added

  • OmSdkTracker config [`advertising.trackers.omSdk.serviceWindowProxy`](🔗) to override the default window.top

### Changed

  • Arrays returned by [`PlayerAPI.getAvailableAudioQualities`](🔗) and [`PlayerAPI.getAvailableVideoQualities`](🔗) are no longer reflecting the order in the manifest and are instead sorted by bitrate in ascending order

  • Updated API docs theme and structure; URLs are no longer in lowercase, but match the casing of the type name

  • [`PlayerEvent.SegmentRequestFinishedEvent`](🔗) now provides the url of the segment request

### Fixed

  • Playback stalling on WebOS if the DRM source is reloaded with [`DRMConfig.immediateLicenseRequest`](🔗) while the license request is still ongoing

  • [`PlayerAPI.setAudio`](🔗) on live streams could lead to infinite stalling on Tizen TVs when the video buffer was already full

## 8.131.0

Released: 2023-09-05

### Changed

  • Capitalized HLS tag names instead of small case exposed through [`PlayerManifestAPI.hls`](🔗)

  • Variant playlist url is exposed as `uri` instead of `value` in [`HlsAPI.properties`](🔗) through [`PlayerManifestAPI.hls`](🔗)

### Fixed

  • ABR cancelling and re-downloading the same segments in case of high RTT

  • HLS tag names exposed through [`PlayerManifestAPI.hls`](🔗) not containing `EXT-X`

  • Wrong segment loaded when recovering from a failed segment request

  • Choosing too high qualities when tying to load segment that failed to load in a different quality

  • Buffer gap after recovering from a segment request that fails or is cancelled for taking too long with DASH `SegmentTimeline` streams

  • Failing to load an HLS source on Tizen 2016 when [`hls_parse_manifest_in_worker`](🔗) is enabled

## 8.130.1

Released: 2023-09-11

### Fixed

  • Playback stalling on WebOS if the DRM source is reloaded with [`DRMConfig.immediateLicenseRequest`](🔗) while the license request is still ongoing

## 8.130.0

Released: 2023-08-30

### Fixed

  • Potential A/V alignment issues in transmuxed streams on startup

  • Playback failure for multiple representations with same bandwidth in DASH SegmentBase

  • Potential A/V alignment issues or gaps in transmuxed streams on discontinuity switches

  • Improve HLS playlist processing efficiency slightly

  • Player sometimes stalling after falling out of the DVR window when [`ENABLE_SEEK_FOR_LIVE`](🔗) is set

  • Player sometimes stalling after falling out of the DVR window when [`immediateLicenseRequest`](🔗) is set

## 8.129.1

Released: 2023-08-31

### Fixed

  • ABR logic cancelling and re-downloading the same segments in case of high request round trip time

  • Wrong segment loaded when recovering from a failed segment request

  • Player potentially choosing too high quality when trying to load segment that failed in a different quality

## 8.129.0

Released: 2023-08-16

### Added

  • Possibility to dynamically change [`AdaptationConfig.limitToPlayerSize`](🔗) via [Adaptation API](🔗)

### Changed

  • Updated OMSDK to version `1.4.8`

### Fixed

  • Unhandled type error upon competing [`player.unload()`](🔗) and [`player.destroy()`](🔗) calls

  • ABR improvements for HLS on lower-end devices

## 8.128.0

Released: 2023-08-07

### Added

  • Possibility to dynamically change [AdaptationConfig.resolution](🔗) via [Adaptation API](🔗)

  • [AdaptationAPI.getConfig](🔗) method to retrieve the current adaptation config

### Fixed

  • Uncaught error when prefetching unencrypted content if content before the ad was ClearKey-encrypted

  • Playback stuck when transitioning from period with ClearKey-encrypted content to period with unencrypted content

## 8.127.0

Released: 2023-07-31

### Fixed

  • [`SourceConfigOptions.startOffset`](🔗) sometimes not respected with HLS live streams on Safari

## 8.126.0

Released: 2023-07-24

### Added

  • [`DrmConfig.immediateLicenseRequest`](🔗) support on LG WebOS TVs

  • [`AdaptationAPI`](🔗) available on [`PlayerAPI.adaptation`](🔗) to dynamically change the behavior of the player's adaptation logic

### Fixed

  • Companion ad container sizes being ignored by IMA ad module

  • Broken player instantiation on Tizen 2016 due to missing polyfill

  • **UI:** Settings panel does not close on a single tap on mobile devices

  • **UI:** Restoring volume on unmute not working when the volume was changed through the player API

## 8.125.1

Released: 2023-07-18

### Changed

  • Update bundled analytics collector from version 2.31.0 to [2.31.1](🔗)

## 8.125.0

Released: 2023-07-17

### Added

  • **UI:** `onActiveUiChanged` event on the `UIManager` that is dispatched when the UI manager switches to a different UI variant

  • **UI:** Readonly `currentUi` field on the `UIManager` that exposes the active `UIInstanceManager`

### Changed

  • Update bundled analytics collector from version 2.30.0 to [2.31.0](🔗)

  • Align return type and update description of [`buffer.getLevel`](🔗) API

### Fixed

  • Player sometimes re-loading segments upon timeshifting or when the currently playing period drops out of the DVR window

  • [`PlaybackConfig.timeShift`](🔗) is not respected with NativePlayer

  • Player skipping the load of an entire period due to a race condition

  • Switching from one player technology to another in Firefox when a Google Cast v3 [`remoteControl`](🔗) config is specified

  • Playback sometimes getting stuck on Tizen 2017 models when seeking across Periods/Discontinuities

## 8.124.0

Released: 2023-07-10

### Fixed

  • Discontinuity switching on PlayStation 4

  • Leftover video element styling from VPAID ad break

  • Updated PlayStation 5 Tweaks documentation

  • Closed captions disappearing on period switch

## 8.123.0

Released: 2023-07-03

### Fixed

  • Wrong indexing of segments in DASH SegmentTimeline streams potentially causing playback issues

  • Segment download not being cancelled when playing period drops out

  • Playback failure due to missing init segment when switching periods

  • **UI:** When more than one UI with spatial navigation is managed by the UI manager, all UIs would handle key events, instead of only the active one.

### Removed

  • `ClassList` polyfill as it is not required for supported devices

## 8.122.0

Released: 2023-06-26

### Changed

  • Update bundled analytics collector from version 2.29.4 to [2.30.0](🔗)

### Fixed

  • ABR improvements on SmartTVs

  • Typo in public readme.md for npm.js

  • Occasional stutter on playback start if `autoplay` is configured

  • Timeshifting backwards sometimes causing playback to break

  • Player sometimes getting too close to real live edge after timeshifting to 0

  • Player sometimes reporting a buffer level of `null` during startup on Safari

  • Player potentially cancelling and downloading the same segment

## 8.121.0

Released: 2023-06-19

### Changed

  • Update bundled analytics collector from version 2.29.3 to [2.29.4](🔗)

### Fixed

  • Playback stuck after the first ad if multiple ads are present in one ad break with Bitmovin Advertising Module in Chrome on Android

  • Delayed timing of segment requests when playing HLS live streams

## 8.120.0

Released: 2023-06-05

### Added

  • WebRTC/WHEP support for 2020 Tizen TVs

### Fixed

  • PlayStation 5 sometimes freezing on SSAI transitions

  • PlayStation 4 sometimes missing [`PlayerEvent.PlaybackFinished`](🔗) event

  • WebRTC/WHEP support detection

  • [`PlayerEvent.VolumeChanged`](🔗) not containing the `sourceVolume` and `targetVolume` fields when playing back a WHEP stream

  • Missing [`PlayerEvent.Playing`](🔗) on PlayStation 4

  • Failing to restore from client side ad to main content using `Bitmovin Advertising Module` on PlayStation 4 when playing progressive assets

  • Playback failure in Safari when using [`native_hls_parsing`](🔗) if HLS playlist URLs contain the string `$1`

## 8.119.0

Released: 2023-05-30

### Added

  • [StaticPlayerAPI.removeModule](🔗) to remove added modules

  • `engine-webrtc` module that adds support for WHEP sources

### Fixed

  • Not being able to exit fullscreen mode by clicking on UI button in Safari 16.4+

  • Startup failures on Safari 16+

  • Playback of muxed live streams on TVs affected by a timestamp limit

### Removed

  • Unused `CustomEvent` polyfill

## 8.118.0

Released: 2023-05-22

### Changed

  • Update bundled analytics collector from version 2.29.1 to [2.29.3](🔗)

  • Limit update interval of DASH live streams to minimum 1 second

  • Update analytics types [CollectorConfig](🔗), [AnalyticsConfig](🔗)

### Fixed

  • Improve memory efficiency of live DASH SegmentTimeline parsing

  • Memory leak when playing DRM-protected content on WebOS

## 8.117.0

Released: 2023-05-15

### Fixed

  • Improve performance of DASH SegmentTimeline processing

  • Failing MSE support checks on Chromium preventing playback of DASH and HLS sources

  • When using [limitToPlayerSize](🔗), a quality matching the precise player dimensions is not selected

## 8.116.0

Released: 2023-05-08

### Fixed

  • Improvements to enhance the overall performance

## 8.115.0

Released: 2023-05-02

### Fixed

  • Playback breaking due to high BaseMediaDecode time values on WebOS

  • Unnecessary querying of supported DRM capabilities causing warning messages

  • [PlayerResized](🔗) event not fired if CSS classes are used to change size

  • HLS Playback failure when seeking to a new a discontinuity just after having started to load a different one

## 8.114.0

Released: 2023-04-24

### Fixed

  • Player sometimes getting stuck when seeking close to a discontinuity boundary between encrypted and clear content

  • Missing [`PlaybackFinished`](🔗) event on PlayStation4 when seek is called after end of stream is reached

  • Inconsistent playback start after pre-roll ad in Safari 15 and later

  • HLS playlist processing inefficiencies

## 8.113.0

Released: 2023-04-17

### Added

  • [`hls_parse_manifest_in_worker`](🔗) tweak to enable HLS playlist parsing in web worker

### Changed

  • **UI:** Updated dependencies

  • Cache variant playlist during codec probing for HLS live streams

### Fixed

  • Potential errors when init segments share the same URL across representations

## 8.112.0

Released: 2023-04-10

### Fixed

  • Broken playback on PS4 after transitioning from unencrypted to encrypted content

  • Failed segment requests sometimes retried too many times before being skipped on live streams

## 8.111.0

Released: 2023-04-03

### Fixed

  • HLS parsing inefficiencies

  • Player not emitting `TimeChanged` events on PS4 with DRM-protected sources

  • Player potentially cancelling segment downloads when the browser reports `loadedBytes: -1`

  • Broken playback when clicking play after an autoplay failure with client side ads on Safari 16

  • Slow startup with HLS when network slows down after source loading

## 8.110.0

Released: 2023-03-23

### Added

  • **UI:** Config option `forceSubtitlesIntoViewContainer` to handle overflowing subtitle labels

### Fixed

  • Player sometimes getting stuck when seeking close to a discontinuity boundary in MPEG-TS streams

  • Player sometimes not resuming playback after seeking on 2018 Tizen TVs

  • Player sometimes cancelling segment downloads of the lowest quality when `onVideoAdaptation` callback is used

  • Enabling fragmented subtitle track during livestream playback resulted in no cue events being fired

## 8.109.0

Released: 2023-03-13

### Fixed

  • Random playback failures when trying to play back IMA ads on TVs

### Known Issues

  • Slow startup due to runaway download cancellation under certain circumstances when using `onVideoAdaptation` callback

## 8.108.0

Released: 2023-03-06

### Added

  • **UI:** Scrubbing during a FaceTime call automatically creates a SharePlay suspension to not synchronize scrubbing to other participants

### Changed

  • Update bundled analytics collector to version 2.29.1

### Fixed

  • Player returning relative values for `getSeekableRange` and `getBufferedRanges` in livestreams on Safari with `NativePlayer` when `EXT-X-PROGRAM-DATE-TIME` is present in the manifest

  • Audio-only stream failing to play and throwing an error on Safari when `native_hls_parsing` is enabled

  • Custom player builds in the Dashboards

### Known Issues

Slow startup due to runaway download cancellation under certain circumstances when using `onVideoAdaptation` callback

## 8.107.1

Released: 2023-02-28

### Changed

  • `PlayerAPI.getSeekableRange` and `PlayerAPI.getBufferedRanges` to return relative values again to prevent problems with `PlayerAPI.timeShift` and `PlayerAPI.seek` in HLS streams with `EXT-X-PROGRAM-DATE-TIME` tags on Safari with player version `8.107.0`

## 8.107.0

Released: 2023-02-27

### Fixed

  • Player emitting `StallStarted` and `StallEnded` events while timeshifting

  • `PlayerAPI.getSeekableRange` and `PlayerAPI.getBufferedRanges` returning relative instead of absolute values on Safari for HLS live streams with `EXT-X-PROGRAM-DATE-TIME` tags

  • Potential decode error due to gap compensation logic sometimes applying a wrong timestamp offset on HLS discontinuities for fMP4 streams on LG webOS

  • Race condition causing segments to be pushed to buffer using the timestamp offset of a following HLS discontinuity on TVs

  • Dynamically scheduled linear ad sometimes getting skipped when overlay ad is playing using IMA ad module

### Known Issues

  • `PlayerAPI.seek` and `PlayerAPI.timeShift` not working as expected with HLS streams that have an `EXT-X-PROGRAM-DATE-TIME` tag on Safari. Fixed in `8.107.1`.

  • Slow startup due to runaway download cancellation under certain circumstances when using `onVideoAdaptation` callback

## 8.106.0

Released: 2023-02-20

### Changed

  • Disabled download cancellation for HLS streams with multiple audio qualities to prevent runaway segment download cancellations

### Fixed

  • Playback failure because of race condition between backward buffer clearing and timestamp rollover handling

  • TypeError: Cannot read property `isBufferBlockSwitchOngoing` of undefined

  • Downloads being cancelled too late when headers weren't yet received

  • Delayed playback start for HLS streams due to first requested segment sometimes not matching initially loaded playlist and thus requiring an additional playlist request

### Removed

  • Remove leftover v7 tweak `autoqualityswitching` from documentation

### Known Issues

  • Slow startup due to runaway download cancellation under certain circumstances when using `onVideoAdaptation` callback

## 8.105.0

Released: 2023-02-13

### Added

  • `MIN_SIZE_FOR_GAP_SKIPPING` tweak to avoid jumping gaps that the browser can handle on its own

### Fixed

  • **UI:** Circular dependency in the export of `AudioTrackListBox`

  • Improved accuracy when seeking close to buffer end

  • Leftover buffer range after a timestamp rollover buffer clearing causing playback stall

## 8.104.0

Released: 2023-02-06

### Added

  • **UI:** `UIConfig.enterFullscreenOnInitialPlayback` flag to enter fullscreen when clicking `PlaybackToggleButton` or `HugePlaybackToggleButton` to initiate the initial playback

### Fixed

  • Sudden playback stall caused by unexpected buffer clearing on TVs soon after timestamp rollover

  • Loading a new source while in the middle of a content transition

### Removed

  • Legacy transmuxer along with `TweaksConfig.experimental_transmuxing` flag

## 8.103.0

Released: 2023-01-30

### Added

  • PlayStation 4 support through PS4 module that addresses the following issues

    • App crash when trying to playback DRM content

    • Incorrect event ordering when starting playback of a DRM protected asset

    • Disabled setting of playbackRate when playing adaptive bitrate streams as it results in stalling

  • **UI:** Language localization for Spanish

### Fixed

  • Performance issues with HLS stream carrying a lot of `DATERANGE` tags

    • Frequent stalls during SSAI sections of HLS streams containing large `DATERANGE` tags on Tizen TVs

    • Memory leak causing performance degradation after long sessions of HLS live streams that feature `DATERANGE` metadata

  • Missing Bitmovin header in UI release files

  • Broken UI export in the `bitmovin-player` npm package preventing import of `bitmovin-player/bitmovinplayer-ui.css` and `bitmovin-player/bitmovinplayer-ui.js`

### Known Issues

  • Seeking after playback finished results in unexpected behaviour on PS4

  • Player seeks to start of the buffer after playback finished on PS4 with certain assets

## 8.102.0

Released: 2023-01-23

### Fixed

  • Infinite stalling when seeking over, and then seeking back into a discontinuity with different encryption state

### Known Issues

  • Broken UI export in the `bitmovin-player` npm package preventing import of `bitmovin-player/bitmovinplayer-ui.css` and `bitmovin-player/bitmovinplayer-ui.js`

## 8.101.0

Released: 2023-01-17

### Added

  • **UI:** Export `Localization` and `SpatialNavigation` to use in external UI configuration

### Changed

  • Update bundled analytics collector to version `2.28.1`

### Known Issues

  • Broken UI export in the `bitmovin-player` npm package preventing import of `bitmovin-player/bitmovinplayer-ui.css` and `bitmovin-player/bitmovinplayer-ui.js`

## 8.100.0

Released: 2022-12-20

### Added

  • **UI:** Support for spatial navigation

  • **UI:** SmartTV UI via UIFactory.buildDefaultTvUI

### Fixed

  • Failing to play protected audio-only HLS streams

## 8.99.0

Released: 2022-12-01

### Added

  • `StyleConfig.container` callback config option to specify a container for player styles

### Changed

  • Clear buffers by default on Tizen 2017 in case of discontinuity changes, unless the tweak `hls_clear_buffers_on_discontinuity_switches` is disabled

### Fixed

  • Broken playback after HLS discontinuity change due to missing `SourceBuffer` for either audio or video

  • Broken playback in HLS live streams without `#EXT-X-DISCONTINUITY-SEQUENCE` and segments with duration of 0

  • Seeking backward sometimes inaccurate or leading to playback getting stuck

  • Incorrect thumbnails appear in DASH streams with non-zero MPD `availabilityStartTime` or `Period.Start`

## 8.98.0

Released: 2022-11-22

### Added

  • `TweaksConfig.parse_emsg_boxes` tweak to disable parsing of `emsg` boxes from MP4 segments

### Fixed

  • Setting time on ending boundary of a buffered range sometimes preventing playback from resuming after a seek

  • Playback freeze with HLS SSAI live stream with growing DVR window when `#EXT-X-DISCONTINUITY-SEQUENCE` tag is not present

  • Inefficiencies in metadata handling causing playback stutters with long streams and large amounts of inband metadata

  • Reset IMA AdsManager on `ALL_ADS_COMPLETED` event to ensure unique IMA scor query parameter for each ad request

  • Audio not being audible on Samsung Tizen 2017 for streams with large timestamps

### Removed

  • Obsolete polyfill for `atob` and `btoa` browser APIs for Base64 de-/encoding

## 8.97.0

Released: 2022-10-25

### Changed

  • DASH and HLS manifest parsing errors to be more descriptive

### Fixed

  • Playback sometimes jumping forward a few seconds when playing through a timestamp rollover on TVs

  • Promise returned by `load` not rejecting when loading a HLS playlist as a DASH source

  • Subtitles not showing up when custom labeling is applied to a HLS source

  • Slight chance of 3rd `AdQuartile` event not getting dispatched on short ads when using IMA SDK

  • Playback looping or getting stuck after gap is skipped on Tizen

## 8.96.0

Released: 2022-10-11

### Changed

  • The player will now throw an error after it has exhausted all available DRM licenses and none worked

### Fixed

  • `PlayerEvent.Playing` and `PlayerEvent.Ready` being emitted on PS5 before a DRM license response is received

  • `PlayerAPI.getCurrentTime` briefly returning inaccurate value when crossing DASH period boundaries and HLS discontinuities, e.g. on SSAI streams

### Known Issues

  • On Firefox version 105 the video element sometimes does not emit an `ended` Event leading to problems with Ad transitions. Firefox version 106 does not seem to have the same error and is scheduled to be released on 2022-10-18.

## 8.95.2

Released: 2023-02-10

### Added

  • `MAX_ALLOWED_BANDWIDTH_ESTIMATION` config to allow capping the bandwidth observations to a max value in the adaptation logic

  • `MIN_SIZE_FOR_GAP_SKIPPING` tweak to avoid jumping gaps that the browser can handle on its own

### Changed

  • Increase impact of RATE_SAFETY_MARGIN_PERCENTAGE in download prediction logic

### Fixed

  • Improve download cancellation policy in the case of very high Time-To-First-Byte

  • Fix TypeError `Cannot read property 'readyState' of undefined`

  • Performance hog caused by stringification and hashing of potentially large metadata events

  • Sudden playback stall caused by timestamp rollover leaving leftover range after buffer clearing

  • Processing time of Date Range metadata steadily increasing over time

  • Race condition due to backward buffer clearing getting executed on a timestamp rollover

  • Backward buffer clearing removing the entire buffer due to wrong time mapping

  • Player sometimes loading variant playlists twice before scheduling segment downloads on startup

  • Loading a new source while in the middle of a content transition

## 8.95.1

Released: 2022-12-01

### Fixed

  • Broken playback after HLS discontinuity change due to missing `SourceBuffer` for either audio or video

## 8.95.0

Released: 2022-09-27

### Changed

  • The formerly experimental transmuxer is now considered stable and used by default, hence the default value of `TweaksConfig.experimental_transmuxing` now changed from `false` to `true`. For the time being, it is possible to switch back to the legacy transmuxer by setting this flag to `false`. Included are various bug fixes and experimental support for CEA-708 closed captions via `TweaksConfig.parse_cea_708_caption`

### Fixed

  • Thumbnails do not appear in DASH streams with no `segmentTemplate@startNumber`

  • Player unexpectedly stalling at discontinuity boundary when playing SSAI streams on Tizen even though buffer is available

  • Memory leak when using `TweaksConfig.native_hls_parsing` in Safari since late 15 versions with live streams that have a growing DVR window

  • Memory leak caused by leftover performance marks

  • TypeError `Cannot read property 'isPaused' of null`

  • TypeError `Cannot read property 'seekingOrTimeshifting' of null`

  • Seeking after `player.load()` loaded segments from the beginning instead of the seek target

  • `getDroppedVideoFrames()` API always returning 0 on Firefox

  • Mid-playback stalls with multi period/discontinuity streams on TVs

### Removed

  • Support for HLS MPEG-TS streams with multiple audio tracks muxed into the same segment. The player is now always defaulting to the first audio track. Note: This legacy feature was removed in the new transmuxer implementation but is still supported when using the legacy transmuxer.

## 8.94.0

Released: 2022-09-13

### Fixed

  • Frequent stalling with HLS SSAI live streams on smart TVs

  • Player pausing unexpectedly during content transitions on TVs

  • `DVRWindowExceeded` handling causing repeated timeShifts and potentially infinite stalling

## 8.93.0

Released: 2022-08-30

### Added

  • `hls_clear_buffers_on_discontinuity_switches` tweak to clear buffers on discontinuity changes on TVs

  • `load()` promise rejection message

### Changed

  • Prohibit changing the playback rate on PlayStation 5 when playing adaptive bitrate streams to prevent stalling

### Fixed

  • Intermittent stalls and playback failures when playing back SSAI HLS streams on WebOS

  • Chance of getting stuck at period switch or discontinuity transition on low-end devices

  • No `PlaybackFinished` event on PlayStation5 when audio content is longer than video

  • **UI:** Duration format not getting updated from \`

  • mm:ss`to`hh:mm:ss\`

### Known Issues

  • Rare chance of freezing on HLS SSAI live streams. Can be alleviated by setting tweak `hls_clear_buffers_on_discontinuity_switches` to `false`

## 8.92.2

Released: 2022-11-03

### Fixed

  • Playback freeze with HLS SSAI live stream with growing DVR window when `#EXT-X-DISCONTINUITY-SEQUENCE` tag is not present

## 8.92.1

Released: 2022-10-27

### Added

  • `TweaksConfig.parse_emsg_boxes` tweak to disable parsing of `emsg` boxes from MP4 segments.

### Fixed

  • Inefficient metadata handling causing playback stutters with long streams and large amount of inband metadata.

## 8.92.0

Released: 2022-08-16

### Fixed

  • Playback not starting for HLS Live streams on WebOS when forcing `native` technology for `hls` in `PlayerConfig.playback.preferredTech`

## 8.91.0

Released: 2022-08-02

### Added

  • Support for audio track switching between muxed AV and external audio

  • Option to disallow the player to use the `localStorage` via `PlayerConfig.storage.disableStorageApi`

  • Option to disallow the ad module to use the `localStorage` via `AdvertisingConfig.disableStorageApi`

### Fixed

  • `PlayerAPI.setAudio` does not work when `PlaybackConfig.audioLanguage` is set

  • Ignore `styp` box with value `lmsg` (defined only for DASH) when the source is HLS

  • HLS `DEFAULT` property not being respected when audio is muxed with video

  • Memory leak on Chromium-based browsers with HLS live streams containing Data URLs in playlists

## 8.90.0

Released: 2022-07-19

### Fixed

  • `Seeked` event triggering prematurely on Tizen 2016 and IE

  • Advertising modules (IMA and BAM) throwing an `AdError` when VMAP includes escaped characters

  • Source not loading in iOS/iPadOS `WebView`s that have the `mediaTypesRequiringUserActionForPlayback` configuration option set

  • Main content not resuming after VPAID ads that triggered an `AdPaused` event on ad completion

  • PlayStation 5 Module breaking DRM playback

  • Replay sometimes not working after post-roll ad break

  • Parsing of AC-4 and EC-4 codec strings

## 8.89.0

Released: 2022-07-05

### Added

  • `HLS_SYNC_SEGMENT_PLAYBACK_TIME_VIA_MEDIA_SEQUENCE` tweak to enable synchronizing segment playback time between HLS playlists using `X-MEDIA-SEQUENCE` playlist tags. Enabling this tweak can help resolving playback stalls occurring during quality switching.

### Fixed

  • IMA Advertising module sometimes scheduling the same AdBreak twice

  • TypeError `Cannot read property 'fireError' of null`

  • `player.destroy()` failing to tear down player and causing it to continue playback if casting is enabled in CastConfig

  • Memory leak in DASH live streams on Chromium browsers

## 8.88.0

Released: 2022-06-21

### Added

  • PlayStation 5 Module

  • `playstation_5.playmode` tweak to define hardware resources when playing multiple videos at the same time

  • `playstation_5.esvm` tweak to toggle Enhanced Security Video Mode

  • `playstation_5.pass_through` tweak to toggle audio pass through

  • Support for PlayReady-protected content playback with SL-3000 on Playstation 5 via `esvm` tweak

### Fixed

  • Unexpected `PlaybackFinished` when switching from Live to Vod on Safari 15

  • Removal of Representations with DRM Errors inside merged AdaptationSets got undone by live manifest updates

  • Playback getting stuck at mid-roll ad with DRM-stream on WebOS 2017 highend

### Changed

  • Improved stalling behavior for HLS streams without `EXT-X-INDEPENDENT-SEGMENTS` tags

  • Segment download cancellation is now disabled during codec detection for HLS streams

## 8.87.0

Released: 2022-06-07

### Added

  • `SourceConfigOptions.shouldRecreateSourceBuffersOnPeriodSwitch` to allow overwriting the default player behavior concerning recreation of SourceBuffers on Period switch

### Fixed

  • Pre-rolls not starting on Chrome for iOS after an autoplay failure

  • TypeError `Unable to get property 'ready' of undefined or null reference`

  • TypeError `Cannot read properties of null (reading 'canSwitchToBufferBlockForTime')`

  • TypeError `this[_$_d149[483]] is null`

  • TypeError `Unable to get property 'has' of undefined or null`

  • TypeError `Cannot read properties of null (reading 'getPropertyValue')`

  • TypeError `Cannot read properties of undefined (reading 'dispatch')`

  • TypeError `Cannot read properties of null (reading 'dispatchEvent')`

  • TypeError `Cannot read properties of null (reading 'isTimeShifting')`

## 8.86.0

Released: 2022-05-24

### Added

  • Playback is always allowed on domain `` without requiring license authentication

### Changed

  • A `MODULE_MISSING` warning is now emitted when an additional module is needed to parse CEA captions

### Fixed

  • Modular player requiring DASH module to play HLS streams

  • Modular player requiring `ContainerTS` module to play fMp4 streams

  • Modular player requiring `ContainerMp4` module to play MPEG-TS streams

  • DASH Streams with empty `EventStream.Event` tag not starting

  • Main content restoration occasionally failing when using IMA advertising module

  • Potential minor memory leak when cast is enabled

  • Poster HTML element not getting disposed when destroying the player before starting playback

## 8.85.0

Released: 2022-05-10

### Fixed

  • Player sometimes getting stuck on content restorations after client side ad playback

  • Missing ads on Safari with DRM-protected content

  • Playback sometimes getting stuck at content encryption changes for HLS

  • Player stalling indefinitely when transitioning from video-only period to audio-video

  • Documentation for `SubtitleCuePosition` specifying wrong `row` and `column` range

  • Samsung Tizen 2018+ TVs not choosing AC-3 audio with DRM-protected streams, although supported

  • `Seeked` event sometimes not being triggered in multi period scenarios

## 8.84.0

Released: 2022-04-26

### Added

  • Added a `parse_cea_708_caption` tweak in `TweaksConfig` to support both CEA-708 and CEA-608 with the `experimental_transmuxing` tweak

### Fixed

  • `Ready` event triggered before promise of `player.load()` resolves for progressive sources

  • Logging of unhandled errors in event callbacks

  • Unhandled exceptions sometimes being visible in logs when playing HLS content with metadata

## 8.83.0

Released: 2022-04-12

### Added

  • Warning event with code `PLAYBACK_INVALID_DATA_SEGMENT_ENCOUNTERED` when encountering an invalid data segment

### Fixed

  • Incorrect segments being loaded for `SegmentTimeline` streams when the timeline grows into the past

  • Outdated Open Measurement SDK documentation in the player API reference

  • Playback occasionally stalling on period switches

  • Playback on Tizen 2016/2017 not starting under certain circumstances if the init-segment of an `fMP4`-stream contains an `elst`-box

  • **UI:** Incorrect line alignment for subtitle cues from WebVTT tracks.

  • **UI:** Incorrect edges of reference for vertical writing cues in block positioning from WebVTT tracks.

  • **UI:** An empty line is added in vertical subtitle cues.

## 8.82.0

Released: 2022-03-29

### Added

  • Graceful handling of invalid TS segments when transmuxing is required

### Fixed

  • Unexpected `Paused` event sometimes being emitted right before `PlaybackFinished` on Safari

  • Player sometimes continues playback while paused on period switch

  • Player sometimes unloading during content restoring on Safari 15

  • PlaybackTime adjustment to fill buffer holes on WebOS discontinuity transitions could lead to decoding errors

  • Playback of progressive streams sometimes not starting on Safari 15

  • `MetadataParsed` and `Metadata` events of HLS live streams with `EXT-X-PROGRAM-DATE-TIME` tags on Safari

## 8.81.0

Released: 2022-03-15

### Added

  • Support for EMSG metadata with version 1

  • **UI: **Seek preview is now configurable via `UIConfig.enableSeekPreview` or `SeekBarConfig.enableSeekPreview`

### Changed

  • `AdvertisingOmSdkModule` bundle now includes required OMSDK library

### Fixed

  • Playback sometimes not starting on Safari 14+ when native player is used

  • Not respecting order in which standalone ads with the same position get scheduled in Bitmovin Advertising Module

  • Player potentially choosing a wrong audio rendition when there is more than one rendition with the default language

  • Manifest redirects not being respected with enabled `native_hls_parsing` tweak

## 8.80.0

Released: 2022-03-01

### Fixed

  • `AdFinished` event sometimes not being emitted with IMA module

  • Player not restoring from ad break on WebOS 2018+ when main content is a progressive stream

  • `getAvailableSegments()` only returning a single representation for DASH SegmentTemplate streams

  • Playback sometimes not starting for HLS streams due to incorrect `timestampOffset` being applied

  • Current time in some cases is not progressing on Safari when using the MSE

  • Adjustment of presentation time offsets on the first HLS discontinuity leading to negative PTS values

  • **UI**: npm install failure when using Node 16

## 8.79.0

Released: 2022-02-16

### Added

  • The following player errors now provide a message and some additional context:




### Fixed

  • Sometimes imprecise time-shifting due to wrongfully delayed buffer clearing

  • Superfluous `AudioChanged` event sometimes being emitted before `SourceLoaded` when using HLS on Safari

  • `player.getTimeshift()` returning the wrong offset after restoring from an Ad break on Safari 15

  • `player.getTimeshift()` sometimes returning the wrong offset when joining a live stream on Safari 15

  • Compilation error using the player package in TypeScript projects where `@types/chrome` package is not installed

## 8.78.0

Released: 2022-02-01

### Added

  • Optional `sendTimestamp` to `HttpResponseTiming`

  • Optional `url`, `elapsedTime` and `segmentDuration` to `RequestProgress`

  • `SEGMENT_LOADING_PROGRESS_CHECK_INTERVAL` tweak to set the desired interval of proactive download progress checks

  • Eager download cancellation

  • `prepareMediaInfo` callback to `GoogleCastRemoteControlConfig` providing the possibility to alter the `MediaInfo` object before it is loaded onto the receiver upon changing its media/source

  • **UI: **Support for providing custom `aria-label` when `ListBox` is used

### Changed

  • Adjust return types for `getAudio`, `getSnapshot`, and `getThumbnail` APIs to include nullish values

  • `API_NOT_AVAILABLE` error message now mentions the name of the API that led to the error


### Fixed

  • Not respecting `AUTOSELECT` attributes in HLS streams for audio when played on MSE-based player

  • Not selecting user language in HLS streams for MSE based players

  • Buffer erroneously being cleared while seeking backwards

  • fMP4 encapsulated subtitles sometimes being dropped when playing back an HLS stream

  • Case-sensitive merging of internal and user-defined request headers

  • Potential playback failure when calling `load()` multiple times

  • **UI:** Updating the markers on live streams causing unhandled exception after player is destroyed

## 8.77.0

Released: 2022-01-18

### Added



  • Actively track asset loading and trigger an error on Tizen with Native player in case asset is not available

  • Support for Dolby Vision video codec strings

  • Tweaks for changing the retry policy on failed downloads

### Fixed

  • Improve HLS livestream performance on older low-end devices

  • Fixed issue on older Tizen devices with the duration being `NaN` during startup

  • Playback occasionally freezing on Tizen when skipping a gap

  • DASH sometimes being chosen over Native HLS even though a FairPlay config is provided

  • Slightly improve parsing performance of HLS playlists

  • Improve resource efficiency when playing long HLS playlists

  • Content restoring sometimes not respecting the `startOffset` on Native HLS

  • Player missing the target when timeshifting with a positive timestamp value

  • Invalid HTML line break tags for subtitles

  • Player getting stuck on the lowest quality, when the representations are ordered by descending bandwidth

  • Better support for unknown video codecs in HLS

### Changed

  • `troubleShootLink` for the error events

## 8.76.0

Released: 2021-12-21

### Added

  • `TweaksConfig.experimental_transmuxer` to enable new experimental transmuxer

  • More context for the `DRM_MEDIA_KEY_INITIALIZATION_FAILED` error

  • `PlayerErrorEvent.troubleShootLink` to follow for error troubleshooting

  • `DRM_NO_KEY_SYSTEM` error event now contains information about the provided and available key systems

  • `DRM_KEY_ERROR` now includes the code and system code provided by the browser

  • The error for `DRM_KEY_SESSION_INITIALIZATION_FAILED` now includes the reason for the failure

### Fixed

  • A nullpointer exception at the end of an advertisment during which the player is destroyed

  • Line spacing being too large for WebVTT subtitles when using Native HLS

  • Not recovering when seeking too close to the end of buffer for PlayReady protected content on Edge Chromium

  • WebOS 2018 and 2019 not rejecting the `player.play` promise when there is a player error

  • `getTimeshift` returning out of bounds values for HLS Native on Safari 14+

  • Player firing a `DRM_NO_KEY_SYSTEM` error instead of `MODULE_MISSING` when trying to play an encrypted stream without the DRM module

  • Loading too much on seeking to segment boundaries on SegmentTimeline streams

  • Progress bar always jumping to max timeshift offset on Safari 15+ with Native HLS when joining a live stream and after every seek

  • **UI: **The scrubber could jump to an old position during a seek operation when it was dragged

  • **UI:** The Seekbar scrubber could jump to an old position on touch devices when the buffer updates during a seek operation

### Changed

  • Improve parsing efficiency of long HLS playlists with custom metadata tags

  • Firing a `DRM_KEY_ERROR` error instead of `DRM_MEDIA_KEY_INITIALIZATION_FAILED` when `msSetMediaKeys` fails

  • Firing a `DRM_NO_KEY_SYSTEM` error instead of `DRM_MEDIA_KEY_INITIALIZATION_FAILED` when `requestMediaKeySystemAccess` or `createMediaKeys` fails

## 8.75.0

Released: 2021-12-07

### Added


  • New detail page for each error from the `ErrorCode` enum

### Fixed

  • ABR logic not recovering when a custom `RequestController` is in use

  • ABR logic selecting the highest quality for codec probing even on a poor network

  • Player being unable to restore content playback after an `AdError` with the IMA module

  • Missing `AdStarted` and `AdFinished` with the IMA module when the previous ad request has returned an empty response

  • Missing `AdStarted` and `AdFinished` with the IMA module when the previous ad is skipped

  • Setting the duration on a closed MSE in a multi period live stream

  • `load` / `unload` not resolving in Chrome 95+ on Android with Widevine protected DASH streams

  • Unhandled exception being thrown when attempting to play a Fairplay stream on a device that does not support Fairplay

  • STARTUP_THRESHOLD behaving inaccurately on start times close to the end of a segment

  • `NativePlayer` ignoring `TimeMode` parameter in `getCurrentTime`

  • OMSDK not respecting VAST manifest verification parameters

## 8.74.0

Released: 2021-11-23

### Added

  • `setAspectRatio` and `getAspectRatio` API methods

  • `PlayerEvent.AspectRatioChanged` event which is fired when aspect ratio is changed using `PlayerAPI.setAspectRatio`

### Fixed

  • Failed time-shifts for fMP4 HLS assets

  • Playback with DRM content failing to destroy player due to unhandled exception

  • Throwing unhandled exceptions during repeated destroying of player on tizen

### Changed

  • All player errors (except DRM and network errors) now provide a message, and some also provide contextual data

  • Improve parsing efficiency of long HLS playlists with `#EXT-X-KEY` tags considerably

## 8.73.0

Released: 2021-11-09

### Added

  • Support for the [Open Measurement Software Development Kit (OM SDK)](🔗)

### Fixed

  • Playback not starting when setting initial time too close to gap on Chromium browsers

  • Broken content restoring after ad when using production build

  • Unhandled exceptions during `Player.destroy()` causing playback failures on low-end devices

## 8.72.0

Released: 2021-10-27

### Added

  • `CueEnter` event includes VTT properties in native player

### Changed

  • Updated `ErrorCode` documentation

  • Better mapping of `MediaError` from the `HTMLMediaElement` to `PlayerError` when using native player

### Fixed

  • Missing `Playing` event when casting using CAF

  • Freeze on Tizen due to gap in audio buffer

## 8.71.0

Released: 2021-10-12

### Fixed

  • `player.getCurrentTime` returning NaN when the player is finishing an ad break

  • Period switches sometimes failing on slow network when audio and video segments are not aligned

  • Player stalling when seeking during an ongoing quality switch with `SegmentBase` WebM assets

  • Playback of subsample encrypted WebM assets failing when ClearKey is used

  • Ads schedule with BAM module not respecting the order they are defined when the schedule time is the same

  • Network API documentation used outdated namespace in code examples

  • Broken playback in Safari for HLS streams that carry `PROGRAM-DATE-TIME` tags in any but the first discontinuity sequence

  • Player not respecting audio selection when video segments contained muxed audio while separate audio playlists were available

  • **UI**: Incorrect font size for TTML subtitles

## 8.70.0

Released: 2021-09-28

### Fixed

  • `DVRWindowExceeded` event fired during a time shift operation, even when we are not close to the maximum DVR Window

  • VR playback not working on iOS devices

  • Device orientation not being used for VR playback on iOS 13+ devices

  • Native player sometimes failing to enable an external subtitle track after an ad break

  • Duplicated text tracks being added on Native player after content restoring

  • Inconsistent reporting of subtitles being `fragmented` / not `fragmented` when using native player

  • `PlaybackFinished` event sometimes not being fired on Safari when using MSE

  • Subtitle cue timing sometimes off after a discontinuity switch

## 8.69.0

Released: 2021-09-14

### Added

  • Support for the `@endNumber` attribute in DASH manifests.

  • **UI:** Sort `AudioTracks` inside the A`udioTrackSelectBox` and the `AudioTrackListBox` by their identifier.

### Changed

  • Player now dispatches an `AudioChanged` event when the native player is used in case an enabled audio track is added after the `SourceLoaded` event has already been dispatched

  • `AudioChanged` event definition now allows `sourceAudio` property to be `null`

### Fixed

  • No `StallStarted` event if video element stops before buffer end is reached

  • Playback stalling on WebOS and Tizen when switching between audio tracks with different timescales

  • Parent wrapper sequence and fallback ads inside VAST manifests not being respected when using the Bitmovin ad module

  • TTML region style linked to head style ID not being applied

  • Correctly set the live stream duration when it is provided by the manifest

## 8.68.0

Released: 2021-08-31

### Changed

  • `AdPlayerAPI.done` and `AdPlaybackReportingAPI.done` now returns a promise

  • `PlayerAdvertisingAPI.skip` now returns a promise

### Fixed

  • UI becoming unresponsive when reloading the page or creating a new player instance while casting

  • Playback failing after unprotected/protected content transitions on 2016 WebOS TVs

  • When switching from one ad to another, the last played content was still visible for a few frames

## 8.67.0

Released: 2021-08-19

### Fixed

  • Playing over period switches on Tizen 2016 for non-aligned audio and video segments

  • **UI: **Empty line being added to subtitle boxes when VTT positioning attributes are present

## 8.66.0

Released: 2021-08-04

### Added

  • Support for mid-stream key rotation for PlayReady in Edge browsers

  • Support for subtitle styling via WebVTT default classes

### Fixed

  • Quality switches interfering and causing inaccuracies in seeking/timeShifting on HLS streams

  • Freezing playback during seeking when adjusting the time to a buffer start which will be removed

  • Duplicate handling of the DVRWindowExceeded event

  • Playback occasionally freezing on Tizen when switching periods

  • Preferred language order for `playback.audioLanguage` and `playback.subtitleLanguage` not respected

  • Fragmented subtitles tracks sometimes failing to activate

  • `getCurrentTime` sometimes returning 0 during period transitions

  • `startOffset` not getting applied in live streams after a pre-roll ad has finished

  • Not handling multiple DATERANGE tags per segment

  • Not firing metadata event for DATERANGE tag with duration zero

  • Error event swallowed on content restore after an ad break

  • `AdVerifications` in nested `Extension` tags prevented ads from being played when using the BitmovinAdvertisingModule

## 8.65.0

Released: 2021-07-20

### Added

  • `RttEstimationMethod` `AdaptationConfig` parameter that allows to choose the RTT estimation method used by the ABR

### Fixed

  • Mapping to external time sometimes not working when the `BaseMediaDecodeTime` is rewritten

  • Playback occasionally starting from 0 on Tizen after seeking back in VOD content

  • Freezing playback when switching between unencrypted and encrypted audio tracks

  • Fragmented subtitles not appearing after seeking over a period boundary

  • Parsing of styled CEA Closed Captions causing out-of-memory issue and broken playback on HLS with MPEG-TS segments

  • Playback not starting when configuring `audioLanguage` on HLS streams with multiplexed audio+video

  • WebVTT subtitles new line not respected on native player

## 8.64.0

Released: 2021-07-06

### Fixed

  • Playback occasionally not starting on Native during initial load

  • Source unloading during content restoring on Native player

  • Nudging the video element causing playback to stall under certain conditions on 2018 Tizen TVs

  • No `PlayerError` being triggered when a video element error was encountered during the playback of live streams

  • Subtitles rendered automatically and duplicated on Safari 14

  • Switching audio in Livestream with PTS exceeding 32bits causing playback to stop on LG and Tizen TVs

  • Source being reloaded on the receiver after casting an already playing source

  • Switching from a Period without subtitles to a Period with fragmented subtitles

  • Tizen emitting fake ended event on live streams that still have not ended

## 8.63.1

Released: 2021-06-28

### Added

  • `force_software_decryption` tweak to force software decryption over the default of using WebCrypto API

### Fixed

  • Potential memory leak with HLS live streams that have growing DVR window

## 8.63.0

Released: 2021-06-22

### Added

  • Support for DASH Thumbnails which use a SegmentTimeline

### Fixed

  • Playback breaking when running the same source on multiple players

  • Playback on Tizen TVs sometimes not starting

  • Player failing when trying to cast client side Ads to CAF

  • Native player not reporting time changed events after startup

  • VTT position alignment calculation based on text alignment property

  • Subtitles disappearing after PTS rollover in HLS streams

## 8.62.0

Released: 2021-06-08

### Fixed

  • Live streams with Thumbnails and missing segment template information not starting

  • Slow `DVRWindowExceeded` handling causing stalls

  • Playback on XBox freezing after a seek operation in playready VOD content

## 8.61.0

Released: 2021-05-26

### Fixed

  • Multiple `<![CDATA` elements within the same XML element were not evaluated correctly

  • IE and Legacy Edge could play beyond the video's duration using a progressive source, missing the `PlaybackFinished` event

## 8.60.0

Released: 2021-05-11

### Added

  • Support for WebVTT timestamp tag styling with `:past` and `:future` pseudo-classes

  • Support for WebVTT paint-on rendering style, hide future content by default if timestamp tags are present

  • Tweak `preserve_gaps_for_base_media_decode_time_rewrite` that fixes live streams with timestamps larger than 32 bits and small frequent gaps in segments getting out of sync in video and audio on Tizen

### Fixed

  • PlaybackFinished event could wrongly be triggered after seeking

  • Player getting stuck when timeshifting over a MPEG2-TS PTS rollover

  • VAST NonLinearClickTracking event not fired when using BitmovinAdvertisingModule

### Changed

  • WebVTT: Dispatch `CueUpdate` events for cues containing timestamp tags, with past/future text wrapped in `span`s.

  • Wrap generated WebVTT cue HTML in a `<span>` element

## 8.59.1

Released: 2021-06-25

### Changed

  • Use median instead of a weighted average for RTT calculations

### Fixed

  • Player consecutively timeShifting if it fell out of the DVR window

  • Player not starting playback when seek target is adjusted to buffer start

  • Slow `DVRWindowExceeded` handling causing stalls

  • Unnecessary frequent DRM license state serialization potentially causing performance issues

  • Period switches failing if they're interrupted by time-shifts

  • Loading of incorrect segments when joining a multi-period DASH live stream in any but the last period

  • Erroneous end-of-stream signalling causing period switches to fail

  • Erroneous timestamp-rollover handling on Tizen causing period switches to fail

## 8.59.0

Released: 2021-04-27

### Fixed

  • `PeriodSwitched` being emitted before it has actually finished

  • Parsing of DASH-IF IOP thumbnails skipping first sprite when `SegmentTemplate.startNumber` is zero

  • Timescale changes between discontinuities got the player stuck on Tizen2016

  • NativePlayer not transitioning to `ended` state after post-roll ads

  • `RestrictStrategy.shouldPlaySkippedAdBreaks` not being treated correctly on multiple consecutive seeks

  • Player shows `DRM_KEY_ERROR` when the certificate request finishes after loading a new Fairplay source

  • Failing to detect dropping out of the DVR window in some `SegmentTemplate` live streams

  • BufferController returning cached buffer ranges too early

## 8.58.0

Released: 2021-04-13

### Fixed

  • Audio and Subtitle tracks information not being updated correctly when using `startOffset` option to start playback from any period other than the first

  • Order of `preferredTech` not being respected

  • Segment playback time parsing for WebM segments

  • Ads in an AdBreak being sorted by `sequenceNumber` in alphabetical order instead of numerical when using `freewheelVastFallbackHandling`

  • Tizen not signaling correctly end of period on multi-period live streams

  • Live streams freezing on certain webOS TVs when time-shifting or switching audio tracks

## 8.57.0

Released: 2021-03-30

### Added

  • Skipping duplicate audio renditions within the same rendition group in HLS streams

### Fixed

  • Playback freezing after client side mid-roll ad break with HLS stream

  • Tizen playback getting stuck after skipping an ad

  • Exception thrown when trying to get a thumbnail inside a gap

  • Video staying frozen while audio plays normally after unstalling on Chromium-based browsers

  • `PlaybackFinished` event occasionally not being fired on Chromium-based browsers

## 8.56.0

Released: 2021-03-16

### Added

  • Passing on `withCredentials` flags from `SourceConfig` and `DRMConfig` to CAF receiver for cookie/credentials support

### Fixed

  • Playback on Tizen freezing when time shifting backwards

  • Playback not starting in some cases, mostly with low latency streams

  • webOS buffer levels not correct on discontinuity changes

  • Fragmented subtitles being downloaded from the beginning when activating after a seek

  • Uncaught exceptions when playing HLS with fragmented WebVTT subtitles

  • Uncaught exceptions after manifest updates

### Changed

  • Fix mutating passed in SubtitleTrack in `InternalPlayer.addSubtitle` method

## 8.55.0

Released: 2021-03-02

### Added

  • Support plain text fragmented VTT subtitles with DASH streams

### Fixed

  • UI freeze and slow startup and with HLS streams that have long playlists

  • Tizen playback freeze with `SegmentBase` asset

  • WebVTT HTML5 styling isn't respected in Safari

  • HLS codec detection only being applied to the selected variant playlist

  • Wrong WebVTT cue position alignment

### Removed

  • Native flash player for native Hls playback when flash is supported

  • Flash renderer for Html5 and Hls playback when flash is supported

  • `HWDECODING` tweak to enable or disable hardware decoding for flash playback

## 8.54.0

Released: 2021-02-17

### Added

  • Image Media Playlist thumbnail support

  • Proper handling of Widevine protected streams with representations that don't have valid DRM licenses

### Fixed

  • Dynamic removal of non-playable representations due to DRM license not being usable

  • Tizen 2016 not seeking in VOD content

  • Tizen playback occasionally freezing during a period switch or seeking in VOD

  • Player not switching to a HLS backup stream

  • Missing `Seek` and `Seeked` event when setting current time on video element during startup with `startOffset`

  • `drm: DrmAPI` missing in the `PlayerAPI` interface

  • Playback of raw AAC segments on Tizen

### Changed

  • Do not recreate `SourceBuffer` on encryption change on Firefox

## 8.53.0

Released: 2021-02-02

### Added

  • `PROACTIVE_GAP_SKIP_DISTANCE_SECONDS` tweak that allows skipping of gaps in the content proactively

  • `AdvertisingConfig.freewheelVastFallbackHandling` to enable sequence based fallback handling for ad pods

### Fixed

  • Video duration returning `null` on TVs during ad/main content transition

  • Some Tizen TVs freezing when skipping gaps in the content

### Changed

  • More gradual resolution change on heavy bandwidth drops

## 8.52.0

Released: 2021-01-19

### Added

  • `player.drm.renewLicense` API to trigger a manual license reload for Playready streams

  • `DrmLicenseAdded` event to signal a DRM license becoming active

### Fixed

  • HLS codec probing if variant and rendition have same URL

  • Safari autoplay blocker handling fails with IMA module

  • Tizen occasionally freezing or seeking to wrong position when the content has finished playing and user seeks back to content

  • Memory leak when loading and unloading sources

  • Fallback to standalone ad from ad buffet if VPAID ad within VAST ad pod fails to resolve

### Changed

  • Rename `SETUP_MISSING_DOMAIN_LICENSE_WHITELIST` and `SETUP_MISSING_LICENSE_WHITELIST` error codes to use more up-to-date terminology

## 8.51.0

Released: 2020-12-22

### Added

  • `metadata` field on the `SourceConfig` that is automatically passed to CAF v3 receivers whenever a source is loaded

### Fixed

  • TTML Bitmap based subtitles not rendering on Tizen TV 2018 and older

  • Occasionally wrongly reported timeshift value

  • `player.getTimeShift` sometimes not returning `0` while being at the live edge on Safari

  • CEA-608 captions not being parsed on HLS live streams with a discontinuity related to SSAI

  • CEA-608 captions overlapping on live streams after time shifting back

  • Downloads not being cancelled on drastic bandwidth drops

  • Subtitle not rendering with smooth streaming

  • Metadata provided by `CLOSED-CAPTIONS` renditions in HLS and `Accessibility` descriptors in DASH not being exposed in `SubtitleTrack`s of CEA closed caption tracks

  • Unresponsive player after livestream pre-roll ad has finished

## 8.50.0

Released: 2020-12-09

### Added

  • `drop_invalid_segments` tweak that enables dropping of invalid MP4 segments to prevent breaking the playback.

### Fixed

  • HLS backup stream handling for manifests with relative URLs

  • Overlap of CC1 or CC3 CEA-608 closed captions with CC2 or CC4

  • Stop VPAID ad if playback is already finished on `AdPaused` event

  • Race condition on simultaneous playlist updates causing timeline gaps

## 8.49.0

Released: 2020-11-25

### Added

  • Expose `dword_base_media_decode_timestamps` and `force_base_media_decode_time_rewrite` in the tweaks config

  • Switching of active audio on a CAF V3 receiver

  • ServiceWorker support for the `source.withCredentials` config

  • Usage of the ABR for progressive ad media file selection with present bitrate

  • Handling for HLS backup streams with different audio `group-id`

  • Delaying of `BufferBlock` switch on timeshift/seek if target `BufferBlock` is not available

### Fixed

  • Player not playing audio on HLS streams with a non video or audio codec in CODECS attribute

  • Playback stalling sometimes after seeking/timeshifting due to a failed `BufferBlock` switch

  • Race condition while updating HLS live playlists, that leads to incorrect playback times.

  • Unnecessary segment cancellation after timeshift

## 8.48.2

Released: 2020-11-12

### Fixed

  • Segment downloads stopping unexpectedly after time-shifting, causing the player to stall

## 8.48.1

Released: 2020-11-12

### Fixed

  • Incorrect handling of HTML character encoding in manifest

## 8.48.0

Released: 2020-11-10

### Fixed

  • `SourceBuffer.changeType` shouldn't be used on tizen

  • Safari autoplay blocker handling fails with IMA module

  • Race condition which could lead to the player loading outdated segments in HLS live streams

  • First segment not loaded on timeShift

  • Fixed ad playback failures on platforms not supporting `Object.assign`

  • Dash live playback freeze on Tizen due to removal of segment before pushed into buffers

  • Stalling when restoring the content from CSAI due to wrong SegmentIndex calculation

  • Deliberate playlist download cancellations sometimes causing all future playlist updates to fail for HLS live streams

    • Chrome HLS playback starts at wrong position when `#EXT-X-START:TIME-OFFSET=0,PRECISE=NO` is present in variant manifest

### Added

  • Put back `segment_encryption_transition_handling` tweak to `PlayerConfigAPI` as deprecated

  • `force_base_media_decode_time_rewrite` tweak

## 8.47.0

Released: 2020-10-27

### Fixed

  • On webOS segments were added to the buffer twice

  • On webOS the gap filling logic for discontinuity handling was executed too often, leading to inaccurate playback times

  • Player getting stuck on emtpy VPAID ads with `BitmovinModule`

  • Seeks in quick succession through the UI breaking the UI when a V3 CAF Receiver is connected

  • Stalling on Samsung Tizen TVs when segments' `BaseMediaDecodeTime`s go from below 32 bit to above 32 bit mid-stream

### Changed

  • Remove obsolete `segment_encryption_transition_handling` from `PlayerConfigAPI`

### Added

  • Support for enabling and disabling subtitles loaded from manifest on google CAF V3

  • Support for adding new subtitles to a Chromecast V3 session using the Player API

  • Support for removing subtitles from a Chromecast V3 session using the player API

  • Support for configuring subtitles using source config for Chromecast V3

  • Support for DASH ClearKey License Server

## 8.46.0

Released: 2020-10-13

### Fixed

  • Stream freezes on HLS streams with TS container format and SSAI

  • Ad pod ads not being replaced by ad buffet ads in case the ad pod ads cannot be loaded when the `Bitmovin Advertising Module` is used

  • Player not unstalling automatically when calling `seek` shortly after `play` during startup

  • `SourceConfigOptions.startOffset` not respected in native player on WebOS 2018 and later

  • Player sometimes stuck in stalling state when switching periods after a seek event on a live stream

  • Xbox and Legacy Edge rare stalling when switching periods

  • Incorrect relative time returned by `PlayerAPI.getCurrentTime` for live streams

  • Accidental URL special character replacement in manifest metadata

### Changed

  • Rewritten XML Parser to boost parsing speed.

## 8.45.2

Released: 2020-10-08

### Fixed

  • Freezing on small buffer gaps on Webos devices

  • Stream freezes on HLS streams with TS container format and SSAI

## 8.45.1

Released: 2020-09-30

### Fixed

  • Player not selecting the correct starting segment for live streams with different segment lengths

## 8.45.0

Released: 2020-09-29

### Fixed

  • Improved performance of low-latency `Catchup` and `Fallback` modes

  • Short clear discontinuities inbetween encrypted content could be skipped

  • Fallback tag plays twice with Bitmovin advertising module

  • Progress Bar jumping to Live position when it starts playing from a MaxTimeShift position

  • Playback freezing at discontinuity boundary when timescales differ between segments

### Changed

  • Jumps over video gaps immediately when audio continues to play. Improves visible video stalls.

### Added

  • Filtering of unsupported codecs based on `MediaKeySystemMediaCapabilities`

## 8.44.0

Released: 2020-09-15

### Added

  • Support for sending custom metadata to CAF receivers

  • MPEGTS-to-fMP4 transmuxing support for HEVC

### Fixed

  • Falsely logged 'PSSH data found but DRM is not configured'

  • Play all resolved ads of the ad break with empty wrapped VAST while seeking over

  • Main content not playing with `persistent: true` flag and IMA module

  • Race condition causing loading of HLS streams to fail if loaded in quick succession

  • Documentation for `PlaybackConfig.audioLanguage`

  • Tizen stuck in stalling state on loading stream with segments if both 32bit and >32bit timestamps exist

  • Different start time offset in audio and video Hls playlist

  • Rare stalling of HLS live streams when timeshifting back

  • License call gets only issued once per player creation

## 8.43.0

Released: 2020-09-02

### Added

  • Basic media playback support for CAF v3 receivers

  • New error code `SEGMENT_PSSH_DATA_MISSING` when no PSSH box in init segments is provided for Tizen 2016

### Fixed

  • Check if `pssh` and `pro` are available before loading them in from the drm config to avoid undefined index error

  • `SEGMENT_PSSH_DATA_MISSING` firing on non DRM protected content when running on tizen 2016

  • `PLAYBACK_VIDEO_DECODING_ERROR` being thrown sometimes during seeking

  • Playback stuck when seeking on webOS

  • Fairplay DRM license requests using incorrect `LA_URL` with multi-key streams

## 8.42.1

Released: 2020-09-02

### Fixed

  • Play all resolved ads despite wrapped VAST ads are empty

## 8.42.0

Released: 2020-08-18

### Added

  • WebVTT subtitle property descriptions

### Fixed

  • `Play` event firing twice

  • Segments erroneously being pushed into the Renderer multiple times

  • Memory leak in the Tizen module caused by keeping a reference to individual segments

  • Playing back content with playback time less than Period.start after a period switch

## 8.41.0

Released: 2020-08-05

### Added

  • `onSelectAdQuality` which applies custom logic before picking to download progressive ads

### Fixed

  • Uncaught error while adding event listener on edge video element wrapper

  • Period switching in DRM streams on webos 2016 TVs

  • Filter out ranges that are too small for playback when handling gaps

  • Decoding error with assets containing incompatible codecs with the same mimetypes (e.g aac and ac-3)

### Changed

  • Updated analytics collector to v2.17.2

  • `startupBitrate` applied only on initial loading of main content

  • Exposing `isAd` and `representations` to the `onVideoAdaptation` and `onAudioAdaptation` callback to allow custom processing

## 8.40.0

Released: 2020-07-23

### Added

  • Replace all custom protocols with `skd` when `EXT-X-SESSION-KEY` is present in a hls master playlist and the ServiceWorker is used

  • `DRMConfig` api spec to add `preferredKeySystems`, and `PlayreadyDRMConfig` to add `utf8message` and `plainTextChallenge`

### Fixed

  • Joining a live stream near the end of a DASH period could lead to a `playbackfinished` event being fired

  • PlayReady DRM to DRM period switches sporadically failing in the Edge browser

  • `RestrictStrategy.shouldPlaySkippedAdBreaks` is not respected on seek with IMA module

  • Time shifting for DASH `SegmentTimeline` sometimes not accurate

  • Loading segment index rewind after ongoing segment download cancellation

  • DRM protected streams with init-data only in the manifest not playing back on webOS TVs

  • Main content not playing after adaptive streaming ad when `Bitmovin Advertising Module` is used

  • Main content playing while switching between midroll adBreaks for same position

## 8.39.1

Released: 2020-07-10

### Fixed

  • Video freezing or device slowing down due to lack of memory

## 8.39.0

Released: 2020-07-07

### Added

  • Support for VAST `Extensions` for `Bitmovin Advertising Module`

  • Support for `stpp.ttml.im1t` subtitle codec

  • Improved performance of manifest parsing

  • Decreased the time between processing of the manifest and start downloading of segments

### Changed

  • Updated bundled analytics-collector to `v2.15.2`

### Fixed

  • Failing to continuously rewrite `BaseMediaDecodeTime`s with active Tizen module, when only one stream had `BaseMediaDecodeTime`s exceeding 32 bits

  • Video freezing when player stalls and quality switch occurs

  • Several unhandled exceptions when quickly changing sources

  • Accessing undefined property on Tizen 2018 TV's when switching sources

  • Fix missing subtitles when `startOffset` is set

  • Initially requesting lowest quality variant playlist before target variant playlist for HLS

  • Missing audio on Tizen TVs when switching from a Period with `BaseMediaDecodeTime`s > 2\*\*32 to a Period with smaller `BaseMediaDecodeTime`s while the playback time stayed over 4.294.967

  • Inaccurate time shifting with multi-period DASH `SegmentTimeline` streams

  • Playback of self-init dash segments

## v8.38.0

Released: 2020-06-23

### Added

  • Possibility to switch between audio tracks with different MimeTypes and incompatible codecs

  • Missing documentation for `BufferMediaTypeConfig`

### Fixed

  • Handle `HDCP` error when having `immediateLicenseRequest` and preroll ad

  • Updating of licence storage data

## v8.37.1

Released: 2020-06-10

### Fixed

  • Playback freezing after mid-roll adbreak on Smart TVs

## v8.37.0

Released: 2020-06-09

### Fixed

  • CEA-608 Closed Caption cues sporadically missing for HLS streams with fMP4

  • Missing `seeked` event when seeking via the touch bar and a `startOffset` was present.

### Added

  • Dispatch a Warning event if the `setTimestampOffset` attempt fails on Tizen with DOM_EXCEPTION 11.

## v8.36.2

Released: 2020-06-05

### Fixed

  • Seeking across `BufferBlock` boundaries with not aligned start times

## v8.36.1

Released: 2020-05-29

### Fixed

  • Player freeze when seeking back to previous period

  • Restoring main content when VMAP adbreak contains an empty VAST

  • Uncaught error and playback stuck when seeking during the transition between clear and DRM-protected content

## v8.36.0

### Fixed

  • Ad player pause error on failing to load ad

  • Clear past cues from `TimeMetadataHandler`

  • Depleting audio buffer could freeze Tizen 2017 models

  • Custom Labeling functions breaking due to invalid string response

  • Content starts automatically when broken streaming ad creative URL is present in VAST response

### Added

  • Improved performance for `SegmentBase` streams on low-end device

  • `selectMediaFile` method on `AdPlayerDelegate` to select progressive ad media file based on main content download quality data

### Changed

  • Improved API description for `PlayerEvents` and `PlaybackConfig`

  • Quality selection of progressive ads considers content bitrate over player resolution when using the Bitmovin Advertising Module

## v8.35.0

Released: 2020-05-12

### Added

  • Parallel requesting of VMAP ad tags before the source has been loaded

### Fixed

  • Some HLS streams using a deprecated AVC codec format playing back without audio

  • Player failure due to `isLive of undefined` error

  • HLS live streams playback on Samsung Tizen 2016

  • VMAP Ad tracking requests not including cookies

  • Transition from ad break to content on XBox

  • WebVtt subtitle offset being applied for wrong container formats

### Changed

  • Seeking backwards within buffered range does not re-download segments

## v8.34.0

Released: 2020-04-28

### Fixed

  • Tracking VMAP `breakStart` and `breakEnd` events when containing VAST tag is empty

  • Inefficient handling of `EventStream` events on period switches

  • Smooth live streams stopping playback after some time

  • Segment downloads sometimes being cancelled too aggressively

  • CEA-608/708 captions stuck during and after SSAI in `HLS` stream when using `NativePlayer`

  • Playback stops when seeking back to 0

### Added

  • `ServiceWorker` public documentation

  • Immediately sending DRM license requests when initialization-data becomes available, if the `DRMConfig.immediateLicenseRequest` configuration option is set

  • Expose `ImaAdData.traffickingParameters` provided by the IMASDK

## v8.33.0

Released: 2020-04-14

### Fixed

  • Seeking on non-seekable `streaming` ads using the video element API directly

  • Pixelated picture when switching between unencrypted and encrypted segments

  • MPD update stops when both DASH and HLS source is provided in `SourceConfig`

  • Certain segments being disregarded after a discontinuity on HLS with MPEG-TS

  • Subtitles not showing in fullscreen on iOS/Safari

  • Wrong playback position when restoring main content after ad break

  • Multiple VMAP tracking URLs for same tracking event type

### Changed

  • Interface of `ImaAdBreak.trackingEvents` to support multiple URLs for each tracking event type

## 8.32.1

Released: 2020-04-08

### Added

  • Legacy SSL support on Samsung Tizen

## 8.32.0

Released: 2020-03-31

### Added

  • `AdTagConfig.discardAfterPlayback` to enable keeping the `AdBreaks` in schedule after playback. Default is `true`

  • DASH WebM Clearkey support

### Fixed

  • WebVTT cue times which use a `,` as a second - millisecond separator

  • TTML ignoring `<tt:elementName>` tags

  • A `MODULE_MISSING` warning when WebOS module not present

  • Documentation for `Event.AdStarted` and `Event.OverlayAdStarted`

  • `getViewMode` returns an incorrect value if the source is changed while in "fullscreen" mode

## 8.31.0

Released: 2020-03-17

### Added

  • `HttpRequestType.MEDIA_SEGMENTINDEX` used for DASH `SegmentBase`

  • Extended `PlayerAPI.getCurrentTime` to also provide a relative time for live streams

### Fixed

  • Seeking back when VOD stream ended

  • HLS adaptation logic would fail to switch to other renditions if playlist was missing resolution information

  • Cancelling an ongoing `XMLHttpRequest` on Tizen leading to a `DOMException`, making unloading unsuccessful

  • Adding DRM initial data while a DRM config setup is happening

  • Duplicate `PlaybackFinished` events after loading different technologies

  • Not respecting `startupBitrate` on content restoration for VOD

## 8.30.1

Released: 2020-03-09

### Fixed

  • Audio tracks being removed on HLS discontinuity

  • DRM-protected live streams getting stuck

  • Transition back to DRM-protected main content after ads fails

## 8.30.0

Released: 2020-03-03

### Added

  • WebVTT inline styles support

  • WebM Segment index parsing support

### Fixed

  • Failing to play back MPEG-TS streams when the Tizen module is active

  • Decoding error when playing back unencrypted content with a DRM config on LG 2017 devices

  • Rapid seeking could lead to the player loading segments at the wrong position with SegmentTimeline streams

  • DRM protected playback when DRMConfig is present in manifest but not in SourceConfig

  • Multiple encryption transitions for DASH assets on WebOS devices

  • VTT subtitle cues not updating when seeking back

## v8.29.1

Released: 2020-02-18

### Fixed

  • Player failing to instantiate when loaded on a page with script tags with no src attribute

  • The player could fire wrong `PeriodSwitch` / `PeriodSwitched` events when playing fMp4 HLS streams leading to removed audio languages

  • Improved `TweaksConfig.resume_live_content_at_previous_position_after_ad_break` accuracy on Safari Live HLS when `EXT-X-PROGRAM-DATE-TIME` is present

## 8.29.0

Released: 2020-02-17

### Added

  • Envivio module to handle shortcomings of the Envivio packager.

  • `onLog` callback to the `LogsConfig` that is invoked whenever a message is logged

### Fixed

  • Playback failure when joining a live stream at the very moment of its creation

  • `TweaksConfig.resume_live_content_at_previous_position_after_ad_break` not working properly for Live HLS in Safari

## 8.28.0

Released: 2020-01-30

### Added

  • Smarter adaptation set merging where only adaptation sets with the same language get merged

  • Reuse DRM session across client side ad transitions, no additional license requests when `MediaKeys` or `MsMediaKeys` is used

  • Cache HLS master playlist across ad breaks on live streams

  • Enhanced support for WebVTT subtitle styling and positioning

### Fixed

  • `PlayerEvent.SegmentPlayback` sometimes being fired at the wrong playback time when using HLS sources with multiple qualities

  • Wrong error message when `MEDIA_ERR_DECODE` is fired by video element

  • Potentially stalling for a long time when trying to play over a discontinuity when the playlist contains duplicate segment URLs in different discontinuity sequences

  • `Metadata` event not firing on each segment with ID3 HLS sources

  • Loading the same segment for two different qualities when playing at the DVR edge in a HLS live stream and the player stalls while segments drop out

  • Skipping the first segment in a playlist when playing at the DVR edge in a HLS live stream and a quality switch happens while segments drop out

  • Discontinuity adjustments are not made on Fragmented Subtitles

  • Potentially long stalling when switching qualities right at HLS discontinuity boundaries

  • Wrong timing of `SegmentPlayback` and `Metadata` events with `ServiceWorker`

  • Improved `segment_encryption_transition_handling` tweak to behave more seamless and add support for new Edge

  • Captions not being properly parsed after discontinuity transitions in HLS streams

## 8.27.0

Released: 2020-01-17

### Added

  • `TweaksConfig.resume_live_content_at_previous_position_after_ad_break`, which provides the ability to change at what playback position the content will resume after an ad break for live streams

### Fixed

  • Seeking back to the start of an ad shortly after the ad starts playback when using adaptive streaming ads

  • Missing DASH dependency for Smooth and XML dependency for DASH module

  • `EXT-X-START` sometimes not being respected when using HLS in Safari

  • CEA Closed Captions not being reactivated after transitioning back from a client-side ad

  • Pixelated content after ad break on HLS + PlayReady

  • Player stalling after postroll ad

## 8.26.0

Released: 2020-01-08

### Added

  • `PlayerType` enum to `PlayerExports`

### Fixed

  • XML parsing error log when parsing DASH sources on IE, Edge and Firefox

  • Playhead directly jumping to the end of the stream when seeking near it

  • Seek into unbuffered area would sometimes seek to the beginning of a segment before seeking to target time

  • Uncaught exception on second run when having persistent ads

  • Fragmented TTML Subtitles are being activated with wrong time information on TizenTV

## 8.25.1

Released: 2019-12-19

### Fixed

  • `DRM_INIT_DATA_MISSING` error being thrown in Chrome 79 for multi-period streams

## 8.25.0

Released: 2019-12-18

### Added

  • Support for forced subtitles on Safari native player

  • Manifest caching to speed up ad break to content transitions for VoD sources

  • `PlayerEvent.AdInteraction`, which is fired when the user interacts with the ad. For now this is only fired when a VPAID `AdInteraction` event occurs

### Fixed

  • TTML empty body and non-wrapped timed element parsing errors

  • Dash switching to secondary baseURL when segment request failed from primary baseURL

  • Player inclusion from other JS projects in a Node context

  • `SourceConfigOptions.startOffset` failing to be applied when using `TweaksConfig.native_hls_parsing`

  • Audio glitches with some MPEG-TS streams getting transmuxed to fMP4

  • Gracefully handle initial partial request to HLS master playlist by the video element when using `TweaksConfig.native_hls_parsing` with ServiceWorker

### Changed

  • Optional `LA_URL` value in `DrmConfig` for Widevine, Primetime and Fairplay

## 8.24.3

Released: 2019-12-17

### Fixed

  • DRM playback on WebOS

  • DRM playback on Tizen

  • Playback of fMP4 streams with `Movie Fragment` (`moof`) boxes containing only a single video sample and do not specify an explicit sample size

## 8.24.2

Released: 2019-12-13

### Fixed

  • CEA caption parsing from fMP4 with multiple `Movie Fragment` (`moof`) boxes within a segment

## 8.24.1

Released: 2019-12-12

### Fixed

  • metadata events not fired on Safari native player

  • Playback of DRM protected streams on the Tizen platform

  • Parsing of DRM `initData` containing more than one PSSH box (too many license requests)

## 8.24.0

Released: 2019-12-10

### Added

  • Support persistent licenses in Chrome, Firefox and Edge

### Fixed

  • `currentTime` shifted far off in Firefox due to `EditList` boxes of fMP4 not being removed

  • An initial internal seek to the start position could trigger an unintended `seeked` event when a second seek operation was started

  • Parsing urls with semicolons after the `pathname` in the Service Worker

  • Tizen preferring native player for hls over html5

  • Race condition where an unreachable segment was skipped instead of trying a backup stream

  • Incorrect value of `downloadTime` property on `PlayerEvent.DownloadFinished`

  • `PlaybackFinished` event being triggered prematurely

  • Pre-roll ads not being played after initial autoplay was blocked

  • VPAID clickthrough URLs not opening with the Bitmovin Advertising Module when an ad is clicked and the VPAID ad specifically requests the Player to handle the redirection (`playerHandles`)

  • Sambatech licensing and impression server URLs

  • `PlaybackFinished` event sometimes not triggered

  • Tizen2016 models would fail to start playback when a `skip` box was present in the init segment

  • Seeking during startup could lead to a missing `seeked` event

### Changed

  • Updated bundled analytics-collector to `v2.8.0`

## 8.23.1

Released: 2019-11-28

### Fixed

  • Wrong Sambatech licensing and impression server URLs

  • Fallback to bitmovin licensing server URL if a custom URL specified by `TweaksConfig.licenseServer` is not whitelisted

  • Tizen preferring native player for hls over html5

## 8.23.0

Released: 2019-11-25

### Added

  • Sambatech licensing server URL in `availableLicenseServers` and `availableImpressionServers`

  • `frameRate` property to `VideoQuality` except for Safari use-case

### Fixed

  • `PlayerManifestAPI` not being documented on `PlayerAPI.manifest`

  • Graceful handling of faulty `SampleEncryptionBox` in fMP4 streams

  • Player stalling on period transitions with DASH live streams when new `Period`s are added to the manifest

  • Chromecast `ready` event isn't fired

  • Sometimes seeking to the beginning of a segment rather than the correct time

  • Functionality to build custom players

  • Changes of the audio track ID across HLS discontinuities in MPEG-TS streams cause wrong timestamps

## 8.22.0

Released: 2019-11-11

### Added

  • Better mapping of `MediaError` from the `HTMLMediaElement` to `PlayerError`

  • Forced subtitles for HLS

### Fixed

  • Inaccurate seeking when there are several buffered ranges

  • Playback of HLS streams with multiple audio renditions having identical `LANGUAGE` attributes within the same rendition group

  • Period switching between encrypted and non-encrypted content on WebOS devices

  • Playback of HLS live streams in IE11

  • A/V running out of sync due to wrongly inserted silence for duration mismatches between audio, video and manifest

  • Subtitles not being displayed on LG TV

  • Inaccurate warning of 'A required player module is missing: Advertising' when module is actually not required

  • Fix EMSG boxes parsing for MicrosoftEdge/IE

  • Console error when calling `player.unload` during playback of TrueX VPAID ad

  • Chromecast was not usable anymore after playback finished

  • Absence of style module causing playback issues

## 8.21.0

Released: 2019-11-06

### Added

  • Possibility to dynamically define forced subtitles by `PlaybackConfig.isForcedSubtitle`

### Fixed

  • Treating subtitles with role `alternate` as `forced_subtitles`

### Changed

  • Updated bundled analytics-collector to `v2.7.1`

### Removed

  • `PlaybackConfig.forcedSubtitles` which got replaced by `PlaybackConfig.isForcedSubtitle`

## 8.20.0

Released: 2019-10-28

### Added

  • Default logic for DASH forced subtitles

  • Support for live streams transitioning into a VoD during playback

  • Support for VAST adaptive streaming ads in the Bitmovin Advertising Module (DASH and HLS)

### Fixed

  • Console error when using `subtitle-cea608` module without `container-mp4`

  • Error code when HDCP playback is restricted by DRM

  • Playback of AES encrypted HLS streams failing on WebOS devices

  • Audio track switching before playback has started

  • Player being stuck at lowest resolution when playing back a VR stream with `limitToPlayerSize` set

  • Server time synchronization

  • DefaultContentLoader doesn't load infinitely on network outage

  • Stop manifest requests on unload

  • Player falling out of DVR window on streams with smaller DVR window than `targetBufferLevel`

  • Infinite loop when parsing DASH-IF IOP thumbnails for live streams

  • Safari throwing DRM_KEY_ERROR with FairPlay protected stream before requesting license

## 8.19.3

Released: 2019-10-25

### Fixed

  • Fragmented subtitles not shown on Chromecast

  • Player may get stuck upon period switch if video qualities differ between periods and `AdaptationConfig.limitToPlayerSize` is used

  • Player getting stuck on DASH SegmentBase streams with different segment lengths on different qualities

## 8.19.2

Released: 2019-10-24

### Fixed

  • Player getting stuck at HLS discontinuity transitions

  • Player unable to start playback with multiple HLS discontinuities and without `EXT-X-PROGRAM-DATE-TIME` tags

  • Player failed to switch quality back to a previous one after it has encountered a HLS discontinuity transition while playing a different quality

## 8.19.1

Released: 2019-10-16

### Fixed

  • Missing metadata events on the first HLS discontinuity transition

  • `hls` fail to load variations raises multiple errors in console

## 8.19.0

Released: 2019-10-11

### Added

  • `PlayerEvent.DurationChanged`, which is fired when the duration of a source changes

  • `player.subtitles.cueEnter` and `player.subtitles.cueExit` to fire custom subtitle cue events

  • Partial support of AdaptationSet/ContentProtection DRMs in DASH manifests

### Changed

  • `player.subtitles.add` may now be called without an URL

### Fixed

  • Handle parsing of named colors in TTML subtitles

  • `getCurrentTime` returning 0 while ad is playing

  • Subtitles not showing after period switch

  • DASH fragmented TTML subtitles not showing on IE11

  • Pixelation when switching qualities due to segment order getting mixed up

  • `PROGRAM-DATE-TIME`-based timestamp mapping for HLS is applied wrongly if awaiting one or more playlist updates before starting playback

  • Segments being assigned wrong `playbackTime` due to a rare race condition with live manifest updates

  • Pixelation due to segments being dropped from `Renderer`'s segment queue before actually reaching the `MediaSource`

  • Flickering of content

  • Starting a seek operation right before a gap in the content could be overruled by skipping the gap

  • Endless buffering when the current period drops out of the manifest

  • HLS variant playlists still being requested after the player was unloaded

  • An error being logged when attempting seek in a SegmentList live stream before playback has started

## 8.18.2

Released: 2019-10-08

### Fixed

  • Dependency from core module to analytics

  • Missing metadata events after HLS discontinuity changes

## 8.18.1

Released: 2019-09-30

### Fixed

  • Transition from `AES-128`-encrypted segments to non-encrypted segments in HLS

## 8.18.0

Released: 2019-09-30

### Added

  • DASH-IF IOP thumbnail support - WebVTT thumbnail tracks in `SourceConfig.thumbnailTrack` have priority over these thumbnails

  • Support for multi-region TTML subtitles

### Changed

  • Removed Tweak to disable period switching on subtitles.

### Fixed

  • New loaded sources on Chromecast don't follow autoplay configuration

  • Uncaught error when disposing a player that uses the Tizen module

  • Endless buffering of segments when requested from invalid/non-existing domains

  • `DRM_KEY_ERROR` being triggered for some Fairplay streams due to duplicate `needkey` events

  • Consider merging `Representation.SegmentTemplate` with `AdaptationSet.SegmentTemplate` while selecting `MPDHandler`

  • Fix uncaught exception when merging `AdaptationSet`s for DRM streams with multiple video `AdaptationSet`s and differing DRM decryption keys

## 8.17.1

Released: 2019-09-24

### Fixed

  • CEA-608 captions for HLS fMP4 streams

  • Buffered CEA-608 captions discarded in case of an in-buffer `seek` or `timeShift`

## 8.17.0

Released: 2019-09-16

### Added

  • Missing typings for Analytics metadata configuration in `PlayerConfig` and `SourceConfig`.

### Changed

  • Updated bundled analytics-collector to `v2.5.4`

### Fixed

  • HLS live streams with one segment being looped at the start/end of the playlist

  • Segments requested from incorrect URL when a manifest containing a redirect is loaded

  • VPAID ad tag that lead to faulty IMA SDK behaviour making the Player buffer forever

  • Skip button not being shown for some linear VPAID ad tags

  • Not being able to set a higher target buffer level than the default

  • Video and audio segments getting downloaded out of sync for HLS VOD with missing segments

  • Improve ServiceWorker memory usage

  • Playback getting stuck when doing a `timeShift` exactly to boundaries of DASH Periods and HLS discontinuities

  • Seek for HLS live streams (`TweaksConfig.enable_seek_for_live` enabled)

## v8.16.2

Released: 2019-09-09

### Fixed

  • DASH fragmented TTML subtitles didn't show from the very beginning.

## v8.16.1

Released: 2019-09-04

### Fixed

  • Redux warning of not being in production mode

## 8.16.0

Released: 2019-09-02

### Fixed

  • Transition from VPAID pre-roll ads to main content containing segments addressed via byte ranges

  • Occasional stalling of SegmentTimeline streams with a short DVR window

  • Metadata events being kept across loads when service worker is active

  • Loading HLS master manifest twice in `NativePlayer` when `native_hls_parsing` tweak is enabled

  • `PlayerAPI.timeShift` not being usable when `TweaksConfig.enable_seek_for_live` is set for live streams when using the `NativePlayer`

### Changed

  • Updated bundled analytics-collector to `v2.5.2`

## 8.15.0

Released: 2019-08-18

### Fixed

  • `PlayerAPI.load` or `PlayerAPI.unload` not cancelling an ongoing load call that is timing out

  • Subtitles not shown when casting from mobile device

  • Initial seeking/timeshifting with HLS streams that contain duplicate segment URIs

  • Content sometimes not being restored correctly after an ad when using HLS streams with discontinuities

## 8.14.2

Released: 2019-08-07

### Fixed

  • `getSeekableRange` and `getCurrentTime` returned inconsistent values after seeking with `enable_seek_for_live`

  • Loading new source on a player that has already loaded a DRM source fails in Firefox 68 and newer

### Changed

  • Updated bundled analytics-collector to `v2.5.0`

## 8.14.1

Released: 2019-08-06

### Fixed

  • Failing npm build

## 8.14.0

Released: 2019-08-05

### Added

  • Improved period switching performance

  • `SegmentPlayback.presentationTimestamp`

  • Replace `EXT-X-KEY` `URI`s protocol with `skd://` when ServiceWorker and Fairply are in use.

  • `ImaAdvertisingConfig.beforeInitialization`, `ImaAdvertisingConfig.onAdContainerAvailable` and `ImaAdvertisingConfig.onAdsManagerAvailable`. These callbacks can be used to access properties of the `Ima` sdk directly from the config

  • Support `Metadata` and `MetadataParsed` events for Custom HLS tags

### Fixed

  • `getSeekableRange` returning 0 on a live stream before playback is started

  • HLS streams with multiple audio tracks not starting on specific default track settings

  • Inaccurate timeshifting on live streams with multiple `Period`s / `Discontinuities`

  • Period switching on Tizen with active tizen module

### Changed

  • `PlayerAdvertisingAPI.list` with the IMA Advertising Module will now return the list of scheduled ad breaks sorted by the `preloadTime`, same as in the Bitmovin Advertising Module

  • `PlayerAPI.destroy` will now first fire `PlayerEvent.Destroy` before disallowing API access and destroying the Player

## 8.13.1

Released: 2019-07-30

### Fixed

  • Fragmented subtitles not being displayed after seek on `fmp4` streams

## 8.13.0

Released: 2019-07-22

### Added

  • Speed up main content restoration after ad breaks by prefetching segments during ad playback

  • MediaRole on `SubtitleTrack`s exposed by the Subtitle API

  • `Promise.finally` polyfill in the polyfills module

  • `TweaksConfig.prevent_video_element_preloading` to prevent native player from preloading data

  • Tweak to disable period switching on subtitles. In case there are discontinuities in the video and audio playlists, but not in the subtitle playlist, one has to enable this tweak to make the subtitles show up on period switching

  • `Metadata` and `MetadataParsed` events for `SCTE35`, `DATERANGE` and custom tags without additional HTTP requests (using a `ServiceWorker`).

### Fixed

  • Initial period not being set on live streams

  • Audio and video segments not being downloaded in sync with each other

  • Player getting stuck when loading an IMA playlist that resolves in an empty VAST tag

  • Subtitles are not shown on cast devices

  • Typo in tweak `live_segment_list_start_index_offset`

  • Cues with the same timestamps and same content are now detected as duplicates

  • Fragmented subtitles with fMp4 HLS streams

  • Player getting stuck on postroll ad during hls stream and doesn't display replay button

  • Unreasonably heavy quality drops after timeshifts in live streams<