rx-player 4.3.0-dev.2025031700 → 4.3.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 (232) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/VERSION +1 -1
  3. package/dist/commonjs/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
  4. package/dist/commonjs/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
  5. package/dist/commonjs/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  6. package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
  7. package/dist/commonjs/compat/add_class_name.d.ts.map +1 -1
  8. package/dist/commonjs/compat/add_class_name.js +1 -4
  9. package/dist/commonjs/compat/browser_compatibility_types.d.ts.map +1 -1
  10. package/dist/commonjs/compat/browser_compatibility_types.js +0 -1
  11. package/dist/commonjs/compat/eme/custom_media_keys/webkit_media_keys.d.ts.map +1 -1
  12. package/dist/commonjs/compat/eme/custom_media_keys/webkit_media_keys.js +0 -2
  13. package/dist/commonjs/compat/eme/eme-api-implementation.js +0 -1
  14. package/dist/commonjs/compat/eme/generate_key_request.d.ts +2 -2
  15. package/dist/commonjs/compat/eme/generate_key_request.js +2 -2
  16. package/dist/commonjs/compat/is_vtt_cue.d.ts.map +1 -1
  17. package/dist/commonjs/compat/is_vtt_cue.js +0 -1
  18. package/dist/commonjs/compat/patch_webkit_source_buffer.js +1 -1
  19. package/dist/commonjs/core/main/worker/content_preparer.d.ts.map +1 -1
  20. package/dist/commonjs/core/main/worker/content_preparer.js +82 -0
  21. package/dist/commonjs/core/segment_sinks/garbage_collector.d.ts.map +1 -1
  22. package/dist/commonjs/core/segment_sinks/garbage_collector.js +4 -0
  23. package/dist/commonjs/core/stream/representation/representation_stream.d.ts.map +1 -1
  24. package/dist/commonjs/core/stream/representation/representation_stream.js +29 -45
  25. package/dist/commonjs/core/stream/representation/utils/push_init_segment.d.ts.map +1 -1
  26. package/dist/commonjs/core/stream/representation/utils/push_init_segment.js +0 -3
  27. package/dist/commonjs/core/stream/representation/utils/push_media_segment.d.ts.map +1 -1
  28. package/dist/commonjs/core/stream/representation/utils/push_media_segment.js +0 -3
  29. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/api/index.js +1 -1
  30. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/capabilities.d.ts +2 -2
  31. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/capabilities.js +2 -2
  32. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.d.ts.map +1 -1
  33. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +0 -1
  34. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.d.ts.map +1 -1
  35. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +0 -1
  36. package/dist/commonjs/main_thread/api/public_api.d.ts.map +1 -1
  37. package/dist/commonjs/main_thread/api/public_api.js +2 -3
  38. package/dist/commonjs/main_thread/decrypt/session_events_listener.d.ts.map +1 -1
  39. package/dist/commonjs/main_thread/decrypt/session_events_listener.js +26 -18
  40. package/dist/commonjs/main_thread/decrypt/utils/loaded_sessions_store.d.ts +1 -1
  41. package/dist/commonjs/main_thread/decrypt/utils/loaded_sessions_store.js +1 -1
  42. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -1
  43. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.js +5 -3
  44. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts +5 -4
  45. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
  46. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.js +10 -4
  47. package/dist/commonjs/manifest/classes/manifest.js +1 -1
  48. package/dist/commonjs/manifest/classes/representation.d.ts +2 -0
  49. package/dist/commonjs/manifest/classes/representation.d.ts.map +1 -1
  50. package/dist/commonjs/manifest/classes/representation.js +1 -0
  51. package/dist/commonjs/manifest/types.d.ts +2 -0
  52. package/dist/commonjs/manifest/types.d.ts.map +1 -1
  53. package/dist/commonjs/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +1 -1
  54. package/dist/commonjs/parsers/manifest/dash/common/convert_supplemental_codecs.js +1 -1
  55. package/dist/commonjs/parsers/manifest/dash/common/indexes/tokens.js +3 -3
  56. package/dist/commonjs/parsers/manifest/dash/common/parse_representations.js +1 -1
  57. package/dist/commonjs/parsers/manifest/dash/fast-js-parser/node_parsers/utils.d.ts.map +1 -1
  58. package/dist/commonjs/parsers/manifest/dash/native-parser/node_parsers/utils.d.ts.map +1 -1
  59. package/dist/commonjs/parsers/texttracks/ttml/parse_ttml.d.ts +1 -1
  60. package/dist/commonjs/parsers/texttracks/ttml/regexps.d.ts.map +1 -1
  61. package/dist/commonjs/parsers/texttracks/ttml/regexps.js +1 -1
  62. package/dist/commonjs/parsers/texttracks/webvtt/native/set_settings_on_cue.js +1 -1
  63. package/dist/commonjs/transports/smooth/segment_loader.d.ts.map +1 -1
  64. package/dist/commonjs/utils/array_find.js +1 -1
  65. package/dist/commonjs/utils/array_find_index.js +1 -1
  66. package/dist/commonjs/utils/array_includes.js +1 -1
  67. package/dist/commonjs/utils/assert.js +1 -1
  68. package/dist/commonjs/utils/flat_map.d.ts.map +1 -1
  69. package/dist/commonjs/utils/flat_map.js +0 -1
  70. package/dist/commonjs/utils/logger.d.ts.map +1 -1
  71. package/dist/commonjs/utils/logger.js +0 -2
  72. package/dist/commonjs/utils/noop.js +1 -1
  73. package/dist/commonjs/utils/object_assign.d.ts.map +1 -1
  74. package/dist/commonjs/utils/object_assign.js +3 -4
  75. package/dist/commonjs/utils/object_values.js +1 -1
  76. package/dist/commonjs/utils/request/xhr.js +1 -1
  77. package/dist/commonjs/utils/starts_with.d.ts.map +1 -1
  78. package/dist/commonjs/utils/starts_with.js +0 -1
  79. package/dist/commonjs/utils/string_parsing.js +1 -1
  80. package/dist/commonjs/utils/url-utils.js +2 -2
  81. package/dist/commonjs/utils/weak_map_memory.d.ts.map +1 -1
  82. package/dist/commonjs/utils/weak_map_memory.js +0 -1
  83. package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
  84. package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
  85. package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  86. package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
  87. package/dist/es2017/compat/add_class_name.d.ts.map +1 -1
  88. package/dist/es2017/compat/add_class_name.js +1 -4
  89. package/dist/es2017/compat/browser_compatibility_types.d.ts.map +1 -1
  90. package/dist/es2017/compat/browser_compatibility_types.js +0 -1
  91. package/dist/es2017/compat/eme/custom_media_keys/webkit_media_keys.d.ts.map +1 -1
  92. package/dist/es2017/compat/eme/custom_media_keys/webkit_media_keys.js +0 -2
  93. package/dist/es2017/compat/eme/eme-api-implementation.js +0 -1
  94. package/dist/es2017/compat/eme/generate_key_request.d.ts +2 -2
  95. package/dist/es2017/compat/eme/generate_key_request.js +2 -2
  96. package/dist/es2017/compat/is_vtt_cue.d.ts.map +1 -1
  97. package/dist/es2017/compat/is_vtt_cue.js +0 -1
  98. package/dist/es2017/compat/patch_webkit_source_buffer.js +1 -1
  99. package/dist/es2017/core/main/worker/content_preparer.d.ts.map +1 -1
  100. package/dist/es2017/core/main/worker/content_preparer.js +34 -0
  101. package/dist/es2017/core/segment_sinks/garbage_collector.d.ts.map +1 -1
  102. package/dist/es2017/core/segment_sinks/garbage_collector.js +4 -0
  103. package/dist/es2017/core/stream/representation/representation_stream.d.ts.map +1 -1
  104. package/dist/es2017/core/stream/representation/representation_stream.js +29 -45
  105. package/dist/es2017/core/stream/representation/utils/push_init_segment.d.ts.map +1 -1
  106. package/dist/es2017/core/stream/representation/utils/push_init_segment.js +0 -3
  107. package/dist/es2017/core/stream/representation/utils/push_media_segment.d.ts.map +1 -1
  108. package/dist/es2017/core/stream/representation/utils/push_media_segment.js +0 -3
  109. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/api/index.js +1 -1
  110. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/capabilities.d.ts +2 -2
  111. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/capabilities.js +2 -2
  112. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.d.ts.map +1 -1
  113. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +0 -1
  114. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.d.ts.map +1 -1
  115. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +0 -1
  116. package/dist/es2017/main_thread/api/public_api.d.ts.map +1 -1
  117. package/dist/es2017/main_thread/api/public_api.js +2 -3
  118. package/dist/es2017/main_thread/decrypt/session_events_listener.d.ts.map +1 -1
  119. package/dist/es2017/main_thread/decrypt/session_events_listener.js +4 -6
  120. package/dist/es2017/main_thread/decrypt/utils/loaded_sessions_store.d.ts +1 -1
  121. package/dist/es2017/main_thread/decrypt/utils/loaded_sessions_store.js +1 -1
  122. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -1
  123. package/dist/es2017/main_thread/init/multi_thread_content_initializer.js +5 -3
  124. package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.d.ts +5 -4
  125. package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
  126. package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.js +10 -4
  127. package/dist/es2017/manifest/classes/manifest.js +1 -1
  128. package/dist/es2017/manifest/classes/representation.d.ts +2 -0
  129. package/dist/es2017/manifest/classes/representation.d.ts.map +1 -1
  130. package/dist/es2017/manifest/classes/representation.js +1 -0
  131. package/dist/es2017/manifest/types.d.ts +2 -0
  132. package/dist/es2017/manifest/types.d.ts.map +1 -1
  133. package/dist/es2017/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +1 -1
  134. package/dist/es2017/parsers/manifest/dash/common/convert_supplemental_codecs.js +1 -1
  135. package/dist/es2017/parsers/manifest/dash/common/indexes/tokens.js +3 -3
  136. package/dist/es2017/parsers/manifest/dash/common/parse_representations.js +1 -1
  137. package/dist/es2017/parsers/manifest/dash/fast-js-parser/node_parsers/utils.d.ts.map +1 -1
  138. package/dist/es2017/parsers/manifest/dash/native-parser/node_parsers/utils.d.ts.map +1 -1
  139. package/dist/es2017/parsers/texttracks/ttml/parse_ttml.d.ts +1 -1
  140. package/dist/es2017/parsers/texttracks/ttml/regexps.d.ts.map +1 -1
  141. package/dist/es2017/parsers/texttracks/ttml/regexps.js +1 -1
  142. package/dist/es2017/parsers/texttracks/webvtt/native/set_settings_on_cue.js +1 -1
  143. package/dist/es2017/transports/smooth/segment_loader.d.ts.map +1 -1
  144. package/dist/es2017/utils/array_find.js +1 -1
  145. package/dist/es2017/utils/array_find_index.js +1 -1
  146. package/dist/es2017/utils/array_includes.js +1 -1
  147. package/dist/es2017/utils/assert.js +1 -1
  148. package/dist/es2017/utils/flat_map.d.ts.map +1 -1
  149. package/dist/es2017/utils/flat_map.js +0 -1
  150. package/dist/es2017/utils/logger.d.ts.map +1 -1
  151. package/dist/es2017/utils/logger.js +0 -2
  152. package/dist/es2017/utils/noop.js +1 -1
  153. package/dist/es2017/utils/object_assign.d.ts.map +1 -1
  154. package/dist/es2017/utils/object_assign.js +3 -4
  155. package/dist/es2017/utils/object_values.js +1 -1
  156. package/dist/es2017/utils/request/xhr.js +1 -1
  157. package/dist/es2017/utils/starts_with.d.ts.map +1 -1
  158. package/dist/es2017/utils/starts_with.js +0 -1
  159. package/dist/es2017/utils/string_parsing.js +1 -1
  160. package/dist/es2017/utils/url-utils.js +2 -2
  161. package/dist/es2017/utils/weak_map_memory.d.ts.map +1 -1
  162. package/dist/es2017/utils/weak_map_memory.js +0 -1
  163. package/dist/mpd-parser.wasm +0 -0
  164. package/dist/rx-player.js +80 -107
  165. package/dist/rx-player.min.js +13 -13
  166. package/dist/worker.js +4 -4
  167. package/eslint.config.mjs +423 -0
  168. package/package.json +25 -20
  169. package/src/__GENERATED_CODE/embedded_dash_wasm.ts +1 -1
  170. package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
  171. package/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts +0 -1
  172. package/src/compat/add_class_name.ts +1 -4
  173. package/src/compat/browser_compatibility_types.ts +0 -1
  174. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +0 -2
  175. package/src/compat/eme/eme-api-implementation.ts +0 -1
  176. package/src/compat/eme/generate_key_request.ts +2 -2
  177. package/src/compat/is_vtt_cue.ts +0 -1
  178. package/src/compat/patch_webkit_source_buffer.ts +1 -1
  179. package/src/core/main/worker/content_preparer.ts +35 -1
  180. package/src/core/segment_sinks/garbage_collector.ts +4 -0
  181. package/src/core/stream/representation/representation_stream.ts +29 -64
  182. package/src/core/stream/representation/utils/push_init_segment.ts +0 -3
  183. package/src/core/stream/representation/utils/push_media_segment.ts +0 -3
  184. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +0 -3
  185. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +0 -2
  186. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +0 -2
  187. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +0 -2
  188. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +0 -7
  189. package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +1 -1
  190. package/src/experimental/tools/mediaCapabilitiesProber/capabilities.ts +2 -2
  191. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +0 -1
  192. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +0 -1
  193. package/src/main_thread/api/public_api.ts +2 -3
  194. package/src/main_thread/decrypt/session_events_listener.ts +9 -8
  195. package/src/main_thread/decrypt/utils/loaded_sessions_store.ts +1 -1
  196. package/src/main_thread/init/multi_thread_content_initializer.ts +5 -2
  197. package/src/main_thread/init/utils/__tests__/update_manifest_codec_support.test.ts +45 -2
  198. package/src/main_thread/init/utils/update_manifest_codec_support.ts +13 -3
  199. package/src/manifest/classes/manifest.ts +1 -1
  200. package/src/manifest/classes/representation.ts +3 -0
  201. package/src/manifest/types.ts +2 -0
  202. package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +1 -1
  203. package/src/parsers/manifest/dash/common/indexes/tokens.ts +3 -3
  204. package/src/parsers/manifest/dash/common/parse_representations.ts +1 -1
  205. package/src/parsers/manifest/dash/fast-js-parser/node_parsers/__tests__/AdaptationSet.test.ts +3 -7
  206. package/src/parsers/manifest/dash/fast-js-parser/node_parsers/__tests__/ContentComponent.test.ts +1 -1
  207. package/src/parsers/manifest/dash/fast-js-parser/node_parsers/__tests__/ContentProtection.test.ts +1 -1
  208. package/src/parsers/manifest/dash/native-parser/node_parsers/__tests__/AdaptationSet.test.ts +3 -3
  209. package/src/parsers/manifest/dash/native-parser/node_parsers/__tests__/ContentComponent.test.ts +1 -1
  210. package/src/parsers/manifest/dash/native-parser/node_parsers/__tests__/ContentProtection.test.ts +2 -2
  211. package/src/parsers/texttracks/ttml/parse_ttml.ts +1 -1
  212. package/src/parsers/texttracks/ttml/regexps.ts +1 -1
  213. package/src/parsers/texttracks/webvtt/native/set_settings_on_cue.ts +1 -1
  214. package/src/utils/__tests__/array_find.test.ts +1 -1
  215. package/src/utils/__tests__/array_find_index.test.ts +0 -1
  216. package/src/utils/__tests__/array_includes.test.ts +1 -1
  217. package/src/utils/__tests__/id_generator.test.ts +0 -2
  218. package/src/utils/array_find.ts +1 -1
  219. package/src/utils/array_find_index.ts +1 -1
  220. package/src/utils/array_includes.ts +1 -1
  221. package/src/utils/assert.ts +1 -1
  222. package/src/utils/flat_map.ts +0 -1
  223. package/src/utils/logger.ts +0 -2
  224. package/src/utils/noop.ts +1 -1
  225. package/src/utils/object_assign.ts +3 -4
  226. package/src/utils/object_values.ts +1 -1
  227. package/src/utils/request/xhr.ts +2 -2
  228. package/src/utils/starts_with.ts +0 -1
  229. package/src/utils/string_parsing.ts +1 -1
  230. package/src/utils/url-utils.ts +2 -2
  231. package/src/utils/weak_map_memory.ts +0 -1
  232. package/vitest.config.mjs +34 -28
