@remotion/media-parser 4.0.317 → 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
@@ -1163,6 +1163,26 @@ var Log = {
1163
1163
  }
1164
1164
  };
1165
1165
 
1166
+ // src/iterator/polyfilled-arraybuffer.ts
1167
+ class ResizableBuffer {
1168
+ buffer;
1169
+ uintarray;
1170
+ constructor(buffer) {
1171
+ this.buffer = buffer;
1172
+ this.uintarray = new Uint8Array(buffer);
1173
+ }
1174
+ resize(newLength) {
1175
+ if (typeof this.buffer.resize === "function") {
1176
+ this.buffer.resize(newLength);
1177
+ } else {
1178
+ const newBuffer = new ArrayBuffer(newLength);
1179
+ new Uint8Array(newBuffer).set(new Uint8Array(this.buffer).subarray(0, Math.min(this.buffer.byteLength, newLength)));
1180
+ this.buffer = newBuffer;
1181
+ this.uintarray = new Uint8Array(newBuffer);
1182
+ }
1183
+ }
1184
+ }
1185
+
1166
1186
  // src/iterator/buffer-manager.ts
1167
1187
  var makeBufferWithMaxBytes = (initialData, maxBytes) => {
1168
1188
  const maxByteLength = Math.min(maxBytes, 2 ** 31);
@@ -1170,12 +1190,12 @@ var makeBufferWithMaxBytes = (initialData, maxBytes) => {
1170
1190
  const buf = new ArrayBuffer(initialData.byteLength, {
1171
1191
  maxByteLength
1172
1192
  });
1173
- return buf;
1193
+ return new ResizableBuffer(buf);
1174
1194
  } catch (e) {
1175
1195
  if (e instanceof RangeError && maxBytes > 2 ** 27) {
1176
- return new ArrayBuffer(initialData.byteLength, {
1196
+ return new ResizableBuffer(new ArrayBuffer(initialData.byteLength, {
1177
1197
  maxByteLength: 2 ** 27
1178
- });
1198
+ }));
1179
1199
  }
1180
1200
  throw e;
1181
1201
  }
@@ -1183,17 +1203,17 @@ var makeBufferWithMaxBytes = (initialData, maxBytes) => {
1183
1203
  var bufferManager = ({
1184
1204
  initialData,
1185
1205
  maxBytes,
1186
- counter
1206
+ counter,
1207
+ logLevel
1187
1208
  }) => {
1188
1209
  const buf = makeBufferWithMaxBytes(initialData, maxBytes);
1189
- if (!buf.resize) {
1190
- 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");
1210
+ if (!buf.buffer.resize) {
1211
+ Log.warn(logLevel, "`ArrayBuffer.resize` is not supported in this Runtime. Using slow polyfill.");
1191
1212
  }
1192
- let uintArray = new Uint8Array(buf);
1193
- uintArray.set(initialData);
1194
- let view = new DataView(uintArray.buffer);
1213
+ buf.uintarray.set(initialData);
1214
+ let view = new DataView(buf.uintarray.buffer);
1195
1215
  const destroy = () => {
1196
- uintArray = new Uint8Array(0);
1216
+ buf.uintarray = new Uint8Array(0);
1197
1217
  buf.resize(0);
1198
1218
  };
1199
1219
  const flushBytesRead = (force, mode) => {
@@ -1205,11 +1225,11 @@ var bufferManager = ({
1205
1225
  return { bytesRemoved: 0, removedData: null };
1206
1226
  }
1207
1227
  counter.discardBytes(bytesToRemove);
1208
- const removedData = mode === "download" ? uintArray.slice(0, bytesToRemove) : null;
1209
- const newData = uintArray.slice(bytesToRemove);
1210
- uintArray.set(newData);
1228
+ const removedData = mode === "download" ? buf.uintarray.slice(0, bytesToRemove) : null;
1229
+ const newData = buf.uintarray.slice(bytesToRemove);
1230
+ buf.uintarray.set(newData);
1211
1231
  buf.resize(newData.byteLength);
1212
- view = new DataView(uintArray.buffer);
1232
+ view = new DataView(buf.uintarray.buffer);
1213
1233
  return { bytesRemoved: bytesToRemove, removedData };
1214
1234
  };
1215
1235
  const skipTo = (offset) => {
@@ -1225,7 +1245,7 @@ var bufferManager = ({
1225
1245
  counter.increment(offset - currentOffset);
1226
1246
  };
1227
1247
  const addData = (newData) => {
1228
- const oldLength = buf.byteLength;
1248
+ const oldLength = buf.buffer.byteLength;
1229
1249
  const newLength = oldLength + newData.byteLength;
1230
1250
  if (newLength < oldLength) {
1231
1251
  throw new Error("Cannot decrement size");
@@ -1234,22 +1254,22 @@ var bufferManager = ({
1234
1254
  throw new Error(`Exceeded maximum byte length ${maxBytes} with ${newLength}`);
1235
1255
  }
1236
1256
  buf.resize(newLength);
1237
- uintArray = new Uint8Array(buf);
1238
- uintArray.set(newData, oldLength);
1239
- view = new DataView(uintArray.buffer);
1257
+ buf.uintarray = new Uint8Array(buf.buffer);
1258
+ buf.uintarray.set(newData, oldLength);
1259
+ view = new DataView(buf.uintarray.buffer);
1240
1260
  };
1241
1261
  const replaceData = (newData, seekTo) => {
1242
1262
  buf.resize(newData.byteLength);
1243
- uintArray = new Uint8Array(buf);
1244
- uintArray.set(newData);
1245
- view = new DataView(uintArray.buffer);
1263
+ buf.uintarray = new Uint8Array(buf.buffer);
1264
+ buf.uintarray.set(newData);
1265
+ view = new DataView(buf.uintarray.buffer);
1246
1266
  counter.setDiscardedOffset(seekTo);
1247
1267
  counter.decrement(counter.getOffset());
1248
1268
  counter.increment(seekTo);
1249
1269
  };
1250
1270
  return {
1251
- view,
1252
- uintArray,
1271
+ getView: () => view,
1272
+ getUint8Array: () => buf.uintarray,
1253
1273
  destroy,
1254
1274
  addData,
1255
1275
  skipTo,
@@ -1288,17 +1308,21 @@ var makeOffsetCounter = (initial) => {
1288
1308
  };
1289
1309
 
1290
1310
  // src/iterator/buffer-iterator.ts
1291
- var getArrayBufferIterator = (initialData, maxBytes) => {
1311
+ var getArrayBufferIterator = ({
1312
+ initialData,
1313
+ maxBytes,
1314
+ logLevel
1315
+ }) => {
1292
1316
  const counter = makeOffsetCounter(0);
1293
1317
  const {
1294
- uintArray,
1295
- view,
1318
+ getUint8Array,
1319
+ getView,
1296
1320
  addData,
1297
1321
  destroy,
1298
1322
  removeBytesRead,
1299
1323
  skipTo,
1300
1324
  replaceData
1301
- } = bufferManager({ initialData, maxBytes, counter });
1325
+ } = bufferManager({ initialData, maxBytes, counter, logLevel });
1302
1326
  const startCheckpoint = () => {
1303
1327
  const checkpoint = counter.getOffset();
1304
1328
  return {
@@ -1308,7 +1332,7 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
1308
1332
  };
1309
1333
  };
1310
1334
  const getSlice = (amount) => {
1311
- const value = uintArray.slice(counter.getDiscardedOffset(), counter.getDiscardedOffset() + amount);
1335
+ const value = getUint8Array().slice(counter.getDiscardedOffset(), counter.getDiscardedOffset() + amount);
1312
1336
  counter.increment(value.length);
1313
1337
  return value;
1314
1338
  };
@@ -1340,7 +1364,7 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
1340
1364
  return str;
1341
1365
  };
1342
1366
  const getUint8 = () => {
1343
- const val = view.getUint8(counter.getDiscardedOffset());
1367
+ const val = getView().getUint8(counter.getDiscardedOffset());
1344
1368
  counter.increment(1);
1345
1369
  return val;
1346
1370
  };
@@ -1385,22 +1409,22 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
1385
1409
  return lastInt;
1386
1410
  };
1387
1411
  const getUint32 = () => {
1388
- const val = view.getUint32(counter.getDiscardedOffset());
1412
+ const val = getView().getUint32(counter.getDiscardedOffset());
1389
1413
  counter.increment(4);
1390
1414
  return val;
1391
1415
  };
1392
1416
  const getSyncSafeInt32 = () => {
1393
- const val = view.getUint32(counter.getDiscardedOffset());
1417
+ const val = getView().getUint32(counter.getDiscardedOffset());
1394
1418
  counter.increment(4);
1395
1419
  return (val & 2130706432) >> 3 | (val & 8323072) >> 2 | (val & 32512) >> 1 | val & 127;
1396
1420
  };
1397
1421
  const getUint64 = (littleEndian = false) => {
1398
- const val = view.getBigUint64(counter.getDiscardedOffset(), littleEndian);
1422
+ const val = getView().getBigUint64(counter.getDiscardedOffset(), littleEndian);
1399
1423
  counter.increment(8);
1400
1424
  return val;
1401
1425
  };
1402
1426
  const getInt64 = (littleEndian = false) => {
1403
- const val = view.getBigInt64(counter.getDiscardedOffset(), littleEndian);
1427
+ const val = getView().getBigInt64(counter.getDiscardedOffset(), littleEndian);
1404
1428
  counter.increment(8);
1405
1429
  return val;
1406
1430
  };
@@ -1417,22 +1441,22 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
1417
1441
  };
1418
1442
  };
1419
1443
  const getUint32Le = () => {
1420
- const val = view.getUint32(counter.getDiscardedOffset(), true);
1444
+ const val = getView().getUint32(counter.getDiscardedOffset(), true);
1421
1445
  counter.increment(4);
1422
1446
  return val;
1423
1447
  };
1424
1448
  const getInt32Le = () => {
1425
- const val = view.getInt32(counter.getDiscardedOffset(), true);
1449
+ const val = getView().getInt32(counter.getDiscardedOffset(), true);
1426
1450
  counter.increment(4);
1427
1451
  return val;
1428
1452
  };
1429
1453
  const getInt32 = () => {
1430
- const val = view.getInt32(counter.getDiscardedOffset());
1454
+ const val = getView().getInt32(counter.getDiscardedOffset());
1431
1455
  counter.increment(4);
1432
1456
  return val;
1433
1457
  };
1434
1458
  const bytesRemaining = () => {
1435
- return uintArray.byteLength - counter.getDiscardedOffset();
1459
+ return getUint8Array().byteLength - counter.getDiscardedOffset();
1436
1460
  };
1437
1461
  const readExpGolomb = () => {
1438
1462
  if (!bitReadingMode) {
@@ -1547,7 +1571,7 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
1547
1571
  return new TextDecoder().decode(atom);
1548
1572
  },
1549
1573
  detectFileType: () => {
1550
- return detectFileType(uintArray);
1574
+ return detectFileType(getUint8Array());
1551
1575
  },
1552
1576
  getPaddedFourByteNumber,
1553
1577
  getMatroskaSegmentId: () => {
@@ -1625,36 +1649,36 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
1625
1649
  return actualValue;
1626
1650
  },
1627
1651
  getInt8: () => {
1628
- const val = view.getInt8(counter.getDiscardedOffset());
1652
+ const val = getView().getInt8(counter.getDiscardedOffset());
1629
1653
  counter.increment(1);
1630
1654
  return val;
1631
1655
  },
1632
1656
  getUint16: () => {
1633
- const val = view.getUint16(counter.getDiscardedOffset());
1657
+ const val = getView().getUint16(counter.getDiscardedOffset());
1634
1658
  counter.increment(2);
1635
1659
  return val;
1636
1660
  },
1637
1661
  getUint16Le: () => {
1638
- const val = view.getUint16(counter.getDiscardedOffset(), true);
1662
+ const val = getView().getUint16(counter.getDiscardedOffset(), true);
1639
1663
  counter.increment(2);
1640
1664
  return val;
1641
1665
  },
1642
1666
  getUint24: () => {
1643
- const val1 = view.getUint8(counter.getDiscardedOffset());
1644
- const val2 = view.getUint8(counter.getDiscardedOffset() + 1);
1645
- const val3 = view.getUint8(counter.getDiscardedOffset() + 2);
1667
+ const val1 = getView().getUint8(counter.getDiscardedOffset());
1668
+ const val2 = getView().getUint8(counter.getDiscardedOffset() + 1);
1669
+ const val3 = getView().getUint8(counter.getDiscardedOffset() + 2);
1646
1670
  counter.increment(3);
1647
1671
  return val1 << 16 | val2 << 8 | val3;
1648
1672
  },
1649
1673
  getInt24: () => {
1650
- const val1 = view.getInt8(counter.getDiscardedOffset());
1651
- const val2 = view.getUint8(counter.getDiscardedOffset() + 1);
1652
- const val3 = view.getUint8(counter.getDiscardedOffset() + 2);
1674
+ const val1 = getView().getInt8(counter.getDiscardedOffset());
1675
+ const val2 = getView().getUint8(counter.getDiscardedOffset() + 1);
1676
+ const val3 = getView().getUint8(counter.getDiscardedOffset() + 2);
1653
1677
  counter.increment(3);
1654
1678
  return val1 << 16 | val2 << 8 | val3;
1655
1679
  },
1656
1680
  getInt16: () => {
1657
- const val = view.getInt16(counter.getDiscardedOffset());
1681
+ const val = getView().getInt16(counter.getDiscardedOffset());
1658
1682
  counter.increment(2);
1659
1683
  return val;
1660
1684
  },
@@ -1702,13 +1726,13 @@ var getArrayBufferIterator = (initialData, maxBytes) => {
1702
1726
  };
1703
1727
  },
1704
1728
  getFloat64: () => {
1705
- const val = view.getFloat64(counter.getDiscardedOffset());
1729
+ const val = getView().getFloat64(counter.getDiscardedOffset());
1706
1730
  counter.increment(8);
1707
1731
  return val;
1708
1732
  },
1709
1733
  readUntilNullTerminator,
1710
1734
  getFloat32: () => {
1711
- const val = view.getFloat32(counter.getDiscardedOffset());
1735
+ const val = getView().getFloat32(counter.getDiscardedOffset());
1712
1736
  counter.increment(4);
1713
1737
  return val;
1714
1738
  },
@@ -1749,10 +1773,18 @@ var parseMvhd = ({
1749
1773
  const durationInUnits = version === 1 ? iterator.getUint64() : iterator.getUint32();
1750
1774
  const durationInSeconds = Number(durationInUnits) / timeScale;
1751
1775
  const rateArray = iterator.getSlice(4);
1752
- const rateView = getArrayBufferIterator(rateArray, rateArray.length);
1776
+ const rateView = getArrayBufferIterator({
1777
+ initialData: rateArray,
1778
+ maxBytes: rateArray.length,
1779
+ logLevel: "error"
1780
+ });
1753
1781
  const rate = rateView.getInt8() * 10 + rateView.getInt8() + rateView.getInt8() * 0.1 + rateView.getInt8() * 0.01;
1754
1782
  const volumeArray = iterator.getSlice(2);
1755
- const volumeView = getArrayBufferIterator(volumeArray, volumeArray.length);
1783
+ const volumeView = getArrayBufferIterator({
1784
+ initialData: volumeArray,
1785
+ maxBytes: volumeArray.length,
1786
+ logLevel: "error"
1787
+ });
1756
1788
  const volume = volumeView.getInt8() + volumeView.getInt8() * 0.1;
1757
1789
  iterator.discard(2);
1758
1790
  iterator.discard(4);
@@ -2609,7 +2641,11 @@ var mediaParserAdvancedColorToWebCodecsColor = (color2) => {
2609
2641
 
2610
2642
  // src/containers/webm/av1-codec-private.ts
2611
2643
  var parseAv1PrivateData = (data, colrAtom) => {
2612
- const iterator = getArrayBufferIterator(data, data.byteLength);
2644
+ const iterator = getArrayBufferIterator({
2645
+ initialData: data,
2646
+ maxBytes: data.byteLength,
2647
+ logLevel: "error"
2648
+ });
2613
2649
  iterator.startReadingBits();
2614
2650
  if (iterator.getBits(1) !== 1) {
2615
2651
  iterator.destroy();
@@ -2992,7 +3028,11 @@ var getAudioDescription = (track) => {
2992
3028
  throw new Error("Error parsing vorbis codec private");
2993
3029
  }
2994
3030
  const vorbisBooks = privateData.slice(offset);
2995
- const bufferIterator = getArrayBufferIterator(vorbisInfo.slice(0), vorbisInfo.length);
3031
+ const bufferIterator = getArrayBufferIterator({
3032
+ initialData: vorbisInfo.slice(0),
3033
+ maxBytes: vorbisInfo.length,
3034
+ logLevel: "error"
3035
+ });
2996
3036
  bufferIterator.getUint8();
2997
3037
  const vorbis = bufferIterator.getByteString(6, false);
2998
3038
  if (vorbis !== "vorbis") {
@@ -3093,7 +3133,11 @@ var getMatroskaVideoCodecString = ({
3093
3133
  }
3094
3134
  if (codec.value === "V_MPEGH/ISO/HEVC") {
3095
3135
  const priv = getPrivateData(track);
3096
- const iterator = getArrayBufferIterator(priv, priv.length);
3136
+ const iterator = getArrayBufferIterator({
3137
+ initialData: priv,
3138
+ maxBytes: priv.length,
3139
+ logLevel: "error"
3140
+ });
3097
3141
  return "hvc1." + getHvc1CodecString(iterator);
3098
3142
  }
3099
3143
  if (codec.value === "V_AV1") {
@@ -3165,7 +3209,11 @@ var getMatroskaAudioCodecString = (track) => {
3165
3209
  }
3166
3210
  if (codec.value === "A_AAC") {
3167
3211
  const priv = getPrivateData(track);
3168
- const iterator = getArrayBufferIterator(priv, priv.length);
3212
+ const iterator = getArrayBufferIterator({
3213
+ initialData: priv,
3214
+ maxBytes: priv.length,
3215
+ logLevel: "error"
3216
+ });
3169
3217
  iterator.startReadingBits();
3170
3218
  const profile = iterator.getBits(5);
3171
3219
  iterator.stopReadingBits();
@@ -4590,7 +4638,11 @@ var parseAvcc = ({
4590
4638
 
4591
4639
  // src/containers/iso-base-media/parse-icc-profile.ts
4592
4640
  var parseIccProfile = (data) => {
4593
- const iterator = getArrayBufferIterator(data, data.length);
4641
+ const iterator = getArrayBufferIterator({
4642
+ initialData: data,
4643
+ maxBytes: data.length,
4644
+ logLevel: "error"
4645
+ });
4594
4646
  const size = iterator.getUint32();
4595
4647
  if (size !== data.length) {
4596
4648
  throw new Error("Invalid ICC profile size");
@@ -4635,7 +4687,11 @@ var parseIccProfile = (data) => {
4635
4687
  for (const entry of entries) {
4636
4688
  const found = data.slice(entry.offset, entry.offset + entry.size);
4637
4689
  if (entry.tag === "rXYZ" || entry.tag === "gXYZ" || entry.tag === "bXYZ" || entry.tag === "wtpt") {
4638
- const it = getArrayBufferIterator(found, found.length);
4690
+ const it = getArrayBufferIterator({
4691
+ initialData: found,
4692
+ maxBytes: found.length,
4693
+ logLevel: "error"
4694
+ });
4639
4695
  it.discard(4);
4640
4696
  const x = it.getInt32() / 65536;
4641
4697
  const y = it.getInt32() / 65536;
@@ -6192,7 +6248,11 @@ var findEnd = (buffer) => {
6192
6248
  return null;
6193
6249
  };
6194
6250
  var inspect = (buffer, avcState) => {
6195
- const iterator = getArrayBufferIterator(buffer, buffer.byteLength);
6251
+ const iterator = getArrayBufferIterator({
6252
+ initialData: buffer,
6253
+ maxBytes: buffer.byteLength,
6254
+ logLevel: "error"
6255
+ });
6196
6256
  iterator.startReadingBits();
6197
6257
  iterator.getBits(1);
6198
6258
  const nal_ref_idc = iterator.getBits(2);
@@ -6390,7 +6450,11 @@ var getSampleFromBlock = async ({
6390
6450
  onVideoTrack,
6391
6451
  avcState
6392
6452
  }) => {
6393
- const iterator = getArrayBufferIterator(ebml.value, ebml.value.length);
6453
+ const iterator = getArrayBufferIterator({
6454
+ initialData: ebml.value,
6455
+ maxBytes: ebml.value.length,
6456
+ logLevel: "error"
6457
+ });
6394
6458
  const trackNumber2 = iterator.getVint();
6395
6459
  if (trackNumber2 === null) {
6396
6460
  throw new Error("Not enough data to get track number, should not happen");
@@ -10946,7 +11010,11 @@ var emitSample = async ({
10946
11010
  data,
10947
11011
  offset
10948
11012
  }) => {
10949
- const iterator = getArrayBufferIterator(data, data.length);
11013
+ const iterator = getArrayBufferIterator({
11014
+ initialData: data,
11015
+ maxBytes: data.length,
11016
+ logLevel: "error"
11017
+ });
10950
11018
  const parsed = parseFrameHeader({ iterator, state });
10951
11019
  if (!parsed) {
10952
11020
  throw new Error("Invalid CRC");
@@ -11503,7 +11571,11 @@ var getMoovAtom = async ({
11503
11571
  });
11504
11572
  return null;
11505
11573
  } : null;
11506
- const iterator = getArrayBufferIterator(new Uint8Array([]), state.contentLength - endOfMdat);
11574
+ const iterator = getArrayBufferIterator({
11575
+ initialData: new Uint8Array([]),
11576
+ maxBytes: state.contentLength - endOfMdat,
11577
+ logLevel: "error"
11578
+ });
11507
11579
  while (true) {
11508
11580
  const result = await reader.reader.read();
11509
11581
  if (result.value) {
@@ -14512,7 +14584,11 @@ var readAdtsHeader = (buffer) => {
14512
14584
  if (buffer.byteLength < 9) {
14513
14585
  return null;
14514
14586
  }
14515
- const iterator = getArrayBufferIterator(buffer, buffer.byteLength);
14587
+ const iterator = getArrayBufferIterator({
14588
+ initialData: buffer,
14589
+ maxBytes: buffer.byteLength,
14590
+ logLevel: "error"
14591
+ });
14516
14592
  iterator.startReadingBits();
14517
14593
  const bits = iterator.getBits(12);
14518
14594
  if (bits !== 4095) {
@@ -15074,6 +15150,68 @@ var parseData = ({
15074
15150
  return Promise.resolve(null);
15075
15151
  };
15076
15152
 
15153
+ // src/containers/wav/parse-fact.ts
15154
+ var parseFact = ({
15155
+ state
15156
+ }) => {
15157
+ const { iterator } = state;
15158
+ const size = iterator.getUint32Le();
15159
+ if (size !== 4) {
15160
+ throw new Error(`Expected size 4 for fact box, got ${size}`);
15161
+ }
15162
+ const numberOfSamplesPerChannel = iterator.getUint32Le();
15163
+ const factBox = {
15164
+ type: "wav-fact",
15165
+ numberOfSamplesPerChannel
15166
+ };
15167
+ state.structure.getWavStructure().boxes.push(factBox);
15168
+ return Promise.resolve(null);
15169
+ };
15170
+
15171
+ // src/containers/wav/subformats.ts
15172
+ var WMMEDIASUBTYPE_PCM = [
15173
+ 1,
15174
+ 0,
15175
+ 0,
15176
+ 0,
15177
+ 0,
15178
+ 0,
15179
+ 16,
15180
+ 0,
15181
+ 128,
15182
+ 0,
15183
+ 0,
15184
+ 170,
15185
+ 0,
15186
+ 56,
15187
+ 155,
15188
+ 113
15189
+ ];
15190
+ var KSDATAFORMAT_SUBTYPE_IEEE_FLOAT = [
15191
+ 3,
15192
+ 0,
15193
+ 0,
15194
+ 0,
15195
+ 0,
15196
+ 0,
15197
+ 16,
15198
+ 0,
15199
+ 128,
15200
+ 0,
15201
+ 0,
15202
+ 170,
15203
+ 0,
15204
+ 56,
15205
+ 155,
15206
+ 113
15207
+ ];
15208
+ var subformatIsPcm = (subformat) => {
15209
+ return subformat.every((value, index) => value === WMMEDIASUBTYPE_PCM[index]);
15210
+ };
15211
+ var subformatIsIeeeFloat = (subformat) => {
15212
+ return subformat.every((value, index) => value === KSDATAFORMAT_SUBTYPE_IEEE_FLOAT[index]);
15213
+ };
15214
+
15077
15215
  // src/containers/wav/parse-fmt.ts
15078
15216
  var CHANNELS = {
15079
15217
  0: "Front Left",
@@ -15148,10 +15286,8 @@ var parseFmt = async ({
15148
15286
  if (subFormat.length !== 16) {
15149
15287
  throw new Error(`Only supporting WAVE with PCM audio format, but got ${subFormat.length}`);
15150
15288
  }
15151
- for (let i = 0;i < 16; i++) {
15152
- if (subFormat[i] !== [1, 0, 0, 0, 0, 0, 16, 0, 128, 0, 0, 170, 0, 56, 155, 113][i]) {
15153
- throw new Error(`Only supporting WAVE with PCM audio format, but got subformat ${subFormat[i]}`);
15154
- }
15289
+ if (subformatIsPcm(subFormat)) {} else if (subformatIsIeeeFloat(subFormat)) {} else {
15290
+ throw new Error(`Unsupported subformat: ${subFormat}`);
15155
15291
  }
15156
15292
  const channels2 = getChannelsFromMask(channelMask);
15157
15293
  wavHeader.numberOfChannels = channels2.length;
@@ -15323,6 +15459,9 @@ var parseWav = (state) => {
15323
15459
  if (type === "JUNK" || type === "FLLR") {
15324
15460
  return parseJunk({ state });
15325
15461
  }
15462
+ if (type === "fact") {
15463
+ return parseFact({ state });
15464
+ }
15326
15465
  if (type === "\x00") {
15327
15466
  return Promise.resolve(null);
15328
15467
  }
@@ -15873,8 +16012,8 @@ var warnIfRemotionLicenseNotAcknowledged = ({
15873
16012
  return;
15874
16013
  }
15875
16014
  warningShown = true;
15876
- Log.warn(logLevel, "Note: Some companies are required to obtain a license to use @remotion/media-parser. See: https://remotion.dev/license");
15877
- Log.warn(logLevel, `Pass \`acknowledgeRemotionLicense: true\` to \`${apiName}\` function to make this message disappear.`);
16015
+ Log.warn(logLevel, `Note: Some companies are required to obtain a license to use @remotion/media-parser. See: https://remotion.dev/license
16016
+ Pass \`acknowledgeRemotionLicense: true\` to \`${apiName}\` function to make this message disappear.`);
15878
16017
  };
15879
16018
 
15880
16019
  // src/set-seeking-hints.ts
@@ -16159,7 +16298,11 @@ var getMfraAtom = async ({
16159
16298
  logLevel,
16160
16299
  prefetchCache
16161
16300
  });
16162
- const iterator = getArrayBufferIterator(new Uint8Array, parentSize);
16301
+ const iterator = getArrayBufferIterator({
16302
+ initialData: new Uint8Array,
16303
+ maxBytes: parentSize,
16304
+ logLevel: "error"
16305
+ });
16163
16306
  while (true) {
16164
16307
  const res = await result.reader.reader.read();
16165
16308
  if (res.value) {
@@ -16193,7 +16336,11 @@ var getMfroAtom = async ({
16193
16336
  return null;
16194
16337
  }
16195
16338
  result.reader.abort();
16196
- const iterator = getArrayBufferIterator(value, value.length);
16339
+ const iterator = getArrayBufferIterator({
16340
+ initialData: value,
16341
+ maxBytes: value.length,
16342
+ logLevel: "error"
16343
+ });
16197
16344
  const size = iterator.getUint32();
16198
16345
  if (size !== 16) {
16199
16346
  iterator.destroy();
@@ -16648,7 +16795,11 @@ var fetchWebmCues = async ({
16648
16795
  return null;
16649
16796
  }
16650
16797
  result.reader.abort();
16651
- const iterator = getArrayBufferIterator(value, value.length);
16798
+ const iterator = getArrayBufferIterator({
16799
+ initialData: value,
16800
+ maxBytes: value.length,
16801
+ logLevel: "error"
16802
+ });
16652
16803
  const segment = await expectSegment({
16653
16804
  iterator,
16654
16805
  logLevel,
@@ -16913,7 +17064,11 @@ var fetchIdx1 = async ({
16913
17064
  if (result.contentLength === null) {
16914
17065
  throw new Error("Content length is null");
16915
17066
  }
16916
- const iterator = getArrayBufferIterator(new Uint8Array, contentLength - position + 1);
17067
+ const iterator = getArrayBufferIterator({
17068
+ initialData: new Uint8Array,
17069
+ maxBytes: contentLength - position + 1,
17070
+ logLevel: "error"
17071
+ });
16917
17072
  while (true) {
16918
17073
  const res = await result.reader.reader.read();
16919
17074
  if (res.value) {
@@ -17536,7 +17691,11 @@ var makeParserState = ({
17536
17691
  }) => {
17537
17692
  let skippedBytes = 0;
17538
17693
  const returnValue = {};
17539
- const iterator = getArrayBufferIterator(new Uint8Array([]), contentLength);
17694
+ const iterator = getArrayBufferIterator({
17695
+ initialData: new Uint8Array([]),
17696
+ maxBytes: contentLength,
17697
+ logLevel
17698
+ });
17540
17699
  const increaseSkippedBytes = (bytes) => {
17541
17700
  skippedBytes += bytes;
17542
17701
  };
@@ -17946,7 +18105,7 @@ var downloadAndParseMedia = async (options) => {
17946
18105
  return returnValue;
17947
18106
  };
17948
18107
  // src/version.ts
17949
- var VERSION = "4.0.317";
18108
+ var VERSION = "4.0.318";
17950
18109
 
17951
18110
  // src/index.ts
17952
18111
  var MediaParserInternals = {