@mediafox/core 1.2.12 → 1.2.14
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/README.md +47 -0
- package/dist/compositor/audio-manager.d.ts.map +1 -1
- package/dist/compositor/compositor.d.ts +17 -2
- package/dist/compositor/compositor.d.ts.map +1 -1
- package/dist/compositor/index.d.ts +1 -1
- package/dist/compositor/index.d.ts.map +1 -1
- package/dist/compositor/types.d.ts +17 -0
- package/dist/compositor/types.d.ts.map +1 -1
- package/dist/compositor/worker-client.d.ts +2 -2
- package/dist/compositor/worker-client.d.ts.map +1 -1
- package/dist/compositor/worker-types.d.ts +3 -1
- package/dist/compositor/worker-types.d.ts.map +1 -1
- package/dist/compositor-worker.js +30 -30
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/playback/controller.d.ts +4 -0
- package/dist/playback/controller.d.ts.map +1 -1
- package/dist/playback/renderer.d.ts +5 -1
- package/dist/playback/renderer.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/compositor/audio-manager.ts +11 -3
- package/src/compositor/compositor-worker.ts +6 -5
- package/src/compositor/compositor.ts +149 -17
- package/src/compositor/index.ts +2 -0
- package/src/compositor/types.ts +18 -0
- package/src/compositor/worker-client.ts +5 -6
- package/src/compositor/worker-types.ts +3 -1
- package/src/index.ts +2 -0
- package/src/playback/controller.ts +53 -10
- package/src/playback/renderer.ts +217 -29
package/README.md
CHANGED
|
@@ -206,6 +206,53 @@ const pause = () => player.value?.pause();
|
|
|
206
206
|
|
|
207
207
|
## Advanced Usage
|
|
208
208
|
|
|
209
|
+
### Compositor
|
|
210
|
+
|
|
211
|
+
The Compositor is a canvas-based video compositing engine for layering multiple media sources.
|
|
212
|
+
|
|
213
|
+
```typescript
|
|
214
|
+
import { Compositor } from '@mediafox/core';
|
|
215
|
+
|
|
216
|
+
const compositor = new Compositor({
|
|
217
|
+
canvas,
|
|
218
|
+
width: 1920,
|
|
219
|
+
height: 1080,
|
|
220
|
+
fitMode: 'contain' // 'contain' | 'cover' | 'fill'
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
// Load and composite sources
|
|
224
|
+
const video = await compositor.loadSource('video.mp4');
|
|
225
|
+
const overlay = await compositor.loadImage('overlay.png');
|
|
226
|
+
|
|
227
|
+
await compositor.render({
|
|
228
|
+
time: 0,
|
|
229
|
+
layers: [
|
|
230
|
+
{ source: video },
|
|
231
|
+
{ source: overlay, transform: { x: 50, y: 50, opacity: 0.8 }, zIndex: 1 }
|
|
232
|
+
]
|
|
233
|
+
});
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
#### Resizing & Fit Modes
|
|
237
|
+
|
|
238
|
+
Resize the canvas and control how content scales:
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
// Resize with optional fit mode
|
|
242
|
+
compositor.resize(1080, 1920, 'cover');
|
|
243
|
+
|
|
244
|
+
// Or set fit mode separately
|
|
245
|
+
compositor.setFitMode('contain');
|
|
246
|
+
|
|
247
|
+
// Get current fit mode
|
|
248
|
+
const mode = compositor.getFitMode();
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**Fit modes:**
|
|
252
|
+
- `'fill'` - Stretch to fill canvas (may distort)
|
|
253
|
+
- `'contain'` - Fit within canvas (may letterbox)
|
|
254
|
+
- `'cover'` - Cover canvas (may crop)
|
|
255
|
+
|
|
209
256
|
### Track Management
|
|
210
257
|
|
|
211
258
|
```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-manager.d.ts","sourceRoot":"","sources":["../../src/compositor/audio-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAkB5D,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;;GAGG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,sBAAsB,CAAqB;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,6BAAkC;IAkBvD;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI;IA2B3E;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUxC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC;;;OAGG;IACH,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAmDjE;;OAEG;IACG,IAAI,CAAC,QAAQ,GAAE,MAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"audio-manager.d.ts","sourceRoot":"","sources":["../../src/compositor/audio-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAkB5D,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;;GAGG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,sBAAsB,CAAqB;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,6BAAkC;IAkBvD;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI;IA2B3E;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUxC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC;;;OAGG;IACH,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAmDjE;;OAEG;IACG,IAAI,CAAC,QAAQ,GAAE,MAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB5D;;;OAGG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAO/D,OAAO,CAAC,qBAAqB;YAiBf,qBAAqB;YAoDrB,cAAc;IAoB5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAYb;;OAEG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5C,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,cAAc,IAAI,MAAM;IAOxB;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKrC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAKpC,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,OAAO,IAAI,IAAI;CAqBhB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { MediaSource } from '../types';
|
|
2
|
-
import type { CompositionFrame, CompositorEventListener, CompositorEventMap, CompositorOptions, CompositorSource, CompositorSourceOptions, FrameExportOptions, PreviewOptions } from './types';
|
|
2
|
+
import type { CompositionFrame, CompositorEventListener, CompositorEventMap, CompositorOptions, CompositorSource, CompositorSourceOptions, FitMode, FrameExportOptions, PreviewOptions } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* Canvas-based video compositor for composing multiple media sources into a single output.
|
|
5
5
|
* Supports layered rendering with transforms, opacity, and rotation.
|
|
@@ -29,6 +29,7 @@ export declare class Compositor {
|
|
|
29
29
|
private width;
|
|
30
30
|
private height;
|
|
31
31
|
private backgroundColor;
|
|
32
|
+
private fitMode;
|
|
32
33
|
private sourcePool;
|
|
33
34
|
private audioManager;
|
|
34
35
|
private workerClient;
|
|
@@ -48,6 +49,7 @@ export declare class Compositor {
|
|
|
48
49
|
private activeAudioSourceIds;
|
|
49
50
|
private audioScratch;
|
|
50
51
|
private registeredAudioSources;
|
|
52
|
+
private pendingPlayAfterSeek;
|
|
51
53
|
/**
|
|
52
54
|
* Creates a new Compositor instance.
|
|
53
55
|
* @param options - Configuration options for the compositor
|
|
@@ -165,10 +167,23 @@ export declare class Compositor {
|
|
|
165
167
|
getHeight(): number;
|
|
166
168
|
/**
|
|
167
169
|
* Resizes the compositor canvas without disposing loaded sources.
|
|
170
|
+
* When worker mode is active, delegates resizing to the worker thread
|
|
171
|
+
* since the OffscreenCanvas cannot be resized from the main thread.
|
|
168
172
|
* @param width - New width in pixels
|
|
169
173
|
* @param height - New height in pixels
|
|
174
|
+
* @param fitMode - Optional fit mode for scaling sources to the canvas
|
|
170
175
|
*/
|
|
171
|
-
resize(width: number, height: number): void;
|
|
176
|
+
resize(width: number, height: number, fitMode?: FitMode): void;
|
|
177
|
+
/**
|
|
178
|
+
* Sets the fit mode for scaling sources to the canvas.
|
|
179
|
+
* @param fitMode - The fit mode to use
|
|
180
|
+
*/
|
|
181
|
+
setFitMode(fitMode: FitMode): void;
|
|
182
|
+
/**
|
|
183
|
+
* Gets the current fit mode.
|
|
184
|
+
* @returns The current fit mode
|
|
185
|
+
*/
|
|
186
|
+
getFitMode(): FitMode;
|
|
172
187
|
/**
|
|
173
188
|
* Subscribes to a compositor event.
|
|
174
189
|
* @param event - Event name to listen for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compositor.d.ts","sourceRoot":"","sources":["../../src/compositor/compositor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,KAAK,EAEV,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAElB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACf,MAAM,SAAS,CAAC;AAkBjB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,GAAG,CAA6E;IACxF,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,aAAa,CAA4E;IACjG,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,oBAAoB,CAAO;IACnC,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,YAAY,CAIlB;IACF,OAAO,CAAC,sBAAsB,CAAqB;
|
|
1
|
+
{"version":3,"file":"compositor.d.ts","sourceRoot":"","sources":["../../src/compositor/compositor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { Compositor } from './compositor';
|
|
2
2
|
export { SourcePool } from './source-pool';
|
|
3
|
-
export type { AudioLayer, CompositionFrame, CompositionProvider, CompositorEventListener, CompositorEventMap, CompositorLayer, CompositorOptions, CompositorRendererType, CompositorSource, CompositorSourceOptions, CompositorWorkerOptions, FrameExportOptions, LayerTransform, PreviewOptions, SourceType, } from './types';
|
|
3
|
+
export type { AudioLayer, CompositionFrame, CompositionProvider, CompositorEventListener, CompositorEventMap, CompositorLayer, CompositorOptions, CompositorRendererType, CompositorSource, CompositorSourceOptions, CompositorWorkerOptions, FitMode, FrameExportOptions, LayerFitMode, LayerTransform, PreviewOptions, SourceType, } from './types';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compositor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compositor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,SAAS,CAAC"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import type { RendererType, Rotation } from '../types';
|
|
2
2
|
export type CompositorRendererType = RendererType;
|
|
3
|
+
/**
|
|
4
|
+
* Fit mode for scaling video/image content within the compositor canvas.
|
|
5
|
+
* - `'fill'` (default): Stretch to exactly fill the canvas, ignoring aspect ratio. May distort the image.
|
|
6
|
+
* - `'contain'`: Scale to fit entirely within the canvas, preserving aspect ratio. May result in letterboxing/pillarboxing.
|
|
7
|
+
* - `'cover'`: Scale to completely cover the canvas, preserving aspect ratio. Parts may be cropped.
|
|
8
|
+
*/
|
|
9
|
+
export type FitMode = 'contain' | 'cover' | 'fill';
|
|
10
|
+
export type LayerFitMode = FitMode | 'none' | 'auto';
|
|
3
11
|
export interface CompositorOptions {
|
|
4
12
|
canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
5
13
|
width?: number;
|
|
@@ -8,6 +16,8 @@ export interface CompositorOptions {
|
|
|
8
16
|
backgroundColor?: string;
|
|
9
17
|
enableAudio?: boolean;
|
|
10
18
|
worker?: boolean | CompositorWorkerOptions;
|
|
19
|
+
/** Initial fit mode for scaling sources to the canvas. Defaults to 'fill'. */
|
|
20
|
+
fitMode?: FitMode;
|
|
11
21
|
}
|
|
12
22
|
export interface LayerTransform {
|
|
13
23
|
x?: number;
|
|
@@ -20,11 +30,18 @@ export interface LayerTransform {
|
|
|
20
30
|
opacity?: number;
|
|
21
31
|
anchorX?: number;
|
|
22
32
|
anchorY?: number;
|
|
33
|
+
/** CSS filter string applied to this layer (e.g. "brightness(1.1) contrast(1.05)"). */
|
|
34
|
+
filter?: string;
|
|
23
35
|
}
|
|
24
36
|
export interface CompositorLayer {
|
|
25
37
|
source: CompositorSource;
|
|
26
38
|
sourceTime?: number;
|
|
27
39
|
transform?: LayerTransform;
|
|
40
|
+
/**
|
|
41
|
+
* Fit mode override for this layer. Use 'auto' or leave undefined to use the
|
|
42
|
+
* compositor's global fitMode, or 'none' to render at the source's original size.
|
|
43
|
+
*/
|
|
44
|
+
fitMode?: LayerFitMode;
|
|
28
45
|
visible?: boolean;
|
|
29
46
|
zIndex?: number;
|
|
30
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/compositor/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEvD,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/compositor/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { MediaSource } from '../types';
|
|
2
|
-
import type {
|
|
2
|
+
import type { CompositorSourceOptions, CompositorWorkerOptions, FrameExportOptions } from './types';
|
|
3
3
|
import type { CompositorWorkerFrame, CompositorWorkerSourceInfo } from './worker-types';
|
|
4
4
|
interface CompositorWorkerClientOptions {
|
|
5
5
|
canvas: HTMLCanvasElement;
|
|
@@ -22,7 +22,7 @@ export declare class CompositorWorkerClient {
|
|
|
22
22
|
unloadSource(id: string): Promise<boolean>;
|
|
23
23
|
render(frame: CompositorWorkerFrame): Promise<boolean>;
|
|
24
24
|
clear(): Promise<boolean>;
|
|
25
|
-
resize(width: number, height: number): Promise<boolean>;
|
|
25
|
+
resize(width: number, height: number, fitMode?: 'contain' | 'cover' | 'fill'): Promise<boolean>;
|
|
26
26
|
exportFrame(frame: CompositorWorkerFrame, options?: FrameExportOptions): Promise<Blob | null>;
|
|
27
27
|
dispose(): void;
|
|
28
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-client.d.ts","sourceRoot":"","sources":["../../src/compositor/worker-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,KAAK,EAEV,qBAAqB,EAMrB,0BAA0B,EAE3B,MAAM,gBAAgB,CAAC;AAExB,UAAU,6BAA6B;IACrC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC;CAC3C;AAOD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,KAAK,CAAgB;gBAEjB,OAAO,EAAE,6BAA6B;
|
|
1
|
+
{"version":3,"file":"worker-client.d.ts","sourceRoot":"","sources":["../../src/compositor/worker-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,KAAK,EAEV,qBAAqB,EAMrB,0BAA0B,EAE3B,MAAM,gBAAgB,CAAC;AAExB,UAAU,6BAA6B;IACrC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC;CAC3C;AAOD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,KAAK,CAAgB;gBAEjB,OAAO,EAAE,6BAA6B;IAmClD,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,IAAI;IAON,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAMvG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAM5E,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAMtG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1C,MAAM,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtD,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/F,WAAW,CAAC,KAAK,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAMnG,OAAO,IAAI,IAAI;CAShB"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { MediaSource } from '../types';
|
|
2
|
-
import type { FrameExportOptions,
|
|
2
|
+
import type { CompositorSourceOptions, FrameExportOptions, LayerFitMode, LayerTransform, SourceType } from './types';
|
|
3
3
|
export interface CompositorWorkerLayer {
|
|
4
4
|
sourceId: string;
|
|
5
5
|
sourceTime?: number;
|
|
6
6
|
transform?: LayerTransform;
|
|
7
|
+
fitMode?: LayerFitMode;
|
|
7
8
|
visible?: boolean;
|
|
8
9
|
zIndex?: number;
|
|
9
10
|
}
|
|
@@ -49,6 +50,7 @@ export interface CompositorWorkerRenderPayload {
|
|
|
49
50
|
export interface CompositorWorkerResizePayload {
|
|
50
51
|
width: number;
|
|
51
52
|
height: number;
|
|
53
|
+
fitMode?: 'contain' | 'cover' | 'fill';
|
|
52
54
|
}
|
|
53
55
|
export interface CompositorWorkerExportPayload {
|
|
54
56
|
frame: CompositorWorkerFrame;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-types.d.ts","sourceRoot":"","sources":["../../src/compositor/worker-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"worker-types.d.ts","sourceRoot":"","sources":["../../src/compositor/worker-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,qBAAqB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,uBAAuB,CAAC;CACnC;AAED,MAAM,WAAW,6BAA6B;IAC5C,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,qBAAqB,CAAC;IAC7B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B"}
|