@castlabs/prestoplay 1.1.1-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +768 -0
  2. package/README.md +52 -0
  3. package/cjs/cl.adobe.js +8 -0
  4. package/cjs/cl.airplay.js +8 -0
  5. package/cjs/cl.broadpeak.js +11 -0
  6. package/cjs/cl.cast.js +117 -0
  7. package/cjs/cl.conviva.js +38 -0
  8. package/cjs/cl.core.js +565 -0
  9. package/cjs/cl.crypto.js +15 -0
  10. package/cjs/cl.dash.js +78 -0
  11. package/cjs/cl.externs.js +4112 -0
  12. package/cjs/cl.freewheel.js +29 -0
  13. package/cjs/cl.hls.js +72 -0
  14. package/cjs/cl.hlssmpte.js +11 -0
  15. package/cjs/cl.htmlcue.js +35 -0
  16. package/cjs/cl.ima.js +29 -0
  17. package/cjs/cl.mse.js +279 -0
  18. package/cjs/cl.muxdata.js +19 -0
  19. package/cjs/cl.onboard.js +8 -0
  20. package/cjs/cl.persistent.js +19 -0
  21. package/cjs/cl.playlist.js +11 -0
  22. package/cjs/cl.simid.js +21 -0
  23. package/cjs/cl.smooth.js +76 -0
  24. package/cjs/cl.thumbnails.js +29 -0
  25. package/cjs/cl.tizen.js +76 -0
  26. package/cjs/cl.ttml.js +33 -0
  27. package/cjs/cl.verimatrix.js +10 -0
  28. package/cjs/cl.vimond.js +18 -0
  29. package/cjs/cl.vr.js +25 -0
  30. package/cjs/cl.vtt.js +19 -0
  31. package/cjs/cl.youbora.js +25 -0
  32. package/cjs/polyfill.min.js +47 -0
  33. package/cl.adobe.js +3 -0
  34. package/cl.airplay.js +3 -0
  35. package/cl.broadpeak.js +5 -0
  36. package/cl.cast.js +88 -0
  37. package/cl.conviva.js +27 -0
  38. package/cl.core.js +466 -0
  39. package/cl.crypto.js +9 -0
  40. package/cl.dash.js +68 -0
  41. package/cl.externs.js +4028 -0
  42. package/cl.freewheel.js +19 -0
  43. package/cl.hls.js +69 -0
  44. package/cl.hlssmpte.js +5 -0
  45. package/cl.htmlcue.js +26 -0
  46. package/cl.ima.js +17 -0
  47. package/cl.mse.js +241 -0
  48. package/cl.muxdata.js +12 -0
  49. package/cl.onboard.js +4 -0
  50. package/cl.persistent.js +11 -0
  51. package/cl.playlist.js +5 -0
  52. package/cl.simid.js +13 -0
  53. package/cl.smooth.js +59 -0
  54. package/cl.thumbnails.js +17 -0
  55. package/cl.tizen.js +57 -0
  56. package/cl.ttml.js +22 -0
  57. package/cl.verimatrix.js +4 -0
  58. package/cl.vimond.js +8 -0
  59. package/cl.vr.js +15 -0
  60. package/cl.vtt.js +12 -0
  61. package/cl.youbora.js +15 -0
  62. package/clpp.styles.css +166 -0
  63. package/package.json +63 -0
  64. package/typings.d.ts +8255 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,768 @@
