@omnimedia/omnitool 1.1.0-42 → 1.1.0-44

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 (179) hide show
  1. package/package.json +17 -18
  2. package/s/demo/demo.bundle.ts +20 -40
  3. package/s/demo/routines/export-test.ts +8 -0
  4. package/s/demo/routines/playback-test.ts +21 -0
  5. package/s/demo/routines/timeline-setup.ts +24 -0
  6. package/s/demo/routines/transcode-test.ts +2 -0
  7. package/s/driver/driver-worker.ts +9 -0
  8. package/s/driver/driver.test.ts +1 -1
  9. package/s/driver/driver.ts +8 -22
  10. package/s/driver/fns/schematic.ts +6 -2
  11. package/s/driver/fns/work.ts +2 -133
  12. package/s/driver/parts/compositor.ts +178 -0
  13. package/s/driver/parts/machina.ts +19 -20
  14. package/s/index.ts +1 -0
  15. package/s/timeline/index.ts +1 -1
  16. package/s/timeline/parts/media.ts +11 -2
  17. package/s/timeline/parts/{compositor → renderers}/parts/html-tree.ts +2 -2
  18. package/s/timeline/parts/{compositor → renderers}/parts/tree-builder.ts +4 -2
  19. package/s/timeline/parts/{compositor → renderers}/playback.ts +4 -13
  20. package/s/timeline/parts/{compositor → renderers}/samplers/html.ts +19 -5
  21. package/s/timeline/parts/{compositor → renderers}/samplers/webcodecs.ts +1 -1
  22. package/s/timeline/parts/resource-pool.ts +8 -4
  23. package/s/timeline/parts/resource.ts +1 -0
  24. package/s/timeline/sugar/o.ts +10 -2
  25. package/s/timeline/sugar/omni-test.ts +14 -14
  26. package/s/timeline/sugar/omni.ts +2 -2
  27. package/s/timeline/utils/datafile.ts +14 -4
  28. package/s/timeline/utils/dummy-data.ts +3 -3
  29. package/x/demo/WebGLRenderer-Q3OV2JVE.js +2 -0
  30. package/x/demo/WebGLRenderer-Q3OV2JVE.js.map +7 -0
  31. package/x/demo/WebGPURenderer-FUFF62QA.js +2 -0
  32. package/x/demo/WebGPURenderer-FUFF62QA.js.map +7 -0
  33. package/x/demo/browserAll-PGQYU756.js +2 -0
  34. package/x/demo/browserAll-PGQYU756.js.map +7 -0
  35. package/x/demo/chunk-2RBLPWNG.js +393 -0
  36. package/x/demo/chunk-2RBLPWNG.js.map +7 -0
  37. package/x/demo/chunk-6DBMQOFE.js +42 -0
  38. package/x/demo/chunk-6DBMQOFE.js.map +7 -0
  39. package/x/demo/chunk-LAJHJD2S.js +2 -0
  40. package/x/demo/chunk-LAJHJD2S.js.map +7 -0
  41. package/x/demo/chunk-LQU5JKKZ.js +269 -0
  42. package/x/demo/chunk-LQU5JKKZ.js.map +7 -0
  43. package/x/demo/chunk-RFNLITDQ.js +327 -0
  44. package/x/demo/chunk-RFNLITDQ.js.map +7 -0
  45. package/x/demo/chunk-TBWCKYN2.js +2 -0
  46. package/x/demo/chunk-TBWCKYN2.js.map +7 -0
  47. package/x/demo/chunk-TLDBHU4V.js +15 -0
  48. package/x/demo/chunk-TLDBHU4V.js.map +7 -0
  49. package/x/demo/chunk-X2GHKWPJ.js +157 -0
  50. package/x/demo/chunk-X2GHKWPJ.js.map +7 -0
  51. package/x/demo/demo.bundle.js +18 -27
  52. package/x/demo/demo.bundle.js.map +1 -1
  53. package/x/demo/demo.bundle.min.js +2378 -534
  54. package/x/demo/demo.bundle.min.js.map +4 -4
  55. package/x/demo/routines/export-test.d.ts +2 -0
  56. package/x/demo/routines/export-test.js +7 -0
  57. package/x/demo/routines/export-test.js.map +1 -0
  58. package/x/demo/routines/playback-test.d.ts +3 -0
  59. package/x/demo/routines/playback-test.js +17 -0
  60. package/x/demo/routines/playback-test.js.map +1 -0
  61. package/x/demo/routines/timeline-setup.d.ts +6 -0
  62. package/x/demo/routines/timeline-setup.js +13 -0
  63. package/x/demo/routines/timeline-setup.js.map +1 -0
  64. package/x/demo/routines/transcode-test.js +2 -0
  65. package/x/demo/routines/transcode-test.js.map +1 -1
  66. package/x/demo/webworkerAll-3YNCLHCR.js +2 -0
  67. package/x/demo/webworkerAll-3YNCLHCR.js.map +7 -0
  68. package/x/driver/WebGLRenderer-OMRWYQIV.js +2 -0
  69. package/x/driver/WebGLRenderer-OMRWYQIV.js.map +7 -0
  70. package/x/driver/WebGPURenderer-KQJB2OJJ.js +2 -0
  71. package/x/driver/WebGPURenderer-KQJB2OJJ.js.map +7 -0
  72. package/x/driver/browserAll-YBZEJCN3.js +2 -0
  73. package/x/driver/browserAll-YBZEJCN3.js.map +7 -0
  74. package/x/driver/chunk-3L3MB5NY.js +393 -0
  75. package/x/driver/chunk-3L3MB5NY.js.map +7 -0
  76. package/x/driver/chunk-42BQ4XKE.js +269 -0
  77. package/x/driver/chunk-42BQ4XKE.js.map +7 -0
  78. package/x/driver/chunk-4HAYG3N5.js +327 -0
  79. package/x/driver/chunk-4HAYG3N5.js.map +7 -0
  80. package/x/driver/chunk-BFBY7VYB.js +42 -0
  81. package/x/driver/chunk-BFBY7VYB.js.map +7 -0
  82. package/x/driver/chunk-KM6O72WE.js +157 -0
  83. package/x/driver/chunk-KM6O72WE.js.map +7 -0
  84. package/x/driver/chunk-N6HD4WYJ.js +2 -0
  85. package/x/driver/chunk-N6HD4WYJ.js.map +7 -0
  86. package/x/driver/chunk-WCZ2O3UN.js +15 -0
  87. package/x/driver/chunk-WCZ2O3UN.js.map +7 -0
  88. package/x/driver/chunk-XWNSF3WJ.js +2 -0
  89. package/x/driver/chunk-XWNSF3WJ.js.map +7 -0
  90. package/x/driver/driver-worker.d.ts +1 -0
  91. package/x/driver/driver-worker.js +6 -0
  92. package/x/driver/driver-worker.js.map +1 -0
  93. package/x/driver/driver.d.ts +5 -4
  94. package/x/driver/driver.js +10 -20
  95. package/x/driver/driver.js.map +1 -1
  96. package/x/driver/driver.test.js +1 -1
  97. package/x/driver/driver.test.js.map +1 -1
  98. package/x/driver/driver.worker.bundle.min.js +119 -3504
  99. package/x/driver/driver.worker.bundle.min.js.map +4 -4
  100. package/x/driver/fns/host.d.ts +1 -2
  101. package/x/driver/fns/schematic.d.ts +6 -1
  102. package/x/driver/fns/work.d.ts +2 -4
  103. package/x/driver/fns/work.js +1 -100
  104. package/x/driver/fns/work.js.map +1 -1
  105. package/x/driver/parts/compositor.d.ts +15 -0
  106. package/x/driver/parts/compositor.js +152 -0
  107. package/x/driver/parts/compositor.js.map +1 -0
  108. package/x/driver/parts/machina.d.ts +0 -20
  109. package/x/driver/parts/machina.js +6 -10
  110. package/x/driver/parts/machina.js.map +1 -1
  111. package/x/driver/webworkerAll-BKJQW6P7.js +2 -0
  112. package/x/driver/webworkerAll-BKJQW6P7.js.map +7 -0
  113. package/x/features/speech/transcribe/parts/prep-audio.d.ts +1 -1
  114. package/x/features/speech/transcribe/worker.bundle.min.js +899 -899
  115. package/x/features/speech/transcribe/worker.bundle.min.js.map +4 -4
  116. package/x/index.d.ts +1 -0
  117. package/x/index.html +2 -2
  118. package/x/index.js +1 -0
  119. package/x/index.js.map +1 -1
  120. package/x/timeline/index.d.ts +1 -1
  121. package/x/timeline/index.js +1 -1
  122. package/x/timeline/index.js.map +1 -1
  123. package/x/timeline/parts/filmstrip.d.ts +1 -1
  124. package/x/timeline/parts/media.d.ts +2 -0
  125. package/x/timeline/parts/media.js +10 -2
  126. package/x/timeline/parts/media.js.map +1 -1
  127. package/x/timeline/parts/renderers/export.js.map +1 -0
  128. package/x/timeline/parts/{compositor → renderers}/parts/html-tree.js +2 -2
  129. package/x/timeline/parts/renderers/parts/html-tree.js.map +1 -0
  130. package/x/timeline/parts/renderers/parts/schedulers.js.map +1 -0
  131. package/x/timeline/parts/{compositor → renderers}/parts/tree-builder.js +4 -2
  132. package/x/timeline/parts/renderers/parts/tree-builder.js.map +1 -0
  133. package/x/timeline/parts/renderers/parts/webcodecs-tree.js.map +1 -0
  134. package/x/timeline/parts/{compositor → renderers}/playback.d.ts +2 -4
  135. package/x/timeline/parts/{compositor → renderers}/playback.js +5 -14
  136. package/x/timeline/parts/renderers/playback.js.map +1 -0
  137. package/x/timeline/parts/{compositor → renderers}/samplers/html.js +14 -5
  138. package/x/timeline/parts/renderers/samplers/html.js.map +1 -0
  139. package/x/timeline/parts/{compositor → renderers}/samplers/webcodecs.js +1 -1
  140. package/x/timeline/parts/renderers/samplers/webcodecs.js.map +1 -0
  141. package/x/timeline/parts/resource-pool.d.ts +2 -0
  142. package/x/timeline/parts/resource-pool.js +7 -4
  143. package/x/timeline/parts/resource-pool.js.map +1 -1
  144. package/x/timeline/parts/resource.d.ts +1 -0
  145. package/x/timeline/sugar/o.d.ts +4 -1
  146. package/x/timeline/sugar/o.js +4 -2
  147. package/x/timeline/sugar/o.js.map +1 -1
  148. package/x/timeline/sugar/omni-test.js +14 -7
  149. package/x/timeline/sugar/omni-test.js.map +1 -1
  150. package/x/timeline/sugar/omni.d.ts +1 -2
  151. package/x/timeline/sugar/omni.js +2 -2
  152. package/x/timeline/sugar/omni.js.map +1 -1
  153. package/x/timeline/utils/datafile.d.ts +4 -3
  154. package/x/timeline/utils/datafile.js +16 -5
  155. package/x/timeline/utils/datafile.js.map +1 -1
  156. package/x/timeline/utils/dummy-data.d.ts +1 -2
  157. package/x/timeline/utils/dummy-data.js +4 -2
  158. package/x/timeline/utils/dummy-data.js.map +1 -1
  159. package/x/timeline/parts/compositor/export.js.map +0 -1
  160. package/x/timeline/parts/compositor/parts/html-tree.js.map +0 -1
  161. package/x/timeline/parts/compositor/parts/schedulers.js.map +0 -1
  162. package/x/timeline/parts/compositor/parts/tree-builder.js.map +0 -1
  163. package/x/timeline/parts/compositor/parts/webcodecs-tree.js.map +0 -1
  164. package/x/timeline/parts/compositor/playback.js.map +0 -1
  165. package/x/timeline/parts/compositor/samplers/html.js.map +0 -1
  166. package/x/timeline/parts/compositor/samplers/webcodecs.js.map +0 -1
  167. /package/s/timeline/parts/{compositor → renderers}/export.ts +0 -0
  168. /package/s/timeline/parts/{compositor → renderers}/parts/schedulers.ts +0 -0
  169. /package/s/timeline/parts/{compositor → renderers}/parts/webcodecs-tree.ts +0 -0
  170. /package/x/timeline/parts/{compositor → renderers}/export.d.ts +0 -0
  171. /package/x/timeline/parts/{compositor → renderers}/export.js +0 -0
  172. /package/x/timeline/parts/{compositor → renderers}/parts/html-tree.d.ts +0 -0
  173. /package/x/timeline/parts/{compositor → renderers}/parts/schedulers.d.ts +0 -0
  174. /package/x/timeline/parts/{compositor → renderers}/parts/schedulers.js +0 -0
  175. /package/x/timeline/parts/{compositor → renderers}/parts/tree-builder.d.ts +0 -0
  176. /package/x/timeline/parts/{compositor → renderers}/parts/webcodecs-tree.d.ts +0 -0
  177. /package/x/timeline/parts/{compositor → renderers}/parts/webcodecs-tree.js +0 -0
  178. /package/x/timeline/parts/{compositor → renderers}/samplers/html.d.ts +0 -0
  179. /package/x/timeline/parts/{compositor → renderers}/samplers/webcodecs.d.ts +0 -0
