@clipkit/runtime 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.
Files changed (219) hide show
  1. package/LICENSE +54 -0
  2. package/README.md +98 -0
  3. package/dist/animation/easings.d.ts +9 -0
  4. package/dist/animation/easings.d.ts.map +1 -0
  5. package/dist/animation/easings.js +230 -0
  6. package/dist/animation/easings.js.map +1 -0
  7. package/dist/animation/expr.d.ts +44 -0
  8. package/dist/animation/expr.d.ts.map +1 -0
  9. package/dist/animation/expr.js +236 -0
  10. package/dist/animation/expr.js.map +1 -0
  11. package/dist/animation/keyframes.d.ts +23 -0
  12. package/dist/animation/keyframes.d.ts.map +1 -0
  13. package/dist/animation/keyframes.js +117 -0
  14. package/dist/animation/keyframes.js.map +1 -0
  15. package/dist/animation/motion-path.d.ts +18 -0
  16. package/dist/animation/motion-path.d.ts.map +1 -0
  17. package/dist/animation/motion-path.js +269 -0
  18. package/dist/animation/motion-path.js.map +1 -0
  19. package/dist/animation/noise1d.d.ts +5 -0
  20. package/dist/animation/noise1d.d.ts.map +1 -0
  21. package/dist/animation/noise1d.js +27 -0
  22. package/dist/animation/noise1d.js.map +1 -0
  23. package/dist/animation/presets.d.ts +60 -0
  24. package/dist/animation/presets.d.ts.map +1 -0
  25. package/dist/animation/presets.js +221 -0
  26. package/dist/animation/presets.js.map +1 -0
  27. package/dist/assets/cache.d.ts +18 -0
  28. package/dist/assets/cache.d.ts.map +1 -0
  29. package/dist/assets/cache.js +56 -0
  30. package/dist/assets/cache.js.map +1 -0
  31. package/dist/assets/fonts.d.ts +20 -0
  32. package/dist/assets/fonts.d.ts.map +1 -0
  33. package/dist/assets/fonts.js +127 -0
  34. package/dist/assets/fonts.js.map +1 -0
  35. package/dist/assets/loader.d.ts +18 -0
  36. package/dist/assets/loader.d.ts.map +1 -0
  37. package/dist/assets/loader.js +87 -0
  38. package/dist/assets/loader.js.map +1 -0
  39. package/dist/assets/lut.d.ts +5 -0
  40. package/dist/assets/lut.d.ts.map +1 -0
  41. package/dist/assets/lut.js +77 -0
  42. package/dist/assets/lut.js.map +1 -0
  43. package/dist/assets/media-time.d.ts +31 -0
  44. package/dist/assets/media-time.d.ts.map +1 -0
  45. package/dist/assets/media-time.js +65 -0
  46. package/dist/assets/media-time.js.map +1 -0
  47. package/dist/assets/mp4-frame-source.d.ts +44 -0
  48. package/dist/assets/mp4-frame-source.d.ts.map +1 -0
  49. package/dist/assets/mp4-frame-source.js +387 -0
  50. package/dist/assets/mp4-frame-source.js.map +1 -0
  51. package/dist/audio/encoder.d.ts +31 -0
  52. package/dist/audio/encoder.d.ts.map +1 -0
  53. package/dist/audio/encoder.js +96 -0
  54. package/dist/audio/encoder.js.map +1 -0
  55. package/dist/audio/fades.d.ts +16 -0
  56. package/dist/audio/fades.d.ts.map +1 -0
  57. package/dist/audio/fades.js +43 -0
  58. package/dist/audio/fades.js.map +1 -0
  59. package/dist/audio/limiter.d.ts +8 -0
  60. package/dist/audio/limiter.d.ts.map +1 -0
  61. package/dist/audio/limiter.js +39 -0
  62. package/dist/audio/limiter.js.map +1 -0
  63. package/dist/audio/loader.d.ts +6 -0
  64. package/dist/audio/loader.d.ts.map +1 -0
  65. package/dist/audio/loader.js +42 -0
  66. package/dist/audio/loader.js.map +1 -0
  67. package/dist/audio/mixer.d.ts +17 -0
  68. package/dist/audio/mixer.d.ts.map +1 -0
  69. package/dist/audio/mixer.js +204 -0
  70. package/dist/audio/mixer.js.map +1 -0
  71. package/dist/audio/varispeed.d.ts +24 -0
  72. package/dist/audio/varispeed.d.ts.map +1 -0
  73. package/dist/audio/varispeed.js +114 -0
  74. package/dist/audio/varispeed.js.map +1 -0
  75. package/dist/audio/wav.d.ts +6 -0
  76. package/dist/audio/wav.d.ts.map +1 -0
  77. package/dist/audio/wav.js +62 -0
  78. package/dist/audio/wav.js.map +1 -0
  79. package/dist/backend/backend.d.ts +579 -0
  80. package/dist/backend/backend.d.ts.map +1 -0
  81. package/dist/backend/backend.js +17 -0
  82. package/dist/backend/backend.js.map +1 -0
  83. package/dist/backend/webgl-backend.d.ts +97 -0
  84. package/dist/backend/webgl-backend.d.ts.map +1 -0
  85. package/dist/backend/webgl-backend.js +2142 -0
  86. package/dist/backend/webgl-backend.js.map +1 -0
  87. package/dist/backend/webgpu-backend.d.ts +121 -0
  88. package/dist/backend/webgpu-backend.d.ts.map +1 -0
  89. package/dist/backend/webgpu-backend.js +2481 -0
  90. package/dist/backend/webgpu-backend.js.map +1 -0
  91. package/dist/compositor/bitfont.d.ts +8 -0
  92. package/dist/compositor/bitfont.d.ts.map +1 -0
  93. package/dist/compositor/bitfont.js +52 -0
  94. package/dist/compositor/bitfont.js.map +1 -0
  95. package/dist/compositor/camera.d.ts +5 -0
  96. package/dist/compositor/camera.d.ts.map +1 -0
  97. package/dist/compositor/camera.js +114 -0
  98. package/dist/compositor/camera.js.map +1 -0
  99. package/dist/compositor/color.d.ts +26 -0
  100. package/dist/compositor/color.d.ts.map +1 -0
  101. package/dist/compositor/color.js +189 -0
  102. package/dist/compositor/color.js.map +1 -0
  103. package/dist/compositor/element-renderers/caption.d.ts +4 -0
  104. package/dist/compositor/element-renderers/caption.d.ts.map +1 -0
  105. package/dist/compositor/element-renderers/caption.js +376 -0
  106. package/dist/compositor/element-renderers/caption.js.map +1 -0
  107. package/dist/compositor/element-renderers/group.d.ts +12 -0
  108. package/dist/compositor/element-renderers/group.d.ts.map +1 -0
  109. package/dist/compositor/element-renderers/group.js +259 -0
  110. package/dist/compositor/element-renderers/group.js.map +1 -0
  111. package/dist/compositor/element-renderers/image.d.ts +4 -0
  112. package/dist/compositor/element-renderers/image.d.ts.map +1 -0
  113. package/dist/compositor/element-renderers/image.js +97 -0
  114. package/dist/compositor/element-renderers/image.js.map +1 -0
  115. package/dist/compositor/element-renderers/lit.d.ts +6 -0
  116. package/dist/compositor/element-renderers/lit.d.ts.map +1 -0
  117. package/dist/compositor/element-renderers/lit.js +82 -0
  118. package/dist/compositor/element-renderers/lit.js.map +1 -0
  119. package/dist/compositor/element-renderers/particles.d.ts +4 -0
  120. package/dist/compositor/element-renderers/particles.d.ts.map +1 -0
  121. package/dist/compositor/element-renderers/particles.js +212 -0
  122. package/dist/compositor/element-renderers/particles.js.map +1 -0
  123. package/dist/compositor/element-renderers/shape.d.ts +4 -0
  124. package/dist/compositor/element-renderers/shape.d.ts.map +1 -0
  125. package/dist/compositor/element-renderers/shape.js +171 -0
  126. package/dist/compositor/element-renderers/shape.js.map +1 -0
  127. package/dist/compositor/element-renderers/svg.d.ts +4 -0
  128. package/dist/compositor/element-renderers/svg.d.ts.map +1 -0
  129. package/dist/compositor/element-renderers/svg.js +210 -0
  130. package/dist/compositor/element-renderers/svg.js.map +1 -0
  131. package/dist/compositor/element-renderers/text.d.ts +25 -0
  132. package/dist/compositor/element-renderers/text.d.ts.map +1 -0
  133. package/dist/compositor/element-renderers/text.js +1358 -0
  134. package/dist/compositor/element-renderers/text.js.map +1 -0
  135. package/dist/compositor/element-renderers/video.d.ts +12 -0
  136. package/dist/compositor/element-renderers/video.d.ts.map +1 -0
  137. package/dist/compositor/element-renderers/video.js +109 -0
  138. package/dist/compositor/element-renderers/video.js.map +1 -0
  139. package/dist/compositor/fit.d.ts +18 -0
  140. package/dist/compositor/fit.d.ts.map +1 -0
  141. package/dist/compositor/fit.js +106 -0
  142. package/dist/compositor/fit.js.map +1 -0
  143. package/dist/compositor/lighting.d.ts +63 -0
  144. package/dist/compositor/lighting.d.ts.map +1 -0
  145. package/dist/compositor/lighting.js +141 -0
  146. package/dist/compositor/lighting.js.map +1 -0
  147. package/dist/compositor/mat4.d.ts +88 -0
  148. package/dist/compositor/mat4.d.ts.map +1 -0
  149. package/dist/compositor/mat4.js +245 -0
  150. package/dist/compositor/mat4.js.map +1 -0
  151. package/dist/compositor/project.d.ts +24 -0
  152. package/dist/compositor/project.d.ts.map +1 -0
  153. package/dist/compositor/project.js +105 -0
  154. package/dist/compositor/project.js.map +1 -0
  155. package/dist/compositor/render-context.d.ts +194 -0
  156. package/dist/compositor/render-context.d.ts.map +1 -0
  157. package/dist/compositor/render-context.js +10 -0
  158. package/dist/compositor/render-context.js.map +1 -0
  159. package/dist/compositor/resolve.d.ts +80 -0
  160. package/dist/compositor/resolve.d.ts.map +1 -0
  161. package/dist/compositor/resolve.js +276 -0
  162. package/dist/compositor/resolve.js.map +1 -0
  163. package/dist/compositor/scene.d.ts +10 -0
  164. package/dist/compositor/scene.d.ts.map +1 -0
  165. package/dist/compositor/scene.js +658 -0
  166. package/dist/compositor/scene.js.map +1 -0
  167. package/dist/compositor/transform.d.ts +73 -0
  168. package/dist/compositor/transform.d.ts.map +1 -0
  169. package/dist/compositor/transform.js +229 -0
  170. package/dist/compositor/transform.js.map +1 -0
  171. package/dist/compositor/unit.d.ts +27 -0
  172. package/dist/compositor/unit.d.ts.map +1 -0
  173. package/dist/compositor/unit.js +74 -0
  174. package/dist/compositor/unit.js.map +1 -0
  175. package/dist/encoder/exporter.d.ts +95 -0
  176. package/dist/encoder/exporter.d.ts.map +1 -0
  177. package/dist/encoder/exporter.js +341 -0
  178. package/dist/encoder/exporter.js.map +1 -0
  179. package/dist/encoder/index.d.ts +3 -0
  180. package/dist/encoder/index.d.ts.map +1 -0
  181. package/dist/encoder/index.js +2 -0
  182. package/dist/encoder/index.js.map +1 -0
  183. package/dist/index.d.ts +12 -0
  184. package/dist/index.d.ts.map +1 -0
  185. package/dist/index.js +27 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/logger.d.ts +13 -0
  188. package/dist/logger.d.ts.map +1 -0
  189. package/dist/logger.js +32 -0
  190. package/dist/logger.js.map +1 -0
  191. package/dist/runtime.d.ts +216 -0
  192. package/dist/runtime.d.ts.map +1 -0
  193. package/dist/runtime.js +1012 -0
  194. package/dist/runtime.js.map +1 -0
  195. package/dist/svg/morph.d.ts +6 -0
  196. package/dist/svg/morph.d.ts.map +1 -0
  197. package/dist/svg/morph.js +62 -0
  198. package/dist/svg/morph.js.map +1 -0
  199. package/dist/svg/svg-renderer.d.ts +18 -0
  200. package/dist/svg/svg-renderer.d.ts.map +1 -0
  201. package/dist/svg/svg-renderer.js +142 -0
  202. package/dist/svg/svg-renderer.js.map +1 -0
  203. package/dist/text/caption-chunk.d.ts +17 -0
  204. package/dist/text/caption-chunk.d.ts.map +1 -0
  205. package/dist/text/caption-chunk.js +76 -0
  206. package/dist/text/caption-chunk.js.map +1 -0
  207. package/dist/text/font-atlas.d.ts +63 -0
  208. package/dist/text/font-atlas.d.ts.map +1 -0
  209. package/dist/text/font-atlas.js +225 -0
  210. package/dist/text/font-atlas.js.map +1 -0
  211. package/dist/text/measure.d.ts +38 -0
  212. package/dist/text/measure.d.ts.map +1 -0
  213. package/dist/text/measure.js +164 -0
  214. package/dist/text/measure.js.map +1 -0
  215. package/dist/text/text-animation.d.ts +52 -0
  216. package/dist/text/text-animation.d.ts.map +1 -0
  217. package/dist/text/text-animation.js +133 -0
  218. package/dist/text/text-animation.js.map +1 -0
  219. package/package.json +47 -0
