## 1.71.0

Released: 2023-07-10

### Fixed

  • Incorrect Y value of thumbnails returned by `getThumbnail`




## 1.70.0

Released: 2023-04-14

### Added

  • Firing ad error if ad manifest requests fail or time out

### Fixed

  • Playback sometimes starting with main content instead of pre-roll in case of VMAP ads

  • `getThumbnail` only returns thumbnails discovered in the last segment




## 1.69.0

Released: 2022-03-15

### Fixed

  • Default UI elements being shown even though `ui` is set to `false` in player configuration




## 1.68.0

Released: 2022-02-23

### Added

  • Support for IMA DAI




## 1.67.0

Released: 2022-01-13

### Added

  • Tweak to `enableThumbnailTilesDuringLive`




## 1.66.1

Released: 2022-10-18

### Fixed

  • `BMP_scheduledTime` calculation for `emsg` metadata




## 1.66.0

Released: 2022-10-12

### Fixed

  • Execution timeout when playing streams with server side ad insertion

### Deprecated

  • `useTimedMetadata2` tweak as `timedMetaData2` is now the default




## 1.65.0

Released: 2022-08-31

### Fixed

  • Value provided by `getMaxTimeShift` API not updating for live streams with changing DVR window length




## 1.64.0

Released: 2022-07-19

### Fixed

  • Crash when using `useTimedMetadata2` tweak and encountering `EXT-X-DATERANGE` HLS tags containing commas in tag attribute values

  • Numeric attribute values of `EXT-X-DATERANGE` HLS tags wrongfully exposed as string

  • Metadata events for `EXT-X-DATERANGE` HLS tags being fired for date ranges that lie earlier than the starting playback time on live streams




## 1.63.1

Released: 2022-06-28

### Fixed

  • Multiple VMAP ad breaks not being played




## 1.63.0

Released: 2022-06-21

### Added

  • Option to automatically detect live or vod content by setting `source.assetType` to `AUTO` (HLS streams only)

### Fixed

  • `enableInPodStitching` wouldn't function after code obfuscation

  • All EXT-X-DATERANGE events being fired as soon as they are parsed instead of their approriate times in case of VoD




## 1.62.1

Released: 2022-05-25

### Fixed

  • `source.adaptation` as well as `adaptiveMinStartBitrate` and `adaptiveMaxStartBitrate` not being optional




## 1.62.0

Released: 2022-05-24

### Added

  • `adaptiveMinStartBitrate` and `adaptiveMaxStartBitrate` to the `source.adaptation` configuration to specify the minimum and maximum startup bitrate respectively

### Fixed

  • EXT-X-DATERANGE events are not being fired again after seeking behind and crossing over the timestamp

  • EXT-X-DATERANGE events are being surfaced at the wrong time




## 1.61.0

Released: 2022-04-26

### Added

  • `enableInPodStitching` to advertising config to enable stitching together of multiple ads within an ad break




## 1.60.0

Released: 2022-03-15

### Fixed

  • Crash when trying to schedule ads with an invalid ad url




## 1.59.0

Released: 2022-03-01

### Changed

  • Updated Demand API to follow specification version `7.8`

### Fixed

  • Crash when calling `timeshift` before player state was set to `playing`




## 1.58.0

Released: 2022-02-02

### Added

  • Demand API `demandApiFetchAds` API call to retrieve and parse the list of ads to be rendered. To access and use the Demand API check Roku's [documentation](🔗) about it since one needs to get into contact and work with the Roku Partner Program.

  • `demandApiFetchAdsResult` to receive the result of the `demandApiFetchAds` API call




## 1.57.0

Released: 2022-01-17

### Added

  • `useTimedMetadata2` tweak to enable the surfacing of additional metadata

  • Support for Demand API. To access and use the Demand API check Rokus [documentation](🔗) about it since one needs to get into contact and work with the Roku Partner Program.

### Fixed

  • Crash when receiving SCTE-35 metadata




## 1.56.0

Released: 2021-12-21

### Added

  • More detailed descriptions of events




## 1.55.0

Released: 2021-12-07

### Added

  • Additional troubleshooting information to error codes

### Fixed

  • `adError` event not properly being fired




## 1.54.0

Released: 2021-11-23

### Added

  • Timestamps to all events




## 1.53.0

Released: 2021-11-09

### Added

  • `SubtitleAdded` event

  • `SubtitleChanged` event




## 1.52.0

Released: 2021-10-27

### Fixed

  • Crash when using `getSubtitle`

### Added

  • Rokus native error fields to the players error events `data` field.

  • Timestamp to `error` event




## 1.51.0

Released: 2021-09-28

