@volcengine/veplayer-plugin 2.4.3-rc.0 → 2.4.5-rc.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 (31) hide show
  1. package/esm/index.development.js +499 -1891
  2. package/esm/index.production.js +1 -1
  3. package/esm/veplayer.plugin.abr.development.js +3 -71
  4. package/esm/veplayer.plugin.abr.production.js +1 -1
  5. package/esm/veplayer.plugin.drm.development.js +3 -71
  6. package/esm/veplayer.plugin.drm.production.js +1 -1
  7. package/esm/veplayer.plugin.flv.development.js +196 -727
  8. package/esm/veplayer.plugin.flv.production.js +1 -1
  9. package/esm/veplayer.plugin.hls.development.js +304 -1233
  10. package/esm/veplayer.plugin.hls.production.js +1 -1
  11. package/esm/veplayer.plugin.mp4.development.js +5 -73
  12. package/esm/veplayer.plugin.mp4.production.js +1 -1
  13. package/esm/veplayer.plugin.rtm.development.js +4 -72
  14. package/esm/veplayer.plugin.rtm.production.js +1 -1
  15. package/esm/veplayer.plugin.shaka.development.js +4 -72
  16. package/esm/veplayer.plugin.shaka.production.js +1 -1
  17. package/package.json +1 -1
  18. package/umd/veplayer.plugin.abr.development.js +3 -71
  19. package/umd/veplayer.plugin.abr.production.js +1 -1
  20. package/umd/veplayer.plugin.drm.development.js +3 -71
  21. package/umd/veplayer.plugin.drm.production.js +1 -1
  22. package/umd/veplayer.plugin.flv.development.js +196 -727
  23. package/umd/veplayer.plugin.flv.production.js +1 -1
  24. package/umd/veplayer.plugin.hls.development.js +304 -1233
  25. package/umd/veplayer.plugin.hls.production.js +1 -1
  26. package/umd/veplayer.plugin.mp4.development.js +5 -73
  27. package/umd/veplayer.plugin.mp4.production.js +1 -1
  28. package/umd/veplayer.plugin.rtm.development.js +4 -72
  29. package/umd/veplayer.plugin.rtm.production.js +1 -1
  30. package/umd/veplayer.plugin.shaka.development.js +4 -72
  31. package/umd/veplayer.plugin.shaka.production.js +1 -1
@@ -1644,7 +1644,7 @@
1644
1644
  }
1645
1645
  return offsetTime;
1646
1646
  };
1647
- var version = "3.0.20-rc.6";
1647
+ var version = "3.0.19-rc.0";
1648
1648
  var ERROR_MAP = {
1649
1649
  1: 5101,
1650
1650
  2: 5102,
@@ -1753,7 +1753,8 @@
1753
1753
  }
1754
1754
  if (this.__hooks && this.__hooks[hookName]) {
1755
1755
  try {
1756
- var preRet = runHooks(this, hookName, handler);
1756
+ var _this$__hooks$hookNam;
1757
+ var preRet = (_this$__hooks$hookNam = this.__hooks[hookName]).call.apply(_this$__hooks$hookNam, [this, this].concat(Array.prototype.slice.call(arguments)));
1757
1758
  if (preRet) {
1758
1759
  if (preRet.then) {
1759
1760
  preRet.then(function(isContinue) {
@@ -1778,19 +1779,6 @@
1778
1779
  }
1779
1780
  }.bind(this);
1780
1781
  }
1781
- function findHookIndex(hookName, handler) {
1782
- var __hooks = this.__hooks;
1783
- if (!__hooks || !Array.isArray(__hooks[hookName])) {
1784
- return -1;
1785
- }
1786
- var hookHandlers = __hooks[hookName];
1787
- for (var i = 0; i < hookHandlers.length; i++) {
1788
- if (hookHandlers[i] === handler) {
1789
- return i;
1790
- }
1791
- }
1792
- return -1;
1793
- }
1794
1782
  function useHooks(hookName, handler) {
1795
1783
  var __hooks = this.__hooks;
1796
1784
  if (!__hooks) {
@@ -1800,12 +1788,7 @@
1800
1788
  console.warn("has no supported hook which name [".concat(hookName, "]"));
1801
1789
  return false;
1802
1790
  }
1803
- if (!Array.isArray(__hooks[hookName])) {
1804
- __hooks[hookName] = [];
1805
- }
1806
- if (findHookIndex.call(this, hookName, handler) === -1) {
1807
- __hooks[hookName].push(handler);
1808
- }
1791
+ __hooks && (__hooks[hookName] = handler);
1809
1792
  return true;
1810
1793
  }
1811
1794
  function removeHooks(hookName, handler) {
@@ -1813,13 +1796,6 @@
1813
1796
  if (!__hooks) {
1814
1797
  return;
1815
1798
  }
1816
- if (Array.isArray(__hooks[hookName])) {
1817
- var hooks = __hooks[hookName];
1818
- var index = findHookIndex.call(this, hookName, handler);
1819
- if (index !== -1) {
1820
- hooks.splice(index, 1);
1821
- }
1822
- }
1823
1799
  delete __hooks[hookName];
1824
1800
  }
1825
1801
  function hooksDescriptor(instance) {
@@ -1841,38 +1817,6 @@
1841
1817
  function delHooksDescriptor(instance) {
1842
1818
  instance.__hooks = null;
1843
1819
  }
1844
- function runHooks(obj, hookName, handler) {
1845
- for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {
1846
- args[_key5 - 3] = arguments[_key5];
1847
- }
1848
- if (obj.__hooks && Array.isArray(obj.__hooks[hookName])) {
1849
- var hooks = obj.__hooks[hookName];
1850
- var index = -1;
1851
- var runHooksRecursive = function runHooksRecursive2(obj2, hookName2, handler2) {
1852
- for (var _len6 = arguments.length, args2 = new Array(_len6 > 3 ? _len6 - 3 : 0), _key6 = 3; _key6 < _len6; _key6++) {
1853
- args2[_key6 - 3] = arguments[_key6];
1854
- }
1855
- index++;
1856
- if (hooks.length === 0 || index === hooks.length) {
1857
- return handler2.call.apply(handler2, [obj2, obj2].concat(args2));
1858
- }
1859
- var hook2 = hooks[index];
1860
- var ret = hook2.call.apply(hook2, [obj2, obj2].concat(args2));
1861
- if (ret && ret.then) {
1862
- return ret.then(function(data) {
1863
- return data === false ? null : runHooksRecursive2.apply(void 0, [obj2, hookName2, handler2].concat(args2));
1864
- }).catch(function(e) {
1865
- console.warn("[runHooks]".concat(hookName2, " reject"), e.message);
1866
- });
1867
- } else if (ret !== false) {
1868
- return runHooksRecursive2.apply(void 0, [obj2, hookName2, handler2].concat(args2));
1869
- }
1870
- };
1871
- return runHooksRecursive.apply(void 0, [obj, hookName, handler].concat(args));
1872
- } else {
1873
- return handler.call.apply(handler, [obj, obj].concat(args));
1874
- }
1875
- }
1876
1820
  function showErrorMsg(pluginName, msg) {
1877
1821
  XG_DEBUG.logError("[".concat(pluginName, "] event or callback cant be undefined or null when call ").concat(msg));
1878
1822
  }
@@ -2112,18 +2056,6 @@
2112
2056
  }
2113
2057
  }
2114
2058
  }
2115
- }, {
2116
- key: "defineMethod",
2117
- value: function defineMethod(Obj, map) {
2118
- for (var key in map) {
2119
- if (Object.prototype.hasOwnProperty.call(map, key) && typeof map[key] === "function") {
2120
- Object.defineProperty(Obj, key, {
2121
- configurable: true,
2122
- value: map[key]
2123
- });
2124
- }
2125
- }
2126
- }
2127
2059
  }, {
2128
2060
  key: "defaultConfig",
2129
2061
  get: function get() {
@@ -2746,7 +2678,7 @@
2746
2678
  arr2[i] = arr[i];
2747
2679
  return arr2;
2748
2680
  }
2749
- function _createForOfIteratorHelper$1(o, allowArrayLike) {
2681
+ function _createForOfIteratorHelper(o, allowArrayLike) {
2750
2682
  var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
2751
2683
  if (!it) {
2752
2684
  if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") {
@@ -2934,21 +2866,6 @@
2934
2866
  length: Buffer2.totalLength && Buffer2.totalLength(buffers)
2935
2867
  };
2936
2868
  }
2937
- }, {
2938
- key: "isBuffered",
2939
- value: function isBuffered(media, pos) {
2940
- if (media) {
2941
- var buffered = Buffer2.get(media);
2942
- if (buffered !== null && buffered !== void 0 && buffered.length) {
2943
- for (var i = 0; i < buffered.length; i++) {
2944
- if (pos >= buffered.start(i) && pos <= buffered.end(i)) {
2945
- return true;
2946
- }
2947
- }
2948
- }
2949
- }
2950
- return false;
2951
- }
2952
2869
  }]);
2953
2870
  return Buffer2;
2954
2871
  }();
@@ -3101,7 +3018,7 @@
3101
3018
  this.logCache.apply(this, [LogCacheLevel.DEBUG].concat(args));
3102
3019
  if (Logger2.disabled)
3103
3020
  return;
3104
- (_console = console).debug.apply(_console, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
3021
+ (_console = console).debug.apply(_console, [this._prefix, nowTime$1()].concat(args));
3105
3022
  }
3106
3023
  }, {
3107
3024
  key: "log",
@@ -3113,7 +3030,7 @@
3113
3030
  this.logCache.apply(this, [LogCacheLevel.LOG].concat(args));
3114
3031
  if (Logger2.disabled)
3115
3032
  return;
3116
- (_console2 = console).log.apply(_console2, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
3033
+ (_console2 = console).log.apply(_console2, [this._prefix, nowTime$1()].concat(args));
3117
3034
  }
3118
3035
  }, {
3119
3036
  key: "warn",
@@ -3125,7 +3042,7 @@
3125
3042
  this.logCache.apply(this, [LogCacheLevel.WARN].concat(args));
3126
3043
  if (Logger2.disabled)
3127
3044
  return;
3128
- (_console3 = console).warn.apply(_console3, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
3045
+ (_console3 = console).warn.apply(_console3, [this._prefix, nowTime$1()].concat(args));
3129
3046
  }
3130
3047
  }, {
3131
3048
  key: "error",
@@ -3137,7 +3054,7 @@
3137
3054
  this.logCache.apply(this, [LogCacheLevel.ERROR].concat(args));
3138
3055
  if (Logger2.disabled)
3139
3056
  return;
3140
- (_console4 = console).error.apply(_console4, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
3057
+ (_console4 = console).error.apply(_console4, [this._prefix, nowTime$1()].concat(args));
3141
3058
  }
3142
3059
  }, {
3143
3060
  key: "logCache",
@@ -3152,7 +3069,7 @@
3152
3069
  var finLogText = logText.map(function(item) {
3153
3070
  return logable(item);
3154
3071
  });
3155
- text = "[".concat(nowTime$1(), "]") + this._prefix + JSON.stringify(finLogText);
3072
+ text = this._prefix + nowTime$1() + JSON.stringify(finLogText);
3156
3073
  } catch (e) {
3157
3074
  return;
3158
3075
  }
@@ -4068,8 +3985,8 @@
4068
3985
  response
4069
3986
  };
4070
3987
  }
