rx-player 4.5.0-dev.2026012302 → 4.5.0-dev.2026031700

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 (180) hide show
  1. package/CHANGELOG.md +21 -3
  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/should_seek_at_zero.d.ts +12 -0
  8. package/dist/commonjs/compat/should_seek_at_zero.d.ts.map +1 -0
  9. package/dist/commonjs/compat/should_seek_at_zero.js +23 -0
  10. package/dist/commonjs/core/cmcd/cmcd_data_builder.js +2 -2
  11. package/dist/commonjs/core/entry/FreezeResolver.js +2 -2
  12. package/dist/commonjs/core/entry/content_preparer.d.ts +1 -6
  13. package/dist/commonjs/core/entry/content_preparer.d.ts.map +1 -1
  14. package/dist/commonjs/core/entry/content_preparer.js +2 -125
  15. package/dist/commonjs/core/entry/content_time_boundaries_observer.d.ts.map +1 -1
  16. package/dist/commonjs/core/entry/content_time_boundaries_observer.js +8 -0
  17. package/dist/commonjs/core/entry/core_entry.d.ts +1 -1
  18. package/dist/commonjs/core/entry/core_entry.d.ts.map +1 -1
  19. package/dist/commonjs/core/entry/core_entry.js +2 -7
  20. package/dist/commonjs/core/entry/core_text_displayer_interface.d.ts.map +1 -1
  21. package/dist/commonjs/core/entry/core_text_displayer_interface.js +3 -1
  22. package/dist/commonjs/core/entry/index.d.ts +1 -1
  23. package/dist/commonjs/core/entry/index.d.ts.map +1 -1
  24. package/dist/commonjs/core/entry/utils.d.ts +64 -0
  25. package/dist/commonjs/core/entry/utils.d.ts.map +1 -1
  26. package/dist/commonjs/core/entry/utils.js +165 -0
  27. package/dist/commonjs/core/fetchers/segment/segment_queue.d.ts +5 -6
  28. package/dist/commonjs/core/fetchers/segment/segment_queue.d.ts.map +1 -1
  29. package/dist/commonjs/core/fetchers/thumbnails/thumbnail_fetcher.d.ts.map +1 -1
  30. package/dist/commonjs/core/fetchers/thumbnails/thumbnail_fetcher.js +34 -30
  31. package/dist/commonjs/core/stream/representation/encryption_data_notifier.d.ts +70 -0
  32. package/dist/commonjs/core/stream/representation/encryption_data_notifier.d.ts.map +1 -0
  33. package/dist/commonjs/core/stream/representation/encryption_data_notifier.js +107 -0
  34. package/dist/commonjs/core/stream/representation/representation_stream.d.ts.map +1 -1
  35. package/dist/commonjs/core/stream/representation/representation_stream.js +12 -60
  36. package/dist/commonjs/core/stream/representation/utils/get_needed_segments.js +1 -1
  37. package/dist/commonjs/default_config.d.ts +5 -0
  38. package/dist/commonjs/default_config.d.ts.map +1 -1
  39. package/dist/commonjs/default_config.js +5 -0
  40. package/dist/commonjs/experimental/features/worker/index.d.ts +2 -1
  41. package/dist/commonjs/experimental/features/worker/index.d.ts.map +1 -1
  42. package/dist/commonjs/experimental/features/worker/index.js +4 -3
  43. package/dist/commonjs/main_thread/api/public_api.d.ts.map +1 -1
  44. package/dist/commonjs/main_thread/api/public_api.js +28 -4
  45. package/dist/commonjs/main_thread/init/directfile_content_initializer.d.ts.map +1 -1
  46. package/dist/commonjs/main_thread/init/directfile_content_initializer.js +23 -1
  47. package/dist/commonjs/main_thread/init/utils/initial_seek_and_play.d.ts.map +1 -1
  48. package/dist/commonjs/main_thread/init/utils/initial_seek_and_play.js +3 -1
  49. package/dist/commonjs/manifest/classes/index.d.ts +2 -1
  50. package/dist/commonjs/manifest/classes/index.d.ts.map +1 -1
  51. package/dist/commonjs/manifest/classes/representation.d.ts +1 -1
  52. package/dist/commonjs/manifest/classes/representation.d.ts.map +1 -1
  53. package/dist/commonjs/manifest/classes/representation.js +2 -2
  54. package/dist/commonjs/manifest/classes/representation_index/types.d.ts +2 -2
  55. package/dist/commonjs/parsers/texttracks/ttml/html/apply_line_height.d.ts.map +1 -1
  56. package/dist/commonjs/parsers/texttracks/ttml/html/apply_line_height.js +16 -1
  57. package/dist/commonjs/utils/base64.d.ts +15 -1
  58. package/dist/commonjs/utils/base64.d.ts.map +1 -1
  59. package/dist/commonjs/utils/base64.js +6 -0
  60. package/dist/commonjs/utils/ranges.d.ts +1 -1
  61. package/dist/commonjs/utils/ranges.js +1 -1
  62. package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
  63. package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
  64. package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  65. package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
  66. package/dist/es2017/compat/should_seek_at_zero.d.ts +12 -0
  67. package/dist/es2017/compat/should_seek_at_zero.d.ts.map +1 -0
  68. package/dist/es2017/compat/should_seek_at_zero.js +20 -0
  69. package/dist/es2017/core/cmcd/cmcd_data_builder.js +2 -2
  70. package/dist/es2017/core/entry/FreezeResolver.js +1 -1
  71. package/dist/es2017/core/entry/content_preparer.d.ts +1 -6
  72. package/dist/es2017/core/entry/content_preparer.d.ts.map +1 -1
  73. package/dist/es2017/core/entry/content_preparer.js +1 -76
  74. package/dist/es2017/core/entry/content_time_boundaries_observer.d.ts.map +1 -1
  75. package/dist/es2017/core/entry/content_time_boundaries_observer.js +8 -0
  76. package/dist/es2017/core/entry/core_entry.d.ts +1 -1
  77. package/dist/es2017/core/entry/core_entry.d.ts.map +1 -1
  78. package/dist/es2017/core/entry/core_entry.js +2 -7
  79. package/dist/es2017/core/entry/core_text_displayer_interface.d.ts.map +1 -1
  80. package/dist/es2017/core/entry/core_text_displayer_interface.js +3 -1
  81. package/dist/es2017/core/entry/index.d.ts +1 -1
  82. package/dist/es2017/core/entry/index.d.ts.map +1 -1
  83. package/dist/es2017/core/entry/utils.d.ts +64 -0
  84. package/dist/es2017/core/entry/utils.d.ts.map +1 -1
  85. package/dist/es2017/core/entry/utils.js +98 -0
  86. package/dist/es2017/core/fetchers/segment/segment_queue.d.ts +5 -6
  87. package/dist/es2017/core/fetchers/segment/segment_queue.d.ts.map +1 -1
  88. package/dist/es2017/core/fetchers/thumbnails/thumbnail_fetcher.d.ts.map +1 -1
  89. package/dist/es2017/core/fetchers/thumbnails/thumbnail_fetcher.js +21 -16
  90. package/dist/es2017/core/stream/representation/encryption_data_notifier.d.ts +70 -0
  91. package/dist/es2017/core/stream/representation/encryption_data_notifier.d.ts.map +1 -0
  92. package/dist/es2017/core/stream/representation/encryption_data_notifier.js +80 -0
  93. package/dist/es2017/core/stream/representation/representation_stream.d.ts.map +1 -1
  94. package/dist/es2017/core/stream/representation/representation_stream.js +10 -38
  95. package/dist/es2017/core/stream/representation/utils/get_needed_segments.js +1 -1
  96. package/dist/es2017/default_config.d.ts +5 -0
  97. package/dist/es2017/default_config.d.ts.map +1 -1
  98. package/dist/es2017/default_config.js +5 -0
  99. package/dist/es2017/experimental/features/worker/index.d.ts +2 -1
  100. package/dist/es2017/experimental/features/worker/index.d.ts.map +1 -1
  101. package/dist/es2017/experimental/features/worker/index.js +2 -3
  102. package/dist/es2017/main_thread/api/public_api.d.ts.map +1 -1
  103. package/dist/es2017/main_thread/api/public_api.js +28 -4
  104. package/dist/es2017/main_thread/init/directfile_content_initializer.d.ts.map +1 -1
  105. package/dist/es2017/main_thread/init/directfile_content_initializer.js +23 -1
  106. package/dist/es2017/main_thread/init/utils/initial_seek_and_play.d.ts.map +1 -1
  107. package/dist/es2017/main_thread/init/utils/initial_seek_and_play.js +3 -1
  108. package/dist/es2017/manifest/classes/index.d.ts +2 -1
  109. package/dist/es2017/manifest/classes/index.d.ts.map +1 -1
  110. package/dist/es2017/manifest/classes/representation.d.ts +1 -1
  111. package/dist/es2017/manifest/classes/representation.d.ts.map +1 -1
  112. package/dist/es2017/manifest/classes/representation.js +1 -1
  113. package/dist/es2017/manifest/classes/representation_index/types.d.ts +2 -2
  114. package/dist/es2017/parsers/texttracks/ttml/html/apply_line_height.d.ts.map +1 -1
  115. package/dist/es2017/parsers/texttracks/ttml/html/apply_line_height.js +16 -1
  116. package/dist/es2017/utils/base64.d.ts +15 -1
  117. package/dist/es2017/utils/base64.d.ts.map +1 -1
  118. package/dist/es2017/utils/base64.js +6 -0
  119. package/dist/es2017/utils/ranges.d.ts +1 -1
  120. package/dist/es2017/utils/ranges.js +1 -1
  121. package/dist/mpd-parser.wasm +0 -0
  122. package/dist/worker.js +8 -8
  123. package/package.json +26 -23
  124. package/src/__GENERATED_CODE/embedded_dash_wasm.ts +1 -1
  125. package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
  126. package/src/compat/should_seek_at_zero.ts +23 -0
  127. package/src/core/adaptive/__tests__/adaptive_representation_selector.test.ts +734 -0
  128. package/src/core/adaptive/__tests__/guess_based_chooser.test.ts +793 -0
  129. package/src/core/adaptive/__tests__/network_analyzer.test.ts +514 -0
  130. package/src/core/adaptive/utils/__tests__/bandwidth_estimator.test.ts +117 -0
  131. package/src/core/adaptive/utils/__tests__/last_estimate_storage.test.ts +76 -0
  132. package/src/core/adaptive/utils/__tests__/pending_requests_store.test.ts +288 -0
  133. package/src/core/adaptive/utils/__tests__/representation_score_calculator.test.ts +249 -0
  134. package/src/core/cmcd/__tests__/cmcd_data_builder.test.ts +464 -0
  135. package/src/core/cmcd/cmcd_data_builder.ts +2 -2
  136. package/src/core/entry/FreezeResolver.ts +1 -1
  137. package/src/core/entry/__tests__/FreezeResolver.test.ts +542 -0
  138. package/src/core/entry/__tests__/content_time_boundaries_observer.test.ts +867 -0
  139. package/src/core/entry/__tests__/core_text_displayer_interface.test.ts +205 -0
  140. package/src/core/entry/__tests__/get_buffered_data_per_media_buffer.test.ts +95 -0
  141. package/src/core/entry/__tests__/track_choice_setter.test.ts +288 -0
  142. package/src/core/entry/__tests__/utils.test.ts +309 -0
  143. package/src/core/entry/content_preparer.ts +7 -118
  144. package/src/core/entry/content_time_boundaries_observer.ts +10 -0
  145. package/src/core/entry/core_entry.ts +7 -14
  146. package/src/core/entry/core_text_displayer_interface.ts +3 -1
  147. package/src/core/entry/index.ts +1 -1
  148. package/src/core/entry/utils.ts +151 -0
  149. package/src/core/fetchers/__tests__/cdn_prioritizer.test.ts +166 -0
  150. package/src/core/fetchers/manifest/__tests__/manifest_fetcher.test.ts +803 -0
  151. package/src/core/fetchers/segment/__tests__/segment_fetcher.test.ts +872 -0
  152. package/src/core/fetchers/segment/__tests__/segment_queue.test.ts +557 -0
  153. package/src/core/fetchers/segment/segment_queue.ts +5 -6
  154. package/src/core/fetchers/thumbnails/__tests__/thumbnail_fetcher.test.ts +435 -0
  155. package/src/core/fetchers/thumbnails/thumbnail_fetcher.ts +28 -20
  156. package/src/core/fetchers/utils/__tests__/schedule_request.test.ts +331 -0
  157. package/src/core/stream/adaptation/__tests__/get_representations_switch_strategy.test.ts +593 -0
  158. package/src/core/stream/period/utils/__tests__/get_adaptation_switch_strategy.test.ts +646 -0
  159. package/src/core/stream/representation/__tests__/encryption_data_notifier.test.ts +531 -0
  160. package/src/core/stream/representation/encryption_data_notifier.ts +122 -0
  161. package/src/core/stream/representation/representation_stream.ts +11 -49
  162. package/src/core/stream/representation/utils/__tests__/append_segment_to_buffer.test.ts +321 -0
  163. package/src/core/stream/representation/utils/__tests__/check_for_discontinuity.test.ts +513 -0
  164. package/src/core/stream/representation/utils/__tests__/get_segment_priority.test.ts +132 -0
  165. package/src/core/stream/representation/utils/__tests__/push_init_segment.test.ts +209 -0
  166. package/src/core/stream/representation/utils/__tests__/push_media_segment.test.ts +343 -0
  167. package/src/core/stream/representation/utils/get_needed_segments.ts +1 -1
  168. package/src/default_config.ts +6 -0
  169. package/src/experimental/features/worker/index.ts +2 -4
  170. package/src/main_thread/api/public_api.ts +33 -4
  171. package/src/main_thread/init/directfile_content_initializer.ts +26 -1
  172. package/src/main_thread/init/utils/initial_seek_and_play.ts +5 -1
  173. package/src/manifest/classes/index.ts +2 -0
  174. package/src/manifest/classes/representation.ts +2 -1
  175. package/src/manifest/classes/representation_index/types.ts +2 -2
  176. package/src/mse/__tests__/main_media_source_interface.test.ts +846 -0
  177. package/src/parsers/texttracks/ttml/html/apply_line_height.ts +16 -1
  178. package/src/utils/__tests__/base64.test.ts +159 -191
  179. package/src/utils/base64.ts +30 -1
  180. package/src/utils/ranges.ts +1 -1
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Determines whether the player should perform an explicit initial seek to 0.
3
+ *
4
+ * In most cases, a media element starts at position 0 and no initial seek is
5
+ * needed. The exception is Safari when playing HLS streams: the native player
6
+ * may start at the live position instead of 0, so performing an explicit seek
7
+ * ensures the player starts from the intended initial position.
8
+ *
9
+ * @returns {boolean} `true` if an explicit initial seek to 0 should be performed.
10
+ */
11
+ export default function shouldPerformInitialSeekToZero(): boolean;
12
+ //# sourceMappingURL=should_seek_at_zero.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"should_seek_at_zero.d.ts","sourceRoot":"","sources":["../../../src/compat/should_seek_at_zero.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,UAAU,8BAA8B,IAAI,OAAO,CAShE"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = shouldPerformInitialSeekToZero;
4
+ var config_1 = require("../config");
5
+ var env_detector_1 = require("./env_detector");
6
+ /**
7
+ * Determines whether the player should perform an explicit initial seek to 0.
8
+ *
9
+ * In most cases, a media element starts at position 0 and no initial seek is
10
+ * needed. The exception is Safari when playing HLS streams: the native player
11
+ * may start at the live position instead of 0, so performing an explicit seek
12
+ * ensures the player starts from the intended initial position.
13
+ *
14
+ * @returns {boolean} `true` if an explicit initial seek to 0 should be performed.
15
+ */
16
+ function shouldPerformInitialSeekToZero() {
17
+ var FORCE_INITIAL_SEEK_TO_ZERO = config_1.default.getCurrent().FORCE_INITIAL_SEEK_TO_ZERO;
18
+ if (FORCE_INITIAL_SEEK_TO_ZERO) {
19
+ return FORCE_INITIAL_SEEK_TO_ZERO;
20
+ }
21
+ return (env_detector_1.default.browser === env_detector_1.default.BROWSERS.SafariDesktop ||
22
+ env_detector_1.default.browser === env_detector_1.default.BROWSERS.SafariMobile);
23
+ }
@@ -297,14 +297,14 @@ var CmcdDataBuilder = /** @class */ (function () {
297
297
  var val = props[prop];
298
298
  if (val !== undefined) {
299
299
  var formatted = "\"".concat(val.replace("\\", "\\\\").replace('"', '\\"'), "\"");
300
- var toAdd = "prop=".concat(formatted, ",");
300
+ var toAdd = "".concat(prop, "=").concat(formatted, ",");
301
301
  addPayload(toAdd, headerName);
302
302
  }
303
303
  };
304
304
  var addTokenProperty = function (prop, headerName) {
305
305
  var val = props[prop];
306
306
  if (val !== undefined) {
307
- var toAdd = "prop=".concat(val, ",");
307
+ var toAdd = "".concat(prop, "=").concat(val, ",");
308
308
  addPayload(toAdd, headerName);
309
309
  }
310
310
  };
@@ -11,7 +11,7 @@ var __values = (this && this.__values) || function(o) {
11
11
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- var experimental_1 = require("../../experimental");
14
+ var config_1 = require("../../config");
15
15
  var log_1 = require("../../log");
16
16
  var monotonic_timestamp_1 = require("../../utils/monotonic_timestamp");
17
17
  /**
@@ -104,7 +104,7 @@ var FreezeResolver = /** @class */ (function () {
104
104
  return null;
105
105
  }
106
106
  this._ignoreFreezeUntil = null;
107
- var _c = experimental_1.config.getCurrent(), UNFREEZING_SEEK_DELAY = _c.UNFREEZING_SEEK_DELAY, UNFREEZING_DELTA_POSITION = _c.UNFREEZING_DELTA_POSITION, FREEZING_FLUSH_FAILURE_DELAY = _c.FREEZING_FLUSH_FAILURE_DELAY;
107
+ var _c = config_1.default.getCurrent(), UNFREEZING_SEEK_DELAY = _c.UNFREEZING_SEEK_DELAY, UNFREEZING_DELTA_POSITION = _c.UNFREEZING_DELTA_POSITION, FREEZING_FLUSH_FAILURE_DELAY = _c.FREEZING_FLUSH_FAILURE_DELAY;
108
108
  var readyState = observation.readyState, rebuffering = observation.rebuffering, freezing = observation.freezing, fullyLoaded = observation.fullyLoaded;
109
109
  var freezingPosition = observation.position.getPolled();
110
110
  var bufferGap = normalizeBufferGap(observation.bufferGap);
@@ -1,7 +1,6 @@
1
1
  import type { IContentInitializationData } from "../../main_thread/types";
2
2
  import type { IManifest } from "../../manifest";
3
3
  import type { IMediaSourceInterface } from "../../mse";
4
- import type { IRepresentationFilter, ISegmentLoader, IManifestLoader } from "../../public_types";
5
4
  import type { IRepresentationEstimator } from "../adaptive";
6
5
  import type { IRepresentationEstimatorThrottlers } from "../adaptive/adaptive_representation_selector";
7
6
  import CmcdDataBuilder from "../cmcd";
@@ -13,6 +12,7 @@ import type { ICoreMessage } from "../types";
13
12
  import CoreTextDisplayerInterface from "./core_text_displayer_interface";
14
13
  import FreezeResolver from "./FreezeResolver";
15
14
  import TrackChoiceSetter from "./track_choice_setter";
15
+ import type { ICorePlugins } from "./utils";
16
16
  /**
17
17
  * Class facilitating the workflows behind loading a new content for the
18
18
  * RxPlayer Core:
@@ -186,9 +186,4 @@ export interface IPreparedContentData {
186
186
  */
187
187
  useMseInWorker: boolean;
188
188
  }
189
- export interface ICorePlugins {
190
- representationFilters: Map<string, IRepresentationFilter>;
191
- segmentLoaders: Map<string, ISegmentLoader>;
192
- manifestLoaders: Map<string, IManifestLoader>;
193
- }
194
189
  //# sourceMappingURL=content_preparer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content_preparer.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/content_preparer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content_preparer.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/content_preparer.ts"],"names":[],"mappings":"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"}
@@ -26,35 +26,12 @@ var __read = (this && this.__read) || function (o, n) {
26
26
  }
27
27
  return ar;
28
28
  };
29
- var __values = (this && this.__values) || function(o) {
30
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
31
- if (m) return m.call(o);
32
- if (o && typeof o.length === "number") return {
33
- next: function () {
34
- if (o && i >= o.length) o = void 0;
35
- return { value: o && o[i++], done: !o };
36
- }
37
- };
38
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
39
- };
40
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
- if (ar || !(i in from)) {
43
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
- ar[i] = from[i];
45
- }
46
- }
47
- return to.concat(ar || Array.prototype.slice.call(from));
48
- };
49
29
  Object.defineProperty(exports, "__esModule", { value: true });
