hls.js 1.6.0-beta.1.0.canary.10749 → 1.6.0-beta.1.0.canary.10751
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 +2 -1
- package/dist/hls.d.ts +2 -1
- package/dist/hls.js +31 -23
- package/dist/hls.js.d.ts +2 -1
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +31 -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 +30 -22
- 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 +30 -22
- package/dist/hls.mjs.map +1 -1
- package/dist/hls.worker.js +1 -1
- package/dist/hls.worker.js.map +1 -1
- package/package.json +1 -1
- package/src/config.ts +2 -0
- package/src/controller/base-stream-controller.ts +29 -21
- package/src/controller/cap-level-controller.ts +1 -1
- package/src/controller/stream-controller.ts +5 -4
- package/src/demux/transmuxer-interface.ts +4 -2
- package/src/demux/transmuxer.ts +1 -1
package/dist/hls.mjs
CHANGED
@@ -400,7 +400,7 @@ function enableLogs(debugConfig, context, id) {
|
|
400
400
|
// Some browsers don't allow to use bind on console object anyway
|
401
401
|
// fallback to default if needed
|
402
402
|
try {
|
403
|
-
newLogger.log(`Debug logs enabled for "${context}" in hls.js version ${"1.6.0-beta.1.0.canary.
|
403
|
+
newLogger.log(`Debug logs enabled for "${context}" in hls.js version ${"1.6.0-beta.1.0.canary.10751"}`);
|
404
404
|
} catch (e) {
|
405
405
|
/* log fn threw an exception. All logger methods are no-ops. */
|
406
406
|
return createLogger();
|
@@ -8246,22 +8246,24 @@ class BaseStreamController extends TaskLoop {
|
|
8246
8246
|
this.startFragRequested = true;
|
8247
8247
|
this._loadFragForPlayback(frag, level, targetBufferTime);
|
8248
8248
|
}
|
8249
|
-
_loadFragForPlayback(
|
8249
|
+
_loadFragForPlayback(fragment, level, targetBufferTime) {
|
8250
8250
|
const progressCallback = data => {
|
8251
|
+
const frag = data.frag;
|
8251
8252
|
if (this.fragContextChanged(frag)) {
|
8252
|
-
this.warn(
|
8253
|
+
this.warn(`${frag.type} sn: ${frag.sn}${data.part ? ' part: ' + data.part.index : ''} of ${this.fragInfo(frag, false, data.part)}) was dropped during download.`);
|
8253
8254
|
this.fragmentTracker.removeFragment(frag);
|
8254
8255
|
return;
|
8255
8256
|
}
|
8256
8257
|
frag.stats.chunkCount++;
|
8257
8258
|
this._handleFragmentLoadProgress(data);
|
8258
8259
|
};
|
8259
|
-
this._doFragLoad(
|
8260
|
+
this._doFragLoad(fragment, level, targetBufferTime, progressCallback).then(data => {
|
8260
8261
|
if (!data) {
|
8261
8262
|
// if we're here we probably needed to backtrack or are waiting for more parts
|
8262
8263
|
return;
|
8263
8264
|
}
|
8264
8265
|
const state = this.state;
|
8266
|
+
const frag = data.frag;
|
8265
8267
|
if (this.fragContextChanged(frag)) {
|
8266
8268
|
if (state === State.FRAG_LOADING || !this.fragCurrent && state === State.PARSING) {
|
8267
8269
|
this.fragmentTracker.removeFragment(frag);
|
@@ -8281,7 +8283,7 @@ class BaseStreamController extends TaskLoop {
|
|
8281
8283
|
return;
|
8282
8284
|
}
|
8283
8285
|
this.warn(`Frag error: ${(reason == null ? void 0 : reason.message) || reason}`);
|
8284
|
-
this.resetFragmentLoading(
|
8286
|
+
this.resetFragmentLoading(fragment);
|
8285
8287
|
});
|
8286
8288
|
}
|
8287
8289
|
clearTrackerIfNeeded(frag) {
|
@@ -8345,9 +8347,10 @@ class BaseStreamController extends TaskLoop {
|
|
8345
8347
|
};
|
8346
8348
|
this.hls.trigger(Events.BUFFER_FLUSHING, flushScope);
|
8347
8349
|
}
|
8348
|
-
_loadInitSegment(
|
8349
|
-
this._doFragLoad(
|
8350
|
-
|
8350
|
+
_loadInitSegment(fragment, level) {
|
8351
|
+
this._doFragLoad(fragment, level).then(data => {
|
8352
|
+
const frag = data == null ? void 0 : data.frag;
|
8353
|
+
if (!frag || this.fragContextChanged(frag) || !this.levels) {
|
8351
8354
|
throw new Error('init load aborted');
|
8352
8355
|
}
|
8353
8356
|
return data;
|
@@ -8356,6 +8359,7 @@ class BaseStreamController extends TaskLoop {
|
|
8356
8359
|
hls
|
8357
8360
|
} = this;
|
8358
8361
|
const {
|
8362
|
+
frag,
|
8359
8363
|
payload
|
8360
8364
|
} = data;
|
8361
8365
|
const decryptData = frag.decryptdata;
|
@@ -8394,7 +8398,7 @@ class BaseStreamController extends TaskLoop {
|
|
8394
8398
|
return;
|
8395
8399
|
}
|
8396
8400
|
this.warn(reason);
|
8397
|
-
this.resetFragmentLoading(
|
8401
|
+
this.resetFragmentLoading(fragment);
|
8398
8402
|
});
|
8399
8403
|
}
|
8400
8404
|
completeInitSegmentLoad(data) {
|
@@ -8421,7 +8425,7 @@ class BaseStreamController extends TaskLoop {
|
|
8421
8425
|
}
|
8422
8426
|
fragBufferedComplete(frag, part) {
|
8423
8427
|
const media = this.mediaBuffer ? this.mediaBuffer : this.media;
|
8424
|
-
this.log(`Buffered ${frag.type} sn: ${frag.sn}${part ? ' part: ' + part.index : ''} of ${this.fragInfo(frag)} > buffer:${media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : '(detached)'})`);
|
8428
|
+
this.log(`Buffered ${frag.type} sn: ${frag.sn}${part ? ' part: ' + part.index : ''} of ${this.fragInfo(frag, false, part)} > buffer:${media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : '(detached)'})`);
|
8425
8429
|
if (frag.sn !== 'initSegment') {
|
8426
8430
|
var _this$levels;
|
8427
8431
|
if (frag.type !== PlaylistLevelType.SUBTITLE) {
|
@@ -8508,7 +8512,8 @@ class BaseStreamController extends TaskLoop {
|
|
8508
8512
|
const partIndex = this.getNextPart(partList, frag, targetBufferTime);
|
8509
8513
|
if (partIndex > -1) {
|
8510
8514
|
const part = partList[partIndex];
|
8511
|
-
|
8515
|
+
frag = this.fragCurrent = part.fragment;
|
8516
|
+
this.log(`Loading ${frag.type} sn: ${frag.sn} part: ${part.index} (${partIndex}/${partList.length - 1}) of ${this.fragInfo(frag, false, part)}) cc: ${frag.cc} [${details.startSN}-${details.endSN}], target: ${parseFloat(targetBufferTime.toFixed(3))}`);
|
8512
8517
|
this.nextLoadPosition = part.start + part.duration;
|
8513
8518
|
this.state = State.FRAG_LOADING;
|
8514
8519
|
let _result;
|
@@ -9305,7 +9310,7 @@ class BaseStreamController extends TaskLoop {
|
|
9305
9310
|
// For this error fallthrough. Marking parsed will allow advancing to next fragment.
|
9306
9311
|
}
|
9307
9312
|
this.state = State.PARSED;
|
9308
|
-
this.log(`Parsed ${frag.type} sn: ${frag.sn}${part ? ' part: ' + part.index : ''} of ${this.fragInfo(frag)})`);
|
9313
|
+
this.log(`Parsed ${frag.type} sn: ${frag.sn}${part ? ' part: ' + part.index : ''} of ${this.fragInfo(frag, false, part)})`);
|
9309
9314
|
this.hls.trigger(Events.FRAG_PARSED, {
|
9310
9315
|
frag,
|
9311
9316
|
part
|
@@ -9314,9 +9319,9 @@ class BaseStreamController extends TaskLoop {
|
|
9314
9319
|
playlistLabel() {
|
9315
9320
|
return this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track';
|
9316
9321
|
}
|
9317
|
-
fragInfo(frag, pts = true) {
|
9322
|
+
fragInfo(frag, pts = true, part) {
|
9318
9323
|
var _ref, _ref2;
|
9319
|
-
return `${this.playlistLabel()} ${frag.level} (frag:[${((_ref = pts ? frag.startPTS : frag.start) != null ? _ref : NaN).toFixed(3)}-${((_ref2 = pts ? frag.endPTS : frag.end) != null ? _ref2 : NaN).toFixed(3)}]`;
|
9324
|
+
return `${this.playlistLabel()} ${frag.level} (${part ? 'part' : 'frag'}:[${((_ref = pts && !part ? frag.startPTS : (part || frag).start) != null ? _ref : NaN).toFixed(3)}-${((_ref2 = pts && !part ? frag.endPTS : (part || frag).end) != null ? _ref2 : NaN).toFixed(3)}]${part && frag.type === 'main' ? 'INDEPENDENT=' + (part.independent ? 'YES' : 'NO') : ''}`;
|
9320
9325
|
}
|
9321
9326
|
resetTransmuxer() {
|
9322
9327
|
var _this$transmuxer2;
|
@@ -9729,7 +9734,7 @@ var eventemitter3 = {exports: {}};
|
|
9729
9734
|
var eventemitter3Exports = eventemitter3.exports;
|
9730
9735
|
var EventEmitter = /*@__PURE__*/getDefaultExportFromCjs(eventemitter3Exports);
|
9731
9736
|
|
9732
|
-
const version = "1.6.0-beta.1.0.canary.
|
9737
|
+
const version = "1.6.0-beta.1.0.canary.10751";
|
9733
9738
|
|
9734
9739
|
// ensure the worker ends up in the bundle
|
9735
9740
|
// If the worker should not be included this gets aliased to empty.js
|
@@ -15468,7 +15473,7 @@ class Transmuxer {
|
|
15468
15473
|
accurateTimeOffset,
|
15469
15474
|
timeOffset
|
15470
15475
|
} = this.currentTransmuxState;
|
15471
|
-
this.logger.log(`[transmuxer.ts]: Flushed ${this.id} sn: ${chunkMeta.sn}${chunkMeta.part > -1 ? '
|
15476
|
+
this.logger.log(`[transmuxer.ts]: Flushed ${this.id} sn: ${chunkMeta.sn}${chunkMeta.part > -1 ? ' part: ' + chunkMeta.part : ''} of ${this.id === PlaylistLevelType.MAIN ? 'level' : 'track'} ${chunkMeta.level}`);
|
15472
15477
|
const remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, true, this.id);
|
15473
15478
|
transmuxResults.push({
|
15474
15479
|
remuxResult,
|
@@ -15853,7 +15858,7 @@ class TransmuxerInterface {
|
|
15853
15858
|
const initSegmentChange = !(lastFrag && ((_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.url) === ((_lastFrag$initSegment = lastFrag.initSegment) == null ? void 0 : _lastFrag$initSegment.url));
|
15854
15859
|
const state = new TransmuxState(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange);
|
15855
15860
|
if (!contiguous || discontinuity || initSegmentChange) {
|
15856
|
-
this.hls.logger.log(`[transmuxer-interface
|
15861
|
+
this.hls.logger.log(`[transmuxer-interface]: Starting new transmux session for ${frag.type} sn: ${chunkMeta.sn}${chunkMeta.part > -1 ? ' part: ' + chunkMeta.part : ''} ${this.id === PlaylistLevelType.MAIN ? 'level' : 'track'}: ${chunkMeta.level} id: ${chunkMeta.id}
|
15857
15862
|
discontinuity: ${discontinuity}
|
15858
15863
|
trackSwitch: ${trackSwitch}
|
15859
15864
|
contiguous: ${contiguous}
|
@@ -19148,7 +19153,7 @@ class CapLevelController {
|
|
19148
19153
|
/* no-op */
|
19149
19154
|
}
|
19150
19155
|
}
|
19151
|
-
return pixelRatio;
|
19156
|
+
return Math.min(pixelRatio, this.hls.config.maxDevicePixelRatio);
|
19152
19157
|
}
|
19153
19158
|
isLevelAllowed(level) {
|
19154
19159
|
const restrictedLevels = this.restrictedLevels;
|
@@ -29083,6 +29088,8 @@ const hlsDefaultConfig = _objectSpread2(_objectSpread2({
|
|
29083
29088
|
// used by cap-level-controller
|
29084
29089
|
ignoreDevicePixelRatio: false,
|
29085
29090
|
// used by cap-level-controller
|
29091
|
+
maxDevicePixelRatio: Number.POSITIVE_INFINITY,
|
29092
|
+
// used by cap-level-controller
|
29086
29093
|
preferManagedMediaSource: true,
|
29087
29094
|
initialLiveManifestSize: 1,
|
29088
29095
|
// used by stream-controller
|
@@ -31847,13 +31854,14 @@ class StreamController extends BaseStreamController {
|
|
31847
31854
|
}
|
31848
31855
|
return audioCodec;
|
31849
31856
|
}
|
31850
|
-
_loadBitrateTestFrag(
|
31851
|
-
|
31852
|
-
this._doFragLoad(
|
31857
|
+
_loadBitrateTestFrag(fragment, level) {
|
31858
|
+
fragment.bitrateTest = true;
|
31859
|
+
this._doFragLoad(fragment, level).then(data => {
|
31853
31860
|
const {
|
31854
31861
|
hls
|
31855
31862
|
} = this;
|
31856
|
-
|
31863
|
+
const frag = data == null ? void 0 : data.frag;
|
31864
|
+
if (!frag || this.fragContextChanged(frag)) {
|
31857
31865
|
return;
|
31858
31866
|
}
|
31859
31867
|
level.fragmentError = 0;
|