@remotion/webcodecs 4.0.304 → 4.0.306
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/dist/audio-decoder.d.ts +15 -10
- package/dist/audio-decoder.js +49 -52
- package/dist/audio-encoder.d.ts +5 -5
- package/dist/audio-encoder.js +20 -42
- package/dist/convert-encoded-chunk.d.ts +1 -1
- package/dist/convert-encoded-chunk.js +2 -5
- package/dist/convert-media.js +2 -2
- package/dist/copy-audio-track.d.ts +11 -0
- package/dist/copy-audio-track.js +31 -0
- package/dist/copy-video-track.d.ts +11 -0
- package/dist/copy-video-track.js +32 -0
- package/dist/create/event-emitter.d.ts +0 -1
- package/dist/create/iso-base-media/create-iso-base-media.js +3 -3
- package/dist/create/iso-base-media/example-stts.js +620 -620
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.js +3 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.js +1 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.js +3 -2
- package/dist/create/matroska/create-matroska-media.js +1 -1
- package/dist/create/progress-tracker.d.ts +0 -2
- package/dist/create/progress-tracker.js +3 -20
- package/dist/esm/index.mjs +583 -496
- package/dist/get-wave-audio-decoder.d.ts +6 -1
- package/dist/get-wave-audio-decoder.js +16 -11
- package/dist/io-manager/io-synchronizer.d.ts +6 -13
- package/dist/io-manager/io-synchronizer.js +31 -72
- package/dist/io-manager/make-timeout-promise.d.ts +1 -1
- package/dist/io-manager/make-timeout-promise.js +8 -4
- package/dist/on-audio-track.d.ts +2 -2
- package/dist/on-audio-track.js +15 -150
- package/dist/on-frame.d.ts +2 -4
- package/dist/on-frame.js +8 -9
- package/dist/on-video-track.d.ts +2 -2
- package/dist/on-video-track.js +18 -129
- package/dist/processing-queue.d.ts +19 -0
- package/dist/processing-queue.js +47 -0
- package/dist/reencode-audio-track.d.ts +18 -0
- package/dist/reencode-audio-track.js +164 -0
- package/dist/reencode-video-track.d.ts +19 -0
- package/dist/reencode-video-track.js +151 -0
- package/dist/sort-video-frames.d.ts +4 -3
- package/dist/sort-video-frames.js +7 -3
- package/dist/video-decoder.d.ts +14 -8
- package/dist/video-decoder.js +37 -72
- package/dist/video-encoder.d.ts +6 -5
- package/dist/video-encoder.js +16 -40
- package/dist/wav-audio-encoder.d.ts +4 -1
- package/dist/wav-audio-encoder.js +3 -2
- package/package.json +5 -5
|
@@ -17,7 +17,9 @@ const createStbl = ({ samplePositions, codecSpecificData, isVideo, }) => {
|
|
|
17
17
|
// The sample entries are ordered by time stamps; therefore, the deltas are all nonnegative.
|
|
18
18
|
// For the other tables, there doesn't seem to be a requirement for them to be sorted
|
|
19
19
|
// -> ordering the sample positions by dts
|
|
20
|
-
const sorted = samplePositions
|
|
20
|
+
const sorted = samplePositions
|
|
21
|
+
.slice()
|
|
22
|
+
.sort((a, b) => a.decodingTimestamp - b.decodingTimestamp);
|
|
21
23
|
return (0, primitives_1.addSize)((0, matroska_utils_1.combineUint8Arrays)([
|
|
22
24
|
(0, primitives_1.stringsToUint8Array)('stbl'),
|
|
23
25
|
(0, create_avc1_1.createStsdData)(codecSpecificData),
|
|
@@ -10,7 +10,7 @@ const makeEntry = (entry) => {
|
|
|
10
10
|
]);
|
|
11
11
|
};
|
|
12
12
|
const createCttsBox = (samplePositions) => {
|
|
13
|
-
const offsets = samplePositions.map((s) => s.
|
|
13
|
+
const offsets = samplePositions.map((s) => s.timestamp - s.decodingTimestamp);
|
|
14
14
|
const entries = [];
|
|
15
15
|
let lastOffset = null;
|
|
16
16
|
for (const offset of offsets) {
|
|
@@ -18,9 +18,10 @@ const createSttsAtom = (samplePositions) => {
|
|
|
18
18
|
// TODO: Why does 0 appear here?
|
|
19
19
|
if (a[i].duration === undefined || a[i].duration === 0) {
|
|
20
20
|
if (a[i + 1] === undefined) {
|
|
21
|
-
return a[i].
|
|
21
|
+
return (a[i].decodingTimestamp -
|
|
22
|
+
(a[i - 1]?.decodingTimestamp ?? a[i].decodingTimestamp));
|
|
22
23
|
}
|
|
23
|
-
return a[i + 1].
|
|
24
|
+
return a[i + 1].decodingTimestamp - a[i].decodingTimestamp;
|
|
24
25
|
}
|
|
25
26
|
return a[i].duration;
|
|
26
27
|
});
|
|
@@ -88,7 +88,7 @@ const createMatroskaMedia = async ({ writer, onBytesProgress, onMillisecondsProg
|
|
|
88
88
|
// In Safari, samples can arrive out of order, e.g public/bigbuckbunny.mp4
|
|
89
89
|
// Therefore, only updating track number progress if it is a keyframe
|
|
90
90
|
// to allow for timestamps to be lower than the previous one
|
|
91
|
-
progressTracker.setPossibleLowestTimestamp(Math.min(chunk.timestamp, chunk.
|
|
91
|
+
progressTracker.setPossibleLowestTimestamp(Math.min(chunk.timestamp, chunk.decodingTimestamp ?? Infinity));
|
|
92
92
|
const smallestProgress = progressTracker.getSmallestProgress();
|
|
93
93
|
if (!currentCluster.shouldMakeNewCluster({
|
|
94
94
|
newT: smallestProgress,
|
|
@@ -2,8 +2,6 @@ export declare const makeProgressTracker: () => {
|
|
|
2
2
|
registerTrack: (trackNumber: number) => void;
|
|
3
3
|
getSmallestProgress: () => number;
|
|
4
4
|
updateTrackProgress: (trackNumber: number, progress: number) => void;
|
|
5
|
-
waitForProgress: () => Promise<void>;
|
|
6
|
-
getStartingTimestamp: () => number;
|
|
7
5
|
setPossibleLowestTimestamp: (timestamp: number) => void;
|
|
8
6
|
};
|
|
9
7
|
export type ProgressTracker = ReturnType<typeof makeProgressTracker>;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeProgressTracker = void 0;
|
|
4
4
|
const event_emitter_1 = require("./event-emitter");
|
|
5
|
-
const with_resolvers_1 = require("./with-resolvers");
|
|
6
5
|
// Make sure to distinguish null and undefined here
|
|
7
6
|
const makeProgressTracker = () => {
|
|
8
7
|
const trackNumberProgresses = {};
|
|
@@ -16,13 +15,7 @@ const makeProgressTracker = () => {
|
|
|
16
15
|
startingTimestamp = Math.min(startingTimestamp, timestamp);
|
|
17
16
|
}
|
|
18
17
|
};
|
|
19
|
-
const
|
|
20
|
-
if (startingTimestamp === null) {
|
|
21
|
-
throw new Error('No starting timestamp');
|
|
22
|
-
}
|
|
23
|
-
return startingTimestamp;
|
|
24
|
-
};
|
|
25
|
-
const calculateSmallestProgress = () => {
|
|
18
|
+
const getSmallestProgress = () => {
|
|
26
19
|
const progressValues = Object.values(trackNumberProgresses).map((p) => {
|
|
27
20
|
if (p !== null) {
|
|
28
21
|
return p;
|
|
@@ -41,26 +34,16 @@ const makeProgressTracker = () => {
|
|
|
41
34
|
registerTrack: (trackNumber) => {
|
|
42
35
|
trackNumberProgresses[trackNumber] = null;
|
|
43
36
|
},
|
|
44
|
-
getSmallestProgress
|
|
37
|
+
getSmallestProgress,
|
|
45
38
|
updateTrackProgress: (trackNumber, progress) => {
|
|
46
39
|
if (trackNumberProgresses[trackNumber] === undefined) {
|
|
47
40
|
throw new Error(`Tried to update progress for a track that was not registered: ${trackNumber}`);
|
|
48
41
|
}
|
|
49
42
|
trackNumberProgresses[trackNumber] = progress;
|
|
50
43
|
eventEmitter.dispatchEvent('progress', {
|
|
51
|
-
smallestProgress:
|
|
44
|
+
smallestProgress: getSmallestProgress(),
|
|
52
45
|
});
|
|
53
46
|
},
|
|
54
|
-
waitForProgress: () => {
|
|
55
|
-
const { promise, resolve } = (0, with_resolvers_1.withResolvers)();
|
|
56
|
-
const on = () => {
|
|
57
|
-
eventEmitter.removeEventListener('progress', on);
|
|
58
|
-
resolve();
|
|
59
|
-
};
|
|
60
|
-
eventEmitter.addEventListener('progress', on);
|
|
61
|
-
return promise;
|
|
62
|
-
},
|
|
63
|
-
getStartingTimestamp,
|
|
64
47
|
setPossibleLowestTimestamp,
|
|
65
48
|
};
|
|
66
49
|
};
|