50
- var browser_compatibility_types_1 = require("../../compat/browser_compatibility_types");
51
30
  var features_1 = require("../../features");
52
31
  var log_1 = require("../../log");
53
- var manifest_1 = require("../../manifest");
54
32
  var main_media_source_interface_1 = require("../../mse/main_media_source_interface");
55
33
  var worker_media_source_interface_1 = require("../../mse/worker_media_source_interface");
56
34
  var id_generator_1 = require("../../utils/id_generator");
57
- var is_null_or_undefined_1 = require("../../utils/is_null_or_undefined");
58
35
  var task_canceller_1 = require("../../utils/task_canceller");
59
36
  var adaptive_1 = require("../adaptive");
60
37
  var cmcd_1 = require("../cmcd");
@@ -138,7 +115,7 @@ var ContentPreparer = /** @class */ (function () {
138
115
  "Did you add the corresponding feature?"));
139
116
  return;
140
117
  }
141
- var transportPipelines = transportFn(__assign(__assign({}, transportOptions), extractExternalPlugins(transportOptions, corePlugins)));
118
+ var transportPipelines = transportFn(__assign(__assign({}, transportOptions), (0, utils_1.extractExternalPlugins)(transportOptions, corePlugins)));
142
119
  var cmcdDataBuilder = context.cmcd === undefined ? null : new cmcd_1.default(context.cmcd);