### Added

  • Documentation details for `metadata` support

  • Add additional documentation about `metadata`

  • Support for `Ext-X-Daterange` metadata; Needs to be explicitly enabled via `nativeHlsParsingEnabled` flag

  • "Using the API" guide

### Fixed

  • The use of wrong property name for `advertising` configuration in documentation

  • Crash when `autoplay` is not present in the player `config`




## 1.50.0

Released: 2021-08-31

### Added

  • `enableAdvertisingDebugOutput` to advertising config within the player config to enable RAF debug output




## 1.49.0

Released: 2021-07-20

### Fixed

  • Impression sent prior to preroll `adBreak` start in case when `autoplay` is set to false




## 1.48.0

Released: 2021-07-08

### Fixed

  • Calling `load` from `error` event callback does not result in player loading the new `source`

  • Postroll ads playing as preroll ads in case when `load` is called after `error` event

  • Wrong event ordering when `load` is called after `error` event

  • `ad_getActiveAdBreak` API always returns `invalid`




## 1.47.0

Released: 2021-06-08

### Fixed

  • Live streams do not start at the live edge when no `startOffset` was set




## 1.46.0

Released: 2021-05-11

### Added

  • Documentation for customization of `progressBarBackground` and `progressBarIndicator` layers of `adBufferingScreen`

### Changed

  • Stop emitting unintentionally triggered `playerState` event with `stopped` value right before an Ad




## 1.45.0

Released: 2021-04-27

### Added

  • Support for customization of `title`, `description` and `posterImage` of `adBufferingScreen` using `source.title`, `source.description` and `source.poster` properties




## 1.44.0

Released: 2021-04-13

### Added

  • Support for customization of `description` of `adBufferingScreen`

  • Support for customization of `background` of `adBufferingScreen`

### Fixed

  • Crash when ad tag url is `invalid` or unreachable

  • Crash when `CUE` tag of `SCTE35` event contains `ID` character set




## 1.43.0

Released: 2021-03-30

### Added

  • `disableImageMediaPlaylistParsing` tweak to disable `ImageMediaPlaylist` parsing

  • Support for customization of `bufferingMessage` and `progressBarMessage` of `adBufferingScreen`

### Fixed

  • Pre-roll ads would start playing immediately even though `autoplay` is set to `false`

  • Support for customization of `posterImage` and `title` of `adBufferingScreen`

### Fixed

  • Crash when `ImageMediaPlaylist` is used with single thumbnail images




## 1.42.0

Released: 2021-03-16

### Added

  • Support for general audience measurements using `metadata` property of `source` config




## 1.41.2

Released: 2021-02-26

### Fixed

  • SCTE-35 metadata events not being surfaced if parameters are present in playlist variant url




## 1.41.1

Released: 2021-02-24

### Fixed

  • Crash if `nativeHlsParsingEnabled` is set to `true` and relative url is used for segment url in playlist variant




## 1.41.0

Released: 2021-02-16

### Added

  • `isAd` API call to detect if an ad is currently playing

  • Fire `TimeChanged` events during ad playback




## 1.40.0

Released: 2021-02-02

### Added

  • `timeChanged` event

  • `getCurrentTime` API call

### Fixed

  • `adQuartile` event not being fired

### Deprecated

  • `currentTime` event




## 1.39.1

Released: 2021-01-26

### Fixed

  • Crash when calling `setHttpHeaders` on the player




## 1.39.0

Released: 2021-01-19

### Added

  • Mapping of ROKU `Pause` ad event to `playerState` field

  • Mapping of ROKU `Resume` ad event to `playerState` field

  • Support for `nativeHlsParsingEnabled` flag as part of `tweaks` configuration which is now available in player configuration

  • `EXT-X-SCTE35` Tags Support. Need to be explicitly enabled via `nativeHlsParsingEnabled` flag




## 1.38.0

Released: 2020-12-8

### Fixed

  • Start time of pre-roll ads being negatively impacted by the number of ads scheduled.




## 1.37.0

Released: 2020-11-24

### Added

  • `impression` event which is emitted when the impression call was sent successfully

  • `licenseValidated` which is fired when a licensing call succeeded

  • Support for `image-media-playlist` through our `getThumbnail` API. This requires ROKU OS version `9.4` or later.




## 1.36.1

Released: 2020-10-28

### Fixed

  • Crash on startup due to misconfigured `BMPCaptionService`




## 1.36.0

Released: 2020-10-27

### Fixed

  • Calling `play` after `preload` does not result in video being played




## 1.35.0

Released: 2020-10-13

### Fixed

  • Calling `play` while already playing caused the stream to restart




## 1.34.0

Released: 2020-09-29