@@ -15,9 +15,8 @@ export declare const setupDriverHost: (machina: Machina) => import("@e280/comrad
15
15
  end?: number;
16
16
  }): Promise<void>;
17
17
  encode(input: import("./schematic.js").EncoderInput & {
18
- bridge: WritableStream<StreamTargetChunk>;
18
+ bridge: WritableStream<import("mediabunny").StreamTargetChunk>;
19
19
  }): Promise<void>;
20
- composite(input: import("./schematic.js").Composition): Promise<VideoFrame>;
21
20
  };
22
21
  host: {
23
22
  world(): Promise<void>;
@@ -2,6 +2,7 @@ import { TextStyleOptions } from "pixi.js";
2
2
  import { AsSchematic } from "@e280/comrade";
3
3
  import type { AudioEncodingConfig, StreamTargetChunk, VideoEncodingConfig } from "mediabunny";
4
4
  import { Mat6 } from "../../timeline/utils/matrix.js";
5
+ import { Id } from "../../timeline/index.js";
5
6
  export type DriverSchematic = AsSchematic<{
6
7
  work: {
7
8
  hello(): Promise<void>;
@@ -20,7 +21,6 @@ export type DriverSchematic = AsSchematic<{
20
21
  encode(input: EncoderInput & {
21
22
  bridge: WritableStream<StreamTargetChunk>;
22
23
  }): Promise<void>;
23
- composite(input: Composition): Promise<VideoFrame>;
24
24
  };
25
25
  host: {
26
26
  world(): Promise<void>;
@@ -57,17 +57,20 @@ export interface MuxOpts {
57
57
  }
58
58
  export type Composition = Layer | (Layer | Composition)[];
59
59
  export type TextLayer = {
60
+ id: Id;
60
61
  kind: 'text';
61
62
  content: string;
62
63
  style?: TextStyleOptions;
63
64
  matrix?: Mat6;
64
65
  };
65
66
  export type ImageLayer = {
67
+ id: Id;
66
68
  kind: 'image';
67
69
  frame: VideoFrame;
68
70
  matrix?: Mat6;
69
71
  };
70
72
  export type TransitionLayer = {
73
+ id: Id;
71
74
  kind: 'transition';
72
75
  name: string;
73
76
  progress: number;
@@ -75,9 +78,11 @@ export type TransitionLayer = {
75
78
  to: VideoFrame;
76
79
  };
77
80
  export type GapLayer = {
81
+ id: Id;
78
82
  kind: 'gap';
79
83
  };
80
84
  export type Audio = {
85
+ id: Id;
81
86
  kind: "audio";
82
87
  data: AudioData;
83
88
  };
@@ -1,5 +1,4 @@
1
- import { Input } from "mediabunny";
2
- import { Composition, DecoderSource } from "./schematic.js";
1
+ import { DecoderSource } from "./schematic.js";
3
2
  export declare const setupDriverWork: import("@e280/comrade").SetupWork<{
4
3
  work: {
5
4
  hello(): Promise<void>;
@@ -16,9 +15,8 @@ export declare const setupDriverWork: import("@e280/comrade").SetupWork<{
16
15
  end?: number;
17
16
  }): Promise<void>;
18
17
  encode(input: import("./schematic.js").EncoderInput & {
19
- bridge: WritableStream<Input>;
18
+ bridge: WritableStream<import("mediabunny").StreamTargetChunk>;
20
19
  }): Promise<void>;
21
- composite(input: Composition): Promise<VideoFrame>;
22
20
  };
23
21
  host: {
24
22
  world(): Promise<void>;
@@ -1,8 +1,6 @@
1
1
  import { Comrade } from "@e280/comrade";
2
- import { autoDetectRenderer, Container, Sprite, Text, Texture, DOMAdapter, WebWorkerAdapter } from "pixi.js";
2
+ import { DOMAdapter, WebWorkerAdapter } from "pixi.js";
3
3
  import { Input, ALL_FORMATS, VideoSampleSink, Output, Mp4OutputFormat, VideoSampleSource, VideoSample, AudioSampleSink, AudioSampleSource, AudioSample, StreamTarget, BlobSource, UrlSource } from "mediabunny";
4
- import { mat6ToMatrix } from "../../timeline/utils/matrix.js";
5
- import { makeTransition } from "../../features/transition/transition.js";
6
4
  DOMAdapter.set(WebWorkerAdapter);
7
5
  const loadSource = async (source) => {
8
6
  if (source instanceof Blob) {
@@ -97,102 +95,5 @@ export const setupDriverWork = (Comrade.work(shell => ({
97
95
  await Promise.all(promises);
98
96
  await output.finalize();
99
97
  },
100
- async composite(composition) {
101
- const { stage, renderer } = await renderPIXI(1920, 1080);
102
- stage.removeChildren();
103
- const { dispose } = await renderLayer(composition, stage);
104
- renderer.render(stage);
105
- // make sure browser support webgl/webgpu otherwise it might take much longer to construct frame
106
- // if its very slow on eg edge try chrome
107
- const frame = new VideoFrame(renderer.canvas, {
108
- timestamp: 0,
109
- duration: 0,
110
- });
111
- renderer.clear();
112
- dispose();
113
- shell.transfer = [frame];
114
- return frame;
115
- }
116
98
  })));
117
- // TODO suspicious global, probably bad
118
- let pixi = null;
119
- async function renderPIXI(width, height) {
120
- if (pixi)
121
- return pixi;
122
- const renderer = await autoDetectRenderer({
123
- width,
124
- height,
125
- preference: "webgl", // webgl and webgl2 causes memory leaks on chrome
126
- background: "black",
127
- preferWebGLVersion: 2
128
- });
129
- const stage = new Container();
130
- pixi = { renderer, stage };
131
- return pixi;
132
- }
133
- const transitions = new Map();
134
- async function renderLayer(layer, parent) {
135
- if (Array.isArray(layer)) {
136
- layer.reverse();
137
- const disposers = [];
138
- for (const child of layer) {
139
- const result = await renderLayer(child, parent);
140
- disposers.push(result.dispose);
141
- }
142
- return { dispose: () => disposers.forEach(d => d()) };
143
- }
144
- switch (layer.kind) {
145
- case 'text':
146
- return renderTextLayer(layer, parent);
147
- case 'image':
148
- return renderImageLayer(layer, parent);
149
- case 'transition':
150
- return renderTransitionLayer(layer, parent);
151
- case 'gap': {
152
- pixi?.renderer.clear();
153
- return { dispose: () => { } };
154
- }
155
- default:
156
- console.warn('Unknown layer kind', layer.kind);
157
- return { dispose: () => { } };
158
- }
159
- }
160
- function renderTextLayer(layer, parent) {
161
- const text = new Text({
162
- text: layer.content,
163
- style: layer.style
164
- });
165
- applyTransform(text, layer.matrix);
166
- parent.addChild(text);
167
- return { dispose: () => text.destroy(true) };
168
- }
169
- function renderImageLayer(layer, parent) {
170
- const texture = Texture.from(layer.frame);
171
- const sprite = new Sprite(texture);
172
- applyTransform(sprite, layer.matrix);
173
- parent.addChild(sprite);
174
- return { dispose: () => {
175
- sprite.destroy(true);
176
- texture.destroy(true);
177
- layer.frame.close();
178
- } };
179
- }
180
- function renderTransitionLayer({ from, to, progress, name }, parent) {
181
- const transition = transitions.get(name) ??
182
- (transitions.set(name, makeTransition({
183
- name: "circle",
184
- renderer: pixi.renderer
185
- })),
186
- transitions.get(name));
187
- const texture = transition.render({ from, to, progress, width: from.displayWidth, height: from.displayHeight });
188
- const sprite = new Sprite(texture);
189
- parent.addChild(sprite);
190
- return { dispose: () => sprite.destroy(false) };
191
- }
192
- function applyTransform(target, worldMatrix) {
193
- if (!worldMatrix)
194
- return;
195
- const mx = mat6ToMatrix(worldMatrix);
196
- target.setFromMatrix(mx);
197
- }
198
99
  //# sourceMappingURL=work.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"work.js","sourceRoot":"","sources":["../../../s/driver/fns/work.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"work.js","sourceRoot":"","sources":["../../../s/driver/fns/work.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Container, Renderer } from "pixi.js";
2
+ import { Composition } from "../fns/schematic.js";
3
+ export declare class Compositor {
4
+ #private;
5
+ pixi: {
6
+ renderer: Renderer;
7
+ stage: Container;
8
+ };
9
+ static setup(): Promise<Compositor>;
10
+ constructor(pixi: {
11
+ renderer: Renderer;
12
+ stage: Container;
13
+ });
14
+ composite(composition: Composition): Promise<VideoFrame>;
15
+ }
@@ -0,0 +1,152 @@
1
+ import { autoDetectRenderer, Container, Sprite, Text, Texture } from "pixi.js";
2
+ import { mat6ToMatrix } from "../../timeline/utils/matrix.js";
3
+ import { makeTransition } from "../../features/transition/transition.js";
4
+ export class Compositor {
5
+ pixi;
6
+ static async setup() {
7
+ const renderer = await autoDetectRenderer({
8
+ width: 1920,
9
+ height: 1080,
10
+ preference: "webgl", // webgl and webgl2 causes memory leaks on chrome
11
+ background: "black",
12
+ preferWebGLVersion: 2
13
+ });
14
+ const stage = new Container();
15
+ stage.interactive = true;
16
+ return new this({ renderer, stage });
17
+ }
18
+ constructor(pixi) {
19
+ this.pixi = pixi;
20
+ }
21
+ #transitions = new Map();
22
+ #objects = new Map();
23
+ async composite(composition) {
24
+ const { stage, renderer } = this.pixi;
25
+ this.#cleanup(this.#collectIds(composition));
26
+ const { dispose } = await this.#renderLayer(composition, stage);
27
+ renderer.render(stage);
28
+ // make sure browser support webgl/webgpu otherwise it might take much longer to construct frame
29
+ // if its very slow on eg edge try chrome
30
+ const frame = new VideoFrame(renderer.canvas, {
31
+ timestamp: 0,
32
+ duration: 0,
33
+ });
34
+ dispose();
35
+ return frame;
36
+ }
37
+ async #renderLayer(layer, parent) {
38
+ if (Array.isArray(layer)) {
39
+ layer.reverse();
40
+ const disposers = [];
41
+ for (const child of layer) {
42
+ const result = await this.#renderLayer(child, parent);
43
+ disposers.push(result.dispose);
44
+ }
45
+ return { dispose: () => disposers.forEach(d => d()) };
46
+ }
47
+ switch (layer.kind) {
48
+ case 'text':
49
+ return this.#renderTextLayer(layer, parent);
50
+ case 'image':
51
+ return this.#renderImageLayer(layer, parent);
52
+ case 'transition':
53
+ return this.#renderTransitionLayer(layer, parent);
54
+ case 'gap': {
55
+ this.pixi?.renderer.clear();
56
+ return { dispose: () => { } };
57
+ }
58
+ default:
59
+ console.warn('Unknown layer kind', layer.kind);
60
+ return { dispose: () => { } };
61
+ }
62
+ }
63
+ #renderTextLayer(layer, parent) {
64
+ const text = this.#findOrCreate(layer);
65
+ this.#applyTransform(text, layer.matrix);
66
+ parent.addChild(text);
67
+ return {
68
+ dispose: () => { }
69
+ };
70
+ }
71
+ #renderImageLayer(layer, parent) {
72
+ const texture = Texture.from(layer.frame);
73
+ const sprite = this.#findOrCreate(layer);
74
+ sprite.texture = texture;
75
+ this.#applyTransform(sprite, layer.matrix);
76
+ parent.addChild(sprite);
77
+ return {
78
+ dispose: () => {
79
+ texture.destroy(true);
80
+ layer.frame.close();
81
+ }
82
+ };
83
+ }
84
+ #renderTransitionLayer({ from, to, progress, name }, parent) {
85
+ const transition = this.#transitions.get(name) ??
86
+ (this.#transitions.set(name, makeTransition({
87
+ name: "circle",
88
+ renderer: this.pixi.renderer
89
+ })),
90
+ this.#transitions.get(name));
91
+ const texture = transition.render({ from, to, progress, width: from.displayWidth, height: from.displayHeight });
92
+ const sprite = new Sprite(texture);
93
+ parent.addChild(sprite);
94
+ return { dispose: () => sprite.destroy(false) };
95
+ }
96
+ #applyTransform(target, worldMatrix) {
97
+ if (!worldMatrix)
98
+ return;
99
+ const mx = mat6ToMatrix(worldMatrix);
100
+ target.setFromMatrix(mx);
101
+ }
102
+ #findOrCreate(layer) {
103
+ const object = this.#objects.get(layer.id);
104
+ if (!object) {
105
+ switch (layer.kind) {
106
+ case 'text': {
107
+ const text = new Text({
108
+ text: layer.content,
109
+ style: layer.style
110
+ });
111
+ text.onmouseenter = () => console.log("enter text");
112
+ return this.#objects
113
+ .set(layer.id, text)
114
+ .get(layer.id);
115
+ }
116
+ case 'image': {
117
+ const sprite = new Sprite();
118
+ sprite.onmouseenter = () => console.log("enter");
119
+ return this.#objects
120
+ .set(layer.id, sprite)
121
+ .get(layer.id);
122
+ }
123
+ }
124
+ }
125
+ else
126
+ return object;
127
+ }
128
+ #collectIds(layers) {
129
+ const result = new Set();
130
+ const traverse = (node) => {
131
+ if (Array.isArray(node)) {
132
+ for (const child of node)
133
+ traverse(child);
134
+ }
135
+ else {
136
+ result.add(node.id);
137
+ }
138
+ };
139
+ traverse(layers);
140
+ return result;
141
+ }
142
+ #cleanup(activeIds) {
143
+ for (const id of this.#objects.keys()) {
144
+ if (!activeIds.has(id)) {
145
+ const obj = this.#objects.get(id);
146
+ obj.destroy(true);
147
+ this.#objects.delete(id);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ //# sourceMappingURL=compositor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compositor.js","sourceRoot":"","sources":["../../../s/driver/parts/compositor.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,3 @@
1
- import { WebMediaInfo } from "web-demuxer";
2
- type Events = {
3
- type: "config";
4
- config: {
5
- audio: AudioDecoderConfig;
6
- video: VideoDecoderConfig;
7
- };
8
- } | {
9
- type: "info";
10
- data: WebMediaInfo;
11
- } | {
12
- type: "encoderQueueSize";
13
- size: number;
14
- };
15
- type Handler = (event: Events) => void;
16
1
  export declare class Machina {
17
- #private;
18
2
  count: number;
19
- register(id: number, handler: Handler): void;
20
- unregister(id: number): void;
21
- dispatch(id: number, event: Events): void;
22
3
  }
23
- export {};
@@ -1,14 +1,10 @@
1
+ // type Events =
2
+ // | {type: "config", config: {audio: AudioDecoderConfig, video: VideoDecoderConfig}}
3
+ // | {type: "info", data: WebMediaInfo}
4
+ // | {type: "encoderQueueSize", size: number}
5
+ //
6
+ // type Handler = (event: Events) => void
1
7
  export class Machina {
2
8
  count = 0;
3
- #handlers = new Map();
4
- register(id, handler) {
5
- this.#handlers.set(id, handler);
6
- }
7
- unregister(id) {
8
- this.#handlers.delete(id);
9
- }
10
- dispatch(id, event) {
11
- this.#handlers.get(id)?.(event);
12
- }
13
9
  }
14
10
  //# sourceMappingURL=machina.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"machina.js","sourceRoot":"","sources":["../../../s/driver/parts/machina.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,OAAO;IACnB,KAAK,GAAG,CAAC,CAAA;IAET,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAA;IAEtC,QAAQ,CAAC,EAAU,EAAE,OAAgB;QACpC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAChC,CAAC;IAED,UAAU,CAAC,EAAU;QACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC1B,CAAC;IAED,QAAQ,CAAC,EAAU,EAAE,KAAa;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC;CACD"}
1
+ {"version":3,"file":"machina.js","sourceRoot":"","sources":["../../../s/driver/parts/machina.ts"],"names":[],"mappings":"AACA,gBAAgB;AAChB,sFAAsF;AACtF,wCAAwC;AACxC,8CAA8C;AAC9C,EAAE;AACF,yCAAyC;AAEzC,MAAM,OAAO,OAAO;IACnB,KAAK,GAAG,CAAC,CAAA;CAeT"}
@@ -0,0 +1,2 @@
1
+ import"./chunk-XWNSF3WJ.js";import"./chunk-3L3MB5NY.js";import"./chunk-N6HD4WYJ.js";import"./chunk-42BQ4XKE.js";
2
+ //# sourceMappingURL=webworkerAll-BKJQW6P7.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,5 +1,5 @@
1
1
  import { Driver } from "../../../../driver/driver.js";
2
2
  export declare function prepAudio(driver: Driver, source: Blob): Promise<{
3
3
  audio: Float32Array<ArrayBufferLike>;
4
- duration: any;
4
+ duration: number;
5
5
  }>;