mediabunny 1.24.1 → 1.24.2

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/README.md CHANGED
@@ -200,7 +200,7 @@ npm run lint # ESLint
200
200
 
201
201
  npm run docs:generate # Generates API docs
202
202
  npm run docs:dev # Start docs development server
203
- npm run dev # Start examples development server
204
-
203
+ npm run dev # Start examples development server, will run at http://localhost:5173/examples/[name]/
204
+
205
205
  npm run docs:build # Build docs and examples
206
206
  ```
@@ -6342,6 +6342,9 @@ var Mediabunny = (() => {
6342
6342
  if (!header || header.name !== "data") {
6343
6343
  return null;
6344
6344
  }
6345
+ if (slice.remainingLength < 8) {
6346
+ return null;
6347
+ }
6345
6348
  const typeIndicator = readU32Be(slice);
6346
6349
  slice.skip(4);
6347
6350
  const data = readBytes(slice, header.contentSize - 8);
@@ -9493,7 +9496,8 @@ var Mediabunny = (() => {
9493
9496
  };
9494
9497
  this.currentCluster = cluster;
9495
9498
  if (dataSlice) {
9496
- this.readContiguousElements(dataSlice);
9499
+ const endPos = this.readContiguousElements(dataSlice, LEVEL_0_AND_1_EBML_IDS);
9500
+ cluster.elementEndPos = endPos;
9497
9501
  }
9498
9502
  for (const [, trackData] of cluster.trackData) {
9499
9503
  const track = trackData.track;
@@ -9695,20 +9699,25 @@ var Mediabunny = (() => {
9695
9699
  }
9696
9700
  }
9697
9701
  }
9698
- readContiguousElements(slice) {
9702
+ readContiguousElements(slice, stopIds) {
9699
9703
  const startIndex = slice.filePos;
9700
9704
  while (slice.filePos - startIndex <= slice.length - MIN_HEADER_SIZE) {
9701
- const foundElement = this.traverseElement(slice);
9705
+ const startPos = slice.filePos;
9706
+ const foundElement = this.traverseElement(slice, stopIds);
9702
9707
  if (!foundElement) {
9703
- break;
9708
+ return startPos;
9704
9709
  }
9705
9710
  }
9711
+ return slice.filePos;
9706
9712
  }
9707
- traverseElement(slice) {
9713
+ traverseElement(slice, stopIds) {
9708
9714
  const header = readElementHeader(slice);
9709
9715
  if (!header) {
9710
9716
  return false;
9711
9717
  }
9718
+ if (stopIds && stopIds.includes(header.id)) {
9719
+ return false;
9720
+ }
9712
9721
  const { id, size } = header;
9713
9722
  const dataStartPos = slice.filePos;
9714
9723
  assertDefinedSize(size);
@@ -10896,6 +10905,7 @@ var Mediabunny = (() => {
10896
10905
  const dataStartPos = slice.filePos;
10897
10906
  if (id === 524531317 /* Cluster */) {
10898
10907
  currentCluster = await demuxer.readCluster(elementStartPos, segment);
10908
+ size = currentCluster.elementEndPos - dataStartPos;
10899
10909
  const { blockIndex, correctBlockFound } = getMatchInCluster(currentCluster);
10900
10910
  if (correctBlockFound) {
10901
10911
  return this.fetchPacketInCluster(currentCluster, blockIndex, options);
@@ -10906,33 +10916,27 @@ var Mediabunny = (() => {
10906
10916
  }
10907
10917
  }
10908
10918
  if (size === null) {
10909
- if (id === 524531317 /* Cluster */) {
10910
- assert(currentCluster);
10911
- size = currentCluster.elementEndPos - dataStartPos;
10912
- } else {
10913
- const nextElementPos = await searchForNextElementId(
10914
- demuxer.reader,
10915
- dataStartPos,
10916
- LEVEL_0_AND_1_EBML_IDS,
10917
- segment.elementEndPos
10918
- );
10919
- size = nextElementPos.pos - dataStartPos;
10920
- }
10921
- const endPos = dataStartPos + size;
10922
- if (segment.elementEndPos !== null && endPos > segment.elementEndPos - MIN_HEADER_SIZE) {
10919
+ assert(id !== 524531317 /* Cluster */);
10920
+ const nextElementPos = await searchForNextElementId(
10921
+ demuxer.reader,
10922
+ dataStartPos,
10923
+ LEVEL_0_AND_1_EBML_IDS,
10924
+ segment.elementEndPos
10925
+ );
10926
+ size = nextElementPos.pos - dataStartPos;
10927
+ }
10928
+ const endPos = dataStartPos + size;
10929
+ if (segment.elementEndPos === null) {
10930
+ let slice2 = demuxer.reader.requestSliceRange(endPos, MIN_HEADER_SIZE, MAX_HEADER_SIZE);
10931
+ if (slice2 instanceof Promise) slice2 = await slice2;
10932
+ if (!slice2) break;
10933
+ const elementId = readElementId(slice2);
10934
+ if (elementId === 408125543 /* Segment */) {
10935
+ segment.elementEndPos = endPos;
10923
10936
  break;
10924
- } else {
10925
- let slice2 = demuxer.reader.requestSliceRange(endPos, MIN_HEADER_SIZE, MAX_HEADER_SIZE);
10926
- if (slice2 instanceof Promise) slice2 = await slice2;
10927
- if (!slice2) break;
10928
- const elementId = readElementId(slice2);
10929
- if (elementId === 408125543 /* Segment */) {
10930
- segment.elementEndPos = endPos;
10931
- break;
10932
- }
10933
10937
  }
10934
10938
  }
10935
- currentPos = dataStartPos + size;
10939
+ currentPos = endPos;
10936
10940
  }
10937
10941
  if (cuePoint && (!bestCluster || bestCluster.elementStartPos < cuePoint.clusterPosition)) {
10938
10942
  const previousCuePoint = this.internalTrack.cuePoints[cuePointIndex - 1];