@@ -0,0 +1,216 @@
1
+ import type { Source } from '@clipkit/protocol';
2
+ import { type ExportOptions, type FrameProducer } from './encoder/exporter.js';
3
+ export interface RuntimeInitOptions {
4
+ /**
5
+ * Preferred backend. Defaults to 'auto' (try WebGPU, fall back to WebGL2).
6
+ * Use 'webgpu' or 'webgl2' to force a specific backend, e.g. for testing.
7
+ */
8
+ backend?: 'auto' | 'webgpu' | 'webgl2';
9
+ }
10
+ export declare class ClipkitRuntime implements FrameProducer {
11
+ readonly canvas: HTMLCanvasElement | OffscreenCanvas;
12
+ private backend;
13
+ private currentSource;
14
+ /** When true, frame() clears to a transparent background if the Source has no
15
+ * background_color — set during alpha (transparent) frame export. */
16
+ private transparentBackground;
17
+ private images;
18
+ private videos;
19
+ private audioBuffers;
20
+ private fontAtlases;
21
+ private svgRasters;
22
+ private maskedTexts;
23
+ private groupTargets;
24
+ /**
25
+ * Eviction epoch for the groupTargets pool — bumped once per frame() and once
26
+ * per renderFinalFrame(), threaded into RenderContext.frameIndex so pool
27
+ * entries can be stamped last-touched for frame-boundary LRU eviction. NOT a
28
+ * clean 1:1 output-frame ordinal: it advances per motion-blur SAMPLE (each
29
+ * export sample funnels through frame()) and the renderFinalFrame→frame()
30
+ * fallback bumps twice. Only ever compared for equality at eviction time, so
31
+ * gaps/jumps are harmless — do not treat it as a frame number.
32
+ */
33
+ private frameIndex;
34
+ /**
35
+ * Soft cap (bytes) on the offscreen-FBO pool (groupTargets). After each render
36
+ * pass's endFrame(), entries NOT touched this frame are evicted LRU-first
37
+ * until total pooled bytes (logical w*h*4 per target) drop under this. SOFT:
38
+ * targets touched this frame are never evicted, so a single frame whose
39
+ * working set exceeds the cap stays above it (graceful — never thrashes).
40
+ * Default 512 MiB: a glassy element peaks at ~3 full-surface 1080p targets
41
+ * (::bd + ::fx + ::fx-scratch ≈ 25 MB), so 512 MiB holds ~18-20
42
+ * concurrently-active glass elements — well above any real frame's live set —
43
+ * while bounding the cross-timeline tail of inactive-element keys that is the
44
+ * unbounded-growth / cloud-BLACK cause. Logical bytes ≈ real VRAM only when
45
+ * pixelRatio=1 (the cloud Job, renderResolution='source'); high-DPI preview
46
+ * under-accounts by pixelRatio² (harmless — just a looser bound off-cloud).
47
+ * Override via setGroupTargetPoolCap(); ≤ 0 disables eviction (legacy).
48
+ */
49
+ private groupTargetPoolCapBytes;
50
+ private luts;
51
+ /** Scratch targets for renderFinalFrame's blur accumulation. */
52
+ private blurTargets;
53
+ private initialized;
54
+ private disposed;
55
+ constructor(canvas: HTMLCanvasElement | OffscreenCanvas);
56
+ init(options?: RuntimeInitOptions): Promise<boolean>;
57
+ /** Which graphics API this runtime is using. Only valid after init() resolves true. */
58
+ get api(): 'webgpu' | 'webgl2' | null;
59
+ /** Set the current source. Does NOT trigger asset loading — call preload(). */
60
+ load(source: Source): void;
61
+ /**
62
+ * Load every external asset referenced by the current source. Images
63
+ * and videos are downloaded; fonts are requested via FontFace API.
64
+ * Idempotent — already-loaded URLs are skipped.
65
+ */
66
+ preload(source?: Source): Promise<void>;
67
+ private preloadAudio;
68
+ /**
69
+ * Decode a video's embedded audio track. decodeAudioData accepts MP4
70
+ * containers directly (it extracts the first audio track), so this is
71
+ * the same loadAudio path audio elements use. Failures are expected
72
+ * (video without audio) and logged at debug. Workers skip — the
73
+ * main-thread AudioScheduler owns preview audio.
74
+ */
75
+ private preloadVideoAudio;
76
+ private preloadLut;
77
+ private preloadImage;
78
+ /**
79
+ * Preload an arbitrary image URL into the shared image cache (used by
80
+ * image elements AND material normal maps, §4.8 Phase 2). Normal maps
81
+ * upload as plain rgba8unorm and are sampled linearly — no premultiply
82
+ * or sRGB transform corrupts the encoded normals.
83
+ */
84
+ /** Average color of each loaded equirect environment image (§4.8). */
85
+ private envAvg;
86
+ /**
87
+ * Preload an equirect environment image AND compute its average color
88
+ * (downscale to 1×1) for the roughness-blurred reflection fallback.
89
+ */
90
+ private preloadEnvImage;
91
+ private preloadImageUrl;
92
+ private preloadVideo;
93
+ /** Whether a decodable video asset exists for this URL. */
94
+ hasVideoAsset(url: string): boolean;
95
+ /**
96
+ * Walk the element tree and collect every ACTIVE video element with
97
+ * the LOCAL clock value it should be evaluated at. Groups translate
98
+ * the clock (child times are group-relative) and, with time_remap
99
+ * (§5.8.4), WARP it — so nested videos inside speed-ramped/frozen/
100
+ * reversed groups decode the right frames. Fixes the former flat
101
+ * scan, which never updated videos nested in groups at all.
102
+ */
103
+ private collectActiveVideos;
104
+ /**
105
+ * Decode + upload the exact video frame each active frameSource-backed
106
+ * video element needs at composition time `time`. Await this before
107
+ * the synchronous `frame(time)` pass in contexts that use the
108
+ * WebCodecs path (the playback worker). Element-backed and externally
109
+ * pumped assets are untouched.
110
+ */
111
+ prepareVideoFrames(time: number): Promise<void>;
112
+ /**
113
+ * Feed one decoded video frame for a source URL from outside the
114
+ * runtime. This is the worker-context video path: the host decodes
115
+ * with an HTMLVideoElement on the main thread, transfers ImageBitmaps
116
+ * here, and the video renderer samples the resulting texture exactly
117
+ * like an element-backed asset.
118
+ *
119
+ * The bitmap is uploaded immediately and then closed. If the media
120
+ * dimensions change (different bitmap size), the texture is recreated.
121
+ */
122
+ pushExternalVideoFrame(url: string, bitmap: ImageBitmap): void;
123
+ /** Render one frame at the given time. Synchronous. */
124
+ frame(time: number): void;
125
+ /**
126
+ * Whole-frame bloom post (§4.8): extract pixels above the threshold,
127
+ * Gaussian-blur them, and add them back over the scene. Bright regions
128
+ * (specular highlights, emissive surfaces, bright media) bleed light;
129
+ * the amount is driven by each region's own brightness. Draws the final
130
+ * composite to the CURRENT target (the surface). Reuses blur slots 3/4.
131
+ */
132
+ private applyBloom;
133
+ /**
134
+ * Render one frame WITH source-level motion blur (§2.1) — the
135
+ * preview's "final quality" path, used when the playhead is parked.
136
+ * Renders N sub-frame samples into an offscreen layer and keeps a
137
+ * GPU running average (avg_k = avg_{k-1}·k/(k+1) + sample·1/(k+1)),
138
+ * then composites the result to the canvas. Within a few 8-bit
139
+ * rounding steps of the exporter's exact float average — preview
140
+ * parity, not the normative path. Falls back to frame() when the
141
+ * source has no motion blur. Video textures are decoded once at the
142
+ * frame time (call prepareVideoFrames first), not per sample —
143
+ * WebGPU executes the whole frame's draws at submit, so per-sample
144
+ * uploads would all show the last sample's pixels anyway.
145
+ */
146
+ renderFinalFrame(time: number, sampleOverride?: number): void;
147
+ /** Resolve when all submitted GPU work has executed (see Backend.finish). */
148
+ gpuFinish(): Promise<void>;
149
+ /**
150
+ * Set the soft cap (bytes) for the offscreen-FBO pool. ≤ 0 disables eviction
151
+ * (unbounded — the legacy behavior). Lets the cloud render Job tighten the cap
152
+ * on memory-constrained SwiftShader instances.
153
+ */
154
+ setGroupTargetPoolCap(bytes: number): void;
155
+ /**
156
+ * Frame-boundary LRU eviction of the groupTargets offscreen-FBO pool. MUST be
157
+ * called only AFTER backend.endFrame() (post queue.submit on WebGPU) so
158
+ * destroyRenderTarget()'s synchronous gpuTexture.destroy() can never race a
159
+ * not-yet-submitted command encoder. Entries touched THIS frame (lastTouched
160
+ * === this.frameIndex) are never candidates; stale entries are dropped
161
+ * least-recently-touched first until total pooled bytes (w*h*4) fall under the
162
+ * cap. Safe because every pooled target is fully rewritten (create-or-reuse →
163
+ * pushTarget+clear+draw) each frame it is used, so evicting an unused entry
164
+ * only costs a realloc next time. No double-destroy: delete() removes the
165
+ * entry, so the size-change path (group.ts/scene.ts) and dispose() never see
166
+ * it again. MUST stay STATELESS across calls (no cached candidate/untouched
167
+ * set) — frameIndex can advance >1 per output frame (per motion-blur sample +
168
+ * the renderFinalFrame→frame() fallback).
169
+ */
170
+ private evictGroupTargets;
171
+ private acquireBlurTarget;
172
+ /**
173
+ * Render one frame at the given time, awaiting any per-element async
174
+ * work (video seeking) first. Used by the exporter to render frames
175
+ * deterministically.
176
+ */
177
+ renderAsync(source: Source, time: number): Promise<void>;
178
+ /**
179
+ * Export to MP4. Renders frames serially through the same backend used
180
+ * for preview — the canvas visibly resizes during export. For an off-
181
+ * screen export, construct a separate ClipkitRuntime around an
182
+ * OffscreenCanvas at the desired dimensions.
183
+ */
184
+ /**
185
+ * Render each frame and stream its PNG (with alpha when `alpha`) to `onFrame`.
186
+ * The transparent export path — the PNGs are assembled by a server-side ffmpeg
187
+ * (ProRes 4444 / VP9-alpha). WebCodecs can't encode alpha, so this is the only
188
+ * route to transparent output.
189
+ */
190
+ /**
191
+ * Mix all of the loaded Source's audio (audio elements + video-embedded
192
+ * tracks) into one AudioBuffer for export. Shared by both export paths —
193
+ * the opaque MP4 path (export → WebCodecs muxer) and the transparent frame
194
+ * path (exportFrames → WAV → ffmpeg) — so they never diverge. Returns null
195
+ * when the comp has no audio (or the mix fails); the caller exports silently.
196
+ */
197
+ private mixExportAudio;
198
+ exportFrames(options: {
199
+ framerate?: number;
200
+ alpha?: boolean;
201
+ onFrame: (index: number, pngBase64: string) => void | Promise<void>;
202
+ /**
203
+ * Receives the mixed audio as a 16-bit PCM WAV (raw bytes) once, before
204
+ * the frames stream. Not called when the comp has no audio. The frame
205
+ * path has no muxer, so audio rides as a separate WAV the server-side
206
+ * ffmpeg maps in as a second input.
207
+ */
208
+ onAudio?: (wav: ArrayBuffer) => void | Promise<void>;
209
+ onProgress?: (progress: number) => void;
210
+ }): Promise<number>;
211
+ export(options?: ExportOptions): Promise<Blob>;
212
+ /** Release all GPU resources. After this the runtime is unusable. */
213
+ dispose(): void;
214
+ private makeContext;
215
+ }
216
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}