OpenCut/apps/web/src/lib/retime/resolve.ts

49 lines
1.0 KiB
TypeScript

import type { RetimeConfig } from "@/lib/timeline";
import { clampRetimeRate } from "@/constants/retime-constants";
function getSafeRate({ rate }: { rate: number }): number {
return clampRetimeRate({ rate });
}
export function getSourceTimeAtClipTime({
clipTime,
retime,
}: {
clipTime: number;
retime?: RetimeConfig;
}): number {
return clipTime * getSafeRate({ rate: retime?.rate ?? 1 });
}
export function getClipTimeAtSourceTime({
sourceTime,
retime,
}: {
sourceTime: number;
retime?: RetimeConfig;
}): number {
return sourceTime / getSafeRate({ rate: retime?.rate ?? 1 });
}
export function getEffectiveRateAt({
retime,
}: {
clipTime?: number;
retime?: RetimeConfig;
}): number {
return getSafeRate({ rate: retime?.rate ?? 1 });
}
export function getTimelineDurationForSourceSpan({
sourceSpan,
retime,
}: {
sourceSpan: number;
retime?: RetimeConfig;
}): number {
if (sourceSpan <= 0) {
return 0;
}
return sourceSpan / getSafeRate({ rate: retime?.rate ?? 1 });
}