@remotion/media-parser 4.0.316 → 4.0.318

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.
Files changed (36) hide show
  1. package/dist/containers/avc/parse-avc.js +5 -1
  2. package/dist/containers/flac/parse-flac-frame.js +5 -1
  3. package/dist/containers/iso-base-media/get-moov-atom.js +5 -1
  4. package/dist/containers/iso-base-media/mfra/get-mfra-atom.js +5 -1
  5. package/dist/containers/iso-base-media/mfra/get-mfro-atom.js +5 -1
  6. package/dist/containers/iso-base-media/moov/mvhd.js +10 -2
  7. package/dist/containers/iso-base-media/parse-icc-profile.js +10 -2
  8. package/dist/containers/riff/seek/fetch-idx1.js +5 -1
  9. package/dist/containers/transport-stream/adts-header.js +5 -1
  10. package/dist/containers/wav/parse-fact.d.ts +5 -0
  11. package/dist/containers/wav/parse-fact.js +18 -0
  12. package/dist/containers/wav/parse-fmt.js +9 -5
  13. package/dist/containers/wav/parse-wav.js +4 -0
  14. package/dist/containers/wav/subformats.d.ts +4 -0
  15. package/dist/containers/wav/subformats.js +17 -0
  16. package/dist/containers/wav/types.d.ts +5 -1
  17. package/dist/containers/webm/av1-codec-private.js +5 -1
  18. package/dist/containers/webm/description.js +5 -1
  19. package/dist/containers/webm/get-sample-from-block.js +5 -1
  20. package/dist/containers/webm/make-track.js +10 -2
  21. package/dist/containers/webm/seek/fetch-web-cues.js +5 -1
  22. package/dist/esm/index.mjs +234 -75
  23. package/dist/esm/worker-server-entry.mjs +233 -74
  24. package/dist/esm/worker-web-entry.mjs +233 -74
  25. package/dist/index.d.ts +5 -1
  26. package/dist/iterator/buffer-iterator.d.ts +6 -1
  27. package/dist/iterator/buffer-iterator.js +25 -25
  28. package/dist/iterator/buffer-manager.d.ts +5 -3
  29. package/dist/iterator/buffer-manager.js +24 -23
  30. package/dist/iterator/polyfilled-arraybuffer.d.ts +6 -0
  31. package/dist/iterator/polyfilled-arraybuffer.js +21 -0
  32. package/dist/remotion-license-acknowledge.js +1 -2
  33. package/dist/state/parser-state.js +5 -1
  34. package/dist/version.d.ts +1 -1
  35. package/dist/version.js +1 -1
  36. package/package.json +3 -3
@@ -2454,6 +2454,26 @@ var detectFileType = (data) => {
2454
2454
  return { type: "unknown" };
2455
2455
  };
2456
2456
 
2457
+ // src/iterator/polyfilled-arraybuffer.ts
2458
+ class ResizableBuffer {
2459
+ buffer;
2460
+ uintarray;
2461
+ constructor(buffer) {
2462
+ this.buffer = buffer;
2463
+ this.uintarray = new Uint8Array(buffer);
2464
+ }
2465
+ resize(newLength) {
2466
+ if (typeof this.buffer.resize === "function") {
2467
+ this.buffer.resize(newLength);
2468
+ } else {
2469
+ const newBuffer = new ArrayBuffer(newLength);
2470
+ new Uint8Array(newBuffer).set(new Uint8Array(this.buffer).subarray(0, Math.min(this.buffer.byteLength, newLength)));
2471
+ this.buffer = newBuffer;
2472
+ this.uintarray = new Uint8Array(newBuffer);
2473
+ }
2474
+ }
2475
+ }
2476
+
2457
2477
  // src/iterator/buffer-manager.ts
