diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-04-13 04:41:17 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-04-13 05:08:29 +0200 |
| commit | cad88ee4d1c9e06e7529b88ef5e5d3fdf3f89149 (patch) | |
| tree | 0bfc1fcb18b3da4969afa2836bb65e6a5e25d123 /apps/web/src/services/renderer/nodes/video-node.ts | |
| parent | 36efdf66e707c818b81009acf8a00630a0309ca1 (diff) | |
| download | opencut-cad88ee4d1c9e06e7529b88ef5e5d3fdf3f89149.tar.gz | |
refactor: rendering pipeline
Made-with: Cursor
Diffstat (limited to 'apps/web/src/services/renderer/nodes/video-node.ts')
| -rw-r--r-- | apps/web/src/services/renderer/nodes/video-node.ts | 41 |
1 files changed, 9 insertions, 32 deletions
diff --git a/apps/web/src/services/renderer/nodes/video-node.ts b/apps/web/src/services/renderer/nodes/video-node.ts index 4f225567..a903e2b2 100644 --- a/apps/web/src/services/renderer/nodes/video-node.ts +++ b/apps/web/src/services/renderer/nodes/video-node.ts @@ -1,7 +1,8 @@ -import type { CanvasRenderer } from "../canvas-renderer"; -import { mediaTimeToSeconds } from "opencut-wasm"; -import { VisualNode, type VisualNodeParams } from "./visual-node"; -import { videoCache } from "@/services/video-cache/service"; +import { + VisualNode, + type ResolvedVisualSourceNodeState, + type VisualNodeParams, +} from "./visual-node"; export interface VideoNodeParams extends VisualNodeParams { url: string; @@ -9,31 +10,7 @@ export interface VideoNodeParams extends VisualNodeParams { mediaId: string; } -export class VideoNode extends VisualNode<VideoNodeParams> { - async render({ renderer, time }: { renderer: CanvasRenderer; time: number }) { - await super.render({ renderer, time }); - - if (!this.isInRange({ time })) { - return; - } - - const videoTimeTicks = this.getSourceLocalTime({ time }); - const videoTimeSeconds = mediaTimeToSeconds({ time: videoTimeTicks }); - - const frame = await videoCache.getFrameAt({ - mediaId: this.params.mediaId, - file: this.params.file, - time: videoTimeSeconds, - }); - - if (frame) { - this.renderVisual({ - renderer, - source: frame.canvas, - sourceWidth: frame.canvas.width, - sourceHeight: frame.canvas.height, - timelineTime: time, - }); - } - } -} +export class VideoNode extends VisualNode< + VideoNodeParams, + ResolvedVisualSourceNodeState +> {} |
