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"}
|
|
@@ -51,6 +51,9 @@ export default function initializeWorkerMain() {
|
|
|
51
51
|
* When set, emit playback observation made on the main thread.
|
|
52
52
|
*/
|
|
53
53
|
let playbackObservationRef = null;
|
|
54
|
+
onmessageerror = (_msg) => {
|
|
55
|
+
log.error("MTCI: Error when receiving message from main thread.");
|
|
56
|
+
};
|
|
54
57
|
onmessage = function (e) {
|
|
55
58
|
var _a, _b;
|
|
56
59
|
log.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"}
|
|
@@ -271,8 +271,11 @@ export default function AdaptationStream({ playbackObserver, content, options, r
|
|
|
271
271
|
* anything this function is doing and free allocated resources.
|
|
272
272
|
*/
|
|
273
273
|
function createRepresentationStream(representation, terminateCurrentStream, representationStreamCallbacks, fnCancelSignal) {
|
|
274
|
+
/** Set to `true` if we've encountered an error with this `RepresentationStream` */
|
|
275
|
+
let hasEncounteredError = false;
|
|
274
276
|
const bufferGoalCanceller = new TaskCanceller();
|
|
275
277
|
bufferGoalCanceller.linkToSignal(fnCancelSignal);
|
|
278
|
+
/** Actually built buffer size, in seconds. */
|
|
276
279
|
const bufferGoal = createMappedReference(wantedBufferAhead, (prev) => {
|
|
277
280
|
return getBufferGoal(representation, prev);
|
|
278
281
|
}, bufferGoalCanceller.signal);
|
|
@@ -281,6 +284,17 @@ export default function AdaptationStream({ playbackObserver, content, options, r
|
|
|
281
284
|
const updatedCallbacks = objectAssign({}, representationStreamCallbacks, {
|
|
282
285
|
error(err) {
|
|
283
286
|
var _a;
|
|
287
|
+
if (hasEncounteredError) {
|
|
288
|
+
// A RepresentationStream might trigger multiple Errors (for example
|
|
289
|
+
// multiple segments it tried to push at once led to errors).
|
|
290
|
+
// In that case, we'll only consider the first Error.
|
|
291
|
+
//
|
|
292
|
+
// That could mean that we're hiding legitimate issues but handling
|
|
293
|
+
// multiple of those errors at once is too hard a task for now.
|
|
294
|
+
log.warn("Stream: Ignoring RepresentationStream error", err);
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
hasEncounteredError = true;
|
|
284
298
|
const formattedError = formatError(err, {
|
|
285
299
|
defaultCode: "NONE",
|
|
286
300
|
defaultReason: "Unknown `RepresentationStream` error",
|
|
@@ -289,6 +303,7 @@ export default function AdaptationStream({ playbackObserver, content, options, r
|
|
|
289
303
|
representationStreamCallbacks.error(err);
|
|
290
304
|
}
|
|
291
305
|
else {
|
|
306
|
+
log.warn("Stream: received BUFFER_FULL_ERROR", adaptation.type, representation.bitrate);
|
|
292
307
|
const wba = wantedBufferAhead.getValue();
|
|
293
308
|
const lastBufferGoalRatio = (_a = bufferGoalRatioMap.get(representation.id)) !== null && _a !== void 0 ? _a : 1;
|
|
294
309
|
// 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"}
|
|
@@ -65,6 +65,7 @@ import pushMediaSegment from "./utils/push_media_segment";
|
|
|
65
65
|
* doing.
|
|
66
66
|
*/
|
|
67
67
|
export default function RepresentationStream({ content, options, playbackObserver, segmentSink, segmentQueue, terminate, }, callbacks, parentCancelSignal) {
|
|
68
|
+
log.debug("Stream: Creating RepresentationStream", content.adaptation.type, content.representation.bitrate);
|
|
68
69
|
const { period, adaptation, representation } = content;
|
|
69
70
|
const { bufferGoal, maxBufferSize, drmSystemId, fastSwitchThreshold } = options;
|
|
70
71
|
const bufferType = adaptation.type;
|
|
@@ -383,6 +384,7 @@ export default function RepresentationStream({ content, options, playbackObserve
|
|
|
383
384
|
// We can thus ignore it, it is very unlikely to lead to true buffer issues.
|
|
384
385
|
return;
|
|
385
386
|
}
|
|
387
|
+
log.warn("Stream: Received fatal buffer error", adaptation.type, representation.bitrate, err instanceof Error ? err : null);
|
|
386
388
|
globalCanceller.cancel();
|
|
387
389
|
callbacks.error(err);
|
|
388
390
|
}
|
|
@@ -143,7 +143,7 @@ class Player extends EventEmitter {
|
|
|
143
143
|
// Workaround to support Firefox autoplay on FF 42.
|
|
144
144
|
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
|
|
145
145
|
videoElement.preload = "auto";
|
|
146
|
-
this.version = /* PLAYER_VERSION */ "4.2.0-dev.
|
|
146
|
+
this.version = /* PLAYER_VERSION */ "4.2.0-dev.2024100200";
|
|
147
147
|
this.log = log;
|
|
148
148
|
this.state = "STOPPED";
|
|
149
149
|
this.videoElement = videoElement;
|
|
@@ -2471,5 +2471,5 @@ class Player extends EventEmitter {
|
|
|
2471
2471
|
* Use of a WeakSet ensure the object is garbage collected if it's not used anymore.
|
|
2472
2472
|
*/
|
|
2473
2473
|
Player._priv_currentlyUsedVideoElements = new WeakSet();
|
|
2474
|
-
Player.version = /* PLAYER_VERSION */ "4.2.0-dev.
|
|
2474
|
+
Player.version = /* PLAYER_VERSION */ "4.2.0-dev.2024100200";
|
|
2475
2475
|
export 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"}
|
|
@@ -191,23 +191,31 @@ function getDirectFileInitialTime(mediaElement, startAt) {
|
|
|
191
191
|
}
|
|
192
192
|
const duration = mediaElement.duration;
|
|
193
193
|
if (typeof startAt.fromLastPosition === "number") {
|
|
194
|
-
if (isNullOrUndefined(duration)
|
|
195
|
-
|
|
196
|
-
|
|
194
|
+
if (!isNullOrUndefined(duration) && isFinite(duration)) {
|
|
195
|
+
return Math.max(0, duration + startAt.fromLastPosition);
|
|
196
|
+
}
|
|
197
|
+
if (mediaElement.seekable.length > 0) {
|
|
198
|
+
const lastSegmentEnd = mediaElement.seekable.end(mediaElement.seekable.length - 1);
|
|
199
|
+
if (isFinite(lastSegmentEnd)) {
|
|
200
|
+
return Math.max(0, lastSegmentEnd + startAt.fromLastPosition);
|
|
201
|
+
}
|
|
197
202
|
}
|
|
198
|
-
|
|
203
|
+
log.warn("Init: startAt.fromLastPosition set but no known duration, " +
|
|
204
|
+
"it may be too soon to seek");
|
|
205
|
+
return undefined;
|
|
199
206
|
}
|
|
200
207
|
else if (typeof startAt.fromLivePosition === "number") {
|
|
201
208
|
const livePosition = mediaElement.seekable.length > 0 ? mediaElement.seekable.end(0) : duration;
|
|
202
209
|
if (isNullOrUndefined(livePosition)) {
|
|
203
|
-
log.warn("startAt.fromLivePosition set but no known live position, " +
|
|
210
|
+
log.warn("Init: startAt.fromLivePosition set but no known live position, " +
|
|
211
|
+
"beginning at 0.");
|
|
204
212
|
return 0;
|
|
205
213
|
}
|
|
206
214
|
return Math.max(0, livePosition + startAt.fromLivePosition);
|
|
207
215
|
}
|
|
208
216
|
else if (!isNullOrUndefined(startAt.percentage)) {
|
|
209
217
|
if (isNullOrUndefined(duration) || !isFinite(duration)) {
|
|
210
|
-
log.warn("startAt.percentage set but no known duration, " + "beginning at 0.");
|
|
218
|
+
log.warn("Init: startAt.percentage set but no known duration, " + "beginning at 0.");
|
|
211
219
|
return 0;
|
|
212
220
|
}
|
|
213
221
|
const { percentage } = startAt;
|
|
@@ -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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"}
|
|
@@ -46,6 +46,7 @@ export default class MultiThreadContentInitializer extends ContentInitializer {
|
|
|
46
46
|
lastMessageId: 0,
|
|
47
47
|
resolvers: {},
|
|
48
48
|
};
|
|
49
|
+
this._queuedWorkerMessages = null;
|
|
49
50
|
}
|
|
50
51
|
/**
|
|
51
52
|
* Perform non-destructive preparation steps, to prepare a future content.
|
|
@@ -95,6 +96,66 @@ export default class MultiThreadContentInitializer extends ContentInitializer {
|
|
|
95
96
|
if (this._initCanceller.isUsed()) {
|
|
96
97
|
return;
|
|
97
98
|
}
|
|
99
|
+
this._queuedWorkerMessages = [];
|
|
100
|
+
log.debug("MTCI: addEventListener prepare buffering worker messages");
|
|
101
|
+
const onmessage = (evt) => {
|
|
102
|
+
const msgData = evt.data;
|
|
103
|
+
const type = msgData.type;
|
|
104
|
+
switch (type) {
|
|
105
|
+
case "log" /* WorkerMessageType.LogMessage */: {
|
|
106
|
+
const formatted = msgData.value.logs.map((l) => {
|
|
107
|
+
switch (typeof l) {
|
|
108
|
+
case "string":
|
|
109
|
+
case "number":
|
|
110
|
+
case "boolean":
|
|
111
|
+
case "undefined":
|
|
112
|
+
return l;
|
|
113
|
+
case "object":
|
|
114
|
+
if (l === null) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
return formatWorkerError(l);
|
|
118
|
+
default:
|
|
119
|
+
assertUnreachable(l);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
switch (msgData.value.logLevel) {
|
|
123
|
+
case "NONE":
|
|
124
|
+
break;
|
|
125
|
+
case "ERROR":
|
|
126
|
+
log.error(...formatted);
|
|
127
|
+
break;
|
|
128
|
+
case "WARNING":
|
|
129
|
+
log.warn(...formatted);
|
|
130
|
+
break;
|
|
131
|
+
case "INFO":
|
|
132
|
+
log.info(...formatted);
|
|
133
|
+
break;
|
|
134
|
+
case "DEBUG":
|
|
135
|
+
log.debug(...formatted);
|
|
136
|
+
break;
|
|
137
|
+
default:
|
|
138
|
+
assertUnreachable(msgData.value.logLevel);
|
|
139
|
+
}
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
default:
|
|
143
|
+
if (this._queuedWorkerMessages !== null) {
|
|
144
|
+
this._queuedWorkerMessages.push(evt);
|
|
145
|
+
}
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
this._settings.worker.addEventListener("message", onmessage);
|
|
150
|
+
const onmessageerror = (_msg) => {
|
|
151
|
+
log.error("MTCI: Error when receiving message from worker.");
|
|
152
|
+
};
|
|
153
|
+
this._settings.worker.addEventListener("messageerror", onmessageerror);
|
|
154
|
+
this._initCanceller.signal.register(() => {
|
|
155
|
+
log.debug("MTCI: removeEventListener prepare for worker message");
|
|
156
|
+
this._settings.worker.removeEventListener("message", onmessage);
|
|
157
|
+
this._settings.worker.removeEventListener("messageerror", onmessageerror);
|
|
158
|
+
});
|
|
98
159
|
// Also bind all `SharedReference` objects:
|
|
99
160
|
const throttleVideoBitrate = (_a = adaptiveOptions.throttlers.throttleBitrate.video) !== null && _a !== void 0 ? _a : new SharedReference(Infinity);
|
|
100
161
|
bindNumberReferencesToWorker(worker, this._initCanceller.signal, [wantedBufferAhead, "wantedBufferAhead"], [maxVideoBufferSize, "maxVideoBufferSize"], [maxBufferAhead, "maxBufferAhead"], [maxBufferBehind, "maxBufferBehind"], [throttleVideoBitrate, "throttleVideoBitrate"]);
|
|
@@ -760,47 +821,6 @@ export default class MultiThreadContentInitializer extends ContentInitializer {
|
|
|
760
821
|
}
|
|
761
822
|
}
|
|
762
823
|
break;
|
|
763
|
-
case "log" /* WorkerMessageType.LogMessage */: {
|
|
764
|
-
const formatted = msgData.value.logs.map((l) => {
|
|
765
|
-
switch (typeof l) {
|
|
766
|
-
case "string":
|
|
767
|
-
case "number":
|
|
768
|
-
case "boolean":
|
|
769
|
-
case "undefined":
|
|
770
|
-
return l;
|
|
771
|
-
case "object":
|
|
772
|
-
if (l === null) {
|
|
773
|
-
return null;
|
|
774
|
-
}
|
|
775
|
-
return formatWorkerError(l);
|
|
776
|
-
default:
|
|
777
|
-
assertUnreachable(l);
|
|
778
|
-
}
|
|
779
|
-
});
|
|
780
|
-
switch (msgData.value.logLevel) {
|
|
781
|
-
case "NONE":
|
|
782
|
-
break;
|
|
783
|
-
case "ERROR":
|
|
784
|
-
log.error(...formatted);
|
|
785
|
-
break;
|
|
786
|
-
case "WARNING":
|
|
787
|
-
log.warn(...formatted);
|
|
788
|
-
break;
|
|
789
|
-
case "INFO":
|
|
790
|
-
log.info(...formatted);
|
|
791
|
-
break;
|
|
792
|
-
case "DEBUG":
|
|
793
|
-
log.debug(...formatted);
|
|
794
|
-
break;
|
|
795
|
-
default:
|
|
796
|
-
assertUnreachable(msgData.value.logLevel);
|
|
797
|
-
}
|
|
798
|
-
break;
|
|
799
|
-
}
|
|
800
|
-
case "init-success" /* WorkerMessageType.InitSuccess */:
|
|
801
|
-
case "init-error" /* WorkerMessageType.InitError */:
|
|
802
|
-
// Should already be handled by the API
|
|
803
|
-
break;
|
|
804
824
|
case "segment-sink-store-update" /* WorkerMessageType.SegmentSinkStoreUpdate */: {
|
|
805
825
|
if (((_27 = this._currentContentInfo) === null || _27 === void 0 ? void 0 : _27.contentId) !== msgData.contentId) {
|
|
806
826
|
return;
|
|
@@ -815,12 +835,29 @@ export default class MultiThreadContentInitializer extends ContentInitializer {
|
|
|
815
835
|
}
|
|
816
836
|
break;
|
|
817
837
|
}
|
|
838
|
+
case "init-success" /* WorkerMessageType.InitSuccess */:
|
|
839
|
+
case "init-error" /* WorkerMessageType.InitError */:
|
|
840
|
+
// Should already be handled by the API
|
|
841
|
+
break;
|
|
842
|
+
case "log" /* WorkerMessageType.LogMessage */:
|
|
843
|
+
// Already handled by prepare's handler
|
|
844
|
+
break;
|
|
818
845
|
default:
|
|
819
846
|
assertUnreachable(msgData);
|
|
820
847
|
}
|
|
821
848
|
};
|
|
849
|
+
log.debug("MTCI: addEventListener for worker message");
|
|
850
|
+
if (this._queuedWorkerMessages !== null) {
|
|
851
|
+
const bufferedMessages = this._queuedWorkerMessages.slice();
|
|
852
|
+
log.debug("MTCI: Processing buffered messages", bufferedMessages.length);
|
|
853
|
+
for (const message of bufferedMessages) {
|
|
854
|
+
onmessage(message);
|
|
855
|
+
}
|
|
856
|
+
this._queuedWorkerMessages = null;
|
|
857
|
+
}
|
|
822
858
|
this._settings.worker.addEventListener("message", onmessage);
|
|
823
859
|
this._initCanceller.signal.register(() => {
|
|
860
|
+
log.debug("MTCI: removeEventListener for worker message");
|
|
824
861
|
this._settings.worker.removeEventListener("message", onmessage);
|
|
825
862
|
});
|
|
826
863
|
}
|
|
@@ -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"}
|
|
@@ -49,17 +49,33 @@ export default function performInitialSeekAndPlay({ mediaElement, playbackObserv
|
|
|
49
49
|
// So let's divide the two possibilities here.
|
|
50
50
|
if (!isDirectfile || typeof startTime === "number") {
|
|
51
51
|
const initiallySeekedTime = typeof startTime === "number" ? startTime : startTime();
|
|
52
|
-
if (initiallySeekedTime !== 0) {
|
|
52
|
+
if (initiallySeekedTime !== 0 && initiallySeekedTime !== undefined) {
|
|
53
53
|
performInitialSeek(initiallySeekedTime);
|
|
54
54
|
}
|
|
55
55
|
waitForSeekable();
|
|
56
56
|
}
|
|
57
57
|
else {
|
|
58
58
|
playbackObserver.listen((obs, stopListening) => {
|
|
59
|
+
const initiallySeekedTime = typeof startTime === "number" ? startTime : startTime();
|
|
60
|
+
if (initiallySeekedTime === undefined &&
|
|
61
|
+
obs.readyState < HTMLMediaElement.HAVE_CURRENT_DATA) {
|
|
62
|
+
/**
|
|
63
|
+
* On browser, such as Safari, the HTMLMediaElement.duration
|
|
64
|
+
* and HTMLMediaElement.buffered may not be initialized at readyState 1, leading
|
|
65
|
+
* to cases where it can be equal to `Infinity`.
|
|
66
|
+
* If so, the range in which it is possible to seek is not yet known.
|
|
67
|
+
* To solve this, the seek should be done after readyState HAVE_CURRENT_DATA (2),
|
|
68
|
+
* at that time the previously mentioned attributes are correctly initialized and
|
|
69
|
+
* the range in which it is possible to seek is correctly known.
|
|
70
|
+
* If the initiallySeekedTime is still `undefined` when the readyState is >= 2,
|
|
71
|
+
* let assume that the initiallySeekedTime will never be known and continue
|
|
72
|
+
* the logic without seeking.
|
|
73
|
+
*/
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
59
76
|
if (obs.readyState >= 1) {
|
|
60
77
|
stopListening();
|
|
61
|
-
|
|
62
|
-
if (initiallySeekedTime !== 0) {
|
|
78
|
+
if (initiallySeekedTime !== 0 && initiallySeekedTime !== undefined) {
|
|
63
79
|
if (canSeekDirectlyAfterLoadedMetadata) {
|
|
64
80
|
performInitialSeek(initiallySeekedTime);
|
|
65
81
|
}
|
|
@@ -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"}
|
|
@@ -336,6 +336,19 @@ export class MainSourceBufferInterface {
|
|
|
336
336
|
op.reject(error);
|
|
337
337
|
});
|
|
338
338
|
this._currentOperations = [];
|
|
339
|
+
// A synchronous error probably will not lead to updateend event, so we need to
|
|
340
|
+
// go to next queue element manually
|
|
341
|
+
//
|
|
342
|
+
// FIXME: This here is needed to ensure that we're not left with a
|
|
343
|
+
// dangling queue of operations.
|
|
344
|
+
// However it can potentially be counter-productive if e.g. the `appendBuffer`
|
|
345
|
+
// error was due to a full buffer and if there are pushing operations awaiting in
|
|
346
|
+
// the queue.
|
|
347
|
+
//
|
|
348
|
+
// A better solution might just be to reject all push operations right away here?
|
|
349
|
+
// Only for a `QuotaExceededError` (to check MSE)?
|
|
350
|
+
// However this is too disruptive for what is now a hotfix
|
|
351
|
+
this._performNextOperation();
|
|
339
352
|
}
|
|
340
353
|
}
|
|
341
354
|
else {
|
|
@@ -351,7 +364,13 @@ export class MainSourceBufferInterface {
|
|
|
351
364
|
? new SourceBufferError(err.name, err.message, false)
|
|
352
365
|
: new SourceBufferError("Error", "Unknown SourceBuffer Error during remove", false);
|
|
353
366
|
nextElem.reject(error);
|
|
367
|
+
this._currentOperations.forEach((op) => {
|
|
368
|
+
op.reject(error);
|
|
369
|
+
});
|
|
354
370
|
this._currentOperations = [];
|
|
371
|
+
// A synchronous error probably will not lead to updateend event, so we need to
|
|
372
|
+
// go to next queue element manually
|
|
373
|
+
this._performNextOperation();
|
|
355
374
|
}
|
|
356
375
|
}
|
|
357
376
|
}
|
|
@@ -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"}
|
|
@@ -251,6 +251,7 @@ export default function (transportOptions) {
|
|
|
251
251
|
const lcCodec = codecs.toLowerCase();
|
|
252
252
|
if (mimeType === "application/ttml+xml+mp4" ||
|
|
253
253
|
lcCodec === "stpp" ||
|
|
254
|
+
lcCodec === "stpp.ttml" ||
|
|
254
255
|
lcCodec === "stpp.ttml.im1t") {
|
|
255
256
|
_sdType = "ttml";
|
|
256
257
|
}
|
|
@@ -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"}
|