### Added

  • Support for `Set-Cookie` headers

### Fixed

  • Player crashing on a license error in case the `destroy` method was overridden

  • adBreaks not cleared after source has been unloaded




## 1.33.0

Released: 2020-09-15

### Fixed

  • Impression only sent for first item in the `playlist`




## 1.32.0

Released: 2020-09-01

### Added

  • Possibility to add HTTP headers to DRM requests via `source.drm.headers`




## 1.31.0

Released: 2020-08-17

### Added

  • Missing documentation for `adConfig` object

  • Missing documentation for `assetType`




## 1.30.0

Released: 2020-07-21

### Fixed

  • Missing Bitmovin Player ROKU SDK version in documentation




## 1.29.1

Released: 2020-07-07

### Fixed

  • Crash during playback caused by incorrect data for native video player `position` field




## 1.29.0

Released: 2020-06-23

  • Internal improvements




## 1.28.0

Released: 2020-06-09

### Fixed

  • Crash after unexpected error code is received by `BitmovinPlayer`




## 1.27.1

Released: 2020-05-26

### Fixed

  • Wrong types in documentation for `options` and `startOffset`




## 1.27.0

Released: 2020-05-12

  • Internal improvements




## 1.26.1

Released: 2020-05-07

### Fixed

  • Player license verification failing even though a valid license key is used




## 1.26.0

Released: 2020-04-28

### Fixed

  • No ads due to ad handler being set up before task was run

### Added

  • `audioDownloadQualityChanged` event which is fired once quality of downloaded audio segment is changed

  • `videoDownloadQualityChanged` event which is fired once quality of downloaded video segment is changed




## 1.25.0

Released: 2020-04-14

### Added

  • `setCaptionMode` API call

  • `destroy` API call as well as `destroy` event that signals that the player is destroyed

### Deprecated

  • `captionMode` API call

### Fixed

  • `getThumbnail` API call returning outdated thumbnails when loading a new source

  • Warning for setting a value to non-existent field




## 1.24.0

Released: 2020-03-30

### Added

  • Support for Roku Advertising Framework

### Interal

  • Replaced `onFocusedChanged` workaround by using `activeAdBreak` and `adBreakFinished` events

  • Added `adQuartile` event

  • Added `adSkipped` event

  • Added `adStarted` event

  • Added `adFinished` event

  • Added `adError` event

  • Added `ad_getActiveAdBreak` API call

  • Added `adInteraction` event

  • Added `adBreakFinished` and `adBreakStarted` events

  • Added `ad_discardAdBreak` API call

  • Added `ad_list` API call

  • Added support for vmap ads

  • Support for vast ads in form of an advertising config as part of the source config

  • Internal RAF integration in preparation to implement ad support

  • Fixed `BitmovinPlayerTask` not ready on `init`

  • Added `ad_schedule` API call

  • Refactor enums to comply with [naming convention](🔗)




## 1.23.0

Released: 2020-03-16

### Changed

  • Internal improvements




## 1.22.0

Released: 2020-03-02

### Fixed

  • Incomplete thumbnail URL returned by `getThumbnail`

  • `getThumbnail` adds base URL to returned image URL even when absolute URLs are present in the VTT file




## 1.21.0

Released: 2020-02-17

### Added

  • `GET_VERSION` to BitmovinFunctions to expose the player version

  • Allow setting Bitmovin Player license key in the player configuration as `config.key`. If no key is present in the player configuration, the key is read from the channel manifest




## 1.20.0

Released: 2020-02-03

### Added

  • `Errors` section to documentation

### Fixed

  • Documentation can now differentiate between methods and properties with the same name




## 1.19.0

Released: 2020-01-20

### Added

  • Support for all progressive streaming formats supported by Roku devices

### Fixed

  • `seek` no longer works in case of a live stream.




## 1.18.0

Released: 2019-12-19

### Added

  • `startOffset` and `startOffsetTimelineReference` options in the source config to allow setting the playback start position for the stream




## 1.17.0

Released: 2019-12-09

### Changed

  • Internal changes and perfromance improvements




## 1.16.2

Released: 2019-10-28

### Fixed

  • Video playback with source containing `ThumbnailTrack` in WebVTT format crashes player after second playback




## 1.16.1

Released: 2019-10-14

### Fixed

  • Error introduced with code obfuscation




## 1.16.0

Released: 2019-10-14

### Fixed

  • Error view is not removed when an error occurred and a new source is loaded




## 1.15.0

Released: 2019-09-30

### Added

  • `instantReplay` API call to allow instant replay of the last couple of seconds of content

  • `audioChanged` field which is set when the currently selected audio track has changed

  • Support for `resume` when player state is paused and `play` API is called

  • `muted` and `unmuted` events

  • `downloadFinished` event




