rx-player 4.2.0-dev.2024100200 → 4.2.0

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 (77) hide show
  1. package/.vscode/settings.json +9 -0
  2. package/CHANGELOG.md +8 -1
  3. package/VERSION +1 -1
  4. package/dist/commonjs/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
  5. package/dist/commonjs/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
  6. package/dist/commonjs/core/segment_sinks/segment_buffers_store.d.ts.map +1 -1
  7. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.d.ts.map +1 -1
  8. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +85 -8
  9. package/dist/commonjs/main_thread/api/debug/modules/general_info.js +1 -1
  10. package/dist/commonjs/main_thread/api/public_api.js +2 -2
  11. package/dist/commonjs/main_thread/decrypt/create_or_load_session.d.ts.map +1 -1
  12. package/dist/commonjs/main_thread/decrypt/create_or_load_session.js +4 -1
  13. package/dist/commonjs/main_thread/decrypt/find_key_system.d.ts.map +1 -1
  14. package/dist/commonjs/main_thread/decrypt/find_key_system.js +3 -0
  15. package/dist/commonjs/main_thread/decrypt/get_media_keys.d.ts.map +1 -1
  16. package/dist/commonjs/main_thread/decrypt/get_media_keys.js +2 -1
  17. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts +11 -1
  18. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  19. package/dist/commonjs/main_thread/init/media_source_content_initializer.js +23 -11
  20. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts +2 -1
  21. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -1
  22. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.js +9 -5
  23. package/dist/commonjs/main_thread/init/utils/initial_seek_and_play.d.ts.map +1 -1
  24. package/dist/commonjs/main_thread/init/utils/initial_seek_and_play.js +3 -7
  25. package/dist/commonjs/main_thread/text_displayer/native/native_text_displayer.d.ts +1 -0
  26. package/dist/commonjs/main_thread/text_displayer/native/native_text_displayer.d.ts.map +1 -1
  27. package/dist/commonjs/main_thread/text_displayer/native/native_text_displayer.js +19 -16
  28. package/dist/commonjs/public_types.d.ts +54 -2
  29. package/dist/commonjs/public_types.d.ts.map +1 -1
  30. package/dist/commonjs/utils/sync_or_async.d.ts.map +1 -1
  31. package/dist/commonjs/utils/sync_or_async.js +3 -1
  32. package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
  33. package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
  34. package/dist/es2017/core/segment_sinks/segment_buffers_store.d.ts.map +1 -1
  35. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.d.ts.map +1 -1
  36. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +36 -7
  37. package/dist/es2017/main_thread/api/debug/modules/general_info.js +1 -1
  38. package/dist/es2017/main_thread/api/public_api.js +2 -2
  39. package/dist/es2017/main_thread/decrypt/create_or_load_session.d.ts.map +1 -1
  40. package/dist/es2017/main_thread/decrypt/create_or_load_session.js +4 -1
  41. package/dist/es2017/main_thread/decrypt/find_key_system.d.ts.map +1 -1
  42. package/dist/es2017/main_thread/decrypt/find_key_system.js +3 -0
  43. package/dist/es2017/main_thread/decrypt/get_media_keys.d.ts.map +1 -1
  44. package/dist/es2017/main_thread/decrypt/get_media_keys.js +2 -1
  45. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts +11 -1
  46. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  47. package/dist/es2017/main_thread/init/media_source_content_initializer.js +23 -11
  48. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts +2 -1
  49. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -1
  50. package/dist/es2017/main_thread/init/multi_thread_content_initializer.js +9 -5
  51. package/dist/es2017/main_thread/init/utils/initial_seek_and_play.d.ts.map +1 -1
  52. package/dist/es2017/main_thread/init/utils/initial_seek_and_play.js +3 -7
  53. package/dist/es2017/main_thread/text_displayer/native/native_text_displayer.d.ts +1 -0
  54. package/dist/es2017/main_thread/text_displayer/native/native_text_displayer.d.ts.map +1 -1
  55. package/dist/es2017/main_thread/text_displayer/native/native_text_displayer.js +19 -16
  56. package/dist/es2017/public_types.d.ts +54 -2
  57. package/dist/es2017/public_types.d.ts.map +1 -1
  58. package/dist/es2017/utils/sync_or_async.d.ts.map +1 -1
  59. package/dist/es2017/utils/sync_or_async.js +3 -1
  60. package/dist/mpd-parser.wasm +0 -0
  61. package/dist/rx-player.js +60 -31
  62. package/dist/rx-player.min.js +17 -17
  63. package/package.json +1 -1
  64. package/src/__GENERATED_CODE/embedded_dash_wasm.ts +1 -1
  65. package/src/core/segment_sinks/segment_buffers_store.ts +6 -2
  66. package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +39 -7
  67. package/src/main_thread/api/debug/modules/general_info.ts +1 -1
  68. package/src/main_thread/api/public_api.ts +2 -2
  69. package/src/main_thread/decrypt/create_or_load_session.ts +6 -1
  70. package/src/main_thread/decrypt/find_key_system.ts +3 -0
  71. package/src/main_thread/decrypt/get_media_keys.ts +1 -0
  72. package/src/main_thread/init/media_source_content_initializer.ts +50 -17
  73. package/src/main_thread/init/multi_thread_content_initializer.ts +15 -7
  74. package/src/main_thread/init/utils/initial_seek_and_play.ts +3 -7
  75. package/src/main_thread/text_displayer/native/native_text_displayer.ts +22 -18
  76. package/src/public_types.ts +54 -3
  77. package/src/utils/sync_or_async.ts +5 -3
