hls.js 1.6.0-beta.2.0.canary.10844 → 1.6.0-beta.2.0.canary.10851

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.
package/dist/hls.light.js CHANGED
@@ -1029,7 +1029,7 @@
1029
1029
  // Some browsers don't allow to use bind on console object anyway
1030
1030
  // fallback to default if needed
1031
1031
  try {
1032
- newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.6.0-beta.2.0.canary.10844");
1032
+ newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.6.0-beta.2.0.canary.10851");
1033
1033
  } catch (e) {
1034
1034
  /* log fn threw an exception. All logger methods are no-ops. */
1035
1035
  return createLogger();
@@ -5949,7 +5949,7 @@
5949
5949
  }, {
5950
5950
  key: "expired",
5951
5951
  get: function get() {
5952
- if (this.live && this.age) {
5952
+ if (this.live && this.age && this.misses < 3) {
5953
5953
  var playlistWindowDuration = this.partEnd - this.fragmentStart;
5954
5954
  return this.age > Math.max(playlistWindowDuration, this.totalduration) + this.levelTargetDuration;
5955
5955
  }
@@ -8001,6 +8001,9 @@
8001
8001
  return drift;
8002
8002
  }
8003
8003
  function mergeDetails(oldDetails, newDetails) {
8004
+ if (oldDetails === newDetails) {
8005
+ return;
8006
+ }
8004
8007
  // Track the last initSegment processed. Initialize it to the last one on the timeline.
8005
8008
  var currentInitSegment = null;
8006
8009
  var oldFragments = oldDetails.fragments;
@@ -13946,7 +13949,7 @@
13946
13949
  var duration = getDuration(data, initData);
13947
13950
  var startDTS = getStartDTS(initData, data);
13948
13951
  var decodeTime = startDTS === null ? timeOffset : startDTS;
13949
- if (isInvalidInitPts(initPTS, decodeTime, timeOffset, duration) || initSegment.timescale !== initPTS.timescale && accurateTimeOffset) {
13952
+ if ((accurateTimeOffset || !initPTS) && (isInvalidInitPts(initPTS, decodeTime, timeOffset, duration) || initSegment.timescale !== initPTS.timescale)) {
13950
13953
  initSegment.initPTS = decodeTime - timeOffset;
13951
13954
  if (initPTS && initPTS.timescale === 1) {
13952
13955
  this.logger.warn("Adjusting initPTS @" + timeOffset + " from " + initPTS.baseTime / initPTS.timescale + " to " + initSegment.initPTS);
@@ -18773,7 +18776,7 @@
18773
18776
  frag = this.getInitialLiveFragment(levelDetails, fragments);
18774
18777
  var mainStart = this.hls.startPosition;
18775
18778
  var liveSyncPosition = this.hls.liveSyncPosition;
18776
- var startPosition = frag ? (mainStart !== -1 ? mainStart : liveSyncPosition) || frag.start : pos;
18779
+ var startPosition = frag ? (mainStart !== -1 && mainStart >= start ? mainStart : liveSyncPosition) || frag.start : pos;
18777
18780
  this.log("Setting startPosition to " + startPosition + " to match initial live edge. mainStart: " + mainStart + " liveSyncPosition: " + liveSyncPosition + " frag.start: " + ((_frag = frag) == null ? void 0 : _frag.start));
18778
18781
  this.startPosition = this.nextLoadPosition = startPosition;
18779
18782
  }
@@ -19798,7 +19801,7 @@
19798
19801
  return !remuxResult.audio && !remuxResult.video && !remuxResult.text && !remuxResult.id3 && !remuxResult.initSegment;
19799
19802
  }
19800
19803
 
19801
- var version = "1.6.0-beta.2.0.canary.10844";
19804
+ var version = "1.6.0-beta.2.0.canary.10851";
19802
19805
 
19803
19806
  // ensure the worker ends up in the bundle
19804
19807
  // If the worker should not be included this gets aliased to empty.js
@@ -20792,6 +20795,7 @@
20792
20795
  transmuxer.push(payload, initSegmentData, audioCodec, videoCodec, frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);
20793
20796
  };
20794
20797
  _proto.onAudioTrackSwitching = function onAudioTrackSwitching(event, data) {
20798
+ var _this2 = this;
20795
20799
  var hls = this.hls;
20796
20800
  // if any URL found on new audio track, it is an alternate audio track
20797
20801
  var fromAltAudio = this.altAudio === 2;
@@ -20820,12 +20824,17 @@
20820
20824
  }
20821
20825
  // If switching from alt to main audio, flush all audio and trigger track switched
20822
20826
  if (fromAltAudio) {
20827
+ this.fragmentTracker.removeAllFragments();
20828
+ hls.once(Events.BUFFER_FLUSHED, function () {
20829
+ var _this2$hls;
20830
+ (_this2$hls = _this2.hls) == null ? void 0 : _this2$hls.trigger(Events.AUDIO_TRACK_SWITCHED, data);
20831
+ });
20823
20832
  hls.trigger(Events.BUFFER_FLUSHING, {
20824
20833
  startOffset: 0,
20825
20834
  endOffset: Number.POSITIVE_INFINITY,
20826
20835
  type: null
20827
20836
  });
20828
- this.fragmentTracker.removeAllFragments();
20837
+ return;
20829
20838
  }
20830
20839
  hls.trigger(Events.AUDIO_TRACK_SWITCHED, data);
20831
20840
  } else {
@@ -21050,18 +21059,18 @@
21050
21059
  return audioCodec;
21051
21060
  };
21052
21061
  _proto._loadBitrateTestFrag = function _loadBitrateTestFrag(fragment, level) {
21053
- var _this2 = this;
21062
+ var _this3 = this;
21054
21063
  fragment.bitrateTest = true;
21055
21064
  this._doFragLoad(fragment, level).then(function (data) {
21056
- var hls = _this2.hls;
21065
+ var hls = _this3.hls;
21057
21066
  var frag = data == null ? void 0 : data.frag;
21058
- if (!frag || _this2.fragContextChanged(frag)) {
21067
+ if (!frag || _this3.fragContextChanged(frag)) {
21059
21068
  return;
21060
21069
  }
21061
21070
  level.fragmentError = 0;
21062
- _this2.state = State.IDLE;
21063
- _this2.startFragRequested = false;
21064
- _this2.bitrateTest = false;
21071
+ _this3.state = State.IDLE;
21072
+ _this3.startFragRequested = false;
21073
+ _this3.bitrateTest = false;
21065
21074
  var stats = frag.stats;
21066
21075
  // Bitrate tests fragments are neither parsed nor buffered
21067
21076
  stats.parsing.start = stats.parsing.end = stats.buffering.start = stats.buffering.end = self.performance.now();
@@ -21216,7 +21225,7 @@
21216
21225
  }
21217
21226
  };
21218
21227
  _proto._bufferInitSegment = function _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) {
21219
- var _this3 = this;
21228
+ var _this4 = this;
21220
21229
  if (this.state !== State.PARSING) {
21221
21230
  return;
21222
21231
  }
@@ -21309,7 +21318,7 @@
21309
21318
  var track = tracks[trackName];
21310
21319
  var initSegment = track.initSegment;
21311
21320
  if (initSegment != null && initSegment.byteLength) {
21312
- _this3.hls.trigger(Events.BUFFER_APPENDING, {
21321
+ _this4.hls.trigger(Events.BUFFER_APPENDING, {
21313
21322
  type: trackName,
21314
21323
  data: initSegment,
21315
21324
  frag: frag,