@@ -42,7 +42,6 @@ describe("compat - shouldWaitForDataBeforeLoaded", () => {
42
42
  expect(shouldWaitForDataBeforeLoaded(false)).toBe(true);
43
43
  });
44
44
 
45
- // eslint-disable-next-line max-len
46
45
  it("should return false if we are on the Safari browser and in directfile mode", async () => {
47
46
  vi.doMock("../browser_detection", () => {
48
47
  return {
@@ -24,10 +24,7 @@ let hasClassList: boolean | undefined;
24
24
  */
25
25
  export default function addClassName(elt: HTMLElement, className: string): void {
26
26
  if (hasClassList === undefined) {
27
- hasClassList =
28
- elt.classList !== undefined &&
29
- // eslint-disable-next-line @typescript-eslint/unbound-method
30
- typeof elt.classList.add === "function";
27
+ hasClassList = elt.classList !== undefined && typeof elt.classList.add === "function";
31
28
  }
32
29
 
33
30
  if (hasClassList) {
@@ -441,7 +441,6 @@ const MediaSource_:
441
441
 
442
442
  const isManagedMediaSource =
443
443
  MediaSource_ !== undefined && MediaSource_ === gs?.ManagedMediaSource;
444
- /* eslint-enable */
445
444
 
446
445
  /** List an HTMLMediaElement's possible values for its readyState property. */
447
446
  const READY_STATES = {
@@ -118,7 +118,6 @@ class WebkitMediaKeySession
118
118
  } else {
119
119
  uInt8Arraylicense = new Uint8Array(license.buffer);
120
120
  }
121
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
122
121
  resolve(this._nativeSession.update(uInt8Arraylicense));
123
122
  } catch (err) {
124
123
  reject(err);
@@ -150,7 +149,6 @@ class WebkitMediaKeySession
150
149
  throw new Error("Impossible to get the key sessions");
151
150
  }
152
151
  this._listenEvent(keySession);
153
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
154
152
  this._nativeSession = keySession;
155
153
  resolve();
156
154
  });
@@ -257,7 +257,6 @@ function getEmeApiImplementation(
257
257
  keySystemConfigurationResponse.audioCapabilities = audioCapabilities;
258
258
  }
259
259
 
260
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
261
260
  const customMediaKeys = createCustomMediaKeys(keyType);
262
261
  return Promise.resolve(
263
262
  new CustomMediaKeySystemAccess(
@@ -120,11 +120,11 @@ export function patchInitData(initData: Uint8Array): Uint8Array {
120
120
 
121
121
  /**
122
122
  * Generate a request from session.
123
- * @param {MediaKeySession} session - MediaKeySession on which the request will
123
+ * @param {MediaKeySession} session - MediaKeySession on which the request will
124
124
  * be done.
125
125
  * @param {string} initializationDataType - Initialization data type given e.g.
126
126
  * by the "encrypted" event for the corresponding request.
127
- * @param {Uint8Array} initializationData - Initialization data given e.g. by
127
+ * @param {Uint8Array} initializationData - Initialization data given e.g. by
128
128
  * the "encrypted" event for the corresponding request.
129
129
  * @returns {Promise} - Emit when done. Errors if fails.
130
130
  */
@@ -25,6 +25,5 @@ import type { ICompatVTTCue } from "./browser_compatibility_types";
25
25
  export default function isVTTCue(
26
26
  cue: ICompatVTTCue | TextTrackCue,
27
27
  ): cue is ICompatVTTCue {
28
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
29
28
  return typeof globalScope.VTTCue === "function" && cue instanceof globalScope.VTTCue;
30
29
  }
@@ -67,7 +67,7 @@ export default function patchWebkitSourceBuffer(): void {
67
67
  const sourceBufferWebkitProto = sourceBufferWebkitRef.prototype;
68
68
 
69
69
  for (const fnName in EventEmitter.prototype) {
70
- if (EventEmitter.prototype.hasOwnProperty(fnName)) {
70
+ if (Object.prototype.hasOwnProperty.call(EventEmitter.prototype, fnName)) {
71
71
  (sourceBufferWebkitProto as unknown as Record<string, unknown>)[fnName] = (
72
72
  EventEmitter.prototype as unknown as Record<string, unknown>
73
73
  )[fnName];
@@ -1,7 +1,9 @@
1
+ import { MediaSource_ } from "../../../compat/browser_compatibility_types";
1
2
  import features from "../../../features";
2
3
  import log from "../../../log";
3
4
  import type { IManifest, IManifestMetadata } from "../../../manifest";
4
5
  import { createRepresentationFilterFromFnString } from "../../../manifest";
6
+ import type Manifest from "../../../manifest/classes";
5
7
  import type { IMediaSourceInterface } from "../../../mse";
6
8
  import MainMediaSourceInterface from "../../../mse/main_media_source_interface";
7
9
  import WorkerMediaSourceInterface from "../../../mse/worker_media_source_interface";
@@ -13,6 +15,7 @@ import { WorkerMessageType } from "../../../multithread_types";
13
15
  import type { IPlayerError } from "../../../public_types";
14
16
  import assert from "../../../utils/assert";
15
17
  import idGenerator from "../../../utils/id_generator";
18
+ import isNullOrUndefined from "../../../utils/is_null_or_undefined";
16
19
  import objectAssign from "../../../utils/object_assign";
17
20
  import type {
18
21
  CancellationError,
@@ -278,7 +281,7 @@ export default class ContentPreparer {
278
281
  ) {
279
282
  return;
280
283
  }
281
-
284
+ updateCodecSupportInWorkerMode(manifest);
282
285
  const sentManifest = manifest.getMetadataSnapshot();
283
286
  manifest.addEventListener(
284
287
  "manifestUpdate",
@@ -534,3 +537,34 @@ function createMediaSourceInterfaceAndSegmentSinksStore(
534
537
 
535
538
  return [mediaSourceInterface, segmentSinksStore, textSender];
536
539
  }
540
+
541
+ /**
542
+ * Set Representation.isCodecSupportedInWebWorker to true or false
543
+ * If the codec is supported in the current context.
544
+ * If MSE in worker is not available, the attribute is not set.
545
+ */
546
+ function updateCodecSupportInWorkerMode(manifestToUpdate: Manifest) {
547
+ if (isNullOrUndefined(MediaSource_)) {
548
+ return;
549
+ }
550
+
551
+ const codecsMap = new Map<string, boolean>();
552
+ for (const period of manifestToUpdate.periods) {
553
+ const checkedAdaptations = [
554
+ ...(period.adaptations.video ?? []),
555
+ ...(period.adaptations.audio ?? []),
556
+ ];
557
+ for (const adaptation of checkedAdaptations) {
558
+ for (const representation of adaptation.representations) {
559
+ const codec = `${representation.mimeType};codecs="${representation.codecs[0]}"`;
560
+ if (codecsMap.has(codec)) {
561
+ representation.isCodecSupportedInWebWorker = codecsMap.get(codec);
562
+ } else {
563
+ const supported = MediaSource_.isTypeSupported(codec);
564
+ representation.isCodecSupportedInWebWorker = supported;
565
+ codecsMap.set(codec, supported);
566
+ }
567
+ }
568
+ }
569
+ }
570
+ }
@@ -21,6 +21,7 @@ import type { IRange } from "../../utils/ranges";
21
21
  import { getInnerAndOuterRanges } from "../../utils/ranges";
22
22
  import type { IReadOnlySharedReference } from "../../utils/reference";
23
23
  import type { CancellationSignal } from "../../utils/task_canceller";
24
+ import TaskCanceller from "../../utils/task_canceller";
24
25
  import type { IStreamOrchestratorPlaybackObservation } from "../stream";
25
26
  import type { SegmentSink } from "./implementations";
26
27
 
@@ -80,6 +81,9 @@ export default function BufferGarbageCollector(
80
81
  maxBufferAhead.getValue(),
81
82
  cancellationSignal,
82
83
  ).catch((e) => {
84
+ if (cancellationSignal.isCancelled() && TaskCanceller.isCancellationError(e)) {
85
+ return;
86
+ }
83
87
  const errMsg = e instanceof Error ? e.message : "Unknown error";
84
88
  log.error("Could not run BufferGarbageCollector:", errMsg);
85
89
  });
@@ -99,17 +99,9 @@ export default function RepresentationStream<TSegmentDataType>(
99
99
  const { bufferGoal, maxBufferSize, drmSystemId, fastSwitchThreshold } = options;
100
100
  const bufferType = adaptation.type;
101
101
 
102
- /** `TaskCanceller` stopping ALL operations performed by the `RepresentationStream` */
103
- const globalCanceller = new TaskCanceller();
104
- globalCanceller.linkToSignal(parentCancelSignal);
105
-
106
- /**
107
- * `TaskCanceller` allowing to only stop segment loading and checking operations.
108
- * This allows to stop only tasks linked to network resource usage, which is
109
- * often a limited resource, while still letting buffer operations to finish.
110
- */
111
- const segmentsLoadingCanceller = new TaskCanceller();
112
- segmentsLoadingCanceller.linkToSignal(globalCanceller.signal);
102
+ /** `TaskCanceller` stopping operations performed by the `RepresentationStream` */
103
+ const canceller = new TaskCanceller();
104
+ canceller.linkToSignal(parentCancelSignal);
113
105
 
114
106
  /** Saved initialization segment state for this representation. */
115
107
  const initSegmentState: IInitSegmentState = {
@@ -117,7 +109,7 @@ export default function RepresentationStream<TSegmentDataType>(
117
109
  uniqueId: null,
118
110
  isLoaded: false,
119
111
  };
120
- globalCanceller.signal.register(() => {
112
+ canceller.signal.register(() => {
121
113
  // Free initialization segment if one has been declared
122
114
  if (initSegmentState.uniqueId !== null) {
123
115
  segmentSink.freeInitSegment(initSegmentState.uniqueId);
@@ -154,39 +146,27 @@ export default function RepresentationStream<TSegmentDataType>(
154
146
  callbacks.encryptionDataEncountered(
155
147
  encryptionData.map((d) => objectAssign({ content }, d)),
156
148
  );
157
- if (globalCanceller.isUsed()) {
149
+ if (canceller.isUsed()) {
158
150
  return; // previous callback has stopped everything by side-effect
159
151
  }
160
152
  }
161
153
  }
162
154
 
163
155
  segmentQueue.addEventListener("error", (err) => {
164
- if (segmentsLoadingCanceller.signal.isCancelled()) {
156
+ if (canceller.signal.isCancelled()) {
165
157
  return; // ignore post requests-cancellation loading-related errors,
166
158
  }
167
- globalCanceller.cancel(); // Stop every operations
159
+ canceller.cancel(); // Stop every operations
168
160
  callbacks.error(err);
169
161
  });
170
- segmentQueue.addEventListener(
171
- "parsedInitSegment",
172
- onParsedChunk,
173
- segmentsLoadingCanceller.signal,
174
- );
175
- segmentQueue.addEventListener(
176
- "parsedMediaSegment",
177
- onParsedChunk,
178
- segmentsLoadingCanceller.signal,
179
- );
180
- segmentQueue.addEventListener(
181
- "emptyQueue",
182
- checkStatus,
183
- segmentsLoadingCanceller.signal,
184
- );
162
+ segmentQueue.addEventListener("parsedInitSegment", onParsedChunk, canceller.signal);
163
+ segmentQueue.addEventListener("parsedMediaSegment", onParsedChunk, canceller.signal);
164
+ segmentQueue.addEventListener("emptyQueue", checkStatus, canceller.signal);
185
165
  segmentQueue.addEventListener(
186
166
  "requestRetry",
187
167
  (payload) => {
188
168
  callbacks.warning(payload.error);
189
- if (segmentsLoadingCanceller.signal.isCancelled()) {
169
+ if (canceller.signal.isCancelled()) {
190
170
  return; // If the previous callback led to loading operations being stopped, skip
191
171
  }
192
172
  const retriedSegment = payload.segment;
@@ -197,7 +177,7 @@ export default function RepresentationStream<TSegmentDataType>(
197
177
  callbacks.manifestMightBeOufOfSync();
198
178
  }
199
179
  },
200
- segmentsLoadingCanceller.signal,
180
+ canceller.signal,
201
181
  );
202
182
  segmentQueue.addEventListener(
203
183
  "fullyLoadedSegment",
@@ -206,36 +186,32 @@ export default function RepresentationStream<TSegmentDataType>(
206
186
  .signalSegmentComplete(objectAssign({ segment }, content))
207
187
  .catch(onFatalBufferError);
208
188
  },
209
- segmentsLoadingCanceller.signal,
189
+ canceller.signal,
210
190
  );
211
191
 
212
192
  /** Emit the last scheduled downloading queue for segments. */
213
193
  const segmentsToLoadRef = segmentQueue.resetForContent(content, hasInitSegment);
214
194
 
215
- segmentsLoadingCanceller.signal.register(() => {
195
+ canceller.signal.register(() => {
216
196
  segmentQueue.stop();
217
197
  });
218
198
 
219
199
  playbackObserver.listen(checkStatus, {
220
200
  includeLastObservation: false,
221
- clearSignal: segmentsLoadingCanceller.signal,
201
+ clearSignal: canceller.signal,
222
202
  });
223
- content.manifest.addEventListener(
224
- "manifestUpdate",
225
- checkStatus,
226
- segmentsLoadingCanceller.signal,
227
- );
203
+ content.manifest.addEventListener("manifestUpdate", checkStatus, canceller.signal);
228
204
  bufferGoal.onUpdate(checkStatus, {
229
205
  emitCurrentValue: false,
230
- clearSignal: segmentsLoadingCanceller.signal,
206
+ clearSignal: canceller.signal,
231
207
  });
232
208
  maxBufferSize.onUpdate(checkStatus, {
233
209
  emitCurrentValue: false,
234
- clearSignal: segmentsLoadingCanceller.signal,
210
+ clearSignal: canceller.signal,
235
211
  });
236
212
  terminate.onUpdate(checkStatus, {
237
213
  emitCurrentValue: false,
238
- clearSignal: segmentsLoadingCanceller.signal,
214
+ clearSignal: canceller.signal,
239
215
  });
240
216
  checkStatus();
241
217
  return;
@@ -246,7 +222,7 @@ export default function RepresentationStream<TSegmentDataType>(
246
222
  * issues at the current time, calling the right callbacks if necessary.
247
223
  */
248
224
  function checkStatus(): void {
249
- if (segmentsLoadingCanceller.isUsed()) {
225
+ if (canceller.isUsed()) {
250
226
  return; // Stop all buffer status checking if load operations are stopped
251
227
  }
252
228
  const observation = playbackObserver.getReference().getValue();
@@ -302,7 +278,7 @@ export default function RepresentationStream<TSegmentDataType>(
302
278
  log.debug("Stream: Urgent switch, terminate now.", bufferType);
303
279
  segmentsToLoadRef.setValue({ initSegment: null, segmentQueue: [] });
304
280
  segmentsToLoadRef.finish();
305
- segmentsLoadingCanceller.cancel();
281
+ canceller.cancel();
306
282
  callbacks.terminating();
307
283
  return;
308
284
  } else {
@@ -330,7 +306,7 @@ export default function RepresentationStream<TSegmentDataType>(
330
306
  if (nextQueue.length === 0 && nextInit === null) {
331
307
  log.debug("Stream: No request left, terminate", bufferType);
332
308
  segmentsToLoadRef.finish();
333
- segmentsLoadingCanceller.cancel();
309
+ canceller.cancel();
334
310
  callbacks.terminating();
335
311
  return;
336
312
  }
@@ -345,7 +321,7 @@ export default function RepresentationStream<TSegmentDataType>(
345
321
  hasFinishedLoading: status.hasFinishedLoading,
346
322
  neededSegments: status.neededSegments,
347
323
  });
348
- if (segmentsLoadingCanceller.signal.isCancelled()) {
324
+ if (canceller.signal.isCancelled()) {
349
325
  return; // previous callback has stopped loading operations by side-effect
350
326
  }
351
327
  const { UPTO_CURRENT_POSITION_CLEANUP } = config.getCurrent();
@@ -370,12 +346,6 @@ export default function RepresentationStream<TSegmentDataType>(
370
346
  | IParsedInitSegmentPayload<TSegmentDataType>
371
347
  | IParsedSegmentPayload<TSegmentDataType>,
372
348
  ): void {
373
- if (globalCanceller.isUsed()) {
374
- // We should not do anything with segments if the `RepresentationStream`
375
- // is not running anymore.
376
- return;
377
- }
378
-
379
349
  // Supplementary encryption information might have been parsed.
380
350
  for (const protInfo of evt.protectionData) {
381
351
  // TODO better handle use cases like key rotation by not always grouping
@@ -397,11 +367,6 @@ export default function RepresentationStream<TSegmentDataType>(
397
367
  allEncryptionData.map((p) => objectAssign({ content }, p)),
398
368
  );
399
369
  hasSentEncryptionData = true;
400
-
401
- // previous callback could have lead to cancellation
402
- if (globalCanceller.isUsed()) {
403
- return;
404
- }
405
370
  }
406
371
  }
407
372
 
@@ -425,7 +390,7 @@ export default function RepresentationStream<TSegmentDataType>(
425
390
  segmentData: evt.initializationData,
426
391
  segmentSink,
427
392
  },
428
- globalCanceller.signal,
393
+ canceller.signal,
429
394
  )
430
395
  .then((result) => {
431
396
  if (result !== null) {
@@ -447,13 +412,13 @@ export default function RepresentationStream<TSegmentDataType>(
447
412
 
448
413
  if (needsManifestRefresh === true) {
449
414
  callbacks.needsManifestRefresh();
450
- if (globalCanceller.isUsed()) {
415
+ if (canceller.isUsed()) {
451
416
  return; // previous callback has stopped everything by side-effect
452
417
  }
453
418
  }
454
419
  if (inbandEvents !== undefined && inbandEvents.length > 0) {
455
420
  callbacks.inbandEvent(inbandEvents);
456
- if (globalCanceller.isUsed()) {
421
+ if (canceller.isUsed()) {
457
422
  return; // previous callback has stopped everything by side-effect
458
423
  }
459
424
  }
@@ -469,7 +434,7 @@ export default function RepresentationStream<TSegmentDataType>(
469
434
  segment: evt.segment,
470
435
  segmentSink,
471
436
  },
472
- globalCanceller.signal,
437
+ canceller.signal,
473
438
  )
474
439
  .then((result) => {
475
440
  if (result !== null) {
@@ -487,7 +452,7 @@ export default function RepresentationStream<TSegmentDataType>(
487
452
  * @param {*} err
488
453
  */
489
454
  function onFatalBufferError(err: unknown): void {
490
- if (globalCanceller.isUsed() && err instanceof CancellationError) {
455
+ if (canceller.isUsed() && err instanceof CancellationError) {
491
456
  // The error is linked to cancellation AND we explicitely cancelled buffer
492
457
  // operations.
493
458
  // We can thus ignore it, it is very unlikely to lead to true buffer issues.
@@ -499,7 +464,7 @@ export default function RepresentationStream<TSegmentDataType>(
499
464
  representation.bitrate,
500
465
  err instanceof Error ? err : null,
501
466
  );
502
- globalCanceller.cancel();
467
+ canceller.cancel();
503
468
  callbacks.error(err);
504
469
  }
505
470
  }
@@ -62,9 +62,6 @@ export default async function pushInitSegment<T>(
62
62
  },
63
63
  cancelSignal: CancellationSignal,
64
64
  ): Promise<IStreamEventAddedSegmentPayload | null> {
65
- if (cancelSignal.cancellationError !== null) {
66
- throw cancelSignal.cancellationError;
67
- }
68
65
  const codec = content.representation.getMimeTypeString();
69
66
  const data: IPushedChunkData<T> = {
70
67
  initSegmentUniqueId,
@@ -68,9 +68,6 @@ export default async function pushMediaSegment<T>(
68
68
  if (parsedSegment.chunkData === null) {
69
69
  return null;
70
70
  }
71
- if (cancelSignal.cancellationError !== null) {
72
- throw cancelSignal.cancellationError;
73
- }
74
71
  const { chunkData, chunkInfos, chunkOffset, chunkSize, appendWindow } = parsedSegment;
75
72
  const codec = content.representation.getMimeTypeString();
76
73
  const { APPEND_WINDOW_SECURITIES } = config.getCurrent();
@@ -11,7 +11,6 @@ describe("MediaCapabilitiesProber probers - DRMInfos", () => {
11
11
  const configuration = {};
12
12
  const probeDRMInfos = (await vi.importActual("../../probers/DRMInfos"))
13
13
  .default as typeof IProbeDRMInfos;
14
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
15
14
  await expect(probeDRMInfos(configuration)).rejects.toEqual(
16
15
  "MediaCapabilitiesProber >>> API_CALL: " +
17
16
  "Missing a type argument to request a media key system access.",
@@ -24,7 +23,6 @@ describe("MediaCapabilitiesProber probers - DRMInfos", () => {
24
23
  };
25
24
  const probeDRMInfos = (await vi.importActual("../../probers/DRMInfos"))
26
25
  .default as typeof IProbeDRMInfos;
27
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
28
26
  await expect(probeDRMInfos(configuration)).rejects.toEqual(
29
27
  "MediaCapabilitiesProber >>> API_CALL: " +
30
28
  "Missing a type argument to request a media key system access.",
@@ -42,7 +40,6 @@ describe("MediaCapabilitiesProber probers - DRMInfos", () => {
42
40
  }));
43
41
  const probeDRMInfos = (await vi.importActual("../../probers/DRMInfos"))
44
42
  .default as typeof IProbeDRMInfos;
45
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
46
43
  await expect(probeDRMInfos(configuration)).resolves.toEqual([
47
44
  ProberStatus.NotSupported,
48
45
  { configuration: {}, type: "clearkick" },
@@ -13,7 +13,6 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => {
13
13
  }));
14
14
  const probeHDCPPolicy = (await vi.importActual("../../probers/HDCPPolicy"))
15
15
  .default as typeof IProbeHDCPPolicy;
16
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
17
16
  await expect(probeHDCPPolicy({})).rejects.toEqual(
18
17
  "MediaCapabilitiesProber >>> API_CALL: API not available",
19
18
  );
@@ -32,7 +31,6 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => {
32
31
  }));
33
32
  const probeHDCPPolicy = (await vi.importActual("../../probers/HDCPPolicy"))
34
33
  .default as typeof IProbeHDCPPolicy;
35
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
36
34
  await expect(probeHDCPPolicy({})).rejects.toEqual(
37
35
  "MediaCapabilitiesProber >>> API_CALL: " +
38
36
  "Missing policy argument for calling getStatusForPolicy.",
@@ -166,7 +166,6 @@ describe("MediaCapabilitiesProber probers - decodingInfo", () => {
166
166
  // @ts-expect-error: `navigator.mediaCapabilities` is read-only normally, for
167
167
  // now, we're going through JSDom through so that's OK.
168
168
  delete navigator.mediaCapabilities;
169
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
170
169
  await expect(probeDecodingInfos({})).rejects.toThrowError(
171
170
  "MediaCapabilitiesProber >>> API_CALL: MediaCapabilities API not available",
172
171
  );
@@ -182,7 +181,6 @@ describe("MediaCapabilitiesProber probers - decodingInfo", () => {
182
181
  // now, we're going through JSDom through so that's OK.
183
182
  navigator.mediaCapabilities = {};
184
183
  }
185
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
186
184
  await expect(probeDecodingInfos({})).rejects.toThrowError(
187
185
  "MediaCapabilitiesProber >>> API_CALL: Decoding Info not available",
188
186
  );
@@ -15,7 +15,6 @@ describe("MediaCapabilitiesProber - probers probeMediaContentType", () => {
15
15
  const probeMediaContentType = (
16
16
  await vi.importActual("../../probers/mediaContentType")
17
17
  ).default as typeof IProbeMediaContentType;
18
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
19
18
  await expect(probeMediaContentType({})).rejects.toThrowError(
20
19
  "MediaCapabilitiesProber >>> API_CALL: " + "MediaSource API not available",
21
20
  );
@@ -30,7 +29,6 @@ describe("MediaCapabilitiesProber - probers probeMediaContentType", () => {
30
29
  const probeMediaContentType = (
31
30
  await vi.importActual("../../probers/mediaContentType")
32
31
  ).default as typeof IProbeMediaContentType;
33
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
34
32
  await expect(probeMediaContentType({})).rejects.toThrowError(
35
33
  "MediaCapabilitiesProber >>> API_CALL: " + "isTypeSupported not available",
36
34
  );
@@ -5,7 +5,6 @@ import { ProberStatus } from "../../types";
5
5
 
6
6
  describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => {
7
7
  it("should throw if matchMedia is undefined", async () => {
8
- // eslint-disable-next-line @typescript-eslint/unbound-method
9
8
  const origMatchMedia = globalScope.matchMedia;
10
9
  (
11
10
  globalScope as { matchMedia: typeof globalScope.matchMedia | undefined }
@@ -14,7 +13,6 @@ describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => {
14
13
  const probeMediaDisplayInfos = (
15
14
  await vi.importActual("../../probers/mediaDisplayInfos")
16
15
  ).default as typeof IProbeMediaDisplayInfos;
17
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
18
16
  await expect(probeMediaDisplayInfos({})).rejects.toThrowError(
19
17
  "MediaCapabilitiesProber >>> API_CALL: matchMedia not available",
20
18
  );
@@ -24,7 +22,6 @@ describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => {
24
22
  });
25
23
 
26
24
  it("should throw if no colorSpace in display configuration", async () => {
27
- // eslint-disable-next-line @typescript-eslint/unbound-method
28
25
  const origMatchMedia = globalScope.matchMedia;
29
26
  const mockMatchMedia = vi.fn(() => true);
30
27
  globalScope.matchMedia = mockMatchMedia as unknown as typeof globalScope.matchMedia;
@@ -55,7 +52,6 @@ describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => {
55
52
  });
56
53
 
57
54
  it("should throw if no display in configuration", async () => {
58
- // eslint-disable-next-line @typescript-eslint/unbound-method
59
55
  const origMatchMedia = globalScope.matchMedia;
60
56
  const mockMatchMedia = vi.fn(() => true);
61
57
  globalScope.matchMedia = mockMatchMedia as unknown as typeof globalScope.matchMedia;
@@ -84,7 +80,6 @@ describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => {
84
80
  });
85
81
 
86
82
  it("should throw if mediaMatch called with bad arguments", async () => {
87
- // eslint-disable-next-line @typescript-eslint/unbound-method
88
83
  const origMatchMedia = globalScope.matchMedia;
89
84
  const mockMatchMedia = vi.fn(() => ({
90
85
  media: "not all",
@@ -120,7 +115,6 @@ describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => {
120
115
  });
121
116
 
122
117
  it("should resolves with `Supported` if color space is supported", async () => {
123
- // eslint-disable-next-line @typescript-eslint/unbound-method
124
118
  const origMatchMedia = globalScope.matchMedia;
125
119
  const mockMatchMedia = vi.fn(() => ({
126
120
  matches: true,
@@ -153,7 +147,6 @@ describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => {
153
147
  });
154
148
 
155
149
  it("should resolves with `NotSupported` if color space is not supported", async () => {
156
- // eslint-disable-next-line @typescript-eslint/unbound-method
157
150
  const origMatchMedia = globalScope.matchMedia;
158
151
  const mockMatchMedia = vi.fn(() => ({
159
152
  matches: false,
@@ -29,7 +29,7 @@ import probeMediaConfiguration from "./probeMediaConfiguration";
29
29
  /**
30
30
  * Probe configuration and get status from result.
31
31
  * @param {Object} config
32
- * @param {Array.<Object>} browserAPIS
32
+ * @param {Array.<Object>} browserAPIS
33
33
  * @returns {Promise.<string>}
34
34
  */
35
35
  function getStatusFromConfiguration(
@@ -112,8 +112,8 @@ const capabilites: { [key: string]: ICapabilities } = {
112
112
 
113
113
  /**
114
114
  * Get probed configuration.
115
- * @param {Object} config
116
- * @param {Array<string>} probers
115
+ * @param {Object} config
116
+ * @param {Array<string>} probers
117
117
  * @returns {Object}
118
118
  */
119
119
  export default function getProbedConfiguration(
@@ -32,7 +32,6 @@ export default function probeContentType(
32
32
  "MediaCapabilitiesProber >>> API_CALL: " + "MediaSource API not available",
33
33
  );
34
34
  }
35
- // eslint-disable-next-line @typescript-eslint/unbound-method
36
35
  if (typeof MediaSource_.isTypeSupported !== "function") {
37
36
  throw new Error(
38
37
  "MediaCapabilitiesProber >>> API_CALL: " + "isTypeSupported not available",
@@ -27,7 +27,6 @@ export default function probeMatchMedia(
27
27
  config: IMediaConfiguration,
28
28
  ): Promise<[ProberStatus]> {
29
29
  return new Promise((resolve) => {
30
- // eslint-disable-next-line @typescript-eslint/unbound-method
31
30
  if (typeof globalScope.matchMedia !== "function") {
32
31
  throw new Error(
33
32
  "MediaCapabilitiesProber >>> API_CALL: " + "matchMedia not available",
@@ -408,7 +408,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
408
408
  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
409
409
  videoElement.preload = "auto";
410
410
 
411
- this.version = /* PLAYER_VERSION */ "4.3.0-dev.2025031700";
411
+ this.version = /* PLAYER_VERSION */ "4.3.0";
412
412
  this.log = log;
413
413
  this.state = "STOPPED";
414
414
  this.videoElement = videoElement;
@@ -1725,7 +1725,6 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1725
1725
  }
1726
1726
 
1727
1727
  const playPromise = this.videoElement.play();
1728
- // eslint-disable-next-line @typescript-eslint/unbound-method
1729
1728
  if (isNullOrUndefined(playPromise) || typeof playPromise.catch !== "function") {
1730
1729
  return Promise.resolve();
1731
1730
  }
@@ -3416,7 +3415,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
3416
3415
  }
3417
3416
  }
3418
3417
  }
3419
- Player.version = /* PLAYER_VERSION */ "4.3.0-dev.2025031700";
3418
+ Player.version = /* PLAYER_VERSION */ "4.3.0";
3420
3419
 
3421
3420
  /** Every events sent by the RxPlayer's public API. */
3422
3421
  interface IPublicAPIEvent {