@remotion/media-parser 4.0.326 → 4.0.329
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/containers/aac/parse-aac.js +1 -0
- package/dist/containers/flac/parse-streaminfo.js +1 -0
- package/dist/containers/iso-base-media/make-track.js +12 -1
- package/dist/containers/iso-base-media/mdat/calculate-jump-marks.d.ts +6 -1
- package/dist/containers/iso-base-media/mdat/calculate-jump-marks.js +17 -20
- package/dist/containers/iso-base-media/mdat/get-editlist.d.ts +3 -0
- package/dist/containers/iso-base-media/mdat/get-editlist.js +18 -1
- package/dist/containers/iso-base-media/mdat/mdat.js +24 -13
- package/dist/containers/mp3/parse-mpeg-header.js +1 -0
- package/dist/containers/riff/get-tracks-from-avi.js +2 -0
- package/dist/containers/transport-stream/handle-aac-packet.js +1 -0
- package/dist/containers/transport-stream/handle-avc-packet.js +1 -0
- package/dist/containers/wav/parse-fmt.js +1 -0
- package/dist/containers/webm/make-track.js +2 -0
- package/dist/esm/index.mjs +120 -49
- package/dist/esm/worker-server-entry.mjs +140 -69
- package/dist/esm/worker-web-entry.mjs +140 -69
- package/dist/get-tracks.d.ts +3 -0
- package/dist/index.d.ts +3 -2
- package/dist/normalize-video-rotation.d.ts +1 -0
- package/dist/normalize-video-rotation.js +7 -0
- package/dist/parse-loop.js +2 -0
- package/dist/print-timings.js +1 -0
- package/dist/state/iso-base-media/cached-sample-positions.d.ts +6 -5
- package/dist/state/iso-base-media/cached-sample-positions.js +14 -7
- package/dist/state/iso-base-media/iso-state.d.ts +2 -2
- package/dist/state/parser-state.d.ts +3 -2
- package/dist/state/timings.d.ts +1 -0
- package/dist/state/timings.js +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -3
|
@@ -3174,6 +3174,11 @@ var getVideoCodecString = (trakBox) => {
|
|
|
3174
3174
|
return videoSample.format;
|
|
3175
3175
|
};
|
|
3176
3176
|
|
|
3177
|
+
// src/normalize-video-rotation.ts
|
|
3178
|
+
var normalizeVideoRotation = (rotation) => {
|
|
3179
|
+
return (rotation % 360 + 360) % 360;
|
|
3180
|
+
};
|
|
3181
|
+
|
|
3177
3182
|
// src/webcodecs-timescale.ts
|
|
3178
3183
|
var WEBCODECS_TIMESCALE = 1e6;
|
|
3179
3184
|
|
|
@@ -3414,6 +3419,45 @@ var getVideoCodecFromIsoTrak = (trakBox) => {
|
|
|
3414
3419
|
throw new Error("Could not find video codec");
|
|
3415
3420
|
};
|
|
3416
3421
|
|
|
3422
|
+
// src/containers/iso-base-media/mdat/get-editlist.ts
|
|
3423
|
+
var findTrackStartTimeInSeconds = ({
|
|
3424
|
+
movieTimeScale,
|
|
3425
|
+
trakBox
|
|
3426
|
+
}) => {
|
|
3427
|
+
const elstBox = getElstBox(trakBox);
|
|
3428
|
+
if (!elstBox) {
|
|
3429
|
+
return 0;
|
|
3430
|
+
}
|
|
3431
|
+
const { entries } = elstBox;
|
|
3432
|
+
let dwellTime = 0;
|
|
3433
|
+
for (const entry of entries) {
|
|
3434
|
+
const { editDuration, mediaTime } = entry;
|
|
3435
|
+
if (mediaTime !== -1) {
|
|
3436
|
+
continue;
|
|
3437
|
+
}
|
|
3438
|
+
dwellTime += editDuration;
|
|
3439
|
+
}
|
|
3440
|
+
return dwellTime / movieTimeScale;
|
|
3441
|
+
};
|
|
3442
|
+
var findTrackMediaTimeOffsetInTrackTimescale = ({
|
|
3443
|
+
trakBox
|
|
3444
|
+
}) => {
|
|
3445
|
+
const elstBox = getElstBox(trakBox);
|
|
3446
|
+
if (!elstBox) {
|
|
3447
|
+
return 0;
|
|
3448
|
+
}
|
|
3449
|
+
const { entries } = elstBox;
|
|
3450
|
+
let dwellTime = 0;
|
|
3451
|
+
for (const entry of entries) {
|
|
3452
|
+
const { mediaTime } = entry;
|
|
3453
|
+
if (mediaTime === -1) {
|
|
3454
|
+
continue;
|
|
3455
|
+
}
|
|
3456
|
+
dwellTime += mediaTime;
|
|
3457
|
+
}
|
|
3458
|
+
return dwellTime;
|
|
3459
|
+
};
|
|
3460
|
+
|
|
3417
3461
|
// src/containers/iso-base-media/make-track.ts
|
|
3418
3462
|
var makeBaseMediaTrack = (trakBox, startTimeInSeconds) => {
|
|
3419
3463
|
const tkhdBox = getTkhdBox(trakBox);
|
|
@@ -3454,7 +3498,10 @@ var makeBaseMediaTrack = (trakBox, startTimeInSeconds) => {
|
|
|
3454
3498
|
codecData: actual.codecPrivate,
|
|
3455
3499
|
codecEnum,
|
|
3456
3500
|
startInSeconds: startTimeInSeconds,
|
|
3457
|
-
timescale: WEBCODECS_TIMESCALE
|
|
3501
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
3502
|
+
trackMediaTimeOffsetInTrackTimescale: findTrackMediaTimeOffsetInTrackTimescale({
|
|
3503
|
+
trakBox
|
|
3504
|
+
})
|
|
3458
3505
|
};
|
|
3459
3506
|
}
|
|
3460
3507
|
if (!trakBoxContainsVideo(trakBox)) {
|
|
@@ -3464,7 +3511,10 @@ var makeBaseMediaTrack = (trakBox, startTimeInSeconds) => {
|
|
|
3464
3511
|
originalTimescale: timescaleAndDuration.timescale,
|
|
3465
3512
|
trakBox,
|
|
3466
3513
|
startInSeconds: startTimeInSeconds,
|
|
3467
|
-
timescale: WEBCODECS_TIMESCALE
|
|
3514
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
3515
|
+
trackMediaTimeOffsetInTrackTimescale: findTrackMediaTimeOffsetInTrackTimescale({
|
|
3516
|
+
trakBox
|
|
3517
|
+
})
|
|
3468
3518
|
};
|
|
3469
3519
|
}
|
|
3470
3520
|
const videoSample = getStsdVideoConfig(trakBox);
|
|
@@ -3506,39 +3556,21 @@ var makeBaseMediaTrack = (trakBox, startTimeInSeconds) => {
|
|
|
3506
3556
|
codedHeight: videoSample.height,
|
|
3507
3557
|
displayAspectWidth,
|
|
3508
3558
|
displayAspectHeight,
|
|
3509
|
-
rotation,
|
|
3559
|
+
rotation: normalizeVideoRotation(0 - rotation),
|
|
3510
3560
|
codecData: privateData,
|
|
3511
3561
|
colorSpace: mediaParserAdvancedColorToWebCodecsColor(advancedColor),
|
|
3512
3562
|
advancedColor,
|
|
3513
3563
|
codecEnum: getVideoCodecFromIsoTrak(trakBox),
|
|
3514
3564
|
fps: getFpsFromMp4TrakBox(trakBox),
|
|
3515
3565
|
startInSeconds: startTimeInSeconds,
|
|
3516
|
-
timescale: WEBCODECS_TIMESCALE
|
|
3566
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
3567
|
+
trackMediaTimeOffsetInTrackTimescale: findTrackMediaTimeOffsetInTrackTimescale({
|
|
3568
|
+
trakBox
|
|
3569
|
+
})
|
|
3517
3570
|
};
|
|
3518
3571
|
return track;
|
|
3519
3572
|
};
|
|
3520
3573
|
|
|
3521
|
-
// src/containers/iso-base-media/mdat/get-editlist.ts
|
|
3522
|
-
var findTrackStartTimeInSeconds = ({
|
|
3523
|
-
movieTimeScale,
|
|
3524
|
-
trakBox
|
|
3525
|
-
}) => {
|
|
3526
|
-
const elstBox = getElstBox(trakBox);
|
|
3527
|
-
if (!elstBox) {
|
|
3528
|
-
return 0;
|
|
3529
|
-
}
|
|
3530
|
-
const { entries } = elstBox;
|
|
3531
|
-
let dwellTime = 0;
|
|
3532
|
-
for (const entry of entries) {
|
|
3533
|
-
const { editDuration, mediaTime } = entry;
|
|
3534
|
-
if (mediaTime !== -1) {
|
|
3535
|
-
continue;
|
|
3536
|
-
}
|
|
3537
|
-
dwellTime += editDuration;
|
|
3538
|
-
}
|
|
3539
|
-
return dwellTime / movieTimeScale;
|
|
3540
|
-
};
|
|
3541
|
-
|
|
3542
3574
|
// src/containers/avc/codec-string.ts
|
|
3543
3575
|
var getCodecStringFromSpsAndPps = (sps) => {
|
|
3544
3576
|
return `avc1.${sps.spsData.profile.toString(16).padStart(2, "0")}${sps.spsData.compatibility.toString(16).padStart(2, "0")}${sps.spsData.level.toString(16).padStart(2, "0")}`;
|
|
@@ -3639,7 +3671,8 @@ var makeAviAudioTrack = ({
|
|
|
3639
3671
|
originalTimescale: MEDIA_PARSER_RIFF_TIMESCALE,
|
|
3640
3672
|
trackId: index,
|
|
3641
3673
|
startInSeconds: 0,
|
|
3642
|
-
timescale: WEBCODECS_TIMESCALE
|
|
3674
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
3675
|
+
trackMediaTimeOffsetInTrackTimescale: 0
|
|
3643
3676
|
};
|
|
3644
3677
|
};
|
|
3645
3678
|
var makeAviVideoTrack = ({
|
|
@@ -3684,7 +3717,8 @@ var makeAviVideoTrack = ({
|
|
|
3684
3717
|
},
|
|
3685
3718
|
fps: strh.rate / strh.scale,
|
|
3686
3719
|
startInSeconds: 0,
|
|
3687
|
-
timescale: WEBCODECS_TIMESCALE
|
|
3720
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
3721
|
+
trackMediaTimeOffsetInTrackTimescale: 0
|
|
3688
3722
|
};
|
|
3689
3723
|
};
|
|
3690
3724
|
var getTracksFromAvi = (structure, state) => {
|
|
@@ -4351,7 +4385,8 @@ var getTrack = ({
|
|
|
4351
4385
|
codecEnum,
|
|
4352
4386
|
fps: null,
|
|
4353
4387
|
startInSeconds: 0,
|
|
4354
|
-
timescale: WEBCODECS_TIMESCALE
|
|
4388
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
4389
|
+
trackMediaTimeOffsetInTrackTimescale: 0
|
|
4355
4390
|
};
|
|
4356
4391
|
}
|
|
4357
4392
|
if (trackTypeToString(trackType2.value.value) === "audio") {
|
|
@@ -4375,7 +4410,8 @@ var getTrack = ({
|
|
|
4375
4410
|
track
|
|
4376
4411
|
}),
|
|
4377
4412
|
startInSeconds: 0,
|
|
4378
|
-
timescale: WEBCODECS_TIMESCALE
|
|
4413
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
4414
|
+
trackMediaTimeOffsetInTrackTimescale: 0
|
|
4379
4415
|
};
|
|
4380
4416
|
}
|
|
4381
4417
|
return null;
|
|
@@ -7213,7 +7249,8 @@ var handleAvcPacket = async ({
|
|
|
7213
7249
|
colorSpace: mediaParserAdvancedColorToWebCodecsColor(advancedColor),
|
|
7214
7250
|
advancedColor,
|
|
7215
7251
|
startInSeconds: 0,
|
|
7216
|
-
timescale: WEBCODECS_TIMESCALE
|
|
7252
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
7253
|
+
trackMediaTimeOffsetInTrackTimescale: 0
|
|
7217
7254
|
};
|
|
7218
7255
|
await registerVideoTrack({
|
|
7219
7256
|
track,
|
|
@@ -8865,7 +8902,8 @@ var parseAac = async (state) => {
|
|
|
8865
8902
|
trackId: 0,
|
|
8866
8903
|
type: "audio",
|
|
8867
8904
|
startInSeconds: 0,
|
|
8868
|
-
timescale: WEBCODECS_TIMESCALE
|
|
8905
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
8906
|
+
trackMediaTimeOffsetInTrackTimescale: 0
|
|
8869
8907
|
},
|
|
8870
8908
|
registerAudioSampleCallback: state.callbacks.registerAudioSampleCallback,
|
|
8871
8909
|
tracks: state.callbacks.tracks,
|
|
@@ -9272,7 +9310,8 @@ var parseStreamInfo = async ({
|
|
|
9272
9310
|
originalTimescale: WEBCODECS_TIMESCALE,
|
|
9273
9311
|
trackId: 0,
|
|
9274
9312
|
startInSeconds: 0,
|
|
9275
|
-
timescale: WEBCODECS_TIMESCALE
|
|
9313
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
9314
|
+
trackMediaTimeOffsetInTrackTimescale: 0
|
|
9276
9315
|
},
|
|
9277
9316
|
registerAudioSampleCallback: state.callbacks.registerAudioSampleCallback,
|
|
9278
9317
|
tracks: state.callbacks.tracks,
|
|
@@ -9373,7 +9412,10 @@ var calculateFlatSamples = ({
|
|
|
9373
9412
|
if (!moov) {
|
|
9374
9413
|
throw new Error("No moov box found");
|
|
9375
9414
|
}
|
|
9376
|
-
const
|
|
9415
|
+
const offsets = [];
|
|
9416
|
+
const trackIds = [];
|
|
9417
|
+
const map = new Map;
|
|
9418
|
+
for (const track of tracks2) {
|
|
9377
9419
|
const trakBox = getTrakBoxByTrackId(moov, track.trackId);
|
|
9378
9420
|
if (!trakBox) {
|
|
9379
9421
|
throw new Error("No trak box found");
|
|
@@ -9384,14 +9426,17 @@ var calculateFlatSamples = ({
|
|
|
9384
9426
|
moofComplete,
|
|
9385
9427
|
trexBoxes: getTrexBoxes(moov)
|
|
9386
9428
|
});
|
|
9387
|
-
|
|
9388
|
-
|
|
9429
|
+
trackIds.push(track.trackId);
|
|
9430
|
+
for (const samplePosition of samplePositions) {
|
|
9431
|
+
offsets.push(samplePosition.offset);
|
|
9432
|
+
map.set(samplePosition.offset, {
|
|
9389
9433
|
track,
|
|
9390
9434
|
samplePosition
|
|
9391
|
-
};
|
|
9392
|
-
}
|
|
9393
|
-
}
|
|
9394
|
-
|
|
9435
|
+
});
|
|
9436
|
+
}
|
|
9437
|
+
}
|
|
9438
|
+
offsets.sort((a, b) => a - b);
|
|
9439
|
+
return { flatSamples: map, offsets, trackIds };
|
|
9395
9440
|
};
|
|
9396
9441
|
var cachedSamplePositionsState = () => {
|
|
9397
9442
|
const cachedForMdatStart = {};
|
|
@@ -11718,28 +11763,33 @@ var getKey = (samplePositionTrack) => {
|
|
|
11718
11763
|
return `${samplePositionTrack.track.trackId}-${samplePositionTrack.samplePosition.decodingTimestamp}`;
|
|
11719
11764
|
};
|
|
11720
11765
|
var findBestJump = ({
|
|
11721
|
-
|
|
11766
|
+
sampleMap,
|
|
11767
|
+
offsetsSorted,
|
|
11722
11768
|
visited,
|
|
11723
11769
|
progresses
|
|
11724
11770
|
}) => {
|
|
11725
11771
|
const minProgress = Math.min(...Object.values(progresses));
|
|
11726
11772
|
const trackNumberWithLowestProgress = Object.entries(progresses).find(([, progress]) => progress === minProgress)?.[0];
|
|
11727
|
-
const firstSampleAboveMinProgress =
|
|
11773
|
+
const firstSampleAboveMinProgress = offsetsSorted.findIndex((offset) => sampleMap.get(offset).track.trackId === Number(trackNumberWithLowestProgress) && !visited.has(getKey(sampleMap.get(offset))));
|
|
11728
11774
|
return firstSampleAboveMinProgress;
|
|
11729
11775
|
};
|
|
11730
|
-
var calculateJumpMarks = (
|
|
11776
|
+
var calculateJumpMarks = ({
|
|
11777
|
+
sampleMap,
|
|
11778
|
+
offsetsSorted,
|
|
11779
|
+
trackIds,
|
|
11780
|
+
endOfMdat
|
|
11781
|
+
}) => {
|
|
11731
11782
|
const progresses = {};
|
|
11732
|
-
for (const
|
|
11733
|
-
progresses[
|
|
11783
|
+
for (const trackId of trackIds) {
|
|
11784
|
+
progresses[trackId] = 0;
|
|
11734
11785
|
}
|
|
11735
11786
|
const jumpMarks = [];
|
|
11736
|
-
const allSamplesSortedByOffset = samplePositionTracks.flat(1).filter((s) => s.track.type === "audio" || s.track.type === "video").sort((a, b) => a.samplePosition.offset - b.samplePosition.offset);
|
|
11737
11787
|
let indexToVisit = 0;
|
|
11738
11788
|
const visited = new Set;
|
|
11739
11789
|
let rollOverToProcess = false;
|
|
11740
11790
|
const increaseIndex = () => {
|
|
11741
11791
|
indexToVisit++;
|
|
11742
|
-
if (indexToVisit >=
|
|
11792
|
+
if (indexToVisit >= offsetsSorted.length) {
|
|
11743
11793
|
rollOverToProcess = true;
|
|
11744
11794
|
indexToVisit = 0;
|
|
11745
11795
|
}
|
|
@@ -11753,23 +11803,24 @@ var calculateJumpMarks = (samplePositionTracks, endOfMdat) => {
|
|
|
11753
11803
|
}
|
|
11754
11804
|
const jumpMark = {
|
|
11755
11805
|
afterSampleWithOffset: lastVisitedSample.samplePosition.offset,
|
|
11756
|
-
jumpToOffset:
|
|
11806
|
+
jumpToOffset: offsetsSorted[firstSampleAboveMinProgress]
|
|
11757
11807
|
};
|
|
11758
11808
|
indexToVisit = firstSampleAboveMinProgress;
|
|
11759
11809
|
jumpMarks.push(jumpMark);
|
|
11760
11810
|
};
|
|
11761
11811
|
const addFinalJumpIfNecessary = () => {
|
|
11762
|
-
if (indexToVisit ===
|
|
11812
|
+
if (indexToVisit === offsetsSorted.length - 1) {
|
|
11763
11813
|
return;
|
|
11764
11814
|
}
|
|
11765
11815
|
jumpMarks.push({
|
|
11766
|
-
afterSampleWithOffset:
|
|
11816
|
+
afterSampleWithOffset: offsetsSorted[indexToVisit],
|
|
11767
11817
|
jumpToOffset: endOfMdat
|
|
11768
11818
|
});
|
|
11769
11819
|
};
|
|
11770
11820
|
const considerJump = () => {
|
|
11771
11821
|
const firstSampleAboveMinProgress = findBestJump({
|
|
11772
|
-
|
|
11822
|
+
sampleMap,
|
|
11823
|
+
offsetsSorted,
|
|
11773
11824
|
visited,
|
|
11774
11825
|
progresses
|
|
11775
11826
|
});
|
|
@@ -11779,14 +11830,14 @@ var calculateJumpMarks = (samplePositionTracks, endOfMdat) => {
|
|
|
11779
11830
|
} else {
|
|
11780
11831
|
while (true) {
|
|
11781
11832
|
increaseIndex();
|
|
11782
|
-
if (!visited.has(getKey(
|
|
11833
|
+
if (!visited.has(getKey(sampleMap.get(offsetsSorted[indexToVisit])))) {
|
|
11783
11834
|
break;
|
|
11784
11835
|
}
|
|
11785
11836
|
}
|
|
11786
11837
|
}
|
|
11787
11838
|
};
|
|
11788
11839
|
while (true) {
|
|
11789
|
-
const currentSamplePosition =
|
|
11840
|
+
const currentSamplePosition = sampleMap.get(offsetsSorted[indexToVisit]);
|
|
11790
11841
|
const sampleKey = getKey(currentSamplePosition);
|
|
11791
11842
|
if (visited.has(sampleKey)) {
|
|
11792
11843
|
considerJump();
|
|
@@ -11804,7 +11855,7 @@ var calculateJumpMarks = (samplePositionTracks, endOfMdat) => {
|
|
|
11804
11855
|
rollOverToProcess = false;
|
|
11805
11856
|
}
|
|
11806
11857
|
lastVisitedSample = currentSamplePosition;
|
|
11807
|
-
if (visited.size ===
|
|
11858
|
+
if (visited.size === offsetsSorted.length) {
|
|
11808
11859
|
addFinalJumpIfNecessary();
|
|
11809
11860
|
break;
|
|
11810
11861
|
}
|
|
@@ -11814,7 +11865,7 @@ var calculateJumpMarks = (samplePositionTracks, endOfMdat) => {
|
|
|
11814
11865
|
const maxProgress = Math.max(...progressValues);
|
|
11815
11866
|
const minProgress = Math.min(...progressValues);
|
|
11816
11867
|
const spread = maxProgress - minProgress;
|
|
11817
|
-
if (visited.size ===
|
|
11868
|
+
if (visited.size === offsetsSorted.length) {
|
|
11818
11869
|
addFinalJumpIfNecessary();
|
|
11819
11870
|
break;
|
|
11820
11871
|
}
|
|
@@ -11896,24 +11947,32 @@ var parseMdatSection = async (state) => {
|
|
|
11896
11947
|
return parseMdatSection(state);
|
|
11897
11948
|
}
|
|
11898
11949
|
if (!state.iso.flatSamples.getSamples(mediaSection.start)) {
|
|
11899
|
-
const
|
|
11950
|
+
const {
|
|
11951
|
+
flatSamples: flatSamplesMap,
|
|
11952
|
+
offsets,
|
|
11953
|
+
trackIds
|
|
11954
|
+
} = calculateFlatSamples({
|
|
11900
11955
|
state,
|
|
11901
11956
|
mediaSectionStart: mediaSection.start
|
|
11902
11957
|
});
|
|
11903
|
-
const calcedJumpMarks = calculateJumpMarks(
|
|
11958
|
+
const calcedJumpMarks = calculateJumpMarks({
|
|
11959
|
+
sampleMap: flatSamplesMap,
|
|
11960
|
+
offsetsSorted: offsets,
|
|
11961
|
+
trackIds,
|
|
11962
|
+
endOfMdat
|
|
11963
|
+
});
|
|
11904
11964
|
state.iso.flatSamples.setJumpMarks(mediaSection.start, calcedJumpMarks);
|
|
11905
|
-
state.iso.flatSamples.setSamples(mediaSection.start,
|
|
11965
|
+
state.iso.flatSamples.setSamples(mediaSection.start, flatSamplesMap);
|
|
11906
11966
|
}
|
|
11907
11967
|
const flatSamples = state.iso.flatSamples.getSamples(mediaSection.start);
|
|
11908
11968
|
const jumpMarks = state.iso.flatSamples.getJumpMarks(mediaSection.start);
|
|
11909
11969
|
const { iterator } = state;
|
|
11910
|
-
const samplesWithIndex = flatSamples.
|
|
11911
|
-
return sample.samplePosition.offset === iterator.counter.getOffset();
|
|
11912
|
-
});
|
|
11970
|
+
const samplesWithIndex = flatSamples.get(iterator.counter.getOffset());
|
|
11913
11971
|
if (!samplesWithIndex) {
|
|
11914
|
-
const
|
|
11972
|
+
const offsets = Array.from(flatSamples.keys());
|
|
11973
|
+
const nextSample_ = offsets.filter((s) => s > iterator.counter.getOffset()).sort((a, b) => a - b)[0];
|
|
11915
11974
|
if (nextSample_) {
|
|
11916
|
-
iterator.discard(nextSample_
|
|
11975
|
+
iterator.discard(nextSample_ - iterator.counter.getOffset());
|
|
11917
11976
|
return null;
|
|
11918
11977
|
}
|
|
11919
11978
|
Log.verbose(state.logLevel, "Could not find sample at offset", iterator.counter.getOffset(), "skipping to end of mdat");
|
|
@@ -11935,9 +11994,14 @@ var parseMdatSection = async (state) => {
|
|
|
11935
11994
|
bigEndian,
|
|
11936
11995
|
chunkSize
|
|
11937
11996
|
} = samplesWithIndex.samplePosition;
|
|
11938
|
-
const {
|
|
11939
|
-
|
|
11940
|
-
|
|
11997
|
+
const {
|
|
11998
|
+
originalTimescale,
|
|
11999
|
+
startInSeconds,
|
|
12000
|
+
trackMediaTimeOffsetInTrackTimescale,
|
|
12001
|
+
timescale: trackTimescale
|
|
12002
|
+
} = samplesWithIndex.track;
|
|
12003
|
+
const cts = rawCts + startInSeconds * originalTimescale - trackMediaTimeOffsetInTrackTimescale / trackTimescale * WEBCODECS_TIMESCALE;
|
|
12004
|
+
const dts = rawDts + startInSeconds * originalTimescale - trackMediaTimeOffsetInTrackTimescale / trackTimescale * WEBCODECS_TIMESCALE;
|
|
11941
12005
|
const bytes = postprocessBytes({
|
|
11942
12006
|
bytes: iterator.getSlice(samplesWithIndex.samplePosition.size),
|
|
11943
12007
|
bigEndian,
|
|
@@ -13315,7 +13379,8 @@ var parseMpegHeader = async ({
|
|
|
13315
13379
|
originalTimescale: 1e6,
|
|
13316
13380
|
trackId: 0,
|
|
13317
13381
|
startInSeconds: 0,
|
|
13318
|
-
timescale: WEBCODECS_TIMESCALE
|
|
13382
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
13383
|
+
trackMediaTimeOffsetInTrackTimescale: 0
|
|
13319
13384
|
},
|
|
13320
13385
|
registerAudioSampleCallback: state.callbacks.registerAudioSampleCallback,
|
|
13321
13386
|
tracks: state.callbacks.tracks,
|
|
@@ -14402,7 +14467,8 @@ var handleAacPacket = async ({
|
|
|
14402
14467
|
numberOfChannels: channelConfiguration,
|
|
14403
14468
|
sampleRate,
|
|
14404
14469
|
startInSeconds: 0,
|
|
14405
|
-
timescale: WEBCODECS_TIMESCALE
|
|
14470
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
14471
|
+
trackMediaTimeOffsetInTrackTimescale: 0
|
|
14406
14472
|
};
|
|
14407
14473
|
await registerAudioTrack({
|
|
14408
14474
|
track,
|
|
@@ -15035,7 +15101,8 @@ var parseFmt = async ({
|
|
|
15035
15101
|
originalTimescale: 1e6,
|
|
15036
15102
|
trackId: 0,
|
|
15037
15103
|
startInSeconds: 0,
|
|
15038
|
-
timescale: WEBCODECS_TIMESCALE
|
|
15104
|
+
timescale: WEBCODECS_TIMESCALE,
|
|
15105
|
+
trackMediaTimeOffsetInTrackTimescale: 0
|
|
15039
15106
|
},
|
|
15040
15107
|
container: "wav",
|
|
15041
15108
|
registerAudioSampleCallback: state.callbacks.registerAudioSampleCallback,
|
|
@@ -16033,9 +16100,11 @@ var parseLoop = async ({
|
|
|
16033
16100
|
try {
|
|
16034
16101
|
await triggerInfoEmit(state);
|
|
16035
16102
|
await state.controller._internals.checkForAbortAndPause();
|
|
16103
|
+
const parseLoopStart = Date.now();
|
|
16036
16104
|
const result = await runParseIteration({
|
|
16037
16105
|
state
|
|
16038
16106
|
});
|
|
16107
|
+
state.timings.timeInParseLoop += Date.now() - parseLoopStart;
|
|
16039
16108
|
if (result !== null && result.action === "fetch-more-data") {
|
|
16040
16109
|
Log.verbose(state.logLevel, `Need to fetch ${result.bytesNeeded} more bytes before we can continue`);
|
|
16041
16110
|
const startBytesRemaining = state.iterator.bytesRemaining();
|
|
@@ -16124,6 +16193,7 @@ var printTimings = (state) => {
|
|
|
16124
16193
|
Log.verbose(state.logLevel, `Time seeking: ${state.timings.timeSeeking}ms`);
|
|
16125
16194
|
Log.verbose(state.logLevel, `Time checking if done: ${state.timings.timeCheckingIfDone}ms`);
|
|
16126
16195
|
Log.verbose(state.logLevel, `Time freeing data: ${state.timings.timeFreeingData}ms`);
|
|
16196
|
+
Log.verbose(state.logLevel, `Time in parse loop: ${state.timings.timeInParseLoop}ms`);
|
|
16127
16197
|
};
|
|
16128
16198
|
|
|
16129
16199
|
// src/remotion-license-acknowledge.ts
|
|
@@ -17728,7 +17798,8 @@ var timingsState = () => {
|
|
|
17728
17798
|
timeReadingData: 0,
|
|
17729
17799
|
timeSeeking: 0,
|
|
17730
17800
|
timeCheckingIfDone: 0,
|
|
17731
|
-
timeFreeingData: 0
|
|
17801
|
+
timeFreeingData: 0,
|
|
17802
|
+
timeInParseLoop: 0
|
|
17732
17803
|
};
|
|
17733
17804
|
};
|
|
17734
17805
|
|