hls.js 1.5.8-0.canary.10117 → 1.5.8-0.canary.10121
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-demo.js +2 -3
- package/dist/hls-demo.js.map +1 -1
- package/dist/hls.js +301 -327
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +201 -222
- package/dist/hls.light.js.map +1 -1
- package/dist/hls.light.min.js +1 -1
- package/dist/hls.light.min.js.map +1 -1
- package/dist/hls.light.mjs +3 -3
- package/dist/hls.min.js +1 -1
- package/dist/hls.min.js.map +1 -1
- package/dist/hls.mjs +3 -3
- package/dist/hls.worker.js +1 -1
- package/dist/hls.worker.js.map +1 -1
- package/package.json +6 -6
package/dist/hls.light.js
CHANGED
@@ -53,7 +53,7 @@
|
|
53
53
|
}
|
54
54
|
function _toPropertyKey(t) {
|
55
55
|
var i = _toPrimitive(t, "string");
|
56
|
-
return "symbol" == typeof i ? i :
|
56
|
+
return "symbol" == typeof i ? i : i + "";
|
57
57
|
}
|
58
58
|
function _defineProperties(target, props) {
|
59
59
|
for (var i = 0; i < props.length; i++) {
|
@@ -151,12 +151,6 @@
|
|
151
151
|
};
|
152
152
|
return _wrapNativeSuper(Class);
|
153
153
|
}
|
154
|
-
function _assertThisInitialized(self) {
|
155
|
-
if (self === void 0) {
|
156
|
-
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
157
|
-
}
|
158
|
-
return self;
|
159
|
-
}
|
160
154
|
|
161
155
|
function getDefaultExportFromCjs (x) {
|
162
156
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
@@ -543,7 +537,7 @@
|
|
543
537
|
}
|
544
538
|
return attrs;
|
545
539
|
};
|
546
|
-
_createClass(AttrList, [{
|
540
|
+
return _createClass(AttrList, [{
|
547
541
|
key: "clientAttrs",
|
548
542
|
get: function get() {
|
549
543
|
return Object.keys(this).filter(function (attr) {
|
@@ -551,7 +545,6 @@
|
|
551
545
|
});
|
552
546
|
}
|
553
547
|
}]);
|
554
|
-
return AttrList;
|
555
548
|
}();
|
556
549
|
|
557
550
|
var Logger = function Logger(label, logger) {
|
@@ -613,7 +606,7 @@
|
|
613
606
|
// Some browsers don't allow to use bind on console object anyway
|
614
607
|
// fallback to default if needed
|
615
608
|
try {
|
616
|
-
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.8-0.canary.
|
609
|
+
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.8-0.canary.10121");
|
617
610
|
} catch (e) {
|
618
611
|
/* log fn threw an exception. All logger methods are no-ops. */
|
619
612
|
return createLogger();
|
@@ -665,7 +658,7 @@
|
|
665
658
|
}
|
666
659
|
}
|
667
660
|
}
|
668
|
-
_createClass(DateRange, [{
|
661
|
+
return _createClass(DateRange, [{
|
669
662
|
key: "id",
|
670
663
|
get: function get() {
|
671
664
|
return this.attr.ID;
|
@@ -724,7 +717,6 @@
|
|
724
717
|
return !!this.id && !this._badValueForSameId && isFiniteNumber(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class);
|
725
718
|
}
|
726
719
|
}]);
|
727
|
-
return DateRange;
|
728
720
|
}();
|
729
721
|
|
730
722
|
var LoadStats = function LoadStats() {
|
@@ -781,7 +773,7 @@
|
|
781
773
|
}
|
782
774
|
this._byteRange = [start, parseInt(params[0]) + start];
|
783
775
|
};
|
784
|
-
_createClass(BaseSegment, [{
|
776
|
+
return _createClass(BaseSegment, [{
|
785
777
|
key: "byteRange",
|
786
778
|
get: function get() {
|
787
779
|
if (!this._byteRange) {
|
@@ -813,17 +805,15 @@
|
|
813
805
|
this._url = value;
|
814
806
|
}
|
815
807
|
}]);
|
816
|
-
return BaseSegment;
|
817
808
|
}();
|
818
809
|
|
819
810
|
/**
|
820
811
|
* Object representing parsed data from an HLS Segment. Found in {@link hls.js#LevelDetails.fragments}.
|
821
812
|
*/
|
822
|
-
var Fragment = /*#__PURE__*/function (
|
823
|
-
_inheritsLoose(Fragment, _BaseSegment);
|
813
|
+
var Fragment = /*#__PURE__*/function (_BaseSegment2) {
|
824
814
|
function Fragment(type, baseurl) {
|
825
815
|
var _this;
|
826
|
-
_this =
|
816
|
+
_this = _BaseSegment2.call(this, baseurl) || this;
|
827
817
|
_this._decryptdata = null;
|
828
818
|
_this.rawProgramDateTime = null;
|
829
819
|
_this.programDateTime = null;
|
@@ -881,6 +871,7 @@
|
|
881
871
|
_this.type = type;
|
882
872
|
return _this;
|
883
873
|
}
|
874
|
+
_inheritsLoose(Fragment, _BaseSegment2);
|
884
875
|
var _proto2 = Fragment.prototype;
|
885
876
|
_proto2.setKeyFormat = function setKeyFormat(keyFormat) {
|
886
877
|
if (this.levelkeys) {
|
@@ -922,7 +913,7 @@
|
|
922
913
|
elementaryStreams[ElementaryStreamTypes.VIDEO] = null;
|
923
914
|
elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO] = null;
|
924
915
|
};
|
925
|
-
_createClass(Fragment, [{
|
916
|
+
return _createClass(Fragment, [{
|
926
917
|
key: "decryptdata",
|
927
918
|
get: function get() {
|
928
919
|
var levelkeys = this.levelkeys;
|
@@ -978,17 +969,15 @@
|
|
978
969
|
return false;
|
979
970
|
}
|
980
971
|
}]);
|
981
|
-
return Fragment;
|
982
972
|
}(BaseSegment);
|
983
973
|
|
984
974
|
/**
|
985
975
|
* Object representing parsed data from an HLS Partial Segment. Found in {@link hls.js#LevelDetails.partList}.
|
986
976
|
*/
|
987
|
-
var Part = /*#__PURE__*/function (
|
988
|
-
_inheritsLoose(Part, _BaseSegment2);
|
977
|
+
var Part = /*#__PURE__*/function (_BaseSegment3) {
|
989
978
|
function Part(partAttrs, frag, baseurl, index, previous) {
|
990
979
|
var _this2;
|
991
|
-
_this2 =
|
980
|
+
_this2 = _BaseSegment3.call(this, baseurl) || this;
|
992
981
|
_this2.fragOffset = 0;
|
993
982
|
_this2.duration = 0;
|
994
983
|
_this2.gap = false;
|
@@ -1012,7 +1001,8 @@
|
|
1012
1001
|
}
|
1013
1002
|
return _this2;
|
1014
1003
|
}
|
1015
|
-
|
1004
|
+
_inheritsLoose(Part, _BaseSegment3);
|
1005
|
+
return _createClass(Part, [{
|
1016
1006
|
key: "start",
|
1017
1007
|
get: function get() {
|
1018
1008
|
return this.fragment.start + this.fragOffset;
|
@@ -1029,7 +1019,6 @@
|
|
1029
1019
|
return !!(elementaryStreams.audio || elementaryStreams.video || elementaryStreams.audiovideo);
|
1030
1020
|
}
|
1031
1021
|
}]);
|
1032
|
-
return Part;
|
1033
1022
|
}(BaseSegment);
|
1034
1023
|
|
1035
1024
|
var DEFAULT_TARGET_DURATION = 10;
|
@@ -1108,7 +1097,7 @@
|
|
1108
1097
|
}
|
1109
1098
|
this.availabilityDelay = previous.availabilityDelay;
|
1110
1099
|
};
|
1111
|
-
_createClass(LevelDetails, [{
|
1100
|
+
return _createClass(LevelDetails, [{
|
1112
1101
|
key: "hasProgramDateTime",
|
1113
1102
|
get: function get() {
|
1114
1103
|
if (this.fragments.length) {
|
@@ -1181,7 +1170,6 @@
|
|
1181
1170
|
return this.endSN;
|
1182
1171
|
}
|
1183
1172
|
}]);
|
1184
|
-
return LevelDetails;
|
1185
1173
|
}();
|
1186
1174
|
|
1187
1175
|
var DecrypterAesMode = {
|
@@ -2636,8 +2624,6 @@
|
|
2636
2624
|
}
|
2637
2625
|
|
2638
2626
|
var LevelKey = /*#__PURE__*/function () {
|
2639
|
-
LevelKey.clearKeyUriToKeyIdMap = function clearKeyUriToKeyIdMap() {
|
2640
|
-
};
|
2641
2627
|
function LevelKey(method, uri, format, formatversions, iv) {
|
2642
2628
|
if (formatversions === void 0) {
|
2643
2629
|
formatversions = [1];
|
@@ -2663,6 +2649,8 @@
|
|
2663
2649
|
this.encrypted = method ? method !== 'NONE' : false;
|
2664
2650
|
this.isCommonEncryption = this.encrypted && !isFullSegmentEncryption(method);
|
2665
2651
|
}
|
2652
|
+
LevelKey.clearKeyUriToKeyIdMap = function clearKeyUriToKeyIdMap() {
|
2653
|
+
};
|
2666
2654
|
var _proto = LevelKey.prototype;
|
2667
2655
|
_proto.isSupported = function isSupported() {
|
2668
2656
|
// If it's Segment encryption or No encryption, just select that key system
|
@@ -4596,7 +4584,7 @@
|
|
4596
4584
|
}
|
4597
4585
|
return liveEdge - this.currentTime;
|
4598
4586
|
};
|
4599
|
-
_createClass(LatencyController, [{
|
4587
|
+
return _createClass(LatencyController, [{
|
4600
4588
|
key: "latency",
|
4601
4589
|
get: function get() {
|
4602
4590
|
return this._latency || 0;
|
@@ -4680,7 +4668,6 @@
|
|
4680
4668
|
return (bufferedRanges ? media.buffered.end(bufferedRanges - 1) : levelDetails.edge) - this.currentTime;
|
4681
4669
|
}
|
4682
4670
|
}]);
|
4683
|
-
return LatencyController;
|
4684
4671
|
}();
|
4685
4672
|
|
4686
4673
|
var HdcpLevels = ['NONE', 'TYPE-0', 'TYPE-1', null];
|
@@ -4814,7 +4801,7 @@
|
|
4814
4801
|
// Deprecated methods (retained for backwards compatibility)
|
4815
4802
|
;
|
4816
4803
|
_proto2.addFallback = function addFallback() {};
|
4817
|
-
_createClass(Level, [{
|
4804
|
+
return _createClass(Level, [{
|
4818
4805
|
key: "maxBitrate",
|
4819
4806
|
get: function get() {
|
4820
4807
|
return Math.max(this.realBitrate, this.bitrate);
|
@@ -4893,7 +4880,6 @@
|
|
4893
4880
|
return (_this$subtitleGroups = this.subtitleGroups) == null ? void 0 : _this$subtitleGroups[0];
|
4894
4881
|
}
|
4895
4882
|
}]);
|
4896
|
-
return Level;
|
4897
4883
|
}();
|
4898
4884
|
function hasGroup(groups, groupId) {
|
4899
4885
|
if (!groupId || !groups) {
|
@@ -5488,7 +5474,6 @@
|
|
5488
5474
|
SwitchToSDR: 4
|
5489
5475
|
}; // Reserved for future use
|
5490
5476
|
var ErrorController = /*#__PURE__*/function (_Logger) {
|
5491
|
-
_inheritsLoose(ErrorController, _Logger);
|
5492
5477
|
function ErrorController(hls) {
|
5493
5478
|
var _this;
|
5494
5479
|
_this = _Logger.call(this, 'error-controller', hls.logger) || this;
|
@@ -5499,6 +5484,7 @@
|
|
5499
5484
|
_this.registerListeners();
|
5500
5485
|
return _this;
|
5501
5486
|
}
|
5487
|
+
_inheritsLoose(ErrorController, _Logger);
|
5502
5488
|
var _proto = ErrorController.prototype;
|
5503
5489
|
_proto.registerListeners = function registerListeners() {
|
5504
5490
|
var hls = this.hls;
|
@@ -5856,7 +5842,6 @@
|
|
5856
5842
|
}(Logger);
|
5857
5843
|
|
5858
5844
|
var BasePlaylistController = /*#__PURE__*/function (_Logger) {
|
5859
|
-
_inheritsLoose(BasePlaylistController, _Logger);
|
5860
5845
|
function BasePlaylistController(hls, logPrefix) {
|
5861
5846
|
var _this;
|
5862
5847
|
_this = _Logger.call(this, logPrefix, hls.logger) || this;
|
@@ -5867,6 +5852,7 @@
|
|
5867
5852
|
_this.hls = hls;
|
5868
5853
|
return _this;
|
5869
5854
|
}
|
5855
|
+
_inheritsLoose(BasePlaylistController, _Logger);
|
5870
5856
|
var _proto = BasePlaylistController.prototype;
|
5871
5857
|
_proto.destroy = function destroy() {
|
5872
5858
|
this.clearTimer();
|
@@ -6473,7 +6459,6 @@
|
|
6473
6459
|
}
|
6474
6460
|
|
6475
6461
|
var AbrController = /*#__PURE__*/function (_Logger) {
|
6476
|
-
_inheritsLoose(AbrController, _Logger);
|
6477
6462
|
function AbrController(_hls) {
|
6478
6463
|
var _this;
|
6479
6464
|
_this = _Logger.call(this, 'abr', _hls.logger) || this;
|
@@ -6495,10 +6480,10 @@
|
|
6495
6480
|
quickly enough to prevent underbuffering
|
6496
6481
|
*/
|
6497
6482
|
_this._abandonRulesCheck = function () {
|
6498
|
-
var
|
6499
|
-
frag =
|
6500
|
-
part =
|
6501
|
-
hls =
|
6483
|
+
var _this2 = _this,
|
6484
|
+
frag = _this2.fragCurrent,
|
6485
|
+
part = _this2.partCurrent,
|
6486
|
+
hls = _this2.hls;
|
6502
6487
|
var autoLevelEnabled = hls.autoLevelEnabled,
|
6503
6488
|
media = hls.media;
|
6504
6489
|
if (!frag || !media) {
|
@@ -6599,6 +6584,7 @@
|
|
6599
6584
|
_this.registerListeners();
|
6600
6585
|
return _this;
|
6601
6586
|
}
|
6587
|
+
_inheritsLoose(AbrController, _Logger);
|
6602
6588
|
var _proto = AbrController.prototype;
|
6603
6589
|
_proto.resetEstimator = function resetEstimator(abrEwmaDefaultEstimate) {
|
6604
6590
|
if (abrEwmaDefaultEstimate) {
|
@@ -6886,7 +6872,7 @@
|
|
6886
6872
|
};
|
6887
6873
|
_proto.findBestLevel = function findBestLevel(currentBw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, maxStarvationDelay, bwFactor, bwUpFactor) {
|
6888
6874
|
var _level$details,
|
6889
|
-
|
6875
|
+
_this3 = this;
|
6890
6876
|
var maxFetchDuration = bufferStarvationDelay + maxStarvationDelay;
|
6891
6877
|
var lastLoadedFragLevel = this.lastLoadedFragLevel;
|
6892
6878
|
var selectionBaseLevel = lastLoadedFragLevel === -1 ? this.hls.firstLevel : lastLoadedFragLevel;
|
@@ -6963,7 +6949,7 @@
|
|
6963
6949
|
|
6964
6950
|
// Use average bitrate when starvation delay (buffer length) is gt or eq two segment durations and rebuffering is not expected (maxStarvationDelay > 0)
|
6965
6951
|
var bitrate = currentFragDuration && bufferStarvationDelay >= currentFragDuration * 2 && maxStarvationDelay === 0 ? levels[i].averageBitrate : levels[i].maxBitrate;
|
6966
|
-
var fetchDuration =
|
6952
|
+
var fetchDuration = _this3.getTimeToLoadFrag(ttfbEstimateSec, adjustedbw, bitrate * avgDuration, levelDetails === undefined);
|
6967
6953
|
var canSwitchWithinTolerance =
|
6968
6954
|
// if adjusted bw is greater than level bitrate AND
|
6969
6955
|
adjustedbw >= bitrate && (
|
@@ -6972,17 +6958,17 @@
|
|
6972
6958
|
// fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches
|
6973
6959
|
// we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ...
|
6974
6960
|
// special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1
|
6975
|
-
fetchDuration <= ttfbEstimateSec || !isFiniteNumber(fetchDuration) || live && !
|
6961
|
+
fetchDuration <= ttfbEstimateSec || !isFiniteNumber(fetchDuration) || live && !_this3.bitrateTestDelay || fetchDuration < maxFetchDuration);
|
6976
6962
|
if (canSwitchWithinTolerance) {
|
6977
|
-
var forcedAutoLevel =
|
6963
|
+
var forcedAutoLevel = _this3.forcedAutoLevel;
|
6978
6964
|
if (i !== loadLevel && (forcedAutoLevel === -1 || forcedAutoLevel !== loadLevel)) {
|
6979
6965
|
if (levelsSkipped.length) {
|
6980
|
-
|
6966
|
+
_this3.trace("Skipped level(s) " + levelsSkipped.join(',') + " of " + maxAutoLevel + " max with CODECS and VIDEO-RANGE:\"" + levels[levelsSkipped[0]].codecs + "\" " + levels[levelsSkipped[0]].videoRange + "; not compatible with \"" + level.codecs + "\" " + currentVideoRange);
|
6981
6967
|
}
|
6982
|
-
|
6968
|
+
_this3.info("switch candidate:" + selectionBaseLevel + "->" + i + " adjustedbw(" + Math.round(adjustedbw) + ")-bitrate=" + Math.round(adjustedbw - bitrate) + " ttfb:" + ttfbEstimateSec.toFixed(1) + " avgDuration:" + avgDuration.toFixed(1) + " maxFetchDuration:" + maxFetchDuration.toFixed(1) + " fetchDuration:" + fetchDuration.toFixed(1) + " firstSelection:" + firstSelection + " codecSet:" + currentCodecSet + " videoRange:" + currentVideoRange + " hls.loadLevel:" + loadLevel);
|
6983
6969
|
}
|
6984
6970
|
if (firstSelection) {
|
6985
|
-
|
6971
|
+
_this3.firstSelection = i;
|
6986
6972
|
}
|
6987
6973
|
// as we are looping from highest to lowest, this will return the best achievable quality level
|
6988
6974
|
return {
|
@@ -6999,7 +6985,7 @@
|
|
6999
6985
|
// not enough time budget even with quality level 0 ... rebuffering might happen
|
7000
6986
|
return -1;
|
7001
6987
|
};
|
7002
|
-
_createClass(AbrController, [{
|
6988
|
+
return _createClass(AbrController, [{
|
7003
6989
|
key: "firstAutoLevel",
|
7004
6990
|
get: function get() {
|
7005
6991
|
var _this$hls2 = this.hls,
|
@@ -7065,7 +7051,6 @@
|
|
7065
7051
|
}
|
7066
7052
|
}
|
7067
7053
|
}]);
|
7068
|
-
return AbrController;
|
7069
7054
|
}(Logger);
|
7070
7055
|
|
7071
7056
|
/**
|
@@ -7271,7 +7256,6 @@
|
|
7271
7256
|
|
7272
7257
|
var VIDEO_CODEC_PROFILE_REPLACE = /(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;
|
7273
7258
|
var BufferController = /*#__PURE__*/function (_Logger) {
|
7274
|
-
_inheritsLoose(BufferController, _Logger);
|
7275
7259
|
function BufferController(hls, fragmentTracker) {
|
7276
7260
|
var _this;
|
7277
7261
|
_this = _Logger.call(this, 'buffer-controller', hls.logger) || this;
|
@@ -7323,9 +7307,9 @@
|
|
7323
7307
|
};
|
7324
7308
|
// Keep as arrow functions so that we can directly reference these functions directly as event listeners
|
7325
7309
|
_this._onMediaSourceOpen = function () {
|
7326
|
-
var
|
7327
|
-
media =
|
7328
|
-
mediaSource =
|
7310
|
+
var _this2 = _this,
|
7311
|
+
media = _this2.media,
|
7312
|
+
mediaSource = _this2.mediaSource;
|
7329
7313
|
_this.log('Media source opened');
|
7330
7314
|
if (media) {
|
7331
7315
|
media.removeEventListener('emptied', _this._onMediaEmptied);
|
@@ -7351,9 +7335,9 @@
|
|
7351
7335
|
_this.log('Media source ended');
|
7352
7336
|
};
|
7353
7337
|
_this._onMediaEmptied = function () {
|
7354
|
-
var
|
7355
|
-
mediaSrc =
|
7356
|
-
_objectUrl =
|
7338
|
+
var _this3 = _this,
|
7339
|
+
mediaSrc = _this3.mediaSrc,
|
7340
|
+
_objectUrl = _this3._objectUrl;
|
7357
7341
|
if (mediaSrc !== _objectUrl) {
|
7358
7342
|
_this.error("Media element src was set while attaching MediaSource (" + _objectUrl + " > " + mediaSrc + ")");
|
7359
7343
|
}
|
@@ -7365,6 +7349,7 @@
|
|
7365
7349
|
_this.registerListeners();
|
7366
7350
|
return _this;
|
7367
7351
|
}
|
7352
|
+
_inheritsLoose(BufferController, _Logger);
|
7368
7353
|
var _proto = BufferController.prototype;
|
7369
7354
|
_proto.hasSourceTypes = function hasSourceTypes() {
|
7370
7355
|
return this.getSourceBufferTypes().length > 0 || Object.keys(this.pendingTracks).length > 0;
|
@@ -7539,9 +7524,9 @@
|
|
7539
7524
|
this.hls.trigger(Events.MEDIA_DETACHED, undefined);
|
7540
7525
|
};
|
7541
7526
|
_proto.onBufferReset = function onBufferReset() {
|
7542
|
-
var
|
7527
|
+
var _this4 = this;
|
7543
7528
|
this.getSourceBufferTypes().forEach(function (type) {
|
7544
|
-
|
7529
|
+
_this4.resetBuffer(type);
|
7545
7530
|
});
|
7546
7531
|
this._initSourceBuffer();
|
7547
7532
|
this.hls.resumeBuffering();
|
@@ -7564,14 +7549,14 @@
|
|
7564
7549
|
}
|
7565
7550
|
};
|
7566
7551
|
_proto.onBufferCodecs = function onBufferCodecs(event, data) {
|
7567
|
-
var
|
7552
|
+
var _this5 = this;
|
7568
7553
|
var sourceBufferCount = this.getSourceBufferTypes().length;
|
7569
7554
|
var trackNames = Object.keys(data);
|
7570
7555
|
trackNames.forEach(function (trackName) {
|
7571
7556
|
if (sourceBufferCount) {
|
7572
7557
|
var _track$buffer;
|
7573
7558
|
// check if SourceBuffer codec needs to change
|
7574
|
-
var track =
|
7559
|
+
var track = _this5.tracks[trackName];
|
7575
7560
|
if (track && typeof ((_track$buffer = track.buffer) == null ? void 0 : _track$buffer.changeType) === 'function') {
|
7576
7561
|
var _trackCodec;
|
7577
7562
|
var _data$trackName = data[trackName],
|
@@ -7586,12 +7571,12 @@
|
|
7586
7571
|
var nextCodec = (_trackCodec = trackCodec) == null ? void 0 : _trackCodec.replace(VIDEO_CODEC_PROFILE_REPLACE, '$1');
|
7587
7572
|
if (trackCodec && currentCodec !== nextCodec) {
|
7588
7573
|
if (trackName.slice(0, 5) === 'audio') {
|
7589
|
-
trackCodec = getCodecCompatibleName(trackCodec,
|
7574
|
+
trackCodec = getCodecCompatibleName(trackCodec, _this5.appendSource);
|
7590
7575
|
}
|
7591
7576
|
var mimeType = container + ";codecs=" + trackCodec;
|
7592
|
-
|
7593
|
-
|
7594
|
-
|
7577
|
+
_this5.appendChangeType(trackName, mimeType);
|
7578
|
+
_this5.log("switching codec " + currentCodecFull + " to " + trackCodec);
|
7579
|
+
_this5.tracks[trackName] = {
|
7595
7580
|
buffer: track.buffer,
|
7596
7581
|
codec: codec,
|
7597
7582
|
container: container,
|
@@ -7603,7 +7588,7 @@
|
|
7603
7588
|
}
|
7604
7589
|
} else {
|
7605
7590
|
// if source buffer(s) not created yet, appended buffer tracks in this.pendingTracks
|
7606
|
-
|
7591
|
+
_this5.pendingTracks[trackName] = data[trackName];
|
7607
7592
|
}
|
7608
7593
|
});
|
7609
7594
|
|
@@ -7621,13 +7606,13 @@
|
|
7621
7606
|
}
|
7622
7607
|
};
|
7623
7608
|
_proto.appendChangeType = function appendChangeType(type, mimeType) {
|
7624
|
-
var
|
7609
|
+
var _this6 = this;
|
7625
7610
|
var operationQueue = this.operationQueue;
|
7626
7611
|
var operation = {
|
7627
7612
|
execute: function execute() {
|
7628
|
-
var sb =
|
7613
|
+
var sb = _this6.sourceBuffer[type];
|
7629
7614
|
if (sb) {
|
7630
|
-
|
7615
|
+
_this6.log("changing " + type + " sourceBuffer type to " + mimeType);
|
7631
7616
|
sb.changeType(mimeType);
|
7632
7617
|
}
|
7633
7618
|
operationQueue.shiftAndExecuteNext(type);
|
@@ -7635,14 +7620,14 @@
|
|
7635
7620
|
onStart: function onStart() {},
|
7636
7621
|
onComplete: function onComplete() {},
|
7637
7622
|
onError: function onError(error) {
|
7638
|
-
|
7623
|
+
_this6.warn("Failed to change " + type + " SourceBuffer type", error);
|
7639
7624
|
}
|
7640
7625
|
};
|
7641
7626
|
operationQueue.append(operation, type, !!this.pendingTracks[type]);
|
7642
7627
|
};
|
7643
7628
|
_proto.blockAudio = function blockAudio(partOrFrag) {
|
7644
7629
|
var _this$fragmentTracker,
|
7645
|
-
|
7630
|
+
_this7 = this;
|
7646
7631
|
var pStart = partOrFrag.start;
|
7647
7632
|
var pTime = pStart + partOrFrag.duration * 0.05;
|
7648
7633
|
var atGap = ((_this$fragmentTracker = this.fragmentTracker.getAppendedFrag(pStart, PlaylistLevelType.MAIN)) == null ? void 0 : _this$fragmentTracker.gap) === true;
|
@@ -7651,10 +7636,10 @@
|
|
7651
7636
|
}
|
7652
7637
|
var op = {
|
7653
7638
|
execute: function execute() {
|
7654
|
-
var
|
7655
|
-
if (
|
7656
|
-
|
7657
|
-
|
7639
|
+
var _this7$fragmentTracke;
|
7640
|
+
if (_this7.lastVideoAppendEnd > pTime || _this7.sourceBuffer.video && BufferHelper.isBuffered(_this7.sourceBuffer.video, pTime) || ((_this7$fragmentTracke = _this7.fragmentTracker.getAppendedFrag(pTime, PlaylistLevelType.MAIN)) == null ? void 0 : _this7$fragmentTracke.gap) === true) {
|
7641
|
+
_this7.blockedAudioAppend = null;
|
7642
|
+
_this7.operationQueue.shiftAndExecuteNext('audio');
|
7658
7643
|
}
|
7659
7644
|
},
|
7660
7645
|
onStart: function onStart() {},
|
@@ -7675,7 +7660,7 @@
|
|
7675
7660
|
}
|
7676
7661
|
};
|
7677
7662
|
_proto.onBufferAppending = function onBufferAppending(event, eventData) {
|
7678
|
-
var
|
7663
|
+
var _this8 = this;
|
7679
7664
|
var operationQueue = this.operationQueue,
|
7680
7665
|
tracks = this.tracks;
|
7681
7666
|
var data = eventData.data,
|
@@ -7742,16 +7727,16 @@
|
|
7742
7727
|
execute: function execute() {
|
7743
7728
|
chunkStats.executeStart = self.performance.now();
|
7744
7729
|
if (checkTimestampOffset) {
|
7745
|
-
var sb =
|
7730
|
+
var sb = _this8.sourceBuffer[type];
|
7746
7731
|
if (sb) {
|
7747
7732
|
var delta = fragStart - sb.timestampOffset;
|
7748
7733
|
if (Math.abs(delta) >= 0.1) {
|
7749
|
-
|
7734
|
+
_this8.log("Updating audio SourceBuffer timestampOffset to " + fragStart + " (delta: " + delta + ") sn: " + sn + ")");
|
7750
7735
|
sb.timestampOffset = fragStart;
|
7751
7736
|
}
|
7752
7737
|
}
|
7753
7738
|
}
|
7754
|
-
|
7739
|
+
_this8.appendExecutor(data, type);
|
7755
7740
|
},
|
7756
7741
|
onStart: function onStart() {
|
7757
7742
|
// logger.debug(`[buffer-controller]: ${type} SourceBuffer updatestart`);
|
@@ -7766,19 +7751,19 @@
|
|
7766
7751
|
if (partBuffering && partBuffering.first === 0) {
|
7767
7752
|
partBuffering.first = end;
|
7768
7753
|
}
|
7769
|
-
var sourceBuffer =
|
7754
|
+
var sourceBuffer = _this8.sourceBuffer;
|
7770
7755
|
var timeRanges = {};
|
7771
7756
|
for (var _type in sourceBuffer) {
|
7772
7757
|
timeRanges[_type] = BufferHelper.getBuffered(sourceBuffer[_type]);
|
7773
7758
|
}
|
7774
|
-
|
7759
|
+
_this8.appendErrors[type] = 0;
|
7775
7760
|
if (type === 'audio' || type === 'video') {
|
7776
|
-
|
7761
|
+
_this8.appendErrors.audiovideo = 0;
|
7777
7762
|
} else {
|
7778
|
-
|
7779
|
-
|
7763
|
+
_this8.appendErrors.audio = 0;
|
7764
|
+
_this8.appendErrors.video = 0;
|
7780
7765
|
}
|
7781
|
-
|
7766
|
+
_this8.hls.trigger(Events.BUFFER_APPENDED, {
|
7782
7767
|
type: type,
|
7783
7768
|
frag: frag,
|
7784
7769
|
part: part,
|
@@ -7806,43 +7791,43 @@
|
|
7806
7791
|
// let's stop appending any segments, and report BUFFER_FULL_ERROR error
|
7807
7792
|
event.details = ErrorDetails.BUFFER_FULL_ERROR;
|
7808
7793
|
} else {
|
7809
|
-
var appendErrorCount = ++
|
7794
|
+
var appendErrorCount = ++_this8.appendErrors[type];
|
7810
7795
|
event.details = ErrorDetails.BUFFER_APPEND_ERROR;
|
7811
7796
|
/* with UHD content, we could get loop of quota exceeded error until
|
7812
7797
|
browser is able to evict some data from sourcebuffer. Retrying can help recover.
|
7813
7798
|
*/
|
7814
|
-
|
7815
|
-
if (appendErrorCount >=
|
7799
|
+
_this8.warn("Failed " + appendErrorCount + "/" + _this8.hls.config.appendErrorMaxRetry + " times to append segment in \"" + type + "\" sourceBuffer");
|
7800
|
+
if (appendErrorCount >= _this8.hls.config.appendErrorMaxRetry) {
|
7816
7801
|
event.fatal = true;
|
7817
7802
|
}
|
7818
7803
|
}
|
7819
|
-
|
7804
|
+
_this8.hls.trigger(Events.ERROR, event);
|
7820
7805
|
}
|
7821
7806
|
};
|
7822
7807
|
operationQueue.append(operation, type, !!this.pendingTracks[type]);
|
7823
7808
|
};
|
7824
7809
|
_proto.getFlushOp = function getFlushOp(type, start, end) {
|
7825
|
-
var
|
7810
|
+
var _this9 = this;
|
7826
7811
|
return {
|
7827
7812
|
execute: function execute() {
|
7828
|
-
|
7813
|
+
_this9.removeExecutor(type, start, end);
|
7829
7814
|
},
|
7830
7815
|
onStart: function onStart() {
|
7831
7816
|
// logger.debug(`[buffer-controller]: Started flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);
|
7832
7817
|
},
|
7833
7818
|
onComplete: function onComplete() {
|
7834
7819
|
// logger.debug(`[buffer-controller]: Finished flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);
|
7835
|
-
|
7820
|
+
_this9.hls.trigger(Events.BUFFER_FLUSHED, {
|
7836
7821
|
type: type
|
7837
7822
|
});
|
7838
7823
|
},
|
7839
7824
|
onError: function onError(error) {
|
7840
|
-
|
7825
|
+
_this9.warn("Failed to remove from " + type + " SourceBuffer", error);
|
7841
7826
|
}
|
7842
7827
|
};
|
7843
7828
|
};
|
7844
7829
|
_proto.onBufferFlushing = function onBufferFlushing(event, data) {
|
7845
|
-
var
|
7830
|
+
var _this10 = this;
|
7846
7831
|
var operationQueue = this.operationQueue;
|
7847
7832
|
var type = data.type,
|
7848
7833
|
startOffset = data.startOffset,
|
@@ -7851,12 +7836,12 @@
|
|
7851
7836
|
operationQueue.append(this.getFlushOp(type, startOffset, endOffset), type);
|
7852
7837
|
} else {
|
7853
7838
|
this.getSourceBufferTypes().forEach(function (sbType) {
|
7854
|
-
operationQueue.append(
|
7839
|
+
operationQueue.append(_this10.getFlushOp(sbType, startOffset, endOffset), sbType);
|
7855
7840
|
});
|
7856
7841
|
}
|
7857
7842
|
};
|
7858
7843
|
_proto.onFragParsed = function onFragParsed(event, data) {
|
7859
|
-
var
|
7844
|
+
var _this11 = this;
|
7860
7845
|
var frag = data.frag,
|
7861
7846
|
part = data.part;
|
7862
7847
|
var buffersAppendedTo = [];
|
@@ -7878,7 +7863,7 @@
|
|
7878
7863
|
part.stats.buffering.end = now;
|
7879
7864
|
}
|
7880
7865
|
var stats = part ? part.stats : frag.stats;
|
7881
|
-
|
7866
|
+
_this11.hls.trigger(Events.FRAG_BUFFERED, {
|
7882
7867
|
frag: frag,
|
7883
7868
|
part: part,
|
7884
7869
|
stats: stats,
|
@@ -7898,17 +7883,17 @@
|
|
7898
7883
|
// an undefined data.type will mark all buffers as EOS.
|
7899
7884
|
;
|
7900
7885
|
_proto.onBufferEos = function onBufferEos(event, data) {
|
7901
|
-
var
|
7886
|
+
var _this12 = this;
|
7902
7887
|
if (data.type === 'video') {
|
7903
7888
|
this.unblockAudio();
|
7904
7889
|
}
|
7905
7890
|
var ended = this.getSourceBufferTypes().reduce(function (acc, type) {
|
7906
|
-
var sb =
|
7891
|
+
var sb = _this12.sourceBuffer[type];
|
7907
7892
|
if (sb && (!data.type || data.type === type)) {
|
7908
7893
|
sb.ending = true;
|
7909
7894
|
if (!sb.ended) {
|
7910
7895
|
sb.ended = true;
|
7911
|
-
|
7896
|
+
_this12.log(type + " sourceBuffer now EOS");
|
7912
7897
|
}
|
7913
7898
|
}
|
7914
7899
|
return acc && !!(!sb || sb.ended);
|
@@ -7916,27 +7901,27 @@
|
|
7916
7901
|
if (ended) {
|
7917
7902
|
this.log("Queueing mediaSource.endOfStream()");
|
7918
7903
|
this.blockBuffers(function () {
|
7919
|
-
|
7920
|
-
var sb =
|
7904
|
+
_this12.getSourceBufferTypes().forEach(function (type) {
|
7905
|
+
var sb = _this12.sourceBuffer[type];
|
7921
7906
|
if (sb) {
|
7922
7907
|
sb.ending = false;
|
7923
7908
|
}
|
7924
7909
|
});
|
7925
|
-
var mediaSource =
|
7910
|
+
var mediaSource = _this12.mediaSource;
|
7926
7911
|
if (!mediaSource || mediaSource.readyState !== 'open') {
|
7927
7912
|
if (mediaSource) {
|
7928
|
-
|
7913
|
+
_this12.log("Could not call mediaSource.endOfStream(). mediaSource.readyState: " + mediaSource.readyState);
|
7929
7914
|
}
|
7930
7915
|
return;
|
7931
7916
|
}
|
7932
|
-
|
7917
|
+
_this12.log("Calling mediaSource.endOfStream()");
|
7933
7918
|
// Allow this to throw and be caught by the enqueueing function
|
7934
7919
|
mediaSource.endOfStream();
|
7935
7920
|
});
|
7936
7921
|
}
|
7937
7922
|
};
|
7938
7923
|
_proto.onLevelUpdated = function onLevelUpdated(event, _ref) {
|
7939
|
-
var
|
7924
|
+
var _this13 = this;
|
7940
7925
|
var details = _ref.details;
|
7941
7926
|
if (!details.fragments.length) {
|
7942
7927
|
return;
|
@@ -7948,7 +7933,7 @@
|
|
7948
7933
|
}
|
7949
7934
|
if (this.getSourceBufferTypes().length) {
|
7950
7935
|
this.blockBuffers(function () {
|
7951
|
-
return
|
7936
|
+
return _this13.updateMediaSource(durationAndRange);
|
7952
7937
|
});
|
7953
7938
|
} else {
|
7954
7939
|
this.updateMediaSource(durationAndRange);
|
@@ -7984,7 +7969,7 @@
|
|
7984
7969
|
}
|
7985
7970
|
};
|
7986
7971
|
_proto.flushBackBuffer = function flushBackBuffer(currentTime, targetDuration, targetBackBufferPosition) {
|
7987
|
-
var
|
7972
|
+
var _this14 = this;
|
7988
7973
|
var details = this.details,
|
7989
7974
|
sourceBuffer = this.sourceBuffer;
|
7990
7975
|
var sourceBufferTypes = this.getSourceBufferTypes();
|
@@ -7994,20 +7979,20 @@
|
|
7994
7979
|
var buffered = BufferHelper.getBuffered(sb);
|
7995
7980
|
// when target buffer start exceeds actual buffer start
|
7996
7981
|
if (buffered.length > 0 && targetBackBufferPosition > buffered.start(0)) {
|
7997
|
-
|
7982
|
+
_this14.hls.trigger(Events.BACK_BUFFER_REACHED, {
|
7998
7983
|
bufferEnd: targetBackBufferPosition
|
7999
7984
|
});
|
8000
7985
|
|
8001
7986
|
// Support for deprecated event:
|
8002
7987
|
if (details != null && details.live) {
|
8003
|
-
|
7988
|
+
_this14.hls.trigger(Events.LIVE_BACK_BUFFER_REACHED, {
|
8004
7989
|
bufferEnd: targetBackBufferPosition
|
8005
7990
|
});
|
8006
7991
|
} else if (sb.ended && buffered.end(buffered.length - 1) - currentTime < targetDuration * 2) {
|
8007
|
-
|
7992
|
+
_this14.log("Cannot flush " + type + " back buffer while SourceBuffer is in ended state");
|
8008
7993
|
return;
|
8009
7994
|
}
|
8010
|
-
|
7995
|
+
_this14.hls.trigger(Events.BUFFER_FLUSHING, {
|
8011
7996
|
startOffset: 0,
|
8012
7997
|
endOffset: targetBackBufferPosition,
|
8013
7998
|
type: type
|
@@ -8017,7 +8002,7 @@
|
|
8017
8002
|
});
|
8018
8003
|
};
|
8019
8004
|
_proto.flushFrontBuffer = function flushFrontBuffer(currentTime, targetDuration, targetFrontBufferPosition) {
|
8020
|
-
var
|
8005
|
+
var _this15 = this;
|
8021
8006
|
var sourceBuffer = this.sourceBuffer;
|
8022
8007
|
var sourceBufferTypes = this.getSourceBufferTypes();
|
8023
8008
|
sourceBufferTypes.forEach(function (type) {
|
@@ -8035,10 +8020,10 @@
|
|
8035
8020
|
if (targetFrontBufferPosition > bufferStart || currentTime >= bufferStart && currentTime <= bufferEnd) {
|
8036
8021
|
return;
|
8037
8022
|
} else if (sb.ended && currentTime - bufferEnd < 2 * targetDuration) {
|
8038
|
-
|
8023
|
+
_this15.log("Cannot flush " + type + " front buffer while SourceBuffer is in ended state");
|
8039
8024
|
return;
|
8040
8025
|
}
|
8041
|
-
|
8026
|
+
_this15.hls.trigger(Events.BUFFER_FLUSHING, {
|
8042
8027
|
startOffset: bufferStart,
|
8043
8028
|
endOffset: Infinity,
|
8044
8029
|
type: type
|
@@ -8138,7 +8123,7 @@
|
|
8138
8123
|
}
|
8139
8124
|
};
|
8140
8125
|
_proto.createSourceBuffers = function createSourceBuffers(tracks) {
|
8141
|
-
var
|
8126
|
+
var _this16 = this;
|
8142
8127
|
var sourceBuffer = this.sourceBuffer,
|
8143
8128
|
mediaSource = this.mediaSource;
|
8144
8129
|
if (!mediaSource) {
|
@@ -8154,30 +8139,30 @@
|
|
8154
8139
|
var codec = track.levelCodec || track.codec;
|
8155
8140
|
if (codec) {
|
8156
8141
|
if (trackName.slice(0, 5) === 'audio') {
|
8157
|
-
codec = getCodecCompatibleName(codec,
|
8142
|
+
codec = getCodecCompatibleName(codec, _this16.appendSource);
|
8158
8143
|
}
|
8159
8144
|
}
|
8160
8145
|
var mimeType = track.container + ";codecs=" + codec;
|
8161
|
-
|
8146
|
+
_this16.log("creating sourceBuffer(" + mimeType + ")");
|
8162
8147
|
try {
|
8163
8148
|
var sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType);
|
8164
8149
|
var sbName = trackName;
|
8165
|
-
|
8166
|
-
|
8167
|
-
|
8150
|
+
_this16.addBufferListener(sbName, 'updatestart', _this16._onSBUpdateStart);
|
8151
|
+
_this16.addBufferListener(sbName, 'updateend', _this16._onSBUpdateEnd);
|
8152
|
+
_this16.addBufferListener(sbName, 'error', _this16._onSBUpdateError);
|
8168
8153
|
// ManagedSourceBuffer bufferedchange event
|
8169
|
-
if (
|
8170
|
-
|
8154
|
+
if (_this16.appendSource) {
|
8155
|
+
_this16.addBufferListener(sbName, 'bufferedchange', function (type, event) {
|
8171
8156
|
// If media was ejected check for a change. Added ranges are redundant with changes on 'updateend' event.
|
8172
8157
|
var removedRanges = event.removedRanges;
|
8173
8158
|
if (removedRanges != null && removedRanges.length) {
|
8174
|
-
|
8159
|
+
_this16.hls.trigger(Events.BUFFER_FLUSHED, {
|
8175
8160
|
type: trackName
|
8176
8161
|
});
|
8177
8162
|
}
|
8178
8163
|
});
|
8179
8164
|
}
|
8180
|
-
|
8165
|
+
_this16.tracks[trackName] = {
|
8181
8166
|
buffer: sb,
|
8182
8167
|
codec: codec,
|
8183
8168
|
container: track.container,
|
@@ -8186,8 +8171,8 @@
|
|
8186
8171
|
id: track.id
|
8187
8172
|
};
|
8188
8173
|
} catch (err) {
|
8189
|
-
|
8190
|
-
|
8174
|
+
_this16.error("error while trying to add sourceBuffer: " + err.message);
|
8175
|
+
_this16.hls.trigger(Events.ERROR, {
|
8191
8176
|
type: ErrorTypes.MEDIA_ERROR,
|
8192
8177
|
details: ErrorDetails.BUFFER_ADD_CODEC_ERROR,
|
8193
8178
|
fatal: false,
|
@@ -8285,7 +8270,7 @@
|
|
8285
8270
|
// upon completion, since we already do it here
|
8286
8271
|
;
|
8287
8272
|
_proto.blockBuffers = function blockBuffers(onUnblocked, buffers) {
|
8288
|
-
var
|
8273
|
+
var _this17 = this;
|
8289
8274
|
if (buffers === void 0) {
|
8290
8275
|
buffers = this.getSourceBufferTypes();
|
8291
8276
|
}
|
@@ -8308,7 +8293,7 @@
|
|
8308
8293
|
// logger.debug(`[buffer-controller]: Blocking operation resolved; unblocking ${buffers} SourceBuffer`);
|
8309
8294
|
onUnblocked();
|
8310
8295
|
buffers.forEach(function (type, i) {
|
8311
|
-
var sb =
|
8296
|
+
var sb = _this17.sourceBuffer[type];
|
8312
8297
|
// Only cycle the queue if the SB is not updating. There's a bug in Chrome which sets the SB updating flag to
|
8313
8298
|
// true when changing the MediaSource duration (https://bugs.chromium.org/p/chromium/issues/detail?id=959359&can=2&q=mediasource%20duration)
|
8314
8299
|
// While this is a workaround, it's probably useful to have around
|
@@ -8342,7 +8327,7 @@
|
|
8342
8327
|
buffer.removeEventListener(l.event, l.listener);
|
8343
8328
|
});
|
8344
8329
|
};
|
8345
|
-
_createClass(BufferController, [{
|
8330
|
+
return _createClass(BufferController, [{
|
8346
8331
|
key: "mediaSrc",
|
8347
8332
|
get: function get() {
|
8348
8333
|
var _this$media;
|
@@ -8350,7 +8335,6 @@
|
|
8350
8335
|
return media == null ? void 0 : media.src;
|
8351
8336
|
}
|
8352
8337
|
}]);
|
8353
|
-
return BufferController;
|
8354
8338
|
}(Logger);
|
8355
8339
|
function removeSourceChildren(node) {
|
8356
8340
|
var sourceChildren = node.querySelectorAll('source');
|
@@ -8580,7 +8564,7 @@
|
|
8580
8564
|
}
|
8581
8565
|
return maxLevelIndex;
|
8582
8566
|
};
|
8583
|
-
_createClass(CapLevelController, [{
|
8567
|
+
return _createClass(CapLevelController, [{
|
8584
8568
|
key: "mediaWidth",
|
8585
8569
|
get: function get() {
|
8586
8570
|
return this.getDimensions().width * this.contentScaleFactor;
|
@@ -8604,7 +8588,6 @@
|
|
8604
8588
|
return pixelRatio;
|
8605
8589
|
}
|
8606
8590
|
}]);
|
8607
|
-
return CapLevelController;
|
8608
8591
|
}();
|
8609
8592
|
|
8610
8593
|
var FPSController = /*#__PURE__*/function () {
|
@@ -8709,7 +8692,6 @@
|
|
8709
8692
|
|
8710
8693
|
var PATHWAY_PENALTY_DURATION_MS = 300000;
|
8711
8694
|
var ContentSteeringController = /*#__PURE__*/function (_Logger) {
|
8712
|
-
_inheritsLoose(ContentSteeringController, _Logger);
|
8713
8695
|
function ContentSteeringController(hls) {
|
8714
8696
|
var _this;
|
8715
8697
|
_this = _Logger.call(this, 'content-steering', hls.logger) || this;
|
@@ -8731,6 +8713,7 @@
|
|
8731
8713
|
_this.registerListeners();
|
8732
8714
|
return _this;
|
8733
8715
|
}
|
8716
|
+
_inheritsLoose(ContentSteeringController, _Logger);
|
8734
8717
|
var _proto = ContentSteeringController.prototype;
|
8735
8718
|
_proto.registerListeners = function registerListeners() {
|
8736
8719
|
var hls = this.hls;
|
@@ -9659,7 +9642,6 @@
|
|
9659
9642
|
return new self.Request(context.url, initParams);
|
9660
9643
|
}
|
9661
9644
|
var FetchError = /*#__PURE__*/function (_Error) {
|
9662
|
-
_inheritsLoose(FetchError, _Error);
|
9663
9645
|
function FetchError(message, code, details) {
|
9664
9646
|
var _this2;
|
9665
9647
|
_this2 = _Error.call(this, message) || this;
|
@@ -9669,6 +9651,7 @@
|
|
9669
9651
|
_this2.details = details;
|
9670
9652
|
return _this2;
|
9671
9653
|
}
|
9654
|
+
_inheritsLoose(FetchError, _Error);
|
9672
9655
|
return FetchError;
|
9673
9656
|
}( /*#__PURE__*/_wrapNativeSuper(Error));
|
9674
9657
|
|
@@ -10058,7 +10041,6 @@
|
|
10058
10041
|
}
|
10059
10042
|
|
10060
10043
|
var LevelController = /*#__PURE__*/function (_BasePlaylistControll) {
|
10061
|
-
_inheritsLoose(LevelController, _BasePlaylistControll);
|
10062
10044
|
function LevelController(hls, contentSteeringController) {
|
10063
10045
|
var _this;
|
10064
10046
|
_this = _BasePlaylistControll.call(this, hls, 'level-controller') || this;
|
@@ -10075,6 +10057,7 @@
|
|
10075
10057
|
_this._registerListeners();
|
10076
10058
|
return _this;
|
10077
10059
|
}
|
10060
|
+
_inheritsLoose(LevelController, _BasePlaylistControll);
|
10078
10061
|
var _proto = LevelController.prototype;
|
10079
10062
|
_proto._registerListeners = function _registerListeners() {
|
10080
10063
|
var hls = this.hls;
|
@@ -10458,7 +10441,7 @@
|
|
10458
10441
|
});
|
10459
10442
|
}
|
10460
10443
|
};
|
10461
|
-
_createClass(LevelController, [{
|
10444
|
+
return _createClass(LevelController, [{
|
10462
10445
|
key: "levels",
|
10463
10446
|
get: function get() {
|
10464
10447
|
if (this._levels.length === 0) {
|
@@ -10594,7 +10577,6 @@
|
|
10594
10577
|
}
|
10595
10578
|
}
|
10596
10579
|
}]);
|
10597
|
-
return LevelController;
|
10598
10580
|
}(BasePlaylistController);
|
10599
10581
|
function assignTrackIdsByGroup(tracks) {
|
10600
10582
|
var groups = {};
|
@@ -11327,7 +11309,6 @@
|
|
11327
11309
|
return method === 'AES-128' || method === 'AES-256';
|
11328
11310
|
}
|
11329
11311
|
var LoadError = /*#__PURE__*/function (_Error) {
|
11330
|
-
_inheritsLoose(LoadError, _Error);
|
11331
11312
|
function LoadError(data) {
|
11332
11313
|
var _this3;
|
11333
11314
|
_this3 = _Error.call(this, data.error.message) || this;
|
@@ -11335,6 +11316,7 @@
|
|
11335
11316
|
_this3.data = data;
|
11336
11317
|
return _this3;
|
11337
11318
|
}
|
11319
|
+
_inheritsLoose(LoadError, _Error);
|
11338
11320
|
return LoadError;
|
11339
11321
|
}( /*#__PURE__*/_wrapNativeSuper(Error));
|
11340
11322
|
|
@@ -11618,7 +11600,6 @@
|
|
11618
11600
|
* task processing on the next main loop iteration (also known as "next tick" in the Node/JS runtime lingo).
|
11619
11601
|
*/
|
11620
11602
|
var TaskLoop = /*#__PURE__*/function (_Logger) {
|
11621
|
-
_inheritsLoose(TaskLoop, _Logger);
|
11622
11603
|
function TaskLoop(label, logger) {
|
11623
11604
|
var _this;
|
11624
11605
|
_this = _Logger.call(this, label, logger) || this;
|
@@ -11626,9 +11607,10 @@
|
|
11626
11607
|
_this._tickTimer = null;
|
11627
11608
|
_this._tickInterval = null;
|
11628
11609
|
_this._tickCallCount = 0;
|
11629
|
-
_this._boundTick = _this.tick.bind(
|
11610
|
+
_this._boundTick = _this.tick.bind(_this);
|
11630
11611
|
return _this;
|
11631
11612
|
}
|
11613
|
+
_inheritsLoose(TaskLoop, _Logger);
|
11632
11614
|
var _proto = TaskLoop.prototype;
|
11633
11615
|
_proto.destroy = function destroy() {
|
11634
11616
|
this.onHandlerDestroying();
|
@@ -12402,7 +12384,6 @@
|
|
12402
12384
|
WAITING_LEVEL: 'WAITING_LEVEL'
|
12403
12385
|
};
|
12404
12386
|
var BaseStreamController = /*#__PURE__*/function (_TaskLoop) {
|
12405
|
-
_inheritsLoose(BaseStreamController, _TaskLoop);
|
12406
12387
|
function BaseStreamController(hls, fragmentTracker, keyLoader, logPrefix, playlistType) {
|
12407
12388
|
var _this;
|
12408
12389
|
_this = _TaskLoop.call(this, logPrefix, hls.logger) || this;
|
@@ -12433,12 +12414,12 @@
|
|
12433
12414
|
_this.buffering = true;
|
12434
12415
|
_this.loadingParts = false;
|
12435
12416
|
_this.onMediaSeeking = function () {
|
12436
|
-
var
|
12437
|
-
config =
|
12438
|
-
fragCurrent =
|
12439
|
-
media =
|
12440
|
-
mediaBuffer =
|
12441
|
-
state =
|
12417
|
+
var _this2 = _this,
|
12418
|
+
config = _this2.config,
|
12419
|
+
fragCurrent = _this2.fragCurrent,
|
12420
|
+
media = _this2.media,
|
12421
|
+
mediaBuffer = _this2.mediaBuffer,
|
12422
|
+
state = _this2.state;
|
12442
12423
|
var currentTime = media ? media.currentTime : 0;
|
12443
12424
|
var bufferInfo = BufferHelper.bufferInfo(mediaBuffer ? mediaBuffer : media, currentTime, config.maxBufferHole);
|
12444
12425
|
_this.log("media seeking to " + (isFiniteNumber(currentTime) ? currentTime.toFixed(3) : currentTime) + ", state: " + state);
|
@@ -12503,6 +12484,7 @@
|
|
12503
12484
|
_this.decrypter = new Decrypter(hls.config);
|
12504
12485
|
return _this;
|
12505
12486
|
}
|
12487
|
+
_inheritsLoose(BaseStreamController, _TaskLoop);
|
12506
12488
|
var _proto = BaseStreamController.prototype;
|
12507
12489
|
_proto.registerListeners = function registerListeners() {
|
12508
12490
|
var hls = this.hls;
|
@@ -12636,42 +12618,42 @@
|
|
12636
12618
|
this._loadFragForPlayback(frag, level, targetBufferTime);
|
12637
12619
|
};
|
12638
12620
|
_proto._loadFragForPlayback = function _loadFragForPlayback(frag, level, targetBufferTime) {
|
12639
|
-
var
|
12621
|
+
var _this3 = this;
|
12640
12622
|
var progressCallback = function progressCallback(data) {
|
12641
|
-
if (
|
12642
|
-
|
12643
|
-
|
12623
|
+
if (_this3.fragContextChanged(frag)) {
|
12624
|
+
_this3.warn("Fragment " + frag.sn + (data.part ? ' p: ' + data.part.index : '') + " of level " + frag.level + " was dropped during download.");
|
12625
|
+
_this3.fragmentTracker.removeFragment(frag);
|
12644
12626
|
return;
|
12645
12627
|
}
|
12646
12628
|
frag.stats.chunkCount++;
|
12647
|
-
|
12629
|
+
_this3._handleFragmentLoadProgress(data);
|
12648
12630
|
};
|
12649
12631
|
this._doFragLoad(frag, level, targetBufferTime, progressCallback).then(function (data) {
|
12650
12632
|
if (!data) {
|
12651
12633
|
// if we're here we probably needed to backtrack or are waiting for more parts
|
12652
12634
|
return;
|
12653
12635
|
}
|
12654
|
-
var state =
|
12655
|
-
if (
|
12656
|
-
if (state === State.FRAG_LOADING || !
|
12657
|
-
|
12658
|
-
|
12636
|
+
var state = _this3.state;
|
12637
|
+
if (_this3.fragContextChanged(frag)) {
|
12638
|
+
if (state === State.FRAG_LOADING || !_this3.fragCurrent && state === State.PARSING) {
|
12639
|
+
_this3.fragmentTracker.removeFragment(frag);
|
12640
|
+
_this3.state = State.IDLE;
|
12659
12641
|
}
|
12660
12642
|
return;
|
12661
12643
|
}
|
12662
12644
|
if ('payload' in data) {
|
12663
|
-
|
12664
|
-
|
12645
|
+
_this3.log("Loaded fragment " + frag.sn + " of level " + frag.level);
|
12646
|
+
_this3.hls.trigger(Events.FRAG_LOADED, data);
|
12665
12647
|
}
|
12666
12648
|
|
12667
12649
|
// Pass through the whole payload; controllers not implementing progressive loading receive data from this callback
|
12668
|
-
|
12650
|
+
_this3._handleFragmentLoadComplete(data);
|
12669
12651
|
}).catch(function (reason) {
|
12670
|
-
if (
|
12652
|
+
if (_this3.state === State.STOPPED || _this3.state === State.ERROR) {
|
12671
12653
|
return;
|
12672
12654
|
}
|
12673
|
-
|
12674
|
-
|
12655
|
+
_this3.warn(reason);
|
12656
|
+
_this3.resetFragmentLoading(frag);
|
12675
12657
|
});
|
12676
12658
|
};
|
12677
12659
|
_proto.clearTrackerIfNeeded = function clearTrackerIfNeeded(frag) {
|
@@ -12734,14 +12716,14 @@
|
|
12734
12716
|
this.hls.trigger(Events.BUFFER_FLUSHING, flushScope);
|
12735
12717
|
};
|
12736
12718
|
_proto._loadInitSegment = function _loadInitSegment(frag, level) {
|
12737
|
-
var
|
12719
|
+
var _this4 = this;
|
12738
12720
|
this._doFragLoad(frag, level).then(function (data) {
|
12739
|
-
if (!data ||
|
12721
|
+
if (!data || _this4.fragContextChanged(frag) || !_this4.levels) {
|
12740
12722
|
throw new Error('init load aborted');
|
12741
12723
|
}
|
12742
12724
|
return data;
|
12743
12725
|
}).then(function (data) {
|
12744
|
-
var hls =
|
12726
|
+
var hls = _this4.hls;
|
12745
12727
|
var payload = data.payload;
|
12746
12728
|
var decryptData = frag.decryptdata;
|
12747
12729
|
|
@@ -12749,7 +12731,7 @@
|
|
12749
12731
|
if (payload && payload.byteLength > 0 && decryptData != null && decryptData.key && decryptData.iv && isFullSegmentEncryption(decryptData.method)) {
|
12750
12732
|
var startTime = self.performance.now();
|
12751
12733
|
// decrypt init segment data
|
12752
|
-
return
|
12734
|
+
return _this4.decrypter.decrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer, getAesModeFromFullSegmentMethod(decryptData.method)).catch(function (err) {
|
12753
12735
|
hls.trigger(Events.ERROR, {
|
12754
12736
|
type: ErrorTypes.MEDIA_ERROR,
|
12755
12737
|
details: ErrorDetails.FRAG_DECRYPT_ERROR,
|
@@ -12770,16 +12752,16 @@
|
|
12770
12752
|
}
|
12771
12753
|
});
|
12772
12754
|
data.payload = decryptedData;
|
12773
|
-
return
|
12755
|
+
return _this4.completeInitSegmentLoad(data);
|
12774
12756
|
});
|
12775
12757
|
}
|
12776
|
-
return
|
12758
|
+
return _this4.completeInitSegmentLoad(data);
|
12777
12759
|
}).catch(function (reason) {
|
12778
|
-
if (
|
12760
|
+
if (_this4.state === State.STOPPED || _this4.state === State.ERROR) {
|
12779
12761
|
return;
|
12780
12762
|
}
|
12781
|
-
|
12782
|
-
|
12763
|
+
_this4.warn(reason);
|
12764
|
+
_this4.resetFragmentLoading(frag);
|
12783
12765
|
});
|
12784
12766
|
};
|
12785
12767
|
_proto.completeInitSegmentLoad = function completeInitSegmentLoad(data) {
|
@@ -12854,7 +12836,7 @@
|
|
12854
12836
|
_proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(frag) {};
|
12855
12837
|
_proto._doFragLoad = function _doFragLoad(frag, level, targetBufferTime, progressCallback) {
|
12856
12838
|
var _frag$decryptdata,
|
12857
|
-
|
12839
|
+
_this5 = this;
|
12858
12840
|
if (targetBufferTime === void 0) {
|
12859
12841
|
targetBufferTime = null;
|
12860
12842
|
}
|
@@ -12868,10 +12850,10 @@
|
|
12868
12850
|
this.state = State.KEY_LOADING;
|
12869
12851
|
this.fragCurrent = frag;
|
12870
12852
|
keyLoadingPromise = this.keyLoader.load(frag).then(function (keyLoadedData) {
|
12871
|
-
if (!
|
12872
|
-
|
12873
|
-
if (
|
12874
|
-
|
12853
|
+
if (!_this5.fragContextChanged(keyLoadedData.frag)) {
|
12854
|
+
_this5.hls.trigger(Events.KEY_LOADED, keyLoadedData);
|
12855
|
+
if (_this5.state === State.KEY_LOADING) {
|
12856
|
+
_this5.state = State.IDLE;
|
12875
12857
|
}
|
12876
12858
|
return keyLoadedData;
|
12877
12859
|
}
|
@@ -12909,16 +12891,16 @@
|
|
12909
12891
|
var _result;
|
12910
12892
|
if (keyLoadingPromise) {
|
12911
12893
|
_result = keyLoadingPromise.then(function (keyLoadedData) {
|
12912
|
-
if (!keyLoadedData ||
|
12894
|
+
if (!keyLoadedData || _this5.fragContextChanged(keyLoadedData.frag)) {
|
12913
12895
|
return null;
|
12914
12896
|
}
|
12915
|
-
return
|
12897
|
+
return _this5.doFragPartsLoad(frag, part, level, progressCallback);
|
12916
12898
|
}).catch(function (error) {
|
12917
|
-
return
|
12899
|
+
return _this5.handleFragLoadError(error);
|
12918
12900
|
});
|
12919
12901
|
} else {
|
12920
12902
|
_result = this.doFragPartsLoad(frag, part, level, progressCallback).catch(function (error) {
|
12921
|
-
return
|
12903
|
+
return _this5.handleFragLoadError(error);
|
12922
12904
|
});
|
12923
12905
|
}
|
12924
12906
|
this.hls.trigger(Events.FRAG_LOADING, {
|
@@ -12955,12 +12937,12 @@
|
|
12955
12937
|
var result;
|
12956
12938
|
if (dataOnProgress && keyLoadingPromise) {
|
12957
12939
|
result = keyLoadingPromise.then(function (keyLoadedData) {
|
12958
|
-
if (!keyLoadedData ||
|
12940
|
+
if (!keyLoadedData || _this5.fragContextChanged(keyLoadedData == null ? void 0 : keyLoadedData.frag)) {
|
12959
12941
|
return null;
|
12960
12942
|
}
|
12961
|
-
return
|
12943
|
+
return _this5.fragmentLoader.load(frag, progressCallback);
|
12962
12944
|
}).catch(function (error) {
|
12963
|
-
return
|
12945
|
+
return _this5.handleFragLoadError(error);
|
12964
12946
|
});
|
12965
12947
|
} else {
|
12966
12948
|
// load unencrypted fragment data with progress event,
|
@@ -12972,7 +12954,7 @@
|
|
12972
12954
|
}
|
12973
12955
|
return fragLoadedData;
|
12974
12956
|
}).catch(function (error) {
|
12975
|
-
return
|
12957
|
+
return _this5.handleFragLoadError(error);
|
12976
12958
|
});
|
12977
12959
|
}
|
12978
12960
|
this.hls.trigger(Events.FRAG_LOADING, {
|
@@ -12985,16 +12967,16 @@
|
|
12985
12967
|
return result;
|
12986
12968
|
};
|
12987
12969
|
_proto.doFragPartsLoad = function doFragPartsLoad(frag, fromPart, level, progressCallback) {
|
12988
|
-
var
|
12970
|
+
var _this6 = this;
|
12989
12971
|
return new Promise(function (resolve, reject) {
|
12990
12972
|
var _level$details;
|
12991
12973
|
var partsLoaded = [];
|
12992
12974
|
var initialPartList = (_level$details = level.details) == null ? void 0 : _level$details.partList;
|
12993
12975
|
var loadPart = function loadPart(part) {
|
12994
|
-
|
12976
|
+
_this6.fragmentLoader.loadPart(frag, part, progressCallback).then(function (partLoadedData) {
|
12995
12977
|
partsLoaded[part.index] = partLoadedData;
|
12996
12978
|
var loadedPart = partLoadedData.part;
|
12997
|
-
|
12979
|
+
_this6.hls.trigger(Events.FRAG_LOADED, partLoadedData);
|
12998
12980
|
var nextPart = getPartWith(level, frag.sn, part.index + 1) || findPart(initialPartList, frag.sn, part.index + 1);
|
12999
12981
|
if (nextPart) {
|
13000
12982
|
loadPart(nextPart);
|
@@ -13638,7 +13620,7 @@
|
|
13638
13620
|
this.fragmentTracker.removeFragmentsInRange(start, Infinity, this.playlistType, false, true);
|
13639
13621
|
};
|
13640
13622
|
_proto.updateLevelTiming = function updateLevelTiming(frag, part, level, partial) {
|
13641
|
-
var
|
13623
|
+
var _this7 = this,
|
13642
13624
|
_this$transmuxer;
|
13643
13625
|
var details = level.details;
|
13644
13626
|
if (!details) {
|
@@ -13653,11 +13635,11 @@
|
|
13653
13635
|
// Destroy the transmuxer after it's next time offset failed to advance because duration was <= 0.
|
13654
13636
|
// The new transmuxer will be configured with a time offset matching the next fragment start,
|
13655
13637
|
// preventing the timeline from shifting.
|
13656
|
-
|
13638
|
+
_this7.warn("Could not parse fragment " + frag.sn + " " + type + " duration reliably (" + parsedDuration + ")");
|
13657
13639
|
return result || false;
|
13658
13640
|
}
|
13659
13641
|
var drift = partial ? 0 : updateFragPTSDTS(details, frag, info.startPTS, info.endPTS, info.startDTS, info.endDTS);
|
13660
|
-
|
13642
|
+
_this7.hls.trigger(Events.LEVEL_PTS_UPDATED, {
|
13661
13643
|
details: details,
|
13662
13644
|
level: level,
|
13663
13645
|
drift: drift,
|
@@ -13714,7 +13696,7 @@
|
|
13714
13696
|
this.resetLoadingState();
|
13715
13697
|
}
|
13716
13698
|
};
|
13717
|
-
_createClass(BaseStreamController, [{
|
13699
|
+
return _createClass(BaseStreamController, [{
|
13718
13700
|
key: "state",
|
13719
13701
|
get: function get() {
|
13720
13702
|
return this._state;
|
@@ -13727,7 +13709,6 @@
|
|
13727
13709
|
}
|
13728
13710
|
}
|
13729
13711
|
}]);
|
13730
|
-
return BaseStreamController;
|
13731
13712
|
}(TaskLoop);
|
13732
13713
|
|
13733
13714
|
function getSourceBuffer() {
|
@@ -14315,7 +14296,6 @@
|
|
14315
14296
|
}
|
14316
14297
|
|
14317
14298
|
var AACDemuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {
|
14318
|
-
_inheritsLoose(AACDemuxer, _BaseAudioDemuxer);
|
14319
14299
|
function AACDemuxer(observer, config) {
|
14320
14300
|
var _this;
|
14321
14301
|
_this = _BaseAudioDemuxer.call(this) || this;
|
@@ -14325,6 +14305,7 @@
|
|
14325
14305
|
_this.config = config;
|
14326
14306
|
return _this;
|
14327
14307
|
}
|
14308
|
+
_inheritsLoose(AACDemuxer, _BaseAudioDemuxer);
|
14328
14309
|
var _proto = AACDemuxer.prototype;
|
14329
14310
|
_proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {
|
14330
14311
|
_BaseAudioDemuxer.prototype.resetInitSegment.call(this, initSegment, audioCodec, videoCodec, trackDuration);
|
@@ -14848,10 +14829,10 @@
|
|
14848
14829
|
}();
|
14849
14830
|
|
14850
14831
|
var AvcVideoParser = /*#__PURE__*/function (_BaseVideoParser) {
|
14851
|
-
_inheritsLoose(AvcVideoParser, _BaseVideoParser);
|
14852
14832
|
function AvcVideoParser() {
|
14853
14833
|
return _BaseVideoParser.apply(this, arguments) || this;
|
14854
14834
|
}
|
14835
|
+
_inheritsLoose(AvcVideoParser, _BaseVideoParser);
|
14855
14836
|
var _proto = AvcVideoParser.prototype;
|
14856
14837
|
_proto.parsePES = function parsePES(track, textTrack, pes, last, duration) {
|
14857
14838
|
var _this = this;
|
@@ -16082,10 +16063,10 @@
|
|
16082
16063
|
}
|
16083
16064
|
|
16084
16065
|
var MP3Demuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {
|
16085
|
-
_inheritsLoose(MP3Demuxer, _BaseAudioDemuxer);
|
16086
16066
|
function MP3Demuxer() {
|
16087
16067
|
return _BaseAudioDemuxer.apply(this, arguments) || this;
|
16088
16068
|
}
|
16069
|
+
_inheritsLoose(MP3Demuxer, _BaseAudioDemuxer);
|
16089
16070
|
var _proto = MP3Demuxer.prototype;
|
16090
16071
|
_proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {
|
16091
16072
|
_BaseAudioDemuxer.prototype.resetInitSegment.call(this, initSegment, audioCodec, videoCodec, trackDuration);
|
@@ -19149,7 +19130,6 @@
|
|
19149
19130
|
var SKIP_BUFFER_HOLE_STEP_SECONDS = 0.1;
|
19150
19131
|
var SKIP_BUFFER_RANGE_START = 0.05;
|
19151
19132
|
var GapController = /*#__PURE__*/function (_Logger) {
|
19152
|
-
_inheritsLoose(GapController, _Logger);
|
19153
19133
|
function GapController(config, media, fragmentTracker, hls) {
|
19154
19134
|
var _this;
|
19155
19135
|
_this = _Logger.call(this, 'gap-controller', hls.logger) || this;
|
@@ -19169,6 +19149,7 @@
|
|
19169
19149
|
_this.hls = hls;
|
19170
19150
|
return _this;
|
19171
19151
|
}
|
19152
|
+
_inheritsLoose(GapController, _Logger);
|
19172
19153
|
var _proto = GapController.prototype;
|
19173
19154
|
_proto.destroy = function destroy() {
|
19174
19155
|
this.media = null;
|
@@ -19473,7 +19454,6 @@
|
|
19473
19454
|
|
19474
19455
|
var TICK_INTERVAL = 100; // how often to tick in ms
|
19475
19456
|
var StreamController = /*#__PURE__*/function (_BaseStreamController) {
|
19476
|
-
_inheritsLoose(StreamController, _BaseStreamController);
|
19477
19457
|
function StreamController(hls, fragmentTracker, keyLoader) {
|
19478
19458
|
var _this;
|
19479
19459
|
_this = _BaseStreamController.call(this, hls, fragmentTracker, keyLoader, 'stream-controller', PlaylistLevelType.MAIN) || this;
|
@@ -19513,6 +19493,7 @@
|
|
19513
19493
|
_this.registerListeners();
|
19514
19494
|
return _this;
|
19515
19495
|
}
|
19496
|
+
_inheritsLoose(StreamController, _BaseStreamController);
|
19516
19497
|
var _proto = StreamController.prototype;
|
19517
19498
|
_proto.registerListeners = function registerListeners() {
|
19518
19499
|
_BaseStreamController.prototype.registerListeners.call(this);
|
@@ -20528,7 +20509,7 @@
|
|
20528
20509
|
}
|
20529
20510
|
}
|
20530
20511
|
};
|
20531
|
-
_createClass(StreamController, [{
|
20512
|
+
return _createClass(StreamController, [{
|
20532
20513
|
key: "maxBufferLength",
|
20533
20514
|
get: function get() {
|
20534
20515
|
var levels = this.levels,
|
@@ -20595,7 +20576,6 @@
|
|
20595
20576
|
return this._forceStartLoad;
|
20596
20577
|
}
|
20597
20578
|
}]);
|
20598
|
-
return StreamController;
|
20599
20579
|
}(BaseStreamController);
|
20600
20580
|
|
20601
20581
|
/**
|
@@ -20603,26 +20583,6 @@
|
|
20603
20583
|
* @public
|
20604
20584
|
*/
|
20605
20585
|
var Hls = /*#__PURE__*/function () {
|
20606
|
-
/**
|
20607
|
-
* Check if the required MediaSource Extensions are available.
|
20608
|
-
*/
|
20609
|
-
Hls.isMSESupported = function isMSESupported$1() {
|
20610
|
-
return isMSESupported();
|
20611
|
-
}
|
20612
|
-
|
20613
|
-
/**
|
20614
|
-
* Check if MediaSource Extensions are available and isTypeSupported checks pass for any baseline codecs.
|
20615
|
-
*/;
|
20616
|
-
Hls.isSupported = function isSupported$1() {
|
20617
|
-
return isSupported();
|
20618
|
-
}
|
20619
|
-
|
20620
|
-
/**
|
20621
|
-
* Get the MediaSource global used for MSE playback (ManagedMediaSource, MediaSource, or WebKitMediaSource).
|
20622
|
-
*/;
|
20623
|
-
Hls.getMediaSource = function getMediaSource$1() {
|
20624
|
-
return getMediaSource();
|
20625
|
-
};
|
20626
20586
|
/**
|
20627
20587
|
* Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.
|
20628
20588
|
* @param userConfig - Configuration options applied over `Hls.DefaultConfig`
|
@@ -20725,6 +20685,26 @@
|
|
20725
20685
|
this.on(Events.ERROR, onErrorOut, errorController);
|
20726
20686
|
}
|
20727
20687
|
}
|
20688
|
+
/**
|
20689
|
+
* Check if the required MediaSource Extensions are available.
|
20690
|
+
*/
|
20691
|
+
Hls.isMSESupported = function isMSESupported$1() {
|
20692
|
+
return isMSESupported();
|
20693
|
+
}
|
20694
|
+
|
20695
|
+
/**
|
20696
|
+
* Check if MediaSource Extensions are available and isTypeSupported checks pass for any baseline codecs.
|
20697
|
+
*/;
|
20698
|
+
Hls.isSupported = function isSupported$1() {
|
20699
|
+
return isSupported();
|
20700
|
+
}
|
20701
|
+
|
20702
|
+
/**
|
20703
|
+
* Get the MediaSource global used for MSE playback (ManagedMediaSource, MediaSource, or WebKitMediaSource).
|
20704
|
+
*/;
|
20705
|
+
Hls.getMediaSource = function getMediaSource$1() {
|
20706
|
+
return getMediaSource();
|
20707
|
+
};
|
20728
20708
|
var _proto = Hls.prototype;
|
20729
20709
|
_proto.createController = function createController(ControllerClass, components) {
|
20730
20710
|
if (ControllerClass) {
|
@@ -20963,7 +20943,7 @@
|
|
20963
20943
|
/**
|
20964
20944
|
* Get the complete list of audio tracks across all media groups
|
20965
20945
|
*/;
|
20966
|
-
_createClass(Hls, [{
|
20946
|
+
return _createClass(Hls, [{
|
20967
20947
|
key: "levels",
|
20968
20948
|
get: function get() {
|
20969
20949
|
var levels = this.levelController.levels;
|
@@ -21470,7 +21450,7 @@
|
|
21470
21450
|
* Get the video-dev/hls.js package version.
|
21471
21451
|
*/
|
21472
21452
|
function get() {
|
21473
|
-
return "1.5.8-0.canary.
|
21453
|
+
return "1.5.8-0.canary.10121";
|
21474
21454
|
}
|
21475
21455
|
}, {
|
21476
21456
|
key: "Events",
|
@@ -21507,7 +21487,6 @@
|
|
21507
21487
|
Hls.defaultConfig = defaultConfig;
|
21508
21488
|
}
|
21509
21489
|
}]);
|
21510
|
-
return Hls;
|
21511
21490
|
}();
|
21512
21491
|
Hls.defaultConfig = void 0;
|
21513
21492
|
|