143
120
  var manifestFetcher = new fetchers_1.ManifestFetcher(url === undefined ? undefined : [url], transportPipelines, __assign({ cmcdDataBuilder: cmcdDataBuilder }, context.manifestRetryOptions));
144
121
  var representationEstimator = (0, adaptive_1.default)({
@@ -217,7 +194,7 @@ var ContentPreparer = /** @class */ (function () {
217
194
  currentMediaSourceCanceller.isUsed()) {
218
195
  return;
219
196
  }
220
- updateCodecSupportInWorkerMode(manifest);
197
+ (0, utils_1.updateCodecSupportInWorkerMode)(manifest);
221
198
  manifest.addEventListener("manifestUpdate", function (updates) {
222
199
  if (manifest === null) {
223
200
  // TODO log warn?
@@ -355,103 +332,3 @@ function createMediaSourceInterfaceAndSegmentSinksStore(sendMessage, contentId,
355
332
  });
356
333
  return [mediaSourceInterface, segmentSinksStore, textSender];
357
334
  }
358
- /**
359
- * Set Representation.isCodecSupportedInWebWorker to true or false
360
- * If the codec is supported in the current context.
361
- * If MSE in worker is not available, the attribute is not set.
362
- */
363
- function updateCodecSupportInWorkerMode(manifestToUpdate) {
364
- var e_1, _a, e_2, _b, e_3, _c;
365
- var _d, _e;
366
- if ((0, is_null_or_undefined_1.default)(browser_compatibility_types_1.MediaSource_)) {
367
- return;
368
- }
369
- var codecsMap = new Map();
370
- try {
371
- for (var _f = __values(manifestToUpdate.periods), _g = _f.next(); !_g.done; _g = _f.next()) {
372
- var period = _g.value;
373
- var checkedAdaptations = __spreadArray(__spreadArray([], __read(((_d = period.adaptations.video) !== null && _d !== void 0 ? _d : [])), false), __read(((_e = period.adaptations.audio) !== null && _e !== void 0 ? _e : [])), false);
374
- try {
375
- for (var checkedAdaptations_1 = (e_2 = void 0, __values(checkedAdaptations)), checkedAdaptations_1_1 = checkedAdaptations_1.next(); !checkedAdaptations_1_1.done; checkedAdaptations_1_1 = checkedAdaptations_1.next()) {
376
- var adaptation = checkedAdaptations_1_1.value;
377
- try {
378
- for (var _h = (e_3 = void 0, __values(adaptation.representations)), _j = _h.next(); !_j.done; _j = _h.next()) {
379
- var representation = _j.value;
380
- var codec = "".concat(representation.mimeType, ";codecs=\"").concat(representation.codecs[0], "\"");
381
- if (codecsMap.has(codec)) {
382
- representation.isCodecSupportedInWebWorker = codecsMap.get(codec);
383
- }
384
- else {
385
- var supported = browser_compatibility_types_1.MediaSource_.isTypeSupported(codec);
386
- representation.isCodecSupportedInWebWorker = supported;
387
- codecsMap.set(codec, supported);
388
- }
389
- }
390
- }
391
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
392
- finally {
393
- try {
394
- if (_j && !_j.done && (_c = _h.return)) _c.call(_h);
395
- }
396
- finally { if (e_3) throw e_3.error; }
397
- }
398
- }
399
- }
400
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
401
- finally {
402
- try {
403
- if (checkedAdaptations_1_1 && !checkedAdaptations_1_1.done && (_b = checkedAdaptations_1.return)) _b.call(checkedAdaptations_1);
404
- }
405
- finally { if (e_2) throw e_2.error; }
406
- }
407
- }
408
- }
409
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
410
- finally {
411
- try {
412
- if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
413
- }
414
- finally { if (e_1) throw e_1.error; }
415
- }
416
- }
417
- /**
418
- * Some functions may be defined by the API, we call those "plugins".
419
- * This function parses and extract the actual function from the different
420
- * ways an application can provide it to us.
421
- * @param {Object} input - The API input
422
- * @param {Object} corePlugins - Context on what identified functions are
423
- * defined right now.
424
- * @returns {Function}
425
- */
426
- function extractExternalPlugins(input, corePlugins) {
427
- var _a, _b, _c, _d, _e, _f, _g;
428
- var manifestLoader;
429
- var segmentLoader;
430
- var representationFilter;
431
- if (typeof ((_a = input.representationFilter) === null || _a === void 0 ? void 0 : _a.fn) === "function") {
432
- representationFilter = input.representationFilter.fn;
433
- }
434
- else if (typeof ((_b = input.representationFilter) === null || _b === void 0 ? void 0 : _b.eval) === "string") {
435
- representationFilter = (0, manifest_1.createRepresentationFilterFromFnString)(input.representationFilter.eval);
436
- }
437
- else if (typeof ((_c = input.representationFilter) === null || _c === void 0 ? void 0 : _c.workerId) === "string") {
438
- representationFilter = corePlugins.representationFilters.get(input.representationFilter.workerId);
439
- }
440
- if (typeof ((_d = input.manifestLoader) === null || _d === void 0 ? void 0 : _d.fn) === "function") {
441
- manifestLoader = input.manifestLoader.fn;
442
- }
443
- else if (typeof ((_e = input.manifestLoader) === null || _e === void 0 ? void 0 : _e.workerId) === "string") {
444
- manifestLoader = corePlugins.manifestLoaders.get(input.manifestLoader.workerId);
445
- }
446
- if (typeof ((_f = input.segmentLoader) === null || _f === void 0 ? void 0 : _f.fn) === "function") {
447
- segmentLoader = input.segmentLoader.fn;
448
- }
449
- else if (typeof ((_g = input.segmentLoader) === null || _g === void 0 ? void 0 : _g.workerId) === "string") {
450
- segmentLoader = corePlugins.segmentLoaders.get(input.segmentLoader.workerId);
451
- }
452
- return {
453
- manifestLoader: manifestLoader,
454
- segmentLoader: segmentLoader,
455
- representationFilter: representationFilter,
456
- };
457
- }
@@ -1 +1 @@
1
- {"version":3,"file":"content_time_boundaries_observer.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/content_time_boundaries_observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,sCAAsC,EACtC,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EAEX,OAAO,EACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAMrD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,YAAY,CAAC,mCAAmC,CAAC;IAC1G,mFAAmF;IACnF,OAAO,CAAC,UAAU,CAAgB;IAElC,oDAAoD;IACpD,OAAO,CAAC,cAAc,CAAuC;IAE7D,2DAA2D;IAC3D,OAAO,CAAC,SAAS,CAAY;IAE7B,uEAAuE;IACvE,OAAO,CAAC,0BAA0B,CAA4B;IAE9D,kEAAkE;IAClE,OAAO,CAAC,eAAe,CAAgB;IAEvC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB,CAAgB;IAE5C;;;OAGG;gBAED,QAAQ,EAAE,SAAS,EACnB,gBAAgB,EAAE,yBAAyB,CAAC,sCAAsC,CAAC,EACnF,WAAW,EAAE,WAAW,EAAE;IA6D5B;;;;OAIG;IACI,oBAAoB,IAAI,0BAA0B;IAIzD;;;;;;;;;;;;OAYG;IACI,kBAAkB,CACvB,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,WAAW,GAAG,IAAI,GAC7B,IAAI;IA+BP;;;;;;;;;OASG;IACI,sBAAsB,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAI7E;;;;;;;;;OASG;IACI,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAItE;;;;;;;;OAQG;IACI,4BAA4B,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAQlE;;;;;;;;;;OAUG;IACI,0BAA0B,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAQhE;;;;;;OAMG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAKzC,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,6BAA6B;IAYrC,OAAO,CAAC,iBAAiB;CAc1B;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;OAUG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD,mDAAmD;IACnD,OAAO,EAAE,YAAY,CAAC;IACtB,0DAA0D;IAC1D,YAAY,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,oBAAoB,EAAE,0BAA0B,CAAC;IACjD;;;;;;;;;OASG;IACH,WAAW,EAAE,IAAI,CAAC;IAClB;;;;;;;;;OASG;IACH,YAAY,EAAE,IAAI,CAAC;CACpB;AAgPD,MAAM,MAAM,uCAAuC,GAAG,IAAI,CACxD,sCAAsC,EACtC,UAAU,CACX,CAAC"}
1
+ {"version":3,"file":"content_time_boundaries_observer.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/content_time_boundaries_observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,sCAAsC,EACtC,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EAEX,OAAO,EACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAMrD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,YAAY,CAAC,mCAAmC,CAAC;IAC1G,mFAAmF;IACnF,OAAO,CAAC,UAAU,CAAgB;IAElC,oDAAoD;IACpD,OAAO,CAAC,cAAc,CAAuC;IAE7D,2DAA2D;IAC3D,OAAO,CAAC,SAAS,CAAY;IAE7B,uEAAuE;IACvE,OAAO,CAAC,0BAA0B,CAA4B;IAE9D,kEAAkE;IAClE,OAAO,CAAC,eAAe,CAAgB;IAEvC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB,CAAgB;IAE5C;;;OAGG;gBAED,QAAQ,EAAE,SAAS,EACnB,gBAAgB,EAAE,yBAAyB,CAAC,sCAAsC,CAAC,EACnF,WAAW,EAAE,WAAW,EAAE;IAsE5B;;;;OAIG;IACI,oBAAoB,IAAI,0BAA0B;IAIzD;;;;;;;;;;;;OAYG;IACI,kBAAkB,CACvB,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,WAAW,GAAG,IAAI,GAC7B,IAAI;IA+BP;;;;;;;;;OASG;IACI,sBAAsB,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAI7E;;;;;;;;;OASG;IACI,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAItE;;;;;;;;OAQG;IACI,4BAA4B,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAQlE;;;;;;;;;;OAUG;IACI,0BAA0B,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAQhE;;;;;;OAMG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAKzC,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,6BAA6B;IAYrC,OAAO,CAAC,iBAAiB;CAc1B;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;OAUG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD,mDAAmD;IACnD,OAAO,EAAE,YAAY,CAAC;IACtB,0DAA0D;IAC1D,YAAY,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,oBAAoB,EAAE,0BAA0B,CAAC;IACjD;;;;;;;;;OASG;IACH,WAAW,EAAE,IAAI,CAAC;IAClB;;;;;;;;;OASG;IACH,YAAY,EAAE,IAAI,CAAC;CACpB;AAgPD,MAAM,MAAM,uCAAuC,GAAG,IAAI,CACxD,sCAAsC,EACtC,UAAU,CACX,CAAC"}
@@ -42,6 +42,7 @@ var __values = (this && this.__values) || function(o) {
42
42
  };
43
43
  Object.defineProperty(exports, "__esModule", { value: true });
44
44
  var errors_1 = require("../../errors");
45
+ var array_includes_1 = require("../../utils/array_includes");
45
46
  var event_emitter_1 = require("../../utils/event_emitter");
46
47
  var is_null_or_undefined_1 = require("../../utils/is_null_or_undefined");
47
48
  var queue_microtask_1 = require("../../utils/queue_microtask");
@@ -78,6 +79,13 @@ var ContentTimeBoundariesObserver = /** @class */ (function (_super) {
78
79
  * whole content.
79
80
  */
80
81
  var maximumPositionCalculator = new MaximumPositionCalculator(manifest);
82
+ // Indicate directly that no Adaptation of a particular type will be set
83
+ if (!(0, array_includes_1.default)(_this._allBufferTypes, "video")) {
84
+ maximumPositionCalculator.updateLastVideoAdaptation(null);
85
+ }
86
+ if (!(0, array_includes_1.default)(_this._allBufferTypes, "audio")) {
87
+ maximumPositionCalculator.updateLastAudioAdaptation(null);
88
+ }
81
89
  _this._maximumPositionCalculator = maximumPositionCalculator;
82
90
  var cancelSignal = _this._canceller.signal;
83
91
  // As the following code may send events synchronously, which would not be
@@ -1,7 +1,7 @@
1
1
  import type { IMainThreadMessage } from "../../main_thread/types";
2
2
  import SharedReference from "../../utils/reference";
3
3
  import type { ICoreMessage, IResolutionInfo } from "../types";
4
- import type { ICorePlugins } from "./content_preparer";
4
+ import type { ICorePlugins } from "./utils";
5
5
  export type IMessageReceiverCallback = (evt: {
6
6
  data: IMainThreadMessage;
7
7
  }) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"core_entry.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/core_entry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,kBAAkB,EAGnB,MAAM,yBAAyB,CAAC;AAcjC,OAAO,eAAe,MAAM,uBAAuB,CAAC;AAQpD,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQvD,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,KAAK,IAAI,CAAC;AAEnF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,kBAAkB,EAAE,CAAC,EAAE,EAAE,wBAAwB,KAAK,IAAI,EAC1D,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,EACxE,WAAW,EAAE,YAAY,GACxB,IAAI,CA2ZN;AAowBD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACvD,iFAAiF;IACjF,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,oFAAoF;IACpF,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,oEAAoE;IACpE,kBAAkB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5C,oBAAoB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,+DAA+D;IAC/D,iBAAiB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CAC5C"}
1
+ {"version":3,"file":"core_entry.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/core_entry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,kBAAkB,EAGnB,MAAM,yBAAyB,CAAC;AAcjC,OAAO,eAAe,MAAM,uBAAuB,CAAC;AAQpD,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAChB,MAAM,UAAU,CAAC;AAOlB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,KAAK,IAAI,CAAC;AAEnF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,kBAAkB,EAAE,CAAC,EAAE,EAAE,wBAAwB,KAAK,IAAI,EAC1D,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,EACxE,WAAW,EAAE,YAAY,GACxB,IAAI,CA2ZN;AA8vBD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACvD,iFAAiF;IACjF,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,oFAAoF;IACpF,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,oEAAoE;IACpE,kBAAkB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5C,oBAAoB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,+DAA+D;IAC/D,iBAAiB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CAC5C"}
@@ -67,7 +67,6 @@ var content_preparer_1 = require("./content_preparer");
67
67
  var create_content_time_boundaries_observer_1 = require("./create_content_time_boundaries_observer");
68
68
  var get_buffered_data_per_media_buffer_1 = require("./get_buffered_data_per_media_buffer");
69
69
  var get_thumbnail_data_1 = require("./get_thumbnail_data");
70
- var synchronize_sinks_on_observation_1 = require("./synchronize_sinks_on_observation");
71
70
  var utils_1 = require("./utils");
72
71
  /**
73
72
  * Initialize a `CoreEntry`, which is the part of the RxPlayer acting as an
@@ -517,7 +516,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
517
516
  var contentId = preparedContent.contentId, cmcdDataBuilder = preparedContent.cmcdDataBuilder, enableRepresentationAvoidance = preparedContent.enableRepresentationAvoidance, manifest = preparedContent.manifest, mediaSource = preparedContent.mediaSource, representationEstimator = preparedContent.representationEstimator, segmentSinksStore = preparedContent.segmentSinksStore, segmentQueueCreator = preparedContent.segmentQueueCreator;
518
517
  var drmSystemId = val.drmSystemId, enableFastSwitching = val.enableFastSwitching, onCodecSwitch = val.onCodecSwitch;
519
518
  playbackObservationRef.onUpdate(function (observation) {
520
- (0, synchronize_sinks_on_observation_1.default)(observation, segmentSinksStore);
519
+ (0, utils_1.synchronizeSegmentSinksOnObservation)(observation, segmentSinksStore);
521
520
  var freezeResolution = preparedContent.freezeResolver.onNewObservation(observation);
522
521
  if (freezeResolution !== null) {
523
522
  handleFreezeResolution(sendMessage, freezeResolution, {
@@ -624,11 +623,6 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
624
623
  },
625
624
  adaptationChange: function (value) {
626
625
  var _a, _b;
627
- contentTimeBoundariesObserver.onAdaptationChange(value.type, value.period, value.adaptation);
628
- if (currentLoadCanceller === null ||
629
- currentLoadCanceller.signal.isCancelled()) {
630
- return;
631
- }
632
626
  sendMessage({
633
627
  type: "adaptation-changed" /* CoreMessageType.AdaptationChanged */,
634
628
  contentId: contentId,
@@ -638,6 +632,7 @@ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservat
638
632
  type: value.type,
639
633
  },
640
634
  });
635
+ contentTimeBoundariesObserver.onAdaptationChange(value.type, value.period, value.adaptation);
641
636
  },
642
637
  representationChange: function (value) {
643
638
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"file":"core_text_displayer_interface.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/core_text_displayer_interface.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,UAAU,CAAC;AAGlB;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,0BAA2B,YAAW,uBAAuB;IAChF,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAoD;IACnE,OAAO,EAAE;QACd,YAAY,EAAE,KAAK,CAAC;YAClB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;YACpC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,CAAC;YACZ,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;YACpC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;SAChC,CAAC,CAAC;KACJ,CAAC;IAEF;;;OAGG;gBAED,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,CAAC,GAAG,EAAE,kCAAkC,KAAK,IAAI;IAOlE;;OAEG;IACI,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAWjE;;OAEG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAW5D;;OAEG;IACI,KAAK,IAAI,IAAI;IASpB;;OAEG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAS7C,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACI,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IASnD;;OAEG;IACI,kBAAkB,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAS3C;;OAEG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAS9C;;OAEG;IACI,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;CAQvC;AAED,KAAK,kCAAkC,GACnC,wBAAwB,GACxB,0BAA0B,GAC1B,6BAA6B,GAC7B,8BAA8B,CAAC"}
1
+ {"version":3,"file":"core_text_displayer_interface.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/core_text_displayer_interface.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,UAAU,CAAC;AAGlB;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,0BAA2B,YAAW,uBAAuB;IAChF,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAoD;IACnE,OAAO,EAAE;QACd,YAAY,EAAE,KAAK,CAAC;YAClB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;YACpC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,CAAC;YACZ,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;YACpC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;SAChC,CAAC,CAAC;KACJ,CAAC;IAEF;;;OAGG;gBAED,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,CAAC,GAAG,EAAE,kCAAkC,KAAK,IAAI;IAOlE;;OAEG;IACI,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAWjE;;OAEG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAW5D;;OAEG;IACI,KAAK,IAAI,IAAI;IASpB;;OAEG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAS7C,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACI,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IASnD;;OAEG;IACI,kBAAkB,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAS3C;;OAEG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAS9C;;OAEG;IACI,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;CAQvC;AAED,KAAK,kCAAkC,GACnC,wBAAwB,GACxB,0BAA0B,GAC1B,6BAA6B,GAC7B,8BAA8B,CAAC"}
@@ -73,9 +73,11 @@ var CoreTextDisplayerInterface = /** @class */ (function () {
73
73
  this._queues.pushTextData.forEach(function (elt) {
74
74
  elt.reject(error);
75
75
  });
76
+ this._queues.pushTextData.length = 0;
76
77
  this._queues.remove.forEach(function (elt) {
77
78
  elt.reject(error);
78
79
  });
80
+ this._queues.remove.length = 0;
79
81
  };
80
82
  /**
81
83
  * @param {Array.<Object>} ranges
@@ -114,7 +116,7 @@ var CoreTextDisplayerInterface = /** @class */ (function () {
114
116
  * @param {unknown} err
115
117
  */
116
118
  CoreTextDisplayerInterface.prototype.onRemoveError = function (err) {
117
- var element = this._queues.pushTextData.shift();
119
+ var element = this._queues.remove.shift();
118
120
  if (element === undefined) {
119
121
  log_1.default.error("text", "pushTextData error for inexistant operation");
120
122
  return;
@@ -2,5 +2,5 @@ import type { IMessageReceiverCallback } from "./core_entry";
2
2
  import initializeCoreEntry from "./core_entry";
3
3
  export default initializeCoreEntry;
4
4
  export type { IMessageReceiverCallback };
5
- export type { ICorePlugins } from "./content_preparer";
5
+ export type { ICorePlugins } from "./utils";
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,mBAAmB,MAAM,cAAc,CAAC;AAC/C,eAAe,mBAAmB,CAAC;AACnC,YAAY,EAAE,wBAAwB,EAAE,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,mBAAmB,MAAM,cAAc,CAAC;AAC/C,eAAe,mBAAmB,CAAC;AACnC,YAAY,EAAE,wBAAwB,EAAE,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
@@ -1,3 +1,67 @@
1
+ import type { ICorePlaybackObservation } from "../../main_thread/init/utils/create_core_playback_observer";
2
+ import type Manifest from "../../manifest/classes";
3
+ import type { IManifestLoader, IRepresentationFilter, ISegmentLoader } from "../../public_types";
4
+ import type SegmentSinksStore from "../segment_sinks";
1
5
  import type { ISentError } from "../types";
6
+ /**
7
+ * "Plugins" are a specific kind of API where an application can define complex
8
+ * functions that the RxPlayer will call in some normally-core aspects of media
9
+ * playback: e.g. loading segments.
10
+ *
11
+ * This interface lists them.
12
+ */
13
+ export interface ICorePlugins {
14
+ representationFilters: Map<string, IRepresentationFilter>;
15
+ segmentLoaders: Map<string, ISegmentLoader>;
16
+ manifestLoaders: Map<string, IManifestLoader>;
17
+ }
18
+ /**
19
+ * Format an error, which may be of any form, into an Object than can easily be
20
+ * serialized - e.g. to be communicated through a postMessage-like API.
21
+ * @param {*} error - The error to serialized
22
+ * @returns {Object} - A serialization-safe error format
23
+ */
2
24
  export declare function formatErrorForSender(error: unknown): ISentError;
25
+ /**
26
+ * Synchronize SegmentSinks with what has been buffered.
27
+ * @param {Object} observation - The just-received playback observation,
28
+ * including what has been buffered on lower-level buffers
29
+ * @param {Object} segmentSinksStore - Interface allowing to interact
30
+ * with `SegmentSink`s, so their inventory can be updated accordingly.
31
+ */
32
+ export declare function synchronizeSegmentSinksOnObservation(observation: ICorePlaybackObservation, segmentSinksStore: SegmentSinksStore): void;
33
+ /**
34
+ * Set Representation.isCodecSupportedInWebWorker to true or false
35
+ * If the codec is supported in the current context.
36
+ * If MSE in worker is not available, the attribute is not set.
37
+ */
38
+ export declare function updateCodecSupportInWorkerMode(manifestToUpdate: Manifest): void;
39
+ /**
40
+ * Some functions may be defined by the API, we call those "plugins".
41
+ * This function parses and extract the actual function from the different
42
+ * ways an application can provide it to us.
43
+ * @param {Object} input - The API input
44
+ * @param {Object} corePlugins - Context on what identified functions are
45
+ * defined right now.
46
+ * @returns {Function}
47
+ */
48
+ export declare function extractExternalPlugins(input: {
49
+ manifestLoader: {
50
+ fn?: IManifestLoader | undefined;
51
+ workerId?: string | undefined;
52
+ } | undefined;
53
+ segmentLoader: {
54
+ fn?: ISegmentLoader | undefined;
55
+ workerId?: string | undefined;
56
+ } | undefined;
57
+ representationFilter: undefined | {
58
+ fn?: IRepresentationFilter | undefined;
59
+ eval?: string | undefined;
60
+ workerId?: string | undefined;
61
+ };
62
+ }, corePlugins: ICorePlugins): {
63
+ manifestLoader: IManifestLoader | undefined;
64
+ segmentLoader: ISegmentLoader | undefined;
65
+ representationFilter: IRepresentationFilter | undefined;
66
+ };
3
67
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAO/D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4DAA4D,CAAC;AAE3G,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,iBAAiB,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC1D,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC/C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAO/D;AAED;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAClD,WAAW,EAAE,wBAAwB,EACrC,iBAAiB,EAAE,iBAAiB,GACnC,IAAI,CAQN;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,QAAQ,QAwBxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE;IACL,cAAc,EACV;QACE,EAAE,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;QACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC/B,GACD,SAAS,CAAC;IACd,aAAa,EACT;QACE,EAAE,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC/B,GACD,SAAS,CAAC;IACd,oBAAoB,EAChB,SAAS,GACT;QACE,EAAE,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;QACvC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC/B,CAAC;CACP,EACD,WAAW,EAAE,YAAY,GACxB;IACD,cAAc,EAAE,eAAe,GAAG,SAAS,CAAC;IAC5C,aAAa,EAAE,cAAc,GAAG,SAAS,CAAC;IAC1C,oBAAoB,EAAE,qBAAqB,GAAG,SAAS,CAAC;CACzD,CAgCA"}