rx-player 3.32.2-dev.2023110700 → 3.33.0-dev.2023111400

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 (46) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/VERSION +1 -1
  3. package/dist/_esm5.processed/core/api/option_utils.d.ts +2 -0
  4. package/dist/_esm5.processed/core/api/option_utils.js +6 -0
  5. package/dist/_esm5.processed/core/api/public_api.d.ts +2 -1
  6. package/dist/_esm5.processed/core/api/public_api.js +14 -4
  7. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
  8. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
  9. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.js +19 -2
  10. package/dist/_esm5.processed/manifest/representation.js +18 -5
  11. package/dist/_esm5.processed/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
  12. package/dist/_esm5.processed/parsers/manifest/dash/common/convert_supplemental_codecs.js +26 -0
  13. package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
  14. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +29 -17
  15. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +3 -0
  16. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +3 -0
  17. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +2 -0
  18. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +4 -0
  19. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +4 -0
  20. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  21. package/dist/_esm5.processed/parsers/manifest/types.d.ts +1 -0
  22. package/dist/mpd-parser.wasm +0 -0
  23. package/dist/rx-player.js +171 -31
  24. package/dist/rx-player.min.js +1 -1
  25. package/package.json +1 -1
  26. package/sonar-project.properties +1 -1
  27. package/src/core/api/option_utils.ts +8 -0
  28. package/src/core/api/public_api.ts +15 -3
  29. package/src/core/segment_buffers/implementations/text/html/__tests__/utils.test.ts +15 -0
  30. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +57 -6
  31. package/src/core/segment_buffers/implementations/text/html/utils.ts +19 -2
  32. package/src/manifest/representation.ts +19 -6
  33. package/src/parsers/manifest/dash/common/__tests__/convert_supplemental_codecs.test.ts +37 -0
  34. package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +20 -0
  35. package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +32 -0
  36. package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +5 -0
  37. package/src/parsers/manifest/dash/common/parse_representations.ts +30 -17
  38. package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +4 -0
  39. package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +4 -0
  40. package/src/parsers/manifest/dash/node_parser_types.ts +2 -0
  41. package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +2 -0
  42. package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +2 -0
  43. package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +4 -0
  44. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +4 -0
  45. package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +2 -0
  46. package/src/parsers/manifest/types.ts +2 -0
