hls.js 1.5.18 → 1.5.19

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.
@@ -411,7 +411,7 @@ function enableLogs(debugConfig, id) {
411
411
  // Some browsers don't allow to use bind on console object anyway
412
412
  // fallback to default if needed
413
413
  try {
414
- exportedLogger.log(`Debug logs enabled for "${id}" in hls.js version ${"1.5.18"}`);
414
+ exportedLogger.log(`Debug logs enabled for "${id}" in hls.js version ${"1.5.19"}`);
415
415
  } catch (e) {
416
416
  exportedLogger = fakeLogger;
417
417
  }
@@ -4730,15 +4730,16 @@ function mergeDetails(oldDetails, newDetails) {
4730
4730
  delete oldDetails.fragmentHint.endPTS;
4731
4731
  }
4732
4732
  // check if old/new playlists have fragments in common
4733
- // loop through overlapping SN and update startPTS , cc, and duration if any found
4734
- let ccOffset = 0;
4733
+ // loop through overlapping SN and update startPTS, cc, and duration if any found
4735
4734
  let PTSFrag;
4736
- mapFragmentIntersection(oldDetails, newDetails, (oldFrag, newFrag) => {
4737
- if (oldFrag.relurl) {
4738
- // Do not compare CC if the old fragment has no url. This is a level.fragmentHint used by LL-HLS parts.
4739
- // It maybe be off by 1 if it was created before any parts or discontinuity tags were appended to the end
4740
- // of the playlist.
4741
- ccOffset = oldFrag.cc - newFrag.cc;
4735
+ mapFragmentIntersection(oldDetails, newDetails, (oldFrag, newFrag, newFragIndex, newFragments) => {
4736
+ if (newDetails.skippedSegments) {
4737
+ if (newFrag.cc !== oldFrag.cc) {
4738
+ const ccOffset = oldFrag.cc - newFrag.cc;
4739
+ for (let i = newFragIndex; i < newFragments.length; i++) {
4740
+ newFragments[i].cc += ccOffset;
4741
+ }
4742
+ }
4742
4743
  }
4743
4744
  if (isFiniteNumber(oldFrag.startPTS) && isFiniteNumber(oldFrag.endPTS)) {
4744
4745
  newFrag.start = newFrag.startPTS = oldFrag.startPTS;
@@ -4763,8 +4764,9 @@ function mergeDetails(oldDetails, newDetails) {
4763
4764
  currentInitSegment = oldFrag.initSegment;
4764
4765
  }
4765
4766
  });
4767
+ const newFragments = newDetails.fragments;
4766
4768
  if (currentInitSegment) {
4767
- const fragmentsToCheck = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;
4769
+ const fragmentsToCheck = newDetails.fragmentHint ? newFragments.concat(newDetails.fragmentHint) : newFragments;
4768
4770
  fragmentsToCheck.forEach(frag => {
4769
4771
  var _currentInitSegment;
4770
4772
  if (frag && (!frag.initSegment || frag.initSegment.relurl === ((_currentInitSegment = currentInitSegment) == null ? void 0 : _currentInitSegment.relurl))) {
@@ -4773,27 +4775,20 @@ function mergeDetails(oldDetails, newDetails) {
4773
4775
  });
4774
4776
  }
4775
4777
  if (newDetails.skippedSegments) {
4776
- newDetails.deltaUpdateFailed = newDetails.fragments.some(frag => !frag);
4778
+ newDetails.deltaUpdateFailed = newFragments.some(frag => !frag);
4777
4779
  if (newDetails.deltaUpdateFailed) {
4778
4780
  logger.warn('[level-helper] Previous playlist missing segments skipped in delta playlist');
4779
4781
  for (let i = newDetails.skippedSegments; i--;) {
4780
- newDetails.fragments.shift();
4782
+ newFragments.shift();
4783
+ }
4784
+ newDetails.startSN = newFragments[0].sn;
4785
+ } else {
4786
+ if (newDetails.canSkipDateRanges) {
4787
+ newDetails.dateRanges = mergeDateRanges(oldDetails.dateRanges, newDetails.dateRanges, newDetails.recentlyRemovedDateranges);
4781
4788
  }
4782
- newDetails.startSN = newDetails.fragments[0].sn;
4783
- newDetails.startCC = newDetails.fragments[0].cc;
4784
- } else if (newDetails.canSkipDateRanges) {
4785
- newDetails.dateRanges = mergeDateRanges(oldDetails.dateRanges, newDetails.dateRanges, newDetails.recentlyRemovedDateranges);
4786
- }
4787
- }
4788
- const newFragments = newDetails.fragments;
4789
- if (ccOffset) {
4790
- logger.warn('discontinuity sliding from playlist, take drift into account');
4791
- for (let i = 0; i < newFragments.length; i++) {
4792
- newFragments[i].cc += ccOffset;
4793
4789
  }
4794
- }
4795
- if (newDetails.skippedSegments) {
4796
4790
  newDetails.startCC = newDetails.fragments[0].cc;
4791
+ newDetails.endCC = newFragments[newFragments.length - 1].cc;
4797
4792
  }
4798
4793
 
4799
4794
  // Merge parts
@@ -4877,7 +4872,7 @@ function mapFragmentIntersection(oldDetails, newDetails, intersectionFn) {
4877
4872
  newFrag = newDetails.fragments[i] = oldFrag;
4878
4873
  }
4879
4874
  if (oldFrag && newFrag) {
4880
- intersectionFn(oldFrag, newFrag);
4875
+ intersectionFn(oldFrag, newFrag, i, newFrags);
4881
4876
  }
4882
4877
  }
4883
4878
  }
@@ -10944,7 +10939,7 @@ class KeyLoader {
10944
10939
  }
10945
10940
  }
10946
10941
  load(frag) {
10947
- if (!frag.decryptdata && frag.encrypted && this.emeController) {
10942
+ if (!frag.decryptdata && frag.encrypted && this.emeController && this.config.emeEnabled) {
10948
10943
  // Multiple keys, but none selected, resolve in eme-controller
10949
10944
  return this.emeController.selectKeySystemFormat(frag).then(keySystemFormat => {
10950
10945
  return this.loadInternal(frag, keySystemFormat);
@@ -19748,7 +19743,7 @@ class Hls {
19748
19743
  * Get the video-dev/hls.js package version.
19749
19744
  */
19750
19745
  static get version() {
19751
- return "1.5.18";
19746
+ return "1.5.19";
19752
19747
  }
19753
19748
 
19754
19749
  /**