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 +2 -2
- package/dist/bundles/mediabunny.cjs +33 -29
- package/dist/bundles/mediabunny.min.cjs +8 -8
- package/dist/bundles/mediabunny.min.mjs +8 -8
- package/dist/bundles/mediabunny.mjs +33 -29
- package/dist/modules/src/isobmff/isobmff-reader.d.ts.map +1 -1
- package/dist/modules/src/isobmff/isobmff-reader.js +4 -0
- package/dist/modules/src/matroska/matroska-demuxer.d.ts +2 -2
- package/dist/modules/src/matroska/matroska-demuxer.d.ts.map +1 -1
- package/dist/modules/src/matroska/matroska-demuxer.js +34 -34
- package/dist/modules/src/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/isobmff/isobmff-reader.ts +5 -0
- package/src/matroska/matroska-demuxer.ts +41 -36
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
|
|
9705
|
+
const startPos = slice.filePos;
|
|
9706
|
+
const foundElement = this.traverseElement(slice, stopIds);
|
|
9702
9707
|
if (!foundElement) {
|
|
9703
|
-
|
|
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
|
-
|
|
10910
|
-
|
|
10911
|
-
|
|
10912
|
-
|
|
10913
|
-
|
|
10914
|
-
|
|
10915
|
-
|
|
10916
|
-
|
|
10917
|
-
|
|
10918
|
-
|
|
10919
|
-
|
|
10920
|
-
|
|
10921
|
-
|
|
10922
|
-
if (
|
|
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 =
|
|
10939
|
+
currentPos = endPos;
|
|
10936
10940
|
}
|
|
10937
10941
|
if (cuePoint && (!bestCluster || bestCluster.elementStartPos < cuePoint.clusterPosition)) {
|
|
10938
10942
|
const previousCuePoint = this.internalTrack.cuePoints[cuePointIndex - 1];
|