package/dist/rx-player.js CHANGED
@@ -22292,6 +22292,21 @@ function parseTextTrackToElements(type, data, timestampOffset, language) {
22292
22292
  * Setting a value too high might lead to two segments targeting different times
22293
22293
  * to be wrongly believed to target the same time. In worst case scenarios, this
22294
22294
  * could lead to wanted text tracks being removed.
22295
+ *
22296
+ * When comparing 2 segments s1 and s2, you may want to take into account the duration
22297
+ * of the segments:
22298
+ * - if s1 is [0, 2] and s2 is [0, 2.1] s1 and s2 can be considered as nearly equal as
22299
+ * there is a relative difference of: (2.1-2) / 2 = 5%;
22300
+ * Formula: (end_s1 - end_s2) / duration_s2 = relative_difference
22301
+ * - if s1 is [0, 0.04] and s2 is [0.04, 0.08] s1 and s2 may not considered as nearly
22302
+ * equal as there is a relative difference of: (0.04-0.08) / 0.04 = 100%
22303
+ *
22304
+ * To compare relatively to the duration of a segment you can provide and additional
22305
+ * parameter "delta" that remplace MAX_DELTA_BUFFER_TIME.
22306
+ * If parameter "delta" is higher than MAX_DELTA_BUFFER_TIME, MAX_DELTA_BUFFER_TIME
22307
+ * is used instead of delta. This ensure that segments are nearly equal when comparing
22308
+ * relatively AND absolutely.
22309
+ *
22295
22310
  * @type Number
22296
22311
  */
22297
22312
  var MAX_DELTA_BUFFER_TIME = 0.2;
@@ -22299,10 +22314,14 @@ var MAX_DELTA_BUFFER_TIME = 0.2;
22299
22314
  * @see MAX_DELTA_BUFFER_TIME
22300
22315
  * @param {Number} a
22301
22316
  * @param {Number} b
22317
+ * @param {Number} delta
22302
22318
  * @returns {Boolean}
22303
22319
  */
22304
- function areNearlyEqual(a, b) {
22305
- return Math.abs(a - b) <= MAX_DELTA_BUFFER_TIME;
22320
+ function areNearlyEqual(a, b, delta) {
22321
+ if (delta === void 0) {
22322
+ delta = MAX_DELTA_BUFFER_TIME;
22323
+ }
22324
+ return Math.abs(a - b) <= Math.min(delta, MAX_DELTA_BUFFER_TIME);
22306
22325
  }
22307
22326
  /**
22308
22327
  * Get all cues which have data before the given time.
@@ -22375,6 +22394,22 @@ function removeCuesInfosBetween(cuesInfos, start, end) {
22375
22394
  */
22376
22395
 
22377
22396
 
22397
+ /**
22398
+ * first or last IHTMLCue in a group can have a slighlty different start
22399
+ * or end time than the start or end time of the ICuesGroup due to parsing
22400
+ * approximation.
22401
+ * DELTA_CUES_GROUP defines the tolerance level when comparing the start/end
22402
+ * of a IHTMLCue to the start/end of a ICuesGroup.
22403
+ * Having this value too high may lead to have unwanted subtitle displayed
22404
+ * Having this value too low may lead to have subtitles not displayed
22405
+ */
22406
+ var DELTA_CUES_GROUP = 1e-3;
22407
+ /**
22408
+ * segment_duration / RELATIVE_DELTA_RATIO = relative_delta
22409
+ *
22410
+ * relative_delta is the tolerance to determine if two segements are the same
22411
+ */
22412
+ var RELATIVE_DELTA_RATIO = 5;
22378
22413
  /**
22379
22414
  * Manage the buffer of the HTMLTextSegmentBuffer.
22380
22415
  * Allows to add, remove and recuperate cues at given times.
@@ -22418,6 +22453,17 @@ var TextTrackCuesStore = /*#__PURE__*/function () {
22418
22453
  ret.push(cues[j].element);
22419
22454
  }
22420
22455
  }
22456
+ // first or last IHTMLCue in a group can have a slighlty different start
22457
+ // or end time than the start or end time of the ICuesGroup due to parsing
22458
+ // approximation.
22459
+ // Add a tolerance of 1ms to fix this issue
22460
+ if (ret.length === 0 && cues.length > 0) {
22461
+ for (var _j = 0; _j < cues.length; _j++) {
22462
+ if (areNearlyEqual(time, cues[_j].start, DELTA_CUES_GROUP) || areNearlyEqual(time, cues[_j].end, DELTA_CUES_GROUP)) {
22463
+ ret.push(cues[_j].element);
22464
+ }
22465
+ }
22466
+ }
22421
22467
  return ret;
22422
22468
  }
22423
22469
  }
@@ -22504,6 +22550,11 @@ var TextTrackCuesStore = /*#__PURE__*/function () {
22504
22550
  end: end,
22505
22551
  cues: cues
22506
22552
  };
22553
+ // it's preferable to have a delta depending on the duration of the segment
22554
+ // if the delta is one fifth of the length of the segment:
22555
+ // a segment of [0, 2] is the "same" segment as [0, 2.1]
22556
+ // but [0, 0.04] is not the "same" segement as [0,04, 0.08]
22557
+ var relativeDelta = Math.abs(start - end) / RELATIVE_DELTA_RATIO;
22507
22558
  /**
22508
22559
  * Called when we found the index of the next cue relative to the cue we
22509
22560
  * want to insert (that is a cue starting after its start or at the same
@@ -22516,7 +22567,7 @@ var TextTrackCuesStore = /*#__PURE__*/function () {
22516
22567
  var nextCue = cuesBuffer[indexOfNextCue];
22517
22568
  if (nextCue === undefined ||
22518
22569
  // no cue
22519
- areNearlyEqual(cuesInfosToInsert.end, nextCue.end))
22570
+ areNearlyEqual(cuesInfosToInsert.end, nextCue.end, relativeDelta))
22520
22571
  // samey end