## 1.14.0

Released: 2019-09-16

### Added

  • `getThumbnail` API method to get the `Thumbnail` object for a specific playback time




## 1.13.0

Released: 2019-08-19

### Fixed

  • Added default params to all public method signatures




## 1.12.1

Released: 2019-08-07

### Fixed

  • Error in obfuscation crashes player




## 1.12.0

Released: 2019-08-05

### Added

  • Support for playlists




## 1.11.0

Released: 2019-07-22

### Added

  • Support for `ContentNode`s as an alternative to the player source configuration. `ContentNode`s can now be set as the `source` in a player configuration and can be passed to the `load` API call

### Fixed

  • Player resolution is now based on display screen instead of always being full hd

  • Changing subtitle tracks no longer cause the player to stall and buffer




## 1.10.0

Released: 2019-07-08

### Added

  • API functions `setSubtitleStyles` and `getSubtitleStyles` to allow styling of subtitles

### Fixed

  • Player no longer always claims the focus

  • Errors in an obfuscated player would cause a crash




## 1.9.0

Released: 2019-06-25

### Changed

  • Displaying of errors. Error messages are shown along with the error code and name




## 1.8.0

Released: 2019-06-11

### Fixed

  • `error` event is now fired before `unload` event

  • Closed Caption mode can now be changed before playback has started




## 1.7.0

Released: 2019-05-27

### Added

  • Custom HTTP header support




## 1.6.0

Released: 2019-05-13

### Added

  • `getDuration` API method to get the duration from the video node




## 1.5.0

Released: 2019-04-30

### Added

  • BIF thumbnail track support

### Fixed

  • `timeShifted` event is now fired after playback resumes instead of when the timeshift operation begins

  • Using the remote control in a live stream now fires `timeShift` events instead of `seek` events




## 1.4.0

Released: 2019-04-17

### Added

  • `getConfig` API call which returns the current config of the player

  • `metadata` field which contains the most recent received metadata from the video stream

  • Support for timed EMSG metadata

### Fixed

  • Remote control cannot start initial playback




## 1.3.0

Released: 2019-04-03

### Added

  • Observable fields `timeShift` and `timeShifted` in addition to API functions `timeShift`, `getTimeShift`, `getMaxTimeShift` to manipulate playback in live content.

  • Field `assetType` in the source config to signal whether the content is live

  • `sourceLoaded` and `sourceUnloaded` events

  • `play` event which notifies about the intention to start/resume playback.

  • `isLive` API call




## 1.2.0

Released: 2019-03-21

### Added

  • Field `currentTime` to get the current playback position of the player in seconds

  • Allow the default UI to be disabled by adding 'ui: false' to the config file

  • Fire `seek` and `seeked` events when fast forward or rewind is done using the remote control




## 1.1.0

Released: 2019-02-05

### Added

  • Allow to set custom data in the DRM config for PlayReady license requests

  • API functions `getAudio` and `setAudio` to get/set the currently selected audio track <https://github.com/bitmovin/bitdash-roku-sdk/issues/118>

  • Field `availableAudio` to get a list of available audio tracks <https://github.com/bitmovin/bitdash-roku-sdk/issues/119>

  • API functions `getSubtitle` and `setSubtitle` to get/set the currently selected subtitle track <https://github.com/bitmovin/bitdash-roku-sdk/issues/117>

### Changed

  • Renamed property `url` of subtitle track object to `id` <https://github.com/bitmovin/bitdash-roku-sdk/issues/120>




## 1.0.0

Released: 2018-10-10

### Added

  • Initial Changelog




## 1.0.0-b.2

Released: 2018-09-07

### Added

  • Introduced new error codes <https://github.com/bitmovin/bitdash-roku-sdk/issues/99>

### Fixed

  • Stability fixes and improvements




## 1.0.0-b.1

Released: 2018-08-09

### Added

  • Supported Streaming formats: MPEG-DASH, HLS, Smooth Streaming, Progressive

  • Supported Content protection schemes: MPEG-DASH/PlayReady, Smooth Streaming/PlayReady, HLS/AES-128

  • Player API calls: `setup`, `load`, `unload`, `preload`, `play`, `pause`, `seek`, `mute`, `unmute`, `captionMode`, `isMuted`, `isPlaying`, `isPaused`, `isStalled`, `availableSubtitles`

  • Observable fields: `playerState`, `error`, `warning`, `seek`, `seeked`

  • Player states (`playerState` field): `setup`, `ready`, `playing`, `paused`, `finished`, `stalling`, `error`

  • Player licensing integration