rx-player 3.29.0-dev.2022090500 → 3.29.0-dev.2022091600
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 +5 -1
- package/VERSION +1 -1
- package/dist/_esm5.processed/core/api/option_utils.js +7 -11
- package/dist/_esm5.processed/core/api/public_api.d.ts +4 -4
- package/dist/_esm5.processed/core/api/public_api.js +18 -19
- package/dist/_esm5.processed/core/api/{media_element_track_choice_manager.d.ts → tracks_management/media_element_track_choice_manager.d.ts} +2 -2
- package/dist/_esm5.processed/core/api/{media_element_track_choice_manager.js → tracks_management/media_element_track_choice_manager.js} +7 -4
- package/dist/_esm5.processed/core/api/{track_choice_manager.d.ts → tracks_management/track_choice_manager.d.ts} +2 -2
- package/dist/_esm5.processed/core/api/{track_choice_manager.js → tracks_management/track_choice_manager.js} +7 -7
- package/dist/_esm5.processed/core/api/{emit_seek_events.d.ts → utils.d.ts} +24 -1
- package/dist/_esm5.processed/core/api/{emit_seek_events.js → utils.js} +32 -1
- package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +26 -0
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +101 -9
- package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +15 -18
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +9 -7
- package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.d.ts +19 -22
- package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.js +87 -16
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +1 -2
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +1 -2
- package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -3
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +9 -9
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +17 -15
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +33 -40
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +156 -153
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +3 -3
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.d.ts +145 -0
- package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.js +325 -0
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +3 -3
- package/dist/_esm5.processed/core/init/create_media_source.d.ts +10 -0
- package/dist/_esm5.processed/core/init/create_media_source.js +1 -1
- package/dist/_esm5.processed/core/init/stall_avoider.d.ts +2 -1
- package/dist/_esm5.processed/core/init/stall_avoider.js +2 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +6 -2
- package/dist/_esm5.processed/core/stream/orchestrator/{get_blacklisted_ranges.d.ts → get_time_ranges_for_content.d.ts} +1 -1
- package/dist/_esm5.processed/core/stream/orchestrator/{get_blacklisted_ranges.js → get_time_ranges_for_content.js} +1 -1
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +61 -19
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +8 -4
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +200 -83
- package/dist/_esm5.processed/core/stream/types.d.ts +3 -1
- package/dist/_esm5.processed/errors/encrypted_media_error.d.ts +6 -1
- package/dist/_esm5.processed/errors/encrypted_media_error.js +4 -5
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/index.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/index.js +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.d.ts +26 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.js +60 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.d.ts +6 -5
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +40 -9
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.d.ts +3 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.js +7 -14
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/{thumbnail_loader.d.ts → video_thumbnail_loader.d.ts} +1 -13
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +331 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.d.ts +1 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.js +1 -2
- package/dist/_esm5.processed/features/initialize_features.js +2 -1
- package/dist/_esm5.processed/features/list/directfile.js +1 -1
- package/dist/_esm5.processed/features/types.d.ts +1 -1
- package/dist/_esm5.processed/manifest/index.d.ts +2 -2
- package/dist/_esm5.processed/public_types.d.ts +47 -0
- package/dist/_esm5.processed/utils/reference.d.ts +23 -3
- package/dist/_esm5.processed/utils/reference.js +23 -2
- package/dist/rx-player.js +1253 -1014
- package/dist/rx-player.min.js +1 -1
- package/package.json +1 -1
- package/sonar-project.properties +1 -1
- package/src/core/api/README.md +1 -1
- package/src/core/api/__tests__/{get_player_state.test.ts → utils.test.ts} +1 -1
- package/src/core/api/option_utils.ts +1 -5
- package/src/core/api/public_api.ts +15 -13
- package/src/core/api/{__tests__ → tracks_management/__tests__}/media_element_track_choice_manager.test.ts +0 -0
- package/src/core/api/{media_element_track_choice_manager.ts → tracks_management/media_element_track_choice_manager.ts} +10 -7
- package/src/core/api/{track_choice_manager.ts → tracks_management/track_choice_manager.ts} +9 -9
- package/src/core/api/{get_player_state.ts → utils.ts} +62 -11
- package/src/core/decrypt/content_decryptor.ts +112 -13
- package/src/core/decrypt/session_events_listener.ts +34 -30
- package/src/core/decrypt/utils/check_key_statuses.ts +89 -45
- package/src/core/decrypt/utils/persistent_sessions_store.ts +1 -2
- package/src/core/fetchers/index.ts +0 -12
- package/src/core/fetchers/segment/__tests__/task_prioritizer.test.ts +763 -0
- package/src/core/fetchers/segment/index.ts +0 -12
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +40 -47
- package/src/core/fetchers/segment/segment_fetcher.ts +249 -268
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +6 -7
- package/src/core/fetchers/segment/task_prioritizer.ts +460 -0
- package/src/core/fetchers/utils/try_urls_with_backoff.ts +3 -3
- package/src/core/init/create_media_source.ts +1 -1
- package/src/core/init/stall_avoider.ts +2 -1
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +1 -1
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +3 -3
- package/src/core/segment_buffers/implementations/types.ts +6 -2
- package/src/core/stream/orchestrator/{get_blacklisted_ranges.ts → get_time_ranges_for_content.ts} +1 -1
- package/src/core/stream/orchestrator/stream_orchestrator.ts +115 -56
- package/src/core/stream/representation/downloading_queue.ts +269 -142
- package/src/core/stream/types.ts +3 -1
- package/src/errors/encrypted_media_error.ts +20 -1
- package/src/experimental/tools/VideoThumbnailLoader/index.ts +1 -1
- package/src/experimental/tools/VideoThumbnailLoader/load_and_push_segment.ts +74 -0
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +50 -16
- package/src/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.ts +14 -21
- package/src/experimental/tools/VideoThumbnailLoader/types.ts +7 -4
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +407 -0
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.ts +1 -2
- package/src/features/__tests__/initialize_features.test.ts +3 -1
- package/src/features/initialize_features.ts +2 -1
- package/src/features/list/__tests__/directfile.test.ts +1 -1
- package/src/features/list/directfile.ts +1 -1
- package/src/features/types.ts +1 -1
- package/src/manifest/index.ts +2 -0
- package/src/public_types.ts +53 -0
- package/src/utils/reference.ts +58 -4
- package/dist/_esm5.processed/core/api/get_player_state.d.ts +0 -28
- package/dist/_esm5.processed/core/api/get_player_state.js +0 -56
- package/dist/_esm5.processed/core/fetchers/segment/prioritizer.d.ts +0 -232
- package/dist/_esm5.processed/core/fetchers/segment/prioritizer.js +0 -422
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +0 -29
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +0 -68
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_complete_segment_id.d.ts +0 -24
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_complete_segment_id.js +0 -29
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_content_infos.d.ts +0 -25
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_content_infos.js +0 -40
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.d.ts +0 -33
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +0 -124
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +0 -17
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +0 -41
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +0 -22
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.js +0 -21
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +0 -212
- package/src/core/api/emit_seek_events.ts +0 -66
- package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +0 -962
- package/src/core/fetchers/segment/prioritizer.ts +0 -558
- package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +0 -113
- package/src/experimental/tools/VideoThumbnailLoader/get_complete_segment_id.ts +0 -34
- package/src/experimental/tools/VideoThumbnailLoader/get_content_infos.ts +0 -48
- package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +0 -171
- package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +0 -69
- package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +0 -48
- package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +0 -311
|
@@ -447,6 +447,7 @@ export interface IKeySystemOption {
|
|
|
447
447
|
/**
|
|
448
448
|
* If explicitely set to `false`, we won't throw on error when a used license
|
|
449
449
|
* is expired.
|
|
450
|
+
* @deprecated
|
|
450
451
|
*/
|
|
451
452
|
throwOnLicenseExpiration?: boolean;
|
|
452
453
|
/**
|
|
@@ -476,6 +477,42 @@ export interface IKeySystemOption {
|
|
|
476
477
|
*/
|
|
477
478
|
keyOutputRestricted?: boolean;
|
|
478
479
|
};
|
|
480
|
+
/**
|
|
481
|
+
* Behavior the RxPlayer should have when one of the key is known to be
|
|
482
|
+
* expired.
|
|
483
|
+
*
|
|
484
|
+
* `onKeyExpiration` can be set to a string, each describing a different
|
|
485
|
+
* behavior, the default one if not is defined being `"error"`:
|
|
486
|
+
*
|
|
487
|
+
* - `"error"`: The RxPlayer will stop on an error when any key is expired.
|
|
488
|
+
* This is the default behavior.
|
|
489
|
+
*
|
|
490
|
+
* - `"continue"`: The RxPlayer will not do anything when a key expires.
|
|
491
|
+
* This may lead in many cases to infinite rebuffering.
|
|
492
|
+
*
|
|
493
|
+
* - `"fallback"`: The Representation(s) linked to the expired key(s) will
|
|
494
|
+
* be fallbacked from, meaning the RxPlayer will switch to other
|
|
495
|
+
* representation without expired keys.
|
|
496
|
+
*
|
|
497
|
+
* If no Representation remain, a NO_PLAYABLE_REPRESENTATION error will
|
|
498
|
+
* be thrown.
|
|
499
|
+
*
|
|
500
|
+
* Note that when the "fallbacking" action is taken, the RxPlayer might
|
|
501
|
+
* temporarily switch to the `"RELOADING"` state - which should thus be
|
|
502
|
+
* properly handled.
|
|
503
|
+
*
|
|
504
|
+
* - `"close-session"`: The RxPlayer will close and re-create a DRM session
|
|
505
|
+
* (and thus re-download the corresponding license) if any of the key
|
|
506
|
+
* associated to this session expired.
|
|
507
|
+
*
|
|
508
|
+
* It will try to do so in an efficient manner, only reloading the license
|
|
509
|
+
* when the corresponding content plays.
|
|
510
|
+
*
|
|
511
|
+
* The RxPlayer might go through the `"RELOADING"` state after an expired
|
|
512
|
+
* key and/or light decoding glitches can arise, depending on the
|
|
513
|
+
* platform, for some seconds, under that mode.
|
|
514
|
+
*/
|
|
515
|
+
onKeyExpiration?: "error" | "continue" | "fallback" | "close-session";
|
|
479
516
|
}
|
|
480
517
|
/**
|
|
481
518
|
* Data stored in a persistent MediaKeySession storage.
|
|
@@ -672,4 +709,14 @@ export interface IAvailableTextTrack extends ITextTrack {
|
|
|
672
709
|
export interface IAvailableVideoTrack extends IVideoTrack {
|
|
673
710
|
active: boolean;
|
|
674
711
|
}
|
|
712
|
+
/**
|
|
713
|
+
* Type of a single object from the optional `EncryptedMediaError`'s
|
|
714
|
+
* `keyStatuses` property.
|
|
715
|
+
*/
|
|
716
|
+
export interface IEncryptedMediaErrorKeyStatusObject {
|
|
717
|
+
/** Corresponding keyId which encountered the problematic MediaKeyStatus. */
|
|
718
|
+
keyId: ArrayBuffer;
|
|
719
|
+
/** Problematic MediaKeyStatus encountered. */
|
|
720
|
+
keyStatus: MediaKeyStatus;
|
|
721
|
+
}
|
|
675
722
|
export {};
|
|
@@ -93,7 +93,24 @@ export interface ISharedReference<T> {
|
|
|
93
93
|
onUpdate(cb: (val: T) => void, options?: {
|
|
94
94
|
clearSignal?: CancellationSignal | undefined;
|
|
95
95
|
emitCurrentValue?: boolean | undefined;
|
|
96
|
-
}): void;
|
|
96
|
+
} | undefined): void;
|
|
97
|
+
/**
|
|
98
|
+
* Variant of `onUpdate` which will only call the callback once, once the
|
|
99
|
+
* value inside the reference is different from `undefined`.
|
|
100
|
+
* The callback is called synchronously if the value already isn't set to
|
|
101
|
+
* `undefined`.
|
|
102
|
+
*
|
|
103
|
+
* This method can be used as a lighter weight alternative to `onUpdate` when
|
|
104
|
+
* just waiting that the stored value becomes defined.
|
|
105
|
+
* @param {Function} cb - Callback to be called each time the reference is
|
|
106
|
+
* updated. Takes the new value im argument.
|
|
107
|
+
* @param {Object} [options]
|
|
108
|
+
* @param {Object} [options.clearSignal] - Allows to provide a
|
|
109
|
+
* CancellationSignal which will unregister the callback when it emits.
|
|
110
|
+
*/
|
|
111
|
+
waitUntilDefined(cb: (val: Exclude<T, undefined>) => void, options?: {
|
|
112
|
+
clearSignal?: CancellationSignal | undefined;
|
|
113
|
+
} | undefined): void;
|
|
97
114
|
/**
|
|
98
115
|
* Indicate that no new values will be emitted.
|
|
99
116
|
* Allows to automatically close all Observables generated from this shared
|
|
@@ -149,6 +166,9 @@ export interface IReadOnlySharedReference<T> {
|
|
|
149
166
|
clearSignal?: CancellationSignal | undefined;
|
|
150
167
|
emitCurrentValue?: boolean | undefined;
|
|
151
168
|
} | undefined): void;
|
|
169
|
+
waitUntilDefined(cb: (val: Exclude<T, undefined>) => void, options?: {
|
|
170
|
+
clearSignal?: CancellationSignal | undefined;
|
|
171
|
+
} | undefined): void;
|
|
152
172
|
}
|
|
153
173
|
/**
|
|
154
174
|
* Create an `ISharedReference` object encapsulating the mutable `initialValue`
|
|
@@ -158,7 +178,7 @@ export interface IReadOnlySharedReference<T> {
|
|
|
158
178
|
* @param {*} initialValue
|
|
159
179
|
* @returns {Observable}
|
|
160
180
|
*/
|
|
161
|
-
export
|
|
181
|
+
export default function createSharedReference<T>(initialValue: T): ISharedReference<T>;
|
|
162
182
|
/**
|
|
163
183
|
* Create a new `ISharedReference` based on another one by mapping over its
|
|
164
184
|
* referenced value each time it is updated.
|
|
@@ -171,4 +191,4 @@ export declare function createSharedReference<T>(initialValue: T): ISharedRefere
|
|
|
171
191
|
* @returns {Object} - The new, mapped, reference.
|
|
172
192
|
*/
|
|
173
193
|
export declare function createMappedReference<T, U>(originalRef: IReadOnlySharedReference<T>, mappingFn: (x: T) => U, cancellationSignal?: CancellationSignal): IReadOnlySharedReference<U>;
|
|
174
|
-
export
|
|
194
|
+
export { createSharedReference };
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { Observable, } from "rxjs";
|
|
17
|
+
import TaskCanceller from "./task_canceller";
|
|
17
18
|
/**
|
|
18
19
|
* Create an `ISharedReference` object encapsulating the mutable `initialValue`
|
|
19
20
|
* value of type T.
|
|
@@ -22,7 +23,7 @@ import { Observable, } from "rxjs";
|
|
|
22
23
|
* @param {*} initialValue
|
|
23
24
|
* @returns {Observable}
|
|
24
25
|
*/
|
|
25
|
-
export function createSharedReference(initialValue) {
|
|
26
|
+
export default function createSharedReference(initialValue) {
|
|
26
27
|
/** Current value referenced by this `ISharedReference`. */
|
|
27
28
|
var value = initialValue;
|
|
28
29
|
/**
|
|
@@ -162,6 +163,26 @@ export function createSharedReference(initialValue) {
|
|
|
162
163
|
}
|
|
163
164
|
}
|
|
164
165
|
},
|
|
166
|
+
waitUntilDefined: function (cb, options) {
|
|
167
|
+
if (value !== undefined) {
|
|
168
|
+
cb(value);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (isFinished) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
var childCanceller = new TaskCanceller();
|
|
175
|
+
if ((options === null || options === void 0 ? void 0 : options.clearSignal) !== undefined) {
|
|
176
|
+
options.clearSignal.register(function () { return childCanceller.cancel(); });
|
|
177
|
+
}
|
|
178
|
+
this.onUpdate(function (val) {
|
|
179
|
+
if (val !== undefined) {
|
|
180
|
+
childCanceller.cancel();
|
|
181
|
+
cb(value);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
}, { clearSignal: childCanceller.signal });
|
|
185
|
+
},
|
|
165
186
|
/**
|
|
166
187
|
* Indicate that no new values will be emitted.
|
|
167
188
|
* Allows to automatically close all Observables generated from this shared
|
|
@@ -211,4 +232,4 @@ export function createMappedReference(originalRef, mappingFn, cancellationSignal
|
|
|
211
232
|
}
|
|
212
233
|
return newRef;
|
|
213
234
|
}
|
|
214
|
-
export
|
|
235
|
+
export { createSharedReference };
|