@remotion/player
Version:
React component for embedding a Remotion preview into your app
29 lines (28 loc) • 1.28 kB
JavaScript
;
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;