rx-player 4.1.0-dev.2024031100 → 4.1.0-dev.2024040900
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.
- package/CHANGELOG.md +270 -128
- package/VERSION +1 -1
- package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
- package/dist/commonjs/__GENERATED_CODE/embedded_worker_es5.js +1 -1
- package/dist/commonjs/compat/should_wait_for_data_before_loaded.d.ts +1 -1
- package/dist/commonjs/compat/should_wait_for_data_before_loaded.js +5 -3
- package/dist/commonjs/core/segment_sinks/inventory/segment_inventory.d.ts +4 -3
- package/dist/commonjs/core/segment_sinks/inventory/segment_inventory.js +66 -41
- package/dist/commonjs/core/stream/representation/utils/get_buffer_status.js +1 -35
- package/dist/commonjs/core/stream/representation/utils/get_needed_segments.js +17 -5
- package/dist/commonjs/default_config.js +1 -1
- package/dist/commonjs/main_thread/api/public_api.js +2 -2
- package/dist/commonjs/main_thread/decrypt/content_decryptor.d.ts +28 -1
- package/dist/commonjs/main_thread/decrypt/content_decryptor.js +90 -70
- package/dist/commonjs/main_thread/decrypt/session_events_listener.js +2 -1
- package/dist/commonjs/main_thread/init/utils/get_loaded_reference.js +1 -1
- package/dist/commonjs/main_thread/init/utils/initial_seek_and_play.js +4 -1
- package/dist/commonjs/main_thread/text_displayer/html/text_track_cues_store.js +1 -1
- package/dist/commonjs/main_thread/text_displayer/html/utils.d.ts +15 -0
- package/dist/commonjs/main_thread/text_displayer/html/utils.js +24 -1
- package/dist/commonjs/parsers/containers/isobmff/extract_complete_chunks.d.ts +1 -1
- package/dist/commonjs/parsers/containers/isobmff/extract_complete_chunks.js +1 -26
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +1 -10
- package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.js +6 -1
- package/dist/commonjs/transports/dash/low_latency_segment_loader.js +3 -1
- package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
- package/dist/es2017/__GENERATED_CODE/embedded_worker_es5.js +1 -1
- package/dist/es2017/compat/should_wait_for_data_before_loaded.d.ts +1 -1
- package/dist/es2017/compat/should_wait_for_data_before_loaded.js +5 -3
- package/dist/es2017/core/segment_sinks/inventory/segment_inventory.d.ts +4 -3
- package/dist/es2017/core/segment_sinks/inventory/segment_inventory.js +55 -20
- package/dist/es2017/core/stream/representation/utils/get_buffer_status.js +2 -36
- package/dist/es2017/core/stream/representation/utils/get_needed_segments.js +17 -5
- package/dist/es2017/default_config.js +1 -1
- package/dist/es2017/main_thread/api/public_api.js +2 -2
- package/dist/es2017/main_thread/decrypt/content_decryptor.d.ts +28 -1
- package/dist/es2017/main_thread/decrypt/content_decryptor.js +53 -24
- package/dist/es2017/main_thread/decrypt/session_events_listener.js +2 -1
- package/dist/es2017/main_thread/init/utils/get_loaded_reference.js +1 -1
- package/dist/es2017/main_thread/init/utils/initial_seek_and_play.js +4 -1
- package/dist/es2017/main_thread/text_displayer/html/text_track_cues_store.js +2 -2
- package/dist/es2017/main_thread/text_displayer/html/utils.d.ts +15 -0
- package/dist/es2017/main_thread/text_displayer/html/utils.js +22 -0
- package/dist/es2017/parsers/containers/isobmff/extract_complete_chunks.d.ts +1 -1
- package/dist/es2017/parsers/containers/isobmff/extract_complete_chunks.js +2 -2
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +1 -10
- package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.js +6 -1
- package/dist/es2017/transports/dash/low_latency_segment_loader.js +3 -1
- package/dist/rx-player.js +199 -146
- package/dist/rx-player.min.js +1 -1
- package/dist/worker.es5.js +1 -1
- package/dist/worker.js +7 -7
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,154 +1,296 @@
|
|
|
1
|
-
##
|
|
1
|
+
## v4.1.0-dev.2024040900 (2024-04-09)
|
|
2
2
|
|
|
3
3
|
### Features
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
- Add a supplementary `worker.es5.js` file and its corresponding `EMBEDDED_WORKER_ES5`
|
|
6
|
+
embed to make the `MULTI_THREAD` experimental feature work on old browser environments
|
|
7
|
+
[#1400]
|
|
6
8
|
|
|
7
9
|
### Bug fixes
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
- Directfile/compat: On safari mobile in directfile mode, do not stay in an infinite
|
|
12
|
+
`LOADING` state if the `duration` is set to `NaN` (rare issue in a normally-unsupported
|
|
13
|
+
multiple RxPlayer-per-media-element scenario) [#1393]
|
|
14
|
+
- DRM/Compat: On the PlayStation 5, reload directly when a decryption key become unusable
|
|
15
|
+
to prevent fatal errors [#1399]
|
|
11
16
|
|
|
12
17
|
### Other improvements
|
|
13
18
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
- Signal an error if multiple active RxPlayer are linked to the same media element [#1394]
|
|
20
|
+
- MULTI_THREAD: The experimental `MULTI_THREAD` feature does not need a `dashWasmUrl`
|
|
21
|
+
anymore nor compatibility to WebAssembly [#1384]
|
|
22
|
+
- MULTI_THREAD: Perform several actions so that our `MULTI_THREAD` experimental feature
|
|
23
|
+
now works on older browser and on the playstation 4 [#1400, #1401, #1402]
|
|
24
|
+
- DRM: Refactor MediaKeys attachment logic to simplify device support updates [#1357]
|
|
25
|
+
- tests: use exponential backoff to speed up integration tests [#1389]
|
|
26
|
+
- code: Rely on the TypeScript `type` keyword at type imports to be sure they have no code
|
|
27
|
+
impact on our final build [#1365]
|
|
28
|
+
- code: Reorganize core RxPlayer code into a `src/main_thread` and `src/core` respectively
|
|
29
|
+
for main thread and worker code in a "multithread" mode [#1365]
|
|
30
|
+
- code: Rely on the prettier and rustfmt formatting tools in the codebase [#1387]
|
|
22
31
|
|
|
23
32
|
## v4.0.0 (2024-02-21)
|
|
24
33
|
|
|
25
34
|
### Changes
|
|
26
35
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
36
|
+
- Create `"FREEZING"` player state for cases where the playback position is currently not
|
|
37
|
+
advancing due to an unknown reason, to separate it from regular `"BUFFERING"`. [#1146]
|
|
38
|
+
- The `RELOADING` player state (gettable through the `getPlayerState` and
|
|
39
|
+
`playerStateChange` API) can now happen at any time to unlock playback.
|
|
40
|
+
- Remove bitrate API: `getAvailableVideoBitrates`, `getAvailableAudioBitrates`,
|
|
41
|
+
`setAudioBitrate`, `setVideoBitrate`, `getAudioBitrate`, `getVideoBitrate` in profit of
|
|
42
|
+
the Representations lock APIs [#1144]
|
|
43
|
+
- Remove max bitrate API: `setMaxVideoBitrate`, `setMaxAudioBitrate`, `getMaxVideoBitrate`
|
|
44
|
+
and `getMaxAudioBitrate` methods as well as the `maxVideoBitrate` and `maxAudioBitrate`
|
|
45
|
+
options in profit of the Representations lock APIs
|
|
46
|
+
- Remove min bitrate API: `setMinVideoBitrate`, `setMinAudioBitrate`, `getMinVideoBitrate`
|
|
47
|
+
and `getMinAudioBitrate` methods as well as the `minVideoBitrate` and `minAudioBitrate`
|
|
48
|
+
options in profit of the Representations lock APIs
|
|
49
|
+
- Remove track preferences API (methods: `getPreferredAudioTracks`,
|
|
50
|
+
`getPreferredVideoTracks`, `setPreferredAudioTracks` and `setPreferredVideoTracks`,
|
|
51
|
+
types: `IAudioTrackPreference`, `ITextTrackPreference` and `IVideoTrackPreference`) in
|
|
52
|
+
profit of the new tracks API
|
|
53
|
+
- Remove `getManualVideoBitrate` and `getManualAudioBitrate` in profit of the new
|
|
54
|
+
Representations lock APIs
|
|
55
|
+
- Replace `initialAudioBitrate` and `initialVideoBitrate` constructor options with a
|
|
56
|
+
single `baseBandwidth` option, which better translates what this option is actually
|
|
57
|
+
doing and allows for future optimizations on our side. [#1155]
|
|
58
|
+
- Rename `audioTrackSwitchingMode` loadVideo option into `defaultAudioTrackSwitchingMode`
|
|
59
|
+
[#1030]
|
|
60
|
+
- Remove `manualBitrateSwitchingMode` loadVideo option to instead rely on the
|
|
61
|
+
`switchingMode` property of each `lockVideoRepresentations` and
|
|
62
|
+
`lockAudioRepresentations` calls. [#1030]
|
|
63
|
+
- Remove `audioBitrateChange` and `videoBitrateChange` events in profit of the new
|
|
64
|
+
`audioRepresentationChange` and `videoRepresentationChange` events
|
|
65
|
+
- Remove `availableAudioBitratesChange` and `availableVideoBitratesChange` events. Those
|
|
66
|
+
are less needed with the new Representations lock API and can be mostly replicated
|
|
67
|
+
through the `audioTrackChange` and `videoTrackChange` events
|
|
68
|
+
- "Flatten" the `transportOptions` loadVideo options by putting all its inner properties
|
|
69
|
+
directly at the top level of loadVideo options, to simplify its documentation and
|
|
70
|
+
discoverability [#1149]
|
|
71
|
+
- Remove `limitVideoWidth` constructor option in profit of the more configurable
|
|
72
|
+
`videoResolutionLimit` constructor option
|
|
73
|
+
- Rename `networkConfig` into `requestConfig` and re-organize its inner properties to pave
|
|
74
|
+
the way for future request-related APIs.
|
|
75
|
+
- Remove `stopAtEnd` `loadVideo` option and don't automatically stop when reaching the end
|
|
76
|
+
by default. This behavior can be counter-intuitive and can be very easily implemented by
|
|
77
|
+
the application.
|
|
78
|
+
- Remove `decipherabilityUpdate` event as it appeared to be not easily exploitable and
|
|
79
|
+
exposed internal logic too much [#1168]
|
|
80
|
+
- Remove `getUrl` method in profit of the more powerful `getContentUrls`
|
|
81
|
+
- Impossibility to play the content due to unsupported audio and/or video tracks now
|
|
82
|
+
triggers an error with the `MANIFEST_INCOMPATIBLE_CODECS_ERROR` instead of
|
|
83
|
+
`MANIFEST_PARSE_ERROR`
|
|
84
|
+
- Remove methods: `getManifest`, `getCurrentAdaptations` and `getCurrentRepresentations`,
|
|
85
|
+
as they reveal the RxPlayer's internals too much
|
|
86
|
+
- The `"smooth"` transport now needs to be communicated the URL of the Manifest directly
|
|
87
|
+
(previously, it was possible to redirect it to a XML or JSON file first due to Canal+
|
|
88
|
+
legacy reasons).
|
|
89
|
+
- Remove the `supplementaryTextTracks` loadVideo option. You can use the
|
|
90
|
+
`TextTrackRenderer` tool if you wish to diplay external subtitles on top of your
|
|
91
|
+
content.
|
|
92
|
+
- Rename `maximumBufferTime` in `positionUpdate` events to `maximumPosition`
|
|
93
|
+
- Remove `getVideoPlayedTime` and `getVideoLoadedTime` methods. Their names was very
|
|
94
|
+
confusing and can be re-implemented relatively easily using the media element's buffered
|
|
95
|
+
property.
|
|
96
|
+
- Rename `getVideoDuration` to `getMediaDuration`, to avoid confusion with the video
|
|
97
|
+
track's duration.
|
|
98
|
+
- Rename `getVideoBufferGap` to `getCurrentBufferGap`, to avoid confusion with the "buffer
|
|
99
|
+
gap" specific to the video track.
|
|
100
|
+
- Remove image-related API: `supplementaryImageTracks` `loadVideo` option,
|
|
101
|
+
`imageTrackUpdate` event, `getImageTrackData` method. Those are better handled by an
|
|
102
|
+
application. The `parseBifThumbnails` tool is still available.
|
|
103
|
+
- Replace `keySystems[].licenseStorage` `keySystems` option (for a `loadVideo` call) by
|
|
104
|
+
the better-named `persistentLicenseConfig`. The `persistentLicense` boolean (also a
|
|
105
|
+
`keySystems` option) has also been removed because it was redundant with it) [#1147]
|
|
106
|
+
- Remove `persistentStateRequired` API, in profit of the more powerful `persistentState`
|
|
107
|
+
API [#1148]
|
|
108
|
+
- Remove `distinctiveIdentifierRequired` API, in profit of the more powerful
|
|
109
|
+
`distinctiveIdentifier` API [#1148]
|
|
110
|
+
- Remove `keySystems[].fallbackOn` `loadVideo` property as it's now replaced by the more
|
|
111
|
+
powerful `keySystems[].onKeyOutputRestricted` and `keySystems[].onKeyInternalError`
|
|
112
|
+
properties.
|
|
113
|
+
- Remove `keySystems[].onKeyStatusesChange` API as it seems to never be used [#1148]
|
|
114
|
+
- Remove `keySystems[].throwOnLicenseExpiration` API as it can now be fully replaced by
|
|
115
|
+
the `keySystems[].onKeyExpiration` option
|
|
116
|
+
- Remove `aggressiveMode` from the `transportOptions` `loadVideo` option
|
|
117
|
+
- Remove deprecated `throttleWhenHidden` player option in profit of
|
|
118
|
+
`throttleVideoBitrateWhenHidden`
|
|
119
|
+
- Change payload of `periodChange` events, so they emit only core properties related to a
|
|
120
|
+
`Period`.
|
|
121
|
+
- Change arguments given to a `transportOptions.segmentLoader` function (the `loadVideo`
|
|
122
|
+
option): it now doesn't give the full `Manifest`, `Period`, `Adaptation`,
|
|
123
|
+
`Representation` and `ISegment` structures in arguments but only core properties from it
|
|
124
|
+
[#995]
|
|
125
|
+
- Custom `manifestLoader` function added to what was previously the `loadVideo`'s
|
|
126
|
+
`transportOptions` option now set an object as argument (with an `url`property), to let
|
|
127
|
+
us bring improvements on it in the future [#995]
|
|
128
|
+
- A Representation's `frameRate` is now always a number - in terms of frame per seconds -
|
|
129
|
+
instead of a string.
|
|
130
|
+
- Update the arguments of the `representationFilter` API
|
|
131
|
+
- `Representations` (in methods: `getAvailableVideoTracks`, `getVideoTrack`,
|
|
132
|
+
`representationFilter`, `getAvailableAudioTracks`, `getAudioTrack` and events:
|
|
133
|
+
`audioTrackChange` and `videoTrackChange`) can have an `undefined` bitrate
|
|
134
|
+
- Remove deprecated fullscreen related APIs (methods: `isFullscreen`, `setFullscreen`,
|
|
135
|
+
`exitFullscreen`, event: `fullscreenChange`) as a a UI is much more adapted to that task
|
|
136
|
+
and can also bring with it things like a progress bar or HTML text tracks
|
|
137
|
+
- Remove deprecated `getNativeTextTrack` method. If advanced features are wanted, it's
|
|
138
|
+
better to just use the HTML text track API
|
|
139
|
+
- Remove deprecated `nativeTextTracksChange` event. Same reason than for
|
|
140
|
+
`getNativeTextTrack`
|
|
141
|
+
- Remove deprecated `hideNativeSubtitles` from `loadVideo` options. Same reason than for
|
|
142
|
+
`getNativeTextTrack`
|
|
143
|
+
- Remove `xhr` property from a `NetworkError`. Doing so stop us from using the fetch API
|
|
144
|
+
- Remove deprecated `defaultAudioTrack` and `defaultTextTrack`in profit of new track APIs
|
|
145
|
+
- Remove `bitrateEstimationChange` event as it is poorly understood (it's not always close
|
|
146
|
+
to the expected bandwidth) and has a very complex relationship with the chosen quality.
|
|
147
|
+
- Remove the notion of environment variables linked to personalized builds (e.g. RXP_DASH)
|
|
148
|
+
in profit of the minimal RxPlayer.
|
|
149
|
+
- Rename `IPersistentSessionStorage` type to `IPersistentLicenseConfig` [#1147]
|
|
150
|
+
- Remove undocumented `audioRobustnesses` and `videoRobustnesses` properties of the
|
|
151
|
+
`keySystems` option of `loadVideo` calls, as more powerful solutions now exist:
|
|
152
|
+
respectively `audioCapabilitiesConfig` and `videoCapabilitiesConfig` [#1148]
|
|
153
|
+
- Remove public types `ISupplementaryTextTrackOption` and
|
|
154
|
+
`ISupplementaryImageTrackOption`. Those are the types respectively for
|
|
155
|
+
`supplementaryTextTracks` and `supplementaryImageTracks` which have been removed
|
|
156
|
+
- Remove public types `IBitrateEstimate` as no API depend on it anymore.
|
|
157
|
+
- Remove public types `IManifest`, `IPeriod`, `IAdaptation`, `IRepresentation`,
|
|
158
|
+
`IRepresentationInfos`, `IBifThumbnail`, `IBifObject` and `IExposedSegment` as no API
|
|
159
|
+
depend on them anymore.
|
|
160
|
+
- Remove public types `IDefaultAudioTrackOption` and `IDefaultTextTrackOption`. Those are
|
|
161
|
+
the types respectively for `defaultAudioTrack` and `defaultTextTrack` `loadVideo`
|
|
162
|
+
options which have been removed
|
|
163
|
+
- Remove public types `IAudioTrackPreference`, `ITextTrackPreference` and
|
|
164
|
+
`IVideoTrackPreference` as the corresponding API do not exist anymore.
|
|
165
|
+
- Stop officially supporting the Internet Explorer 11 browser
|
|
166
|
+
- The `MediaError`'s `trackInfo` property is now an array renamed as `tracksInfo` and
|
|
167
|
+
similar `MediaError` are grouped in one [#1264]
|
|
168
|
+
- The `manifestUpdateUrl` `loadVideo` option has been removed as it was unused [#1276]
|
|
169
|
+
- `volumeChange` events are now sending both the audio volume and the muted status [#1348]
|
|
170
|
+
- `mute`/`unMute`/`isMute` now rely on the `HTMLMediaElement`'s `muted` property and not
|
|
171
|
+
the audio volume [#1348]
|
|
172
|
+
- A `representationFilter`'s advertised `codec` has now been renamed to `codecs` and is an
|
|
173
|
+
Array when defined [#1332]
|
|
174
|
+
- `DASH_WASM` and `DEBUG_ELEMENT` are not experimental features anymore [#1339]
|
|
175
|
+
- The `parseBifThumbnails` function is not an experimental tool anymore [#1339]
|
|
176
|
+
- If all Representations from the current track become undecipherable, automatically
|
|
177
|
+
switch to another track (also send a `trackUpdate` event) instead of stopping on error
|
|
178
|
+
[#1234]
|
|
179
|
+
- Only send `MediaError` errors with the `NO_PLAYABLE_REPRESENTATION` error code when no
|
|
180
|
+
Representation from all tracks of a given type can be played [#1234]
|
|
93
181
|
|
|
94
182
|
### Features
|
|
95
183
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
184
|
+
- Add `MULTI_THREAD` experimental feature to enable multithreading capabilities through a
|
|
185
|
+
WebWorker
|
|
186
|
+
- Add `attachWorker` method to attach a WebWorker to an RxPlayer instance.
|
|
187
|
+
- `setAudioTrack`, `setVideoTrack` and `setTextTrack` now may take an object in argument,
|
|
188
|
+
with the track's id set as a `trackId` property, to allow new features
|
|
189
|
+
- Add `switchingMode` optional property to `setVideoTrack` and `setAudioTrack`, to
|
|
190
|
+
configure the way in which the RxPlayer switches between the previous and new track
|
|
191
|
+
- Add optional `periodId` property to `setAudioTrack`, `setVideoTrack` and `setTextTrack`,
|
|
192
|
+
to allow setting the track of another, future or past, Period.
|
|
193
|
+
- `getAvailableAudioTracks`, `getAvailableTextTracks`, `getAvailableVideoTracks`,
|
|
194
|
+
`getAudioTrack`, `getTextTrack` and `getVideoTrack` can now optionally take a `periodId`
|
|
195
|
+
argument to retrieve track information on a specific Period, different than the current
|
|
196
|
+
one.
|
|
197
|
+
- `disableTextTrack`, and`disableVideoTrack` can now optionally take a `periodId` argument
|
|
198
|
+
to disable a track for a specific Period
|
|
199
|
+
- Add optional `lockedRepresentations` property to `setAudioTrack` and `setVideoTrack`, to
|
|
200
|
+
only filter some allowed Representations (i.e. qualities) after switching to the wanted
|
|
201
|
+
track.
|
|
202
|
+
- Add `getCurrentPeriod` method to retrieve information on the Period currently played
|
|
203
|
+
- Add `getAvailablePeriods` method to retrieve information on all Periods on which a track
|
|
204
|
+
or Representation choice can be made
|
|
205
|
+
- Add `lockVideoRepresentations`, `lockAudioRepresentations`,
|
|
206
|
+
`getLockedVideoRepresentations`, `getLockedAudioRepresentations`,
|
|
207
|
+
`unlockVideoRepresentations` and `unlockAudioRepresentations` methods to allow a complex
|
|
208
|
+
selection of Representations that are currently allowed to play.
|
|
209
|
+
- Add `getVideoRepresentation` and `getAudioRepresentation` method to retrieve information
|
|
210
|
+
on the currently loaded representations [#1144]
|
|
211
|
+
- Add `audioRepresentationChange` and `videoRepresentationChange` events to be notified
|
|
212
|
+
when the currently-loaded Representation for the current Period changes.
|
|
213
|
+
- Add `getContentUrls` allowing to retrieve the one or several known URLs through which
|
|
214
|
+
the current Manifest or content is reachable.
|
|
215
|
+
- Add `videoResolutionLimit` constructor option allowing to automatically limit a video
|
|
216
|
+
Representation's resolution.
|
|
217
|
+
- Add `newAvailablePeriods` event to signal new Period on which a track and/or
|
|
218
|
+
Representation choice can be made
|
|
219
|
+
- Add `brokenRepresentationsLock` event for when a Representations lock could not be
|
|
220
|
+
respected anymore
|
|
221
|
+
- Add `trackUpdate` event for when a track has been updated for any type and Period
|
|
222
|
+
- Add `distinctiveIdentifier` property in the `keySystems` option (given to the
|
|
223
|
+
`loadVideo` method) to have full control over the MediaKeySystemConfiguration of the
|
|
224
|
+
same name in the chosen key system [#1148]
|
|
225
|
+
- Add `persistentState` property in the `keySystems` option (given to the `loadVideo`
|
|
226
|
+
method) to have full control over the MediaKeySystemConfiguration of the same name in
|
|
227
|
+
the chosen key system [#1148]
|
|
228
|
+
- Add `keySystems[].onKeyOutputRestricted` and `keySystems[].onKeyInternalError`
|
|
229
|
+
properties to configure the RxPlayer's behavior when a key switches to the status
|
|
230
|
+
respectively `"output-restricted"` and `"internal-error"`
|
|
231
|
+
- Add `audioCapabilitiesConfig` and `videoCapabilitiesConfig` properties in the
|
|
232
|
+
`keySystems` option (given to the `loadVideo` method) to allow advanced configuration of
|
|
233
|
+
respectively the "audioCapabilities" and "videoCapabilities" in the asked
|
|
234
|
+
MediaKeySystemConfiguration [#1148]
|
|
235
|
+
- Add `representationListUpdate` event for when the list of available Representation for a
|
|
236
|
+
current track changes [#1240]
|
|
237
|
+
- add `connectionTimeout` property to the `requestConfig` `loadVideo` option for both the
|
|
238
|
+
manifest and segment requests to set a timeout just linked to HTTP connection
|
|
239
|
+
establishment [#1319]
|
|
240
|
+
- Add `relativeResumingPosition` property to the `setVideoTrack`and `setAudioTrack`
|
|
241
|
+
options [#1331]
|
|
242
|
+
- types: export type `ICompatibleKeySystem` to the public API [#1340]
|
|
243
|
+
- types: Add `ISegmentLoaderContext` public type for the first argument of the
|
|
244
|
+
`segmentLoader` API
|
|
245
|
+
- types: Add `IRepresentationFilterRepresentation` public type for the first argument of
|
|
246
|
+
the `representationFilter` API
|
|
247
|
+
- types: Add `IRepresentationContext` public type for the second argument of the
|
|
248
|
+
`representationFilter` API
|
|
249
|
+
- types: Add `IManifestLoaderInfo` public type for the first argument of the
|
|
250
|
+
`manifestLoader` API
|
|
251
|
+
- types: Add `IPeriodChangeEvent` public type to define the properties send through a
|
|
252
|
+
`periodChange` event
|
|
253
|
+
- types: Add `IPeriod` public type to define a Period object returned by methods like
|
|
254
|
+
`getAvailablePeriods` or `getCurrentPeriod`
|
|
255
|
+
- types: Add `IVideoTrackSwitchingMode` public type to define the type of the
|
|
256
|
+
`switchingMode` property optionally given to `setAudioTrack`
|
|
257
|
+
- types: Add `IAudioRepresentationsSwitchingMode` public type to define the type of the
|
|
258
|
+
`switchingMode` property optionally given to `lockAudioRepresentations`
|
|
259
|
+
- types: Add `IVideoRepresentationsSwitchingMode` public type to define the type of the
|
|
260
|
+
`switchingMode` property optionally given to `lockAudioRepresentations`
|
|
261
|
+
- types: Add `IBrokenRepresentationsLockContext` public type to define the type sent as a
|
|
262
|
+
payload of the `brokenRepresentationsLock` event
|
|
263
|
+
- types: Add `ITrackUpdateEventPayload` public type to define the type sent as a payload
|
|
264
|
+
of the `trackUpdate` event
|
|
265
|
+
- types: Add `ILockedVideoRepresentationsSettings` public type to define the object that
|
|
266
|
+
should be given to the new `lockVideoRepresentation` method
|
|
267
|
+
- types: Add `ILockedAudioRepresentationsSettings` public type to define the object that
|
|
268
|
+
should be given to the new `lockAudioRepresentation` method
|
|
269
|
+
- types: Add `IAudioTrackSetting` public type to define the object that may be given to
|
|
270
|
+
the `setAudioTrack` method
|
|
271
|
+
- types: Add `IVideoTrackSetting` public type to define the object that may be given to
|
|
272
|
+
the `setVideoTrack` method
|
|
273
|
+
- types: Add `ITextTrackSetting` public type to define the object that may be given to the
|
|
274
|
+
`setTextTrack` method
|
|
138
275
|
|
|
139
276
|
### Bug fixes
|
|
140
277
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
278
|
+
- Tizen (Samsung TVs): Try again to work around all potential issues that could arise due
|
|
279
|
+
to tizen seeking back by itself [#1327, #1355]
|
|
280
|
+
- dash: Don't unnecessarily reload external `<UTCTiming>` resources at each refresh if it
|
|
281
|
+
failed for the first request of the Manifest [#1370]
|
|
282
|
+
- dash: The `DASH_WASM` feature do not rely on WebAssembly's sign-extension operators
|
|
283
|
+
anymore as that is poorly supported on older Samsung and LG TVs [#1372]
|
|
144
284
|
|
|
145
285
|
### Other improvements
|
|
146
286
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
287
|
+
- Provide both commonJS and ES6-style exports to improve compatibilities with applications
|
|
288
|
+
- Implement better error messages by not repeating the Error Type in it [#1290]
|
|
289
|
+
- DRM: Reload when playback is unexpectedly frozen with encrypted but only decipherable
|
|
290
|
+
data in the buffer to work-around rare encryption-related issues [#1236]
|
|
291
|
+
- Add cache when checking for codec support, improving performance on some devices and
|
|
292
|
+
potentially working around some xbox bugs on long-lived pages [#1324]
|
|
293
|
+
- Demo: Add possibility to see the debug element in the demo page
|
|
152
294
|
|
|
153
295
|
## v3.33.0 (2024-01-24)
|
|
154
296
|
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
4.1.0-dev.
|
|
1
|
+
4.1.0-dev.2024040900
|