Files
story-studio/remotion/node_modules/@remotion/player/dist/cjs/calculate-next-frame.js
2026-02-21 10:33:18 +01:00

29 lines
1.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.calculateNextFrame = void 0;
const calculateNextFrame = ({ time, currentFrame: startFrame, playbackSpeed, fps, actualLastFrame, actualFirstFrame, framesAdvanced, shouldLoop, }) => {
const op = playbackSpeed < 0 ? Math.ceil : Math.floor;
const framesToAdvance = op((time * playbackSpeed) / (1000 / fps)) - framesAdvanced;
const nextFrame = framesToAdvance + startFrame;
const isCurrentFrameOutside = startFrame > actualLastFrame || startFrame < actualFirstFrame;
const isNextFrameOutside = nextFrame > actualLastFrame || nextFrame < actualFirstFrame;
const hasEnded = !shouldLoop && isNextFrameOutside && !isCurrentFrameOutside;
if (playbackSpeed > 0) {
// Play forwards
if (isNextFrameOutside) {
return {
nextFrame: actualFirstFrame,
framesToAdvance,
hasEnded,
};
}
return { nextFrame, framesToAdvance, hasEnded };
}
// Reverse playback
if (isNextFrameOutside) {
return { nextFrame: actualLastFrame, framesToAdvance, hasEnded };
}
return { nextFrame, framesToAdvance, hasEnded };
};
exports.calculateNextFrame = calculateNextFrame;