hls.js 1.6.0-beta.3.0.canary.10978 → 1.6.0-beta.3.0.canary.10980
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.d.mts +1 -0
- package/dist/hls.d.ts +1 -0
- package/dist/hls.js +52 -46
- package/dist/hls.js.d.ts +1 -0
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +45 -23
- 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 +41 -21
- package/dist/hls.light.mjs.map +1 -1
- package/dist/hls.min.js +1 -1
- package/dist/hls.min.js.map +1 -1
- package/dist/hls.mjs +48 -42
- package/dist/hls.mjs.map +1 -1
- package/dist/hls.worker.js +1 -1
- package/package.json +1 -1
- package/src/config.ts +2 -1
- package/src/controller/abr-controller.ts +10 -5
- package/src/controller/buffer-controller.ts +5 -4
- package/src/controller/content-steering-controller.ts +3 -2
- package/src/controller/eme-controller.ts +3 -2
- package/src/controller/gap-controller.ts +2 -1
- package/src/controller/id3-track-controller.ts +2 -1
- package/src/controller/level-controller.ts +2 -1
- package/src/demux/transmuxer-interface.ts +3 -2
- package/src/utils/cea-608-parser.ts +4 -9
- package/src/utils/level-helper.ts +2 -1
- package/src/utils/rendition-helper.ts +2 -3
- package/src/utils/safe-json-stringify.ts +10 -3
package/dist/hls.light.js
CHANGED
@@ -1030,7 +1030,7 @@
|
|
1030
1030
|
// Some browsers don't allow to use bind on console object anyway
|
1031
1031
|
// fallback to default if needed
|
1032
1032
|
try {
|
1033
|
-
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.6.0-beta.3.0.canary.
|
1033
|
+
newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.6.0-beta.3.0.canary.10980");
|
1034
1034
|
} catch (e) {
|
1035
1035
|
/* log fn threw an exception. All logger methods are no-ops. */
|
1036
1036
|
return createLogger();
|
@@ -1566,6 +1566,25 @@
|
|
1566
1566
|
};
|
1567
1567
|
}
|
1568
1568
|
|
1569
|
+
var omitCircularRefsReplacer = function omitCircularRefsReplacer(replacer) {
|
1570
|
+
var known = new WeakSet();
|
1571
|
+
return function (_, value) {
|
1572
|
+
if (replacer) {
|
1573
|
+
value = replacer(_, value);
|
1574
|
+
}
|
1575
|
+
if (typeof value === 'object' && value !== null) {
|
1576
|
+
if (known.has(value)) {
|
1577
|
+
return;
|
1578
|
+
}
|
1579
|
+
known.add(value);
|
1580
|
+
}
|
1581
|
+
return value;
|
1582
|
+
};
|
1583
|
+
};
|
1584
|
+
var stringify = function stringify(object, replacer) {
|
1585
|
+
return JSON.stringify(object, omitCircularRefsReplacer(replacer));
|
1586
|
+
};
|
1587
|
+
|
1569
1588
|
function getStartCodecTier(codecTiers, currentVideoRange, currentBw, audioPreference, videoPreference) {
|
1570
1589
|
var codecSets = Object.keys(codecTiers);
|
1571
1590
|
var channelsPreference = audioPreference == null ? void 0 : audioPreference.channels;
|
@@ -1653,7 +1672,7 @@
|
|
1653
1672
|
if (!videoRanges.some(function (range) {
|
1654
1673
|
return candidateTier.videoRanges[range] > 0;
|
1655
1674
|
})) {
|
1656
|
-
logStartCodecCandidateIgnored(candidate, "no variants with VIDEO-RANGE of " +
|
1675
|
+
logStartCodecCandidateIgnored(candidate, "no variants with VIDEO-RANGE of " + stringify(videoRanges) + " found");
|
1657
1676
|
return selected;
|
1658
1677
|
}
|
1659
1678
|
if (videoCodecPreference && candidate.indexOf(videoCodecPreference.substring(0, 4)) % 5 !== 0) {
|
@@ -2238,7 +2257,7 @@
|
|
2238
2257
|
currentVideoRange = preferHDR ? videoRanges[videoRanges.length - 1] : videoRanges[0];
|
2239
2258
|
currentFrameRate = minFramerate;
|
2240
2259
|
currentBw = Math.max(currentBw, minBitrate);
|
2241
|
-
this.log("picked start tier " +
|
2260
|
+
this.log("picked start tier " + stringify(startTier));
|
2242
2261
|
} else {
|
2243
2262
|
currentCodecSet = level == null ? void 0 : level.codecSet;
|
2244
2263
|
currentVideoRange = level == null ? void 0 : level.videoRange;
|
@@ -2315,12 +2334,18 @@
|
|
2315
2334
|
// not enough time budget even with quality level 0 ... rebuffering might happen
|
2316
2335
|
return -1;
|
2317
2336
|
};
|
2337
|
+
_proto.deriveNextAutoLevel = function deriveNextAutoLevel(nextLevel) {
|
2338
|
+
var _this$hls2 = this.hls,
|
2339
|
+
maxAutoLevel = _this$hls2.maxAutoLevel,
|
2340
|
+
minAutoLevel = _this$hls2.minAutoLevel;
|
2341
|
+
return Math.min(Math.max(nextLevel, minAutoLevel), maxAutoLevel);
|
2342
|
+
};
|
2318
2343
|
return _createClass(AbrController, [{
|
2319
2344
|
key: "firstAutoLevel",
|
2320
2345
|
get: function get() {
|
2321
|
-
var _this$
|
2322
|
-
maxAutoLevel = _this$
|
2323
|
-
minAutoLevel = _this$
|
2346
|
+
var _this$hls3 = this.hls,
|
2347
|
+
maxAutoLevel = _this$hls3.maxAutoLevel,
|
2348
|
+
minAutoLevel = _this$hls3.minAutoLevel;
|
2324
2349
|
var bwEstimate = this.getBwEstimate();
|
2325
2350
|
var maxStartDelay = this.hls.config.maxStarvationDelay;
|
2326
2351
|
var abrAutoLevel = this.findBestLevel(bwEstimate, minAutoLevel, maxAutoLevel, 0, maxStartDelay, 1, 1);
|
@@ -2371,10 +2396,7 @@
|
|
2371
2396
|
return nextABRAutoLevel;
|
2372
2397
|
},
|
2373
2398
|
set: function set(nextLevel) {
|
2374
|
-
var
|
2375
|
-
maxAutoLevel = _this$hls3.maxAutoLevel,
|
2376
|
-
minAutoLevel = _this$hls3.minAutoLevel;
|
2377
|
-
var value = Math.min(Math.max(nextLevel, minAutoLevel), maxAutoLevel);
|
2399
|
+
var value = this.deriveNextAutoLevel(nextLevel);
|
2378
2400
|
if (this._nextAutoLevel !== value) {
|
2379
2401
|
this.nextAutoLevelKey = '';
|
2380
2402
|
this._nextAutoLevel = value;
|
@@ -4048,9 +4070,9 @@
|
|
4048
4070
|
this.log("attachTransferred: waiting for SourceBuffer track info");
|
4049
4071
|
return;
|
4050
4072
|
}
|
4051
|
-
this.log("attachTransferred: (bufferCodecEventsTotal " + this.bufferCodecEventsTotal + ")\nrequired tracks: " +
|
4073
|
+
this.log("attachTransferred: (bufferCodecEventsTotal " + this.bufferCodecEventsTotal + ")\nrequired tracks: " + stringify(requiredTracks, function (key, value) {
|
4052
4074
|
return key === 'initSegment' ? undefined : value;
|
4053
|
-
}) + ";\ntransfer tracks: " +
|
4075
|
+
}) + ";\ntransfer tracks: " + stringify(transferredTracks, function (key, value) {
|
4054
4076
|
return key === 'initSegment' ? undefined : value;
|
4055
4077
|
}) + "}");
|
4056
4078
|
if (!isCompatibleTrackChange(transferredTracks, requiredTracks)) {
|
@@ -4841,7 +4863,7 @@
|
|
4841
4863
|
var bufferCodecEventsTotal = this.bufferCodecEventsTotal,
|
4842
4864
|
pendingTrackCount = this.pendingTrackCount,
|
4843
4865
|
tracks = this.tracks;
|
4844
|
-
this.log("checkPendingTracks (pending: " + pendingTrackCount + " codec events expected: " + bufferCodecEventsTotal + ") " +
|
4866
|
+
this.log("checkPendingTracks (pending: " + pendingTrackCount + " codec events expected: " + bufferCodecEventsTotal + ") " + stringify(tracks));
|
4845
4867
|
// Check if we've received all of the expected bufferCodec events. When none remain, create all the sourceBuffers at once.
|
4846
4868
|
// This is important because the MSE spec allows implementations to throw QuotaExceededErrors if creating new sourceBuffers after
|
4847
4869
|
// data has been appended to existing ones.
|
@@ -4910,7 +4932,7 @@
|
|
4910
4932
|
var codec = this.getTrackCodec(track, type);
|
4911
4933
|
var mimeType = track.container + ";codecs=" + codec;
|
4912
4934
|
track.codec = codec;
|
4913
|
-
this.log("creating sourceBuffer(" + mimeType + ")" + (this.currentOp(type) ? ' Queued' : '') + " " +
|
4935
|
+
this.log("creating sourceBuffer(" + mimeType + ")" + (this.currentOp(type) ? ' Queued' : '') + " " + stringify(track));
|
4914
4936
|
try {
|
4915
4937
|
var sb = mediaSource.addSourceBuffer(mimeType);
|
4916
4938
|
var sbIndex = sourceBufferNameToIndex(type);
|
@@ -8186,7 +8208,7 @@
|
|
8186
8208
|
dateRange.tagOrder += mergeCount;
|
8187
8209
|
}
|
8188
8210
|
} else {
|
8189
|
-
logger.warn("Ignoring invalid Playlist Delta Update DATERANGE tag: \"" +
|
8211
|
+
logger.warn("Ignoring invalid Playlist Delta Update DATERANGE tag: \"" + stringify(deltaDateRanges[id].attr) + "\"");
|
8190
8212
|
}
|
8191
8213
|
});
|
8192
8214
|
}
|
@@ -8479,7 +8501,7 @@
|
|
8479
8501
|
errorAction.resolved = this.pathwayId !== errorPathway;
|
8480
8502
|
}
|
8481
8503
|
if (!errorAction.resolved) {
|
8482
|
-
this.warn("Could not resolve " + data.details + " (\"" + data.error.message + "\") with content-steering for Pathway: " + errorPathway + " levels: " + (levels ? levels.length : levels) + " priorities: " +
|
8504
|
+
this.warn("Could not resolve " + data.details + " (\"" + data.error.message + "\") with content-steering for Pathway: " + errorPathway + " levels: " + (levels ? levels.length : levels) + " priorities: " + stringify(pathwayPriority) + " penalized: " + stringify(this.penalizedPathways));
|
8483
8505
|
}
|
8484
8506
|
}
|
8485
8507
|
};
|
@@ -15197,7 +15219,7 @@
|
|
15197
15219
|
}
|
15198
15220
|
});
|
15199
15221
|
if (report.length) {
|
15200
|
-
logger.warn("hls.js config: \"" + report.join('", "') + "\" setting(s) are deprecated, use \"" + policyName + "\": " +
|
15222
|
+
logger.warn("hls.js config: \"" + report.join('", "') + "\" setting(s) are deprecated, use \"" + policyName + "\": " + stringify(userConfig[policyName]));
|
15201
15223
|
}
|
15202
15224
|
});
|
15203
15225
|
return _objectSpread2(_objectSpread2({}, defaultsCopy), userConfig);
|
@@ -18111,7 +18133,7 @@
|
|
18111
18133
|
if (!stallReported && stalled !== null && media && hls) {
|
18112
18134
|
// Report stalled error once
|
18113
18135
|
this.stallReported = true;
|
18114
|
-
var error = new Error("Playback stalling at @" + media.currentTime + " due to low buffer (" +
|
18136
|
+
var error = new Error("Playback stalling at @" + media.currentTime + " due to low buffer (" + stringify(bufferInfo) + ")");
|
18115
18137
|
this.warn(error.message);
|
18116
18138
|
hls.trigger(Events.ERROR, {
|
18117
18139
|
type: ErrorTypes.MEDIA_ERROR,
|
@@ -18394,7 +18416,7 @@
|
|
18394
18416
|
cue.type = type;
|
18395
18417
|
}
|
18396
18418
|
} catch (e) {
|
18397
|
-
cue = new Cue(startTime, endTime,
|
18419
|
+
cue = new Cue(startTime, endTime, stringify(type ? _objectSpread2({
|
18398
18420
|
type: type
|
18399
18421
|
}, data) : data));
|
18400
18422
|
}
|
@@ -19401,7 +19423,7 @@
|
|
19401
19423
|
Promise.resolve().then(function () {
|
19402
19424
|
if (_this3.hls) {
|
19403
19425
|
if (data.levels.length) {
|
19404
|
-
_this3.warn("One or more CODECS in variant not supported: " +
|
19426
|
+
_this3.warn("One or more CODECS in variant not supported: " + stringify(data.levels[0].attrs));
|
19405
19427
|
}
|
19406
19428
|
var error = new Error('no level with compatible codecs found in manifest');
|
19407
19429
|
_this3.hls.trigger(Events.ERROR, {
|
@@ -20001,7 +20023,7 @@
|
|
20001
20023
|
return !remuxResult.audio && !remuxResult.video && !remuxResult.text && !remuxResult.id3 && !remuxResult.initSegment;
|
20002
20024
|
}
|
20003
20025
|
|
20004
|
-
var version = "1.6.0-beta.3.0.canary.
|
20026
|
+
var version = "1.6.0-beta.3.0.canary.10980";
|
20005
20027
|
|
20006
20028
|
// ensure the worker ends up in the bundle
|
20007
20029
|
// If the worker should not be included this gets aliased to empty.js
|
@@ -20182,7 +20204,7 @@
|
|
20182
20204
|
cmd: 'init',
|
20183
20205
|
typeSupported: m2tsTypeSupported,
|
20184
20206
|
id: id,
|
20185
|
-
config:
|
20207
|
+
config: stringify(config)
|
20186
20208
|
});
|
20187
20209
|
} catch (err) {
|
20188
20210
|
logger.warn("Error setting up \"" + id + "\" Web Worker, fallback to inline", err);
|
@@ -20210,7 +20232,7 @@
|
|
20210
20232
|
resetNo: instanceNo,
|
20211
20233
|
typeSupported: m2tsTypeSupported,
|
20212
20234
|
id: this.id,
|
20213
|
-
config:
|
20235
|
+
config: stringify(config)
|
20214
20236
|
});
|
20215
20237
|
}
|
20216
20238
|
};
|