diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-04-26 17:31:28 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-04-26 17:31:28 +0200 |
| commit | 56ca09692a308b22455420d11376ff8d41244c47 (patch) | |
| tree | 4eca5ae032451c5db954801008aa9f164b2e2b1d /apps/web/src/wasm | |
| parent | e6c6193638e4247ff1e6f2df40de2a057112c773 (diff) | |
| download | opencut-56ca09692a308b22455420d11376ff8d41244c47.tar.gz | |
refactor: thinner hooks
Diffstat (limited to 'apps/web/src/wasm')
| -rw-r--r-- | apps/web/src/wasm/media-time.ts | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/apps/web/src/wasm/media-time.ts b/apps/web/src/wasm/media-time.ts index 7209e81c..82f5378d 100644 --- a/apps/web/src/wasm/media-time.ts +++ b/apps/web/src/wasm/media-time.ts @@ -1,7 +1,13 @@ import { + lastFrameTime as _lastFrameTime, + parseTimecode as _parseTimecode, + roundToFrame as _roundToFrame, + snappedSeekTime as _snappedSeekTime, TICKS_PER_SECOND as _TICKS_PER_SECOND, mediaTimeFromSeconds as _mediaTimeFromSeconds, mediaTimeToSeconds as _mediaTimeToSeconds, + type FrameRate, + type TimeCodeFormat, } from "opencut-wasm"; /** @@ -127,3 +133,58 @@ export function clampMediaTime({ if (time > max) return max; return time; } + +export function roundFrameTime({ + time, + fps, +}: { + time: MediaTime; + fps: FrameRate; +}): MediaTime { + return (_roundToFrame({ time, rate: fps }) ?? time) as MediaTime; +} + +export function roundFrameTicks({ + ticks, + fps, +}: { + ticks: number; + fps: FrameRate; +}): number { + return _roundToFrame({ time: ticks, rate: fps }) ?? ticks; +} + +export function snapSeekMediaTime({ + time, + duration, + fps, +}: { + time: MediaTime; + duration: MediaTime; + fps: FrameRate; +}): MediaTime { + return (_snappedSeekTime({ time, duration, rate: fps }) ?? time) as MediaTime; +} + +export function lastFrameMediaTime({ + duration, + fps, +}: { + duration: MediaTime; + fps: FrameRate; +}): MediaTime { + return (_lastFrameTime({ duration, rate: fps }) ?? duration) as MediaTime; +} + +export function parseMediaTimecode({ + timeCode, + format, + fps, +}: { + timeCode: string; + format: TimeCodeFormat; + fps: FrameRate; +}): MediaTime | null { + const parsedTime = _parseTimecode({ timeCode, format, rate: fps }); + return parsedTime == null ? null : (parsedTime as MediaTime); +} |
