@clipkit/playback 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +42 -0
- package/dist/audio.d.ts +44 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/audio.js +359 -0
- package/dist/audio.js.map +1 -0
- package/dist/buffer.d.ts +50 -0
- package/dist/buffer.d.ts.map +1 -0
- package/dist/buffer.js +137 -0
- package/dist/buffer.js.map +1 -0
- package/dist/clock.d.ts +63 -0
- package/dist/clock.d.ts.map +1 -0
- package/dist/clock.js +161 -0
- package/dist/clock.js.map +1 -0
- package/dist/engine.d.ts +99 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +1261 -0
- package/dist/engine.js.map +1 -0
- package/dist/frame-math.d.ts +10 -0
- package/dist/frame-math.d.ts.map +1 -0
- package/dist/frame-math.js +16 -0
- package/dist/frame-math.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +108 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/waveform.d.ts +25 -0
- package/dist/waveform.d.ts.map +1 -0
- package/dist/waveform.js +76 -0
- package/dist/waveform.js.map +1 -0
- package/dist/worker-protocol.d.ts +159 -0
- package/dist/worker-protocol.d.ts.map +1 -0
- package/dist/worker-protocol.js +24 -0
- package/dist/worker-protocol.js.map +1 -0
- package/dist/worker.d.ts +2 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +336 -0
- package/dist/worker.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frame-quantized step: the time of the frame `frames` away from the
|
|
3
|
+
* frame containing `time`, clamped to [0, duration]. `frames` may be
|
|
4
|
+
* negative. The current frame index is round(time × fps) — at exact
|
|
5
|
+
* frame boundaries (the common editor case) this is exact; mid-frame
|
|
6
|
+
* times snap to the nearest boundary before stepping, so repeated
|
|
7
|
+
* single steps land on consecutive frames instead of drifting.
|
|
8
|
+
*/
|
|
9
|
+
export declare function stepFrameTime(time: number, fps: number, frames: number, duration: number): number;
|
|
10
|
+
//# sourceMappingURL=frame-math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-math.d.ts","sourceRoot":"","sources":["../src/frame-math.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,CAIR"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Pure frame math — kept dependency-free so editors (and probes) can
|
|
2
|
+
// share the exact quantization the engine uses.
|
|
3
|
+
/**
|
|
4
|
+
* Frame-quantized step: the time of the frame `frames` away from the
|
|
5
|
+
* frame containing `time`, clamped to [0, duration]. `frames` may be
|
|
6
|
+
* negative. The current frame index is round(time × fps) — at exact
|
|
7
|
+
* frame boundaries (the common editor case) this is exact; mid-frame
|
|
8
|
+
* times snap to the nearest boundary before stepping, so repeated
|
|
9
|
+
* single steps land on consecutive frames instead of drifting.
|
|
10
|
+
*/
|
|
11
|
+
export function stepFrameTime(time, fps, frames, duration) {
|
|
12
|
+
const safeFps = fps > 0 ? fps : 30;
|
|
13
|
+
const index = Math.round(time * safeFps) + Math.round(frames);
|
|
14
|
+
return Math.max(0, Math.min(duration, index / safeFps));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=frame-math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-math.js","sourceRoot":"","sources":["../src/frame-math.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,gDAAgD;AAEhD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,GAAW,EACX,MAAc,EACd,QAAgB;IAEhB,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;AAC1D,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { PlaybackEngine } from './engine.js';
|
|
2
|
+
export type { Backend, BufferStatus, EngineStats, PlaybackEngineOptions, Unsubscribe, } from './types.js';
|
|
3
|
+
export { stepFrameTime } from './frame-math.js';
|
|
4
|
+
export { computeWaveformPeaks, extractWaveformPeaks } from './waveform.js';
|
|
5
|
+
export type { WaveformPeaks } from './waveform.js';
|
|
6
|
+
export type { AudioLevels, StereoPeak } from './audio.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC3E,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Public entry point. Anything imported as `@clipkit/playback` lives here.
|
|
2
|
+
//
|
|
3
|
+
// `TransportClock` is intentionally NOT exported. It's an internal
|
|
4
|
+
// collaborator the engine owns; the consumer never constructs one
|
|
5
|
+
// directly. See SPRINT.md for the rationale.
|
|
6
|
+
export { PlaybackEngine } from './engine.js';
|
|
7
|
+
// Editor-facing additions (EDITORS-PLAN A3).
|
|
8
|
+
export { stepFrameTime } from './frame-math.js';
|
|
9
|
+
export { computeWaveformPeaks, extractWaveformPeaks } from './waveform.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,mEAAmE;AACnE,kEAAkE;AAClE,6CAA6C;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAS7C,6CAA6C;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { Source } from '@clipkit/protocol';
|
|
2
|
+
/** Renderer backend selection. Matches the runtime's options. */
|
|
3
|
+
export type Backend = 'auto' | 'webgpu' | 'webgl2';
|
|
4
|
+
export interface PlaybackEngineOptions {
|
|
5
|
+
/** Canvas the engine draws presented frames into. */
|
|
6
|
+
displayCanvas: HTMLCanvasElement;
|
|
7
|
+
/** The composition to play. Can be swapped later via `setSource`. */
|
|
8
|
+
source: Source;
|
|
9
|
+
/** Renderer backend preference. Default `'auto'`. */
|
|
10
|
+
backend?: Backend;
|
|
11
|
+
/**
|
|
12
|
+
* How much time, in seconds, to render ahead of the playhead. Caps the
|
|
13
|
+
* VideoFrame ring buffer's memory footprint. Default `0.5`.
|
|
14
|
+
*
|
|
15
|
+
* Smaller = less memory, faster invalidation on edits, more starvation
|
|
16
|
+
* risk on heavy scenes. Larger = smoother playback on heavy scenes,
|
|
17
|
+
* costlier edit invalidation.
|
|
18
|
+
*/
|
|
19
|
+
bufferTargetSeconds?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Minimum interval between `onTime` callbacks, in milliseconds.
|
|
22
|
+
* Default `100` (≈10 Hz). The engine always tracks time precisely;
|
|
23
|
+
* this only throttles the user-facing event so consumers don't pay
|
|
24
|
+
* for 60 fps re-renders just to update a scrubber.
|
|
25
|
+
*/
|
|
26
|
+
timeUpdateIntervalMs?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Optional pre-existing `AudioContext` to use as the clock's precision
|
|
29
|
+
* source. If omitted, the engine creates and owns one. Pass an existing
|
|
30
|
+
* context when integrating into an app that already has an audio graph.
|
|
31
|
+
*/
|
|
32
|
+
audioContext?: AudioContext;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Diagnostic snapshot of the frame buffer's state. Surfaced through
|
|
36
|
+
* `onBufferStatus` for UI affordances like a buffering spinner.
|
|
37
|
+
*/
|
|
38
|
+
export interface BufferStatus {
|
|
39
|
+
/** Seconds of frames currently ready ahead of the playhead. */
|
|
40
|
+
ahead: number;
|
|
41
|
+
/**
|
|
42
|
+
* `true` when the playhead has overrun the produced frames and
|
|
43
|
+
* the renderer is catching up. UIs should show a "buffering" state.
|
|
44
|
+
*/
|
|
45
|
+
starved: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Unsubscribe function returned by every `engine.on*` subscription.
|
|
49
|
+
* Calling it removes the listener; idempotent.
|
|
50
|
+
*/
|
|
51
|
+
export type Unsubscribe = () => void;
|
|
52
|
+
/**
|
|
53
|
+
* Snapshot of presenter / worker / buffer health used by the
|
|
54
|
+
* in-app diagnostic HUD. Cheap to compute — derived from sliding
|
|
55
|
+
* windows the engine already keeps for instrumentation. Intended
|
|
56
|
+
* to be polled at ~4Hz.
|
|
57
|
+
*/
|
|
58
|
+
export interface EngineStats {
|
|
59
|
+
/** Presenter ticks (drawImage calls) in the last 1s. */
|
|
60
|
+
fps: number;
|
|
61
|
+
/** Target rate from source.frame_rate. */
|
|
62
|
+
targetFps: number;
|
|
63
|
+
/** Seconds of frames buffered ahead of the playhead. */
|
|
64
|
+
bufferAheadSec: number;
|
|
65
|
+
/** Average ms between consecutive presenter ticks over the last 1s. */
|
|
66
|
+
frameGapMs: number;
|
|
67
|
+
/** Worst gap in the same window. High max with low avg = jitter. */
|
|
68
|
+
frameGapMaxMs: number;
|
|
69
|
+
/** Avg ms from `produce` post to `frame` receive, sliding window. */
|
|
70
|
+
workerLatencyMs: number;
|
|
71
|
+
/**
|
|
72
|
+
* Avg ms the worker spent inside `runtime.frame(time)` — the actual
|
|
73
|
+
* scene-render time per frame. This is the runtime/GPU cost.
|
|
74
|
+
*/
|
|
75
|
+
renderMs: number;
|
|
76
|
+
/** Avg ms decoding/uploading video frames per produce (prepareVideoFrames). */
|
|
77
|
+
prepareMs: number;
|
|
78
|
+
/** Avg motion-blur samples used per live frame (0 = unblurred path). */
|
|
79
|
+
blurSamples: number;
|
|
80
|
+
/**
|
|
81
|
+
* Avg ms the worker spent constructing a VideoFrame from its
|
|
82
|
+
* OffscreenCanvas (GPU readback). This is the transfer cost.
|
|
83
|
+
*/
|
|
84
|
+
videoFrameMs: number;
|
|
85
|
+
/**
|
|
86
|
+
* Avg full handleProduce duration on the worker. (renderMs +
|
|
87
|
+
* videoFrameMs ≈ workerTotalMs if our breakdown is complete.)
|
|
88
|
+
*/
|
|
89
|
+
workerTotalMs: number;
|
|
90
|
+
/**
|
|
91
|
+
* Avg ms from worker `postMessage(frame)` to main `onmessage`
|
|
92
|
+
* firing. High values = main thread is busy and can't drain the
|
|
93
|
+
* worker's outgoing message queue.
|
|
94
|
+
*/
|
|
95
|
+
queueLagMs: number;
|
|
96
|
+
/**
|
|
97
|
+
* Avg ms spent in `displayCtx.drawImage(frame, ...)` on the
|
|
98
|
+
* presenter's rAF tick. Main-thread per-paint cost; if this is
|
|
99
|
+
* tens of ms, the 2D canvas's VideoFrame → display upload is
|
|
100
|
+
* the per-frame bottleneck.
|
|
101
|
+
*/
|
|
102
|
+
drawImageMs: number;
|
|
103
|
+
/** Total times peekAt returned null while clock was playing. */
|
|
104
|
+
starvationCount: number;
|
|
105
|
+
/** Currently-pending produce requests in the worker queue. */
|
|
106
|
+
inflight: number;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAMhD,iEAAiE;AACjE,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IACpC,qDAAqD;IACrD,aAAa,EAAE,iBAAiB,CAAC;IAEjC,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IAEf,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,uEAAuE;AACvE,EAAE;AACF,4DAA4D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface WaveformPeaks {
|
|
2
|
+
/** Interleaved [min, max] per bucket: [min0, max0, min1, max1, …]. */
|
|
3
|
+
peaks: Float32Array;
|
|
4
|
+
/** Buckets per second of audio. */
|
|
5
|
+
peaksPerSecond: number;
|
|
6
|
+
/** Decoded duration in seconds. */
|
|
7
|
+
duration: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Min/max peak pairs over the mixdown of `channels` (peak across
|
|
11
|
+
* channels — the loudest excursion either side carries). Pure.
|
|
12
|
+
*/
|
|
13
|
+
export declare function computeWaveformPeaks(channels: ReadonlyArray<Float32Array>, sampleRate: number, peaksPerSecond?: number): WaveformPeaks;
|
|
14
|
+
/**
|
|
15
|
+
* Fetch + decode an audio (or video-with-audio) URL and compute its
|
|
16
|
+
* waveform peaks. Cached per (url, peaksPerSecond) — clip tiles and
|
|
17
|
+
* the timeline share one decode. Requires a browser AudioContext
|
|
18
|
+
* (pass one to share; a throwaway OfflineAudioContext is used
|
|
19
|
+
* otherwise).
|
|
20
|
+
*/
|
|
21
|
+
export declare function extractWaveformPeaks(url: string, options?: {
|
|
22
|
+
peaksPerSecond?: number;
|
|
23
|
+
audioContext?: AudioContext;
|
|
24
|
+
}): Promise<WaveformPeaks>;
|
|
25
|
+
//# sourceMappingURL=waveform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waveform.d.ts","sourceRoot":"","sources":["../src/waveform.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,KAAK,EAAE,YAAY,CAAC;IACpB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,UAAU,EAAE,MAAM,EAClB,cAAc,SAAK,GAClB,aAAa,CA0Bf;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAO,GACrE,OAAO,CAAC,aAAa,CAAC,CAyBxB"}
|
package/dist/waveform.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// Waveform peak extraction — the editor's clip waveforms and asset
|
|
2
|
+
// tiles need real min/max peaks, not the dashboard's procedural mock.
|
|
3
|
+
//
|
|
4
|
+
// Split in two so the math is probe-able in Node:
|
|
5
|
+
// computeWaveformPeaks — pure: Float32Array channels → peak pairs
|
|
6
|
+
// extractWaveformPeaks — browser: fetch + decodeAudioData + compute,
|
|
7
|
+
// cached per (url, peaksPerSecond)
|
|
8
|
+
/**
|
|
9
|
+
* Min/max peak pairs over the mixdown of `channels` (peak across
|
|
10
|
+
* channels — the loudest excursion either side carries). Pure.
|
|
11
|
+
*/
|
|
12
|
+
export function computeWaveformPeaks(channels, sampleRate, peaksPerSecond = 50) {
|
|
13
|
+
const frames = channels.length > 0 ? channels[0].length : 0;
|
|
14
|
+
const pps = Math.max(1, peaksPerSecond);
|
|
15
|
+
const samplesPerBucket = Math.max(1, sampleRate / pps);
|
|
16
|
+
const bucketCount = Math.max(1, Math.ceil(frames / samplesPerBucket));
|
|
17
|
+
const peaks = new Float32Array(bucketCount * 2);
|
|
18
|
+
for (let b = 0; b < bucketCount; b++) {
|
|
19
|
+
const start = Math.floor(b * samplesPerBucket);
|
|
20
|
+
const end = Math.min(frames, Math.floor((b + 1) * samplesPerBucket));
|
|
21
|
+
let min = 0;
|
|
22
|
+
let max = 0;
|
|
23
|
+
for (const ch of channels) {
|
|
24
|
+
for (let i = start; i < end; i++) {
|
|
25
|
+
const v = ch[i];
|
|
26
|
+
if (v < min)
|
|
27
|
+
min = v;
|
|
28
|
+
if (v > max)
|
|
29
|
+
max = v;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
peaks[b * 2] = min;
|
|
33
|
+
peaks[b * 2 + 1] = max;
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
peaks,
|
|
37
|
+
peaksPerSecond: pps,
|
|
38
|
+
duration: sampleRate > 0 ? frames / sampleRate : 0,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const peakCache = new Map();
|
|
42
|
+
/**
|
|
43
|
+
* Fetch + decode an audio (or video-with-audio) URL and compute its
|
|
44
|
+
* waveform peaks. Cached per (url, peaksPerSecond) — clip tiles and
|
|
45
|
+
* the timeline share one decode. Requires a browser AudioContext
|
|
46
|
+
* (pass one to share; a throwaway OfflineAudioContext is used
|
|
47
|
+
* otherwise).
|
|
48
|
+
*/
|
|
49
|
+
export function extractWaveformPeaks(url, options = {}) {
|
|
50
|
+
const pps = options.peaksPerSecond ?? 50;
|
|
51
|
+
const key = `${url}::${pps}`;
|
|
52
|
+
const cached = peakCache.get(key);
|
|
53
|
+
if (cached)
|
|
54
|
+
return cached;
|
|
55
|
+
const job = (async () => {
|
|
56
|
+
const res = await fetch(url);
|
|
57
|
+
if (!res.ok)
|
|
58
|
+
throw new Error(`waveform fetch failed (${res.status}) for ${url}`);
|
|
59
|
+
const bytes = await res.arrayBuffer();
|
|
60
|
+
// decodeAudioData needs a context; OfflineAudioContext avoids
|
|
61
|
+
// spinning up an audio output thread for a pure decode.
|
|
62
|
+
const ctx = options.audioContext ?? new OfflineAudioContext(1, 1, 44100);
|
|
63
|
+
const buffer = await ctx.decodeAudioData(bytes);
|
|
64
|
+
const channels = [];
|
|
65
|
+
for (let c = 0; c < buffer.numberOfChannels; c++) {
|
|
66
|
+
channels.push(buffer.getChannelData(c));
|
|
67
|
+
}
|
|
68
|
+
return computeWaveformPeaks(channels, buffer.sampleRate, pps);
|
|
69
|
+
})();
|
|
70
|
+
// Drop failed jobs from the cache so a transient fetch error doesn't
|
|
71
|
+
// poison the URL forever.
|
|
72
|
+
peakCache.set(key, job);
|
|
73
|
+
job.catch(() => peakCache.delete(key));
|
|
74
|
+
return job;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=waveform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waveform.js","sourceRoot":"","sources":["../src/waveform.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,sEAAsE;AACtE,EAAE;AACF,kDAAkD;AAClD,oEAAoE;AACpE,uEAAuE;AACvE,6DAA6D;AAW7D;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAqC,EACrC,UAAkB,EAClB,cAAc,GAAG,EAAE;IAEnB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;QACrE,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC;gBACjB,IAAI,CAAC,GAAG,GAAG;oBAAE,GAAG,GAAG,CAAC,CAAC;gBACrB,IAAI,CAAC,GAAG,GAAG;oBAAE,GAAG,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACnB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACzB,CAAC;IACD,OAAO;QACL,KAAK;QACL,cAAc,EAAE,GAAG;QACnB,QAAQ,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkC,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAW,EACX,UAAoE,EAAE;IAEtE,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,GAAG,GAAG,CAAC,KAAK,IAA4B,EAAE;QAC9C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QACtC,8DAA8D;QAC9D,wDAAwD;QACxD,MAAM,GAAG,GACP,OAAO,CAAC,YAAY,IAAI,IAAI,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC,EAAE,CAAC;IACL,qEAAqE;IACrE,0BAA0B;IAC1B,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import type { Source } from '@clipkit/protocol';
|
|
2
|
+
import type { Backend } from './types.js';
|
|
3
|
+
export interface InitMessage {
|
|
4
|
+
type: 'init';
|
|
5
|
+
source: Source;
|
|
6
|
+
backend: Backend;
|
|
7
|
+
}
|
|
8
|
+
export interface SetSourceMessage {
|
|
9
|
+
type: 'setSource';
|
|
10
|
+
source: Source;
|
|
11
|
+
sequenceId: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Apply a partial patch to one or more elements in the worker's
|
|
15
|
+
* already-loaded source. Significantly cheaper than re-sending the
|
|
16
|
+
* full source on every drag tick — no asset preload, no audio
|
|
17
|
+
* scheduling, no big postMessage payload. Used by the editor's live
|
|
18
|
+
* drag/resize/rotate dispatches.
|
|
19
|
+
*
|
|
20
|
+
* Patches are applied via Object.assign to the existing elements.
|
|
21
|
+
* Elements not present in the patch list are left untouched. Patches
|
|
22
|
+
* are intended for visual/spatial fields only — time, track, duration,
|
|
23
|
+
* asset URL changes should still go through `setSource`.
|
|
24
|
+
*/
|
|
25
|
+
export interface PatchElementsMessage {
|
|
26
|
+
type: 'patchElements';
|
|
27
|
+
patches: ReadonlyArray<{
|
|
28
|
+
id: string;
|
|
29
|
+
patch: Record<string, unknown>;
|
|
30
|
+
}>;
|
|
31
|
+
sequenceId: number;
|
|
32
|
+
}
|
|
33
|
+
export interface ProduceMessage {
|
|
34
|
+
type: 'produce';
|
|
35
|
+
/** Composition time, in seconds. */
|
|
36
|
+
time: number;
|
|
37
|
+
/** Bumped by main on every seek / setSource. Echoed back in the frame. */
|
|
38
|
+
sequenceId: number;
|
|
39
|
+
/**
|
|
40
|
+
* 'realtime' (default) renders a single sample — the playback path.
|
|
41
|
+
* 'final' additionally applies source-level motion blur (§2.1
|
|
42
|
+
* supersampling); the engine requests it once the playhead has
|
|
43
|
+
* settled while paused, so scrubbing shows export-accurate frames.
|
|
44
|
+
*/
|
|
45
|
+
quality?: 'realtime' | 'final';
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* One decoded video frame for a `video` element's source URL, pushed
|
|
49
|
+
* from the main thread. Workers can't create HTMLVideoElement, so the
|
|
50
|
+
* engine owns the decoding `<video>` elements and pumps ImageBitmaps
|
|
51
|
+
* here (transferred, zero-copy). The worker hands each bitmap to
|
|
52
|
+
* `runtime.pushExternalVideoFrame()`, which uploads it into the texture
|
|
53
|
+
* the video renderer samples.
|
|
54
|
+
*
|
|
55
|
+
* Preview-grade sync: frames are pumped live against the transport
|
|
56
|
+
* clock, not seeked per composition frame — a buffered look-ahead frame
|
|
57
|
+
* renders with the most recently pumped bitmap. Export uses the
|
|
58
|
+
* deterministic per-frame seek path instead.
|
|
59
|
+
*/
|
|
60
|
+
export interface VideoFrameMessage {
|
|
61
|
+
type: 'videoFrame';
|
|
62
|
+
url: string;
|
|
63
|
+
bitmap: ImageBitmap;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Render ONE export-quality still at `time` and return it as an
|
|
67
|
+
* ImageBitmap (editor thumbnails, filmstrips, scrub-hover previews).
|
|
68
|
+
* Serialized behind produce work; `width` downscales preserving the
|
|
69
|
+
* aspect ratio so thumbnail transfers stay cheap.
|
|
70
|
+
*/
|
|
71
|
+
export interface StillMessage {
|
|
72
|
+
type: 'still';
|
|
73
|
+
time: number;
|
|
74
|
+
requestId: number;
|
|
75
|
+
width?: number;
|
|
76
|
+
}
|
|
77
|
+
export interface DisposeMessage {
|
|
78
|
+
type: 'dispose';
|
|
79
|
+
}
|
|
80
|
+
export type MainToWorkerMessage = InitMessage | SetSourceMessage | PatchElementsMessage | ProduceMessage | StillMessage | VideoFrameMessage | DisposeMessage;
|
|
81
|
+
export type ActiveBackend = 'webgpu' | 'webgl2';
|
|
82
|
+
export interface ReadyMessage {
|
|
83
|
+
type: 'ready';
|
|
84
|
+
activeApi: ActiveBackend;
|
|
85
|
+
width: number;
|
|
86
|
+
height: number;
|
|
87
|
+
/**
|
|
88
|
+
* Worker's `performance.timeOrigin` — Unix-ish ms since epoch.
|
|
89
|
+
* Main subtracts this from its own `performance.timeOrigin` to
|
|
90
|
+
* compute the offset needed to convert worker `performance.now()`
|
|
91
|
+
* values into main's clock. Workers don't share a time origin
|
|
92
|
+
* with their parent — each gets its own at creation time.
|
|
93
|
+
*/
|
|
94
|
+
timeOrigin: number;
|
|
95
|
+
}
|
|
96
|
+
export interface FrameMessage {
|
|
97
|
+
type: 'frame';
|
|
98
|
+
time: number;
|
|
99
|
+
sequenceId: number;
|
|
100
|
+
/** Transferred — neutered on the worker side after postMessage. */
|
|
101
|
+
frame: VideoFrame;
|
|
102
|
+
/**
|
|
103
|
+
* Optional worker-side timing breakdown (ms). Used by the in-app
|
|
104
|
+
* diagnostic HUD to attribute the render budget to runtime.frame
|
|
105
|
+
* vs the VideoFrame readback vs everything else. Worker-only; the
|
|
106
|
+
* engine aggregates these in sliding windows.
|
|
107
|
+
*/
|
|
108
|
+
timings?: {
|
|
109
|
+
/** ms spent in runtime.frame(time). */
|
|
110
|
+
frameMs: number;
|
|
111
|
+
/** ms spent decoding/uploading video frames (prepareVideoFrames). */
|
|
112
|
+
prepareMs: number;
|
|
113
|
+
/** Motion-blur samples used for this frame (0 = unblurred path). */
|
|
114
|
+
blurSamples: number;
|
|
115
|
+
/** ms spent constructing the VideoFrame from the OffscreenCanvas. */
|
|
116
|
+
videoFrameMs: number;
|
|
117
|
+
/**
|
|
118
|
+
* Full handleProduce duration including the postMessage call.
|
|
119
|
+
* If this is much larger than (frameMs + videoFrameMs), the
|
|
120
|
+
* postMessage / structured-clone-transfer step is the cost.
|
|
121
|
+
*/
|
|
122
|
+
workerTotalMs: number;
|
|
123
|
+
/**
|
|
124
|
+
* performance.now() inside the worker right before postMessage.
|
|
125
|
+
* The main thread compares against its receive time to compute
|
|
126
|
+
* cross-thread queue lag — DOMHighResTimeStamp shares its time
|
|
127
|
+
* origin with the parent, so the subtraction is valid.
|
|
128
|
+
*/
|
|
129
|
+
sentAt: number;
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
export interface ErrorMessage {
|
|
133
|
+
type: 'error';
|
|
134
|
+
message: string;
|
|
135
|
+
}
|
|
136
|
+
export interface StillResultMessage {
|
|
137
|
+
type: 'stillResult';
|
|
138
|
+
requestId: number;
|
|
139
|
+
time: number;
|
|
140
|
+
/** Transferred — neutered on the worker side after postMessage. */
|
|
141
|
+
bitmap: ImageBitmap;
|
|
142
|
+
}
|
|
143
|
+
export interface StillErrorMessage {
|
|
144
|
+
type: 'stillError';
|
|
145
|
+
requestId: number;
|
|
146
|
+
message: string;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Video URLs the worker could NOT set up for self-decoding (non-MP4
|
|
150
|
+
* container, unsupported codec, or no WebCodecs). Sent after every
|
|
151
|
+
* init / setSource preload. The engine builds its main-thread frame
|
|
152
|
+
* pump for exactly these URLs; an empty list tears the pump down.
|
|
153
|
+
*/
|
|
154
|
+
export interface VideoFallbackMessage {
|
|
155
|
+
type: 'videoFallback';
|
|
156
|
+
urls: string[];
|
|
157
|
+
}
|
|
158
|
+
export type WorkerToMainMessage = ReadyMessage | FrameMessage | StillResultMessage | StillErrorMessage | ErrorMessage | VideoFallbackMessage;
|
|
159
|
+
//# sourceMappingURL=worker-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-protocol.d.ts","sourceRoot":"","sources":["../src/worker-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Shared message types between the engine (main thread) and the
|
|
2
|
+
// frame-producer worker. Both ends import this file so the protocol
|
|
3
|
+
// is a single source of truth.
|
|
4
|
+
//
|
|
5
|
+
// Protocol shape:
|
|
6
|
+
//
|
|
7
|
+
// Main → Worker
|
|
8
|
+
// init — boot the runtime, load the first source
|
|
9
|
+
// setSource — swap to a new source mid-flight (caller bumps sequenceId)
|
|
10
|
+
// produce — render one frame at composition time `time`
|
|
11
|
+
// dispose — release resources, terminate
|
|
12
|
+
//
|
|
13
|
+
// Worker → Main
|
|
14
|
+
// ready — runtime is initialized; reports active backend + dims
|
|
15
|
+
// frame — one rendered VideoFrame, tagged with its sequenceId
|
|
16
|
+
// error — anything that went wrong post-init
|
|
17
|
+
//
|
|
18
|
+
// Stale-frame handling: the main thread bumps `sequenceId` on every
|
|
19
|
+
// seek / setSource. Worker doesn't track cancellation — it always
|
|
20
|
+
// finishes the frame it's working on and posts it back. Main discards
|
|
21
|
+
// frames whose `sequenceId` doesn't match the current one. Simpler than
|
|
22
|
+
// in-worker queue cancellation; the cost is one or two wasted renders.
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=worker-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-protocol.js","sourceRoot":"","sources":["../src/worker-protocol.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,oEAAoE;AACpE,+BAA+B;AAC/B,EAAE;AACF,kBAAkB;AAClB,EAAE;AACF,kBAAkB;AAClB,4DAA4D;AAC5D,8EAA8E;AAC9E,gEAAgE;AAChE,iDAAiD;AACjD,EAAE;AACF,kBAAkB;AAClB,0EAA0E;AAC1E,wEAAwE;AACxE,uDAAuD;AACvD,EAAE;AACF,oEAAoE;AACpE,kEAAkE;AAClE,sEAAsE;AACtE,wEAAwE;AACxE,uEAAuE"}
|
package/dist/worker.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":""}
|