4071
- function calculateSpeed(byteLen, milliSecond) {
4072
- return Math.round(byteLen * 8 * 1e3 / milliSecond / 1024);
3988
+ function calculateSpeed(byteLen, millisec) {
3989
+ return Math.round(byteLen * 8 * 1e3 / millisec / 1024);
4073
3990
  }
4074
3991
  var EVENT = {
4075
3992
  ERROR: "error",
@@ -4081,7 +3998,6 @@
4081
3998
  SOURCEBUFFER_CREATED: "core.sourcebuffercreated",
4082
3999
  MEDIASOURCE_OPENED: "core.mediasourceopened",
4083
4000
  ANALYZE_DURATION_EXCEEDED: "core.analyzedurationexceeded",
4084
- APPEND_BUFFER: "core.appendbuffer",
4085
4001
  REMOVE_BUFFER: "core.removebuffer",
4086
4002
  BUFFEREOS: "core.buffereos",
4087
4003
  KEYFRAME: "core.keyframe",
@@ -4854,7 +4770,7 @@
4854
4770
  value: function _getHeaders(xhr) {
4855
4771
  var headerLines = xhr.getAllResponseHeaders().trim().split("\r\n");
4856
4772
  var headers = {};
4857
- var _iterator = _createForOfIteratorHelper$1(headerLines), _step;
4773
+ var _iterator = _createForOfIteratorHelper(headerLines), _step;
4858
4774
  try {
4859
4775
  for (_iterator.s(); !(_step = _iterator.n()).done; ) {
4860
4776
  var header = _step.value;
@@ -4876,7 +4792,7 @@
4876
4792
  }]);
4877
4793
  return XhrLoader2;
4878
4794
  }(EventEmitter);
4879
- var _excluded$2 = ["retry", "retryDelay", "onRetryError", "transformError"];
4795
+ var _excluded$1 = ["retry", "retryDelay", "onRetryError", "transformError"];
4880
4796
  var Task = /* @__PURE__ */ function() {
4881
4797
  function Task2(type, config) {
4882
4798
  _classCallCheck$1(this, Task2);
@@ -4896,7 +4812,7 @@
4896
4812
  key: "exec",
4897
4813
  value: function exec() {
4898
4814
  var _this = this;
4899
- var _this$_config = this._config, retry = _this$_config.retry, retryDelay = _this$_config.retryDelay, onRetryError = _this$_config.onRetryError, transformError = _this$_config.transformError, rest = _objectWithoutProperties(_this$_config, _excluded$2);
4815
+ var _this$_config = this._config, retry = _this$_config.retry, retryDelay = _this$_config.retryDelay, onRetryError = _this$_config.onRetryError, transformError = _this$_config.transformError, rest = _objectWithoutProperties(_this$_config, _excluded$1);
4900
4816
  var request = /* @__PURE__ */ function() {
4901
4817
  var _ref = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee() {
4902
4818
  var response, error, isRetry;
@@ -5692,60 +5608,6 @@
5692
5608
  function _nonIterableRest() {
5693
5609
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
5694
5610
  }
5695
- function _createForOfIteratorHelper(o, allowArrayLike) {
5696
- var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
5697
- if (!it) {
5698
- if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
5699
- if (it)
5700
- o = it;
5701
- var i = 0;
5702
- var F = function() {
5703
- };
5704
- return {
5705
- s: F,
5706
- n: function() {
5707
- if (i >= o.length)
5708
- return {
5709
- done: true
5710
- };
5711
- return {
5712
- done: false,
5713
- value: o[i++]
5714
- };
5715
- },
5716
- e: function(e) {
5717
- throw e;
5718
- },
5719
- f: F
5720
- };
5721
- }
5722
- throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
5723
- }
5724
- var normalCompletion = true, didErr = false, err;
5725
- return {
5726
- s: function() {
5727
- it = it.call(o);
5728
- },
5729
- n: function() {
5730
- var step = it.next();
5731
- normalCompletion = step.done;
5732
- return step;
5733
- },
5734
- e: function(e) {
5735
- didErr = true;
5736
- err = e;
5737
- },
5738
- f: function() {
5739
- try {
5740
- if (!normalCompletion && it.return != null)
5741
- it.return();
5742
- } finally {
5743
- if (didErr)
5744
- throw err;
5745
- }
5746
- }
5747
- };
5748
- }
5749
5611
  function _toPrimitive(input, hint) {
5750
5612
  if (typeof input !== "object" || input === null)
5751
5613
  return input;
@@ -5768,15 +5630,13 @@
5768
5630
  METADATA: "metadata"
5769
5631
  };
5770
5632
  var VideoCodecType = {
5771
- AV1: "av1",
5772
5633
  AVC: "avc",
5773
5634
  HEVC: "hevc"
5774
5635
  };
5775
5636
  var AudioCodecType = {
5776
5637
  AAC: "aac",
5777
5638
  G711PCMA: "g7110a",
5778
- G711PCMU: "g7110m",
5779
- OPUS: "opus"
5639
+ G711PCMU: "g7110m"
5780
5640
  };
5781
5641
  var WarningType = {
5782
5642
  LARGE_AV_SHIFT: "LARGE_AV_SHIFT",
@@ -5816,7 +5676,6 @@
5816
5676
  _defineProperty(this, "isVideoEncryption", false);
5817
5677
  _defineProperty(this, "isAudioEncryption", false);
5818
5678
  _defineProperty(this, "isVideo", true);
5819
- _defineProperty(this, "lastKeyFrameDts", 0);
5820
5679
  _defineProperty(this, "kid", null);
5821
5680
  _defineProperty(this, "pssh", null);
5822
5681
  _defineProperty(this, "ext", void 0);
@@ -5859,9 +5718,6 @@
5859
5718
  }, {
5860
5719
  key: "exist",
5861
5720
  value: function exist() {
5862
- if (/av01/.test(this.codec)) {
5863
- return true;
5864
- }
5865
5721
  return !!(this.pps.length && this.sps.length && this.codec);
5866
5722
  }
5867
5723
  }, {
@@ -5925,7 +5781,7 @@
5925
5781
  }, {
5926
5782
  key: "exist",
5927
5783
  value: function exist() {
5928
- return !!(this.sampleRate && this.channelCount && this.codec && (this.codecType === AudioCodecType.AAC || this.codecType === AudioCodecType.G711PCMA || this.codecType === AudioCodecType.G711PCMU || this.codecType === AudioCodecType.OPUS));
5784
+ return !!(this.sampleRate && this.channelCount && this.codec && this.codecType === AudioCodecType.AAC);
5929
5785
  }
5930
5786
  }, {
5931
5787
  key: "hasSample",
@@ -6130,7 +5986,7 @@
6130
5986
  continue;
6131
5987
  }
6132
5988
  frameLength = (data[i + 3] & 3) << 11 | data[i + 4] << 3 | (data[i + 5] & 224) >> 5;
6133
- if (!frameLength || len - i < frameLength)
5989
+ if (len - i < frameLength)
6134
5990
  break;
6135
5991
  protectionSkipBytes = (~data[i + 1] & 1) * 2;
6136
5992
  frames.push({
@@ -6324,15 +6180,6 @@
6324
6180
  return parseInt(item, 16);
6325
6181
  });
6326
6182
  }
6327
- function combineToFloat(integer, decimal) {
6328
- return Number(integer + "." + decimal);
6329
- }
6330
- function toDegree(matrix) {
6331
- if (matrix.length < 5)
6332
- return 0;
6333
- var scaled0 = Math.hypot(matrix[0], matrix[3]), scaled1 = Math.hypot(matrix[1], matrix[4]);
6334
- return 0 === scaled0 || 0 === scaled1 ? 0 : 180 * Math.atan2(matrix[1] / scaled1, matrix[0] / scaled0) / Math.PI;
6335
- }
6336
6183
  var NALu = /* @__PURE__ */ function() {
6337
6184
  function NALu2() {
6338
6185
  _classCallCheck(this, NALu2);
@@ -6995,16 +6842,13 @@
6995
6842
  var AUDIO_EXCETION_LOG_EMIT_DURATION = 5 * 9e4;
6996
6843
  var MAX_VIDEO_FRAME_DURATION = 9e4;
6997
6844
  var MAX_DTS_DELTA_WITH_NEXT_CHUNK = 9e4 / 2;
6998
- var LARGE_AV_FIRST_FRAME_FORCE_FIX_THRESHOLD = 9e4 * 5;
6999
6845
  var TsFixer = /* @__PURE__ */ function() {
7000
- function TsFixer2(videoTrack, audioTrack, metadataTrack, fixerConfig) {
6846
+ function TsFixer2(videoTrack, audioTrack, metadataTrack) {
7001
6847
  _classCallCheck(this, TsFixer2);
7002
6848
  this.videoTrack = videoTrack;
7003
6849
  this.audioTrack = audioTrack;
7004
6850
  this.metadataTrack = metadataTrack;
7005
6851
  this._baseDts = -1;
7006
- this._baseVideoDts = -1;
7007
- this._baseAudioDts = -1;
7008
6852
  this._baseDtsInited = false;
7009
6853
  this._audioNextPts = void 0;
7010
6854
  this._videoNextDts = void 0;
@@ -7013,8 +6857,6 @@
7013
6857
  this._lastAudioExceptionGapDot = 0;
7014
6858
  this._lastAudioExceptionOverlapDot = 0;
7015
6859
  this._lastAudioExceptionLargeGapDot = 0;
7016
- this._needForceFixLargeGap = fixerConfig === null || fixerConfig === void 0 ? void 0 : fixerConfig.forceFixLargeGap;
7017
- this._largeGapThreshold = (fixerConfig === null || fixerConfig === void 0 ? void 0 : fixerConfig.largeGapThreshold) || LARGE_AV_FIRST_FRAME_FORCE_FIX_THRESHOLD;
7018
6860
  }
7019
6861
  _createClass(TsFixer2, [{
7020
6862
  key: "fix",
@@ -7042,16 +6884,10 @@
7042
6884
  if (discontinuity) {
7043
6885
  this._calculateBaseDts(this.audioTrack, this.videoTrack);
7044
6886
  this._baseDts -= startTime;
7045
- this._baseAudioDts -= startTime;
7046
- this._baseVideoDts -= startTime;
7047
6887
  }
7048
6888
  if (!contiguous) {
7049
6889
  this._videoNextDts = vaDelta > 0 ? startTime + vaDelta : startTime;
7050
6890
  this._audioNextPts = vaDelta > 0 ? startTime : startTime - vaDelta;
7051
- if (this._needForceFixLargeGap) {
7052
- this._videoNextDts = 0;
7053
- this._audioNextPts = 0;
7054
- }
7055
6891
  var vDeltaToNextDts = firstVideoSample ? firstVideoSample.dts - this._baseDts - this._videoNextDts : 0;
7056
6892
  var aDeltaToNextDts = firstAudioSample ? firstAudioSample.pts - this._baseDts - this._audioNextPts : 0;
7057
6893
  if (Math.abs(vDeltaToNextDts || aDeltaToNextDts) > MAX_VIDEO_FRAME_DURATION) {
@@ -7084,8 +6920,8 @@
7084
6920
  if (!samples.length)
7085
6921
  return;
7086
6922
  samples.forEach(function(x) {
7087
- x.dts -= _this2._needForceFixLargeGap ? _this2._baseVideoDts : _this2._baseDts;
7088
- x.pts -= _this2._needForceFixLargeGap ? _this2._baseVideoDts : _this2._baseDts;
6923
+ x.dts -= _this2._baseDts;
6924
+ x.pts -= _this2._baseDts;
7089
6925
  });
7090
6926
  if (this._videoNextDts === void 0) {
7091
6927
  var samp0 = samples[0];
@@ -7178,7 +7014,7 @@
7178
7014
  if (!samples.length)
7179
7015
  return;
7180
7016
  samples.forEach(function(x) {
7181
- x.pts -= _this3._needForceFixLargeGap ? _this3._baseAudioDts : _this3._baseDts;
7017
+ x.pts -= _this3._baseDts;
7182
7018
  x.dts = x.pts;
7183
7019
  });
7184
7020
  this._doFixAudioInternal(audioTrack, samples, 9e4);
@@ -7195,15 +7031,12 @@
7195
7031
  var videoBaseDts = Infinity;
7196
7032
  if (audioSamps.length) {
7197
7033
  audioTrack.baseDts = audioBasePts = audioSamps[0].pts;
7198
- this._baseAudioDts = audioBasePts;
7199
7034
  }
7200
7035
  if (videoSamps.length) {
7201
7036
  videoTrack.baseDts = videoBaseDts = videoSamps[0].dts;
7202
- this._baseVideoDts = videoBaseDts;
7203
7037
  }
7204
7038
  this._baseDts = Math.min(audioBasePts, videoBaseDts);
7205
7039
  var delta = videoBaseDts - audioBasePts;
7206
- var largeGap = false;
7207
7040
  if (Number.isFinite(delta) && Math.abs(delta) > LARGE_AV_FIRST_FRAME_GAP) {
7208
7041
  videoTrack.warnings.push({
7209
7042
  type: WarningType.LARGE_AV_SHIFT,
@@ -7213,16 +7046,6 @@
7213
7046
  delta
7214
7047
  });
7215
7048
  }
7216
- if (Number.isFinite(delta) && Math.abs(delta) > this._largeGapThreshold * MAX_SILENT_FRAME_DURATION) {
7217
- largeGap = true;
7218
- }
7219
- if (!this._baseDtsInited) {
7220
- if (largeGap && this._needForceFixLargeGap) {
7221
- this._needForceFixLargeGap = true;
7222
- } else {
7223
- this._needForceFixLargeGap = false;
7224
- }
7225
- }
7226
7049
  this._baseDtsInited = true;
7227
7050
  return true;
7228
7051
  }
@@ -7316,7 +7139,6 @@
7316
7139
  var logger$4 = new Logger$1("TsDemuxer");
7317
7140
  var TsDemuxer = /* @__PURE__ */ function() {
7318
7141
  function TsDemuxer2(videoTrack, audioTrack, metadataTrack) {
7319
- var fixerConfig = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
7320
7142
  _classCallCheck(this, TsDemuxer2);
7321
7143
  _defineProperty(this, "_pmtId", -1);
7322
7144
  _defineProperty(this, "_remainingPacketData", null);
@@ -7326,7 +7148,7 @@
7326
7148
  this.videoTrack = videoTrack || new VideoTrack();
7327
7149
  this.audioTrack = audioTrack || new AudioTrack();
7328
7150
  this.metadataTrack = metadataTrack || new MetadataTrack();
7329
- this._fixer = new TsFixer(this.videoTrack, this.audioTrack, this.metadataTrack, fixerConfig);
7151
+ this._fixer = new TsFixer(this.videoTrack, this.audioTrack, this.metadataTrack);
7330
7152
  }
7331
7153
  _createClass(TsDemuxer2, [{
7332
7154
  key: "demux",
@@ -7673,207 +7495,6 @@
7673
7495
  }]);
7674
7496
  return TsDemuxer2;
7675
7497
  }();
7676
- var ByteReader = /* @__PURE__ */ function() {
7677
- function ByteReader2(buf, offset, len) {
7678
- _classCallCheck(this, ByteReader2);
7679
- this.dv = new DataView(buf);
7680
- this.start = this.offset = offset || this.dv.byteOffset;
7681
- this.end = len ? this.start + len : this.start + this.dv.byteLength;
7682
- }
7683
- _createClass(ByteReader2, [{
7684
- key: "buffer",
7685
- get: function get() {
7686
- return this.dv.buffer;
7687
- }
7688
- }, {
7689
- key: "unreadLength",
7690
- get: function get() {
7691
- return Math.max(this.end - this.offset, 0);
7692
- }
7693
- }, {
7694
- key: "size",
7695
- get: function get() {
7696
- return this.end - this.start;
7697
- }
7698
- }, {
7699
- key: "readFloat",
7700
- value: function readFloat(byteNum) {
7701
- var val = 0;
7702
- switch (byteNum) {
7703
- case 4:
7704
- val = this.dv.getFloat32(this.offset);
7705
- break;
7706
- case 8:
7707
- val = this.dv.getFloat64(this.offset);
7708
- break;
7709
- default:
7710
- throw new Error("read ".concat(byteNum, "-byte float is not supported"));
7711
- }
7712
- this.offset += byteNum;
7713
- return val;
7714
- }
7715
- }, {
7716
- key: "back",
7717
- value: function back(byteNum) {
7718
- this.offset -= byteNum;
7719
- }
7720
- }, {
7721
- key: "skip",
7722
- value: function skip(byteNum) {
7723
- this.offset += byteNum;
7724
- }
7725
- }, {
7726
- key: "readInt",
7727
- value: function readInt(byteNum) {
7728
- var offset = this.offset;
7729
- this.offset += byteNum;
7730
- switch (byteNum) {
7731
- case 1:
7732
- return this.dv.getInt8(offset);
7733
- case 2:
7734
- return this.dv.getInt16(offset);
7735
- case 4:
7736
- return this.dv.getInt32(offset);
7737
- default:
7738
- throw new Error("read ".concat(byteNum, "-byte integers is not supported"));
7739
- }
7740
- }
7741
- }, {
7742
- key: "read",
7743
- value: function read(byteNum) {
7744
- var offset = this.offset;
7745
- this.offset += byteNum;
7746
- switch (byteNum) {
7747
- case 1:
7748
- return this.dv.getUint8(offset);
7749
- case 2:
7750
- return this.dv.getUint16(offset);
7751
- case 3:
7752
- return (this.dv.getUint16(offset) << 8) + this.dv.getUint8(offset + 2);
7753
- case 4:
7754
- return this.dv.getUint32(offset);
7755
- default:
7756
- this.back(byteNum - 4);
7757
- return this.read(byteNum - 4) + this.dv.getUint32(offset) * Math.pow(256, byteNum - 4);
7758
- }
7759
- }
7760
- }, {
7761
- key: "write",
7762
- value: function write(byteNum, val) {
7763
- var offset = this.offset;
7764
- this.offset += byteNum;
7765
- switch (byteNum) {
7766
- case 1:
7767
- return this.dv.setUint8(offset, val);
7768
- case 2:
7769
- return this.dv.setUint16(offset, val);
7770
- case 3:
7771
- return this.dv.setUint8(offset, val >>> 16), this.dv.setUint16(offset + 1, 65535 & val);
7772
- case 4:
7773
- return this.dv.setUint32(offset, val);
7774
- default:
7775
- throw new Error("write ".concat(byteNum, "-byte integers is not supported"));
7776
- }
7777
- }
7778
- }, {
7779
- key: "readToBuffer",
7780
- value: function readToBuffer(len) {
7781
- var buffer;
7782
- if (this.offset || len) {
7783
- buffer = this.dv.buffer.slice(this.offset, len ? this.offset + len : this.end);
7784
- } else {
7785
- buffer = this.dv.buffer;
7786
- }
7787
- this.offset += buffer.byteLength;
7788
- return buffer;
7789
- }
7790
- }, {
7791
- key: "readToUint8",
7792
- value: function readToUint8(len) {
7793
- var uint8 = new Uint8Array(this.dv.buffer, this.offset, len || this.unreadLength);
7794
- this.offset += uint8.byteLength;
7795
- return uint8;
7796
- }
7797
- }, {
7798
- key: "readString",
7799
- value: function readString(len) {
7800
- var i = 0, str = "";
7801
- for (; i < len; i++) {
7802
- str += String.fromCharCode(this.dv.getUint8(this.offset));
7803
- this.offset++;
7804
- }
7805
- return str;
7806
- }
7807
- }], [{
7808
- key: "fromUint8",
7809
- value: function fromUint8(uint8) {
7810
- return new ByteReader2(uint8.buffer, uint8.byteOffset, uint8.byteLength);
7811
- }
7812
- }, {
7813
- key: "concatUint8s",
7814
- value: function concatUint8s(args) {
7815
- var uint8 = new Uint8Array(args.reduce(function(ret, v) {
7816
- return ret + v.byteLength;
7817
- }, 0));
7818
- var offset = 0;
7819
- args.forEach(function(v) {
7820
- uint8.set(v, offset);
7821
- offset += v.byteLength;
7822
- });
7823
- return uint8;
7824
- }
7825
- }, {
7826
- key: "concatUint8",
7827
- value: function concatUint8() {
7828
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
7829
- args[_key] = arguments[_key];
7830
- }
7831
- return this.concatUint8s(args);
7832
- }
7833
- }]);
7834
- return ByteReader2;
7835
- }();
7836
- var BitReader = /* @__PURE__ */ function() {
7837
- function BitReader2(val, size) {
7838
- _classCallCheck(this, BitReader2);
7839
- this.offset = 0;
7840
- this.val = val;
7841
- this.size = size;
7842
- }
7843
- _createClass(BitReader2, [{
7844
- key: "skip",
7845
- value: function skip(len) {
7846
- this.offset += len;
7847
- }
7848
- }, {
7849
- key: "read",
7850
- value: function read(len) {
7851
- var unreadLength = this.size - this.offset - len;
7852
- if (unreadLength >= 0) {
7853
- var bits = 0, i = 0;
7854
- this.offset += len;
7855
- if (this.size > 31) {
7856
- for (; i < len; i++) {
7857
- bits += Math.pow(2, i);
7858
- }
7859
- return this.val / Math.pow(2, unreadLength) & bits;
7860
- } else {
7861
- for (; i < len; i++) {
7862
- bits += 1 << i;
7863
- }
7864
- return this.val >>> unreadLength & bits;
7865
- }
7866
- }
7867
- throw new Error("the number of the read operation exceeds the total length limit of bits");
7868
- }
7869
- }], [{
7870
- key: "fromByte",
7871
- value: function fromByte(byte, len) {
7872
- return new BitReader2(byte.read(len), len << 3);
7873
- }
7874
- }]);
7875
- return BitReader2;
7876
- }();
7877
7498
  var MP4Parser = /* @__PURE__ */ function() {
7878
7499
  function MP4Parser2() {
7879
7500
  _classCallCheck(this, MP4Parser2);
@@ -8031,36 +7652,18 @@
8031
7652
  key: "tkhd",
8032
7653
  value: function tkhd(box) {
8033
7654
  return parseBox(box, true, function(ret, data) {
8034
- var byte = ByteReader.fromUint8(data);
7655
+ var start = 0;
8035
7656
  if (ret.version === 1) {
8036
- byte.read(8);
8037
- byte.read(8);
8038
- ret.trackId = byte.read(4);
8039
- byte.read(4);
8040
- ret.duration = byte.read(8);
7657
+ ret.trackId = readBig32(data, 16);
7658
+ ret.duration = readBig64(data, 24);
7659
+ start += 32;
8041
7660
  } else {
8042
- byte.read(4);
8043
- byte.read(4);
8044
- ret.trackId = byte.read(4);
8045
- byte.read(4);
8046
- ret.duration = byte.read(4);
7661
+ ret.trackId = readBig32(data, 8);
7662
+ ret.duration = readBig32(data, 16);
7663
+ start += 20;
8047
7664
  }
8048
- byte.skip(16);
8049
- ret.matrix = [];
8050
- for (var i = 0; i < 36; i++) {
8051
- ret.matrix.push(byte.read(1));
8052
- }
8053
- byte.back(36);
8054
- var caculatedMatrix = [];
8055
- for (var _i = 0, int32; _i < 3; _i++) {
8056
- caculatedMatrix.push(combineToFloat(byte.readInt(2), byte.readInt(2)));
8057
- caculatedMatrix.push(combineToFloat(byte.readInt(2), byte.readInt(2)));
8058
- int32 = byte.readInt(4);
8059
- caculatedMatrix.push(combineToFloat(int32 >> 30, int32 & 1073741823));
8060
- }
8061
- ret.rotation = toDegree(caculatedMatrix);
8062
- ret.width = byte.read(4);
8063
- ret.height = byte.read(4);
7665
+ ret.width = readBig32(data, start + 52);
7666
+ ret.height = readBig32(data, start + 56);
8064
7667
  });
8065
7668
  }
8066
7669
  }, {
@@ -8190,7 +7793,7 @@
8190
7793
  if (ret.version > 0) {
8191
7794
  var numKeyIds = readBig32(data, start);
8192
7795
  start += 4;
8193
- for (var _i2 = 0; _i2 < ("" + numKeyIds).length; _i2++) {
7796
+ for (var _i = 0; _i < ("" + numKeyIds).length; _i++) {
8194
7797
  for (var j = 0; j < 16; j++) {
8195
7798
  var keyId = data[start];
8196
7799
  start += 1;
@@ -8213,8 +7816,6 @@
8213
7816
  ret.entryCount = readBig32(data);
8214
7817
  ret.entries = MP4Parser2.findBox(data.subarray(4), [], start + 4).map(function(b) {
8215
7818
  switch (b.type) {
8216
- case "av01":
8217
- return MP4Parser2.av01(b);
8218
7819
  case "avc1":
8219
7820
  case "avc2":
8220
7821
  case "avc3":
@@ -8294,69 +7895,6 @@
8294
7895
  }
8295
7896
  });
8296
7897
  }
8297
- }, {
8298
- key: "colr",
8299
- value: function colr(box) {
8300
- return parseBox(box, false, function(ret, data) {
8301
- var byte = ByteReader.fromUint8(data);
8302
- ret.data = box.data;
8303
- ret.colorType = byte.readString(4);
8304
- if (ret.colorType === "nclx") {
8305
- ret.colorPrimaries = byte.read(2);
8306
- ret.transferCharacteristics = byte.read(2);
8307
- ret.matrixCoefficients = byte.read(2);
8308
- ret.fullRangeFlag = byte.read(1) >> 7;
8309
- } else if (ret.colorType === "rICC" || ret.colorType === "prof") {
8310
- ret.iccProfile = data.readToUint8();
8311
- }
8312
- });
8313
- }
8314
- }, {
8315
- key: "av01",
8316
- value: function av01(box) {
8317
- return parseBox(box, false, function(ret, data, start) {
8318
- var bodyStart = parseVisualSampleEntry(ret, data);
8319
- var bodyData = data.subarray(bodyStart);
8320
- start += bodyStart;
8321
- ret.av1C = MP4Parser2.av1C(MP4Parser2.findBox(bodyData, ["av1C"], start)[0]);
8322
- ret.colr = MP4Parser2.colr(MP4Parser2.findBox(bodyData, ["colr"], start)[0]);
8323
- });
8324
- }
8325
- }, {
8326
- key: "av1C",
8327
- value: function av1C(box) {
8328
- return parseBox(box, false, function(ret, data) {
8329
- ret.data = box.data;
8330
- var byte = ByteReader.fromUint8(data);
8331
- var bit = BitReader.fromByte(byte, 4);
8332
- ret.marker = bit.read(1);
8333
- ret.version = bit.read(7);
8334
- ret.seqProfile = bit.read(3);
8335
- ret.seqLevelIdx0 = bit.read(5);
8336
- ret.seqTier0 = bit.read(1);
8337
- ret.highBitdepth = bit.read(1);
8338
- ret.twelveBit = bit.read(1);
8339
- ret.monochrome = bit.read(1);
8340
- ret.chromaSubsamplingX = bit.read(1);
8341
- ret.chromaSubsamplingY = bit.read(1);
8342
- ret.chromaSamplePosition = bit.read(2);
8343
- ret.reserved = bit.read(3);
8344
- ret.initialPresentationDelayPresent = bit.read(1);
8345
- if (ret.initialPresentationDelayPresent) {
8346
- ret.initialPresentationDelayMinusOne = bit.read(4);
8347
- } else {
8348
- ret.initialPresentationDelayMinusOne = 0;
8349
- }
8350
- ret.configOBUs = byte.readToUint8();
8351
- var bitdepth;
8352
- if (ret.seqLevelIdx0 === 2 && ret.highBitdepth === 1) {
8353
- bitdepth = ret.twelveBit === 1 ? "12" : "10";
8354
- } else if (ret.seqProfile <= 2) {
8355
- bitdepth = ret.highBitdepth === 1 ? "10" : "08";
8356
- }
8357
- ret.codec = ["av01", ret.seqProfile, (ret.seqLevelIdx0 < 10 ? "0" + ret.seqLevelIdx0 : ret.seqLevelIdx0) + (ret.seqTier0 ? "H" : "M"), bitdepth].join(".");
8358
- });
8359
- }
8360
7898
  }, {
8361
7899
  key: "avc1",
8362
7900
  value: function avc1(box) {
@@ -8391,7 +7929,7 @@
8391
7929
  ret.ppsLength = data[start];
8392
7930
  start += 1;
8393
7931
  ret.pps = [];
8394
- for (var _i3 = 0; _i3 < ret.ppsLength; _i3++) {
7932
+ for (var _i2 = 0; _i2 < ret.ppsLength; _i2++) {
8395
7933
  var _size = readBig16(data, start);
8396
7934
  start += 2;
8397
7935
  ret.pps.push(data.subarray(start, start += _size));
@@ -8560,7 +8098,7 @@
8560
8098
  start += 8;
8561
8099
  }
8562
8100
  } else {
8563
- for (var _i4 = 0; _i4 < entryCount; _i4++) {
8101
+ for (var _i3 = 0; _i3 < entryCount; _i3++) {
8564
8102
  entries.push({
8565
8103
  count: readBig32(data, start),
8566
8104
  offset: -(~readBig32(data, start + 4) + 1)
@@ -8782,20 +8320,13 @@
8782
8320
  v.mvhdTimecale = moov.mvhd.timescale;
8783
8321
  v.timescale = v.formatTimescale = vTrack.mdia.mdhd.timescale;
8784
8322
  v.duration = vTrack.mdia.mdhd.duration || v.mvhdDurtion / v.mvhdTimecale * v.timescale;
8785
- v.rotation = vTrack.tkhd.rotation;
8786
- v.matrix = vTrack.tkhd.matrix;
8787
8323
  var e1 = vTrack.mdia.minf.stbl.stsd.entries[0];
8788
8324
  v.width = e1.width;
8789
8325
  v.height = e1.height;
8790
8326
  if (e1.pasp) {
8791
8327
  v.sarRatio = [e1.pasp.hSpacing, e1.pasp.vSpacing];
8792
8328
  }
8793
- if (e1.av1C) {
8794
- v.codecType = VideoCodecType.AV1;
8795
- v.codec = e1.av1C.codec;
8796
- v.av1C = e1.av1C.data;
8797
- v.colr = e1.colr.data;
8798
- } else if (e1.hvcC) {
8329
+ if (e1.hvcC) {
8799
8330
  v.codecType = VideoCodecType.HEVC;
8800
8331
  v.codec = e1.hvcC.codec;
8801
8332
  v.vps = e1.hvcC.vps;
@@ -9114,9 +8645,8 @@
9114
8645
  function parseBox(box, isFullBox, parse2) {
9115
8646
  if (!box)
9116
8647
  return;
9117
- if (box.size !== box.data.length) {
8648
+ if (box.size !== box.data.length)
9118
8649
  throw new Error("box ".concat(box.type, " size !== data.length"));
9119
- }
9120
8650
  var ret = {
9121
8651
  start: box.start,
9122
8652
  size: box.size,
@@ -9155,167 +8685,11 @@
9155
8685
  var FMP4Demuxer = /* @__PURE__ */ function() {
9156
8686
  function FMP4Demuxer2(videoTrack, audioTrack, metadataTrack) {
9157
8687
  _classCallCheck(this, FMP4Demuxer2);
9158
- _defineProperty(this, "__loadedMoofWraps", []);
9159
- _defineProperty(this, "__lastRemainData", null);
9160
- _defineProperty(this, "__lastRemainDataStart", 0);
9161
- _defineProperty(this, "__nextMoofStart", -1);
9162
8688
  this.videoTrack = videoTrack || new VideoTrack();
9163
8689
  this.audioTrack = audioTrack || new AudioTrack();
9164
8690
  this.metadataTrack = metadataTrack || new MetadataTrack();
9165
8691
  }
9166
8692
  _createClass(FMP4Demuxer2, [{
9167
- key: "demuxPart",
9168
- value: function demuxPart(partData, partDataStart, moov) {
9169
- var _this = this;
9170
- var videoTrack = this.videoTrack, audioTrack = this.audioTrack;
9171
- var videoExist = videoTrack.exist();
9172
- var audioExist = audioTrack.exist();
9173
- var isAV01 = /av01/.test(videoTrack.codec);
9174
- videoTrack.samples = [];
9175
- audioTrack.samples = [];
9176
- var data = partData;
9177
- var dataStart = partDataStart;
9178
- if (this.__lastRemainData) {
9179
- var lastRemainDataEnd = this.__lastRemainDataStart + this.__lastRemainData.byteLength;
9180
- var continuous = partDataStart <= lastRemainDataEnd && partDataStart > this.__lastRemainDataStart && partDataStart + partData.byteLength > lastRemainDataEnd;
9181
- if (continuous) {
9182
- var noDuplicateData = partData.subarray(this.__lastRemainData.byteLength + this.__lastRemainDataStart - partDataStart);
9183
- data = concatUint8Array(this.__lastRemainData, noDuplicateData);
9184
- dataStart = this.__lastRemainDataStart;
9185
- this.__lastRemainData = null;
9186
- } else {
9187
- this.__lastRemainData = null;
9188
- this.__lastRemainDataStart = 0;
9189
- this.__nextMoofStart = -1;
9190
- }
9191
- }
9192
- if (!moov) {
9193
- var moovBox = MP4Parser.findBox(data, ["moov"])[0];
9194
- if (!moovBox)
9195
- throw new Error("cannot found moov box");
9196
- moov = MP4Parser.moov(moovBox);
9197
- }
9198
- if (data) {
9199
- var dataEnd = dataStart + data.byteLength;
9200
- if (!videoExist && !audioExist) {
9201
- MP4Parser.moovToTrack(moov, videoTrack, audioTrack);
9202
- }
9203
- var moofBoxes = [];
9204
- if (this.__nextMoofStart < 0) {
9205
- MP4Parser.findBox(data, ["moof"], dataStart).forEach(function(v) {
9206
- return moofBoxes.push(v);
9207
- });
9208
- } else if (this.__nextMoofStart >= dataStart && this.__nextMoofStart <= dataEnd - 8) {
9209
- MP4Parser.findBox(data.subarray(this.__nextMoofStart - dataStart), ["moof"], this.__nextMoofStart).forEach(function(v) {
9210
- return moofBoxes.push(v);
9211
- });
9212
- }
9213
- moofBoxes.filter(function(moofBox) {
9214
- return moofBox.size <= moofBox.data.length;
9215
- }).forEach(function(moofBox) {
9216
- var moof = MP4Parser.moof(moofBox);
9217
- _this.__nextMoofStart = moof.start + Math.max.apply(Math, _toConsumableArray(moof.traf.map(function(v) {
9218
- return v.trun.samples.reduce(function(ret, w) {
9219
- return ret + w.size;
9220
- }, v.trun.dataOffset || 0);
9221
- })));
9222
- _this.__loadedMoofWraps.push({
9223
- start: moof.start,
9224
- nextMoofStart: _this.__nextMoofStart,
9225
- moof
9226
- });
9227
- _this.__loadedMoofWraps.sort(function(p, n) {
9228
- return p.start - n.start;
9229
- });
9230
- });
9231
- var _iterator = _createForOfIteratorHelper(this.__loadedMoofWraps), _step;
9232
- try {
9233
- var _loop = function _loop2() {
9234
- var moofWrap = _step.value;
9235
- if (moofWrap.start > dataEnd || moofWrap.nextMoofStart < dataStart) {
9236
- return "continue";
9237
- }
9238
- var moofStart = moofWrap.start;
9239
- var tracks = MP4Parser.moofToSamples(moofWrap.moof, videoTrack, audioTrack);
9240
- var videoBaseMediaDecodeTime = videoTrack.baseMediaDecodeTime;
9241
- var audioBaseMediaDecodeTime = audioTrack.baseMediaDecodeTime;
9242
- var nalSize;
9243
- Object.keys(tracks).forEach(function(k) {
9244
- if (videoTrack.id == k) {
9245
- tracks[k].some(function(x) {
9246
- var xStart = x.offset += moofStart;
9247
- if (xStart < dataStart) {
9248
- return;
9249
- }
9250
- if (xStart + x.size > dataEnd) {
9251
- return true;
9252
- }
9253
- var sample = new VideoSample((x.pts || x.dts) + videoBaseMediaDecodeTime, x.dts + videoBaseMediaDecodeTime);
9254
- sample.duration = x.duration;
9255
- sample.gopId = x.gopId;
9256
- if (x.keyframe)
9257
- sample.setToKeyframe();
9258
- var sampleData = data.subarray(xStart - dataStart, xStart - dataStart + x.size);
9259
- sample.data = sampleData;
9260
- if (!isAV01) {
9261
- var start = 0;
9262
- var len = sampleData.length - 1;
9263
- while (start < len) {
9264
- nalSize = readBig32(sampleData, start);
9265
- start += 4;
9266
- sample.units.push(sampleData.subarray(start, start + nalSize));
9267
- start += nalSize;
9268
- }
9269
- }
9270
- _this.__lastRemainDataStart = xStart + x.size;
9271
- videoTrack.samples.push(sample);
9272
- });
9273
- } else if (audioTrack.id == k) {
9274
- tracks[k].some(function(x) {
9275
- var xStart = x.offset + moofStart;
9276
- if (xStart < dataStart) {
9277
- return;
9278
- }
9279
- if (xStart + x.size > dataEnd) {
9280
- return true;
9281
- }
9282
- var sampleData = data.subarray(xStart - dataStart, xStart - dataStart + x.size);
9283
- audioTrack.samples.push(new AudioSample(x.dts + audioBaseMediaDecodeTime, sampleData, x.duration));
9284
- _this.__lastRemainDataStart = xStart + x.size;
9285
- });
9286
- }
9287
- });
9288
- };
9289
- for (_iterator.s(); !(_step = _iterator.n()).done; ) {
9290
- var _ret = _loop();
9291
- if (_ret === "continue")
9292
- continue;
9293
- }
9294
- } catch (err) {
9295
- _iterator.e(err);
9296
- } finally {
9297
- _iterator.f();
9298
- }
9299
- }
9300
- if (this.__lastRemainDataStart > dataStart && this.__lastRemainDataStart < data.byteLength + dataStart) {
9301
- this.__lastRemainData = data.subarray(this.__lastRemainDataStart - dataStart);
9302
- } else {
9303
- this.__lastRemainData = data;
9304
- this.__lastRemainDataStart = dataStart;
9305
- }
9306
- if (videoTrack.samples.length) {
9307
- videoTrack.baseMediaDecodeTime = videoTrack.samples[0].pts;
9308
- }
9309
- if (audioTrack.samples.length) {
9310
- audioTrack.baseMediaDecodeTime = audioTrack.samples[0].pts;
9311
- }
9312
- return {
9313
- videoTrack,
9314
- audioTrack,
9315
- metadataTrack: this.metadataTrack
9316
- };
9317
- }
9318
- }, {
9319
8693
  key: "demux",
9320
8694
  value: function demux(videoData, audioData) {
9321
8695
  var videoTrack = this.videoTrack, audioTrack = this.audioTrack;
@@ -9807,16 +9181,10 @@
9807
9181
  if (track.useEME && track.enca) {
9808
9182
  content = MP42.enca(track);
9809
9183
  } else {
9810
- if (track.codecType === AudioCodecType.OPUS) {
9811
- content = MP42.opus(track);
9812
- } else {
9813
- content = MP42.mp4a(track);
9814
- }
9184
+ content = MP42.mp4a(track);
9815
9185
  }
9816
9186
  } else if (track.useEME && track.encv) {
9817
9187
  content = MP42.encv(track);
9818
- } else if (track.av1C) {
9819
- content = MP42.av01(track);
9820
9188
  } else {
9821
9189
  content = MP42.avc1hev1(track);
9822
9190
  }
@@ -10030,96 +9398,12 @@
10030
9398
  return MP42.box(MP42.types.sinf, content, MP42.box(MP42.types.frma, frma), MP42.box(MP42.types.schm, schm), schi);
10031
9399
  }
10032
9400
  }, {
10033
- key: "av01",
10034
- value: function av01(track) {
10035
- return MP42.box(MP42.types.av01, new Uint8Array([
10036
- 0,
10037
- 0,
10038
- 0,
10039
- 0,
10040
- 0,
10041
- 0,
10042
- 0,
10043
- 1,
10044
- 0,
10045
- 0,
10046
- 0,
10047
- 0,
10048
- 0,
10049
- 0,
10050
- 0,
10051
- 0,
10052
- 0,
10053
- 0,
10054
- 0,
10055
- 0,
10056
- 0,
10057
- 0,
10058
- 0,
10059
- 0,
10060
- track.width >> 8 & 255,
10061
- track.width & 255,
10062
- track.height >> 8 & 255,
10063
- track.height & 255,
10064
- 0,
10065
- 72,
10066
- 0,
10067
- 0,
10068
- 0,
10069
- 72,
10070
- 0,
10071
- 0,
10072
- 0,
10073
- 0,
10074
- 0,
10075
- 0,
10076
- 0,
10077
- 1,
10078
- 0,
10079
- 0,
10080
- 0,
10081
- 0,
10082
- 0,
10083
- 0,
10084
- 0,
10085
- 0,
10086
- 0,
10087
- 0,
10088
- 0,
10089
- 0,
10090
- 0,
10091
- 0,
10092
- 0,
10093
- 0,
10094
- 0,
10095
- 0,
10096
- 0,
10097
- 0,
10098
- 0,
10099
- 0,
10100
- 0,
10101
- 0,
10102
- 0,
10103
- 0,
10104
- 0,
10105
- 0,
10106
- 0,
10107
- 0,
10108
- 0,
10109
- 0,
10110
- 0,
10111
- 24,
10112
- 17,
10113
- 17
10114
- ]), track.av1C, track.colr);
10115
- }
10116
- }, {
10117
- key: "avc1hev1",
10118
- value: function avc1hev1(track) {
10119
- var isHevc = track.codecType === VideoCodecType.HEVC;
10120
- var typ = isHevc ? MP42.types.hvc1 : MP42.types.avc1;
10121
- var config = isHevc ? MP42.hvcC(track) : MP42.avcC(track);
10122
- var boxes = [new Uint8Array([
9401
+ key: "avc1hev1",
9402
+ value: function avc1hev1(track) {
9403
+ var isHevc = track.codecType === VideoCodecType.HEVC;
9404
+ var typ = isHevc ? MP42.types.hvc1 : MP42.types.avc1;
9405
+ var config = isHevc ? MP42.hvcC(track) : MP42.avcC(track);
9406
+ var boxes = [new Uint8Array([
10123
9407
  0,
10124
9408
  0,
10125
9409
  0,
@@ -10483,53 +9767,6 @@
10483
9767
  )));
10484
9768
  return esds2;
10485
9769
  }
10486
- }, {
10487
- key: "opus",
10488
- value: function opus(track) {
10489
- var opusAudioDescription = new Uint8Array([
10490
- 0,
10491
- 0,
10492
- 0,
10493
- 0,
10494
- 0,
10495
- 0,
10496
- 0,
10497
- 1,
10498
- 0,
10499
- 0,
10500
- 0,
10501
- 0,
10502
- 0,
10503
- 0,
10504
- 0,
10505
- 0,
10506
- 0,
10507
- track.channelCount,
10508
- 0,
10509
- 16,
10510
- 0,
10511
- 0,
10512
- 0,
10513
- 0,
10514
- track.sampleRate >> 8 & 255,
10515
- track.sampleRate & 255,
10516
- 0,
10517
- 0
10518
- ]);
10519
- var opusSpecificConfig = track.config.length ? MP42.dOps(track) : [];
10520
- return MP42.box(MP42.types.Opus, opusAudioDescription, opusSpecificConfig);
10521
- }
10522
- }, {
10523
- key: "dOps",
10524
- value: function dOps(track) {
10525
- if (track.config) {
10526
- track.config[4] = track.sampleRate >>> 24 & 255;
10527
- track.config[5] = track.sampleRate >>> 16 & 255;
10528
- track.config[6] = track.sampleRate >>> 8 & 255;
10529
- track.config[7] = track.sampleRate & 255;
10530
- return MP42.box(MP42.types.dOps, track.config);
10531
- }
10532
- }
10533
9770
  }, {
10534
9771
  key: "mvex",
10535
9772
  value: function mvex(tracks) {
@@ -11132,7 +10369,7 @@
11132
10369
  }]);
11133
10370
  return MP42;
11134
10371
  }();
11135
- _defineProperty(MP4, "types", ["Opus", "dOps", "av01", "av1C", "avc1", "avcC", "hvc1", "hvcC", "dinf", "dref", "esds", "ftyp", "hdlr", "mdat", "mdhd", "mdia", "mfhd", "minf", "moof", "moov", "mp4a", "mvex", "mvhd", "pasp", "stbl", "stco", "stsc", "stsd", "stsz", "stts", "tfdt", "tfhd", "traf", "trak", "trex", "tkhd", "vmhd", "smhd", "ctts", "stss", "styp", "pssh", "sidx", "sbgp", "saiz", "saio", "senc", "trun", "encv", "enca", "sinf", "btrt", "frma", "tenc", "schm", "schi", "mehd", "fiel", "sdtp"].reduce(function(p, c) {
10372
+ _defineProperty(MP4, "types", ["avc1", "avcC", "hvc1", "hvcC", "dinf", "dref", "esds", "ftyp", "hdlr", "mdat", "mdhd", "mdia", "mfhd", "minf", "moof", "moov", "mp4a", "mvex", "mvhd", "pasp", "stbl", "stco", "stsc", "stsd", "stsz", "stts", "tfdt", "tfhd", "traf", "trak", "trex", "tkhd", "vmhd", "smhd", "ctts", "stss", "styp", "pssh", "sidx", "sbgp", "saiz", "saio", "senc", "trun", "encv", "enca", "sinf", "btrt", "frma", "tenc", "schm", "schi", "mehd", "fiel", "sdtp"].reduce(function(p, c) {
11136
10373
  p[c] = [c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2), c.charCodeAt(3)];
11137
10374
  return p;
11138
10375
  }, /* @__PURE__ */ Object.create(null)));
@@ -11467,46 +10704,30 @@
11467
10704
  };
11468
10705
  }
11469
10706
  var samples = track.samples;
11470
- var isAV01 = /av01/.test(track.codec);
11471
10707
  var mdatSize = 0;
11472
- if (isAV01) {
11473
- samples.forEach(function(s) {
11474
- mdatSize += s.data.byteLength;
11475
- });
11476
- } else {
11477
- samples.forEach(function(s) {
11478
- mdatSize += s.units.reduce(function(t, c) {
11479
- return t + c.byteLength;
11480
- }, 0);
11481
- mdatSize += s.units.length * 4;
11482
- });
11483
- }
10708
+ samples.forEach(function(s) {
10709
+ mdatSize += s.units.reduce(function(t, c) {
10710
+ return t + c.byteLength;
10711
+ }, 0);
10712
+ mdatSize += s.units.length * 4;
10713
+ });
11484
10714
  var mdata = new Uint8Array(mdatSize);
11485
- if (isAV01) {
11486
- for (var i = 0, l = samples.length, offset = 0, sample; i < l; i++) {
11487
- sample = samples[i];
11488
- mdata.set(sample.data, offset);
11489
- sample.size = sample.data.byteLength;
11490
- offset += sample.size;
11491
- }
11492
- } else {
11493
- var mdatView = new DataView(mdata.buffer);
11494
- var _loop = function _loop2(_offset2, _sample2) {
11495
- _sample2 = samples[_i];
11496
- var sampleSize = 0;
11497
- _sample2.units.forEach(function(u) {
11498
- mdatView.setUint32(_offset2, u.byteLength);
11499
- _offset2 += 4;
11500
- mdata.set(u, _offset2);
11501
- _offset2 += u.byteLength;
11502
- sampleSize += 4 + u.byteLength;
11503
- });
11504
- _sample2.size = sampleSize;
11505
- _offset = _offset2, _sample = _sample2;
11506
- };
11507
- for (var _i = 0, _l = samples.length, _offset = 0, _sample; _i < _l; _i++) {
11508
- _loop(_offset, _sample);
11509
- }
10715
+ var mdatView = new DataView(mdata.buffer);
10716
+ var _loop = function _loop2(_offset, _sample) {
10717
+ _sample = samples[i];
10718
+ var sampleSize = 0;
10719
+ _sample.units.forEach(function(u) {
10720
+ mdatView.setUint32(_offset, u.byteLength);
10721
+ _offset += 4;
10722
+ mdata.set(u, _offset);
10723
+ _offset += u.byteLength;
10724
+ sampleSize += 4 + u.byteLength;
10725
+ });
10726
+ _sample.size = sampleSize;
10727
+ offset = _offset, sample = _sample;
10728
+ };
10729
+ for (var i = 0, l = samples.length, offset = 0, sample; i < l; i++) {
10730
+ _loop(offset, sample);
11510
10731
  }
11511
10732
  var mdat = MP4.mdat(mdata);
11512
10733
  var moof = MP4.moof([track]);
@@ -11665,11 +10886,11 @@
11665
10886
  });
11666
10887
  var logger$3 = new Logger$2("Transmuxer");
11667
10888
  var Transmuxer = /* @__PURE__ */ function() {
11668
- function Transmuxer2(hls, isMP4, needRemux, fixerConfig) {
10889
+ function Transmuxer2(hls, isMP4, needRemux) {
11669
10890
  _classCallCheck$3(this, Transmuxer2);
11670
10891
  _defineProperty$3(this, "_initSegmentId", "");
11671
10892
  this.hls = hls;
11672
- this._demuxer = isMP4 ? new FMP4Demuxer() : new TsDemuxer(null, null, null, fixerConfig);
10893
+ this._demuxer = isMP4 ? new FMP4Demuxer() : new TsDemuxer();
11673
10894
  this._isMP4 = isMP4;
11674
10895
  if (needRemux)
11675
10896
  this._remuxer = new FMP4Remuxer(this._demuxer.videoTrack, this._demuxer.audioTrack);
@@ -11824,7 +11045,7 @@
11824
11045
  }]);
11825
11046
  return Transmuxer2;
11826
11047
  }();
11827
- var _excluded$1 = ["data"], _excluded2 = ["data"];
11048
+ var _excluded = ["data"], _excluded2 = ["data"];
11828
11049
  var logger$2 = new Logger$2("BufferService");
11829
11050
  var BufferService = /* @__PURE__ */ function() {
11830
11051
  function BufferService2(hls) {
@@ -11936,11 +11157,11 @@
11936
11157
  return;
11937
11158
  if (TsDemuxer.probe(chunk)) {
11938
11159
  if (!this._transmuxer)
11939
- this._transmuxer = new Transmuxer(this.hls, false, !this._softVideo, this.hls.config.fixerConfig);
11160
+ this._transmuxer = new Transmuxer(this.hls, false, !this._softVideo);
11940
11161
  } else if (MP4Parser.probe(chunk)) {
11941
11162
  if (this._softVideo) {
11942
11163
  if (!this._transmuxer)
11943
- this._transmuxer = new Transmuxer(this.hls, true, null, this.hls.config.fixerConfig);
11164
+ this._transmuxer = new Transmuxer(this.hls, true);
11944
11165
  } else {
11945
11166
  this._directAppend = true;
11946
11167
  var mix = false;
@@ -11990,8 +11211,7 @@
11990
11211
  key: "appendBuffer",
11991
11212
  value: function() {
11992
11213
  var _appendBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2(segment, audioSegment, videoChunk, audioChunk, discontinuity, contiguous, startTime) {
11993
- var _this2 = this;
11994
- var afterAppend, p, needInit, _this$_transmuxer$tra, _this$_transmuxer$tra2, video, audio, isFirstAppend, mse, _p, videoData, videoRest, audioData, audioRest;
11214
+ var p, needInit, _this$_transmuxer$tra, _this$_transmuxer$tra2, video, audio, isFirstAppend, mse, _p, videoData, videoRest, audioData, audioRest;
11995
11215
  return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
11996
11216
  while (1)
11997
11217
  switch (_context2.prev = _context2.next) {
@@ -12002,18 +11222,8 @@
12002
11222
  }
12003
11223
  return _context2.abrupt("return");
12004
11224
  case 2:
12005
- afterAppend = function afterAppend2() {
12006
- var _this2$hls;
12007
- if ((_this2$hls = _this2.hls) !== null && _this2$hls !== void 0 && _this2$hls.emit) {
12008
- var _this2$hls2;
12009
- (_this2$hls2 = _this2.hls) === null || _this2$hls2 === void 0 ? void 0 : _this2$hls2.emit(EVENT.APPEND_BUFFER, {
12010
- start: segment.start,
12011
- end: segment.end
12012
- });
12013
- }
12014
- };
12015
11225
  if (!this._directAppend) {
12016
- _context2.next = 8;
11226
+ _context2.next = 7;
12017
11227
  break;
12018
11228
  }
12019
11229
  p = [];
@@ -12021,8 +11231,8 @@
12021
11231
  p.push(this._mse.append(MSE.VIDEO, videoChunk));
12022
11232
  if (audioChunk)
12023
11233
  p.push(this._mse.append(MSE.AUDIO, audioChunk));
12024
- return _context2.abrupt("return", Promise.all(p).then(afterAppend));
12025
- case 8:
11234
+ return _context2.abrupt("return", Promise.all(p));
11235
+ case 7:
12026
11236
  needInit = this._needInitSegment || discontinuity;
12027
11237
  _this$_transmuxer$tra = this._transmuxer.transmux(videoChunk, audioChunk, needInit, contiguous, startTime, this._needInitSegment || discontinuity), _this$_transmuxer$tra2 = _slicedToArray$1(_this$_transmuxer$tra, 2), video = _this$_transmuxer$tra2[0], audio = _this$_transmuxer$tra2[1];
12028
11238
  if (audioChunk && audioSegment) {
@@ -12038,17 +11248,16 @@
12038
11248
  this.hls.emit(Event$1.NO_AUDIO_TRACK);
12039
11249
  }
12040
11250
  if (!this._softVideo) {
12041
- _context2.next = 20;
11251
+ _context2.next = 18;
12042
11252
  break;
12043
11253
  }
12044
11254
  this._softVideo.appendBuffer(video, audio);
12045
11255
  this._needInitSegment = false;
12046
- afterAppend();
12047
- _context2.next = 30;
11256
+ _context2.next = 28;
12048
11257
  break;
12049
- case 20:
11258
+ case 18:
12050
11259
  if (!this._mse) {
12051
- _context2.next = 30;
11260
+ _context2.next = 28;
12052
11261
  break;
12053
11262
  }
12054
11263
  isFirstAppend = !this._sourceCreated;
@@ -12064,15 +11273,15 @@
12064
11273
  });
12065
11274
  }
12066
11275
  if (video) {
12067
- videoData = video.data, videoRest = _objectWithoutProperties$1(video, _excluded$1);
11276
+ videoData = video.data, videoRest = _objectWithoutProperties$1(video, _excluded);
12068
11277
  _p.push(mse.append(MSE.VIDEO, videoData, videoRest));
12069
11278
  }
12070
11279
  if (audio) {
12071
11280
  audioData = audio.data, audioRest = _objectWithoutProperties$1(audio, _excluded2);
12072
11281
  _p.push(mse.append(MSE.AUDIO, audioData, audioRest));
12073
11282
  }
12074
- return _context2.abrupt("return", Promise.all(_p).then(afterAppend));
12075
- case 30:
11283
+ return _context2.abrupt("return", Promise.all(_p));
11284
+ case 28:
12076
11285
  case "end":
12077
11286
  return _context2.stop();
12078
11287
  }
@@ -12087,7 +11296,7 @@
12087
11296
  key: "removeBuffer",
12088
11297
  value: function() {
12089
11298
  var _removeBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee3() {
12090
- var _this3 = this;
11299
+ var _this2 = this;
12091
11300
  var start, end, media, _args3 = arguments;
12092
11301
  return _regeneratorRuntime$1().wrap(function _callee3$(_context3) {
12093
11302
  while (1)
@@ -12103,7 +11312,7 @@
12103
11312
  return _context3.abrupt("return");
12104
11313
  case 5:
12105
11314
  return _context3.abrupt("return", this._mse.clearBuffer(start, end).then(function() {
12106
- return _this3.hls.emit(EVENT.REMOVE_BUFFER, {
11315
+ return _this2.hls.emit(EVENT.REMOVE_BUFFER, {
12107
11316
  start,
12108
11317
  end,
12109
11318
  removeEnd: end
@@ -12284,51 +11493,30 @@
12284
11493
  return setLiveSeekableRange;
12285
11494
  }()
12286
11495
  }, {
12287
- key: "detachMedia",
11496
+ key: "destroy",
12288
11497
  value: function() {
12289
- var _detachMedia = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee9() {
11498
+ var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee9() {
11499
+ var _this$_decryptor;
12290
11500
  return _regeneratorRuntime$1().wrap(function _callee9$(_context9) {
12291
11501
  while (1)
12292
11502
  switch (_context9.prev = _context9.next) {
12293
11503
  case 0:
11504
+ (_this$_decryptor = this._decryptor) === null || _this$_decryptor === void 0 ? void 0 : _this$_decryptor.destroy();
12294
11505
  if (!this._mse) {
12295
- _context9.next = 3;
11506
+ _context9.next = 4;
12296
11507
  break;
12297
11508
  }
12298
- _context9.next = 3;
11509
+ _context9.next = 4;
12299
11510
  return this._mse.unbindMedia();
12300
- case 3:
12301
- case "end":
12302
- return _context9.stop();
12303
- }
12304
- }, _callee9, this);
12305
- }));
12306
- function detachMedia() {
12307
- return _detachMedia.apply(this, arguments);
12308
- }
12309
- return detachMedia;
12310
- }()
12311
- }, {
12312
- key: "destroy",
12313
- value: function() {
12314
- var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee10() {
12315
- var _this$_decryptor;
12316
- return _regeneratorRuntime$1().wrap(function _callee10$(_context10) {
12317
- while (1)
12318
- switch (_context10.prev = _context10.next) {
12319
- case 0:
12320
- (_this$_decryptor = this._decryptor) === null || _this$_decryptor === void 0 ? void 0 : _this$_decryptor.destroy();
12321
- _context10.next = 3;
12322
- return this.detachMedia();
12323
- case 3:
11511
+ case 4:
12324
11512
  this._decryptor = null;
12325
11513
  this._mse = null;
12326
11514
  this._softVideo = null;
12327
- case 6:
11515
+ case 7:
12328
11516
  case "end":
12329
- return _context10.stop();
11517
+ return _context9.stop();
12330
11518
  }
12331
- }, _callee10, this);
11519
+ }, _callee9, this);
12332
11520
  }));
12333
11521
  function destroy() {
12334
11522
  return _destroy.apply(this, arguments);
@@ -12416,11 +11604,7 @@
12416
11604
  minSegmentsStartPlay: 3,
12417
11605
  preferMMS: false,
12418
11606
  preferMMSStreaming: false,
12419
- mseLowLatency: true,
12420
- fixerConfig: {
12421
- forceFixLargeGap: false,
12422
- largeGapThreshold: 5
12423
- }
11607
+ mseLowLatency: true
12424
11608
  }, cfg), {}, {
12425
11609
  media
12426
11610
  });
@@ -12535,8 +11719,6 @@
12535
11719
  _defineProperty$3(this, "lowLatency", false);
12536
11720
  _defineProperty$3(this, "endPartIndex", 0);
12537
11721
  _defineProperty$3(this, "segments", []);
12538
- _defineProperty$3(this, "dateRanges", {});
12539
- _defineProperty$3(this, "skippedSegments", 0);
12540
11722
  });
12541
11723
  var MediaSegment = /* @__PURE__ */ function() {
12542
11724
  function MediaSegment2(parentUrl) {
@@ -12708,38 +11890,6 @@
12708
11890
  }
12709
11891
  }
12710
11892
  }
12711
- function isValidDaterange(attr, dateRangeWithSameId) {
12712
- var _badValueForSameId;
12713
- if (dateRangeWithSameId) {
12714
- for (var key in dateRangeWithSameId) {
12715
- if (Object.prototype.hasOwnProperty.call(dateRangeWithSameId, key) && attr[key] !== dateRangeWithSameId[key]) {
12716
- _badValueForSameId = key;
12717
- break;
12718
- }
12719
- }
12720
- }
12721
- var duration = null;
12722
- if (attr.DURATION) {
12723
- duration = parseFloat(attr.DURATION);
12724
- if (!Number.isFinite(duration)) {
12725
- duration = null;
12726
- } else if (attr._endDate) {
12727
- duration = (attr._endDate.getTime() - attr._startDate.getTime()) / 1e3;
12728
- }
12729
- }
12730
- var cue = enumeratedStringList(attr.CUE || attr["X-CUE"], {
12731
- pre: false,
12732
- post: false,
12733
- once: false
12734
- });
12735
- return !!attr.ID && !_badValueForSameId && Number.isFinite(attr._startDate.getTime()) && (duration === null || duration >= 0) && (!(attr.END_ON_NEXT === "YES") || !!attr.CLASS) && (!attr.CUE || !cue.pre && !cue.post || cue.pre !== cue.post) && (!(attr.CLASS === "com.apple.hls.interstitial") || "X-ASSET-URI" in attr || "X-ASSET-LIST" in attr);
12736
- }
12737
- function enumeratedStringList(attrValue, dict) {
12738
- return (attrValue ? attrValue.split(/[ ,]+/) : []).reduce(function(result, identifier) {
12739
- result[identifier.toLowerCase()] = true;
12740
- return result;
12741
- }, dict);
12742
- }
12743
11893
  function parseMasterPlaylist(lines, parentUrl) {
12744
11894
  var master = new MasterPlaylist();
12745
11895
  var index = 0;
@@ -12848,6 +11998,9 @@
12848
11998
  var endOfList = false;
12849
11999
  var partSegmentIndex = 0;
12850
12000
  while (line = lines[index++]) {
12001
+ if (endOfList) {
12002
+ break;
12003
+ }
12851
12004
  if (line[0] !== "#") {
12852
12005
  if (media.lowLatency) {
12853
12006
  curSN++;
@@ -12901,6 +12054,11 @@
12901
12054
  break;
12902
12055
  case "ENDLIST":
12903
12056
  {
12057
+ var _lastSegment = media.segments[media.segments.length - 1];
12058
+ if (_lastSegment) {
12059
+ _lastSegment.isLast = true;
12060
+ }
12061
+ media.live = false;
12904
12062
  endOfList = true;
12905
12063
  }
12906
12064
  break;
@@ -12997,29 +12155,6 @@
12997
12155
  curSegment = new MediaSegment(parentUrl);
12998
12156
  }
12999
12157
  break;
13000
- case "SKIP":
13001
- {
13002
- var _attr5 = parseAttr(data);
13003
- var skippedSegments = parseInt(_attr5["SKIPPED-SEGMENTS"], 10);
13004
- if (skippedSegments <= Number.MAX_SAFE_INTEGER) {
13005
- media.skippedSegments += skippedSegments;
13006
- }
13007
- }
13008
- break;
13009
- case "DATERANGE":
13010
- {
13011
- var _attr6 = parseAttr(data);
13012
- var dateRangeWithSameId = media.dateRanges[_attr6.ID];
13013
- _attr6._startDate = dateRangeWithSameId ? dateRangeWithSameId._startDate : new Date(_attr6["START-DATE"]);
13014
- var endDate = (dateRangeWithSameId === null || dateRangeWithSameId === void 0 ? void 0 : dateRangeWithSameId._endDate) || new Date(_attr6.END_DATE);
13015
- if (Number.isFinite(endDate)) {
13016
- _attr6._endDate = endDate;
13017
- }
13018
- if (isValidDaterange(_attr6, dateRangeWithSameId) || media.skippedSegments) {
13019
- media.dateRanges[_attr6.ID] = _attr6;
13020
- }
13021
- }
13022
- break;
13023
12158
  }
13024
12159
  }
13025
12160
  media.segments = media.segments.filter(function(x) {
@@ -13027,14 +12162,11 @@
13027
12162
  });
13028
12163
  var lastSegment = media.segments[media.segments.length - 1];
13029
12164
  if (lastSegment) {
13030
- if (endOfList) {
13031
- lastSegment.isLast = true;
13032
- }
13033
12165
  media.endSN = lastSegment.sn;
13034
12166
  media.endPartIndex = lastSegment.partIndex;
13035
- }
13036
- if (endOfList) {
13037
- media.live = false;
12167
+ if (endOfList && !lastSegment.isLast) {
12168
+ lastSegment.isLast = true;
12169
+ }
13038
12170
  }
13039
12171
  media.totalDuration = totalDuration;
13040
12172
  media.endCC = curCC;
@@ -14131,7 +13263,7 @@
14131
13263
  _defineProperty$3(_assertThisInitialized$2(_this), "_switchUrlOpts", null);
14132
13264
  _defineProperty$3(_assertThisInitialized$2(_this), "_isProcessQuotaExceeded", false);
14133
13265
  _defineProperty$3(_assertThisInitialized$2(_this), "_loadSegment", /* @__PURE__ */ _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee() {
14134
- var _this$_playlist, nextSegment, lastSegment, _assertThisInitialize, config, minFrameDuration, maxBufferThroughout, bInfo, bufferThroughout;
13266
+ var nextSeg, _assertThisInitialize, config, bInfo, bufferThroughout;
14135
13267
  return _regeneratorRuntime$1().wrap(function _callee$(_context) {
14136
13268
  while (1)
14137
13269
  switch (_context.prev = _context.next) {
@@ -14142,44 +13274,42 @@
14142
13274
  }
14143
13275
  return _context.abrupt("return");
14144
13276
  case 2:
14145
- _this$_playlist = _this._playlist, nextSegment = _this$_playlist.nextSegment, lastSegment = _this$_playlist.lastSegment;
13277
+ nextSeg = _this._playlist.nextSegment;
14146
13278
  _assertThisInitialize = _assertThisInitialized$2(_this), config = _assertThisInitialize.config;
14147
- minFrameDuration = 0.016;
14148
- maxBufferThroughout = Math.min(Math.max((lastSegment === null || lastSegment === void 0 ? void 0 : lastSegment.duration) - minFrameDuration / 2 || 0, minFrameDuration), 0.1);
14149
- if (nextSegment) {
14150
- _context.next = 8;
13279
+ if (nextSeg) {
13280
+ _context.next = 6;
14151
13281
  break;
14152
13282
  }
14153
13283
  return _context.abrupt("return");
14154
- case 8:
13284
+ case 6:
14155
13285
  if (_this.isLive) {
14156
- _context.next = 18;
13286
+ _context.next = 16;
14157
13287
  break;
14158
13288
  }
14159
13289
  bInfo = _this.bufferInfo();
14160
13290
  if (_this.media.paused && !_this.media.currentTime) {
14161
13291
  bInfo = _this.bufferInfo(bInfo.nextStart || 0.5);
14162
13292
  }
14163
- bufferThroughout = Math.abs(bInfo.end - _this.media.duration) < maxBufferThroughout;
13293
+ bufferThroughout = Math.abs(bInfo.end - _this.media.duration) < 0.1;
14164
13294
  if (!(bInfo.remaining >= config.preloadTime || bufferThroughout)) {
14165
- _context.next = 15;
13295
+ _context.next = 13;
14166
13296
  break;
14167
13297
  }
14168
13298
  _this._tryEos();
14169
13299
  return _context.abrupt("return");
14170
- case 15:
13300
+ case 13:
14171
13301
  if (!(config.preferMMSStreaming && !_this._bufferService.msStreaming)) {
14172
- _context.next = 17;
13302
+ _context.next = 15;
14173
13303
  break;
14174
13304
  }
14175
13305
  return _context.abrupt("return");
14176
- case 17:
14177
- if (!_this._urlSwitching && _this._prevSegSn !== nextSegment.sn - 1 && bInfo.end && Math.abs(nextSegment.start - bInfo.end) > 1) {
13306
+ case 15:
13307
+ if (!_this._urlSwitching && _this._prevSegSn !== nextSeg.sn - 1 && bInfo.end && Math.abs(nextSeg.start - bInfo.end) > 1) {
14178
13308
  _this._playlist.setNextSegmentByIndex(_this._playlist.findSegmentIndexByTime(bInfo.end + 0.1));
14179
13309
  }
14180
- case 18:
13310
+ case 16:
14181
13311
  return _context.abrupt("return", _this._loadSegmentDirect());
14182
- case 19:
13312
+ case 17:
14183
13313
  case "end":
14184
13314
  return _context.stop();
14185
13315
  }
@@ -14427,12 +13557,6 @@
14427
13557
  var _this$_bufferService;
14428
13558
  return (_this$_bufferService = this._bufferService) === null || _this$_bufferService === void 0 ? void 0 : _this$_bufferService.baseDts;
14429
13559
  }
14430
- }, {
14431
- key: "abrSwitchPoint",
14432
- get: function get() {
14433
- var targetSeg = this._urlSwitching ? this._playlist.currentSegment : this._playlist.nextSegment;
14434
- return targetSeg ? targetSeg.start + targetSeg.duration / 2 : null;
14435
- }
14436
13560
  }, {
14437
13561
  key: "speedInfo",
14438
13562
  value: function speedInfo() {
@@ -14458,37 +13582,30 @@
14458
13582
  }, {
14459
13583
  key: "load",
14460
13584
  value: function() {
14461
- var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4() {
14462
- var url, options, reuseMse, _args4 = arguments;
13585
+ var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4(url) {
13586
+ var reuseMse, _args4 = arguments;
14463
13587
  return _regeneratorRuntime$1().wrap(function _callee4$(_context4) {
14464
13588
  while (1)
14465
13589
  switch (_context4.prev = _context4.next) {
14466
13590
  case 0:
14467
- url = _args4.length > 0 && _args4[0] !== void 0 ? _args4[0] : "";
14468
- options = _args4.length > 1 && _args4[1] !== void 0 ? _args4[1] : {};
14469
- reuseMse = typeof options === "boolean" ? options : !!(options !== null && options !== void 0 && options.reuseMse);
14470
- if (_typeof$2(options) === "object" && options !== null && options !== void 0 && options.clearSwitchStatus) {
14471
- this._urlSwitching = false;
14472
- this._switchUrlOpts = null;
14473
- this.config.startTime = void 0;
14474
- }
13591
+ reuseMse = _args4.length > 1 && _args4[1] !== void 0 ? _args4[1] : false;
14475
13592
  if (url)
14476
13593
  this.config.url = url;
14477
13594
  url = this.config.url;
14478
- _context4.next = 8;
13595
+ _context4.next = 5;
14479
13596
  return this._reset(reuseMse);
14480
- case 8:
14481
- _context4.next = 10;
13597
+ case 5:
13598
+ _context4.next = 7;
14482
13599
  return this._loadData(url);
14483
- case 10:
13600
+ case 7:
14484
13601
  this._startTick();
14485
- case 11:
13602
+ case 8:
14486
13603
  case "end":
14487
13604
  return _context4.stop();
14488
13605
  }
14489
13606
  }, _callee4, this);
14490
13607
  }));
14491
- function load() {
13608
+ function load(_x) {
14492
13609
  return _load.apply(this, arguments);
14493
13610
  }
14494
13611
  return load;
@@ -14497,7 +13614,7 @@
14497
13614
  key: "_loadData",
14498
13615
  value: function() {
14499
13616
  var _loadData2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee5(url) {
14500
- var manifest, currentStream, preIndex, _this$_switchUrlOpts, _this$_switchUrlOpts3, _this$_switchUrlOpts4, _this$_switchUrlOpts2, switchTimePoint, segIdx, nextSeg, bufferClearStartPoint, startTime, _this$_switchUrlOpts5;
13617
+ var manifest, currentStream, _this$_switchUrlOpts, _this$_switchUrlOpts2, switchTimePoint, segIdx, nextSeg, bufferClearStartPoint, preIndex, startTime, _this$_switchUrlOpts3;
14501
13618
  return _regeneratorRuntime$1().wrap(function _callee5$(_context5) {
14502
13619
  while (1)
14503
13620
  switch (_context5.prev = _context5.next) {
@@ -14518,46 +13635,41 @@
14518
13635
  case 5:
14519
13636
  manifest = _context5.sent;
14520
13637
  currentStream = this._playlist.currentStream;
14521
- if (!this._urlSwitching) {
14522
- _context5.next = 23;
13638
+ if (!(this._urlSwitching && !this.isLive)) {
13639
+ _context5.next = 17;
14523
13640
  break;
14524
13641
  }
14525
- if (!this.isLive) {
14526
- _context5.next = 14;
14527
- break;
14528
- }
14529
- preIndex = this._playlist.setNextSegmentBySN(this._prevSegSn);
14530
- logger.log("segment nb=".concat(this._prevSegSn, " index of ").concat(preIndex, " in the new playlist"));
14531
- if (preIndex === -1) {
14532
- this._prevSegCc = null;
14533
- this._prevSegSn = null;
14534
- }
14535
- _context5.next = 23;
14536
- break;
14537
- case 14:
14538
13642
  if (currentStream.bitrate === 0 && (_this$_switchUrlOpts = this._switchUrlOpts) !== null && _this$_switchUrlOpts !== void 0 && _this$_switchUrlOpts.bitrate) {
14539
13643
  currentStream.bitrate = (_this$_switchUrlOpts2 = this._switchUrlOpts) === null || _this$_switchUrlOpts2 === void 0 ? void 0 : _this$_switchUrlOpts2.bitrate;
14540
13644
  }
14541
- switchTimePoint = typeof ((_this$_switchUrlOpts3 = this._switchUrlOpts) === null || _this$_switchUrlOpts3 === void 0 ? void 0 : _this$_switchUrlOpts3.startTime) === "number" ? (_this$_switchUrlOpts4 = this._switchUrlOpts) === null || _this$_switchUrlOpts4 === void 0 ? void 0 : _this$_switchUrlOpts4.startTime : this._getSeamlessSwitchPoint();
13645
+ switchTimePoint = this._getSeamlessSwitchPoint();
14542
13646
  this.config.startTime = switchTimePoint;
14543
13647
  segIdx = this._playlist.findSegmentIndexByTime(switchTimePoint);
14544
13648
  nextSeg = this._playlist.getSegmentByIndex(segIdx + 1);
14545
13649
  if (!nextSeg) {
14546
- _context5.next = 23;
13650
+ _context5.next = 17;
14547
13651
  break;
14548
13652
  }
14549
13653
  bufferClearStartPoint = nextSeg.start;
14550
- _context5.next = 23;
13654
+ _context5.next = 17;
14551
13655
  return this._bufferService.removeBuffer(bufferClearStartPoint);
14552
- case 23:
13656
+ case 17:
13657
+ if (this._urlSwitching && this.isLive) {
13658
+ preIndex = this._playlist.setNextSegmentBySN(this._prevSegSn);
13659
+ logger.log("segment nb=".concat(this._prevSegSn, " index of ").concat(preIndex, " in the new playlist"));
13660
+ if (preIndex === -1) {
13661
+ this._prevSegCc = null;
13662
+ this._prevSegSn = null;
13663
+ }
13664
+ }
14553
13665
  if (manifest) {
14554
- _context5.next = 25;
13666
+ _context5.next = 20;
14555
13667
  break;
14556
13668
  }
14557
13669
  return _context5.abrupt("return");
14558
- case 25:
13670
+ case 20:
14559
13671
  if (!this.isLive) {
14560
- _context5.next = 36;
13672
+ _context5.next = 31;
14561
13673
  break;
14562
13674
  }
14563
13675
  this._bufferService.setLiveSeekableRange(0, 4294967295);
@@ -14570,35 +13682,35 @@
14570
13682
  if (!manifest.isMaster)
14571
13683
  this._pollM3U8(url);
14572
13684
  if (!(this._playlist.nbSegments < this.config.minSegmentsStartPlay)) {
14573
- _context5.next = 33;
13685
+ _context5.next = 28;
14574
13686
  break;
14575
13687
  }
14576
13688
  return _context5.abrupt("return");
14577
- case 33:
14578
- _context5.next = 35;
13689
+ case 28:
13690
+ _context5.next = 30;
14579
13691
  return this._loadSegment();
14580
- case 35:
13692
+ case 30:
14581
13693
  return _context5.abrupt("return");
14582
- case 36:
14583
- _context5.next = 38;
13694
+ case 31:
13695
+ _context5.next = 33;
14584
13696
  return this._bufferService.updateDuration(currentStream.totalDuration);
14585
- case 38:
13697
+ case 33:
14586
13698
  startTime = this.config.startTime;
14587
13699
  if (startTime) {
14588
- if (!((_this$_switchUrlOpts5 = this._switchUrlOpts) !== null && _this$_switchUrlOpts5 !== void 0 && _this$_switchUrlOpts5.seamless)) {
13700
+ if (!((_this$_switchUrlOpts3 = this._switchUrlOpts) !== null && _this$_switchUrlOpts3 !== void 0 && _this$_switchUrlOpts3.seamless)) {
14589
13701
  this.media.currentTime = startTime;
14590
13702
  }
14591
13703
  this._playlist.setNextSegmentByIndex(this._playlist.findSegmentIndexByTime(startTime) || 0);
14592
13704
  }
14593
- _context5.next = 42;
13705
+ _context5.next = 37;
14594
13706
  return this._loadSegment();
14595
- case 42:
13707
+ case 37:
14596
13708
  case "end":
14597
13709
  return _context5.stop();
14598
13710
  }
14599
13711
  }, _callee5, this);
14600
13712
  }));
14601
- function _loadData(_x) {
13713
+ function _loadData(_x2) {
14602
13714
  return _loadData2.apply(this, arguments);
14603
13715
  }
14604
13716
  return _loadData;
@@ -14612,20 +13724,18 @@
14612
13724
  switch (_context6.prev = _context6.next) {
14613
13725
  case 0:
14614
13726
  this.config.startTime = 0;
14615
- this._urlSwitching = false;
14616
- this._switchUrlOpts = null;
14617
- _context6.next = 5;
13727
+ _context6.next = 3;
14618
13728
  return this.load();
14619
- case 5:
13729
+ case 3:
14620
13730
  this._reloadOnPlay = false;
14621
13731
  return _context6.abrupt("return", this.media.play(!isPlayEmit));
14622
- case 7:
13732
+ case 5:
14623
13733
  case "end":
14624
13734
  return _context6.stop();
14625
13735
  }
14626
13736
  }, _callee6, this);
14627
13737
  }));
14628
- function replay(_x2) {
13738
+ function replay(_x3) {
14629
13739
  return _replay.apply(this, arguments);
14630
13740
  }
14631
13741
  return replay;
@@ -14730,7 +13840,7 @@
14730
13840
  }
14731
13841
  }, _callee7, this, [[18, 29]]);
14732
13842
  }));
14733
- function switchURL(_x3) {
13843
+ function switchURL(_x4) {
14734
13844
  return _switchURL.apply(this, arguments);
14735
13845
  }
14736
13846
  return switchURL;
@@ -14816,7 +13926,7 @@
14816
13926
  }
14817
13927
  }, _callee8, this, [[8, 16], [21, 31]]);
14818
13928
  }));
14819
- function switchStream(_x4) {
13929
+ function switchStream(_x5) {
14820
13930
  return _switchStream.apply(this, arguments);
14821
13931
  }
14822
13932
  return switchStream;
@@ -14902,7 +14012,7 @@
14902
14012
  }
14903
14013
  }, _callee9, this, [[10, 18], [22, 32]]);
14904
14014
  }));
14905
- function switchAudioStream(_x5) {
14015
+ function switchAudioStream(_x6) {
14906
14016
  return _switchAudioStream.apply(this, arguments);
14907
14017
  }
14908
14018
  return switchAudioStream;
@@ -14927,50 +14037,25 @@
14927
14037
  }
14928
14038
  }, _callee10, this);
14929
14039
  }));
14930
- function switchSubtitleStream(_x6) {
14040
+ function switchSubtitleStream(_x7) {
14931
14041
  return _switchSubtitleStream.apply(this, arguments);
14932
14042
  }
14933
14043
  return switchSubtitleStream;
14934
14044
  }()
14935
- }, {
14936
- key: "detachMedia",
14937
- value: function() {
14938
- var _detachMedia = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee11() {
14939
- return _regeneratorRuntime$1().wrap(function _callee11$(_context11) {
14940
- while (1)
14941
- switch (_context11.prev = _context11.next) {
14942
- case 0:
14943
- if (!this._bufferService) {
14944
- _context11.next = 3;
14945
- break;
14946
- }
14947
- _context11.next = 3;
14948
- return this._bufferService.detachMedia();
14949
- case 3:
14950
- case "end":
14951
- return _context11.stop();
14952
- }
14953
- }, _callee11, this);
14954
- }));
14955
- function detachMedia() {
14956
- return _detachMedia.apply(this, arguments);
14957
- }
14958
- return detachMedia;
14959
- }()
14960
14045
  }, {
14961
14046
  key: "destroy",
14962
14047
  value: function() {
14963
- var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee12() {
14048
+ var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee11() {
14964
14049
  var _this$_seiService2;
14965
- return _regeneratorRuntime$1().wrap(function _callee12$(_context12) {
14050
+ return _regeneratorRuntime$1().wrap(function _callee11$(_context11) {
14966
14051
  while (1)
14967
- switch (_context12.prev = _context12.next) {
14052
+ switch (_context11.prev = _context11.next) {
14968
14053
  case 0:
14969
14054
  if (this.media) {
14970
- _context12.next = 2;
14055
+ _context11.next = 2;
14971
14056
  break;
14972
14057
  }
14973
- return _context12.abrupt("return");
14058
+ return _context11.abrupt("return");
14974
14059
  case 2:
14975
14060
  this.removeAllListeners();
14976
14061
  this._playlist.reset();
@@ -14981,15 +14066,15 @@
14981
14066
  this.media.removeEventListener("pause", this._onPause);
14982
14067
  this.media.removeEventListener("seeking", this._onSeeking);
14983
14068
  this.media.removeEventListener("timeupdate", this._onTimeupdate);
14984
- _context12.next = 13;
14069
+ _context11.next = 13;
14985
14070
  return Promise.all([this._clear(), this._bufferService.destroy()]);
14986
14071
  case 13:
14987
14072
  this.media = null;
14988
14073
  case 14:
14989
14074
  case "end":
14990
- return _context12.stop();
14075
+ return _context11.stop();
14991
14076
  }
14992
- }, _callee12, this);
14077
+ }, _callee11, this);
14993
14078
  }));
14994
14079
  function destroy() {
14995
14080
  return _destroy.apply(this, arguments);
@@ -14999,48 +14084,48 @@
14999
14084
  }, {
15000
14085
  key: "_loadM3U8",
15001
14086
  value: function() {
15002
- var _loadM3U = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee13(url) {
14087
+ var _loadM3U = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee12(url) {
15003
14088
  var playlist, _this$config$manifest, _this$config$manifest2, manifest, _ref4, _ref5, _this$_playlist$curre;
15004
- return _regeneratorRuntime$1().wrap(function _callee13$(_context13) {
14089
+ return _regeneratorRuntime$1().wrap(function _callee12$(_context12) {
15005
14090
  while (1)
15006
- switch (_context13.prev = _context13.next) {
14091
+ switch (_context12.prev = _context12.next) {
15007
14092
  case 0:
15008
- _context13.prev = 0;
14093
+ _context12.prev = 0;
15009
14094
  manifest = (_this$config$manifest = this.config.manifestList) === null || _this$config$manifest === void 0 ? void 0 : (_this$config$manifest2 = _this$config$manifest.filter(function(x) {
15010
14095
  return x.url === url;
15011
14096
  })[0]) === null || _this$config$manifest2 === void 0 ? void 0 : _this$config$manifest2.manifest;
15012
14097
  if (!manifest) {
15013
- _context13.next = 6;
14098
+ _context12.next = 6;
15014
14099
  break;
15015
14100
  }
15016
- _context13.t0 = this._manifestLoader.parseText(manifest, url);
15017
- _context13.next = 9;
14101
+ _context12.t0 = this._manifestLoader.parseText(manifest, url);
14102
+ _context12.next = 9;
15018
14103
  break;
15019
14104
  case 6:
15020
- _context13.next = 8;
14105
+ _context12.next = 8;
15021
14106
  return this._manifestLoader.load(url);
15022
14107
  case 8:
15023
- _context13.t0 = _context13.sent;
14108
+ _context12.t0 = _context12.sent;
15024
14109
  case 9:
15025
- _ref4 = _context13.t0;
14110
+ _ref4 = _context12.t0;
15026
14111
  _ref5 = _slicedToArray$1(_ref4, 1);
15027
14112
  playlist = _ref5[0];
15028
- _context13.next = 17;
14113
+ _context12.next = 17;
15029
14114
  break;
15030
14115
  case 14:
15031
- _context13.prev = 14;
15032
- _context13.t1 = _context13["catch"](0);
15033
- throw this._emitError(StreamingError.create(_context13.t1));
14116
+ _context12.prev = 14;
14117
+ _context12.t1 = _context12["catch"](0);
14118
+ throw this._emitError(StreamingError.create(_context12.t1));
15034
14119
  case 17:
15035
14120
  if (playlist) {
15036
- _context13.next = 19;
14121
+ _context12.next = 19;
15037
14122
  break;
15038
14123
  }
15039
- return _context13.abrupt("return");
14124
+ return _context12.abrupt("return");
15040
14125
  case 19:
15041
14126
  this._playlist.upsertPlaylist(playlist);
15042
14127
  if (!playlist.isMaster) {
15043
- _context13.next = 24;
14128
+ _context12.next = 24;
15044
14129
  break;
15045
14130
  }
15046
14131
  if ((_this$_playlist$curre = this._playlist.currentStream.subtitleStreams) !== null && _this$_playlist$curre !== void 0 && _this$_playlist$curre.length) {
@@ -15048,18 +14133,18 @@
15048
14133
  list: this._playlist.currentStream.subtitleStreams
15049
14134
  });
15050
14135
  }
15051
- _context13.next = 24;
14136
+ _context12.next = 24;
15052
14137
  return this._refreshM3U8();
15053
14138
  case 24:
15054
14139
  this.emit(Event$1.STREAM_PARSED);
15055
- return _context13.abrupt("return", playlist);
14140
+ return _context12.abrupt("return", playlist);
15056
14141
  case 26:
15057
14142
  case "end":
15058
- return _context13.stop();
14143
+ return _context12.stop();
15059
14144
  }
15060
- }, _callee13, this, [[0, 14]]);
14145
+ }, _callee12, this, [[0, 14]]);
15061
14146
  }));
15062
- function _loadM3U8(_x7) {
14147
+ function _loadM3U8(_x8) {
15063
14148
  return _loadM3U.apply(this, arguments);
15064
14149
  }
15065
14150
  return _loadM3U8;
@@ -15093,7 +14178,7 @@
15093
14178
  var isEmpty = this._playlist.isEmpty;
15094
14179
  var pollInterval;
15095
14180
  if (this._playlist.lowLatency) {
15096
- pollInterval = (this._playlist.currentStream.partTargetDuration || 0) * 1e3;
14181
+ pollInterval = (this._playlist.currentStream.partTargetDuration * 2 || 0) * 1e3;
15097
14182
  } else {
15098
14183
  var _this$_playlist$lastS;
15099
14184
  pollInterval = (((_this$_playlist$lastS = this._playlist.lastSegment) === null || _this$_playlist$lastS === void 0 ? void 0 : _this$_playlist$lastS.duration) || 0) * 1e3;
@@ -15121,53 +14206,53 @@
15121
14206
  }, {
15122
14207
  key: "_loadSegmentDirect",
15123
14208
  value: function() {
15124
- var _loadSegmentDirect2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee14(loadOnce) {
14209
+ var _loadSegmentDirect2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee13(loadOnce) {
15125
14210
  var seg, appended, cachedError, _this$_playlist$curre2, bufferEnd, sameStream;
15126
- return _regeneratorRuntime$1().wrap(function _callee14$(_context14) {
14211
+ return _regeneratorRuntime$1().wrap(function _callee13$(_context13) {
15127
14212
  while (1)
15128
- switch (_context14.prev = _context14.next) {
14213
+ switch (_context13.prev = _context13.next) {
15129
14214
  case 0:
15130
14215
  seg = this._playlist.nextSegment;
15131
14216
  if (seg) {
15132
- _context14.next = 3;
14217
+ _context13.next = 3;
15133
14218
  break;
15134
14219
  }
15135
- return _context14.abrupt("return");
14220
+ return _context13.abrupt("return");
15136
14221
  case 3:
15137
14222
  appended = false;
15138
14223
  cachedError = null;
15139
- _context14.prev = 5;
14224
+ _context13.prev = 5;
15140
14225
  this._segmentProcessing = true;
15141
14226
  logger.log("load segment, sn:".concat(seg.sn, ", [").concat(seg.start, ", ").concat(seg.end, "], partIndex:").concat(seg.partIndex));
15142
- _context14.next = 10;
14227
+ _context13.next = 10;
15143
14228
  return this._reqAndBufferSegment(seg, this._playlist.getAudioSegment(seg));
15144
14229
  case 10:
15145
- appended = _context14.sent;
15146
- _context14.next = 16;
14230
+ appended = _context13.sent;
14231
+ _context13.next = 16;
15147
14232
  break;
15148
14233
  case 13:
15149
- _context14.prev = 13;
15150
- _context14.t0 = _context14["catch"](5);
15151
- cachedError = _context14.t0;
14234
+ _context13.prev = 13;
14235
+ _context13.t0 = _context13["catch"](5);
14236
+ cachedError = _context13.t0;
15152
14237
  case 16:
15153
- _context14.prev = 16;
14238
+ _context13.prev = 16;
15154
14239
  this._segmentProcessing = false;
15155
- return _context14.finish(16);
14240
+ return _context13.finish(16);
15156
14241
  case 19:
15157
14242
  if (!cachedError) {
15158
- _context14.next = 26;
14243
+ _context13.next = 26;
15159
14244
  break;
15160
14245
  }
15161
14246
  if (!this._bufferService.isFull()) {
15162
- _context14.next = 25;
14247
+ _context13.next = 25;
15163
14248
  break;
15164
14249
  }
15165
14250
  logger.log("load segment, sn:".concat(seg.sn, ", partIndex:").concat(seg.partIndex));
15166
14251
  this._segmentProcessing = true;
15167
14252
  this._isProcessQuotaExceeded = true;
15168
- return _context14.abrupt("return", false);
14253
+ return _context13.abrupt("return", false);
15169
14254
  case 25:
15170
- return _context14.abrupt("return", this._emitError(StreamingError.create(cachedError)));
14255
+ return _context13.abrupt("return", this._emitError(StreamingError.create(cachedError)));
15171
14256
  case 26:
15172
14257
  if (appended) {
15173
14258
  bufferEnd = this.bufferInfo().end;
@@ -15193,14 +14278,14 @@
15193
14278
  this._loadSegment();
15194
14279
  }
15195
14280
  }
15196
- return _context14.abrupt("return", appended);
14281
+ return _context13.abrupt("return", appended);
15197
14282
  case 28:
15198
14283
  case "end":
15199
- return _context14.stop();
14284
+ return _context13.stop();
15200
14285
  }
15201
- }, _callee14, this, [[5, 13, 16, 19]]);
14286
+ }, _callee13, this, [[5, 13, 16, 19]]);
15202
14287
  }));
15203
- function _loadSegmentDirect(_x8) {
14288
+ function _loadSegmentDirect(_x9) {
15204
14289
  return _loadSegmentDirect2.apply(this, arguments);
15205
14290
  }
15206
14291
  return _loadSegmentDirect;
@@ -15208,45 +14293,45 @@
15208
14293
  }, {
15209
14294
  key: "_reqAndBufferSegment",
15210
14295
  value: function() {
15211
- var _reqAndBufferSegment2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee15(seg, audioSeg) {
14296
+ var _reqAndBufferSegment2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee14(seg, audioSeg) {
15212
14297
  var _this$_bufferService2;
15213
14298
  var cc, discontinuity, responses, data, sn, start, stream, before, contiguous, segStart;
15214
- return _regeneratorRuntime$1().wrap(function _callee15$(_context15) {
14299
+ return _regeneratorRuntime$1().wrap(function _callee14$(_context14) {
15215
14300
  while (1)
15216
- switch (_context15.prev = _context15.next) {
14301
+ switch (_context14.prev = _context14.next) {
15217
14302
  case 0:
15218
14303
  cc = seg ? seg.cc : audioSeg.cc;
15219
14304
  discontinuity = this._prevSegCc !== cc;
15220
14305
  responses = [];
15221
- _context15.prev = 3;
15222
- _context15.next = 6;
14306
+ _context14.prev = 3;
14307
+ _context14.next = 6;
15223
14308
  return this._segmentLoader.load(seg, audioSeg, discontinuity);
15224
14309
  case 6:
15225
- responses = _context15.sent;
15226
- _context15.next = 14;
14310
+ responses = _context14.sent;
14311
+ _context14.next = 14;
15227
14312
  break;
15228
14313
  case 9:
15229
- _context15.prev = 9;
15230
- _context15.t0 = _context15["catch"](3);
15231
- _context15.t0.fatal = false;
15232
- this._segmentLoader.error = _context15.t0;
15233
- throw _context15.t0;
14314
+ _context14.prev = 9;
14315
+ _context14.t0 = _context14["catch"](3);
14316
+ _context14.t0.fatal = false;
14317
+ this._segmentLoader.error = _context14.t0;
14318
+ throw _context14.t0;
15234
14319
  case 14:
15235
14320
  if (responses[0]) {
15236
- _context15.next = 16;
14321
+ _context14.next = 16;
15237
14322
  break;
15238
14323
  }
15239
- return _context15.abrupt("return");
14324
+ return _context14.abrupt("return");
15240
14325
  case 16:
15241
- _context15.next = 18;
14326
+ _context14.next = 18;
15242
14327
  return (_this$_bufferService2 = this._bufferService).decryptBuffer.apply(_this$_bufferService2, _toConsumableArray$2(responses));
15243
14328
  case 18:
15244
- data = _context15.sent;
14329
+ data = _context14.sent;
15245
14330
  if (data) {
15246
- _context15.next = 21;
14331
+ _context14.next = 21;
15247
14332
  break;
15248
14333
  }
15249
- return _context15.abrupt("return");
14334
+ return _context14.abrupt("return");
15250
14335
  case 21:
15251
14336
  sn = seg ? seg.sn : audioSeg.sn;
15252
14337
  start = seg ? seg.start : audioSeg.start;
@@ -15260,26 +14345,26 @@
15260
14345
  logger.warn("update the new playlist liveEdge, segment id=".concat(sn, ", buffer start=").concat(segStart, ", liveEdge=").concat(this._playlist.liveEdge));
15261
14346
  start = segStart;
15262
14347
  }
15263
- _context15.next = 30;
14348
+ _context14.next = 30;
15264
14349
  return this._bufferService.appendBuffer(seg, audioSeg, data[0], data[1], discontinuity, contiguous, start);
15265
14350
  case 30:
15266
14351
  this.emit(Event$1.APPEND_COST, {
15267
14352
  elapsed: Date.now() - before,
15268
14353
  url: seg.url
15269
14354
  });
15270
- _context15.next = 33;
14355
+ _context14.next = 33;
15271
14356
  return this._bufferService.evictBuffer(this.config.bufferBehind);
15272
14357
  case 33:
15273
14358
  this._prevSegCc = cc;
15274
14359
  this._prevSegSn = sn;
15275
- return _context15.abrupt("return", true);
14360
+ return _context14.abrupt("return", true);
15276
14361
  case 36:
15277
14362
  case "end":
15278
- return _context15.stop();
14363
+ return _context14.stop();
15279
14364
  }
15280
- }, _callee15, this, [[3, 9]]);
14365
+ }, _callee14, this, [[3, 9]]);
15281
14366
  }));
15282
- function _reqAndBufferSegment(_x9, _x10) {
14367
+ function _reqAndBufferSegment(_x10, _x11) {
15283
14368
  return _reqAndBufferSegment2.apply(this, arguments);
15284
14369
  }
15285
14370
  return _reqAndBufferSegment;
@@ -15287,11 +14372,11 @@
15287
14372
  }, {
15288
14373
  key: "_onCheckQuotaExceeded",
15289
14374
  value: function() {
15290
- var _onCheckQuotaExceeded2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee16() {
14375
+ var _onCheckQuotaExceeded2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee15() {
15291
14376
  var seekTime, buffered, inBuffered, i, bufferBehind, mediaTime;
15292
- return _regeneratorRuntime$1().wrap(function _callee16$(_context16) {
14377
+ return _regeneratorRuntime$1().wrap(function _callee15$(_context15) {
15293
14378
  while (1)
15294
- switch (_context16.prev = _context16.next) {
14379
+ switch (_context15.prev = _context15.next) {
15295
14380
  case 0:
15296
14381
  seekTime = this.media.currentTime;
15297
14382
  buffered = this.media.buffered;
@@ -15299,37 +14384,37 @@
15299
14384
  i = 0;
15300
14385
  case 4:
15301
14386
  if (!(i < buffered.length)) {
15302
- _context16.next = 11;
14387
+ _context15.next = 11;
15303
14388
  break;
15304
14389
  }
15305
14390
  if (!(buffered.start(0) >= seekTime && seekTime < buffered.end(i))) {
15306
- _context16.next = 8;
14391
+ _context15.next = 8;
15307
14392
  break;
15308
14393
  }
15309
14394
  inBuffered = true;
15310
- return _context16.abrupt("break", 11);
14395
+ return _context15.abrupt("break", 11);
15311
14396
  case 8:
15312
14397
  i++;
15313
- _context16.next = 4;
14398
+ _context15.next = 4;
15314
14399
  break;
15315
14400
  case 11:
15316
14401
  if (!this._bufferService.isFull()) {
15317
- _context16.next = 17;
14402
+ _context15.next = 17;
15318
14403
  break;
15319
14404
  }
15320
14405
  bufferBehind = inBuffered ? this.config.bufferBehind : 5;
15321
14406
  mediaTime = this.media.currentTime;
15322
14407
  if (!(mediaTime - bufferBehind > 0)) {
15323
- _context16.next = 17;
14408
+ _context15.next = 17;
15324
14409
  break;
15325
14410
  }
15326
- _context16.next = 17;
14411
+ _context15.next = 17;
15327
14412
  return this._bufferService.removeBuffer(0, mediaTime - bufferBehind);
15328
14413
  case 17:
15329
14414
  case "end":
15330
- return _context16.stop();
14415
+ return _context15.stop();
15331
14416
  }
15332
- }, _callee16, this);
14417
+ }, _callee15, this);
15333
14418
  }));
15334
14419
  function _onCheckQuotaExceeded() {
15335
14420
  return _onCheckQuotaExceeded2.apply(this, arguments);
@@ -15347,22 +14432,22 @@
15347
14432
  }, {
15348
14433
  key: "_clear",
15349
14434
  value: function() {
15350
- var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee17() {
15351
- return _regeneratorRuntime$1().wrap(function _callee17$(_context17) {
14435
+ var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee16() {
14436
+ return _regeneratorRuntime$1().wrap(function _callee16$(_context16) {
15352
14437
  while (1)
15353
- switch (_context17.prev = _context17.next) {
14438
+ switch (_context16.prev = _context16.next) {
15354
14439
  case 0:
15355
14440
  clearTimeout(this._disconnectTimer);
15356
14441
  this._stopTick();
15357
- _context17.next = 4;
14442
+ _context16.next = 4;
15358
14443
  return Promise.all([this._segmentLoader.cancel(), this._manifestLoader.stopPoll()]);
15359
14444
  case 4:
15360
14445
  this._segmentProcessing = false;
15361
14446
  case 5:
15362
14447
  case "end":
15363
- return _context17.stop();
14448
+ return _context16.stop();
15364
14449
  }
15365
- }, _callee17, this);
14450
+ }, _callee16, this);
15366
14451
  }));
15367
14452
  function _clear() {
15368
14453
  return _clear2.apply(this, arguments);
@@ -15372,14 +14457,14 @@
15372
14457
  }, {
15373
14458
  key: "_reset",
15374
14459
  value: function() {
15375
- var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee18() {
14460
+ var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee17() {
15376
14461
  var _this$_seiService3;
15377
- var reuseMse, _args18 = arguments;
15378
- return _regeneratorRuntime$1().wrap(function _callee18$(_context18) {
14462
+ var reuseMse, _args17 = arguments;
14463
+ return _regeneratorRuntime$1().wrap(function _callee17$(_context17) {
15379
14464
  while (1)
15380
- switch (_context18.prev = _context18.next) {
14465
+ switch (_context17.prev = _context17.next) {
15381
14466
  case 0:
15382
- reuseMse = _args18.length > 0 && _args18[0] !== void 0 ? _args18[0] : false;
14467
+ reuseMse = _args17.length > 0 && _args17[0] !== void 0 ? _args17[0] : false;
15383
14468
  this._reloadOnPlay = false;
15384
14469
  this._prevSegSn = null;
15385
14470
  this._prevSegCc = null;
@@ -15388,15 +14473,15 @@
15388
14473
  this._segmentLoader.reset();
15389
14474
  (_this$_seiService3 = this._seiService) === null || _this$_seiService3 === void 0 ? void 0 : _this$_seiService3.reset();
15390
14475
  this._stats.reset();
15391
- _context18.next = 11;
14476
+ _context17.next = 11;
15392
14477
  return this._clear();
15393
14478
  case 11:
15394
- return _context18.abrupt("return", this._bufferService.reset(reuseMse));
14479
+ return _context17.abrupt("return", this._bufferService.reset(reuseMse));
15395
14480
  case 12:
15396
14481
  case "end":
15397
- return _context18.stop();
14482
+ return _context17.stop();
15398
14483
  }
15399
- }, _callee18, this);
14484
+ }, _callee17, this);
15400
14485
  }));
15401
14486
  function _reset() {
15402
14487
  return _reset2.apply(this, arguments);
@@ -15477,8 +14562,8 @@
15477
14562
  value: function _tryEos() {
15478
14563
  var _this$_bufferService3, _this$_bufferService4;
15479
14564
  var media = this.media;
15480
- var _this$_playlist2 = this._playlist, nextSegment = _this$_playlist2.nextSegment, lastSegment = _this$_playlist2.lastSegment;
15481
- var eosAllowed = (!nextSegment || lastSegment && Buffer$1.isBuffered(media, lastSegment.start + lastSegment.duration / 2)) && media.readyState && media.duration > 0 && ((_this$_bufferService3 = this._bufferService) === null || _this$_bufferService3 === void 0 ? void 0 : _this$_bufferService3.msIsOpened) && !((_this$_bufferService4 = this._bufferService) !== null && _this$_bufferService4 !== void 0 && _this$_bufferService4.msHasOpTasks);
14565
+ var _this$_playlist = this._playlist, nextSegment = _this$_playlist.nextSegment, lastSegment = _this$_playlist.lastSegment;
14566
+ var eosAllowed = !nextSegment && media.readyState && media.duration > 0 && ((_this$_bufferService3 = this._bufferService) === null || _this$_bufferService3 === void 0 ? void 0 : _this$_bufferService3.msIsOpened) && !((_this$_bufferService4 = this._bufferService) !== null && _this$_bufferService4 !== void 0 && _this$_bufferService4.msHasOpTasks);
15482
14567
  if (!eosAllowed) {
15483
14568
  return;
15484
14569
  }
@@ -15514,7 +14599,7 @@
15514
14599
  }]);
15515
14600
  return Hls2;
15516
14601
  }(EventEmitter);
15517
- _defineProperty$3(Hls, "version", "3.0.20-rc.6");
14602
+ _defineProperty$3(Hls, "version", "3.0.19-rc.0");
15518
14603
  try {
15519
14604
  if (localStorage.getItem("xgd")) {
15520
14605
  Hls.enableLogger();
@@ -15605,7 +14690,6 @@
15605
14690
  }]);
15606
14691
  return PluginExtension2;
15607
14692
  }();
15608
- var _excluded = ["currentTime"];
15609
14693
  function parseSwitchUrlArgs(args, plugin) {
15610
14694
  var player = plugin.player;
15611
14695
  var curTime = player.currentTime;
@@ -15616,14 +14700,9 @@
15616
14700
  case "boolean":
15617
14701
  options.seamless = args;
15618
14702
  break;
15619
- case "object": {
15620
- var currentTime = args.currentTime, rest = _objectWithoutProperties$1(args, _excluded);
15621
- Object.assign(options, rest);
15622
- if (typeof currentTime === "number") {
15623
- options.startTime = currentTime;
15624
- }
14703
+ case "object":
14704
+ Object.assign(options, args);
15625
14705
  break;
15626
- }
15627
14706
  }
15628
14707
  return options;
15629
14708
  }
@@ -15633,11 +14712,10 @@
15633
14712
  function HlsPlugin2() {
15634
14713
  var _this;
15635
14714
  _classCallCheck$3(this, HlsPlugin2);
15636
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
15637
- args[_key] = arguments[_key];
14715
+ for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {
14716
+ _args[_key] = arguments[_key];
15638
14717
  }
15639
- _this = _super.call.apply(_super, [this].concat(args));
15640
- _defineProperty$3(_assertThisInitialized$2(_this), "logger", logger);
14718
+ _this = _super.call.apply(_super, [this].concat(_args));
15641
14719
  _defineProperty$3(_assertThisInitialized$2(_this), "hls", null);
15642
14720
  _defineProperty$3(_assertThisInitialized$2(_this), "pluginExtension", null);
15643
14721
  _defineProperty$3(_assertThisInitialized$2(_this), "getStats", function() {
@@ -15649,6 +14727,24 @@
15649
14727
  var lang = _ref.lang;
15650
14728
  (_this$hls2 = _this.hls) === null || _this$hls2 === void 0 ? void 0 : _this$hls2.switchSubtitleStream(lang);
15651
14729
  });
14730
+ _defineProperty$3(_assertThisInitialized$2(_this), "_onSwitchURL", function(url, args) {
14731
+ return new Promise(function(resolve, reject) {
14732
+ var _assertThisInitialize = _assertThisInitialized$2(_this), player = _assertThisInitialize.player, hls = _assertThisInitialize.hls;
14733
+ if (hls) {
14734
+ var _this$player$config, _this$player$config$h;
14735
+ var options = parseSwitchUrlArgs(args, _assertThisInitialized$2(_this));
14736
+ player.config.url = url;
14737
+ hls.switchURL(url, options).then(function() {
14738
+ return resolve(true);
14739
+ }).catch(reject);
14740
+ if (!options.seamless && (_this$player$config = _this.player.config) !== null && _this$player$config !== void 0 && (_this$player$config$h = _this$player$config.hls) !== null && _this$player$config$h !== void 0 && _this$player$config$h.keepStatusAfterSwitch) {
14741
+ _this._keepPauseStatus();
14742
+ }
14743
+ } else {
14744
+ reject();
14745
+ }
14746
+ });
14747
+ });
15652
14748
  _defineProperty$3(_assertThisInitialized$2(_this), "_keepPauseStatus", function() {
15653
14749
  var paused = _this.player.paused;
15654
14750
  if (!paused)
@@ -15673,8 +14769,8 @@
15673
14769
  }, {
15674
14770
  key: "softDecode",
15675
14771
  get: function get() {
15676
- var _this$player, _this$player$config;
15677
- var mediaType = (_this$player = this.player) === null || _this$player === void 0 ? void 0 : (_this$player$config = _this$player.config) === null || _this$player$config === void 0 ? void 0 : _this$player$config.mediaType;
14772
+ var _this$player, _this$player$config2;
14773
+ var mediaType = (_this$player = this.player) === null || _this$player === void 0 ? void 0 : (_this$player$config2 = _this$player.config) === null || _this$player$config2 === void 0 ? void 0 : _this$player$config2.mediaType;
15678
14774
  return !!mediaType && mediaType !== "video" && mediaType !== "audio";
15679
14775
  }
15680
14776
  }, {
@@ -15682,35 +14778,13 @@
15682
14778
  value: function beforePlayerInit() {
15683
14779
  var _this2 = this;
15684
14780
  var config = this.player.config;
15685
- var mediaElem = this.player.media || this.player.video;
15686
14781
  var hlsOpts = config.hls || {};
15687
14782
  if (!config.url && !config.__allowHlsEmptyUrl__ || !hlsOpts.preferMMS && MSE.isMMSOnly()) {
15688
14783
  return;
15689
14784
  }
15690
14785
  if (this.hls)
15691
14786
  this.hls.destroy();
15692
- var descriptor = Object.getOwnPropertyDescriptor(this.player, "switchURL");
15693
- if (!descriptor || descriptor.writable) {
15694
- this.player.switchURL = function(url, args) {
15695
- return new Promise(function(resolve, reject) {
15696
- var player = _this2.player, hls = _this2.hls;
15697
- if (hls) {
15698
- var _this2$player$config, _this2$player$config$;
15699
- var options = parseSwitchUrlArgs(args, _this2);
15700
- player.config.url = url;
15701
- hls.switchURL(url, options).then(function() {
15702
- return resolve(true);
15703
- }).catch(reject);
15704
- if (!options.seamless && (_this2$player$config = _this2.player.config) !== null && _this2$player$config !== void 0 && (_this2$player$config$ = _this2$player$config.hls) !== null && _this2$player$config$ !== void 0 && _this2$player$config$.keepStatusAfterSwitch) {
15705
- _this2._keepPauseStatus();
15706
- }
15707
- } else {
15708
- reject();
15709
- }
15710
- });
15711
- };
15712
- }
15713
- var onSwitchUrl = this.player.switchURL;
14787
+ this.player.switchURL = this._onSwitchURL;
15714
14788
  this.player.handleSource = false;
15715
14789
  hlsOpts.innerDegrade = hlsOpts.innerDegrade || config.innerDegrade;
15716
14790
  if (hlsOpts.disconnectTime === null || hlsOpts.disconnectTime === void 0)
@@ -15718,7 +14792,7 @@
15718
14792
  this.hls = new Hls(_objectSpread2$2({
15719
14793
  softDecode: this.softDecode,
15720
14794
  isLive: config.isLive,
15721
- media: mediaElem,
14795
+ media: this.player.media || this.player.video,
15722
14796
  startTime: config.startTime,
15723
14797
  url: config.url
15724
14798
  }, hlsOpts));
@@ -15736,7 +14810,7 @@
15736
14810
  if (this.softDecode) {
15737
14811
  this.pluginExtension = new PluginExtension(_objectSpread2$2({
15738
14812
  isLive: config.isLive,
15739
- media: mediaElem
14813
+ media: this.player.video
15740
14814
  }, hlsOpts), this);
15741
14815
  this.player.forceDegradeToVideo = function() {
15742
14816
  var _this2$pluginExtensio;
@@ -15753,8 +14827,8 @@
15753
14827
  return (_this2$hls2 = _this2.hls) === null || _this2$hls2 === void 0 ? void 0 : _this2$hls2.replay();
15754
14828
  });
15755
14829
  }
15756
- this.on(URL_CHANGE, onSwitchUrl);
15757
14830
  this.on(SWITCH_SUBTITLE, this._onSwitchSubtitle);
14831
+ this.on(URL_CHANGE, this._onSwitchURL);
15758
14832
  this.on(DESTROY, this.destroy.bind(this));
15759
14833
  this._transError();
15760
14834
  this._transCoreEvent(EVENT.TTFB);
@@ -15764,7 +14838,6 @@
15764
14838
  this._transCoreEvent(EVENT.LOAD_RETRY);
15765
14839
  this._transCoreEvent(EVENT.SOURCEBUFFER_CREATED);
15766
14840
  this._transCoreEvent(EVENT.MEDIASOURCE_OPENED);
15767
- this._transCoreEvent(EVENT.APPEND_BUFFER);
15768
14841
  this._transCoreEvent(EVENT.REMOVE_BUFFER);
15769
14842
  this._transCoreEvent(EVENT.BUFFEREOS);
15770
14843
  this._transCoreEvent(EVENT.KEYFRAME);
@@ -15784,9 +14857,7 @@
15784
14857
  this._transCoreEvent(Event$1.SUBTITLE_PLAYLIST);
15785
14858
  this._transCoreEvent(Event$1.APPEND_COST);
15786
14859
  if (config.url) {
15787
- this.hls.load(config.url, {
15788
- reuseMse: true
15789
- }).catch(function(e) {
14860
+ this.hls.load(config.url, true).catch(function(e) {
15790
14861
  });
15791
14862
  }
15792
14863
  }