2458
2478
  var makeBufferWithMaxBytes = (initialData, maxBytes) => {
2459
2479
  const maxByteLength = Math.min(maxBytes, 2 ** 31);
@@ -2461,12 +2481,12 @@ var makeBufferWithMaxBytes = (initialData, maxBytes) => {
2461
2481
  const buf = new ArrayBuffer(initialData.byteLength, {
2462
2482
  maxByteLength
2463
2483
  });
2464
- return buf;
2484
+ return new ResizableBuffer(buf);
2465
2485
  } catch (e) {
2466
2486
  if (e instanceof RangeError && maxBytes > 2 ** 27) {
2467
- return new ArrayBuffer(initialData.byteLength, {
2487
+ return new ResizableBuffer(new ArrayBuffer(initialData.byteLength, {
2468
2488
  maxByteLength: 2 ** 27
2469
- });
2489
+ }));
2470
2490
  }
2471
2491
  throw e;
2472
2492
  }
@@ -2474,17 +2494,17 @@ var makeBufferWithMaxBytes = (initialData, maxBytes) => {
2474
2494
  var bufferManager = ({
2475
2495
  initialData,
2476
2496
  maxBytes,
2477
- counter
2497
+ counter,
2498
+ logLevel
2478
2499
  }) => {
2479
2500
  const buf = makeBufferWithMaxBytes(initialData, maxBytes);
2480
- if (!buf.resize) {
2481
- throw new Error("`ArrayBuffer.resize` is not supported in this Runtime. On the server: Use at least Node.js 20 or Bun. In the browser: Chrome 111, Edge 111, Safari 16.4, Firefox 128, Opera 111");
2501
+ if (!buf.buffer.resize) {
2502
+ Log.warn(logLevel, "`ArrayBuffer.resize` is not supported in this Runtime. Using slow polyfill.");
2482
2503
  }
2483
- let uintArray = new Uint8Array(buf);
2484
- uintArray.set(initialData);
2485
- let view = new DataView(uintArray.buffer);
2504
+ buf.uintarray.set(initialData);
2505
+ let view = new DataView(buf.uintarray.buffer);
2486
2506
  const destroy = () => {
2487
- uintArray = new Uint8Array(0);
2507
+ buf.uintarray = new Uint8Array(0);
2488
2508
  buf.resize(0);
2489
2509
  };
2490
2510
  const flushBytesRead = (force, mode) => {
@@ -2496,11 +2516,11 @@ var bufferManager = ({
2496
2516
  return { bytesRemoved: 0, removedData: null };
2497
2517
  }
2498
2518
  counter.discardBytes(bytesToRemove);
2499
- const removedData = mode === "download" ? uintArray.slice(0, bytesToRemove) : null;
2500
- const newData = uintArray.slice(bytesToRemove);
2501
- uintArray.set(newData);
2519
+ const removedData = mode === "download" ? buf.uintarray.slice(0, bytesToRemove) : null;
2520
+ const newData = buf.uintarray.slice(bytesToRemove);
2521
+ buf.uintarray.set(newData);
2502
2522
  buf.resize(newData.byteLength);
2503
- view = new DataView(uintArray.buffer);
2523
+ view = new DataView(buf.uintarray.buffer);
2504
2524
  return { bytesRemoved: bytesToRemove, removedData };
2505
2525
  };
2506
2526
  const skipTo = (offset) => {
@@ -2516,7 +2536,7 @@ var bufferManager = ({
2516
2536
  counter.increment(offset - currentOffset);
2517
2537
  };
2518
2538
  const addData = (newData) => {
2519
- const oldLength = buf.byteLength;
2539
+ const oldLength = buf.buffer.byteLength;
2520
2540
  const newLength = oldLength + newData.byteLength;
2521
2541
  if (newLength < oldLength) {
2522
2542
  throw new Error("Cannot decrement size");
@@ -2525,22 +2545,22 @@ var bufferManager = ({
2525
2545
  throw new Error(`Exceeded maximum byte length ${maxBytes} with ${newLength}`);
2526
2546
  }
2527
2547
  buf.resize(newLength);
2528
- uintArray = new Uint8Array(buf);
2529
- uintArray.set(newData, oldLength);
2530
- view = new DataView(uintArray.buffer);
2548
+ buf.uintarray = new Uint8Array(buf.buffer);
2549
+ buf.uintarray.set(newData, oldLength);
2550
+ view = new DataView(buf.uintarray.buffer);
2531
2551
  };
2532
2552
  const replaceData = (newData, seekTo) => {
2533
2553
  buf.resize(newData.byteLength);
2534
- uintArray = new Uint8Array(buf);
2535
- uintArray.set(newData);
2536
- view = new DataView(uintArray.buffer);
2554
+ buf.uintarray = new Uint8Array(buf.buffer);
2555
+ buf.uintarray.set(newData);
2556
+ view = new DataView(buf.uintarray.buffer);
2537
2557
  counter.setDiscardedOffset(seekTo);
2538
2558
  counter.decrement(counter.getOffset());
2539
2559
  counter.increment(seekTo);
2540
2560
  };
2541
2561
  return {
2542
- view,
2543
- uintArray,
2562
+ getView: () => view,
2563
+ getUint8Array: () => buf.uintarray,
2544
2564
  destroy,
2545
2565
  addData,
2546
2566
  skipTo,
@@ -2579,17 +2599,21 @@ var makeOffsetCounter = (initial) => {
2579
2599
  };
2580
2600
 
2581
2601
  // src/iterator/buffer-iterator.ts
2582
- var getArrayBufferIterator = (initialData, maxBytes) => {
2602
+ var getArrayBufferIterator = ({
2603
+ initialData,
2604
+ maxBytes,
2605
+ logLevel
2606
+ }) => {
2583
2607
  const counter = makeOffsetCounter(0);
2584
2608
  const {
2585
- uintArray,
2586
- view,
2609
+ getUint8Array,
2610
+ getView,
2587
2611
  addData,
2588
2612
  destroy,
2589
2613
  removeBytesRead,
2590
2614
  skipTo,
2591
2615
  replaceData
2592
- } = bufferManager({ initialData, maxBytes, counter });
2616
+ } = bufferManager({ initialData, maxBytes, counter, logLevel });
2593
2617
  const startCheckpoint = () => {
2594
2618
  const checkpoint = counter.getOffset();
2595
2619
  return {
@@ -2599,7 +2623,7 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
2599
2623
  };
2600
2624
  };
2601
2625
  const getSlice = (amount) => {
2602
- const value = uintArray.slice(counter.getDiscardedOffset(), counter.getDiscardedOffset() + amount);
2626
+ const value = getUint8Array().slice(counter.getDiscardedOffset(), counter.getDiscardedOffset() + amount);
2603
2627
  counter.increment(value.length);
2604
2628
  return value;
2605
2629
  };
@@ -2631,7 +2655,7 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
2631
2655
  return str;
2632
2656
  };
2633
2657
  const getUint8 = () => {
2634
- const val = view.getUint8(counter.getDiscardedOffset());
2658
+ const val = getView().getUint8(counter.getDiscardedOffset());
2635
2659
  counter.increment(1);
2636
2660
  return val;
2637
2661
  };
@@ -2676,22 +2700,22 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
2676
2700
  return lastInt;
2677
2701
  };
2678
2702
  const getUint32 = () => {
2679
- const val = view.getUint32(counter.getDiscardedOffset());
2703
+ const val = getView().getUint32(counter.getDiscardedOffset());
2680
2704
  counter.increment(4);
2681
2705
  return val;
2682
2706
  };
2683
2707
  const getSyncSafeInt32 = () => {
2684
- const val = view.getUint32(counter.getDiscardedOffset());
2708
+ const val = getView().getUint32(counter.getDiscardedOffset());
2685
2709
  counter.increment(4);
2686
2710
  return (val & 2130706432) >> 3 | (val & 8323072) >> 2 | (val & 32512) >> 1 | val & 127;
2687
2711
  };
2688
2712
  const getUint64 = (littleEndian = false) => {
2689
- const val = view.getBigUint64(counter.getDiscardedOffset(), littleEndian);
2713
+ const val = getView().getBigUint64(counter.getDiscardedOffset(), littleEndian);
2690
2714
  counter.increment(8);
2691
2715
  return val;
2692
2716
  };
2693
2717
  const getInt64 = (littleEndian = false) => {
2694
- const val = view.getBigInt64(counter.getDiscardedOffset(), littleEndian);
2718
+ const val = getView().getBigInt64(counter.getDiscardedOffset(), littleEndian);
2695
2719
  counter.increment(8);
2696
2720
  return val;
2697
2721
  };
@@ -2708,22 +2732,22 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
2708
2732
  };
2709
2733
  };
2710
2734
  const getUint32Le = () => {
2711
- const val = view.getUint32(counter.getDiscardedOffset(), true);
2735
+ const val = getView().getUint32(counter.getDiscardedOffset(), true);
2712
2736
  counter.increment(4);
2713
2737
  return val;
2714
2738
  };
2715
2739
  const getInt32Le = () => {
2716
- const val = view.getInt32(counter.getDiscardedOffset(), true);
2740
+ const val = getView().getInt32(counter.getDiscardedOffset(), true);
2717
2741
  counter.increment(4);
2718
2742
  return val;
2719
2743
  };
2720
2744
  const getInt32 = () => {
2721
- const val = view.getInt32(counter.getDiscardedOffset());
2745
+ const val = getView().getInt32(counter.getDiscardedOffset());
2722
2746
  counter.increment(4);
2723
2747
  return val;
2724
2748
  };
2725
2749
  const bytesRemaining = () => {
2726
- return uintArray.byteLength - counter.getDiscardedOffset();
2750
+ return getUint8Array().byteLength - counter.getDiscardedOffset();
2727
2751
  };
2728
2752
  const readExpGolomb = () => {
2729
2753
  if (!bitReadingMode) {
@@ -2838,7 +2862,7 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
2838
2862
  return new TextDecoder().decode(atom);
2839
2863
  },
2840
2864
  detectFileType: () => {
2841
- return detectFileType(uintArray);
2865
+ return detectFileType(getUint8Array());
2842
2866
  },
2843
2867
  getPaddedFourByteNumber,
2844
2868
  getMatroskaSegmentId: () => {
@@ -2916,36 +2940,36 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
2916
2940
  return actualValue;
2917
2941
  },
2918
2942
  getInt8: () => {
2919
- const val = view.getInt8(counter.getDiscardedOffset());
2943
+ const val = getView().getInt8(counter.getDiscardedOffset());
2920
2944
  counter.increment(1);
2921
2945
  return val;
2922
2946
  },
2923
2947
  getUint16: () => {
2924
- const val = view.getUint16(counter.getDiscardedOffset());
2948
+ const val = getView().getUint16(counter.getDiscardedOffset());
2925
2949
  counter.increment(2);
2926
2950
  return val;
2927
2951
  },
2928
2952
  getUint16Le: () => {
2929
- const val = view.getUint16(counter.getDiscardedOffset(), true);
2953
+ const val = getView().getUint16(counter.getDiscardedOffset(), true);
2930
2954
  counter.increment(2);
2931
2955
  return val;
2932
2956
  },
2933
2957
  getUint24: () => {
2934
- const val1 = view.getUint8(counter.getDiscardedOffset());
2935
- const val2 = view.getUint8(counter.getDiscardedOffset() + 1);
2936
- const val3 = view.getUint8(counter.getDiscardedOffset() + 2);
2958
+ const val1 = getView().getUint8(counter.getDiscardedOffset());
2959
+ const val2 = getView().getUint8(counter.getDiscardedOffset() + 1);
2960
+ const val3 = getView().getUint8(counter.getDiscardedOffset() + 2);
2937
2961
  counter.increment(3);
2938
2962
  return val1 << 16 | val2 << 8 | val3;
2939
2963
  },
2940
2964
  getInt24: () => {
2941
- const val1 = view.getInt8(counter.getDiscardedOffset());
2942
- const val2 = view.getUint8(counter.getDiscardedOffset() + 1);
2943
- const val3 = view.getUint8(counter.getDiscardedOffset() + 2);
2965
+ const val1 = getView().getInt8(counter.getDiscardedOffset());
2966
+ const val2 = getView().getUint8(counter.getDiscardedOffset() + 1);
2967
+ const val3 = getView().getUint8(counter.getDiscardedOffset() + 2);
2944
2968
  counter.increment(3);
2945
2969
  return val1 << 16 | val2 << 8 | val3;
2946
2970
  },
2947
2971
  getInt16: () => {
2948
- const val = view.getInt16(counter.getDiscardedOffset());
2972
+ const val = getView().getInt16(counter.getDiscardedOffset());
2949
2973
  counter.increment(2);
2950
2974
  return val;
2951
2975
  },
@@ -2993,13 +3017,13 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
2993
3017
  };
2994
3018
  },
2995
3019
  getFloat64: () => {
2996
- const val = view.getFloat64(counter.getDiscardedOffset());
3020
+ const val = getView().getFloat64(counter.getDiscardedOffset());
2997
3021
  counter.increment(8);
2998
3022
  return val;
2999
3023
  },
3000
3024
  readUntilNullTerminator,
3001
3025
  getFloat32: () => {
3002
- const val = view.getFloat32(counter.getDiscardedOffset());
3026
+ const val = getView().getFloat32(counter.getDiscardedOffset());
3003
3027
  counter.increment(4);
3004
3028
  return val;
3005
3029
  },
@@ -3019,7 +3043,11 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
3019
3043
 
3020
3044
  // src/containers/webm/av1-codec-private.ts
3021
3045
  var parseAv1PrivateData = (data, colrAtom) => {
3022
- const iterator = getArrayBufferIterator(data, data.byteLength);
3046
+ const iterator = getArrayBufferIterator({
3047
+ initialData: data,
3048
+ maxBytes: data.byteLength,
3049
+ logLevel: "error"
3050
+ });
3023
3051
  iterator.startReadingBits();
3024
3052
  if (iterator.getBits(1) !== 1) {
3025
3053
  iterator.destroy();
@@ -4047,7 +4075,11 @@ var getAudioDescription = (track) => {
4047
4075
  throw new Error("Error parsing vorbis codec private");
4048
4076
  }
4049
4077
  const vorbisBooks = privateData.slice(offset);
4050
- const bufferIterator = getArrayBufferIterator(vorbisInfo.slice(0), vorbisInfo.length);
4078
+ const bufferIterator = getArrayBufferIterator({
4079
+ initialData: vorbisInfo.slice(0),
4080
+ maxBytes: vorbisInfo.length,
4081
+ logLevel: "error"
4082
+ });
4051
4083
  bufferIterator.getUint8();
4052
4084
  const vorbis = bufferIterator.getByteString(6, false);
4053
4085
  if (vorbis !== "vorbis") {
@@ -4148,7 +4180,11 @@ var getMatroskaVideoCodecString = ({
4148
4180
  }
4149
4181
  if (codec.value === "V_MPEGH/ISO/HEVC") {
4150
4182
  const priv = getPrivateData(track);
4151
- const iterator = getArrayBufferIterator(priv, priv.length);
4183
+ const iterator = getArrayBufferIterator({
4184
+ initialData: priv,
4185
+ maxBytes: priv.length,
4186
+ logLevel: "error"
4187
+ });
4152
4188
  return "hvc1." + getHvc1CodecString(iterator);
4153
4189
  }
4154
4190
  if (codec.value === "V_AV1") {
@@ -4220,7 +4256,11 @@ var getMatroskaAudioCodecString = (track) => {
4220
4256
  }
4221
4257
  if (codec.value === "A_AAC") {
4222
4258
  const priv = getPrivateData(track);
4223
- const iterator = getArrayBufferIterator(priv, priv.length);
4259
+ const iterator = getArrayBufferIterator({
4260
+ initialData: priv,
4261
+ maxBytes: priv.length,
4262
+ logLevel: "error"
4263
+ });
4224
4264
  iterator.startReadingBits();
4225
4265
  const profile = iterator.getBits(5);
4226
4266
  iterator.stopReadingBits();
@@ -7000,7 +7040,11 @@ var findEnd = (buffer) => {
7000
7040
  return null;
7001
7041
  };
7002
7042
  var inspect = (buffer, avcState) => {
7003
- const iterator = getArrayBufferIterator(buffer, buffer.byteLength);
7043
+ const iterator = getArrayBufferIterator({
7044
+ initialData: buffer,
7045
+ maxBytes: buffer.byteLength,
7046
+ logLevel: "error"
7047
+ });
7004
7048
  iterator.startReadingBits();
7005
7049
  iterator.getBits(1);
7006
7050
  const nal_ref_idc = iterator.getBits(2);
@@ -9030,7 +9074,11 @@ var emitSample = async ({
9030
9074
  data,
9031
9075
  offset
9032
9076
  }) => {
9033
- const iterator = getArrayBufferIterator(data, data.length);
9077
+ const iterator = getArrayBufferIterator({
9078
+ initialData: data,
9079
+ maxBytes: data.length,
9080
+ logLevel: "error"
9081
+ });
9034
9082
  const parsed = parseFrameHeader({ iterator, state });
9035
9083
  if (!parsed) {
9036
9084
  throw new Error("Invalid CRC");
@@ -10064,10 +10112,18 @@ var parseMvhd = ({
10064
10112
  const durationInUnits = version === 1 ? iterator.getUint64() : iterator.getUint32();
10065
10113
  const durationInSeconds = Number(durationInUnits) / timeScale;
10066
10114
  const rateArray = iterator.getSlice(4);
10067
- const rateView = getArrayBufferIterator(rateArray, rateArray.length);
10115
+ const rateView = getArrayBufferIterator({
10116
+ initialData: rateArray,
10117
+ maxBytes: rateArray.length,
10118
+ logLevel: "error"
10119
+ });
10068
10120
  const rate = rateView.getInt8() * 10 + rateView.getInt8() + rateView.getInt8() * 0.1 + rateView.getInt8() * 0.01;
10069
10121
  const volumeArray = iterator.getSlice(2);
10070
- const volumeView = getArrayBufferIterator(volumeArray, volumeArray.length);
10122
+ const volumeView = getArrayBufferIterator({
10123
+ initialData: volumeArray,
10124
+ maxBytes: volumeArray.length,
10125
+ logLevel: "error"
10126
+ });
10071
10127
  const volume = volumeView.getInt8() + volumeView.getInt8() * 0.1;
10072
10128
  iterator.discard(2);
10073
10129
  iterator.discard(4);
@@ -10169,7 +10225,11 @@ var parseAvcc = ({
10169
10225
 
10170
10226
  // src/containers/iso-base-media/parse-icc-profile.ts
10171
10227
  var parseIccProfile = (data) => {
10172
- const iterator = getArrayBufferIterator(data, data.length);
10228
+ const iterator = getArrayBufferIterator({
10229
+ initialData: data,
10230
+ maxBytes: data.length,
10231
+ logLevel: "error"
10232
+ });
10173
10233
  const size = iterator.getUint32();
10174
10234
  if (size !== data.length) {
10175
10235
  throw new Error("Invalid ICC profile size");
@@ -10214,7 +10274,11 @@ var parseIccProfile = (data) => {
10214
10274
  for (const entry of entries) {
10215
10275
  const found = data.slice(entry.offset, entry.offset + entry.size);
10216
10276
  if (entry.tag === "rXYZ" || entry.tag === "gXYZ" || entry.tag === "bXYZ" || entry.tag === "wtpt") {
10217
- const it = getArrayBufferIterator(found, found.length);
10277
+ const it = getArrayBufferIterator({
10278
+ initialData: found,
10279
+ maxBytes: found.length,
10280
+ logLevel: "error"
10281
+ });
10218
10282
  it.discard(4);
10219
10283
  const x = it.getInt32() / 65536;
10220
10284
  const y = it.getInt32() / 65536;
@@ -11592,7 +11656,11 @@ var getMoovAtom = async ({
11592
11656
  });
11593
11657
  return null;
11594
11658
  } : null;
11595
- const iterator = getArrayBufferIterator(new Uint8Array([]), state.contentLength - endOfMdat);
11659
+ const iterator = getArrayBufferIterator({
11660
+ initialData: new Uint8Array([]),
11661
+ maxBytes: state.contentLength - endOfMdat,
11662
+ logLevel: "error"
11663
+ });
11596
11664
  while (true) {
11597
11665
  const result = await reader.reader.read();
11598
11666
  if (result.value) {
@@ -14247,7 +14315,11 @@ var readAdtsHeader = (buffer) => {
14247
14315
  if (buffer.byteLength < 9) {
14248
14316
  return null;
14249
14317
  }
14250
- const iterator = getArrayBufferIterator(buffer, buffer.byteLength);
14318
+ const iterator = getArrayBufferIterator({
14319
+ initialData: buffer,
14320
+ maxBytes: buffer.byteLength,
14321
+ logLevel: "error"
14322
+ });
14251
14323
  iterator.startReadingBits();
14252
14324
  const bits = iterator.getBits(12);
14253
14325
  if (bits !== 4095) {
@@ -14809,6 +14881,68 @@ var parseData = ({
14809
14881
  return Promise.resolve(null);
14810
14882
  };
14811
14883
 
14884
+ // src/containers/wav/parse-fact.ts
14885
+ var parseFact = ({
14886
+ state
14887
+ }) => {
14888
+ const { iterator } = state;
14889
+ const size = iterator.getUint32Le();
14890
+ if (size !== 4) {
14891
+ throw new Error(`Expected size 4 for fact box, got ${size}`);
14892
+ }
14893
+ const numberOfSamplesPerChannel = iterator.getUint32Le();
14894
+ const factBox = {
14895
+ type: "wav-fact",
14896
+ numberOfSamplesPerChannel
14897
+ };
14898
+ state.structure.getWavStructure().boxes.push(factBox);
14899
+ return Promise.resolve(null);
14900
+ };
14901
+
14902
+ // src/containers/wav/subformats.ts
14903
+ var WMMEDIASUBTYPE_PCM = [
14904
+ 1,
14905
+ 0,
14906
+ 0,
14907
+ 0,
14908
+ 0,
14909
+ 0,
14910
+ 16,
14911
+ 0,
14912
+ 128,
14913
+ 0,
14914
+ 0,
14915
+ 170,
14916
+ 0,
14917
+ 56,
14918
+ 155,
14919
+ 113
14920
+ ];
14921
+ var KSDATAFORMAT_SUBTYPE_IEEE_FLOAT = [
14922
+ 3,
14923
+ 0,
14924
+ 0,
14925
+ 0,
14926
+ 0,
14927
+ 0,
14928
+ 16,
14929
+ 0,
14930
+ 128,
14931
+ 0,
14932
+ 0,
14933
+ 170,
14934
+ 0,
14935
+ 56,
14936
+ 155,
14937
+ 113
14938
+ ];
14939
+ var subformatIsPcm = (subformat) => {
14940
+ return subformat.every((value, index) => value === WMMEDIASUBTYPE_PCM[index]);
14941
+ };
14942
+ var subformatIsIeeeFloat = (subformat) => {
14943
+ return subformat.every((value, index) => value === KSDATAFORMAT_SUBTYPE_IEEE_FLOAT[index]);
14944
+ };
14945
+
14812
14946
  // src/containers/wav/parse-fmt.ts
14813
14947
  var CHANNELS = {
14814
14948
  0: "Front Left",
@@ -14883,10 +15017,8 @@ var parseFmt = async ({
14883
15017
  if (subFormat.length !== 16) {
14884
15018
  throw new Error(`Only supporting WAVE with PCM audio format, but got ${subFormat.length}`);
14885
15019
  }
14886
- for (let i = 0;i < 16; i++) {
14887
- if (subFormat[i] !== [1, 0, 0, 0, 0, 0, 16, 0, 128, 0, 0, 170, 0, 56, 155, 113][i]) {
14888
- throw new Error(`Only supporting WAVE with PCM audio format, but got subformat ${subFormat[i]}`);
14889
- }
15020
+ if (subformatIsPcm(subFormat)) {} else if (subformatIsIeeeFloat(subFormat)) {} else {
15021
+ throw new Error(`Unsupported subformat: ${subFormat}`);
14890
15022
  }
14891
15023
  const channels2 = getChannelsFromMask(channelMask);
14892
15024
  wavHeader.numberOfChannels = channels2.length;
@@ -15058,6 +15190,9 @@ var parseWav = (state) => {
15058
15190
  if (type === "JUNK" || type === "FLLR") {
15059
15191
  return parseJunk({ state });
15060
15192
  }
15193
+ if (type === "fact") {
15194
+ return parseFact({ state });
15195
+ }
15061
15196
  if (type === "\x00") {
15062
15197
  return Promise.resolve(null);
15063
15198
  }
@@ -15184,7 +15319,11 @@ var getSampleFromBlock = async ({
15184
15319
  onVideoTrack,
15185
15320
  avcState
15186
15321
  }) => {
15187
- const iterator = getArrayBufferIterator(ebml.value, ebml.value.length);
15322
+ const iterator = getArrayBufferIterator({
15323
+ initialData: ebml.value,
15324
+ maxBytes: ebml.value.length,
15325
+ logLevel: "error"
15326
+ });
15188
15327
  const trackNumber2 = iterator.getVint();
15189
15328
  if (trackNumber2 === null) {
15190
15329
  throw new Error("Not enough data to get track number, should not happen");
@@ -16001,8 +16140,8 @@ var warnIfRemotionLicenseNotAcknowledged = ({
16001
16140
  return;
16002
16141
  }
16003
16142
  warningShown = true;
16004
- Log.warn(logLevel, "Note: Some companies are required to obtain a license to use @remotion/media-parser. See: https://remotion.dev/license");
16005
- Log.warn(logLevel, `Pass \`acknowledgeRemotionLicense: true\` to \`${apiName}\` function to make this message disappear.`);
16143
+ Log.warn(logLevel, `Note: Some companies are required to obtain a license to use @remotion/media-parser. See: https://remotion.dev/license
16144
+ Pass \`acknowledgeRemotionLicense: true\` to \`${apiName}\` function to make this message disappear.`);
16006
16145
  };
16007
16146
 
16008
16147
  // src/set-seeking-hints.ts
@@ -16287,7 +16426,11 @@ var getMfraAtom = async ({
16287
16426
  logLevel,
16288
16427
  prefetchCache
16289
16428
  });
16290
- const iterator = getArrayBufferIterator(new Uint8Array, parentSize);
16429
+ const iterator = getArrayBufferIterator({
16430
+ initialData: new Uint8Array,
16431
+ maxBytes: parentSize,
16432
+ logLevel: "error"
16433
+ });
16291
16434
  while (true) {
16292
16435
  const res = await result.reader.reader.read();
16293
16436
  if (res.value) {
@@ -16321,7 +16464,11 @@ var getMfroAtom = async ({
16321
16464
  return null;
16322
16465
  }
16323
16466
  result.reader.abort();
16324
- const iterator = getArrayBufferIterator(value, value.length);
16467
+ const iterator = getArrayBufferIterator({
16468
+ initialData: value,
16469
+ maxBytes: value.length,
16470
+ logLevel: "error"
16471
+ });
16325
16472
  const size = iterator.getUint32();
16326
16473
  if (size !== 16) {
16327
16474
  iterator.destroy();
@@ -16776,7 +16923,11 @@ var fetchWebmCues = async ({
16776
16923
  return null;
16777
16924
  }
16778
16925
  result.reader.abort();
16779
- const iterator = getArrayBufferIterator(value, value.length);
16926
+ const iterator = getArrayBufferIterator({
16927
+ initialData: value,
16928
+ maxBytes: value.length,
16929
+ logLevel: "error"
16930
+ });
16780
16931
  const segment = await expectSegment({
16781
16932
  iterator,
16782
16933
  logLevel,
@@ -17041,7 +17192,11 @@ var fetchIdx1 = async ({
17041
17192
  if (result.contentLength === null) {
17042
17193
  throw new Error("Content length is null");
17043
17194
  }
17044
- const iterator = getArrayBufferIterator(new Uint8Array, contentLength - position + 1);
17195
+ const iterator = getArrayBufferIterator({
17196
+ initialData: new Uint8Array,
17197
+ maxBytes: contentLength - position + 1,
17198
+ logLevel: "error"
17199
+ });
17045
17200
  while (true) {
17046
17201
  const res = await result.reader.reader.read();
17047
17202
  if (res.value) {
@@ -17664,7 +17819,11 @@ var makeParserState = ({
17664
17819
  }) => {
17665
17820
  let skippedBytes = 0;
17666
17821
  const returnValue = {};
17667
- const iterator = getArrayBufferIterator(new Uint8Array([]), contentLength);
17822
+ const iterator = getArrayBufferIterator({
17823
+ initialData: new Uint8Array([]),
17824
+ maxBytes: contentLength,
17825
+ logLevel
17826
+ });
17668
17827
  const increaseSkippedBytes = (bytes) => {
17669
17828
  skippedBytes += bytes;
17670
17829
  };