22521
22572
  {
22522
22573
  // ours: |AAAAA|
@@ -22551,8 +22602,8 @@ var TextTrackCuesStore = /*#__PURE__*/function () {
22551
22602
  for (var cueIdx = 0; cueIdx < cuesBuffer.length; cueIdx++) {
22552
22603
  var cuesInfos = cuesBuffer[cueIdx];
22553
22604
  if (start < cuesInfos.end) {
22554
- if (areNearlyEqual(start, cuesInfos.start)) {
22555
- if (areNearlyEqual(end, cuesInfos.end)) {
22605
+ if (areNearlyEqual(start, cuesInfos.start, relativeDelta)) {
22606
+ if (areNearlyEqual(end, cuesInfos.end, relativeDelta)) {
22556
22607
  // exact same segment
22557
22608
  // ours: |AAAAA|
22558
22609
  // the current one: |BBBBB|
@@ -22597,7 +22648,7 @@ var TextTrackCuesStore = /*#__PURE__*/function () {
22597
22648
  // - add ours before the current one
22598
22649
  cuesBuffer.splice(cueIdx, 0, cuesInfosToInsert);
22599
22650
  return;
22600
- } else if (areNearlyEqual(end, cuesInfos.start)) {
22651
+ } else if (areNearlyEqual(end, cuesInfos.start, relativeDelta)) {
22601
22652
  // our cue goes just before the current one:
22602
22653
  // ours: |AAAAAAA|
22603
22654
  // the current one: |BBBB|
@@ -22608,7 +22659,7 @@ var TextTrackCuesStore = /*#__PURE__*/function () {
22608
22659
  cuesInfos.start = end;
22609
22660
  cuesBuffer.splice(cueIdx, 0, cuesInfosToInsert);
22610
22661
  return;
22611
- } else if (areNearlyEqual(end, cuesInfos.end)) {
22662
+ } else if (areNearlyEqual(end, cuesInfos.end, relativeDelta)) {
22612
22663
  // ours: |AAAAAAA|
22613
22664
  // the current one: |BBBB|
22614
22665
  // Result: |AAAAAAA|
@@ -22635,7 +22686,7 @@ var TextTrackCuesStore = /*#__PURE__*/function () {
22635
22686
  return;
22636
22687
  }
22637
22688
  // else -> start > cuesInfos.start
22638
- if (areNearlyEqual(cuesInfos.end, end)) {
22689
+ if (areNearlyEqual(cuesInfos.end, end, relativeDelta)) {
22639
22690
  // ours: |AAAAAA|
22640
22691
  // the current one: |BBBBBBBB|
22641
22692
  // Result: |BBAAAAAA|
@@ -22671,6 +22722,21 @@ var TextTrackCuesStore = /*#__PURE__*/function () {
22671
22722
  }
22672
22723
  }
22673
22724
  }
22725
+ if (cuesBuffer.length) {
22726
+ var lastCue = cuesBuffer[cuesBuffer.length - 1];
22727
+ if (areNearlyEqual(lastCue.end, start, relativeDelta)) {
22728
+ // Match the end of the previous cue to the start of the following one
22729
+ // if they are close enough. If there is a small gap between two segments
22730
+ // it can lead to having no subtitles for a short time, this is noticeable when
22731
+ // two successive segments displays the same text, making it diseappear
22732
+ // and reappear quickly, which gives the impression of blinking
22733
+ //
22734
+ // ours: |AAAAA|
22735
+ // the current one: |BBBBB|...
22736
+ // Result: |BBBBBBBAAAAA|
22737
+ lastCue.end = start;
22738
+ }
22739
+ }
22674
22740
  // no cues group has the end after our current start.
22675
22741
  // These cues should be the last one
22676
22742
  cuesBuffer.push(cuesInfosToInsert);
@@ -25713,6 +25779,7 @@ var Representation = /*#__PURE__*/function () {
25713
25779
  * @param {Object} args
25714
25780
  */
25715
25781
  function Representation(args, opts) {
25782
+ var _a;
25716
25783
  this.id = args.id;
25717
25784
  this.uniqueId = generateRepresentationUniqueId();
25718
25785
  this.bitrate = args.bitrate;
@@ -25741,12 +25808,24 @@ var Representation = /*#__PURE__*/function () {
25741
25808
  this.cdnMetadata = args.cdnMetadata;
25742
25809
  this.index = args.index;
25743
25810
  if (opts.type === "audio" || opts.type === "video") {
25744
- var mimeTypeStr = this.getMimeTypeString();
25745
- var isSupported = isCodecSupported(mimeTypeStr);
25746
- if (!isSupported) {
25747
- log/* default */.Z.info("Unsupported Representation", mimeTypeStr, this.id, this.bitrate);
25811
+ this.isSupported = false;
25812
+ // Supplemental codecs are defined as backwards-compatible codecs enhancing
25813
+ // the experience of a base layer codec
25814
+ if (args.supplementalCodecs !== undefined) {
25815
+ var supplementalCodecMimeTypeStr = ((_a = this.mimeType) !== null && _a !== void 0 ? _a : "") + ";codecs=\"" + args.supplementalCodecs + "\"";
25816
+ if (isCodecSupported(supplementalCodecMimeTypeStr)) {
25817
+ this.codec = args.supplementalCodecs;
25818
+ this.isSupported = true;
25819
+ }
25820
+ }
25821
+ if (!this.isSupported) {
25822
+ var mimeTypeStr = this.getMimeTypeString();
25823
+ var isSupported = isCodecSupported(mimeTypeStr);
25824
+ if (!isSupported) {
25825
+ log/* default */.Z.info("Unsupported Representation", mimeTypeStr, this.id, this.bitrate);
25826
+ }
25827
+ this.isSupported = isSupported;
25748
25828
  }
25749
- this.isSupported = isSupported;
25750
25829
  } else {
25751
25830
  this.isSupported = true; // TODO for other types
25752
25831
  }
@@ -29073,7 +29152,7 @@ function createDashUrlDetokenizer(time, nb) {
29073
29152
 
29074
29153
  /***/ }),
29075
29154
 
29076
- /***/ 4541:
29155
+ /***/ 1707:
29077
29156
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
29078
29157
 
29079
29158
  "use strict";
@@ -29533,6 +29612,11 @@ function flattenOverlappingPeriods(parsedPeriods) {
29533
29612
  // `lastFlattenedPeriod` has now a negative or `0` duration.
29534
29613
  // Remove it, consider the next Period in its place, and re-start the loop.
29535
29614
  flattenedPeriods.pop();
29615
+ if (flattenedPeriods.length === 0) {
29616
+ // There's no remaining Period to compare to `parsedPeriod`
29617
+ break;
29618
+ }
29619
+ // Take the previous Period as reference and compare it now to `parsedPeriod`
29536
29620
  lastFlattenedPeriod = flattenedPeriods[flattenedPeriods.length - 1];
29537
29621
  }
29538
29622
  }
@@ -29886,6 +29970,31 @@ function inferAdaptationType(representations, adaptationMimeType, adaptationCode
29886
29970
  }
29887
29971
  // EXTERNAL MODULE: ./src/utils/object_assign.ts
29888
29972
  var object_assign = __webpack_require__(8026);
29973
+ ;// CONCATENATED MODULE: ./src/parsers/manifest/dash/common/convert_supplemental_codecs.ts
29974
+
29975
+ var supplementalCodecSeparator = /[, ]+/g;
29976
+ /**
29977
+ * Converts SCTE 214 supplemental codec string into RFC4281 codec string
29978
+ *
29979
+ * The returned value is a codec string respecting RFC6381
29980
+ *
29981
+ * SCTE 214 defines supplemental codecs as a whitespace-separated multiple list of
29982
+ * codec strings
29983
+ *
29984
+ * RFC6381 defines codecs as a comma-separated list of codec strings.
29985
+ *
29986
+ * This two syntax differs and this parser is used to convert SCTE214
29987
+ * to be compliant with what MSE APIs expect
29988
+ *
29989
+ * @param {string} val - The codec string to parse
29990
+ * @returns { Array.<string | undefined | null>}
29991
+ */
29992
+ function convertSupplementalCodecsToRFC6381(val) {
29993
+ if ((0,is_non_empty_string/* default */.Z)(val)) {
29994
+ return val.trim().replace(supplementalCodecSeparator, ", ");
29995
+ }
29996
+ return "";
29997
+ }
29889
29998
  ;// CONCATENATED MODULE: ./src/parsers/manifest/dash/common/get_hdr_information.ts
29890
29999
  /**
29891
30000
  * Copyright 2015 CANAL+ Group
@@ -31653,6 +31762,7 @@ function parse_representations_arrayLikeToArray(arr, len) { if (len == null || l
31653
31762
 
31654
31763
 
31655
31764
 
31765
+
31656
31766
  /**
31657
31767
  * Combine inband event streams from representation and
31658
31768
  * adaptation data.
@@ -31728,7 +31838,7 @@ function parseRepresentations(representationsIR, adaptation, context) {
31728
31838
  var _loop = function _loop() {
31729
31839
  var representation = _step.value;
31730
31840
  // Compute Representation ID
31731
- var representationID = representation.attributes.id != null ? representation.attributes.id : String(representation.attributes.bitrate) + (representation.attributes.height != null ? "-" + representation.attributes.height : "") + (representation.attributes.width != null ? "-" + representation.attributes.width : "") + (representation.attributes.mimeType != null ? "-" + representation.attributes.mimeType : "") + (representation.attributes.codecs != null ? "-" + representation.attributes.codecs : "");
31841
+ var representationID = representation.attributes.id !== undefined ? representation.attributes.id : String(representation.attributes.bitrate) + (representation.attributes.height !== undefined ? "-" + representation.attributes.height : "") + (representation.attributes.width !== undefined ? "-" + representation.attributes.width : "") + (representation.attributes.mimeType !== undefined ? "-" + representation.attributes.mimeType : "") + (representation.attributes.codecs !== undefined ? "-" + representation.attributes.codecs : "");
31732
31842
  // Avoid duplicate IDs
31733
31843
  while (parsedRepresentations.some(function (r) {
31734
31844
  return r.id === representationID;
@@ -31750,7 +31860,7 @@ function parseRepresentations(representationsIR, adaptation, context) {
31750
31860
  var representationIndex = parseRepresentationIndex(representation, reprIndexCtxt);
31751
31861
  // Find bitrate
31752
31862
  var representationBitrate;
31753
- if (representation.attributes.bitrate == null) {
31863
+ if (representation.attributes.bitrate === undefined) {
31754
31864
  log/* default */.Z.warn("DASH: No usable bitrate found in the Representation.");
31755
31865
  representationBitrate = 0;
31756
31866
  } else {
@@ -31785,33 +31895,42 @@ function parseRepresentations(representationsIR, adaptation, context) {
31785
31895
  }
31786
31896
  // Add optional attributes
31787
31897
  var codecs;
31788
- if (representation.attributes.codecs != null) {
31898
+ if (representation.attributes.codecs !== undefined) {
31789
31899
  codecs = representation.attributes.codecs;
31790
- } else if (adaptation.attributes.codecs != null) {
31900
+ } else if (adaptation.attributes.codecs !== undefined) {
31791
31901
  codecs = adaptation.attributes.codecs;
31792
31902
  }
31793
- if (codecs != null) {
31903
+ if (codecs !== undefined) {
31794
31904
  codecs = codecs === "mp4a.40.02" ? "mp4a.40.2" : codecs;
31795
31905
  parsedRepresentation.codecs = codecs;
31796
31906
  }
31797
- if (representation.attributes.frameRate != null) {
31907
+ var supplementalCodecs;
31908
+ if (representation.attributes.supplementalCodecs !== undefined) {
31909
+ supplementalCodecs = representation.attributes.supplementalCodecs;
31910
+ } else if (adaptation.attributes.supplementalCodecs !== undefined) {
31911
+ supplementalCodecs = adaptation.attributes.supplementalCodecs;
31912
+ }
31913
+ if (supplementalCodecs !== undefined) {
31914
+ parsedRepresentation.supplementalCodecs = convertSupplementalCodecsToRFC6381(supplementalCodecs);
31915
+ }
31916
+ if (representation.attributes.frameRate !== undefined) {
31798
31917
  parsedRepresentation.frameRate = representation.attributes.frameRate;
31799
- } else if (adaptation.attributes.frameRate != null) {
31918
+ } else if (adaptation.attributes.frameRate !== undefined) {
31800
31919
  parsedRepresentation.frameRate = adaptation.attributes.frameRate;
31801
31920
  }
31802
- if (representation.attributes.height != null) {
31921
+ if (representation.attributes.height !== undefined) {
31803
31922
  parsedRepresentation.height = representation.attributes.height;
31804
- } else if (adaptation.attributes.height != null) {
31923
+ } else if (adaptation.attributes.height !== undefined) {
31805
31924
  parsedRepresentation.height = adaptation.attributes.height;
31806
31925
  }
31807
- if (representation.attributes.mimeType != null) {
31926
+ if (representation.attributes.mimeType !== undefined) {
31808
31927
  parsedRepresentation.mimeType = representation.attributes.mimeType;
31809
- } else if (adaptation.attributes.mimeType != null) {
31928
+ } else if (adaptation.attributes.mimeType !== undefined) {
31810
31929
  parsedRepresentation.mimeType = adaptation.attributes.mimeType;
31811
31930
  }
31812
- if (representation.attributes.width != null) {
31931
+ if (representation.attributes.width !== undefined) {
31813
31932
  parsedRepresentation.width = representation.attributes.width;
31814
- } else if (adaptation.attributes.width != null) {
31933
+ } else if (adaptation.attributes.width !== undefined) {
31815
31934
  parsedRepresentation.width = adaptation.attributes.width;
31816
31935
  }
31817
31936
  var contentProtectionsIr = adaptation.children.contentProtections !== undefined ? adaptation.children.contentProtections : [];
@@ -33846,6 +33965,9 @@ function parseRepresentationAttributes(representationElement) {
33846
33965
  dashName: "qualityRanking"
33847
33966
  });
33848
33967
  break;
33968
+ case "scte214:supplementalCodecs":
33969
+ attributes.supplementalCodecs = attr.value;
33970
+ break;
33849
33971
  case "segmentProfiles":
33850
33972
  attributes.segmentProfiles = attr.value;
33851
33973
  break;
@@ -34166,6 +34288,9 @@ function parseAdaptationSetAttributes(root) {
34166
34288
  case "codecs":
34167
34289
  parsedAdaptation.codecs = attribute.value;
34168
34290
  break;
34291
+ case "scte214:supplementalCodecs":
34292
+ parsedAdaptation.supplementalCodecs = attribute.value;
34293
+ break;
34169
34294
  case "codingDependency":
34170
34295
  parseValue(attribute.value, {
34171
34296
  asKey: "codingDependency",
@@ -50595,6 +50720,12 @@ function checkReloadOptions(options) {
50595
50720
  if (typeof ((_c = options === null || options === void 0 ? void 0 : options.reloadAt) === null || _c === void 0 ? void 0 : _c.relative) !== "number" && ((_d = options === null || options === void 0 ? void 0 : options.reloadAt) === null || _d === void 0 ? void 0 : _d.relative) !== undefined) {
50596
50721
  throw new Error("API: reload - Invalid 'reloadAt.relative' option format.");
50597
50722
  }
50723
+ if (!Array.isArray(options === null || options === void 0 ? void 0 : options.keySystems) && (options === null || options === void 0 ? void 0 : options.keySystems) !== undefined) {
50724
+ throw new Error("API: reload - Invalid 'keySystems' option format.");
50725
+ }
50726
+ if ((options === null || options === void 0 ? void 0 : options.autoPlay) !== undefined && typeof options.autoPlay !== "boolean") {
50727
+ throw new Error("API: reload - Invalid 'autoPlay' option format.");
50728
+ }
50598
50729
  }
50599
50730
  /**
50600
50731
  * Parse options given to loadVideo and set default options as found
@@ -52604,7 +52735,7 @@ var Player = /*#__PURE__*/function (_EventEmitter) {
52604
52735
  // Workaround to support Firefox autoplay on FF 42.
52605
52736
  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
52606
52737
  videoElement.preload = "auto";
52607
- _this.version = /* PLAYER_VERSION */"3.32.2-dev.2023110700";
52738
+ _this.version = /* PLAYER_VERSION */"3.33.0-dev.2023111400";
52608
52739
  _this.log = log/* default */.Z;
52609
52740
  _this.state = "STOPPED";
52610
52741
  _this.videoElement = videoElement;
@@ -52764,7 +52895,7 @@ var Player = /*#__PURE__*/function (_EventEmitter) {
52764
52895
  * @param {Object} reloadOpts
52765
52896
  */;
52766
52897
  _proto.reload = function reload(reloadOpts) {
52767
- var _a, _b;
52898
+ var _a, _b, _c;
52768
52899
  var _this$_priv_reloading = this._priv_reloadingMetadata,
52769
52900
  options = _this$_priv_reloading.options,
52770
52901
  manifest = _this$_priv_reloading.manifest,
@@ -52798,6 +52929,12 @@ var Player = /*#__PURE__*/function (_EventEmitter) {
52798
52929
  } else if (reloadInPause !== undefined) {
52799
52930
  autoPlay = !reloadInPause;
52800
52931
  }
52932
+ var keySystems;
52933
+ if ((reloadOpts === null || reloadOpts === void 0 ? void 0 : reloadOpts.keySystems) !== undefined) {
52934
+ keySystems = reloadOpts.keySystems;
52935
+ } else if (((_c = this._priv_reloadingMetadata.options) === null || _c === void 0 ? void 0 : _c.keySystems) !== undefined) {
52936
+ keySystems = this._priv_reloadingMetadata.options.keySystems;
52937
+ }
52801
52938
  var newOptions = Object.assign(Object.assign({}, options), {
52802
52939
  initialManifest: manifest
52803
52940
  });
@@ -52807,6 +52944,9 @@ var Player = /*#__PURE__*/function (_EventEmitter) {
52807
52944
  if (autoPlay !== undefined) {
52808
52945
  newOptions.autoPlay = autoPlay;
52809
52946
  }
52947
+ if (keySystems !== undefined) {
52948
+ newOptions.keySystems = keySystems;
52949
+ }
52810
52950
  this._priv_initializeContentPlayback(newOptions);
52811
52951
  };
52812
52952
  _proto.createDebugElement = function createDebugElement(element) {
@@ -55018,7 +55158,7 @@ var Player = /*#__PURE__*/function (_EventEmitter) {
55018
55158
  }]);
55019
55159
  return Player;
55020
55160
  }(event_emitter/* default */.Z);
55021
- Player.version = /* PLAYER_VERSION */"3.32.2-dev.2023110700";
55161
+ Player.version = /* PLAYER_VERSION */"3.33.0-dev.2023111400";
55022
55162
  /* harmony default export */ var public_api = (Player);
55023
55163
  ;// CONCATENATED MODULE: ./src/core/api/index.ts
55024
55164
  /**
@@ -55082,7 +55222,7 @@ function initializeFeaturesObject() {
55082
55222
  }
55083
55223
  if (true) {
55084
55224
  features_object/* default */.Z.transports.dash = (__webpack_require__(85)/* ["default"] */ .Z);
55085
- features_object/* default */.Z.dashParsers.js = (__webpack_require__(4541)/* ["default"] */ .Z);
55225
+ features_object/* default */.Z.dashParsers.js = (__webpack_require__(1707)/* ["default"] */ .Z);
55086
55226
  }
55087
55227
  if (false) {}
55088
55228
  if (false) {}