1
+ # 6.11.1
2
+
3
+ ## New Features
4
+
5
+ * Spatial audio detection and configuration:
6
+ * Added detection of E-AC3 JOC audio content using DD+JOC signaling.
7
+ * Added `clpp.Track.spatialAudio` value to indicate spatial audio content.
8
+ * Added `config.preferSpatialAudio` to support manual prioritization of spatial audio.
9
+
10
+ ## Changes
11
+
12
+ * Fix support for CR and CRLF line endings on Safari related to configs
13
+ `safari.enableHlsVideoTrackInfo` and `safari.enableMetadata`.
14
+ * Fixed position attribute of the `clpp-fill` css class and made it `absolute`
15
+ * Fixed issue with typescript types where namespace functions were not exposed
16
+
17
+ # 6.11.0
18
+
19
+ ## New Features
20
+
21
+ * Add the `clpp.install` API which is now the official API for installing
22
+ components and adding player capabilities. Components can be uninstalled
23
+ via `clpp.uninstall`.
24
+ * Add support for TTMLv2 `tts:textShadow` style attribute.
25
+
26
+ ## Changes
27
+
28
+ * Fix issue when parsing PlayReady PSSH data.
29
+ * Make Widevine robustness configurable on Android Chrome.
30
+ * Fixed issue when parsing directly embedded PlayReady Header Objects.
31
+ * Fix support for multiple parallel player instances.
32
+ * Stop using the DASH attribute `minBufferTime` to decide the minimum buffer
33
+ size. Note that the existing config `streaming.rebufferingGoal` should be
34
+ used for that purpose instead.
35
+
36
+ ## Deprecations
37
+
38
+ * The `clpp.Player.use` and `clpp.Player.remove` API is now deprecated and will
39
+ be removed in version 7.0.0, use `clpp.install` and `clpp.uninstall` instead.
40
+ * The third parameter of `clpp.persistent.fetchLicense` is now deprecated and
41
+ will be removed in version 7.0.0, use `clpp.install` instead.
42
+
43
+ # 6.10.0
44
+
45
+ ## New Features
46
+
47
+ * Add Tracks original language value from manifest
48
+ * Extend `clpp.Track` with `clpp.Track.originalLanguage` value which contains the original language string as it is present in manifest.
49
+ * For details refer to [Track](https://demo.castlabs.com/#/docs?q=clpp.Track).
50
+ * Add support for the `EXT-X-PROGRAM-DATE-TIME` tag in live HLS to the MSE
51
+ player. If the tag is present its value is now accessible via
52
+ `player.getTimelineOffset().seekRangeStartDateTime`. The timeline offset can
53
+ be used to display wall-clock time in the UI like so:
54
+ ```js
55
+ const offset = player.getTimelineOffset();
56
+ if (offset) {
57
+ // Get the wall-clock values for UI
58
+ const position = player.getPosition() + offset.offsetDateTime;
59
+ const start = player.getSeekRange().start + offset.offsetDateTime;
60
+ const end = player.getSeekRange().end + offset.offsetDateTime;
61
+ }
62
+ ```
63
+ * Add support for fetching decryption keys from DRMtoday for
64
+ clear-key-encrypted HLS content (`METHOD=AES-128`).
65
+ * Add support for Widevine EME configuration options
66
+ * `persistentState` can be configured via the boolean option
67
+ `drm.customData.widevinePersistentStateRequired`
68
+ * `distinctiveIdentifier` can be configured via the boolean option
69
+ `drm.customData.widevineDistinctiveIdentifierRequired`
70
+
71
+
72
+ ## Changes
73
+
74
+ * Added `PlayerSurface` option to control webOS long startup patch `webOSStartupPatch`
75
+ * This patch could cause unexpected behavior for specific player setups.
76
+ * For details refer to [PlayerSurface Configuration](https://demo.castlabs.com/#/docs/surface#disabling-webos-startup-optimization).
77
+ * Fix a glitch where WebVTT XML tags were being displayed along with the subtitle
78
+ text in case of WebVTT subtitles embedded inside of MP4 media files.
79
+ * Fix an issue of the `HtmlCueComponent` where some subtitle cues were not begin
80
+ displayed in case of overlaps in segmented subtitles.
81
+ * Improve support of discontinuous HLS streams.
82
+
83
+ # 6.9.0
84
+
85
+ ## New Features
86
+
87
+ * Add config option `streaming.ignoreManagedMediaSourceStreamingHints` to ignore
88
+ hints generated by Managed Media Source (MMS) `startstreaming` and
89
+ `endstreaming` events. Default `false` optimizes for both performance and
90
+ resource management, particularly in varied network conditions and on
91
+ constrained devices, where managing power consumption and network efficiency
92
+ is crucial. Use with caution as enabling this option could lead to increased
93
+ power usage, making the default disabled setting a safer choice for general
94
+ use cases.
95
+
96
+ ## Changes
97
+
98
+ * HLS fixes:
99
+ * Fix support for URIs with missing file extensions in discontinuous HLS.
100
+ * Fix sporadic crashes in discontinuous live streams which contain
101
+ thumbnails or subtitles.
102
+ * Fix playback of MP4 streams with large baseMediaDecodeTime values.
103
+ * Additional Meta-Data such as accessibility information are no longer
104
+ fetched by default with the Safari Native Player implementation. This
105
+ behavior can be re-enabled by setting `enableMetadata` to `true` in the
106
+ [Safari Configuration](https://demo.castlabs.com/#/docs?q=clpp#SafariConfiguration).
107
+ * Fixed issue with Safaris native track selection where the player would
108
+ sometimes mark the wrong track as selected.
109
+
110
+ # 6.8.0
111
+
112
+ ## New Features
113
+
114
+ * Add support for Managed Media Source (MMS).
115
+ * Add support for changing initialization sections and encryption in
116
+ discontinuous VOD HLS.
117
+ * Add config options `streaming.disableAudioTracks` and `streaming.disableVideoTracks`
118
+ to disable audio and video of the MSE Player (not applicable to Safari or Tizen
119
+ native playback).
120
+ * Add config option `drm.ignoreUnrecognizedInitData`. If the player encounters init data
121
+ that cannot be processed (e.g., due to a malformed data payload), it will not pass it
122
+ to the CDM to avoid license requests errors. This option allows to disable this behavior
123
+ and pass the init data even if we couldn't parse it.
124
+ * Add IMA SDK support to MSE player on Tizen devices.
125
+ * **Warning!** There are limitations related to analytics reporting for IMA SDK Plugin and SmartTV devices. Refer to the [IMA Plugin](https://demo.castlabs.com/#/docs/advertising#ima-sdk-smarttv-support) documentation for more information.
126
+ * Add Mux Data Plugin support for [Bandwidth Throughput Events](https://docs.mux.com/guides/mux-data-playback-events#bandwidth-throughput-events).
127
+
128
+ ## Changes
129
+
130
+ * Improve handling of segment duration drift in multi-period content.
131
+ * Fix track switching in audio-only content.
132
+
133
+ # 6.7.0
134
+
135
+ ## Changes
136
+
137
+ * HLS related fixes:
138
+ * Fix corner cases in the handling of segment byte ranges.
139
+ * Improve playlist validation and support check.
140
+ * Low latency support:
141
+ * Fix playlist validation with respect to `#EXT-X-SERVER-CONTROL:PART-HOLD-BACK`.
142
+ * Fix handling of low-latency playlist segments when low-latency support is
143
+ disabled (It is disabled by default).
144
+ * Fixed Chromecast Cast Web Sender track manager issue, restoring the ability to list and change text/audio tracks during casting.
145
+
146
+ # 6.6.1
147
+
148
+ ## Changes
149
+
150
+ * Fix methods `clpp.utils.Mp4Parser.children()`, `clpp.utils.Mp4Parser.sampleDescription()`
151
+ and `clpp.utils.Mp4Parser.headerSize()`.
152
+ * HLS related fixes:
153
+ * Improve MIME type detection by leveraging `#EXT-X-MAP` tags.
154
+ * Fixed issue with some Smooth Streaming playback scenarios where the timeline
155
+ was adjusted but the wrong base media decode time was used.
156
+ * Fixed minor issue with Youbora receiving consecutive buffering ended events during
157
+ ad playback. The state was tracked already internally so these events were not
158
+ reported and this has not affect on the data exposed to Youbora. It makes the internal
159
+ implementation more consistent though and is slightly more performant since we are
160
+ saving some calls.
161
+
162
+ # 6.6.0
163
+
164
+ ## New Features
165
+
166
+ * Expose accessibility information for audio and text tracks on Safari.
167
+ Note that in order for this feature to work `NAME` attributes
168
+ of `#EXT-X-MEDIA` must be unique in the HLS playlist.
169
+
170
+ ## Changes
171
+
172
+ * Upgrade supported version of Broadpeak Plugin.
173
+ * Minimum recommended version is now v04.05.01-328cb1e. Refer to Analytics Documentation for details.
174
+
175
+ # 6.5.0
176
+
177
+ ## New Features
178
+
179
+ * Add an option for filtering of Youbora error events. Configure a custom
180
+ error filter via the `youbora.errorFilter` config option.
181
+ * Add new configuration options of 360-degree video playback `clpp.VrConfiguration`.
182
+ * `vr.sensitivity` sets the mouse/touch controls sensitivity. Must be a positive number.
183
+ * `vr.invertHorizontalControl` inverts the mouse/touch movement for horizontal axis.
184
+ * `vr.invertVerticalControl` inverts the mouse/touch movement for vertical axis.
185
+
186
+ ## Changes
187
+
188
+ * Upgrade supported version of `youboralib` to 6.8.49. Please upgrade to this version (e.g. `npm i youboralib@6.8.49`).
189
+ * Fixed issue with parsing WV PSSH data from Version 1 PSSH boxes
190
+ * Fixed persistent license removal
191
+ * Added `enableSessionCacheForSkd` as an option to the DRM Configuration.
192
+ We encountered issues with FairPlay in native Safari when SKD initialization
193
+ is used. What happens is that we do received multiple requests for the same
194
+ key request from the native engine and if we are not full-filling the
195
+ requests, it can cause a decryption error.
196
+ The default implementation ignores the session cache and will handle each
197
+ `encrypted` event. In this case, there might be duplicated
198
+ requests triggered by the player for license keys that were already fetched.
199
+ This is done to avoid any potential decryption errors. Setting this option to
200
+ true will enable the session cache also for SKD init data and avoid any
201
+ redundant license requests. **Note** that you might encounter more 3016 decode
202
+ errors on Safari with native playback and SKD initialization when enabling the
203
+ session cache.
204
+ * Work around a Safari 16.5 issue where in certain cases HLS live streams do
205
+ not start playback at current time (live edge) as they should, but instead
206
+ they start some time in the past.
207
+ * Fix an issue with the import of Broadpeak SDK occurring when code is bundled
208
+ with a bundler, which performs hoisting of import statements (such as Webpack).
209
+
210
+ # 6.4.1
211
+
212
+ ## **Warning!**
213
+ Changes in this release might be breaking for some very specific use cases:
214
+ * Removed `clpp.EventBus` from the API. *It is unlikely that this will cause
215
+ any issues, since this API is not intended to be public and is not relevant
216
+ to player functionality.*
217
+
218
+ ## New Features
219
+
220
+ * Add an option to enable detailed video track info and player stats for HLS on Safari.
221
+ To enable this experimental feature configure `safari.enableHlsVideoTrackInfo: true`.
222
+
223
+ ## Changes
224
+
225
+ * Fix the `textStyle` config option for subtitle styles.
226
+ * Make sure it always overrides styles embedded in TTML and WebVTT files and any other styles.
227
+ * Make sure `textStyle.edgeType: "none"` config removes any existing text shadow from the subtitles.
228
+ * Fix handling of HDR CICP EssentialProperty schemes for DASH streams.
229
+ * Add CICP ColourPrimaries, Transfer-Characteristics, MatrixCoefficients as valid EssentialProperty.
230
+ * Fix `ReferenceError` due to unavailable `MediaEncryptedEvent` on Safari < 12.1.
231
+
232
+ # 6.4.0
233
+
234
+ ## New Features
235
+
236
+ * Add track accessibility features to the public API for DASH streams (under `clpp.Track.accessibility`).
237
+ * HTTP status codes that will not trigger the retry behaviour can now be configured.
238
+ Previously, status codes 401 and 403 were not triggering the retry behaviour. This is still
239
+ the default, but can be changed now in the [AttemptParameters](https://demo.castlabs.com/#/docs?q=clpp.net#AttemptParameters)
240
+ for requests types, and globally by adjusting `clpp.net.DEFAULT_FATAL_STATUS_CODES`. The
241
+ configuration is also forwarded to [clpp.net.Request](https://demo.castlabs.com/#/docs?q=clpp.net#Request)
242
+ and can be adjusted per request using a [RequestModifier](https://demo.castlabs.com/#/docs?q=clpp.net#RequestModifier).
243
+ * Add support for Low-Latency HLS.
244
+ * Support for Partial Segments and Preload Hint.
245
+ * Support for Blocking Playlist Reload.
246
+ * Configuration by [Player configuration](https://demo.castlabs.com/#/docs/configuration) property `lowLatencyMode`, defaults to `false`.
247
+
248
+ ## Changes
249
+
250
+ * Fix timeline of dynamic to static transition in DASH.
251
+ * Several improvements of tracks.
252
+ * Fix an issue in DASH where similar `AdaptationSet` tags with distinct `Accessibility` tags where being
253
+ processed as renditions of the same track instead of being treated as two distinct tracks.
254
+ * Fix a corner-case issue where tracks with the same roles but in a different order were being treated as two
255
+ separate tracks instead of a single track with two different renditions.
256
+ * Fix issues with audio track selection when `preferredAudioRole` or `preferredAudioLanguage` is configured.
257
+ * Warn when an unsupported version of `youboralib` is supplied to the `YouboraPlugin` and emit
258
+ a recoverable error. Supported versions are 6.8.12 - 6.8.25.
259
+ * Fix support for custom styling of subtitles.
260
+ * Fix `clpp.utils.obj.merge`.
261
+ * Make sure it merges attributes with values that are DOM `Element`.
262
+ * Fix documentation: `clpp.utils.obj.merge` merges from left to right, not the other way around.
263
+ * Improve `clpp.PlayerSurface`.
264
+ * Add `clpp-video` class to the video/media element.
265
+ * Protect PRESTOplay class attributes from modification. This prevents unexpected
266
+ styling issues related to the re-rendering of the video or container element that can
267
+ easily occur when used with React, Vue or similar UI frameworks.
268
+ * Improve validation of arguments passed to `clpp.Player`.
269
+ * Fix an issue where special kinds of live streams such as IPR (in-progress recording)
270
+ were not correctly classified as live by `Player.isLive()`.
271
+ * Fix error reporting for invalid or failing thumbnails (VTT, BIF).
272
+ * Improved sync byte search for TS segment start time parsing
273
+ * Update metadata `player_name` default of Mux Analytics to `CastLabsPlayer`
274
+ * Fix time synchronization issues during sender/receiver switch for Smooth Streaming live streams on Chromecast.
275
+ * Dedicated handling for Widevine server certificate requests. We are now logging
276
+ Widevine Server Certificate requests explicitly and set the `licenseRequestType` of
277
+ the `request` to 'certificate-request'.
278
+ * Fixed issues with handling key restrictions in different multi period scenarios
279
+
280
+ # 6.3.0
281
+
282
+ ## **Warning!**
283
+ Changes in this release might cause breaking changes for some use cases. Please double-check your current usage of the following:
284
+ * `player.getPresentationStartTime()` - For non-live content, this method now returns `null`, instead of the previous `0`.
285
+
286
+ ## Changes
287
+ * Fix issues with `YouboraPlugin`.
288
+ * Fix crash when Youbora configuration is not passed via `clpp.Player` constructor.
289
+ * Fix an issue where Youbora plugin stopped reporting events after a call to `setYouboraPlugin`.
290
+ * Fix an issue with the import of `youboralib` and `@castlabs/prestoplay/cl.youbora`
291
+ when used with a bundler which performs hoisting of import statements (such as Webpack).
292
+ * Improvements on FPS License management. This release includes several improvements
293
+ related to the FairPlay License management with the Apple Prefixed implementation
294
+ as well as the EME implementation. Handling of multiple license requests is
295
+ improved, and we added a few workarounds that allow us to handle rejected payloads
296
+ better and reduce the number of failed playback attempts which previously
297
+ caused 3016 decode errors.
298
+ * Fixed an issue where the initials FPS license request with the EME implementation
299
+ was incorrectly reported as a renewal request.
300
+ * Changed the behavior of `player.getPresentationStartTime()`. The method now only returns numerical values when the stream is
301
+ live and the calculation of presentation start time is possible; otherwise, it returns `null`. **Note: potentially breaking change!**
302
+ * Chromecast Cast Web Sender & Web Receiver related changes:
303
+ * Fixed time synchronization issues for DASH live streams between cast sender and receiver. The updates address
304
+ problems related to seeking, switching between sender/receiver, and incorrect values returned from SDK during active casting.
305
+ * Fix `player.getDuration()` return value during live stream casting. The function now correctly returns `Infinity`,
306
+ addressing the previous bug where `-1` was incorrectly returned. This fix applies to both receiver and sender sides
307
+ during active casting.
308
+ * Changed the behavior of the `clpp.cast.CastProxy.setContentMetadata()` method. This method now also accepts null, which will clear the metadata.
309
+ * Added the `clpp.cast.CastProxy.getContentMetadata()` method.
310
+ * In an effort to simplify the `clpp.cast.CastProxy` metadata API, we are deprecating the following methods: `setContentTitle()`, `setContentImage()`, `setContentArtist()`, `setContentReleaseDate()`, `clearContentMetadata()`. These methods will still work, but they will be removed in the next release. Please use the `setContentMetadata()` method instead. Refer to the documentation for details.
311
+
312
+ # 6.2.8
313
+
314
+ ## Changes
315
+
316
+ * Fix clock sync fallback in DASH.
317
+ * This fixes an issue where one failing `UTCTiming` tag
318
+ cancelled the whole time sync. Now all `UTCTiming` tags are tried one-by-one until one
319
+ succeeds, or if all fail, only then the time sync is cancelled.
320
+ * Warn whenever a clock sync fails. Warn when no UTCTiming elements are found.
321
+ Warn when a direct time scheme (`urn:mpeg:dash:utc:direct:2014`) provides an invalid value.
322
+ * Fix `clpp.thumbnails.ThumbnailsPlugin.get()` method, which now returns the correct
323
+ thumbnail at a specific position for BIF thumbnails.
324
+ * Change parsing process for dynamic DASH and always perform clock
325
+ synchronization before playback. This fixes issues related to wrong system time.
326
+ E.g. `player.getPresentationStartTime()` is now calculated correctly, even
327
+ when system time is wrong.
328
+ * Fix the issue where `player.play()` does not trigger a `clpp.events.AUTOPLAY_NOT_ALLOWED`
329
+ event when Safari blocks the play request due to the 'Stop Media with Sound' auto-play policy.
330
+ * Fix `clpp.thumbnails.Thumbnail.element()` method, which now works as expected
331
+ even if the URL of the thumbnail image contains round bracket characters.
332
+ * Fix `clpp.thumbnails.ThumbnailsPlugin.get()` method, which now returns the correct
333
+ thumbnail at a specific position for WebVTT thumbnails.
334
+ * Fix issue with multiple (unnecessary) license requests triggered.
335
+ * Fix the license request/response modifiers for Chromecast Receiver:
336
+ * The `licenseRequest` modifier now correctly indicates the `POST` method instead of falsely reporting `GET` for the `request` object.
337
+ * The `licenseResponse` modifier is now properly awaited when defined as async.
338
+ * Please refer to DRM section in manual for limitations of using request/response modifiers in Chromecast Receiver.
339
+ * Improve error logging for `MP4_SIDX_WRONG_BOX_TYPE` code. Now there is an URL, byte-range, size, and a 1kB sample of the erroneous SIDX box provided within the `clpp.Error` optional data.
340
+ * Handle FairPlay license loading with EME implementation more consistently and avoid
341
+ redundant license requests.
342
+
343
+ # 6.2.7
344
+
345
+ ## Changes
346
+
347
+ * Add `PlayerConfiguration.streaming.relativeTextTimestamp` config, which when
348
+ set to true will force text cue times to be offset by the containing media
349
+ segment start time.
350
+ * Add VR plugin for 360-degree video playback. See http://demo.castlabs.com/#/docs?q=clpp.vr.VrPlugin
351
+ for more information.
352
+ * Fix appending `merchant` name to the DRMtoday Onboard Fairplay certificate URI.
353
+ * Fixed an issue with very rapid loads where the engine will not be released properly
354
+
355
+ # 6.2.6
356
+
357
+ With this version we started to publish PRESTOplay to NPM. You can now simply integrate the
358
+ player and its modules my installing it as a dependency:
359
+
360
+ ```
361
+ npm install @castlabs/prestoplay
362
+ ```
363
+
364
+ **Note** that we needed to make some changes to the file names and folder structure of the SDK. In
365
+ previous releases we were using `.esm.js` and `.min.js` to differentiate CJS (UMD) and ESM modules. We
366
+ needed to change the structure slightly and use `esm` and `cjs` folders now instead while keeping the
367
+ actual file names the same.
368
+
369
+ ## Changes
370
+
371
+ * Introduced API for changing EME implementation to use.
372
+ * Due to that it is now possible to use MSE with encrypted content on Apple
373
+ devices.
374
+ * Please refer to DRM section in a manual for more info.
375
+ * Added a `streaming.preferNativeHlsOnSafari` config option to explicitly
376
+ specify should we play HLS content using MSE or native playback.
377
+ * By default, this option is set to `true`.
378
+ * Please refer to Components section in a manual for more info.
379
+ * Fix `PLAYER_ERROR_NOT_SUPPORTED_FILE` issue on Tizen for certain DASH streams.
380
+ * Fix startup issue for certain live streams on webOS 6.
381
+ * Improved `player.getSeekRange()` for native Safari playback.
382
+ * Simplified DRMtoday FairPlay certificate request structure
383
+ * Introduce the `PlayerConfiguration.forceWaitForTracks` flag to indicate that
384
+ the load promise should only resolve once data is loaded. This allows the load
385
+ promise to wait until data arrived and the track model is fully initialized.
386
+ Note that, if at all, this is only required for some special cases on Safari
387
+ native playback to make sure that tracks are resolved before load resolves.
388
+ In the regular case the track model is already initialized when the load promise
389
+ resolves.
390
+ * Fixed regression on default FPS license response handling. We missed
391
+ a case where license responses should still be base64 decoded.
392
+ * Fix seekRange() values for HLS LIVE streams with MSE.
393
+ * Fixed issue with DRMtoday and FairPlay integration for multi-key cases
394
+ where the SKD erroneously contains not only a keyId but also an
395
+ asset id
396
+ * Added basic TTML to VTT transcoder. This allows to sideload TTML subtitles with
397
+ native text displayer (e.g. iPhone Safari). Be aware that in this iteration we
398
+ skip most of the styling information from TTML, so just text cues are transcoded.
399
+ * Added support for manually setting the Widevine Server Certificate in an easy way
400
+ * Added support for automatic retries in case a wrong Widevine Certificate was used
401
+
402
+
403
+ # 6.2.5
404
+ * ESM files are now compatible with ECMAScript 2015.
405
+ * Improved start up time on webOS 4+ devices.
406
+ * Broadpeak plugin has been upgraded to version 4.
407
+ * Minimum supported version is now 4.1.1-f5f806. Version 3 does not work
408
+ anymore with current implementation.
409
+ * Fix playback of PlayReady protected content on WebOS TVs.
410
+ * Fix disabling ABR when selected track/rendition is currently active.
411
+ * Upgrade Conviva integration to latest version (v4.5.8)
412
+ * Add Verimatrix VCAS component for easy integration with Verimatrix DRM license servers.
413
+ * Prevent timeline discontinuity playback issues on webOS 6.
414
+ * Fix DASH alternative audio tracks unavailable for encrypted content.
415
+ * Fire tracking requests for DASH events with duration equal to 0.
416
+ * Fix HLS AES-128 encryption for streams without IVs provided in the playlist.
417
+ * Add support to attach custom Youbora Plugin object to Castlabs analytics plugin.
418
+ * Chromecast - do not fail on text stream failures.
419
+
420
+ # 6.2.4
421
+ * Expose Youbora Adapter & Youbora Ads Adapter in `clpp.npaw.YouboraPlugin` via
422
+ `getAdapter()` and `getAdsAdapter()` methods.
423
+ * Please refer to documentation for more info.
424
+ * Fix Conviva support on Chromecast with PRESTOplay SDK for Android sender
425
+ * Added `config.preferredAudioCodec` to support manual prioritization of audio codecs
426
+ * `config.preferredVideoCodec` now accepts array of preferred codecs in priority order
427
+ * Fix `player.load()` not working on Tizen 4 & 5 after going to background and
428
+ back to foreground.
429
+
430
+ # 6.2.3
431
+ * Add support for HLS Image Media Playlist. Refer to Thumbnails section in
432
+ manual for more info.
433
+ * Added `abr.initialRestrictions` configuration to specify restrictions for the
434
+ first ABR switch.
435
+ * Plugin IDs unification.
436
+ * Fix issues with setting `startTime` in Safari.
437
+ * Report initialized components to Download Portal.
438
+ * Prevent multiple `/register` calls to Download Portal.
439
+ * Added `pauseWhenInBackground` configuration. When set to `true`, the playback
440
+ will be paused when the application is put into background and resumed once
441
+ the application is back in foreground.
442
+ * Added `streaming.patchEdgeWhenMixedContent` field in player configuration to apply content workarounds.
443
+ * Clear text cues on seek
444
+ * Support for `SegmentTemplate.endNumber` in a DASH manifest
445
+
446
+ # 6.2.2
447
+ * iOS - fix rare bug with going to ended state on some iOS devices.
448
+ * iOS - fix false positive online events on ConnectivityChecker.
449
+ * DRM updates:
450
+ * Introduced `clpp.drm.InitDataTransformer` modifier to provide the ability to
451
+ directly parse and manipulate initData and construct custom payloads for
452
+ exchange with the CDM in use. Check the DRM configuration section in manual
453
+ for more info and examples.
454
+ * `clpp.drm.KeySystem` enum is now extended with `NONE` and `CLEAR_KEY` values
455
+ for more consistent and less error prone handling of DrmEnvironment's key
456
+ system configuration.
457
+ * Added `sessionId` field to network request. This allows a request/response
458
+ modifier to determine which EME session made the request.
459
+ * A set of `clpp.utils.FairplayUtils` utils are now available for handling
460
+ common FairPlay DRM tasks.
461
+ * `clpp.utils.BufferUtils` are now available for use with array buffers.
462
+
463
+ # 6.2.1
464
+ * Added ability to specify Widevine and PlayReady robustness in the `config.drm.customData`
465
+ * Fixed subtitles not visible when the HTML text displayer not loaded in Safari
466
+ * Added `connectivityCheck` field in player configuration to check is network
467
+ available.
468
+ * When network availability status changes, player now emits
469
+ `clpp.events.ONLINE_STATUS_CHANGED` event with `online` boolean property.
470
+ * Added the `config.streaming.addMissingTimelineCues` option
471
+ * TTML parser
472
+ * Add the presentation time offset to cue timestamps
473
+ * Do not set server certificate on WebOS 3 due to a bug in WebOS'
474
+ `MediaKeys.setServerCertificate()` implementation.
475
+
476
+ # 6.2.0
477
+ * Player Surface improvements:
478
+ * `clpp.Player#getSurface()` method now returns `clpp.IPlayerSurface`.
479
+ * `clpp.IPlayerSurface` interface is now exported.
480
+ * `clpp.PlayerSurfaceCss` has been removed.
481
+ * Following options from `clpp.PlayerSurfaceConfiguration` has been removed.
482
+ Please check Migration Guide for more info.
483
+ - `moveCssToContainer`
484
+ - `containerTag`
485
+ - `mediaTag`
486
+ - `controls`
487
+ - `css`
488
+ * Added manual for Player Surface configuration.
489
+ * Subtitles improvements
490
+ * SRT / VTT
491
+ * The parser has been moved to an independent component, `clpp.vtt.min.js`
492
+ * Please check `v6.2 Migration Guide` for more info.
493
+ * TTML
494
+ * The parser has been moved to an independent component, `clpp.ttml.min.js`
495
+ * The parser is compatible with TTML v1 now
496
+ * The parser converts pixel sizes to percentages in order to build responsive layouts
497
+ * Please check `v6.2 Migration Guide` for more info.
498
+ * The HTML text displayer
499
+ * Following options from `clpp.PlayerConfiguration` has been removed.
500
+ * `enableEnhancedSubtitleManager` (use `enableHtmlCue` instead)
501
+ * `clpp.utils.strings` fixes:
502
+ * `durationToStirng()` renamed to `durationToString()`.
503
+ * Removed `toBase64()` and `fromBase64()`. You can still use equivalent
504
+ methods from `clpp.utils.Uint8ArrayUtils`.
505
+ * DRM updates:
506
+ * Introduced `clpp.drm.SessionContext` object for various interactions during
507
+ DRM session. Object is passed as a 3rd argument to license request &
508
+ response modifiers.
509
+ * `clpp.drm.SessionContext#ldlDelay` can be used to manually set delay between
510
+ license requests when `license-renewal` event is not fired by CDM. This is
511
+ primarily a case for PlayReady implementation.
512
+ * Conviva updates:
513
+ * Do not set `osVersion` by default for LG and Hisense TVs.
514
+ * add `deviceMetadata` field in conviva configuration to pass any needed
515
+ metadata by user. See `clpp.ConvivaConfiguration` doc for more details.
516
+ * Dropping support for IE 11
517
+ * Due to the consistently low level of usage,
518
+ our PRESTOplay team has decided to discontinue IE 11 support with 6.2.0 release.
519
+ However, maintenance support for IE 11 will still be provided
520
+ for the next 6 months (ending 1 May 2022) through our 6.1.X versions.
521
+ Dropping support for IE 11 will also allow our team to focus more time
522
+ on providing the best in modern playback features and experiences.
523
+
524
+ # 6.1.13
525
+ * Do not preconfigure DRM Engine when `source.drmProtected` is set to `false`.
526
+ * Playback of direct MP4 files on Tizen
527
+ * Optimize audio track switching on Smart TV (prevent playback from freezing after track switch)
528
+
529
+
530
+ # 6.1.12
531
+ * Improve HLS with discontinuities playback when
532
+ `#EXT-X-DISCONTINUITY-SEQUENCE` is missing.
533
+ * Add `manifest.playreadyVersion` field to force update of PlayReady header
534
+ to specified version.
535
+ * Speed up `HtmlTextDisplayer` component on slower devices.
536
+ * Fix state reporting bug on Tizen 2.3
537
+
538
+ # 6.1.11
539
+ * Allow to configure network request parameters in DRM module by
540
+ `clpp.DrmConfiguration.attemptParameters` configuration field.
541
+ * Use `com.microsoft.playready.recommendation` key system on Microsoft Edge:
542
+ * Player tries to enforce hardware protection by default if DRMtoday is in use.
543
+ * Robustness levels might be also specified in custom DRM environments.
544
+ * Robustness levels for Playready are introduced in `clpp.drm.PlayreadyRobustnessLevel`.
545
+ * Send detailed message about license & certificate request failures to MuxData
546
+ plugin.
547
+ * Youbora - add calculation of ad visibility.
548
+ * MuxData - fix order of ad-related events.
549
+ * Conviva + Chromecast - do not start new session on sender during casting.
550
+ * Fixed issue with video only content and codec selection
551
+ * Fixed issue with Widevine PSSH creating from newer PlayReady PSSH data
552
+ * Prefer native playback capabilities in Safari
553
+ * Fixed Conviva seek event order on Tizen platforms
554
+ * Recognize the `stpp.ttml` codec for subtitles
555
+ * Add preferred audio language support for Tizen 2.x
556
+ * Fixed issue with selected audio track not being available on Tizen 2.4
557
+
558
+ # 6.1.10
559
+ * Youbora - report DRM system in use.
560
+ * Youbora - do not start session when no intent to play.
561
+ * Conviva - add a way to set device brand and connection type. Please check
562
+ `clpp.ConvivaConfiguration` doc for more info.
563
+ * HLS - introduced support for `#EXT-X-DISCONTINUITY` &
564
+ `#EXT-X-DISCONTINUITY-SEQUENCE` tags.
565
+ * Fixed aborting a loading operation
566
+ * Fixed resetting a text displayer on track changed
567
+ * Add `clpp.cast.Receiver#setLoadRequestDataInterceptor()` method. Please check
568
+ documentation for more info.
569
+ * Fixed the order of nested cues when rendering with the HtmlCue component
570
+ * Improved positioning logic in the htmlcue component.
571
+ * The `display: inline` has been added to the `.clpp-text-cue` class
572
+ * The `line-height` has been added to the `.clpp-text-cue` class
573
+ * The `line-height` has been removed from the `.clpp-text-container` class
574
+ * `position, inset, display` inline attributes have been removed from cue nodes
575
+ * `visibility, direction` inline attributes have been added to cue wrapper nodes
576
+ * `config.preferredTextLanguage` and `config.preferredAudioLanguage` options
577
+ accept an array of languages
578
+ * Muted the operation aborted error
579
+ * Mux Data plugin fixes:
580
+ * More accurate Video Startup Time metrics when autoplay is on.
581
+ * `timeupdate` events reporting.
582
+
583
+ # 6.1.9
584
+ * Introduced CDN error fallback. Check `clpp.Player.setCdnFallback()`
585
+ documentation for more info.
586
+ * Youbora - do not create new session when seeking beyond end of content on
587
+ Safari.
588
+ * Fix Chromecast + Conviva integration.
589
+ * Youbora - do not call `/bufferUnderrun` twice.
590
+ * Add support for IMSC1 text based & image based subtitles.
591
+ * Add support for changing player name in Conviva configuration.
592
+ * Fix Endless loop after seek on Tizen 3
593
+ * Fix wrong video height and width using AVplay on Tizen with resolution below 1080p
594
+ * Prefer text streamer for tizen native playback to mitigate issues with subtitles
595
+
596
+ # 6.1.8
597
+ * Fix going to background and foreground mode again on 2021 TV platforms.
598
+ * Fix issue with Smooth Streaming playback freezes when subtitles are enabled.
599
+ * Fix playback of DASH with PlayReady ContentProtection only on Firefox.
600
+ * Fixed removing XML tags from text cues.
601
+ * Youbora - fire `/join` request when autoplay is blocked.
602
+ * Added SMPTE-TT Embedded in ID3 for HTTP Live Streaming support
603
+ * Added support for nested SMPTE-TT tags
604
+ * clpp.tizen.TizenComponent: Normalize language code for tracks.
605
+
606
+ # 6.1.7
607
+ * Added a new config option, i.e. `config.htmlcue.enableResizeObserver`
608
+ * Added support for MPEG-DASH Callback Event
609
+ * Introduced new `clpp.TimelineCueType.DASH_CALLBACK` timeline cue type.
610
+ * Fix issue with Fairplay multikey playback when using DRMtoday Onboard.
611
+
612
+ # 6.1.6
613
+ * Fixed an issue with seeking after DASH dynamic to static conversion.
614
+ * Fixed the initialization of the player container.
615
+ * Fixed the vertical rl mode in the html cue component
616
+ * Fix issue with subtitles selection after period transition.
617
+ * Do not play IMA ads if platform uses single video element.
618
+ * Optimize playback of Smooth Streaming content on TV platforms (webOS, Tizen).
619
+ * Fix playback of AES-128 encrypted content on webOS devices.
620
+ * Fix `HTMLTextDisplayer` component stalls on webOS 3.x devices.
621
+ * Update manual section about playback on older Tizen TV platforms.
622
+ * Added support for SMPTE-TT images (TTML)
623
+ * Added support for cue regions (WebVTT)
624
+ * Added support for embedded styles (WebVTT)
625
+
626
+ # 6.1.5
627
+ * Added the `player.setDrmCustomDataModifier` to the player interface.
628
+ The method allows modifying DRM custom data before casting to Apple TV.
629
+ * Added `muxdata.muxOptionsOverride` config field. This allows to extend and/or
630
+ override the config that is passed to the Mux SDK by the Mux Data plugin.
631
+ * Skip displaying subtitles if dimensions of the text container are zero.
632
+ * Enable MSE/EME (spec version 0.1b/Aug 2012) based playback on older Tizen devices (version 2.X).
633
+ * Follow redirections when playing Smooth Streaming content.
634
+ * Try to load Smooth Streaming manifest from URL with `/Manifest` suffix if
635
+ first request with original URL resulted with HTTP error.
636
+
637
+ # 6.1.4
638
+ * Accept empty TTML segments
639
+ * Fix text track selection based on the `preferredTextLanguage` option
640
+ * Fixed cue offset when X-TIMESTAMP-MAP not defined
641
+ * Tizen Improvements:
642
+ * Fix PlayReady protected playback on legacy Tizen devices (version 2.x)
643
+ * Add preliminary Widevine support
644
+ * Improved error handling and reporting
645
+ * Add implementation for `getDrmInfo`
646
+ * Fix native and MSE based playback on Tizen 3.0
647
+ * Fixed rare bug with incorrect seek ranges for live streams during casting.
648
+ * Add Mux Data plugin
649
+ * Support timeline cues (EventStream / SCTE-35) for Chromecast receiver.
650
+ * Chromecast - use PlayReady for Smooth Streaming playback.
651
+ * Preserve media element mute state in subsequent load requests.
652
+
653
+ # 6.1.3
654
+ * Fixed text track selection based on the `preferredTextLanguage` option
655
+ * Generate Widevine or Playready content protection elements if needed
656
+ * Added header based DRM
657
+ * Add a way to pass optional playback config when starting casting.
658
+ * Check `clpp.cast.CastProxy#cast()` spec for more info.
659
+ * Introduced Live Edge Chasing algorithm. New configuration fields added.
660
+ Please refer to the documentation to learn more about it.
661
+ * `streaming.enableLiveEdgeChasing`
662
+ * `streaming.chasingRate`
663
+ * `streaming.startChasingAt`
664
+ * `streaming.stopChasingAt`
665
+ * `streaming.chaseJumpDistance`
666
+ * Chromecast metadata management.
667
+ * Introduced `clpp.cast.CastProxy` methods to set content metadata.
668
+ * Ability to check current metadata on receiver side by
669
+ `clpp.cast.Receiver#getContentMetadata()` API.
670
+ * Please refer to `clpp.cast.CastProxy` and `clpp.cast.Receiver`
671
+ for more info.
672
+ * Conviva: Fix initial bitrate selection not reported when autoplay is disabled.
673
+ * Fixed triggering response modifiers on error
674
+
675
+ # 6.1.2
676
+ * Adobe Milestone Analytics support (BETA).
677
+ * Fixes issue with offline license loading
678
+ * Guess MP4 text codec when manifest does not specify it explicitly.
679
+ * Conviva bug fixes
680
+ * Ensure that a player release can only be triggered once until completed
681
+ The `release()` method on the player will now always returns the same promise
682
+ until the release is completed.
683
+ * Fixed issue with manifest retry parameters on live playback
684
+
685
+ # 6.1.1
686
+ * Fixed issue with FPS requests triggered by AppleTV devices in Airplay sessions
687
+ * Block rendition selected by ABR if it cannot be downloaded.
688
+ * Chromecast: do not disable text track when switching audio tracks on sender.
689
+ * Added support for DASH live to vod transition.
690
+ * Added `clpp.events.MPD_TYPE_CHANGED` event to reflect this change.
691
+ * Fix PlayReady playback when PlayReady PSSH is not available.
692
+ * Add Vimond plugin
693
+ * Fix issue with AirPlay state not being consistent when starting or resuming
694
+ an Airplay session. Please note that this seems to be a bug in Safari and
695
+ to work around it we put the local player back into playing state. This will
696
+ result in very short state jump into paused state and before the player goes
697
+ back into playing state.
698
+
699
+ # 6.1.0
700
+ * Fix playback issues with HLS audio only content on MSE.
701
+ * Fix incorrect audio TS handling on Microsoft Edge
702
+ * Persistent license.
703
+ * Introduce `clpp.persistent.fetchLicense()` API to fetch license without
704
+ player instance. Check manual for more info.
705
+ * Prevent sending license request twice when Persistent Component is in use.
706
+ * Smooth Streaming improvements.
707
+ * Add support for segment timescales.
708
+ * Fix bug with non-switchable tracks on protected content.
709
+ * Add `manifest.liveRefreshPeriod` configuration field to manually set how
710
+ often Smooth manifest should be updated.
711
+ * Chromecast improvements.
712
+ * Prevent `INVALID_MEDIA_SESSION_ID` rejection when trying to play/pause/seek
713
+ content in ended state.
714
+ * Map `defaultBandwidthEstimate` field from `clpp.AbrConfiguration` to CAF's
715
+ `cast.framework.PlaybackConfig.initialBandwidth`.
716
+ * Add `onResumeLocal` callback as an `clpp.cast.CastProxy`'s optional
717
+ parameter.
718
+ * Resolve load promise when Never Auto-Play set to true on Safari 13.1.x
719
+ * FreeWheel integration (BETA).
720
+ * PRESTOplay SDK now comes with FreeWheel ads integration. To check it, please
721
+ add FreeWheel SDK and our FreeWheel plugin to your project.
722
+ * Add `clpp.AbrConfiguration#useSwitchIntervalForInitialSwitch` flag to prevent
723
+ quick ABR switch once the estimator has enough data.
724
+ * Add `clpp.Player#resetAbr()` method for resetting ABR estimate.
725
+ * Youbora integration.
726
+ * Always fire `/pause` event to Youbora before reporting postroll.
727
+ * Expose text displayer interface.
728
+ * Text displayer is now in BETA state with some known issues.
729
+ * Improved multi-key handling and added support for multi-key deliveries for Playready
730
+
731
+ # 6.0.4
732
+ * Added `preferredDrmSystem` option to the `clpp.DrmConfiguration` to enforce
733
+ using specific DRM technology (i.e. force PlayReady on Edge Chromium).
734
+ * Introduces `TimelineCue` data structure and related events.
735
+ * Fixes for handling muxed audio+video TS-based content.
736
+ * Added `clpp.events.USER_SEEKING` & `clpp.events.USER_SEEKED` events
737
+ * Those events are fired only during seeking initiated by calling
738
+ `clpp.Player#seek()` method.
739
+ * Fix Conviva integration error.
740
+
741
+ # 6.0.3
742
+ * Support for Chromecast
743
+ * Check manual and documentation for more info
744
+ * Support for persistent licenses
745
+ * Adds `originalId` field to the `clpp.Rendition` class
746
+ * This field contains rendition id that appeared in original manifest
747
+
748
+ # 6.0.2
749
+ * Improves HLS + AES-128 support
750
+ * Relative AES key URI
751
+ * Adds DRMtoday Onboard support
752
+ * Adds AirPlay support
753
+ * Bug fixes and improvements
754
+
755
+ # 6.0.1
756
+ * Adds Broadpeak's SmartLib v3-3.0.4-2950 integration (plugin).
757
+ * Introduces the crypto component (`clpp.crypto.CryptoComponent`)
758
+ * The crypto component adds HLS + AES-128 playback capability to the player.
759
+ * Improves support of muxed audio+video TS-based contents.
760
+
761
+ # 6.0.0
762
+ PRESTOplay SDK for browsers version 6 has been re-designed from the ground up to
763
+ build a faster, more modular, and smaller player SDK. We focused on the core
764
+ components of video playback and the underlying media playback engine.
765
+
766
+ Since the new architecture was only possible with drastic measures, we needed to
767
+ adapt and change the previous API. Please, consult the migration guide from our
768
+ manual to upgrade from version 5.