rx-player 4.2.0-dev.2024092400 → 4.2.0-dev.2024100200
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/CHANGELOG.md +10 -3
- package/VERSION +1 -1
- package/dist/commonjs/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
- package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
- package/dist/commonjs/core/main/worker/worker_main.d.ts.map +1 -1
- package/dist/commonjs/core/main/worker/worker_main.js +3 -0
- package/dist/commonjs/core/stream/adaptation/adaptation_stream.d.ts.map +1 -1
- package/dist/commonjs/core/stream/adaptation/adaptation_stream.js +15 -0
- package/dist/commonjs/core/stream/representation/representation_stream.d.ts.map +1 -1
- package/dist/commonjs/core/stream/representation/representation_stream.js +2 -0
- package/dist/commonjs/main_thread/api/public_api.js +2 -2
- package/dist/commonjs/main_thread/init/directfile_content_initializer.d.ts.map +1 -1
- package/dist/commonjs/main_thread/init/directfile_content_initializer.js +14 -6
- package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts +13 -0
- package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -1
- package/dist/commonjs/main_thread/init/multi_thread_content_initializer.js +94 -45
- package/dist/commonjs/main_thread/init/utils/initial_seek_and_play.d.ts +1 -1
- package/dist/commonjs/main_thread/init/utils/initial_seek_and_play.d.ts.map +1 -1
- package/dist/commonjs/main_thread/init/utils/initial_seek_and_play.js +21 -5
- package/dist/commonjs/mse/main_media_source_interface.d.ts.map +1 -1
- package/dist/commonjs/mse/main_media_source_interface.js +21 -2
- package/dist/commonjs/transports/smooth/pipelines.d.ts.map +1 -1
- package/dist/commonjs/transports/smooth/pipelines.js +1 -0
- package/dist/commonjs/transports/utils/parse_text_track.d.ts.map +1 -1
- package/dist/commonjs/transports/utils/parse_text_track.js +1 -0
- package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
- package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
- package/dist/es2017/core/main/worker/worker_main.d.ts.map +1 -1
- package/dist/es2017/core/main/worker/worker_main.js +3 -0
- package/dist/es2017/core/stream/adaptation/adaptation_stream.d.ts.map +1 -1
- package/dist/es2017/core/stream/adaptation/adaptation_stream.js +15 -0
- package/dist/es2017/core/stream/representation/representation_stream.d.ts.map +1 -1
- package/dist/es2017/core/stream/representation/representation_stream.js +2 -0
- package/dist/es2017/main_thread/api/public_api.js +2 -2
- package/dist/es2017/main_thread/init/directfile_content_initializer.d.ts.map +1 -1
- package/dist/es2017/main_thread/init/directfile_content_initializer.js +14 -6
- package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts +13 -0
- package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -1
- package/dist/es2017/main_thread/init/multi_thread_content_initializer.js +78 -41
- package/dist/es2017/main_thread/init/utils/initial_seek_and_play.d.ts +1 -1
- package/dist/es2017/main_thread/init/utils/initial_seek_and_play.d.ts.map +1 -1
- package/dist/es2017/main_thread/init/utils/initial_seek_and_play.js +19 -3
- package/dist/es2017/mse/main_media_source_interface.d.ts.map +1 -1
- package/dist/es2017/mse/main_media_source_interface.js +19 -0
- package/dist/es2017/transports/smooth/pipelines.d.ts.map +1 -1
- package/dist/es2017/transports/smooth/pipelines.js +1 -0
- package/dist/es2017/transports/utils/parse_text_track.d.ts.map +1 -1
- package/dist/es2017/transports/utils/parse_text_track.js +1 -0
- package/dist/rx-player.js +53 -14
- package/dist/rx-player.min.js +8 -8
- package/dist/worker.js +5 -5
- package/package.json +19 -7
- package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
- package/src/core/main/worker/worker_main.ts +3 -0
- package/src/core/stream/adaptation/adaptation_stream.ts +23 -1
- package/src/core/stream/representation/representation_stream.ts +11 -0
- package/src/main_thread/api/public_api.ts +2 -2
- package/src/main_thread/init/directfile_content_initializer.ts +20 -10
- package/src/main_thread/init/multi_thread_content_initializer.ts +94 -43
- package/src/main_thread/init/utils/initial_seek_and_play.ts +24 -5
- package/src/mse/main_media_source_interface.ts +20 -0
- package/src/transports/smooth/pipelines.ts +1 -0
- package/src/transports/utils/parse_text_track.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker_main.d.ts","sourceRoot":"","sources":["../../../../../src/core/main/worker/worker_main.ts"],"names":[],"mappings":"AA+CA,MAAM,CAAC,OAAO,UAAU,oBAAoB,
|
|
1
|
+
{"version":3,"file":"worker_main.d.ts","sourceRoot":"","sources":["../../../../../src/core/main/worker/worker_main.ts"],"names":[],"mappings":"AA+CA,MAAM,CAAC,OAAO,UAAU,oBAAoB,SAgX3C"}
|
|
@@ -101,6 +101,9 @@ function initializeWorkerMain() {
|
|
|
101
101
|
* When set, emit playback observation made on the main thread.
|
|
102
102
|
*/
|
|
103
103
|
var playbackObservationRef = null;
|
|
104
|
+
onmessageerror = function (_msg) {
|
|
105
|
+
log_1.default.error("MTCI: Error when receiving message from main thread.");
|
|
106
|
+
};
|
|
104
107
|
onmessage = function (e) {
|
|
105
108
|
var _a, _b;
|
|
106
109
|
log_1.default.debug("Worker: received message", e.data.type);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adaptation_stream.d.ts","sourceRoot":"","sources":["../../../../../src/core/stream/adaptation/adaptation_stream.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AASxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,EACE,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,uBAAuB,EACvB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,EAAE,0BAA0B,EAC7B,SAAS,EAAE,0BAA0B,EACrC,kBAAkB,EAAE,kBAAkB,GACrC,IAAI,
|
|
1
|
+
{"version":3,"file":"adaptation_stream.d.ts","sourceRoot":"","sources":["../../../../../src/core/stream/adaptation/adaptation_stream.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AASxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,EACE,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,uBAAuB,EACvB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,EAAE,0BAA0B,EAC7B,SAAS,EAAE,0BAA0B,EACrC,kBAAkB,EAAE,kBAAkB,GACrC,IAAI,CA6cN"}
|
|
@@ -363,8 +363,11 @@ function AdaptationStream(_a, callbacks, parentCancelSignal) {
|
|
|
363
363
|
* anything this function is doing and free allocated resources.
|
|
364
364
|
*/
|
|
365
365
|
function createRepresentationStream(representation, terminateCurrentStream, representationStreamCallbacks, fnCancelSignal) {
|
|
366
|
+
/** Set to `true` if we've encountered an error with this `RepresentationStream` */
|
|
367
|
+
var hasEncounteredError = false;
|
|
366
368
|
var bufferGoalCanceller = new task_canceller_1.default();
|
|
367
369
|
bufferGoalCanceller.linkToSignal(fnCancelSignal);
|
|
370
|
+
/** Actually built buffer size, in seconds. */
|
|
368
371
|
var bufferGoal = (0, reference_1.createMappedReference)(wantedBufferAhead, function (prev) {
|
|
369
372
|
return getBufferGoal(representation, prev);
|
|
370
373
|
}, bufferGoalCanceller.signal);
|
|
@@ -373,6 +376,17 @@ function AdaptationStream(_a, callbacks, parentCancelSignal) {
|
|
|
373
376
|
var updatedCallbacks = (0, object_assign_1.default)({}, representationStreamCallbacks, {
|
|
374
377
|
error: function (err) {
|
|
375
378
|
var _a;
|
|
379
|
+
if (hasEncounteredError) {
|
|
380
|
+
// A RepresentationStream might trigger multiple Errors (for example
|
|
381
|
+
// multiple segments it tried to push at once led to errors).
|
|
382
|
+
// In that case, we'll only consider the first Error.
|
|
383
|
+
//
|
|
384
|
+
// That could mean that we're hiding legitimate issues but handling
|
|
385
|
+
// multiple of those errors at once is too hard a task for now.
|
|
386
|
+
log_1.default.warn("Stream: Ignoring RepresentationStream error", err);
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
hasEncounteredError = true;
|
|
376
390
|
var formattedError = (0, errors_1.formatError)(err, {
|
|
377
391
|
defaultCode: "NONE",
|
|
378
392
|
defaultReason: "Unknown `RepresentationStream` error",
|
|
@@ -381,6 +395,7 @@ function AdaptationStream(_a, callbacks, parentCancelSignal) {
|
|
|
381
395
|
representationStreamCallbacks.error(err);
|
|
382
396
|
}
|
|
383
397
|
else {
|
|
398
|
+
log_1.default.warn("Stream: received BUFFER_FULL_ERROR", adaptation.type, representation.bitrate);
|
|
384
399
|
var wba = wantedBufferAhead.getValue();
|
|
385
400
|
var lastBufferGoalRatio = (_a = bufferGoalRatioMap.get(representation.id)) !== null && _a !== void 0 ? _a : 1;
|
|
386
401
|
// 70%, 49%, 34.3%, 24%, 16.81%, 11.76%, 8.24% and 5.76%
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"representation_stream.d.ts","sourceRoot":"","sources":["../../../../../src/core/stream/representation/representation_stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAMxE,OAAO,KAAK,EAEV,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,SAAS,CAAC;AAMjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,gBAAgB,EAC3D,EACE,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,GACV,EAAE,8BAA8B,CAAC,gBAAgB,CAAC,EACnD,SAAS,EAAE,8BAA8B,EACzC,kBAAkB,EAAE,kBAAkB,GACrC,IAAI,
|
|
1
|
+
{"version":3,"file":"representation_stream.d.ts","sourceRoot":"","sources":["../../../../../src/core/stream/representation/representation_stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAMxE,OAAO,KAAK,EAEV,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,SAAS,CAAC;AAMjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,gBAAgB,EAC3D,EACE,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,GACV,EAAE,8BAA8B,CAAC,gBAAgB,CAAC,EACnD,SAAS,EAAE,8BAA8B,EACzC,kBAAkB,EAAE,kBAAkB,GACrC,IAAI,CA6ZN"}
|
|
@@ -80,6 +80,7 @@ var push_media_segment_1 = require("./utils/push_media_segment");
|
|
|
80
80
|
*/
|
|
81
81
|
function RepresentationStream(_a, callbacks, parentCancelSignal) {
|
|
82
82
|
var content = _a.content, options = _a.options, playbackObserver = _a.playbackObserver, segmentSink = _a.segmentSink, segmentQueue = _a.segmentQueue, terminate = _a.terminate;
|
|
83
|
+
log_1.default.debug("Stream: Creating RepresentationStream", content.adaptation.type, content.representation.bitrate);
|
|
83
84
|
var period = content.period, adaptation = content.adaptation, representation = content.representation;
|
|
84
85
|
var bufferGoal = options.bufferGoal, maxBufferSize = options.maxBufferSize, drmSystemId = options.drmSystemId, fastSwitchThreshold = options.fastSwitchThreshold;
|
|
85
86
|
var bufferType = adaptation.type;
|
|
@@ -409,6 +410,7 @@ function RepresentationStream(_a, callbacks, parentCancelSignal) {
|
|
|
409
410
|
// We can thus ignore it, it is very unlikely to lead to true buffer issues.
|
|
410
411
|
return;
|
|
411
412
|
}
|
|
413
|
+
log_1.default.warn("Stream: Received fatal buffer error", adaptation.type, representation.bitrate, err instanceof Error ? err : null);
|
|
412
414
|
globalCanceller.cancel();
|
|
413
415
|
callbacks.error(err);
|
|
414
416
|
}
|
|
@@ -161,7 +161,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
161
161
|
// Workaround to support Firefox autoplay on FF 42.
|
|
162
162
|
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
|
|
163
163
|
videoElement.preload = "auto";
|
|
164
|
-
_this.version = /* PLAYER_VERSION */ "4.2.0-dev.
|
|
164
|
+
_this.version = /* PLAYER_VERSION */ "4.2.0-dev.2024100200";
|
|
165
165
|
_this.log = log_1.default;
|
|
166
166
|
_this.state = "STOPPED";
|
|
167
167
|
_this.videoElement = videoElement;
|
|
@@ -2689,5 +2689,5 @@ var Player = /** @class */ (function (_super) {
|
|
|
2689
2689
|
Player._priv_currentlyUsedVideoElements = new WeakSet();
|
|
2690
2690
|
return Player;
|
|
2691
2691
|
}(event_emitter_1.default));
|
|
2692
|
-
Player.version = /* PLAYER_VERSION */ "4.2.0-dev.
|
|
2692
|
+
Player.version = /* PLAYER_VERSION */ "4.2.0-dev.2024100200";
|
|
2693
2693
|
exports.default = Player;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directfile_content_initializer.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/init/directfile_content_initializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAI9E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AAIzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAOpE;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,kBAAkB;IAC1E;;OAEG;IACH,OAAO,CAAC,SAAS,CAAqB;IACtC;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAgB;IAEtC;;;OAGG;gBACS,QAAQ,EAAE,kBAAkB;IAMxC;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;;;;;;OAOG;IACI,KAAK,CACV,YAAY,EAAE,aAAa,EAC3B,gBAAgB,EAAE,6BAA6B,GAC9C,IAAI;IAmFP;;;;OAIG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI;IAIjF;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAKrB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CA0CrB;
|
|
1
|
+
{"version":3,"file":"directfile_content_initializer.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/init/directfile_content_initializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAI9E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AAIzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAOpE;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,kBAAkB;IAC1E;;OAEG;IACH,OAAO,CAAC,SAAS,CAAqB;IACtC;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAgB;IAEtC;;;OAGG;gBACS,QAAQ,EAAE,kBAAkB;IAMxC;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;;;;;;OAOG;IACI,KAAK,CACV,YAAY,EAAE,aAAa,EAC3B,gBAAgB,EAAE,6BAA6B,GAC9C,IAAI;IAmFP;;;;OAIG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI;IAIjF;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAKrB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CA0CrB;AAwED,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,wDAAwD;IACxD,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACxC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC1C,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;CACb"}
|
|
@@ -222,23 +222,31 @@ function getDirectFileInitialTime(mediaElement, startAt) {
|
|
|
222
222
|
}
|
|
223
223
|
var duration = mediaElement.duration;
|
|
224
224
|
if (typeof startAt.fromLastPosition === "number") {
|
|
225
|
-
if ((0, is_null_or_undefined_1.default)(duration)
|
|
226
|
-
|
|
227
|
-
|
|
225
|
+
if (!(0, is_null_or_undefined_1.default)(duration) && isFinite(duration)) {
|
|
226
|
+
return Math.max(0, duration + startAt.fromLastPosition);
|
|
227
|
+
}
|
|
228
|
+
if (mediaElement.seekable.length > 0) {
|
|
229
|
+
var lastSegmentEnd = mediaElement.seekable.end(mediaElement.seekable.length - 1);
|
|
230
|
+
if (isFinite(lastSegmentEnd)) {
|
|
231
|
+
return Math.max(0, lastSegmentEnd + startAt.fromLastPosition);
|
|
232
|
+
}
|
|
228
233
|
}
|
|
229
|
-
|
|
234
|
+
log_1.default.warn("Init: startAt.fromLastPosition set but no known duration, " +
|
|
235
|
+
"it may be too soon to seek");
|
|
236
|
+
return undefined;
|
|
230
237
|
}
|
|
231
238
|
else if (typeof startAt.fromLivePosition === "number") {
|
|
232
239
|
var livePosition = mediaElement.seekable.length > 0 ? mediaElement.seekable.end(0) : duration;
|
|
233
240
|
if ((0, is_null_or_undefined_1.default)(livePosition)) {
|
|
234
|
-
log_1.default.warn("startAt.fromLivePosition set but no known live position, " +
|
|
241
|
+
log_1.default.warn("Init: startAt.fromLivePosition set but no known live position, " +
|
|
242
|
+
"beginning at 0.");
|
|
235
243
|
return 0;
|
|
236
244
|
}
|
|
237
245
|
return Math.max(0, livePosition + startAt.fromLivePosition);
|
|
238
246
|
}
|
|
239
247
|
else if (!(0, is_null_or_undefined_1.default)(startAt.percentage)) {
|
|
240
248
|
if ((0, is_null_or_undefined_1.default)(duration) || !isFinite(duration)) {
|
|
241
|
-
log_1.default.warn("startAt.percentage set but no known duration, " + "beginning at 0.");
|
|
249
|
+
log_1.default.warn("Init: startAt.percentage set but no known duration, " + "beginning at 0.");
|
|
242
250
|
return 0;
|
|
243
251
|
}
|
|
244
252
|
var percentage = startAt.percentage;
|
|
@@ -18,6 +18,19 @@ import StreamEventsEmitter from "./utils/stream_events_emitter/stream_events_emi
|
|
|
18
18
|
export default class MultiThreadContentInitializer extends ContentInitializer {
|
|
19
19
|
/** Constructor settings associated to this `MultiThreadContentInitializer`. */
|
|
20
20
|
private _settings;
|
|
21
|
+
/**
|
|
22
|
+
* The WebWorker may be sending messages as soon as we're preparing the
|
|
23
|
+
* content but the `MultiThreadContentInitializer` is only able to handle all of
|
|
24
|
+
* them only once `start`ed.
|
|
25
|
+
*
|
|
26
|
+
* As such `_queuedWorkerMessages` is set to an Array when `prepare` has been
|
|
27
|
+
* called but not `start` yet, and contains all worker messages that have to
|
|
28
|
+
* be processed when `start` is called.
|
|
29
|
+
*
|
|
30
|
+
* It is set to `null` when there's no need to rely on that queue (either not
|
|
31
|
+
* yet `prepare`d or already `start`ed).
|
|
32
|
+
*/
|
|
33
|
+
private _queuedWorkerMessages;
|
|
21
34
|
/**
|
|
22
35
|
* Information relative to the current loaded content.
|
|
23
36
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi_thread_content_initializer.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/init/multi_thread_content_initializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAI9E,OAAO,KAAK,EACV,wCAAwC,EAGzC,MAAM,kBAAkB,CAAC;AAU1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMxD,OAAO,wBAAwB,MAAM,uCAAuC,CAAC;AAO7E,OAAO,KAAK,EAEV,6BAA6B,EAC9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAM1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAMtE,OAAO,KAAK,iBAAiB,MAAM,YAAY,CAAC;AAIhD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAIpE,OAAO,qBAAqB,MAAM,gCAAgC,CAAC;AACnE,OAAO,mBAAmB,MAAM,qDAAqD,CAAC;AAMtF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,kBAAkB;IAC3E,+EAA+E;IAC/E,OAAO,CAAC,SAAS,CAAuB;IAExC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB,CAAoD;IAC/E;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAgB;IACtC;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B,CAAgB;IAEpD;;;OAGG;IACH,OAAO,CAAC,eAAe,CAGrB;IAEF;;;;OAIG;gBACS,QAAQ,EAAE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"multi_thread_content_initializer.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/init/multi_thread_content_initializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -147,12 +147,14 @@ var MultiThreadContentInitializer = /** @class */ (function (_super) {
|
|
|
147
147
|
lastMessageId: 0,
|
|
148
148
|
resolvers: {},
|
|
149
149
|
};
|
|
150
|
+
_this._queuedWorkerMessages = null;
|
|
150
151
|
return _this;
|
|
151
152
|
}
|
|
152
153
|
/**
|
|
153
154
|
* Perform non-destructive preparation steps, to prepare a future content.
|
|
154
155
|
*/
|
|
155
156
|
MultiThreadContentInitializer.prototype.prepare = function () {
|
|
157
|
+
var _this = this;
|
|
156
158
|
var _a, _b;
|
|
157
159
|
if (this._currentContentInfo !== null || this._initCanceller.isUsed()) {
|
|
158
160
|
return;
|
|
@@ -197,6 +199,66 @@ var MultiThreadContentInitializer = /** @class */ (function (_super) {
|
|
|
197
199
|
if (this._initCanceller.isUsed()) {
|
|
198
200
|
return;
|
|
199
201
|
}
|
|
202
|
+
this._queuedWorkerMessages = [];
|
|
203
|
+
log_1.default.debug("MTCI: addEventListener prepare buffering worker messages");
|
|
204
|
+
var onmessage = function (evt) {
|
|
205
|
+
var msgData = evt.data;
|
|
206
|
+
var type = msgData.type;
|
|
207
|
+
switch (type) {
|
|
208
|
+
case "log" /* WorkerMessageType.LogMessage */: {
|
|
209
|
+
var formatted = msgData.value.logs.map(function (l) {
|
|
210
|
+
switch (typeof l) {
|
|
211
|
+
case "string":
|
|
212
|
+
case "number":
|
|
213
|
+
case "boolean":
|
|
214
|
+
case "undefined":
|
|
215
|
+
return l;
|
|
216
|
+
case "object":
|
|
217
|
+
if (l === null) {
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
return formatWorkerError(l);
|
|
221
|
+
default:
|
|
222
|
+
(0, assert_1.assertUnreachable)(l);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
switch (msgData.value.logLevel) {
|
|
226
|
+
case "NONE":
|
|
227
|
+
break;
|
|
228
|
+
case "ERROR":
|
|
229
|
+
log_1.default.error.apply(log_1.default, __spreadArray([], __read(formatted), false));
|
|
230
|
+
break;
|
|
231
|
+
case "WARNING":
|
|
232
|
+
log_1.default.warn.apply(log_1.default, __spreadArray([], __read(formatted), false));
|
|
233
|
+
break;
|
|
234
|
+
case "INFO":
|
|
235
|
+
log_1.default.info.apply(log_1.default, __spreadArray([], __read(formatted), false));
|
|
236
|
+
break;
|
|
237
|
+
case "DEBUG":
|
|
238
|
+
log_1.default.debug.apply(log_1.default, __spreadArray([], __read(formatted), false));
|
|
239
|
+
break;
|
|
240
|
+
default:
|
|
241
|
+
(0, assert_1.assertUnreachable)(msgData.value.logLevel);
|
|
242
|
+
}
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
default:
|
|
246
|
+
if (_this._queuedWorkerMessages !== null) {
|
|
247
|
+
_this._queuedWorkerMessages.push(evt);
|
|
248
|
+
}
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
this._settings.worker.addEventListener("message", onmessage);
|
|
253
|
+
var onmessageerror = function (_msg) {
|
|
254
|
+
log_1.default.error("MTCI: Error when receiving message from worker.");
|
|
255
|
+
};
|
|
256
|
+
this._settings.worker.addEventListener("messageerror", onmessageerror);
|
|
257
|
+
this._initCanceller.signal.register(function () {
|
|
258
|
+
log_1.default.debug("MTCI: removeEventListener prepare for worker message");
|
|
259
|
+
_this._settings.worker.removeEventListener("message", onmessage);
|
|
260
|
+
_this._settings.worker.removeEventListener("messageerror", onmessageerror);
|
|
261
|
+
});
|
|
200
262
|
// Also bind all `SharedReference` objects:
|
|
201
263
|
var throttleVideoBitrate = (_a = adaptiveOptions.throttlers.throttleBitrate.video) !== null && _a !== void 0 ? _a : new reference_1.default(Infinity);
|
|
202
264
|
bindNumberReferencesToWorker(worker, this._initCanceller.signal, [wantedBufferAhead, "wantedBufferAhead"], [maxVideoBufferSize, "maxVideoBufferSize"], [maxBufferAhead, "maxBufferAhead"], [maxBufferBehind, "maxBufferBehind"], [throttleVideoBitrate, "throttleVideoBitrate"]);
|
|
@@ -234,6 +296,7 @@ var MultiThreadContentInitializer = /** @class */ (function (_super) {
|
|
|
234
296
|
* @param {Object} playbackObserver
|
|
235
297
|
*/
|
|
236
298
|
MultiThreadContentInitializer.prototype.start = function (mediaElement, playbackObserver) {
|
|
299
|
+
var e_1, _a;
|
|
237
300
|
var _this = this;
|
|
238
301
|
this.prepare(); // Load Manifest if not already done
|
|
239
302
|
if (this._initCanceller.isUsed()) {
|
|
@@ -263,7 +326,7 @@ var MultiThreadContentInitializer = /** @class */ (function (_super) {
|
|
|
263
326
|
*/
|
|
264
327
|
var lastContentProtection = new reference_1.default(null);
|
|
265
328
|
var mediaSourceStatus = new reference_1.default(0 /* MediaSourceInitializationStatus.Nothing */);
|
|
266
|
-
var
|
|
329
|
+
var _b = this._initializeContentDecryption(mediaElement, lastContentProtection, mediaSourceStatus, function () { return reloadMediaSource(0, undefined, undefined); }, this._initCanceller.signal), drmInitializationStatus = _b.statusRef, contentDecryptor = _b.contentDecryptor;
|
|
267
330
|
var contentInfo = this._currentContentInfo;
|
|
268
331
|
if (contentInfo !== null) {
|
|
269
332
|
contentInfo.contentDecryptor = contentDecryptor;
|
|
@@ -863,47 +926,6 @@ var MultiThreadContentInitializer = /** @class */ (function (_super) {
|
|
|
863
926
|
}
|
|
864
927
|
}
|
|
865
928
|
break;
|
|
866
|
-
case "log" /* WorkerMessageType.LogMessage */: {
|
|
867
|
-
var formatted = msgData.value.logs.map(function (l) {
|
|
868
|
-
switch (typeof l) {
|
|
869
|
-
case "string":
|
|
870
|
-
case "number":
|
|
871
|
-
case "boolean":
|
|
872
|
-
case "undefined":
|
|
873
|
-
return l;
|
|
874
|
-
case "object":
|
|
875
|
-
if (l === null) {
|
|
876
|
-
return null;
|
|
877
|
-
}
|
|
878
|
-
return formatWorkerError(l);
|
|
879
|
-
default:
|
|
880
|
-
(0, assert_1.assertUnreachable)(l);
|
|
881
|
-
}
|
|
882
|
-
});
|
|
883
|
-
switch (msgData.value.logLevel) {
|
|
884
|
-
case "NONE":
|
|
885
|
-
break;
|
|
886
|
-
case "ERROR":
|
|
887
|
-
log_1.default.error.apply(log_1.default, __spreadArray([], __read(formatted), false));
|
|
888
|
-
break;
|
|
889
|
-
case "WARNING":
|
|
890
|
-
log_1.default.warn.apply(log_1.default, __spreadArray([], __read(formatted), false));
|
|
891
|
-
break;
|
|
892
|
-
case "INFO":
|
|
893
|
-
log_1.default.info.apply(log_1.default, __spreadArray([], __read(formatted), false));
|
|
894
|
-
break;
|
|
895
|
-
case "DEBUG":
|
|
896
|
-
log_1.default.debug.apply(log_1.default, __spreadArray([], __read(formatted), false));
|
|
897
|
-
break;
|
|
898
|
-
default:
|
|
899
|
-
(0, assert_1.assertUnreachable)(msgData.value.logLevel);
|
|
900
|
-
}
|
|
901
|
-
break;
|
|
902
|
-
}
|
|
903
|
-
case "init-success" /* WorkerMessageType.InitSuccess */:
|
|
904
|
-
case "init-error" /* WorkerMessageType.InitError */:
|
|
905
|
-
// Should already be handled by the API
|
|
906
|
-
break;
|
|
907
929
|
case "segment-sink-store-update" /* WorkerMessageType.SegmentSinkStoreUpdate */: {
|
|
908
930
|
if (((_27 = _this._currentContentInfo) === null || _27 === void 0 ? void 0 : _27.contentId) !== msgData.contentId) {
|
|
909
931
|
return;
|
|
@@ -918,12 +940,39 @@ var MultiThreadContentInitializer = /** @class */ (function (_super) {
|
|
|
918
940
|
}
|
|
919
941
|
break;
|
|
920
942
|
}
|
|
943
|
+
case "init-success" /* WorkerMessageType.InitSuccess */:
|
|
944
|
+
case "init-error" /* WorkerMessageType.InitError */:
|
|
945
|
+
// Should already be handled by the API
|
|
946
|
+
break;
|
|
947
|
+
case "log" /* WorkerMessageType.LogMessage */:
|
|
948
|
+
// Already handled by prepare's handler
|
|
949
|
+
break;
|
|
921
950
|
default:
|
|
922
951
|
(0, assert_1.assertUnreachable)(msgData);
|
|
923
952
|
}
|
|
924
953
|
};
|
|
954
|
+
log_1.default.debug("MTCI: addEventListener for worker message");
|
|
955
|
+
if (this._queuedWorkerMessages !== null) {
|
|
956
|
+
var bufferedMessages = this._queuedWorkerMessages.slice();
|
|
957
|
+
log_1.default.debug("MTCI: Processing buffered messages", bufferedMessages.length);
|
|
958
|
+
try {
|
|
959
|
+
for (var bufferedMessages_1 = __values(bufferedMessages), bufferedMessages_1_1 = bufferedMessages_1.next(); !bufferedMessages_1_1.done; bufferedMessages_1_1 = bufferedMessages_1.next()) {
|
|
960
|
+
var message = bufferedMessages_1_1.value;
|
|
961
|
+
onmessage(message);
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
965
|
+
finally {
|
|
966
|
+
try {
|
|
967
|
+
if (bufferedMessages_1_1 && !bufferedMessages_1_1.done && (_a = bufferedMessages_1.return)) _a.call(bufferedMessages_1);
|
|
968
|
+
}
|
|
969
|
+
finally { if (e_1) throw e_1.error; }
|
|
970
|
+
}
|
|
971
|
+
this._queuedWorkerMessages = null;
|
|
972
|
+
}
|
|
925
973
|
this._settings.worker.addEventListener("message", onmessage);
|
|
926
974
|
this._initCanceller.signal.register(function () {
|
|
975
|
+
log_1.default.debug("MTCI: removeEventListener for worker message");
|
|
927
976
|
_this._settings.worker.removeEventListener("message", onmessage);
|
|
928
977
|
});
|
|
929
978
|
};
|
|
@@ -1430,7 +1479,7 @@ var MultiThreadContentInitializer = /** @class */ (function (_super) {
|
|
|
1430
1479
|
}(types_1.ContentInitializer));
|
|
1431
1480
|
exports.default = MultiThreadContentInitializer;
|
|
1432
1481
|
function bindNumberReferencesToWorker(worker, cancellationSignal) {
|
|
1433
|
-
var
|
|
1482
|
+
var e_2, _a;
|
|
1434
1483
|
var refs = [];
|
|
1435
1484
|
for (var _i = 2; _i < arguments.length; _i++) {
|
|
1436
1485
|
refs[_i - 2] = arguments[_i];
|
|
@@ -1452,12 +1501,12 @@ function bindNumberReferencesToWorker(worker, cancellationSignal) {
|
|
|
1452
1501
|
_loop_1(ref);
|
|
1453
1502
|
}
|
|
1454
1503
|
}
|
|
1455
|
-
catch (
|
|
1504
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
1456
1505
|
finally {
|
|
1457
1506
|
try {
|
|
1458
1507
|
if (refs_1_1 && !refs_1_1.done && (_a = refs_1.return)) _a.call(refs_1);
|
|
1459
1508
|
}
|
|
1460
|
-
finally { if (
|
|
1509
|
+
finally { if (e_2) throw e_2.error; }
|
|
1461
1510
|
}
|
|
1462
1511
|
}
|
|
1463
1512
|
function formatWorkerError(sentError) {
|
|
@@ -55,7 +55,7 @@ export interface IInitialSeekAndPlayObject {
|
|
|
55
55
|
export default function performInitialSeekAndPlay({ mediaElement, playbackObserver, startTime, mustAutoPlay, isDirectfile, onWarning, }: {
|
|
56
56
|
mediaElement: IMediaElement;
|
|
57
57
|
playbackObserver: IMediaElementPlaybackObserver;
|
|
58
|
-
startTime: number | (() => number);
|
|
58
|
+
startTime: number | (() => number | undefined);
|
|
59
59
|
mustAutoPlay: boolean;
|
|
60
60
|
isDirectfile: boolean;
|
|
61
61
|
onWarning: (err: IPlayerError) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initial_seek_and_play.d.ts","sourceRoot":"","sources":["../../../../../src/main_thread/init/utils/initial_seek_and_play.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAKjF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,+BAA+B,CAAC;AAEvC,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB;AAC3B,0EAA0E;AACxE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB;;;GAGG;GACD;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE;AAC9B,sCAAsC;GACpC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,+CAA+C;AAC/C,MAAM,WAAW,yBAAyB;IACxC,kEAAkE;IAClE,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE3C;;;OAGG;IACH,oBAAoB,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;CACzD;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,EACE,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,EAAE;IACD,YAAY,EAAE,aAAa,CAAC;IAC5B,gBAAgB,EAAE,6BAA6B,CAAC;IAChD,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"initial_seek_and_play.d.ts","sourceRoot":"","sources":["../../../../../src/main_thread/init/utils/initial_seek_and_play.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAKjF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,+BAA+B,CAAC;AAEvC,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB;AAC3B,0EAA0E;AACxE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB;;;GAGG;GACD;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE;AAC9B,sCAAsC;GACpC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,+CAA+C;AAC/C,MAAM,WAAW,yBAAyB;IACxC,kEAAkE;IAClE,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE3C;;;OAGG;IACH,oBAAoB,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;CACzD;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,EACE,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,EAAE;IACD,YAAY,EAAE,aAAa,CAAC;IAC5B,gBAAgB,EAAE,6BAA6B,CAAC;IAChD,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/C,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;CACxC,EACD,YAAY,EAAE,kBAAkB,GAC/B,yBAAyB,CAmO3B"}
|
|
@@ -53,23 +53,39 @@ function performInitialSeekAndPlay(_a, cancelSignal) {
|
|
|
53
53
|
// So let's divide the two possibilities here.
|
|
54
54
|
if (!isDirectfile || typeof startTime === "number") {
|
|
55
55
|
var initiallySeekedTime = typeof startTime === "number" ? startTime : startTime();
|
|
56
|
-
if (initiallySeekedTime !== 0) {
|
|
56
|
+
if (initiallySeekedTime !== 0 && initiallySeekedTime !== undefined) {
|
|
57
57
|
performInitialSeek(initiallySeekedTime);
|
|
58
58
|
}
|
|
59
59
|
waitForSeekable();
|
|
60
60
|
}
|
|
61
61
|
else {
|
|
62
62
|
playbackObserver.listen(function (obs, stopListening) {
|
|
63
|
+
var initiallySeekedTime = typeof startTime === "number" ? startTime : startTime();
|
|
64
|
+
if (initiallySeekedTime === undefined &&
|
|
65
|
+
obs.readyState < HTMLMediaElement.HAVE_CURRENT_DATA) {
|
|
66
|
+
/**
|
|
67
|
+
* On browser, such as Safari, the HTMLMediaElement.duration
|
|
68
|
+
* and HTMLMediaElement.buffered may not be initialized at readyState 1, leading
|
|
69
|
+
* to cases where it can be equal to `Infinity`.
|
|
70
|
+
* If so, the range in which it is possible to seek is not yet known.
|
|
71
|
+
* To solve this, the seek should be done after readyState HAVE_CURRENT_DATA (2),
|
|
72
|
+
* at that time the previously mentioned attributes are correctly initialized and
|
|
73
|
+
* the range in which it is possible to seek is correctly known.
|
|
74
|
+
* If the initiallySeekedTime is still `undefined` when the readyState is >= 2,
|
|
75
|
+
* let assume that the initiallySeekedTime will never be known and continue
|
|
76
|
+
* the logic without seeking.
|
|
77
|
+
*/
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
63
80
|
if (obs.readyState >= 1) {
|
|
64
81
|
stopListening();
|
|
65
|
-
|
|
66
|
-
if (initiallySeekedTime_1 !== 0) {
|
|
82
|
+
if (initiallySeekedTime !== 0 && initiallySeekedTime !== undefined) {
|
|
67
83
|
if (can_seek_directly_after_loaded_metadata_1.default) {
|
|
68
|
-
performInitialSeek(
|
|
84
|
+
performInitialSeek(initiallySeekedTime);
|
|
69
85
|
}
|
|
70
86
|
else {
|
|
71
87
|
setTimeout(function () {
|
|
72
|
-
performInitialSeek(
|
|
88
|
+
performInitialSeek(initiallySeekedTime);
|
|
73
89
|
}, 0);
|
|
74
90
|
}
|
|
75
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main_media_source_interface.d.ts","sourceRoot":"","sources":["../../../src/mse/main_media_source_interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAOzF,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAGlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,EAEtB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAIjB;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,wBACnB,SAAQ,YAAY,CAAC,2BAA2B,CAChD,YAAW,qBAAqB;IAEhC,iCAAiC;IAC1B,EAAE,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACI,MAAM,EAAE,kBAAkB,CAAC;IAClC,iCAAiC;IAC1B,aAAa,EAAE,yBAAyB,EAAE,CAAC;IAClD,iCAAiC;IAC1B,UAAU,EAAE,UAAU,CAAC;IAC9B,6EAA6E;IAC7E,OAAO,CAAC,YAAY,CAAe;IACnC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAA6B;IACrD;;;;OAIG;IACH,OAAO,CAAC,qBAAqB,CAAuB;IACpD;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAElC;;;;;;OAMG;gBACS,EAAE,EAAE,MAAM;IAkDtB,iCAAiC;IAC1B,eAAe,CACpB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,GACZ,yBAAyB;IAO5B,iCAAiC;IAC1B,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI;IAItE,iCAAiC;IAC1B,wBAAwB;IAI/B,iCAAiC;IAC1B,mBAAmB;IAS1B,iCAAiC;IAC1B,eAAe;IAQtB,iCAAiC;IAC1B,OAAO;CAKf;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,sBAAsB;IACtE,kCAAkC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAClC,+EAA+E;IAC/E,OAAO,CAAC,aAAa,CAAgB;IACrC;;;OAGG;IACH,OAAO,CAAC,eAAe,CAAwB;IAC/C;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAA6C;IAEvE;;;;;;OAMG;gBACS,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa;IA8DhF,kCAAkC;IAC3B,YAAY,CACjB,GAAG,IAAI,EAAE,UAAU,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,GAC1D,OAAO,CAAC,MAAM,EAAE,CAAC;IAQpB,kCAAkC;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAa5D,kCAAkC;IAC3B,WAAW,IAAI,MAAM,EAAE;IAa9B,kCAAkC;IAC3B,KAAK,IAAI,IAAI;IASpB,kCAAkC;IAC3B,OAAO,IAAI,IAAI;IAStB,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"main_media_source_interface.d.ts","sourceRoot":"","sources":["../../../src/mse/main_media_source_interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAOzF,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAGlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,EAEtB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAIjB;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,wBACnB,SAAQ,YAAY,CAAC,2BAA2B,CAChD,YAAW,qBAAqB;IAEhC,iCAAiC;IAC1B,EAAE,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACI,MAAM,EAAE,kBAAkB,CAAC;IAClC,iCAAiC;IAC1B,aAAa,EAAE,yBAAyB,EAAE,CAAC;IAClD,iCAAiC;IAC1B,UAAU,EAAE,UAAU,CAAC;IAC9B,6EAA6E;IAC7E,OAAO,CAAC,YAAY,CAAe;IACnC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAA6B;IACrD;;;;OAIG;IACH,OAAO,CAAC,qBAAqB,CAAuB;IACpD;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAElC;;;;;;OAMG;gBACS,EAAE,EAAE,MAAM;IAkDtB,iCAAiC;IAC1B,eAAe,CACpB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,GACZ,yBAAyB;IAO5B,iCAAiC;IAC1B,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI;IAItE,iCAAiC;IAC1B,wBAAwB;IAI/B,iCAAiC;IAC1B,mBAAmB;IAS1B,iCAAiC;IAC1B,eAAe;IAQtB,iCAAiC;IAC1B,OAAO;CAKf;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,sBAAsB;IACtE,kCAAkC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAClC,+EAA+E;IAC/E,OAAO,CAAC,aAAa,CAAgB;IACrC;;;OAGG;IACH,OAAO,CAAC,eAAe,CAAwB;IAC/C;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAA6C;IAEvE;;;;;;OAMG;gBACS,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa;IA8DhF,kCAAkC;IAC3B,YAAY,CACjB,GAAG,IAAI,EAAE,UAAU,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,GAC1D,OAAO,CAAC,MAAM,EAAE,CAAC;IAQpB,kCAAkC;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAa5D,kCAAkC;IAC3B,WAAW,IAAI,MAAM,EAAE;IAa9B,kCAAkC;IAC3B,KAAK,IAAI,IAAI;IASpB,kCAAkC;IAC3B,OAAO,IAAI,IAAI;IAStB,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,qBAAqB;IAqJ7B,OAAO,CAAC,gBAAgB;CAyDzB"}
|
|
@@ -432,6 +432,19 @@ var MainSourceBufferInterface = /** @class */ (function () {
|
|
|
432
432
|
op.reject(error_1);
|
|
433
433
|
});
|
|
434
434
|
this._currentOperations = [];
|
|
435
|
+
// A synchronous error probably will not lead to updateend event, so we need to
|
|
436
|
+
// go to next queue element manually
|
|
437
|
+
//
|
|
438
|
+
// FIXME: This here is needed to ensure that we're not left with a
|
|
439
|
+
// dangling queue of operations.
|
|
440
|
+
// However it can potentially be counter-productive if e.g. the `appendBuffer`
|
|
441
|
+
// error was due to a full buffer and if there are pushing operations awaiting in
|
|
442
|
+
// the queue.
|
|
443
|
+
//
|
|
444
|
+
// A better solution might just be to reject all push operations right away here?
|
|
445
|
+
// Only for a `QuotaExceededError` (to check MSE)?
|
|
446
|
+
// However this is too disruptive for what is now a hotfix
|
|
447
|
+
this._performNextOperation();
|
|
435
448
|
}
|
|
436
449
|
}
|
|
437
450
|
else {
|
|
@@ -443,11 +456,17 @@ var MainSourceBufferInterface = /** @class */ (function () {
|
|
|
443
456
|
this._sourceBuffer.remove(start, end);
|
|
444
457
|
}
|
|
445
458
|
catch (err) {
|
|
446
|
-
var
|
|
459
|
+
var error_2 = err instanceof Error
|
|
447
460
|
? new errors_1.SourceBufferError(err.name, err.message, false)
|
|
448
461
|
: new errors_1.SourceBufferError("Error", "Unknown SourceBuffer Error during remove", false);
|
|
449
|
-
nextElem.reject(
|
|
462
|
+
nextElem.reject(error_2);
|
|
463
|
+
this._currentOperations.forEach(function (op) {
|
|
464
|
+
op.reject(error_2);
|
|
465
|
+
});
|
|
450
466
|
this._currentOperations = [];
|
|
467
|
+
// A synchronous error probably will not lead to updateend event, so we need to
|
|
468
|
+
// go to next queue element manually
|
|
469
|
+
this._performNextOperation();
|
|
451
470
|
}
|
|
452
471
|
}
|
|
453
472
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../../../../src/transports/smooth/pipelines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,KAAK,EAeV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAUlB,MAAM,CAAC,OAAO,WAAW,gBAAgB,EAAE,iBAAiB,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../../../../src/transports/smooth/pipelines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,KAAK,EAeV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAUlB,MAAM,CAAC,OAAO,WAAW,gBAAgB,EAAE,iBAAiB,GAAG,mBAAmB,CA4XjF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse_text_track.d.ts","sourceRoot":"","sources":["../../../../src/transports/utils/parse_text_track.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEvF;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAG1E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"parse_text_track.d.ts","sourceRoot":"","sources":["../../../../src/transports/utils/parse_text_track.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEvF;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAG1E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,CAepF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAkBjC;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,EACE,OAAO,EACP,QAAQ,EACR,MAAM,GACP,EAAE;IACD,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,EACD,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,SAAS,EAAE,OAAO,GACjB,qBAAqB,GAAG,IAAI,CAyB9B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,OAAO,GACjB,qBAAqB,GAAG,IAAI,CAmB9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedded_worker.d.ts","sourceRoot":"","sources":["../../../src/__GENERATED_CODE/embedded_worker.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"embedded_worker.d.ts","sourceRoot":"","sources":["../../../src/__GENERATED_CODE/embedded_worker.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,IAAI,MAAkyrT,CAAC;AAC7yrT,OAAO,EAAE,IAAI,IAAI,eAAe,EAAE,CAAC;AACnC,eAAe,IAAI,CAAC"}
|