@remotion/media-parser 4.0.244 → 4.0.246
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/LICENSE.md +1 -1
- package/dist/boxes/avc/create-sps-pps-data.js +10 -4
- package/dist/boxes/iso-base-media/mdat/mdat.js +17 -5
- package/dist/boxes/iso-base-media/process-box.js +0 -3
- package/dist/boxes/iso-base-media/to-date.d.ts +0 -1
- package/dist/boxes/iso-base-media/to-date.js +1 -9
- package/dist/boxes/transport-stream/adts-header.d.ts +1 -1
- package/dist/boxes/transport-stream/discard-rest-of-packet.d.ts +1 -1
- package/dist/boxes/transport-stream/parse-stream-packet.js +4 -4
- package/dist/boxes/webm/color.d.ts +0 -1
- package/dist/boxes/webm/color.js +1 -83
- package/dist/boxes/webm/parse-ebml.js +8 -10
- package/dist/boxes/webm/segments/all-segments.d.ts +24 -21
- package/dist/boxes/webm/segments/all-segments.js +17 -19
- package/dist/combine-uint8-arrays.d.ts +1 -0
- package/dist/combine-uint8-arrays.js +23 -0
- package/dist/emit-available-info.js +1 -11
- package/dist/esm/index.mjs +7470 -9782
- package/dist/file-types/detect-file-type.js +2 -2
- package/dist/index.d.ts +787 -27
- package/dist/index.js +19 -13
- package/dist/parse-media.js +0 -3
- package/dist/state/parser-state.d.ts +1 -3
- package/dist/state/parser-state.js +1 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -15
- package/buffer.js +0 -2
- package/dist/boxes/avc/codec-private.d.ts +0 -2
- package/dist/boxes/avc/codec-private.js +0 -28
- package/dist/boxes/webm/ebml.d.ts +0 -2
- package/dist/boxes/webm/ebml.js +0 -94
- package/dist/boxes/webm/make-header.d.ts +0 -8
- package/dist/boxes/webm/make-header.js +0 -187
- package/dist/create/event-emitter.d.ts +0 -31
- package/dist/create/event-emitter.js +0 -25
- package/dist/create/iso-base-media/codec-specific/avc1.d.ts +0 -2
- package/dist/create/iso-base-media/codec-specific/avc1.js +0 -48
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.d.ts +0 -22
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.js +0 -36
- package/dist/create/iso-base-media/codec-specific/mp4a.d.ts +0 -2
- package/dist/create/iso-base-media/codec-specific/mp4a.js +0 -74
- package/dist/create/iso-base-media/create-colr.d.ts +0 -6
- package/dist/create/iso-base-media/create-colr.js +0 -26
- package/dist/create/iso-base-media/create-ftyp.d.ts +0 -10
- package/dist/create/iso-base-media/create-ftyp.js +0 -22
- package/dist/create/iso-base-media/create-ilst.d.ts +0 -1
- package/dist/create/iso-base-media/create-ilst.js +0 -14
- package/dist/create/iso-base-media/create-iso-base-media.d.ts +0 -2
- package/dist/create/iso-base-media/create-iso-base-media.js +0 -184
- package/dist/create/iso-base-media/create-mdia.d.ts +0 -5
- package/dist/create/iso-base-media/create-mdia.js +0 -18
- package/dist/create/iso-base-media/create-moov.d.ts +0 -5
- package/dist/create/iso-base-media/create-moov.js +0 -18
- package/dist/create/iso-base-media/create-mvhd.d.ts +0 -10
- package/dist/create/iso-base-media/create-mvhd.js +0 -48
- package/dist/create/iso-base-media/create-trak.d.ts +0 -4
- package/dist/create/iso-base-media/create-trak.js +0 -17
- package/dist/create/iso-base-media/create-udta.d.ts +0 -1
- package/dist/create/iso-base-media/create-udta.js +0 -14
- package/dist/create/iso-base-media/create-url.d.ts +0 -1
- package/dist/create/iso-base-media/create-url.js +0 -16
- package/dist/create/iso-base-media/example-stts.d.ts +0 -3
- package/dist/create/iso-base-media/example-stts.js +0 -2797
- package/dist/create/iso-base-media/ilst/create-cmt.d.ts +0 -1
- package/dist/create/iso-base-media/ilst/create-cmt.js +0 -26
- package/dist/create/iso-base-media/ilst/create-too.d.ts +0 -1
- package/dist/create/iso-base-media/ilst/create-too.js +0 -27
- package/dist/create/iso-base-media/mdia/create-mdhd.d.ts +0 -6
- package/dist/create/iso-base-media/mdia/create-mdhd.js +0 -33
- package/dist/create/iso-base-media/mp4-header.d.ts +0 -6
- package/dist/create/iso-base-media/mp4-header.js +0 -48
- package/dist/create/iso-base-media/primitives.d.ts +0 -15
- package/dist/create/iso-base-media/primitives.js +0 -133
- package/dist/create/iso-base-media/serialize-track.d.ts +0 -9
- package/dist/create/iso-base-media/serialize-track.js +0 -63
- package/dist/create/iso-base-media/trak/create-tkhd.d.ts +0 -27
- package/dist/create/iso-base-media/trak/create-tkhd.js +0 -97
- package/dist/create/iso-base-media/trak/mdia/create-minf.d.ts +0 -4
- package/dist/create/iso-base-media/trak/mdia/create-minf.js +0 -19
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.js +0 -22
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.js +0 -20
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.d.ts +0 -6
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.js +0 -41
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.js +0 -20
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.js +0 -45
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.js +0 -28
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.js +0 -56
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.js +0 -23
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.js +0 -25
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.js +0 -51
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.js +0 -20
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.js +0 -16
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.js +0 -13
- package/dist/create/iso-base-media/udta/create-meta.d.ts +0 -4
- package/dist/create/iso-base-media/udta/create-meta.js +0 -20
- package/dist/create/iso-base-media/udta/meta/create-hdlr.d.ts +0 -1
- package/dist/create/iso-base-media/udta/meta/create-hdlr.js +0 -32
- package/dist/create/make-track-info.d.ts +0 -20
- package/dist/create/make-track-info.js +0 -2
- package/dist/create/matroska/cluster-segment.d.ts +0 -10
- package/dist/create/matroska/cluster-segment.js +0 -39
- package/dist/create/matroska/cluster.d.ts +0 -25
- package/dist/create/matroska/cluster.js +0 -77
- package/dist/create/matroska/create-matroska-media.d.ts +0 -2
- package/dist/create/matroska/create-matroska-media.js +0 -189
- package/dist/create/matroska/make-duration-with-padding.d.ts +0 -1
- package/dist/create/matroska/make-duration-with-padding.js +0 -15
- package/dist/create/matroska/matroska-cues.d.ts +0 -6
- package/dist/create/matroska/matroska-cues.js +0 -49
- package/dist/create/matroska/matroska-header.d.ts +0 -1
- package/dist/create/matroska/matroska-header.js +0 -66
- package/dist/create/matroska/matroska-info.d.ts +0 -3
- package/dist/create/matroska/matroska-info.js +0 -33
- package/dist/create/matroska/matroska-seek.d.ts +0 -6
- package/dist/create/matroska/matroska-seek.js +0 -32
- package/dist/create/matroska/matroska-segment.d.ts +0 -3
- package/dist/create/matroska/matroska-segment.js +0 -13
- package/dist/create/matroska/matroska-trackentry.d.ts +0 -10
- package/dist/create/matroska/matroska-trackentry.js +0 -249
- package/dist/create/media-fn.d.ts +0 -32
- package/dist/create/media-fn.js +0 -2
- package/dist/create/progress-tracker.d.ts +0 -9
- package/dist/create/progress-tracker.js +0 -67
- package/dist/create/timescale.d.ts +0 -1
- package/dist/create/timescale.js +0 -4
- package/dist/create/wav/create-wav.d.ts +0 -2
- package/dist/create/wav/create-wav.js +0 -110
- package/dist/create/with-resolvers.d.ts +0 -10
- package/dist/create/with-resolvers.js +0 -28
- package/dist/errors/detect-file-type.d.ts +0 -1
- package/dist/errors/detect-file-type.js +0 -88
- package/dist/errors/file-types.d.ts +0 -1
- package/dist/errors/file-types.js +0 -88
- package/dist/esm/buffer.mjs +0 -56
- package/dist/esm/web-fs.mjs +0 -73
- package/dist/file-types/get-jpeg-dimensions.d.ts +0 -4
- package/dist/file-types/get-jpeg-dimensions.js +0 -32
- package/dist/file-types.d.ts +0 -1
- package/dist/file-types.js +0 -88
- package/dist/parser-context.d.ts +0 -10
- package/dist/parser-context.js +0 -2
- package/dist/probing/detect-file-type.d.ts +0 -1
- package/dist/probing/detect-file-type.js +0 -88
- package/dist/probing/get-jpeg-dimensions.d.ts +0 -4
- package/dist/probing/get-jpeg-dimensions.js +0 -32
- package/dist/state/tracks-and-samples.d.ts +0 -0
- package/dist/state/tracks-and-samples.js +0 -1
- package/dist/writers/buffer-implementation/writer.d.ts +0 -2
- package/dist/writers/buffer-implementation/writer.js +0 -54
- package/dist/writers/buffer.d.ts +0 -2
- package/dist/writers/buffer.js +0 -7
- package/dist/writers/web-fs.d.ts +0 -3
- package/dist/writers/web-fs.js +0 -74
- package/dist/writers/writer.d.ts +0 -15
- package/dist/writers/writer.js +0 -2
- package/web-fs.js +0 -2
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectFileType = void 0;
|
|
4
|
-
const make_header_1 = require("./boxes/webm/make-header");
|
|
5
|
-
const matchesPattern = (pattern) => {
|
|
6
|
-
return (data) => {
|
|
7
|
-
return pattern.every((value, index) => data[index] === value);
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
const isRiff = (data) => {
|
|
11
|
-
const riffPattern = new Uint8Array([0x52, 0x49, 0x46, 0x46]);
|
|
12
|
-
return matchesPattern(riffPattern)(data.subarray(0, 4));
|
|
13
|
-
};
|
|
14
|
-
const isWebm = (data) => {
|
|
15
|
-
return matchesPattern(make_header_1.webmPattern)(data.subarray(0, 4));
|
|
16
|
-
};
|
|
17
|
-
const isIsoBaseMedia = (data) => {
|
|
18
|
-
const isoBaseMediaMp4Pattern = new TextEncoder().encode('ftyp');
|
|
19
|
-
return matchesPattern(isoBaseMediaMp4Pattern)(data.subarray(4, 8));
|
|
20
|
-
};
|
|
21
|
-
const isTransportStream = (data) => {
|
|
22
|
-
return data[0] === 0x47 && data[188] === 0x47;
|
|
23
|
-
};
|
|
24
|
-
const isMp3 = (data) => {
|
|
25
|
-
const mpegPattern = new Uint8Array([0xff, 0xf3, 0xe4, 0x64]);
|
|
26
|
-
return matchesPattern(mpegPattern)(data.subarray(0, 4));
|
|
27
|
-
};
|
|
28
|
-
const isGif = (data) => {
|
|
29
|
-
const gifPattern = new Uint8Array([0x47, 0x49, 0x46, 0x38]);
|
|
30
|
-
return matchesPattern(gifPattern)(data.subarray(0, 4));
|
|
31
|
-
};
|
|
32
|
-
const isPng = (data) => {
|
|
33
|
-
const pngPattern = new Uint8Array([0x89, 0x50, 0x4e, 0x47]);
|
|
34
|
-
return matchesPattern(pngPattern)(data.subarray(0, 4));
|
|
35
|
-
};
|
|
36
|
-
const isBmp = (data) => {
|
|
37
|
-
const bmpPattern = new Uint8Array([0x42, 0x4d]);
|
|
38
|
-
return matchesPattern(bmpPattern)(data.subarray(0, 2));
|
|
39
|
-
};
|
|
40
|
-
const isJpeg = (data) => {
|
|
41
|
-
const jpegPattern = new Uint8Array([0xff, 0xd8]);
|
|
42
|
-
const jpeg = matchesPattern(jpegPattern)(data.subarray(0, 2));
|
|
43
|
-
if (!jpeg) {
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
const width = data[6] * 256 + data[7];
|
|
47
|
-
const height = data[8] * 256 + data[9];
|
|
48
|
-
console.log(width, height);
|
|
49
|
-
return true;
|
|
50
|
-
};
|
|
51
|
-
const isWebp = (data) => {
|
|
52
|
-
const webpPattern = new Uint8Array([0x52, 0x49, 0x46, 0x46]);
|
|
53
|
-
return matchesPattern(webpPattern)(data.subarray(0, 4));
|
|
54
|
-
};
|
|
55
|
-
const detectFileType = (data) => {
|
|
56
|
-
if (isWebp(data)) {
|
|
57
|
-
return 'webp';
|
|
58
|
-
}
|
|
59
|
-
if (isRiff(data)) {
|
|
60
|
-
return 'riff';
|
|
61
|
-
}
|
|
62
|
-
if (isWebm(data)) {
|
|
63
|
-
return 'webm';
|
|
64
|
-
}
|
|
65
|
-
if (isIsoBaseMedia(data)) {
|
|
66
|
-
return 'iso-base-media';
|
|
67
|
-
}
|
|
68
|
-
if (isTransportStream(data)) {
|
|
69
|
-
return 'transport-stream';
|
|
70
|
-
}
|
|
71
|
-
if (isMp3(data)) {
|
|
72
|
-
return 'mp3';
|
|
73
|
-
}
|
|
74
|
-
if (isGif(data)) {
|
|
75
|
-
return 'gif';
|
|
76
|
-
}
|
|
77
|
-
if (isPng(data)) {
|
|
78
|
-
return 'png';
|
|
79
|
-
}
|
|
80
|
-
if (isBmp(data)) {
|
|
81
|
-
return 'bmp';
|
|
82
|
-
}
|
|
83
|
-
if (isJpeg(data)) {
|
|
84
|
-
return 'jpeg';
|
|
85
|
-
}
|
|
86
|
-
return 'unknown';
|
|
87
|
-
};
|
|
88
|
-
exports.detectFileType = detectFileType;
|
package/dist/esm/buffer.mjs
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
// src/writers/buffer-implementation/writer.ts
|
|
2
|
-
var createContent = ({ filename, mimeType }) => {
|
|
3
|
-
const buf = new ArrayBuffer(0, {
|
|
4
|
-
maxByteLength: 2000000000
|
|
5
|
-
});
|
|
6
|
-
if (!buf.resize) {
|
|
7
|
-
throw new Error("Could not create buffer writer");
|
|
8
|
-
}
|
|
9
|
-
const write = (newData) => {
|
|
10
|
-
const oldLength = buf.byteLength;
|
|
11
|
-
const newLength = oldLength + newData.byteLength;
|
|
12
|
-
buf.resize(newLength);
|
|
13
|
-
const newArray = new Uint8Array(buf);
|
|
14
|
-
newArray.set(newData, oldLength);
|
|
15
|
-
};
|
|
16
|
-
const updateDataAt = (position, newData) => {
|
|
17
|
-
const newArray = new Uint8Array(buf);
|
|
18
|
-
newArray.set(newData, position);
|
|
19
|
-
};
|
|
20
|
-
let writPromise = Promise.resolve();
|
|
21
|
-
let removed = false;
|
|
22
|
-
const writer = {
|
|
23
|
-
write: (arr) => {
|
|
24
|
-
writPromise = writPromise.then(() => write(arr));
|
|
25
|
-
return writPromise;
|
|
26
|
-
},
|
|
27
|
-
save: () => {
|
|
28
|
-
if (removed) {
|
|
29
|
-
return Promise.reject(new Error("Already called .remove() on the result"));
|
|
30
|
-
}
|
|
31
|
-
const arr = new Uint8Array(buf);
|
|
32
|
-
return Promise.resolve(new File([arr.slice()], filename, { type: mimeType }));
|
|
33
|
-
},
|
|
34
|
-
remove() {
|
|
35
|
-
removed = true;
|
|
36
|
-
return Promise.resolve();
|
|
37
|
-
},
|
|
38
|
-
getWrittenByteCount: () => buf.byteLength,
|
|
39
|
-
updateDataAt: (position, newData) => {
|
|
40
|
-
writPromise = writPromise.then(() => updateDataAt(position, newData));
|
|
41
|
-
return writPromise;
|
|
42
|
-
},
|
|
43
|
-
waitForFinish: async () => {
|
|
44
|
-
await writPromise;
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
return Promise.resolve(writer);
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
// src/writers/buffer.ts
|
|
51
|
-
var bufferWriter = {
|
|
52
|
-
createContent
|
|
53
|
-
};
|
|
54
|
-
export {
|
|
55
|
-
bufferWriter
|
|
56
|
-
};
|
package/dist/esm/web-fs.mjs
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
// src/writers/web-fs.ts
|
|
2
|
-
var createContent = async ({ filename }) => {
|
|
3
|
-
const directoryHandle = await navigator.storage.getDirectory();
|
|
4
|
-
directoryHandle.removeEntry(filename);
|
|
5
|
-
const fileHandle = await directoryHandle.getFileHandle(filename, {
|
|
6
|
-
create: true
|
|
7
|
-
});
|
|
8
|
-
const writable = await fileHandle.createWritable();
|
|
9
|
-
let written = 0;
|
|
10
|
-
let writPromise = Promise.resolve();
|
|
11
|
-
const write = async (arr) => {
|
|
12
|
-
await writable.write(arr);
|
|
13
|
-
written += arr.byteLength;
|
|
14
|
-
};
|
|
15
|
-
const updateDataAt = async (position, data) => {
|
|
16
|
-
await writable.seek(position);
|
|
17
|
-
await writable.write(data);
|
|
18
|
-
await writable.seek(written);
|
|
19
|
-
};
|
|
20
|
-
const remove = async () => {
|
|
21
|
-
await directoryHandle.removeEntry(filename, {
|
|
22
|
-
recursive: true
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
const writer = {
|
|
26
|
-
write: (arr) => {
|
|
27
|
-
writPromise = writPromise.then(() => write(arr));
|
|
28
|
-
return writPromise;
|
|
29
|
-
},
|
|
30
|
-
save: async () => {
|
|
31
|
-
try {
|
|
32
|
-
await writable.close();
|
|
33
|
-
} catch {
|
|
34
|
-
}
|
|
35
|
-
const newHandle = await directoryHandle.getFileHandle(filename, {
|
|
36
|
-
create: true
|
|
37
|
-
});
|
|
38
|
-
const newFile = await newHandle.getFile();
|
|
39
|
-
return newFile;
|
|
40
|
-
},
|
|
41
|
-
getWrittenByteCount: () => written,
|
|
42
|
-
updateDataAt: (position, data) => {
|
|
43
|
-
writPromise = writPromise.then(() => updateDataAt(position, data));
|
|
44
|
-
return writPromise;
|
|
45
|
-
},
|
|
46
|
-
waitForFinish: async () => {
|
|
47
|
-
await writPromise;
|
|
48
|
-
},
|
|
49
|
-
remove
|
|
50
|
-
};
|
|
51
|
-
return writer;
|
|
52
|
-
};
|
|
53
|
-
var webFsWriter = {
|
|
54
|
-
createContent
|
|
55
|
-
};
|
|
56
|
-
var canUseWebFsWriter = async () => {
|
|
57
|
-
if (!("storage" in navigator)) {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
if (!("getDirectory" in navigator.storage)) {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
const directoryHandle = await navigator.storage.getDirectory();
|
|
64
|
-
const fileHandle = await directoryHandle.getFileHandle("remotion-probe-web-fs-support", {
|
|
65
|
-
create: true
|
|
66
|
-
});
|
|
67
|
-
const canUse = fileHandle.createWritable !== undefined;
|
|
68
|
-
return canUse;
|
|
69
|
-
};
|
|
70
|
-
export {
|
|
71
|
-
webFsWriter,
|
|
72
|
-
canUseWebFsWriter
|
|
73
|
-
};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getJpegDimensions = getJpegDimensions;
|
|
4
|
-
function getJpegDimensions(data) {
|
|
5
|
-
let offset = 0;
|
|
6
|
-
// Helper function to read a 16-bit big-endian integer
|
|
7
|
-
function readUint16BE(o) {
|
|
8
|
-
return (data[o] << 8) | data[o + 1];
|
|
9
|
-
}
|
|
10
|
-
// Skip the Start of Image (SOI) marker
|
|
11
|
-
if (readUint16BE(offset) !== 0xffd8) {
|
|
12
|
-
return null; // Not a valid JPEG file
|
|
13
|
-
}
|
|
14
|
-
offset += 2;
|
|
15
|
-
while (offset < data.length) {
|
|
16
|
-
if (data[offset] === 0xff) {
|
|
17
|
-
const marker = data[offset + 1];
|
|
18
|
-
if (marker === 0xc0 || marker === 0xc2) {
|
|
19
|
-
// SOF0 or SOF2
|
|
20
|
-
const height = readUint16BE(offset + 5);
|
|
21
|
-
const width = readUint16BE(offset + 7);
|
|
22
|
-
return { width, height };
|
|
23
|
-
}
|
|
24
|
-
const length = readUint16BE(offset + 2);
|
|
25
|
-
offset += length + 2; // Move to the next marker
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
offset++;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return null; // Return null if dimensions are not found
|
|
32
|
-
}
|
package/dist/file-types.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const detectFileType: (data: Uint8Array) => "webp" | "riff" | "webm" | "iso-base-media" | "transport-stream" | "mp3" | "gif" | "png" | "bmp" | "jpeg" | "unknown";
|
package/dist/file-types.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectFileType = void 0;
|
|
4
|
-
const make_header_1 = require("./boxes/webm/make-header");
|
|
5
|
-
const matchesPattern = (pattern) => {
|
|
6
|
-
return (data) => {
|
|
7
|
-
return pattern.every((value, index) => data[index] === value);
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
const isRiff = (data) => {
|
|
11
|
-
const riffPattern = new Uint8Array([0x52, 0x49, 0x46, 0x46]);
|
|
12
|
-
return matchesPattern(riffPattern)(data.subarray(0, 4));
|
|
13
|
-
};
|
|
14
|
-
const isWebm = (data) => {
|
|
15
|
-
return matchesPattern(make_header_1.webmPattern)(data.subarray(0, 4));
|
|
16
|
-
};
|
|
17
|
-
const isIsoBaseMedia = (data) => {
|
|
18
|
-
const isoBaseMediaMp4Pattern = new TextEncoder().encode('ftyp');
|
|
19
|
-
return matchesPattern(isoBaseMediaMp4Pattern)(data.subarray(4, 8));
|
|
20
|
-
};
|
|
21
|
-
const isTransportStream = (data) => {
|
|
22
|
-
return data[0] === 0x47 && data[188] === 0x47;
|
|
23
|
-
};
|
|
24
|
-
const isMp3 = (data) => {
|
|
25
|
-
const mpegPattern = new Uint8Array([0xff, 0xf3, 0xe4, 0x64]);
|
|
26
|
-
return matchesPattern(mpegPattern)(data.subarray(0, 4));
|
|
27
|
-
};
|
|
28
|
-
const isGif = (data) => {
|
|
29
|
-
const gifPattern = new Uint8Array([0x47, 0x49, 0x46, 0x38]);
|
|
30
|
-
return matchesPattern(gifPattern)(data.subarray(0, 4));
|
|
31
|
-
};
|
|
32
|
-
const isPng = (data) => {
|
|
33
|
-
const pngPattern = new Uint8Array([0x89, 0x50, 0x4e, 0x47]);
|
|
34
|
-
return matchesPattern(pngPattern)(data.subarray(0, 4));
|
|
35
|
-
};
|
|
36
|
-
const isBmp = (data) => {
|
|
37
|
-
const bmpPattern = new Uint8Array([0x42, 0x4d]);
|
|
38
|
-
return matchesPattern(bmpPattern)(data.subarray(0, 2));
|
|
39
|
-
};
|
|
40
|
-
const isJpeg = (data) => {
|
|
41
|
-
const jpegPattern = new Uint8Array([0xff, 0xd8]);
|
|
42
|
-
const jpeg = matchesPattern(jpegPattern)(data.subarray(0, 2));
|
|
43
|
-
if (!jpeg) {
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
const width = data[6] * 256 + data[7];
|
|
47
|
-
const height = data[8] * 256 + data[9];
|
|
48
|
-
console.log(width, height);
|
|
49
|
-
return true;
|
|
50
|
-
};
|
|
51
|
-
const isWebp = (data) => {
|
|
52
|
-
const webpPattern = new Uint8Array([0x52, 0x49, 0x46, 0x46]);
|
|
53
|
-
return matchesPattern(webpPattern)(data.subarray(0, 4));
|
|
54
|
-
};
|
|
55
|
-
const detectFileType = (data) => {
|
|
56
|
-
if (isWebp(data)) {
|
|
57
|
-
return 'webp';
|
|
58
|
-
}
|
|
59
|
-
if (isRiff(data)) {
|
|
60
|
-
return 'riff';
|
|
61
|
-
}
|
|
62
|
-
if (isWebm(data)) {
|
|
63
|
-
return 'webm';
|
|
64
|
-
}
|
|
65
|
-
if (isIsoBaseMedia(data)) {
|
|
66
|
-
return 'iso-base-media';
|
|
67
|
-
}
|
|
68
|
-
if (isTransportStream(data)) {
|
|
69
|
-
return 'transport-stream';
|
|
70
|
-
}
|
|
71
|
-
if (isMp3(data)) {
|
|
72
|
-
return 'mp3';
|
|
73
|
-
}
|
|
74
|
-
if (isGif(data)) {
|
|
75
|
-
return 'gif';
|
|
76
|
-
}
|
|
77
|
-
if (isPng(data)) {
|
|
78
|
-
return 'png';
|
|
79
|
-
}
|
|
80
|
-
if (isBmp(data)) {
|
|
81
|
-
return 'bmp';
|
|
82
|
-
}
|
|
83
|
-
if (isJpeg(data)) {
|
|
84
|
-
return 'jpeg';
|
|
85
|
-
}
|
|
86
|
-
return 'unknown';
|
|
87
|
-
};
|
|
88
|
-
exports.detectFileType = detectFileType;
|
package/dist/parser-context.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { ParserState } from './state/parser-state';
|
|
2
|
-
import type { OnAudioTrack, OnVideoTrack } from './webcodec-sample-types';
|
|
3
|
-
export type ParserContext = {
|
|
4
|
-
onAudioTrack: OnAudioTrack | null;
|
|
5
|
-
onVideoTrack: OnVideoTrack | null;
|
|
6
|
-
parserState: ParserState;
|
|
7
|
-
nullifySamples: boolean;
|
|
8
|
-
supportsContentRange: boolean;
|
|
9
|
-
nextTrackIndex: number;
|
|
10
|
-
};
|
package/dist/parser-context.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const detectFileType: (data: Uint8Array) => "webp" | "riff" | "webm" | "iso-base-media" | "transport-stream" | "mp3" | "gif" | "png" | "bmp" | "jpeg" | "unknown";
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectFileType = void 0;
|
|
4
|
-
const make_header_1 = require("../boxes/webm/make-header");
|
|
5
|
-
const get_jpeg_dimensions_1 = require("./get-jpeg-dimensions");
|
|
6
|
-
const matchesPattern = (pattern) => {
|
|
7
|
-
return (data) => {
|
|
8
|
-
return pattern.every((value, index) => data[index] === value);
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
const isRiff = (data) => {
|
|
12
|
-
const riffPattern = new Uint8Array([0x52, 0x49, 0x46, 0x46]);
|
|
13
|
-
return matchesPattern(riffPattern)(data.subarray(0, 4));
|
|
14
|
-
};
|
|
15
|
-
const isWebm = (data) => {
|
|
16
|
-
return matchesPattern(make_header_1.webmPattern)(data.subarray(0, 4));
|
|
17
|
-
};
|
|
18
|
-
const isIsoBaseMedia = (data) => {
|
|
19
|
-
const isoBaseMediaMp4Pattern = new TextEncoder().encode('ftyp');
|
|
20
|
-
return matchesPattern(isoBaseMediaMp4Pattern)(data.subarray(4, 8));
|
|
21
|
-
};
|
|
22
|
-
const isTransportStream = (data) => {
|
|
23
|
-
return data[0] === 0x47 && data[188] === 0x47;
|
|
24
|
-
};
|
|
25
|
-
const isMp3 = (data) => {
|
|
26
|
-
const mpegPattern = new Uint8Array([0xff, 0xf3, 0xe4, 0x64]);
|
|
27
|
-
return matchesPattern(mpegPattern)(data.subarray(0, 4));
|
|
28
|
-
};
|
|
29
|
-
const isGif = (data) => {
|
|
30
|
-
const gifPattern = new Uint8Array([0x47, 0x49, 0x46, 0x38]);
|
|
31
|
-
return matchesPattern(gifPattern)(data.subarray(0, 4));
|
|
32
|
-
};
|
|
33
|
-
const isPng = (data) => {
|
|
34
|
-
const pngPattern = new Uint8Array([0x89, 0x50, 0x4e, 0x47]);
|
|
35
|
-
return matchesPattern(pngPattern)(data.subarray(0, 4));
|
|
36
|
-
};
|
|
37
|
-
const isBmp = (data) => {
|
|
38
|
-
const bmpPattern = new Uint8Array([0x42, 0x4d]);
|
|
39
|
-
return matchesPattern(bmpPattern)(data.subarray(0, 2));
|
|
40
|
-
};
|
|
41
|
-
const isJpeg = (data) => {
|
|
42
|
-
const jpegPattern = new Uint8Array([0xff, 0xd8]);
|
|
43
|
-
const jpeg = matchesPattern(jpegPattern)(data.subarray(0, 2));
|
|
44
|
-
if (!jpeg) {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
const dim = (0, get_jpeg_dimensions_1.getJpegDimensions)(data);
|
|
48
|
-
console.log(dim);
|
|
49
|
-
return true;
|
|
50
|
-
};
|
|
51
|
-
const isWebp = (data) => {
|
|
52
|
-
const webpPattern = new Uint8Array([0x52, 0x49, 0x46, 0x46]);
|
|
53
|
-
return matchesPattern(webpPattern)(data.subarray(0, 4));
|
|
54
|
-
};
|
|
55
|
-
const detectFileType = (data) => {
|
|
56
|
-
if (isWebp(data)) {
|
|
57
|
-
return 'webp';
|
|
58
|
-
}
|
|
59
|
-
if (isRiff(data)) {
|
|
60
|
-
return 'riff';
|
|
61
|
-
}
|
|
62
|
-
if (isWebm(data)) {
|
|
63
|
-
return 'webm';
|
|
64
|
-
}
|
|
65
|
-
if (isIsoBaseMedia(data)) {
|
|
66
|
-
return 'iso-base-media';
|
|
67
|
-
}
|
|
68
|
-
if (isTransportStream(data)) {
|
|
69
|
-
return 'transport-stream';
|
|
70
|
-
}
|
|
71
|
-
if (isMp3(data)) {
|
|
72
|
-
return 'mp3';
|
|
73
|
-
}
|
|
74
|
-
if (isGif(data)) {
|
|
75
|
-
return 'gif';
|
|
76
|
-
}
|
|
77
|
-
if (isPng(data)) {
|
|
78
|
-
return 'png';
|
|
79
|
-
}
|
|
80
|
-
if (isBmp(data)) {
|
|
81
|
-
return 'bmp';
|
|
82
|
-
}
|
|
83
|
-
if (isJpeg(data)) {
|
|
84
|
-
return 'jpeg';
|
|
85
|
-
}
|
|
86
|
-
return 'unknown';
|
|
87
|
-
};
|
|
88
|
-
exports.detectFileType = detectFileType;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getJpegDimensions = getJpegDimensions;
|
|
4
|
-
function getJpegDimensions(data) {
|
|
5
|
-
let offset = 0;
|
|
6
|
-
// Helper function to read a 16-bit big-endian integer
|
|
7
|
-
function readUint16BE(o) {
|
|
8
|
-
return (data[o] << 8) | data[o + 1];
|
|
9
|
-
}
|
|
10
|
-
// Skip the Start of Image (SOI) marker
|
|
11
|
-
if (readUint16BE(offset) !== 0xffd8) {
|
|
12
|
-
return null; // Not a valid JPEG file
|
|
13
|
-
}
|
|
14
|
-
offset += 2;
|
|
15
|
-
while (offset < data.length) {
|
|
16
|
-
if (data[offset] === 0xff) {
|
|
17
|
-
const marker = data[offset + 1];
|
|
18
|
-
if (marker === 0xc0 || marker === 0xc2) {
|
|
19
|
-
// SOF0 or SOF2
|
|
20
|
-
const height = readUint16BE(offset + 5);
|
|
21
|
-
const width = readUint16BE(offset + 7);
|
|
22
|
-
return { width, height };
|
|
23
|
-
}
|
|
24
|
-
const length = readUint16BE(offset + 2);
|
|
25
|
-
offset += length + 2; // Move to the next marker
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
offset++;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return null; // Return null if dimensions are not found
|
|
32
|
-
}
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createContent = void 0;
|
|
4
|
-
const createContent = ({ filename, mimeType }) => {
|
|
5
|
-
const buf = new ArrayBuffer(0, {
|
|
6
|
-
// TODO: Educate that the buffer is limited to 2GB
|
|
7
|
-
maxByteLength: 2000000000,
|
|
8
|
-
});
|
|
9
|
-
if (!buf.resize) {
|
|
10
|
-
throw new Error('Could not create buffer writer');
|
|
11
|
-
}
|
|
12
|
-
const write = (newData) => {
|
|
13
|
-
const oldLength = buf.byteLength;
|
|
14
|
-
const newLength = oldLength + newData.byteLength;
|
|
15
|
-
buf.resize(newLength);
|
|
16
|
-
const newArray = new Uint8Array(buf);
|
|
17
|
-
newArray.set(newData, oldLength);
|
|
18
|
-
};
|
|
19
|
-
const updateDataAt = (position, newData) => {
|
|
20
|
-
const newArray = new Uint8Array(buf);
|
|
21
|
-
newArray.set(newData, position);
|
|
22
|
-
};
|
|
23
|
-
let writPromise = Promise.resolve();
|
|
24
|
-
let removed = false;
|
|
25
|
-
const writer = {
|
|
26
|
-
write: (arr) => {
|
|
27
|
-
writPromise = writPromise.then(() => write(arr));
|
|
28
|
-
return writPromise;
|
|
29
|
-
},
|
|
30
|
-
save: () => {
|
|
31
|
-
if (removed) {
|
|
32
|
-
return Promise.reject(new Error('Already called .remove() on the result'));
|
|
33
|
-
}
|
|
34
|
-
const arr = new Uint8Array(buf);
|
|
35
|
-
return Promise.resolve(
|
|
36
|
-
// TODO: Unhardcode MIME type and file name
|
|
37
|
-
new File([arr.slice()], filename, { type: mimeType }));
|
|
38
|
-
},
|
|
39
|
-
remove() {
|
|
40
|
-
removed = true;
|
|
41
|
-
return Promise.resolve();
|
|
42
|
-
},
|
|
43
|
-
getWrittenByteCount: () => buf.byteLength,
|
|
44
|
-
updateDataAt: (position, newData) => {
|
|
45
|
-
writPromise = writPromise.then(() => updateDataAt(position, newData));
|
|
46
|
-
return writPromise;
|
|
47
|
-
},
|
|
48
|
-
waitForFinish: async () => {
|
|
49
|
-
await writPromise;
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
return Promise.resolve(writer);
|
|
53
|
-
};
|
|
54
|
-
exports.createContent = createContent;
|
package/dist/writers/buffer.d.ts
DELETED
package/dist/writers/buffer.js
DELETED
package/dist/writers/web-fs.d.ts
DELETED
package/dist/writers/web-fs.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.canUseWebFsWriter = exports.webFsWriter = void 0;
|
|
4
|
-
const createContent = async ({ filename }) => {
|
|
5
|
-
const directoryHandle = await navigator.storage.getDirectory();
|
|
6
|
-
directoryHandle.removeEntry(filename);
|
|
7
|
-
const fileHandle = await directoryHandle.getFileHandle(filename, {
|
|
8
|
-
create: true,
|
|
9
|
-
});
|
|
10
|
-
const writable = await fileHandle.createWritable();
|
|
11
|
-
let written = 0;
|
|
12
|
-
let writPromise = Promise.resolve();
|
|
13
|
-
const write = async (arr) => {
|
|
14
|
-
await writable.write(arr);
|
|
15
|
-
written += arr.byteLength;
|
|
16
|
-
};
|
|
17
|
-
const updateDataAt = async (position, data) => {
|
|
18
|
-
await writable.seek(position);
|
|
19
|
-
await writable.write(data);
|
|
20
|
-
await writable.seek(written);
|
|
21
|
-
};
|
|
22
|
-
const remove = async () => {
|
|
23
|
-
await directoryHandle.removeEntry(filename, {
|
|
24
|
-
recursive: true,
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
const writer = {
|
|
28
|
-
write: (arr) => {
|
|
29
|
-
writPromise = writPromise.then(() => write(arr));
|
|
30
|
-
return writPromise;
|
|
31
|
-
},
|
|
32
|
-
save: async () => {
|
|
33
|
-
try {
|
|
34
|
-
await writable.close();
|
|
35
|
-
}
|
|
36
|
-
catch (_a) {
|
|
37
|
-
// Ignore, could already be closed
|
|
38
|
-
}
|
|
39
|
-
const newHandle = await directoryHandle.getFileHandle(filename, {
|
|
40
|
-
create: true,
|
|
41
|
-
});
|
|
42
|
-
const newFile = await newHandle.getFile();
|
|
43
|
-
return newFile;
|
|
44
|
-
},
|
|
45
|
-
getWrittenByteCount: () => written,
|
|
46
|
-
updateDataAt: (position, data) => {
|
|
47
|
-
writPromise = writPromise.then(() => updateDataAt(position, data));
|
|
48
|
-
return writPromise;
|
|
49
|
-
},
|
|
50
|
-
waitForFinish: async () => {
|
|
51
|
-
await writPromise;
|
|
52
|
-
},
|
|
53
|
-
remove,
|
|
54
|
-
};
|
|
55
|
-
return writer;
|
|
56
|
-
};
|
|
57
|
-
exports.webFsWriter = {
|
|
58
|
-
createContent,
|
|
59
|
-
};
|
|
60
|
-
const canUseWebFsWriter = async () => {
|
|
61
|
-
if (!('storage' in navigator)) {
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
if (!('getDirectory' in navigator.storage)) {
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
const directoryHandle = await navigator.storage.getDirectory();
|
|
68
|
-
const fileHandle = await directoryHandle.getFileHandle('remotion-probe-web-fs-support', {
|
|
69
|
-
create: true,
|
|
70
|
-
});
|
|
71
|
-
const canUse = fileHandle.createWritable !== undefined;
|
|
72
|
-
return canUse;
|
|
73
|
-
};
|
|
74
|
-
exports.canUseWebFsWriter = canUseWebFsWriter;
|
package/dist/writers/writer.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export type Writer = {
|
|
2
|
-
write: (arr: Uint8Array) => Promise<void>;
|
|
3
|
-
save: () => Promise<Blob>;
|
|
4
|
-
getWrittenByteCount: () => number;
|
|
5
|
-
updateDataAt: (position: number, data: Uint8Array) => Promise<void>;
|
|
6
|
-
waitForFinish: () => Promise<void>;
|
|
7
|
-
remove: () => Promise<void>;
|
|
8
|
-
};
|
|
9
|
-
export type CreateContent = (options: {
|
|
10
|
-
filename: string;
|
|
11
|
-
mimeType: string;
|
|
12
|
-
}) => Promise<Writer>;
|
|
13
|
-
export type WriterInterface = {
|
|
14
|
-
createContent: CreateContent;
|
|
15
|
-
};
|
package/dist/writers/writer.js
DELETED
package/web-fs.js
DELETED