mediabunny 1.24.2 → 1.24.3
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/bundles/mediabunny.cjs +31 -9
- package/dist/bundles/mediabunny.min.cjs +2 -2
- package/dist/bundles/mediabunny.min.mjs +2 -2
- package/dist/bundles/mediabunny.mjs +31 -9
- package/dist/modules/src/media-source.d.ts.map +1 -1
- package/dist/modules/src/media-source.js +7 -4
- package/dist/modules/src/source.d.ts.map +1 -1
- package/dist/modules/src/source.js +24 -6
- package/dist/modules/src/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/media-source.ts +8 -4
- package/src/source.ts +30 -6
|
@@ -15072,10 +15072,16 @@ var Mediabunny = (() => {
|
|
|
15072
15072
|
}
|
|
15073
15073
|
break;
|
|
15074
15074
|
}
|
|
15075
|
+
if (worker.aborted) {
|
|
15076
|
+
break;
|
|
15077
|
+
}
|
|
15075
15078
|
this.onread?.(worker.currentPos, worker.currentPos + value.length);
|
|
15076
15079
|
this._orchestrator.supplyWorkerData(worker, value);
|
|
15077
15080
|
} else {
|
|
15078
15081
|
const data = await this._blob.slice(worker.currentPos, worker.targetPos).arrayBuffer();
|
|
15082
|
+
if (worker.aborted) {
|
|
15083
|
+
break;
|
|
15084
|
+
}
|
|
15079
15085
|
this.onread?.(worker.currentPos, worker.currentPos + data.byteLength);
|
|
15080
15086
|
this._orchestrator.supplyWorkerData(worker, new Uint8Array(data));
|
|
15081
15087
|
}
|
|
@@ -15189,7 +15195,7 @@ var Mediabunny = (() => {
|
|
|
15189
15195
|
}
|
|
15190
15196
|
/** @internal */
|
|
15191
15197
|
async _runWorker(worker) {
|
|
15192
|
-
while (
|
|
15198
|
+
while (true) {
|
|
15193
15199
|
const existing = this._existingResponses.get(worker);
|
|
15194
15200
|
this._existingResponses.delete(worker);
|
|
15195
15201
|
let abortController = existing?.abortController;
|
|
@@ -15249,6 +15255,9 @@ var Mediabunny = (() => {
|
|
|
15249
15255
|
throw error;
|
|
15250
15256
|
}
|
|
15251
15257
|
}
|
|
15258
|
+
if (worker.aborted) {
|
|
15259
|
+
break;
|
|
15260
|
+
}
|
|
15252
15261
|
const { done, value } = readResult;
|
|
15253
15262
|
if (done) {
|
|
15254
15263
|
this._orchestrator.forgetWorker(worker);
|
|
@@ -15263,6 +15272,9 @@ var Mediabunny = (() => {
|
|
|
15263
15272
|
this.onread?.(worker.currentPos, worker.currentPos + value.length);
|
|
15264
15273
|
this._orchestrator.supplyWorkerData(worker, value);
|
|
15265
15274
|
}
|
|
15275
|
+
if (worker.aborted) {
|
|
15276
|
+
break;
|
|
15277
|
+
}
|
|
15266
15278
|
}
|
|
15267
15279
|
worker.running = false;
|
|
15268
15280
|
}
|
|
@@ -15401,6 +15413,9 @@ var Mediabunny = (() => {
|
|
|
15401
15413
|
const originalTargetPos = worker.targetPos;
|
|
15402
15414
|
let data = this._options.read(worker.currentPos, originalTargetPos);
|
|
15403
15415
|
if (data instanceof Promise) data = await data;
|
|
15416
|
+
if (worker.aborted) {
|
|
15417
|
+
break;
|
|
15418
|
+
}
|
|
15404
15419
|
if (data instanceof Uint8Array) {
|
|
15405
15420
|
data = toUint8Array(data);
|
|
15406
15421
|
if (data.length !== originalTargetPos - worker.currentPos) {
|
|
@@ -15425,6 +15440,9 @@ var Mediabunny = (() => {
|
|
|
15425
15440
|
if (!(value instanceof Uint8Array)) {
|
|
15426
15441
|
throw new TypeError("ReadableStream returned by options.read must yield Uint8Array chunks.");
|
|
15427
15442
|
}
|
|
15443
|
+
if (worker.aborted) {
|
|
15444
|
+
break;
|
|
15445
|
+
}
|
|
15428
15446
|
const data2 = toUint8Array(value);
|
|
15429
15447
|
this.onread?.(worker.currentPos, worker.currentPos + data2.length);
|
|
15430
15448
|
this._orchestrator.supplyWorkerData(worker, data2);
|
|
@@ -15797,7 +15815,10 @@ var Mediabunny = (() => {
|
|
|
15797
15815
|
currentPos: startPos,
|
|
15798
15816
|
targetPos,
|
|
15799
15817
|
running: false,
|
|
15800
|
-
|
|
15818
|
+
// Due to async shenanigans, it can happen that workers are started after disposal. In this case, instead of
|
|
15819
|
+
// simply not creating the worker, we allow it to run but immediately label it as aborted, so it can then
|
|
15820
|
+
// shut itself down.
|
|
15821
|
+
aborted: this.disposed,
|
|
15801
15822
|
pendingSlices: [],
|
|
15802
15823
|
age: this.nextAge++
|
|
15803
15824
|
};
|
|
@@ -15837,9 +15858,7 @@ var Mediabunny = (() => {
|
|
|
15837
15858
|
}
|
|
15838
15859
|
/** Called by a worker when it has read some data. */
|
|
15839
15860
|
supplyWorkerData(worker, bytes2) {
|
|
15840
|
-
|
|
15841
|
-
return;
|
|
15842
|
-
}
|
|
15861
|
+
assert(!worker.aborted);
|
|
15843
15862
|
const start = worker.currentPos;
|
|
15844
15863
|
const end = start + bytes2.length;
|
|
15845
15864
|
this.insertIntoCache({
|
|
@@ -22840,7 +22859,7 @@ ${cue.notes ?? ""}`;
|
|
|
22840
22859
|
type: "videoTrack",
|
|
22841
22860
|
trackId: this._workerTrackId,
|
|
22842
22861
|
track: this._track
|
|
22843
|
-
}
|
|
22862
|
+
});
|
|
22844
22863
|
this._workerListener = (event) => {
|
|
22845
22864
|
const message = event.data;
|
|
22846
22865
|
if (message.type === "videoFrame" && message.trackId === this._workerTrackId) {
|
|
@@ -23443,16 +23462,17 @@ ${cue.notes ?? ""}`;
|
|
|
23443
23462
|
supported: typeof MediaStreamTrackProcessor !== "undefined"
|
|
23444
23463
|
});
|
|
23445
23464
|
const abortControllers = /* @__PURE__ */ new Map();
|
|
23446
|
-
const
|
|
23465
|
+
const activeTracks = /* @__PURE__ */ new Map();
|
|
23447
23466
|
self.addEventListener("message", (event) => {
|
|
23448
23467
|
const message = event.data;
|
|
23449
23468
|
switch (message.type) {
|
|
23450
23469
|
case "videoTrack":
|
|
23451
23470
|
{
|
|
23471
|
+
activeTracks.set(message.trackId, message.track);
|
|
23452
23472
|
const processor = new MediaStreamTrackProcessor({ track: message.track });
|
|
23453
23473
|
const consumer = new WritableStream({
|
|
23454
23474
|
write: (videoFrame) => {
|
|
23455
|
-
if (
|
|
23475
|
+
if (!activeTracks.has(message.trackId)) {
|
|
23456
23476
|
videoFrame.close();
|
|
23457
23477
|
return;
|
|
23458
23478
|
}
|
|
@@ -23485,7 +23505,9 @@ ${cue.notes ?? ""}`;
|
|
|
23485
23505
|
abortController.abort();
|
|
23486
23506
|
abortControllers.delete(message.trackId);
|
|
23487
23507
|
}
|
|
23488
|
-
|
|
23508
|
+
const track = activeTracks.get(message.trackId);
|
|
23509
|
+
track?.stop();
|
|
23510
|
+
activeTracks.delete(message.trackId);
|
|
23489
23511
|
sendMessage({
|
|
23490
23512
|
type: "trackStopped",
|
|
23491
23513
|
trackId: message.trackId
|