package/dist/rx-player.js CHANGED
@@ -8349,7 +8349,12 @@
8349
8349
  throw cancelSignal.cancellationError;
8350
8350
  }
8351
8351
  }
8352
- await cleanOldLoadedSessions(loadedSessionsStore, maxSessionCacheSize);
8352
+ await cleanOldLoadedSessions(
8353
+ loadedSessionsStore,
8354
+ // Account for the next session we will be creating
8355
+ // Note that `maxSessionCacheSize < 0 has special semantic (no limit)`
8356
+ maxSessionCacheSize <= 0 ? maxSessionCacheSize : maxSessionCacheSize - 1
8357
+ );
8353
8358
  if (cancelSignal.cancellationError !== null) {
8354
8359
  throw cancelSignal.cancellationError;
8355
8360
  }
@@ -8762,6 +8767,9 @@
8762
8767
  const session = mediaKeys.createSession();
8763
8768
  const initData = generatePlayReadyInitData(DUMMY_PLAY_READY_HEADER);
8764
8769
  await session.generateRequest("cenc", initData);
8770
+ session.close().catch(() => {
8771
+ log_default.warn("DRM: Failed to close the dummy session");
8772
+ });
8765
8773
  } catch (err) {
8766
8774
  log_default.debug("DRM: KeySystemAccess was granted but it is not usable");
8767
8775
  throw err;
@@ -9747,7 +9755,7 @@
9747
9755
  const { options, mediaKeySystemAccess, askedConfiguration, codecSupport } = evt.value;
9748
9756
  const currentState = media_keys_infos_store_default.getState(mediaElement);
9749
9757
  const persistentSessionsStore = createPersistentSessionsStorage(options);
9750
- if (canReuseMediaKeys() && currentState !== null && evt.type === "reuse-media-key-system-access") {
9758
+ if (evt.value.options.reuseMediaKeys !== false && canReuseMediaKeys() && currentState !== null && evt.type === "reuse-media-key-system-access") {
9751
9759
  log_default.debug("DRM: Reusing already created MediaKeys");
9752
9760
  const { mediaKeys: mediaKeys2, loadedSessionsStore: loadedSessionsStore2 } = currentState;
9753
9761
  if (server_certificate_store_default.hasOne(mediaKeys2) === false || !isNullOrUndefined(options.serverCertificate) && server_certificate_store_default.has(mediaKeys2, options.serverCertificate)) {
@@ -18714,7 +18722,9 @@
18714
18722
  ret = resolved;
18715
18723
  }, noop_default);
18716
18724
  return {
18717
- syncValue: ret,
18725
+ get syncValue() {
18726
+ return ret;
18727
+ },
18718
18728
  getValueAsAsync() {
18719
18729
  return val;
18720
18730
  }
@@ -20751,7 +20761,7 @@
20751
20761
  */
20752
20762
  constructor(settings) {
20753
20763
  super();
20754
- this._settings = settings;
20764
+ this._initSettings = settings;
20755
20765
  this._initCanceller = new TaskCanceller();
20756
20766
  this._manifest = null;
20757
20767
  this._decryptionCapabilities = { status: "uninitialized", value: null };
@@ -20826,6 +20836,10 @@
20826
20836
  dispose() {
20827
20837
  this._initCanceller.cancel();
20828
20838
  }
20839
+ /**
20840
+ * Callback called when an error interrupting playback arised.
20841
+ * @param {*} err
20842
+ */
20829
20843
  _onFatalError(err) {
20830
20844
  if (this._initCanceller.isUsed()) {
20831
20845
  return;
@@ -20833,10 +20847,16 @@
20833
20847
  this._initCanceller.cancel();
20834
20848
  this.trigger("error", err);
20835
20849
  }
20850
+ /**
20851
+ * Initialize decryption mechanisms if needed and begin creating and relying
20852
+ * on the initial `MediaSourceInterface` for this content.
20853
+ * @param {HTMLMediaElement|null} mediaElement
20854
+ * @returns {Promise.<Object>}
20855
+ */
20836
20856
  _initializeMediaSourceAndDecryption(mediaElement) {
20837
20857
  const initCanceller = this._initCanceller;
20838
20858
  return createCancellablePromise(initCanceller.signal, (resolve) => {
20839
- const { keySystems } = this._settings;
20859
+ const { keySystems } = this._initSettings;
20840
20860
  const { statusRef: drmInitRef, contentDecryptor } = initializeContentDecryption(
20841
20861
  mediaElement,
20842
20862
  keySystems,
@@ -20953,7 +20973,7 @@
20953
20973
  startAt,
20954
20974
  textTrackOptions,
20955
20975
  transport
20956
- } = this._settings;
20976
+ } = this._initSettings;
20957
20977
  const initCanceller = this._initCanceller;
20958
20978
  assert(this._manifest !== null);
20959
20979
  let manifest;
@@ -21082,15 +21102,10 @@
21082
21102
  return this._onFatalError(error);
21083
21103
  }
21084
21104
  let textDisplayerInterface = null;
21085
- let textDisplayer = null;
21086
- if (this._settings.textTrackOptions.textTrackMode === "html" && features_default.htmlTextDisplayer !== null) {
21087
- textDisplayer = new features_default.htmlTextDisplayer(
21088
- mediaElement,
21089
- this._settings.textTrackOptions.textTrackElement
21090
- );
21091
- } else if (features_default.nativeTextDisplayer !== null) {
21092
- textDisplayer = new features_default.nativeTextDisplayer(mediaElement);
21093
- }
21105
+ const textDisplayer = createTextDisplayer(
21106
+ mediaElement,
21107
+ this._initSettings.textTrackOptions
21108
+ );
21094
21109
  if (textDisplayer !== null) {
21095
21110
  const sender = new MainThreadTextDisplayerInterface(textDisplayer);
21096
21111
  textDisplayerInterface = sender;
@@ -21529,6 +21544,17 @@
21529
21544
  }
21530
21545
  }
21531
21546
  };
21547
+ function createTextDisplayer(mediaElement, textTrackOptions) {
21548
+ if (textTrackOptions.textTrackMode === "html" && features_default.htmlTextDisplayer !== null) {
21549
+ return new features_default.htmlTextDisplayer(
21550
+ mediaElement,
21551
+ textTrackOptions.textTrackElement
21552
+ );
21553
+ } else if (features_default.nativeTextDisplayer !== null) {
21554
+ return new features_default.nativeTextDisplayer(mediaElement);
21555
+ }
21556
+ return null;
21557
+ }
21532
21558
  function updateKeyIdsDecipherabilityOnManifest(manifest, whitelistedKeyIds, blacklistedKeyIds, delistedKeyIds) {
21533
21559
  manifest.updateRepresentationsDeciperability((ctx) => {
21534
21560
  const { representation } = ctx;
@@ -31875,20 +31901,7 @@
31875
31901
  reset() {
31876
31902
  log_default.debug("NTD: Aborting NativeTextDisplayer");
31877
31903
  this._removeData(0, Infinity);
31878
- const { _trackElement, _videoElement } = this;
31879
- if (_trackElement !== void 0 && _videoElement.hasChildNodes()) {
31880
- try {
31881
- _videoElement.removeChild(_trackElement);
31882
- } catch (_e) {
31883
- log_default.warn("NTD: Can't remove track element from the video");
31884
- }
31885
- }
31886
- const oldMode = this._track.mode;
31887
- this._track.mode = "disabled";
31888
- this._track.mode = oldMode;
31889
- if (this._trackElement !== void 0) {
31890
- this._trackElement.innerHTML = "";
31891
- }
31904
+ this._clearTrackElement();
31892
31905
  }
31893
31906
  stop() {
31894
31907
  log_default.debug("NTD: Aborting NativeTextDisplayer");
@@ -31921,6 +31934,22 @@
31921
31934
  }
31922
31935
  this._buffered.remove(start, end);
31923
31936
  }
31937
+ _clearTrackElement() {
31938
+ const { _trackElement, _videoElement } = this;
31939
+ if (_trackElement !== void 0 && _videoElement.hasChildNodes()) {
31940
+ try {
31941
+ _videoElement.removeChild(_trackElement);
31942
+ } catch (_e) {
31943
+ log_default.warn("NTD: Can't remove track element from the video");
31944
+ }
31945
+ }
31946
+ const oldMode = this._track.mode;
31947
+ this._track.mode = "disabled";
31948
+ this._track.mode = oldMode;
31949
+ if (this._trackElement !== void 0) {
31950
+ this._trackElement.innerHTML = "";
31951
+ }
31952
+ }
31924
31953
  };
31925
31954
  if (define_ENVIRONMENT_default.CURRENT_ENV === define_ENVIRONMENT_default.DEV) {
31926
31955
  let _checkType = function(input) {
@@ -36911,7 +36940,7 @@ ${event}`
36911
36940
  } = parseConstructorOptions(options);
36912
36941
  videoElement.preload = "auto";
36913
36942
  this.version = /* PLAYER_VERSION */
36914
- "4.2.0-dev.2024100200";
36943
+ "4.2.0";
36915
36944
  this.log = log_default;
36916
36945
  this.state = "STOPPED";
36917
36946
  this.videoElement = videoElement;
@@ -39452,7 +39481,7 @@ ${event}`
39452
39481
  _Player._priv_currentlyUsedVideoElements = /* @__PURE__ */ new WeakSet();
39453
39482
  var Player = _Player;
39454
39483
  Player.version = /* PLAYER_VERSION */
39455
- "4.2.0-dev.2024100200";
39484
+ "4.2.0";
39456
39485
  var public_api_default = Player;
39457
39486
 
39458
39487
  // src/main_thread/api/index.ts