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.
Files changed (142) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/VERSION +1 -1
  3. package/dist/_esm5.processed/core/api/option_utils.js +7 -11
  4. package/dist/_esm5.processed/core/api/public_api.d.ts +4 -4
  5. package/dist/_esm5.processed/core/api/public_api.js +18 -19
  6. package/dist/_esm5.processed/core/api/{media_element_track_choice_manager.d.ts → tracks_management/media_element_track_choice_manager.d.ts} +2 -2
  7. package/dist/_esm5.processed/core/api/{media_element_track_choice_manager.js → tracks_management/media_element_track_choice_manager.js} +7 -4
  8. package/dist/_esm5.processed/core/api/{track_choice_manager.d.ts → tracks_management/track_choice_manager.d.ts} +2 -2
  9. package/dist/_esm5.processed/core/api/{track_choice_manager.js → tracks_management/track_choice_manager.js} +7 -7
  10. package/dist/_esm5.processed/core/api/{emit_seek_events.d.ts → utils.d.ts} +24 -1
  11. package/dist/_esm5.processed/core/api/{emit_seek_events.js → utils.js} +32 -1
  12. package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +26 -0
  13. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +101 -9
  14. package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +15 -18
  15. package/dist/_esm5.processed/core/decrypt/session_events_listener.js +9 -7
  16. package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.d.ts +19 -22
  17. package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.js +87 -16
  18. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +1 -2
  19. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +1 -2
  20. package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
  21. package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -3
  22. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +9 -9
  23. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +17 -15
  24. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +33 -40
  25. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +156 -153
  26. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +3 -3
  27. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +2 -2
  28. package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.d.ts +145 -0
  29. package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.js +325 -0
  30. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.d.ts +2 -2
  31. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +3 -3
  32. package/dist/_esm5.processed/core/init/create_media_source.d.ts +10 -0
  33. package/dist/_esm5.processed/core/init/create_media_source.js +1 -1
  34. package/dist/_esm5.processed/core/init/stall_avoider.d.ts +2 -1
  35. package/dist/_esm5.processed/core/init/stall_avoider.js +2 -1
  36. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
  37. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -3
  38. package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +6 -2
  39. package/dist/_esm5.processed/core/stream/orchestrator/{get_blacklisted_ranges.d.ts → get_time_ranges_for_content.d.ts} +1 -1
  40. package/dist/_esm5.processed/core/stream/orchestrator/{get_blacklisted_ranges.js → get_time_ranges_for_content.js} +1 -1
  41. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +61 -19
  42. package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +8 -4
  43. package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +200 -83
  44. package/dist/_esm5.processed/core/stream/types.d.ts +3 -1
  45. package/dist/_esm5.processed/errors/encrypted_media_error.d.ts +6 -1
  46. package/dist/_esm5.processed/errors/encrypted_media_error.js +4 -5
  47. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/index.d.ts +1 -1
  48. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/index.js +1 -1
  49. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.d.ts +26 -0
  50. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.js +60 -0
  51. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.d.ts +6 -5
  52. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +40 -9
  53. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.d.ts +3 -2
  54. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.js +7 -14
  55. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.d.ts +1 -1
  56. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/{thumbnail_loader.d.ts → video_thumbnail_loader.d.ts} +1 -13
  57. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +331 -0
  58. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.d.ts +1 -2
  59. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.js +1 -2
  60. package/dist/_esm5.processed/features/initialize_features.js +2 -1
  61. package/dist/_esm5.processed/features/list/directfile.js +1 -1
  62. package/dist/_esm5.processed/features/types.d.ts +1 -1
  63. package/dist/_esm5.processed/manifest/index.d.ts +2 -2
  64. package/dist/_esm5.processed/public_types.d.ts +47 -0
  65. package/dist/_esm5.processed/utils/reference.d.ts +23 -3
  66. package/dist/_esm5.processed/utils/reference.js +23 -2
  67. package/dist/rx-player.js +1253 -1014
  68. package/dist/rx-player.min.js +1 -1
  69. package/package.json +1 -1
  70. package/sonar-project.properties +1 -1
  71. package/src/core/api/README.md +1 -1
  72. package/src/core/api/__tests__/{get_player_state.test.ts → utils.test.ts} +1 -1
  73. package/src/core/api/option_utils.ts +1 -5
  74. package/src/core/api/public_api.ts +15 -13
  75. package/src/core/api/{__tests__ → tracks_management/__tests__}/media_element_track_choice_manager.test.ts +0 -0
  76. package/src/core/api/{media_element_track_choice_manager.ts → tracks_management/media_element_track_choice_manager.ts} +10 -7
  77. package/src/core/api/{track_choice_manager.ts → tracks_management/track_choice_manager.ts} +9 -9
  78. package/src/core/api/{get_player_state.ts → utils.ts} +62 -11
  79. package/src/core/decrypt/content_decryptor.ts +112 -13
  80. package/src/core/decrypt/session_events_listener.ts +34 -30
  81. package/src/core/decrypt/utils/check_key_statuses.ts +89 -45
  82. package/src/core/decrypt/utils/persistent_sessions_store.ts +1 -2
  83. package/src/core/fetchers/index.ts +0 -12
  84. package/src/core/fetchers/segment/__tests__/task_prioritizer.test.ts +763 -0
  85. package/src/core/fetchers/segment/index.ts +0 -12
  86. package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +40 -47
  87. package/src/core/fetchers/segment/segment_fetcher.ts +249 -268
  88. package/src/core/fetchers/segment/segment_fetcher_creator.ts +6 -7
  89. package/src/core/fetchers/segment/task_prioritizer.ts +460 -0
  90. package/src/core/fetchers/utils/try_urls_with_backoff.ts +3 -3
  91. package/src/core/init/create_media_source.ts +1 -1
  92. package/src/core/init/stall_avoider.ts +2 -1
  93. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +1 -1
  94. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +3 -3
  95. package/src/core/segment_buffers/implementations/types.ts +6 -2
  96. package/src/core/stream/orchestrator/{get_blacklisted_ranges.ts → get_time_ranges_for_content.ts} +1 -1
  97. package/src/core/stream/orchestrator/stream_orchestrator.ts +115 -56
  98. package/src/core/stream/representation/downloading_queue.ts +269 -142
  99. package/src/core/stream/types.ts +3 -1
  100. package/src/errors/encrypted_media_error.ts +20 -1
  101. package/src/experimental/tools/VideoThumbnailLoader/index.ts +1 -1
  102. package/src/experimental/tools/VideoThumbnailLoader/load_and_push_segment.ts +74 -0
  103. package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +50 -16
  104. package/src/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.ts +14 -21
  105. package/src/experimental/tools/VideoThumbnailLoader/types.ts +7 -4
  106. package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +407 -0
  107. package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.ts +1 -2
  108. package/src/features/__tests__/initialize_features.test.ts +3 -1
  109. package/src/features/initialize_features.ts +2 -1
  110. package/src/features/list/__tests__/directfile.test.ts +1 -1
  111. package/src/features/list/directfile.ts +1 -1
  112. package/src/features/types.ts +1 -1
  113. package/src/manifest/index.ts +2 -0
  114. package/src/public_types.ts +53 -0
  115. package/src/utils/reference.ts +58 -4
  116. package/dist/_esm5.processed/core/api/get_player_state.d.ts +0 -28
  117. package/dist/_esm5.processed/core/api/get_player_state.js +0 -56
  118. package/dist/_esm5.processed/core/fetchers/segment/prioritizer.d.ts +0 -232
  119. package/dist/_esm5.processed/core/fetchers/segment/prioritizer.js +0 -422
  120. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +0 -29
  121. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +0 -68
  122. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_complete_segment_id.d.ts +0 -24
  123. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_complete_segment_id.js +0 -29
  124. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_content_infos.d.ts +0 -25
  125. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_content_infos.js +0 -40
  126. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.d.ts +0 -33
  127. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +0 -124
  128. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +0 -17
  129. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +0 -41
  130. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +0 -22
  131. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.js +0 -21
  132. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +0 -212
  133. package/src/core/api/emit_seek_events.ts +0 -66
  134. package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +0 -962
  135. package/src/core/fetchers/segment/prioritizer.ts +0 -558
  136. package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +0 -113
  137. package/src/experimental/tools/VideoThumbnailLoader/get_complete_segment_id.ts +0 -34
  138. package/src/experimental/tools/VideoThumbnailLoader/get_content_infos.ts +0 -48
  139. package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +0 -171
  140. package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +0 -69
  141. package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +0 -48
  142. 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 declare function createSharedReference<T>(initialValue: T): ISharedReference<T>;
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 default createSharedReference;
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 default createSharedReference;
235
+ export { createSharedReference };