mediabunny 1.25.2 → 1.25.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.
@@ -262,19 +262,19 @@ var Mediabunny = (() => {
262
262
  var toUint8Array = (source) => {
263
263
  if (source.constructor === Uint8Array) {
264
264
  return source;
265
- } else if (source instanceof ArrayBuffer) {
266
- return new Uint8Array(source);
267
- } else {
265
+ } else if (ArrayBuffer.isView(source)) {
268
266
  return new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
267
+ } else {
268
+ return new Uint8Array(source);
269
269
  }
270
270
  };
271
271
  var toDataView = (source) => {
272
272
  if (source.constructor === DataView) {
273
273
  return source;
274
- } else if (source instanceof ArrayBuffer) {
275
- return new DataView(source);
276
- } else {
274
+ } else if (ArrayBuffer.isView(source)) {
277
275
  return new DataView(source.buffer, source.byteOffset, source.byteLength);
276
+ } else {
277
+ return new DataView(source);
278
278
  }
279
279
  };
280
280
  var textDecoder = /* @__PURE__ */ new TextDecoder();
@@ -4516,7 +4516,8 @@ var Mediabunny = (() => {
4516
4516
  numberOfFrames: this.numberOfFrames,
4517
4517
  numberOfChannels: this.numberOfChannels,
4518
4518
  timestamp: this.microsecondTimestamp,
4519
- data: this._data
4519
+ data: this._data.buffer instanceof ArrayBuffer ? this._data.buffer : this._data.slice()
4520
+ // In the case of SharedArrayBuffer, convert to ArrayBuffer
4520
4521
  });
4521
4522
  }
4522
4523
  }
@@ -15241,10 +15242,13 @@ var Mediabunny = (() => {
15241
15242
  }
15242
15243
  };
15243
15244
  var BufferSource = class extends Source {
15244
- /** Creates a new {@link BufferSource} backed the specified `ArrayBuffer` or `ArrayBufferView`. */
15245
+ /**
15246
+ * Creates a new {@link BufferSource} backed by the specified `ArrayBuffer`, `SharedArrayBuffer`,
15247
+ * or `ArrayBufferView`.
15248
+ */
15245
15249
  constructor(buffer) {
15246
- if (!(buffer instanceof ArrayBuffer) && !ArrayBuffer.isView(buffer)) {
15247
- throw new TypeError("buffer must be an ArrayBuffer or ArrayBufferView.");
15250
+ if (!(buffer instanceof ArrayBuffer) && !(typeof SharedArrayBuffer !== "undefined" && buffer instanceof SharedArrayBuffer) && !ArrayBuffer.isView(buffer)) {
15251
+ throw new TypeError("buffer must be an ArrayBuffer, SharedArrayBuffer, or ArrayBufferView.");
15248
15252
  }
15249
15253
  super();
15250
15254
  /** @internal */
@@ -15325,10 +15329,7 @@ var Mediabunny = (() => {
15325
15329
  const { done, value } = await reader.read();
15326
15330
  if (done) {
15327
15331
  this._orchestrator.forgetWorker(worker);
15328
- if (worker.currentPos < worker.targetPos) {
15329
- throw new Error("Blob reader stopped unexpectedly before all requested data was read.");
15330
- }
15331
- break;
15332
+ throw new Error("Blob reader stopped unexpectedly before all requested data was read.");
15332
15333
  }
15333
15334
  if (worker.aborted) {
15334
15335
  break;
@@ -15431,7 +15432,7 @@ var Mediabunny = (() => {
15431
15432
  let worker;
15432
15433
  let fileSize;
15433
15434
  if (response.status === 206) {
15434
- fileSize = this._getPartialLengthFromRangeResponse(response);
15435
+ fileSize = this._getTotalLengthFromRangeResponse(response);
15435
15436
  worker = this._orchestrator.createWorker(0, Math.min(fileSize, URL_SOURCE_MIN_LOAD_AMOUNT));
15436
15437
  } else {
15437
15438
  const contentLength = response.headers.get("Content-Length");
@@ -15486,13 +15487,6 @@ var Mediabunny = (() => {
15486
15487
  "HTTP server did not respond with 206 Partial Content to a range request. To enable efficient media file streaming across a network, please make sure your server supports range requests."
15487
15488
  );
15488
15489
  }
15489
- const length = this._getPartialLengthFromRangeResponse(response);
15490
- const required = worker.targetPos - worker.currentPos;
15491
- if (length < required) {
15492
- throw new Error(
15493
- `HTTP response unexpectedly too short: Needed at least ${required} bytes, got only ${length}.`
15494
- );
15495
- }
15496
15490
  if (!response.body) {
15497
15491
  throw new Error(
15498
15492
  "Missing HTTP response body stream. The used fetch function must provide the response body as a ReadableStream."
@@ -15526,14 +15520,12 @@ var Mediabunny = (() => {
15526
15520
  }
15527
15521
  const { done, value } = readResult;
15528
15522
  if (done) {
15529
- this._orchestrator.forgetWorker(worker);
15530
- if (worker.currentPos < worker.targetPos) {
15531
- throw new Error(
15532
- "Response stream reader stopped unexpectedly before all requested data was read."
15533
- );
15523
+ if (worker.currentPos >= worker.targetPos) {
15524
+ this._orchestrator.forgetWorker(worker);
15525
+ worker.running = false;
15526
+ return;
15534
15527
  }
15535
- worker.running = false;
15536
- return;
15528
+ break;
15537
15529
  }
15538
15530
  this.onread?.(worker.currentPos, worker.currentPos + value.length);
15539
15531
  this._orchestrator.supplyWorkerData(worker, value);
@@ -15545,24 +15537,21 @@ var Mediabunny = (() => {
15545
15537
  worker.running = false;
15546
15538
  }
15547
15539
  /** @internal */
15548
- _getPartialLengthFromRangeResponse(response) {
15540
+ _getTotalLengthFromRangeResponse(response) {
15549
15541
  const contentRange = response.headers.get("Content-Range");
15550
15542
  if (contentRange) {
15551
15543
  const match = /\/(\d+)/.exec(contentRange);
15552
15544
  if (match) {
15553
15545
  return Number(match[1]);
15554
- } else {
15555
- throw new Error(`Invalid Content-Range header: ${contentRange}`);
15556
15546
  }
15547
+ }
15548
+ const contentLength = response.headers.get("Content-Length");
15549
+ if (contentLength) {
15550
+ return Number(contentLength);
15557
15551
  } else {
15558
- const contentLength = response.headers.get("Content-Length");
15559
- if (contentLength) {
15560
- return Number(contentLength);
15561
- } else {
15562
- throw new Error(
15563
- "Partial HTTP response (status 206) must surface either Content-Range or Content-Length header."
15564
- );
15565
- }
15552
+ throw new Error(
15553
+ "Partial HTTP response (status 206) must surface either Content-Range or Content-Length header."
15554
+ );
15566
15555
  }
15567
15556
  }
15568
15557
  /** @internal */