@meframe/core 0.0.5 → 0.0.7
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/dist/Meframe.d.ts.map +1 -1
- package/dist/Meframe.js +36 -0
- package/dist/Meframe.js.map +1 -1
- package/dist/cache/L2Cache.d.ts.map +1 -1
- package/dist/cache/L2Cache.js +0 -3
- package/dist/cache/L2Cache.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/types.d.ts +1 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/controllers/PreRenderService.d.ts +11 -1
- package/dist/controllers/PreRenderService.d.ts.map +1 -1
- package/dist/controllers/PreRenderService.js +65 -7
- package/dist/controllers/PreRenderService.js.map +1 -1
- package/dist/event/events.d.ts +12 -3
- package/dist/event/events.d.ts.map +1 -1
- package/dist/event/events.js +1 -0
- package/dist/event/events.js.map +1 -1
- package/dist/orchestrator/Orchestrator.d.ts +2 -2
- package/dist/orchestrator/Orchestrator.d.ts.map +1 -1
- package/dist/orchestrator/Orchestrator.js +48 -46
- package/dist/orchestrator/Orchestrator.js.map +1 -1
- package/dist/orchestrator/VideoClipSession.d.ts +1 -0
- package/dist/orchestrator/VideoClipSession.d.ts.map +1 -1
- package/dist/orchestrator/VideoClipSession.js +104 -74
- package/dist/orchestrator/VideoClipSession.js.map +1 -1
- package/dist/stages/compose/GlobalAudioSession.d.ts.map +1 -1
- package/dist/stages/compose/GlobalAudioSession.js +11 -3
- package/dist/stages/compose/GlobalAudioSession.js.map +1 -1
- package/dist/stages/encode/BaseEncoder.js +1 -1
- package/dist/stages/encode/BaseEncoder.js.map +1 -1
- package/dist/stages/load/ResourceLoader.js +1 -1
- package/dist/stages/load/ResourceLoader.js.map +1 -1
- package/dist/worker/WorkerPool.d.ts.map +1 -1
- package/dist/worker/WorkerPool.js +6 -2
- package/dist/worker/WorkerPool.js.map +1 -1
- package/dist/worker/types.d.ts +1 -1
- package/dist/worker/types.d.ts.map +1 -1
- package/dist/worker/types.js.map +1 -1
- package/dist/worker/worker-event-whitelist.d.ts.map +1 -1
- package/dist/workers/BaseDecoder.js +130 -0
- package/dist/workers/BaseDecoder.js.map +1 -0
- package/dist/workers/WorkerChannel.js.map +1 -1
- package/dist/workers/stages/compose/video-compose.worker.js +13 -9
- package/dist/workers/stages/compose/video-compose.worker.js.map +1 -1
- package/dist/workers/stages/decode/audio-decode.worker.js +243 -0
- package/dist/workers/stages/decode/audio-decode.worker.js.map +1 -0
- package/dist/workers/stages/decode/video-decode.worker.js +346 -0
- package/dist/workers/stages/decode/video-decode.worker.js.map +1 -0
- package/dist/workers/stages/encode/video-encode.worker.js +340 -0
- package/dist/workers/stages/encode/video-encode.worker.js.map +1 -0
- package/package.json +1 -1
- package/dist/workers/stages/decode/decode.worker.js +0 -826
- package/dist/workers/stages/decode/decode.worker.js.map +0 -1
- package/dist/workers/stages/encode/encode.worker.js +0 -547
- package/dist/workers/stages/encode/encode.worker.js.map +0 -1
package/dist/event/events.d.ts
CHANGED
|
@@ -41,6 +41,7 @@ export declare enum MeframeEvent {
|
|
|
41
41
|
CacheEvict = "cache:evict",
|
|
42
42
|
CacheWrite = "cache:write",
|
|
43
43
|
CacheCover = "cache:cover",
|
|
44
|
+
ExportPreparing = "export:preparing",
|
|
44
45
|
ExportStart = "export:start",
|
|
45
46
|
ExportProgress = "export:progress",
|
|
46
47
|
ExportComplete = "export:complete",
|
|
@@ -203,6 +204,12 @@ export interface EventPayloadMap {
|
|
|
203
204
|
level: 'L1' | 'L2';
|
|
204
205
|
size: number;
|
|
205
206
|
};
|
|
207
|
+
[MeframeEvent.ExportPreparing]: {
|
|
208
|
+
totalClips: number;
|
|
209
|
+
cachedClips: number;
|
|
210
|
+
missingClips: string[];
|
|
211
|
+
estimatedTimeMs?: number;
|
|
212
|
+
};
|
|
206
213
|
[MeframeEvent.ExportStart]: {
|
|
207
214
|
format: string;
|
|
208
215
|
width: number;
|
|
@@ -212,9 +219,11 @@ export interface EventPayloadMap {
|
|
|
212
219
|
};
|
|
213
220
|
[MeframeEvent.ExportProgress]: {
|
|
214
221
|
progress: number;
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
222
|
+
stage?: 'preparing' | 'muxing';
|
|
223
|
+
message?: string;
|
|
224
|
+
currentFrame?: number;
|
|
225
|
+
totalFrames?: number;
|
|
226
|
+
timeUs?: TimeUs;
|
|
218
227
|
};
|
|
219
228
|
[MeframeEvent.ExportComplete]: {
|
|
220
229
|
size: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/event/events.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/event/events.ts"],"names":[],"mappings":"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"}
|
package/dist/event/events.js
CHANGED
|
@@ -28,6 +28,7 @@ var MeframeEvent = /* @__PURE__ */ ((MeframeEvent2) => {
|
|
|
28
28
|
MeframeEvent2["CacheEvict"] = "cache:evict";
|
|
29
29
|
MeframeEvent2["CacheWrite"] = "cache:write";
|
|
30
30
|
MeframeEvent2["CacheCover"] = "cache:cover";
|
|
31
|
+
MeframeEvent2["ExportPreparing"] = "export:preparing";
|
|
31
32
|
MeframeEvent2["ExportStart"] = "export:start";
|
|
32
33
|
MeframeEvent2["ExportProgress"] = "export:progress";
|
|
33
34
|
MeframeEvent2["ExportComplete"] = "export:complete";
|
package/dist/event/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sources":["../../src/event/events.ts"],"sourcesContent":["/**\n * Core event definitions for the Meframe engine\n * These are public events exposed to plugins and external components\n */\n\nimport { CompositionModel, Resource, type TimeUs } from '../model';\n\nexport interface ResourceEvent {\n type: MeframeEvent;\n resourceId: string;\n resource?: Resource;\n oldState?: Resource['state'];\n newState?: Resource['state'];\n workerType?: string;\n}\n\n/**\n * Core event types\n */\nexport enum MeframeEvent {\n // Composition model events\n ModelSet = 'model:set',\n\n // Resource events\n ResourceAdd = 'resource:add',\n ResourceUpdate = 'resource:update',\n ResourceRemove = 'resource:remove',\n ResourceStageChange = 'resource:state',\n\n // Load stage events\n LoadStart = 'load:start',\n LoadProgress = 'load:progress',\n LoadComplete = 'load:complete',\n LoadError = 'load:error',\n\n // Demux stage events\n DemuxStart = 'demux:start',\n DemuxProgress = 'demux:progress',\n DemuxComplete = 'demux:complete',\n DemuxError = 'demux:error',\n\n // Decode stage events\n DecodeStart = 'decode:start',\n DecodeProgress = 'decode:progress',\n DecodeComplete = 'decode:complete',\n DecodeError = 'decode:error',\n\n // Compose stage events\n ComposeStart = 'compose:start',\n ComposeProgress = 'compose:progress',\n ComposeComplete = 'compose:complete',\n\n // Composition frame events (L1 cache)\n ComposeFrameReady = 'compose:frameReady',\n ComposeFrameDropped = 'compose:frameDropped',\n\n // Encode events (L2 cache)\n EncodeChunkReady = 'encode:chunkReady',\n EncodeChunkError = 'encode:chunkError',\n\n // Cache events\n CacheHit = 'cache:hit',\n CacheMiss = 'cache:miss',\n CacheEvict = 'cache:evict',\n CacheWrite = 'cache:write',\n CacheCover = 'cache:cover',\n\n // Export events\n ExportStart = 'export:start',\n ExportProgress = 'export:progress',\n ExportComplete = 'export:complete',\n ExportError = 'export:error',\n\n // Composition model events\n CompositionUpdated = 'composition:updated',\n PatchApplied = 'patch:applied',\n Ready = 'ready',\n\n // Worker events\n WorkerStarted = 'worker:started',\n WorkerReady = 'worker:ready',\n WorkerError = 'worker:error',\n WorkerRestarted = 'worker:restarted',\n\n // Playback events\n PlaybackBuffering = 'playback:buffering',\n PlaybackPlay = 'playback:play',\n PlaybackPause = 'playback:pause',\n PlaybackStop = 'playback:stop',\n PlaybackSeek = 'playback:seek',\n PlaybackEnded = 'playback:ended',\n PlaybackTimeUpdate = 'playback:timeupdate',\n PlaybackRateChange = 'playback:ratechange',\n PlaybackVolumeChange = 'playback:volumechange',\n PlaybackError = 'playback:error',\n PlaybackStarted = 'playback:started',\n PlaybackPaused = 'playback:paused',\n PlaybackSeeked = 'playback:seeked',\n\n // General error event\n Error = 'error',\n\n // Plugin events\n PluginLoaded = 'plugin:loaded',\n PluginError = 'plugin:error',\n PluginUnloaded = 'plugin:unloaded',\n\n // Clip lifecycle events\n ClipActivated = 'clip:activated',\n ClipDeactivated = 'clip:deactivated',\n}\n\n/**\n * Event payload definitions\n */\nexport interface EventPayloadMap {\n // Composition model events\n [MeframeEvent.ModelSet]: CompositionModel;\n\n // Resource events\n [MeframeEvent.ResourceAdd]: ResourceEvent;\n [MeframeEvent.ResourceUpdate]: ResourceEvent;\n [MeframeEvent.ResourceRemove]: ResourceEvent;\n [MeframeEvent.ResourceStageChange]: ResourceEvent;\n\n // Load events\n [MeframeEvent.LoadStart]: {\n resourceId: string;\n url: string;\n size?: number;\n };\n\n [MeframeEvent.LoadProgress]: {\n resourceId: string;\n loaded: number;\n total: number;\n progress: number;\n };\n\n [MeframeEvent.LoadComplete]: {\n resourceId: string;\n bytes: number;\n durationMs: number;\n };\n\n [MeframeEvent.LoadError]: {\n resourceId: string;\n error: Error;\n retry?: boolean;\n };\n\n // Demux events\n [MeframeEvent.DemuxStart]: {\n clipId: string;\n trackId?: string;\n format?: string;\n };\n\n [MeframeEvent.DemuxProgress]: {\n clipId: string;\n progress: number;\n };\n\n [MeframeEvent.DemuxComplete]: {\n clipId: string;\n trackCount: number;\n durationUs: TimeUs;\n };\n\n [MeframeEvent.DemuxError]: {\n clipId: string;\n error: Error;\n };\n\n // Decode events\n [MeframeEvent.DecodeStart]: {\n clipId: string;\n frameCount?: number;\n trackType: 'video' | 'audio';\n };\n\n [MeframeEvent.DecodeProgress]: {\n clipId: string;\n decodedFrames: number;\n totalFrames: number;\n progress: number;\n };\n\n [MeframeEvent.DecodeComplete]: {\n clipId: string;\n frameCount: number;\n durationUs: TimeUs;\n };\n\n [MeframeEvent.DecodeError]: {\n clipId: string;\n error: Error;\n frame?: number;\n };\n\n // Compose events\n [MeframeEvent.ComposeStart]: {\n timeUs: TimeUs;\n clipIds: string[];\n };\n\n [MeframeEvent.ComposeProgress]: {\n timeUs: TimeUs;\n progress: number;\n };\n\n [MeframeEvent.ComposeComplete]: {\n timeUs: TimeUs;\n frameNumber: number;\n };\n\n // Composition frame events\n [MeframeEvent.ComposeFrameReady]: {\n timeUs: TimeUs;\n frameNumber: number;\n renderTimeMs: number;\n trackId: string;\n clipId: string;\n };\n\n [MeframeEvent.ComposeFrameDropped]: {\n timeUs: TimeUs;\n reason: 'decode_slow' | 'compose_slow' | 'backpressure';\n };\n\n // Encode events\n [MeframeEvent.EncodeChunkReady]: {\n timeUs: TimeUs;\n durationUs: TimeUs;\n track: 'video' | 'audio';\n size: number;\n };\n\n [MeframeEvent.EncodeChunkError]: {\n timeUs: TimeUs;\n track: 'video' | 'audio';\n error: Error;\n };\n\n // Cache events\n [MeframeEvent.CacheHit]: {\n timeUs: TimeUs;\n level: 'L1' | 'L2';\n key?: string;\n };\n\n [MeframeEvent.CacheMiss]: {\n timeUs: TimeUs;\n level: 'L1' | 'L2';\n key?: string;\n };\n\n [MeframeEvent.CacheEvict]: {\n clipId: string;\n count: number;\n level: 'L1' | 'L2';\n reason: 'size' | 'ttl' | 'manual';\n };\n\n [MeframeEvent.CacheWrite]: {\n clipId: string;\n timeUs: TimeUs;\n level: 'L1' | 'L2';\n size: number;\n };\n [MeframeEvent.CacheCover]: {\n clipId: string;\n timeUs: TimeUs;\n level: 'L1' | 'L2';\n size: number;\n };\n\n // Export events\n [MeframeEvent.ExportStart]: {\n format: string;\n width: number;\n height: number;\n fps: number;\n durationUs: TimeUs;\n };\n\n [MeframeEvent.ExportProgress]: {\n progress: number;\n currentFrame: number;\n totalFrames: number;\n timeUs: TimeUs;\n };\n\n [MeframeEvent.ExportComplete]: {\n size: number;\n durationMs: number;\n format: string;\n };\n\n [MeframeEvent.ExportError]: {\n error: Error;\n stage?: string;\n };\n\n // Composition events\n [MeframeEvent.CompositionUpdated]: {\n trackCount: number;\n clipCount: number;\n durationUs: TimeUs;\n };\n\n [MeframeEvent.PatchApplied]: {\n operations: number;\n affectedClips: string[];\n };\n\n [MeframeEvent.Ready]: {\n trackCount: number;\n clipCount: number;\n durationUs: TimeUs;\n };\n\n // Worker events\n [MeframeEvent.WorkerStarted]: {\n type: string;\n workerId: string;\n };\n\n [MeframeEvent.WorkerReady]: {\n type: string;\n workerId: string;\n };\n\n [MeframeEvent.WorkerError]: {\n type: string;\n workerId: string;\n error: Error;\n };\n\n [MeframeEvent.WorkerRestarted]: {\n type: string;\n workerId: string;\n reason: string;\n };\n\n // Playback events\n [MeframeEvent.PlaybackBuffering]: undefined;\n\n [MeframeEvent.PlaybackPlay]: undefined;\n\n [MeframeEvent.PlaybackPause]: undefined;\n\n [MeframeEvent.PlaybackStop]: undefined;\n\n [MeframeEvent.PlaybackSeek]: {\n timeUs: TimeUs;\n };\n\n [MeframeEvent.PlaybackStarted]: {\n timeUs: TimeUs;\n };\n\n [MeframeEvent.PlaybackPaused]: {\n timeUs: TimeUs;\n };\n\n [MeframeEvent.PlaybackSeeked]: {\n fromUs: TimeUs;\n toUs: TimeUs;\n };\n\n [MeframeEvent.PlaybackEnded]: {\n timeUs: TimeUs;\n };\n\n [MeframeEvent.PlaybackTimeUpdate]: {\n timeUs: TimeUs;\n };\n\n [MeframeEvent.PlaybackRateChange]: {\n rate: number;\n };\n\n [MeframeEvent.PlaybackVolumeChange]: {\n volume: number;\n };\n\n [MeframeEvent.PlaybackError]: Error;\n\n // Error event\n [MeframeEvent.Error]: {\n source: string;\n error: Error;\n context?: any;\n recoverable?: boolean;\n };\n\n // Plugin events\n [MeframeEvent.PluginLoaded]: {\n name: string;\n version?: string;\n };\n\n [MeframeEvent.PluginError]: {\n plugin: string;\n error: Error;\n };\n\n [MeframeEvent.PluginUnloaded]: {\n name: string;\n };\n\n // Clip events\n [MeframeEvent.ClipActivated]: {\n clipId: string;\n };\n\n [MeframeEvent.ClipDeactivated]: {\n clipId: string;\n };\n}\n"],"names":["MeframeEvent"],"mappings":"AAmBO,IAAK,iCAAAA,kBAAL;AAELA,gBAAA,UAAA,IAAW;AAGXA,gBAAA,aAAA,IAAc;AACdA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,qBAAA,IAAsB;AAGtBA,gBAAA,WAAA,IAAY;AACZA,gBAAA,cAAA,IAAe;AACfA,gBAAA,cAAA,IAAe;AACfA,gBAAA,WAAA,IAAY;AAGZA,gBAAA,YAAA,IAAa;AACbA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,YAAA,IAAa;AAGbA,gBAAA,aAAA,IAAc;AACdA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,aAAA,IAAc;AAGdA,gBAAA,cAAA,IAAe;AACfA,gBAAA,iBAAA,IAAkB;AAClBA,gBAAA,iBAAA,IAAkB;AAGlBA,gBAAA,mBAAA,IAAoB;AACpBA,gBAAA,qBAAA,IAAsB;AAGtBA,gBAAA,kBAAA,IAAmB;AACnBA,gBAAA,kBAAA,IAAmB;AAGnBA,gBAAA,UAAA,IAAW;AACXA,gBAAA,WAAA,IAAY;AACZA,gBAAA,YAAA,IAAa;AACbA,gBAAA,YAAA,IAAa;AACbA,gBAAA,YAAA,IAAa;AAGbA,gBAAA,aAAA,IAAc;AACdA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,aAAA,IAAc;AAGdA,gBAAA,oBAAA,IAAqB;AACrBA,gBAAA,cAAA,IAAe;AACfA,gBAAA,OAAA,IAAQ;AAGRA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,aAAA,IAAc;AACdA,gBAAA,aAAA,IAAc;AACdA,gBAAA,iBAAA,IAAkB;AAGlBA,gBAAA,mBAAA,IAAoB;AACpBA,gBAAA,cAAA,IAAe;AACfA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,cAAA,IAAe;AACfA,gBAAA,cAAA,IAAe;AACfA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,oBAAA,IAAqB;AACrBA,gBAAA,oBAAA,IAAqB;AACrBA,gBAAA,sBAAA,IAAuB;AACvBA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,iBAAA,IAAkB;AAClBA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,gBAAA,IAAiB;AAGjBA,gBAAA,OAAA,IAAQ;AAGRA,gBAAA,cAAA,IAAe;AACfA,gBAAA,aAAA,IAAc;AACdA,gBAAA,gBAAA,IAAiB;AAGjBA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,iBAAA,IAAkB;AA1FR,SAAAA;AAAA,GAAA,gBAAA,CAAA,CAAA;"}
|
|
1
|
+
{"version":3,"file":"events.js","sources":["../../src/event/events.ts"],"sourcesContent":["/**\n * Core event definitions for the Meframe engine\n * These are public events exposed to plugins and external components\n */\n\nimport { CompositionModel, Resource, type TimeUs } from '../model';\n\nexport interface ResourceEvent {\n type: MeframeEvent;\n resourceId: string;\n resource?: Resource;\n oldState?: Resource['state'];\n newState?: Resource['state'];\n workerType?: string;\n}\n\n/**\n * Core event types\n */\nexport enum MeframeEvent {\n // Composition model events\n ModelSet = 'model:set',\n\n // Resource events\n ResourceAdd = 'resource:add',\n ResourceUpdate = 'resource:update',\n ResourceRemove = 'resource:remove',\n ResourceStageChange = 'resource:state',\n\n // Load stage events\n LoadStart = 'load:start',\n LoadProgress = 'load:progress',\n LoadComplete = 'load:complete',\n LoadError = 'load:error',\n\n // Demux stage events\n DemuxStart = 'demux:start',\n DemuxProgress = 'demux:progress',\n DemuxComplete = 'demux:complete',\n DemuxError = 'demux:error',\n\n // Decode stage events\n DecodeStart = 'decode:start',\n DecodeProgress = 'decode:progress',\n DecodeComplete = 'decode:complete',\n DecodeError = 'decode:error',\n\n // Compose stage events\n ComposeStart = 'compose:start',\n ComposeProgress = 'compose:progress',\n ComposeComplete = 'compose:complete',\n\n // Composition frame events (L1 cache)\n ComposeFrameReady = 'compose:frameReady',\n ComposeFrameDropped = 'compose:frameDropped',\n\n // Encode events (L2 cache)\n EncodeChunkReady = 'encode:chunkReady',\n EncodeChunkError = 'encode:chunkError',\n\n // Cache events\n CacheHit = 'cache:hit',\n CacheMiss = 'cache:miss',\n CacheEvict = 'cache:evict',\n CacheWrite = 'cache:write',\n CacheCover = 'cache:cover',\n\n // Export events\n ExportPreparing = 'export:preparing',\n ExportStart = 'export:start',\n ExportProgress = 'export:progress',\n ExportComplete = 'export:complete',\n ExportError = 'export:error',\n\n // Composition model events\n CompositionUpdated = 'composition:updated',\n PatchApplied = 'patch:applied',\n Ready = 'ready',\n\n // Worker events\n WorkerStarted = 'worker:started',\n WorkerReady = 'worker:ready',\n WorkerError = 'worker:error',\n WorkerRestarted = 'worker:restarted',\n\n // Playback events\n PlaybackBuffering = 'playback:buffering',\n PlaybackPlay = 'playback:play',\n PlaybackPause = 'playback:pause',\n PlaybackStop = 'playback:stop',\n PlaybackSeek = 'playback:seek',\n PlaybackEnded = 'playback:ended',\n PlaybackTimeUpdate = 'playback:timeupdate',\n PlaybackRateChange = 'playback:ratechange',\n PlaybackVolumeChange = 'playback:volumechange',\n PlaybackError = 'playback:error',\n PlaybackStarted = 'playback:started',\n PlaybackPaused = 'playback:paused',\n PlaybackSeeked = 'playback:seeked',\n\n // General error event\n Error = 'error',\n\n // Plugin events\n PluginLoaded = 'plugin:loaded',\n PluginError = 'plugin:error',\n PluginUnloaded = 'plugin:unloaded',\n\n // Clip lifecycle events\n ClipActivated = 'clip:activated',\n ClipDeactivated = 'clip:deactivated',\n}\n\n/**\n * Event payload definitions\n */\nexport interface EventPayloadMap {\n // Composition model events\n [MeframeEvent.ModelSet]: CompositionModel;\n\n // Resource events\n [MeframeEvent.ResourceAdd]: ResourceEvent;\n [MeframeEvent.ResourceUpdate]: ResourceEvent;\n [MeframeEvent.ResourceRemove]: ResourceEvent;\n [MeframeEvent.ResourceStageChange]: ResourceEvent;\n\n // Load events\n [MeframeEvent.LoadStart]: {\n resourceId: string;\n url: string;\n size?: number;\n };\n\n [MeframeEvent.LoadProgress]: {\n resourceId: string;\n loaded: number;\n total: number;\n progress: number;\n };\n\n [MeframeEvent.LoadComplete]: {\n resourceId: string;\n bytes: number;\n durationMs: number;\n };\n\n [MeframeEvent.LoadError]: {\n resourceId: string;\n error: Error;\n retry?: boolean;\n };\n\n // Demux events\n [MeframeEvent.DemuxStart]: {\n clipId: string;\n trackId?: string;\n format?: string;\n };\n\n [MeframeEvent.DemuxProgress]: {\n clipId: string;\n progress: number;\n };\n\n [MeframeEvent.DemuxComplete]: {\n clipId: string;\n trackCount: number;\n durationUs: TimeUs;\n };\n\n [MeframeEvent.DemuxError]: {\n clipId: string;\n error: Error;\n };\n\n // Decode events\n [MeframeEvent.DecodeStart]: {\n clipId: string;\n frameCount?: number;\n trackType: 'video' | 'audio';\n };\n\n [MeframeEvent.DecodeProgress]: {\n clipId: string;\n decodedFrames: number;\n totalFrames: number;\n progress: number;\n };\n\n [MeframeEvent.DecodeComplete]: {\n clipId: string;\n frameCount: number;\n durationUs: TimeUs;\n };\n\n [MeframeEvent.DecodeError]: {\n clipId: string;\n error: Error;\n frame?: number;\n };\n\n // Compose events\n [MeframeEvent.ComposeStart]: {\n timeUs: TimeUs;\n clipIds: string[];\n };\n\n [MeframeEvent.ComposeProgress]: {\n timeUs: TimeUs;\n progress: number;\n };\n\n [MeframeEvent.ComposeComplete]: {\n timeUs: TimeUs;\n frameNumber: number;\n };\n\n // Composition frame events\n [MeframeEvent.ComposeFrameReady]: {\n timeUs: TimeUs;\n frameNumber: number;\n renderTimeMs: number;\n trackId: string;\n clipId: string;\n };\n\n [MeframeEvent.ComposeFrameDropped]: {\n timeUs: TimeUs;\n reason: 'decode_slow' | 'compose_slow' | 'backpressure';\n };\n\n // Encode events\n [MeframeEvent.EncodeChunkReady]: {\n timeUs: TimeUs;\n durationUs: TimeUs;\n track: 'video' | 'audio';\n size: number;\n };\n\n [MeframeEvent.EncodeChunkError]: {\n timeUs: TimeUs;\n track: 'video' | 'audio';\n error: Error;\n };\n\n // Cache events\n [MeframeEvent.CacheHit]: {\n timeUs: TimeUs;\n level: 'L1' | 'L2';\n key?: string;\n };\n\n [MeframeEvent.CacheMiss]: {\n timeUs: TimeUs;\n level: 'L1' | 'L2';\n key?: string;\n };\n\n [MeframeEvent.CacheEvict]: {\n clipId: string;\n count: number;\n level: 'L1' | 'L2';\n reason: 'size' | 'ttl' | 'manual';\n };\n\n [MeframeEvent.CacheWrite]: {\n clipId: string;\n timeUs: TimeUs;\n level: 'L1' | 'L2';\n size: number;\n };\n [MeframeEvent.CacheCover]: {\n clipId: string;\n timeUs: TimeUs;\n level: 'L1' | 'L2';\n size: number;\n };\n\n // Export events\n [MeframeEvent.ExportPreparing]: {\n totalClips: number;\n cachedClips: number;\n missingClips: string[];\n estimatedTimeMs?: number;\n };\n\n [MeframeEvent.ExportStart]: {\n format: string;\n width: number;\n height: number;\n fps: number;\n durationUs: TimeUs;\n };\n\n [MeframeEvent.ExportProgress]: {\n progress: number;\n stage?: 'preparing' | 'muxing';\n message?: string;\n currentFrame?: number;\n totalFrames?: number;\n timeUs?: TimeUs;\n };\n\n [MeframeEvent.ExportComplete]: {\n size: number;\n durationMs: number;\n format: string;\n };\n\n [MeframeEvent.ExportError]: {\n error: Error;\n stage?: string;\n };\n\n // Composition events\n [MeframeEvent.CompositionUpdated]: {\n trackCount: number;\n clipCount: number;\n durationUs: TimeUs;\n };\n\n [MeframeEvent.PatchApplied]: {\n operations: number;\n affectedClips: string[];\n };\n\n [MeframeEvent.Ready]: {\n trackCount: number;\n clipCount: number;\n durationUs: TimeUs;\n };\n\n // Worker events\n [MeframeEvent.WorkerStarted]: {\n type: string;\n workerId: string;\n };\n\n [MeframeEvent.WorkerReady]: {\n type: string;\n workerId: string;\n };\n\n [MeframeEvent.WorkerError]: {\n type: string;\n workerId: string;\n error: Error;\n };\n\n [MeframeEvent.WorkerRestarted]: {\n type: string;\n workerId: string;\n reason: string;\n };\n\n // Playback events\n [MeframeEvent.PlaybackBuffering]: undefined;\n\n [MeframeEvent.PlaybackPlay]: undefined;\n\n [MeframeEvent.PlaybackPause]: undefined;\n\n [MeframeEvent.PlaybackStop]: undefined;\n\n [MeframeEvent.PlaybackSeek]: {\n timeUs: TimeUs;\n };\n\n [MeframeEvent.PlaybackStarted]: {\n timeUs: TimeUs;\n };\n\n [MeframeEvent.PlaybackPaused]: {\n timeUs: TimeUs;\n };\n\n [MeframeEvent.PlaybackSeeked]: {\n fromUs: TimeUs;\n toUs: TimeUs;\n };\n\n [MeframeEvent.PlaybackEnded]: {\n timeUs: TimeUs;\n };\n\n [MeframeEvent.PlaybackTimeUpdate]: {\n timeUs: TimeUs;\n };\n\n [MeframeEvent.PlaybackRateChange]: {\n rate: number;\n };\n\n [MeframeEvent.PlaybackVolumeChange]: {\n volume: number;\n };\n\n [MeframeEvent.PlaybackError]: Error;\n\n // Error event\n [MeframeEvent.Error]: {\n source: string;\n error: Error;\n context?: any;\n recoverable?: boolean;\n };\n\n // Plugin events\n [MeframeEvent.PluginLoaded]: {\n name: string;\n version?: string;\n };\n\n [MeframeEvent.PluginError]: {\n plugin: string;\n error: Error;\n };\n\n [MeframeEvent.PluginUnloaded]: {\n name: string;\n };\n\n // Clip events\n [MeframeEvent.ClipActivated]: {\n clipId: string;\n };\n\n [MeframeEvent.ClipDeactivated]: {\n clipId: string;\n };\n}\n"],"names":["MeframeEvent"],"mappings":"AAmBO,IAAK,iCAAAA,kBAAL;AAELA,gBAAA,UAAA,IAAW;AAGXA,gBAAA,aAAA,IAAc;AACdA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,qBAAA,IAAsB;AAGtBA,gBAAA,WAAA,IAAY;AACZA,gBAAA,cAAA,IAAe;AACfA,gBAAA,cAAA,IAAe;AACfA,gBAAA,WAAA,IAAY;AAGZA,gBAAA,YAAA,IAAa;AACbA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,YAAA,IAAa;AAGbA,gBAAA,aAAA,IAAc;AACdA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,aAAA,IAAc;AAGdA,gBAAA,cAAA,IAAe;AACfA,gBAAA,iBAAA,IAAkB;AAClBA,gBAAA,iBAAA,IAAkB;AAGlBA,gBAAA,mBAAA,IAAoB;AACpBA,gBAAA,qBAAA,IAAsB;AAGtBA,gBAAA,kBAAA,IAAmB;AACnBA,gBAAA,kBAAA,IAAmB;AAGnBA,gBAAA,UAAA,IAAW;AACXA,gBAAA,WAAA,IAAY;AACZA,gBAAA,YAAA,IAAa;AACbA,gBAAA,YAAA,IAAa;AACbA,gBAAA,YAAA,IAAa;AAGbA,gBAAA,iBAAA,IAAkB;AAClBA,gBAAA,aAAA,IAAc;AACdA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,aAAA,IAAc;AAGdA,gBAAA,oBAAA,IAAqB;AACrBA,gBAAA,cAAA,IAAe;AACfA,gBAAA,OAAA,IAAQ;AAGRA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,aAAA,IAAc;AACdA,gBAAA,aAAA,IAAc;AACdA,gBAAA,iBAAA,IAAkB;AAGlBA,gBAAA,mBAAA,IAAoB;AACpBA,gBAAA,cAAA,IAAe;AACfA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,cAAA,IAAe;AACfA,gBAAA,cAAA,IAAe;AACfA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,oBAAA,IAAqB;AACrBA,gBAAA,oBAAA,IAAqB;AACrBA,gBAAA,sBAAA,IAAuB;AACvBA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,iBAAA,IAAkB;AAClBA,gBAAA,gBAAA,IAAiB;AACjBA,gBAAA,gBAAA,IAAiB;AAGjBA,gBAAA,OAAA,IAAQ;AAGRA,gBAAA,cAAA,IAAe;AACfA,gBAAA,aAAA,IAAc;AACdA,gBAAA,gBAAA,IAAiB;AAGjBA,gBAAA,eAAA,IAAgB;AAChBA,gBAAA,iBAAA,IAAkB;AA3FR,SAAAA;AAAA,GAAA,gBAAA,CAAA,CAAA;"}
|
|
@@ -52,15 +52,15 @@ export declare class Orchestrator implements IOrchestrator {
|
|
|
52
52
|
}): Promise<boolean>;
|
|
53
53
|
/**
|
|
54
54
|
* Render a clip completely for L2 cache (bypass ClipSessionManager)
|
|
55
|
+
* Returns a promise that resolves when encoding is complete
|
|
55
56
|
*/
|
|
56
|
-
renderClipForL2(clipId: string): Promise<
|
|
57
|
+
renderClipForL2(clipId: string): Promise<void>;
|
|
57
58
|
/**
|
|
58
59
|
* Create a new session for a clip
|
|
59
60
|
*/
|
|
60
61
|
private createSession;
|
|
61
62
|
dispose(): Promise<void>;
|
|
62
63
|
private buildWorkerConfigs;
|
|
63
|
-
private setupSharedConnections;
|
|
64
64
|
export(model: CompositionModel, options: ExportOptions): Promise<Blob>;
|
|
65
65
|
}
|
|
66
66
|
//# sourceMappingURL=Orchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/Orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAY,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IACpC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACjD,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,YAAY,EAAE,kBAAkB,CAAC;IACjC,UAAU,EAAE,UAAU,CAAC;IAEvB,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,aAAa,CAAuB;IAC5C,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;gBAE5D,MAAM,EAAE,kBAAkB;IAsEtC,IAAI,YAAY,IAAI,YAAY,
|
|
1
|
+
{"version":3,"file":"Orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/Orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,10 +87,11 @@ class Orchestrator {
|
|
|
87
87
|
const workerTypes = [
|
|
88
88
|
"videoDemux",
|
|
89
89
|
"audioDemux",
|
|
90
|
-
"
|
|
90
|
+
"videoDecode",
|
|
91
|
+
"audioDecode",
|
|
91
92
|
"videoCompose",
|
|
92
93
|
"audioCompose",
|
|
93
|
-
"
|
|
94
|
+
"videoEncode"
|
|
94
95
|
];
|
|
95
96
|
for (const type of workerTypes) {
|
|
96
97
|
result[type] = status[type] || {
|
|
@@ -103,7 +104,6 @@ class Orchestrator {
|
|
|
103
104
|
async initialize() {
|
|
104
105
|
if (this.isInitialized) return;
|
|
105
106
|
await this.cacheManager.init();
|
|
106
|
-
await this.setupSharedConnections();
|
|
107
107
|
this.isInitialized = true;
|
|
108
108
|
}
|
|
109
109
|
// Event methods - forward to eventBus
|
|
@@ -191,7 +191,15 @@ class Orchestrator {
|
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
async restartWorker(type, clipId) {
|
|
194
|
-
|
|
194
|
+
const clipLocalTypes = [
|
|
195
|
+
"videoDemux",
|
|
196
|
+
"audioDemux",
|
|
197
|
+
"videoDecode",
|
|
198
|
+
"audioDecode",
|
|
199
|
+
"videoCompose",
|
|
200
|
+
"videoEncode"
|
|
201
|
+
];
|
|
202
|
+
if (clipLocalTypes.includes(type) && !clipId) {
|
|
195
203
|
throw new Error(`clipId required for restarting ${type} worker`);
|
|
196
204
|
}
|
|
197
205
|
this.workers.terminate(type, clipId);
|
|
@@ -206,8 +214,6 @@ class Orchestrator {
|
|
|
206
214
|
if (session) {
|
|
207
215
|
await session.activate();
|
|
208
216
|
}
|
|
209
|
-
} else if (type === "decode" || type === "audioCompose" || type === "encode") {
|
|
210
|
-
await this.setupSharedConnections();
|
|
211
217
|
}
|
|
212
218
|
}
|
|
213
219
|
async renderFrame(timeUs, options) {
|
|
@@ -276,16 +282,26 @@ class Orchestrator {
|
|
|
276
282
|
}
|
|
277
283
|
/**
|
|
278
284
|
* Render a clip completely for L2 cache (bypass ClipSessionManager)
|
|
285
|
+
* Returns a promise that resolves when encoding is complete
|
|
279
286
|
*/
|
|
280
287
|
async renderClipForL2(clipId) {
|
|
281
288
|
const sessionId = `${clipId}#l2`;
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
289
|
+
return new Promise((resolve, reject) => {
|
|
290
|
+
this.createSession(sessionId, {
|
|
291
|
+
forL2Only: true,
|
|
292
|
+
clipId,
|
|
293
|
+
onL2Complete: () => {
|
|
294
|
+
resolve();
|
|
295
|
+
},
|
|
296
|
+
onL2Error: (error) => {
|
|
297
|
+
console.error("[Orchestrator] L2 rendering failed for", clipId, error);
|
|
298
|
+
reject(error);
|
|
299
|
+
}
|
|
300
|
+
}).then((session) => session.activate()).catch((error) => {
|
|
301
|
+
console.error(`[Orchestrator] renderClipForL2 error for ${clipId}:`, error);
|
|
302
|
+
reject(error);
|
|
303
|
+
});
|
|
286
304
|
});
|
|
287
|
-
await session.activate();
|
|
288
|
-
return session;
|
|
289
305
|
}
|
|
290
306
|
/**
|
|
291
307
|
* Create a new session for a clip
|
|
@@ -320,10 +336,12 @@ class Orchestrator {
|
|
|
320
336
|
},
|
|
321
337
|
onEncodedStreamReady: (stream, track) => {
|
|
322
338
|
if (options?.forL2Only) {
|
|
323
|
-
console.log("[Orchestrator] receiving encoded stream for L2", clipId, track);
|
|
324
339
|
this.cacheManager.receiveEncodedChunks(stream, clipId, track, {
|
|
325
340
|
onComplete: () => {
|
|
326
341
|
session.dispose();
|
|
342
|
+
if (track === "video" && options.onL2Complete) {
|
|
343
|
+
options.onL2Complete();
|
|
344
|
+
}
|
|
327
345
|
},
|
|
328
346
|
onError: (error) => {
|
|
329
347
|
console.error(
|
|
@@ -331,6 +349,9 @@ class Orchestrator {
|
|
|
331
349
|
error
|
|
332
350
|
);
|
|
333
351
|
session.dispose();
|
|
352
|
+
if (options.onL2Error) {
|
|
353
|
+
options.onL2Error(error);
|
|
354
|
+
}
|
|
334
355
|
}
|
|
335
356
|
});
|
|
336
357
|
} else {
|
|
@@ -364,8 +385,8 @@ class Orchestrator {
|
|
|
364
385
|
}
|
|
365
386
|
buildWorkerConfigs() {
|
|
366
387
|
const config = this.config;
|
|
367
|
-
const defaultCanvasWidth = config.global?.defaultCanvasWidth ??
|
|
368
|
-
const defaultCanvasHeight = config.global?.defaultCanvasHeight ??
|
|
388
|
+
const defaultCanvasWidth = config.global?.defaultCanvasWidth ?? 720;
|
|
389
|
+
const defaultCanvasHeight = config.global?.defaultCanvasHeight ?? 1280;
|
|
369
390
|
const defaultFps = config.global?.defaultFps ?? 30;
|
|
370
391
|
return {
|
|
371
392
|
videoDemux: {
|
|
@@ -374,10 +395,8 @@ class Orchestrator {
|
|
|
374
395
|
audioDemux: {
|
|
375
396
|
highWaterMark: config.demux?.backpressure?.highWaterMark ?? 10
|
|
376
397
|
},
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
audio: config.decode?.audio
|
|
380
|
-
},
|
|
398
|
+
videoDecode: config.decode?.video,
|
|
399
|
+
audioDecode: config.decode?.audio,
|
|
381
400
|
videoCompose: {
|
|
382
401
|
width: config.compose?.canvas?.width ?? defaultCanvasWidth,
|
|
383
402
|
height: config.compose?.canvas?.height ?? defaultCanvasHeight,
|
|
@@ -390,36 +409,19 @@ class Orchestrator {
|
|
|
390
409
|
ducking: config.compose?.audio?.ducking,
|
|
391
410
|
mixing: config.compose?.audio?.mixing
|
|
392
411
|
},
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
...config.encode?.video
|
|
404
|
-
},
|
|
405
|
-
audio: {
|
|
406
|
-
codec: "mp4a.40.2",
|
|
407
|
-
sampleRate: 48e3,
|
|
408
|
-
numberOfChannels: 2,
|
|
409
|
-
bitrate: config.encode?.audio?.bitrateKbps ? config.encode.audio.bitrateKbps * 1e3 : 128e3,
|
|
410
|
-
...config.encode?.audio
|
|
411
|
-
}
|
|
412
|
+
videoEncode: {
|
|
413
|
+
codec: "avc1.42002A",
|
|
414
|
+
width: config.compose?.canvas?.width || defaultCanvasWidth,
|
|
415
|
+
height: config.compose?.canvas?.height || defaultCanvasHeight,
|
|
416
|
+
bitrate: config.encode?.video?.bitrateKbps ? config.encode.video.bitrateKbps * 1e3 : 12e6,
|
|
417
|
+
framerate: config.encode?.video?.framerate || defaultFps,
|
|
418
|
+
latencyMode: "quality",
|
|
419
|
+
bitrateMode: "variable",
|
|
420
|
+
hardwareAcceleration: "no-preference",
|
|
421
|
+
...config.encode?.video
|
|
412
422
|
}
|
|
413
423
|
};
|
|
414
424
|
}
|
|
415
|
-
async setupSharedConnections() {
|
|
416
|
-
const decodeWorker = await this.workers.get("decode");
|
|
417
|
-
decodeWorker.receiveStream((stream, metadata) => {
|
|
418
|
-
if (metadata?.streamType === "audio") {
|
|
419
|
-
this.audioSession.handleAudioStream(stream, metadata);
|
|
420
|
-
}
|
|
421
|
-
});
|
|
422
|
-
}
|
|
423
425
|
async export(model, options) {
|
|
424
426
|
return this.muxManager.export(model, options);
|
|
425
427
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Orchestrator.js","sources":["../../src/orchestrator/Orchestrator.ts"],"sourcesContent":["import { EventBus } from '../event/EventBus';\nimport { WorkerPool } from '../worker/WorkerPool';\nimport { applyPatch as applyModelPatch } from '../model/patch';\nimport { ResourceLoader } from '../stages/load/ResourceLoader';\nimport { CacheManager } from '../cache/CacheManager';\nimport { ConfigLoader } from '../config/ConfigLoader';\nimport type { IOrchestrator, OrchestratorConfig, RenderFrameOptions } from './types';\nimport { WorkerStatus, WorkerType } from '../worker/types';\nimport { CompositionModel, CompositionPatch, Resource, TimeUs, RcFrame } from '../model';\nimport { MeframeEvent, type EventPayloadMap } from '../event/events';\nimport { CompositionPlanner } from './CompositionPlanner';\nimport { VideoClipSession } from './VideoClipSession';\nimport { ClipSessionManager } from './ClipSessionManager';\nimport { GlobalAudioSession } from '../stages/compose/GlobalAudioSession';\nimport { MuxManager } from '../stages/mux/MuxManager';\nimport { ExportOptions } from '@/types';\n\nexport class Orchestrator implements IOrchestrator {\n workers: WorkerPool;\n eventBus: EventBus<EventPayloadMap>;\n compositionModel: CompositionModel | null = null;\n resourceLoader: ResourceLoader;\n cacheManager: CacheManager;\n planner: CompositionPlanner;\n audioSession: GlobalAudioSession;\n muxManager: MuxManager;\n\n private activeClips = new Set<string>();\n private isInitialized = false;\n private config = ConfigLoader.getInstance().getConfig();\n private clipSessionManager: ClipSessionManager;\n private currentClipId: string | null = null;\n readonly events: Pick<EventBus<EventPayloadMap>, 'on' | 'off' | 'once'>;\n\n constructor(config: OrchestratorConfig) {\n // Use provided eventBus or create a new one\n this.eventBus = config.eventBus || new EventBus<EventPayloadMap>();\n this.events = this.eventBus.asReadonly();\n\n // Initialize config first\n this.config = ConfigLoader.getInstance().getConfig();\n\n const workerConfigs = this.buildWorkerConfigs();\n\n // Initialize WorkerPool with worker path from config\n this.workers = new WorkerPool({\n eventBus: this.eventBus,\n workerConfigs,\n workerPath: config.workerPath,\n workerExtension: config.workerExtension,\n });\n\n this.resourceLoader = new ResourceLoader({\n orchestrator: this as any,\n eventBus: this.eventBus,\n config: {\n maxConcurrent: config.maxWorkers || (this.config.load as any)?.retry?.maxAttempts || 4,\n },\n onStateChange: (resourceId, state) => this.handleResourceStateChange(resourceId, state),\n });\n\n this.planner = new CompositionPlanner();\n\n const cacheConfig = config.cacheConfig || this.config.cache;\n this.cacheManager = new CacheManager(\n {\n l1: {\n maxMemoryMB:\n (cacheConfig as any)?.l1Size || (cacheConfig as any)?.l1?.maxMemoryMB || 1024,\n maxGOPs: (this.config.decode as any)?.video?.maxGOPs || 4,\n },\n l2: {\n maxSizeMB: (cacheConfig as any)?.l2Size || (cacheConfig as any)?.l2?.maxSizeMB || 2048,\n projectId: 'default',\n },\n },\n this.eventBus\n );\n\n this.clipSessionManager = new ClipSessionManager({\n maxConcurrent: 2,\n factory: {\n createSession: (clipId) => this.createSession(clipId),\n },\n model: () => this.compositionModel,\n cacheManager: this.cacheManager,\n });\n\n this.audioSession = new GlobalAudioSession({\n cacheManager: this.cacheManager,\n workers: this.workers,\n resourceLoader: this.resourceLoader,\n eventBus: this.eventBus,\n getModel: () => this.compositionModel,\n buildWorkerConfigs: () => this.buildWorkerConfigs(),\n });\n\n this.muxManager = new MuxManager(\n this.cacheManager,\n this.audioSession,\n this.config.encode.audio as AudioEncoderConfig\n );\n }\n\n get workerStatus(): WorkerStatus {\n const status = this.workers.status;\n const result: WorkerStatus = {} as WorkerStatus;\n\n const workerTypes: WorkerType[] = [\n 'videoDemux',\n 'audioDemux',\n 'decode',\n 'videoCompose',\n 'audioCompose',\n 'encode',\n ];\n\n for (const type of workerTypes) {\n result[type] = status[type] || {\n state: 'idle',\n taskCount: 0,\n };\n }\n\n return result;\n }\n\n async initialize(): Promise<void> {\n if (this.isInitialized) return;\n\n await this.cacheManager.init();\n // Use unified stream pipeline wiring\n await this.setupSharedConnections();\n\n this.isInitialized = true;\n }\n\n // Event methods - forward to eventBus\n on<K extends keyof EventPayloadMap>(\n event: K,\n handler: (payload: EventPayloadMap[K]) => void\n ): void {\n this.eventBus.on(event, handler);\n }\n\n off<K extends keyof EventPayloadMap>(\n event: K,\n handler: (payload: EventPayloadMap[K]) => void\n ): void {\n this.eventBus.off(event, handler);\n }\n\n once<K extends keyof EventPayloadMap>(\n event: K,\n handler: (payload: EventPayloadMap[K]) => void\n ): void {\n this.eventBus.once(event, handler);\n }\n\n async setCompositionModel(model: CompositionModel): Promise<void> {\n this.compositionModel = model;\n this.planner.setModel(model);\n this.currentClipId = null;\n\n this.eventBus.emit(MeframeEvent.ModelSet, model);\n\n this.eventBus.emit(MeframeEvent.CompositionUpdated, {\n trackCount: model.tracks.length,\n clipCount: model.tracks.reduce((acc: number, track: any) => acc + track.clips.length, 0),\n durationUs: model.durationUs,\n });\n\n await this.audioSession.activateAllAudioClips();\n\n this.ensureClipCache(0);\n }\n\n async applyPatch(patch: CompositionPatch): Promise<void> {\n if (!this.compositionModel) {\n throw new Error('No composition model set');\n }\n\n // Apply patch and get affected clip IDs (simplified for 2-Clip strategy)\n const affectedClipIds = applyModelPatch(this.compositionModel, patch);\n const clipUpdates = this.planner.applyPatch(patch, affectedClipIds);\n\n this.eventBus.emit(MeframeEvent.PatchApplied, {\n operations: patch.operations.length,\n affectedClips: Array.from(affectedClipIds),\n });\n\n // Get currently active clips in the 2-Clip window\n const activeClipIds = new Set(\n Array.from(this.clipSessionManager['entries'].keys()).filter((clipId) =>\n this.clipSessionManager.isClipActive(clipId)\n )\n );\n\n // Process clip updates\n for (const update of clipUpdates) {\n if (update.type === 'remove') {\n this.activeClips.delete(update.clipId);\n this.cacheManager.evictClip(update.clipId);\n }\n\n // Notify ClipSessionManager to handle the update\n // This will install new instructions or restart pipeline as needed\n await this.clipSessionManager.handlePlannerUpdate(update.clipId, update);\n\n // Only evict cache for active clips (in current 2-Clip window)\n // Non-active clips will be regenerated when they enter the window\n if (activeClipIds.has(update.clipId) && update.type !== 'remove') {\n this.cacheManager.evictClip(update.clipId);\n }\n }\n }\n\n private handleResourceStateChange(resourceId: string, state: Resource['state']): void {\n if (!this.compositionModel) {\n return;\n }\n\n this.compositionModel.updateResourceState(resourceId, state ?? 'pending');\n\n if (state !== 'ready') {\n return;\n }\n\n const resource = this.compositionModel.getResource(resourceId);\n if (!resource) {\n return;\n }\n\n // Main video/audio resources: data will flow naturally into pipeline\n if (resource.type === 'video' || resource.type === 'audio') {\n return;\n }\n\n // Attachment resources (fonts, images): update instructions for active clips\n const clipIds = this.compositionModel.getClipIdsByResourceId(resourceId);\n for (const clipId of clipIds) {\n // Only update active clips (in 2-Clip window)\n if (!this.clipSessionManager.isClipActive(clipId)) {\n continue;\n }\n\n const clip = this.compositionModel.findClip(clipId);\n if (!clip) {\n continue;\n }\n\n // Rebuild instructions with updated resource status\n const instructions = this.planner.getInstructions(clipId);\n if (!instructions) {\n continue;\n }\n\n // Send updated instructions to worker (no pipeline restart needed)\n const session = this.clipSessionManager.getSession(clipId);\n const visualWorker = session?.visualWorkerHandle;\n if (visualWorker) {\n visualWorker.send('install_instructions', instructions);\n }\n }\n }\n\n async restartWorker(type: WorkerType, clipId?: string): Promise<void> {\n if ((type === 'videoDemux' || type === 'audioDemux' || type === 'videoCompose') && !clipId) {\n throw new Error(`clipId required for restarting ${type} worker`);\n }\n\n this.workers.terminate(type, clipId);\n const worker = await this.workers.get(type, clipId);\n\n this.eventBus.emit(MeframeEvent.WorkerRestarted, {\n type,\n workerId: worker.getWorkerId(),\n reason: 'Manual restart',\n });\n\n if (clipId) {\n const session = this.clipSessionManager.getSession(clipId);\n if (session) {\n await session.activate();\n }\n } else if (type === 'decode' || type === 'audioCompose' || type === 'encode') {\n await this.setupSharedConnections();\n }\n }\n\n async renderFrame(timeUs: TimeUs, options?: RenderFrameOptions): Promise<RcFrame | null> {\n const signal = options?.signal;\n\n if (!this.compositionModel) {\n throw new Error('No composition model set');\n }\n\n const clip = this.compositionModel.getClipsAtTime(timeUs, this.compositionModel.mainTrackId)[0];\n if (!clip) {\n return null;\n }\n\n // Detect clip change and proactively ensure cache for prev/current/next\n if (this.currentClipId !== clip.id) {\n this.currentClipId = clip.id;\n void this.ensureClipCache(timeUs);\n }\n\n const cachedFrame = await this.cacheManager.getFrame(timeUs, clip.id);\n // console.log('>>>>>>>>>>>> renderFrame', timeUs, clip.id, cachedFrame);\n if (cachedFrame) {\n this.eventBus.emit(MeframeEvent.CacheHit, {\n timeUs,\n level: 'L1',\n key: `${clip.id}-${timeUs}`,\n });\n return cachedFrame;\n }\n // Cache miss - also ensure cache (defensive, already called on clip change)\n void this.ensureClipCache(timeUs);\n\n this.eventBus.emit(MeframeEvent.CacheMiss, {\n timeUs,\n level: 'L1',\n key: `${clip.id}-${timeUs}`,\n });\n\n if (signal?.aborted) {\n throw new DOMException('Render aborted', 'AbortError');\n }\n\n // Return null immediately instead of waiting\n // This allows PlaybackController to detect miss and trigger buffering\n return null;\n }\n\n /**\n * Ensure clips are cached using 2-Clip strategy\n * Called by PlaybackController\n */\n async ensureClipCache(timeUs: TimeUs): Promise<void> {\n if (!this.compositionModel) {\n return;\n }\n\n await this.clipSessionManager.ensureClips(timeUs);\n }\n\n /**\n * Wait for clip cache to be ready for playback\n * Returns true if minimum cache is ready, false if timeout\n */\n async waitForClipReady(\n timeUs: TimeUs,\n options?: { minFrameCount?: number; timeoutMs?: number }\n ): Promise<boolean> {\n if (!this.compositionModel) {\n return false;\n }\n\n const clips = this.compositionModel.getClipsAtTime(timeUs, this.compositionModel.mainTrackId);\n if (clips.length === 0) {\n return true;\n }\n\n const currentClip = clips[0];\n if (!currentClip) {\n return true;\n }\n\n return this.cacheManager.waitForClipReady(currentClip.id, {\n minFrameCount: options?.minFrameCount ?? 30,\n timeoutMs: options?.timeoutMs ?? 5_000,\n });\n }\n\n /**\n * Render a clip completely for L2 cache (bypass ClipSessionManager)\n */\n async renderClipForL2(clipId: string): Promise<any> {\n const sessionId = `${clipId}#l2`;\n console.log('[Orchestrator] rendering clip for L2', clipId, sessionId);\n const session = await this.createSession(sessionId, {\n forL2Only: true,\n clipId: clipId,\n });\n await session.activate();\n\n return session;\n }\n\n /**\n * Create a new session for a clip\n */\n private async createSession(\n sessionId: string,\n options?: {\n forL2Only?: boolean;\n clipId?: string;\n }\n ): Promise<VideoClipSession> {\n const clipId = options?.clipId ?? sessionId;\n const clip = this.compositionModel?.findClip(clipId);\n if (!clip) {\n throw new Error(`Clip ${clipId} not found`);\n }\n\n const session = await VideoClipSession.create({\n clipId,\n sessionId,\n planner: this.planner,\n workerPool: this.workers,\n cacheManager: this.cacheManager,\n compositionModel: this.compositionModel!,\n workerConfigs: this.buildWorkerConfigs(),\n callbacks: {\n onComposedStreamReady: (stream, fps) => {\n if (options?.forL2Only) {\n // L2 channel: don't need L1, cancel stream\n stream.cancel();\n } else {\n // Preview channel: fill L1\n this.cacheManager.receiveComposedFrames(stream, {\n clipId: clipId,\n trackId: this.compositionModel!.mainTrackId,\n fps,\n onFrame: () => {},\n });\n }\n },\n onEncodedStreamReady: (stream, track) => {\n if (options?.forL2Only) {\n console.log('[Orchestrator] receiving encoded stream for L2', clipId, track);\n // L2 channel: write to L2 using clipId, notify on complete\n this.cacheManager.receiveEncodedChunks(stream, clipId, track, {\n onComplete: () => {\n session.dispose();\n },\n onError: (error) => {\n console.error(\n `[Orchestrator] L2 encode stream error for ${clipId} ${track}:`,\n error\n );\n session.dispose();\n },\n });\n } else {\n // Preview channel: don't write to L2, cancel stream\n stream.cancel();\n }\n },\n onPipelineReady: async () => {\n const clip = this.compositionModel?.findClip(clipId);\n if (clip?.resourceId) {\n await this.resourceLoader.fetch(clip.resourceId, {\n priority: options?.forL2Only ? 'low' : 'high',\n sessionId: sessionId,\n trackId: clip.trackId,\n });\n }\n },\n },\n });\n\n this.activeClips.add(sessionId);\n return session;\n }\n\n async dispose(): Promise<void> {\n this.resourceLoader.dispose();\n await this.clipSessionManager.dispose();\n await this.cacheManager.clear();\n\n this.currentClipId = null;\n this.activeClips.clear();\n\n this.workers.terminateAll();\n this.compositionModel = null;\n this.eventBus.dispose();\n }\n\n private buildWorkerConfigs(): Record<WorkerType, any> {\n const config = this.config as any;\n const defaultCanvasWidth = config.global?.defaultCanvasWidth ?? 1280;\n const defaultCanvasHeight = config.global?.defaultCanvasHeight ?? 720;\n const defaultFps = config.global?.defaultFps ?? 30;\n return {\n videoDemux: {\n highWaterMark: config.demux?.backpressure?.highWaterMark ?? 10,\n },\n audioDemux: {\n highWaterMark: config.demux?.backpressure?.highWaterMark ?? 10,\n },\n decode: {\n video: config.decode?.video,\n audio: config.decode?.audio,\n },\n videoCompose: {\n width: config.compose?.canvas?.width ?? defaultCanvasWidth,\n height: config.compose?.canvas?.height ?? defaultCanvasHeight,\n fps: config.global?.defaultFps ?? defaultFps,\n backgroundColor: config.compose?.canvas?.backgroundColor ?? '#000000',\n enableSmoothing: config.compose?.visual?.enableSmoothing ?? true,\n enableHardwareAcceleration: config.compose?.visual?.enableHardwareAcceleration ?? true,\n },\n audioCompose: {\n ducking: config.compose?.audio?.ducking,\n mixing: config.compose?.audio?.mixing,\n },\n encode: {\n video: {\n codec: 'avc1.42002A',\n width: config.compose?.canvas?.width || defaultCanvasWidth,\n height: config.compose?.canvas?.height || defaultCanvasHeight,\n bitrate: config.encode?.video?.bitrateKbps\n ? config.encode.video.bitrateKbps * 1000\n : 12_000_000,\n framerate: config.encode?.video?.framerate || defaultFps,\n latencyMode: 'quality',\n bitrateMode: 'variable',\n hardwareAcceleration: 'prefer-hardware',\n ...(config.encode?.video as any),\n },\n audio: {\n codec: 'mp4a.40.2',\n sampleRate: 48000,\n numberOfChannels: 2,\n bitrate: config.encode?.audio?.bitrateKbps\n ? config.encode.audio.bitrateKbps * 1000\n : 128000,\n ...(config.encode?.audio as any),\n },\n },\n };\n }\n\n private async setupSharedConnections(): Promise<void> {\n const decodeWorker = await this.workers.get('decode');\n\n decodeWorker.receiveStream((stream, metadata) => {\n if (metadata?.streamType === 'audio') {\n this.audioSession.handleAudioStream(stream as ReadableStream<AudioData>, metadata);\n }\n });\n }\n\n async export(model: CompositionModel, options: ExportOptions): Promise<Blob> {\n return this.muxManager.export(model, options);\n }\n}\n"],"names":["applyModelPatch","clip"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Orchestrator.js","sources":["../../src/orchestrator/Orchestrator.ts"],"sourcesContent":["import { EventBus } from '../event/EventBus';\nimport { WorkerPool } from '../worker/WorkerPool';\nimport { applyPatch as applyModelPatch } from '../model/patch';\nimport { ResourceLoader } from '../stages/load/ResourceLoader';\nimport { CacheManager } from '../cache/CacheManager';\nimport { ConfigLoader } from '../config/ConfigLoader';\nimport type { IOrchestrator, OrchestratorConfig, RenderFrameOptions } from './types';\nimport { WorkerStatus, WorkerType } from '../worker/types';\nimport { CompositionModel, CompositionPatch, Resource, TimeUs, RcFrame } from '../model';\nimport { MeframeEvent, type EventPayloadMap } from '../event/events';\nimport { CompositionPlanner } from './CompositionPlanner';\nimport { VideoClipSession } from './VideoClipSession';\nimport { ClipSessionManager } from './ClipSessionManager';\nimport { GlobalAudioSession } from '../stages/compose/GlobalAudioSession';\nimport { MuxManager } from '../stages/mux/MuxManager';\nimport { ExportOptions } from '@/types';\n\nexport class Orchestrator implements IOrchestrator {\n workers: WorkerPool;\n eventBus: EventBus<EventPayloadMap>;\n compositionModel: CompositionModel | null = null;\n resourceLoader: ResourceLoader;\n cacheManager: CacheManager;\n planner: CompositionPlanner;\n audioSession: GlobalAudioSession;\n muxManager: MuxManager;\n\n private activeClips = new Set<string>();\n private isInitialized = false;\n private config = ConfigLoader.getInstance().getConfig();\n private clipSessionManager: ClipSessionManager;\n private currentClipId: string | null = null;\n readonly events: Pick<EventBus<EventPayloadMap>, 'on' | 'off' | 'once'>;\n\n constructor(config: OrchestratorConfig) {\n // Use provided eventBus or create a new one\n this.eventBus = config.eventBus || new EventBus<EventPayloadMap>();\n this.events = this.eventBus.asReadonly();\n\n // Initialize config first\n this.config = ConfigLoader.getInstance().getConfig();\n\n const workerConfigs = this.buildWorkerConfigs();\n\n // Initialize WorkerPool with worker path from config\n this.workers = new WorkerPool({\n eventBus: this.eventBus,\n workerConfigs,\n workerPath: config.workerPath,\n workerExtension: config.workerExtension,\n });\n\n this.resourceLoader = new ResourceLoader({\n orchestrator: this as any,\n eventBus: this.eventBus,\n config: {\n maxConcurrent: config.maxWorkers || (this.config.load as any)?.retry?.maxAttempts || 4,\n },\n onStateChange: (resourceId, state) => this.handleResourceStateChange(resourceId, state),\n });\n\n this.planner = new CompositionPlanner();\n\n const cacheConfig = config.cacheConfig || this.config.cache;\n this.cacheManager = new CacheManager(\n {\n l1: {\n maxMemoryMB:\n (cacheConfig as any)?.l1Size || (cacheConfig as any)?.l1?.maxMemoryMB || 1024,\n maxGOPs: (this.config.decode as any)?.video?.maxGOPs || 4,\n },\n l2: {\n maxSizeMB: (cacheConfig as any)?.l2Size || (cacheConfig as any)?.l2?.maxSizeMB || 2048,\n projectId: 'default',\n },\n },\n this.eventBus\n );\n\n this.clipSessionManager = new ClipSessionManager({\n maxConcurrent: 2,\n factory: {\n createSession: (clipId) => this.createSession(clipId),\n },\n model: () => this.compositionModel,\n cacheManager: this.cacheManager,\n });\n\n this.audioSession = new GlobalAudioSession({\n cacheManager: this.cacheManager,\n workers: this.workers,\n resourceLoader: this.resourceLoader,\n eventBus: this.eventBus,\n getModel: () => this.compositionModel,\n buildWorkerConfigs: () => this.buildWorkerConfigs(),\n });\n\n this.muxManager = new MuxManager(\n this.cacheManager,\n this.audioSession,\n this.config.encode.audio as AudioEncoderConfig\n );\n }\n\n get workerStatus(): WorkerStatus {\n const status = this.workers.status;\n const result: WorkerStatus = {} as WorkerStatus;\n\n const workerTypes: WorkerType[] = [\n 'videoDemux',\n 'audioDemux',\n 'videoDecode',\n 'audioDecode',\n 'videoCompose',\n 'audioCompose',\n 'videoEncode',\n ];\n\n for (const type of workerTypes) {\n result[type] = status[type] || {\n state: 'idle',\n taskCount: 0,\n };\n }\n\n return result;\n }\n\n async initialize(): Promise<void> {\n if (this.isInitialized) return;\n\n await this.cacheManager.init();\n\n this.isInitialized = true;\n }\n\n // Event methods - forward to eventBus\n on<K extends keyof EventPayloadMap>(\n event: K,\n handler: (payload: EventPayloadMap[K]) => void\n ): void {\n this.eventBus.on(event, handler);\n }\n\n off<K extends keyof EventPayloadMap>(\n event: K,\n handler: (payload: EventPayloadMap[K]) => void\n ): void {\n this.eventBus.off(event, handler);\n }\n\n once<K extends keyof EventPayloadMap>(\n event: K,\n handler: (payload: EventPayloadMap[K]) => void\n ): void {\n this.eventBus.once(event, handler);\n }\n\n async setCompositionModel(model: CompositionModel): Promise<void> {\n this.compositionModel = model;\n this.planner.setModel(model);\n this.currentClipId = null;\n\n this.eventBus.emit(MeframeEvent.ModelSet, model);\n\n this.eventBus.emit(MeframeEvent.CompositionUpdated, {\n trackCount: model.tracks.length,\n clipCount: model.tracks.reduce((acc: number, track: any) => acc + track.clips.length, 0),\n durationUs: model.durationUs,\n });\n\n await this.audioSession.activateAllAudioClips();\n\n this.ensureClipCache(0);\n }\n\n async applyPatch(patch: CompositionPatch): Promise<void> {\n if (!this.compositionModel) {\n throw new Error('No composition model set');\n }\n\n // Apply patch and get affected clip IDs (simplified for 2-Clip strategy)\n const affectedClipIds = applyModelPatch(this.compositionModel, patch);\n const clipUpdates = this.planner.applyPatch(patch, affectedClipIds);\n\n this.eventBus.emit(MeframeEvent.PatchApplied, {\n operations: patch.operations.length,\n affectedClips: Array.from(affectedClipIds),\n });\n\n // Get currently active clips in the 2-Clip window\n const activeClipIds = new Set(\n Array.from(this.clipSessionManager['entries'].keys()).filter((clipId) =>\n this.clipSessionManager.isClipActive(clipId)\n )\n );\n\n // Process clip updates\n for (const update of clipUpdates) {\n if (update.type === 'remove') {\n this.activeClips.delete(update.clipId);\n this.cacheManager.evictClip(update.clipId);\n }\n\n // Notify ClipSessionManager to handle the update\n // This will install new instructions or restart pipeline as needed\n await this.clipSessionManager.handlePlannerUpdate(update.clipId, update);\n\n // Only evict cache for active clips (in current 2-Clip window)\n // Non-active clips will be regenerated when they enter the window\n if (activeClipIds.has(update.clipId) && update.type !== 'remove') {\n this.cacheManager.evictClip(update.clipId);\n }\n }\n }\n\n private handleResourceStateChange(resourceId: string, state: Resource['state']): void {\n if (!this.compositionModel) {\n return;\n }\n\n this.compositionModel.updateResourceState(resourceId, state ?? 'pending');\n\n if (state !== 'ready') {\n return;\n }\n\n const resource = this.compositionModel.getResource(resourceId);\n if (!resource) {\n return;\n }\n\n // Main video/audio resources: data will flow naturally into pipeline\n if (resource.type === 'video' || resource.type === 'audio') {\n return;\n }\n\n // Attachment resources (fonts, images): update instructions for active clips\n const clipIds = this.compositionModel.getClipIdsByResourceId(resourceId);\n for (const clipId of clipIds) {\n // Only update active clips (in 2-Clip window)\n if (!this.clipSessionManager.isClipActive(clipId)) {\n continue;\n }\n\n const clip = this.compositionModel.findClip(clipId);\n if (!clip) {\n continue;\n }\n\n // Rebuild instructions with updated resource status\n const instructions = this.planner.getInstructions(clipId);\n if (!instructions) {\n continue;\n }\n\n // Send updated instructions to worker (no pipeline restart needed)\n const session = this.clipSessionManager.getSession(clipId);\n const visualWorker = session?.visualWorkerHandle;\n if (visualWorker) {\n visualWorker.send('install_instructions', instructions);\n }\n }\n }\n\n async restartWorker(type: WorkerType, clipId?: string): Promise<void> {\n const clipLocalTypes: WorkerType[] = [\n 'videoDemux',\n 'audioDemux',\n 'videoDecode',\n 'audioDecode',\n 'videoCompose',\n 'videoEncode',\n ];\n\n if (clipLocalTypes.includes(type) && !clipId) {\n throw new Error(`clipId required for restarting ${type} worker`);\n }\n\n this.workers.terminate(type, clipId);\n const worker = await this.workers.get(type, clipId);\n\n this.eventBus.emit(MeframeEvent.WorkerRestarted, {\n type,\n workerId: worker.getWorkerId(),\n reason: 'Manual restart',\n });\n\n if (clipId) {\n const session = this.clipSessionManager.getSession(clipId);\n if (session) {\n await session.activate();\n }\n }\n }\n\n async renderFrame(timeUs: TimeUs, options?: RenderFrameOptions): Promise<RcFrame | null> {\n const signal = options?.signal;\n\n if (!this.compositionModel) {\n throw new Error('No composition model set');\n }\n\n const clip = this.compositionModel.getClipsAtTime(timeUs, this.compositionModel.mainTrackId)[0];\n if (!clip) {\n return null;\n }\n\n // Detect clip change and proactively ensure cache for prev/current/next\n if (this.currentClipId !== clip.id) {\n this.currentClipId = clip.id;\n void this.ensureClipCache(timeUs);\n }\n\n const cachedFrame = await this.cacheManager.getFrame(timeUs, clip.id);\n // console.log('>>>>>>>>>>>> renderFrame', timeUs, clip.id, cachedFrame);\n if (cachedFrame) {\n this.eventBus.emit(MeframeEvent.CacheHit, {\n timeUs,\n level: 'L1',\n key: `${clip.id}-${timeUs}`,\n });\n return cachedFrame;\n }\n // Cache miss - also ensure cache (defensive, already called on clip change)\n void this.ensureClipCache(timeUs);\n\n this.eventBus.emit(MeframeEvent.CacheMiss, {\n timeUs,\n level: 'L1',\n key: `${clip.id}-${timeUs}`,\n });\n\n if (signal?.aborted) {\n throw new DOMException('Render aborted', 'AbortError');\n }\n\n // Return null immediately instead of waiting\n // This allows PlaybackController to detect miss and trigger buffering\n return null;\n }\n\n /**\n * Ensure clips are cached using 2-Clip strategy\n * Called by PlaybackController\n */\n async ensureClipCache(timeUs: TimeUs): Promise<void> {\n if (!this.compositionModel) {\n return;\n }\n\n await this.clipSessionManager.ensureClips(timeUs);\n }\n\n /**\n * Wait for clip cache to be ready for playback\n * Returns true if minimum cache is ready, false if timeout\n */\n async waitForClipReady(\n timeUs: TimeUs,\n options?: { minFrameCount?: number; timeoutMs?: number }\n ): Promise<boolean> {\n if (!this.compositionModel) {\n return false;\n }\n\n const clips = this.compositionModel.getClipsAtTime(timeUs, this.compositionModel.mainTrackId);\n if (clips.length === 0) {\n return true;\n }\n\n const currentClip = clips[0];\n if (!currentClip) {\n return true;\n }\n\n return this.cacheManager.waitForClipReady(currentClip.id, {\n minFrameCount: options?.minFrameCount ?? 30,\n timeoutMs: options?.timeoutMs ?? 5_000,\n });\n }\n\n /**\n * Render a clip completely for L2 cache (bypass ClipSessionManager)\n * Returns a promise that resolves when encoding is complete\n */\n async renderClipForL2(clipId: string): Promise<void> {\n const sessionId = `${clipId}#l2`;\n\n return new Promise<void>((resolve, reject) => {\n this.createSession(sessionId, {\n forL2Only: true,\n clipId: clipId,\n onL2Complete: () => {\n resolve();\n },\n onL2Error: (error) => {\n console.error('[Orchestrator] L2 rendering failed for', clipId, error);\n reject(error);\n },\n })\n .then((session) => session.activate())\n .catch((error) => {\n console.error(`[Orchestrator] renderClipForL2 error for ${clipId}:`, error);\n reject(error);\n });\n });\n }\n\n /**\n * Create a new session for a clip\n */\n private async createSession(\n sessionId: string,\n options?: {\n forL2Only?: boolean;\n clipId?: string;\n onL2Complete?: () => void;\n onL2Error?: (error: Error) => void;\n }\n ): Promise<VideoClipSession> {\n const clipId = options?.clipId ?? sessionId;\n const clip = this.compositionModel?.findClip(clipId);\n if (!clip) {\n throw new Error(`Clip ${clipId} not found`);\n }\n\n const session = await VideoClipSession.create({\n clipId,\n sessionId,\n planner: this.planner,\n workerPool: this.workers,\n cacheManager: this.cacheManager,\n compositionModel: this.compositionModel!,\n workerConfigs: this.buildWorkerConfigs(),\n callbacks: {\n onComposedStreamReady: (stream, fps) => {\n if (options?.forL2Only) {\n // L2 channel: don't need L1, cancel stream\n stream.cancel();\n } else {\n // Preview channel: fill L1\n this.cacheManager.receiveComposedFrames(stream, {\n clipId: clipId,\n trackId: this.compositionModel!.mainTrackId,\n fps,\n onFrame: () => {},\n });\n }\n },\n onEncodedStreamReady: (stream, track) => {\n if (options?.forL2Only) {\n // L2 channel: write to L2 using clipId, notify on complete\n this.cacheManager.receiveEncodedChunks(stream, clipId, track, {\n onComplete: () => {\n session.dispose();\n // Only notify completion for video track (audio is optional)\n if (track === 'video' && options.onL2Complete) {\n options.onL2Complete();\n }\n },\n onError: (error) => {\n console.error(\n `[Orchestrator] L2 encode stream error for ${clipId} ${track}:`,\n error\n );\n session.dispose();\n if (options.onL2Error) {\n options.onL2Error(error);\n }\n },\n });\n } else {\n // Preview channel: don't write to L2, cancel stream\n stream.cancel();\n }\n },\n onPipelineReady: async () => {\n const clip = this.compositionModel?.findClip(clipId);\n if (clip?.resourceId) {\n await this.resourceLoader.fetch(clip.resourceId, {\n priority: options?.forL2Only ? 'low' : 'high',\n sessionId: sessionId,\n trackId: clip.trackId,\n });\n }\n },\n },\n });\n\n this.activeClips.add(sessionId);\n return session;\n }\n\n async dispose(): Promise<void> {\n this.resourceLoader.dispose();\n await this.clipSessionManager.dispose();\n await this.cacheManager.clear();\n\n this.currentClipId = null;\n this.activeClips.clear();\n\n this.workers.terminateAll();\n this.compositionModel = null;\n this.eventBus.dispose();\n }\n\n private buildWorkerConfigs(): Record<WorkerType, any> {\n const config = this.config as any;\n const defaultCanvasWidth = config.global?.defaultCanvasWidth ?? 720;\n const defaultCanvasHeight = config.global?.defaultCanvasHeight ?? 1280;\n const defaultFps = config.global?.defaultFps ?? 30;\n return {\n videoDemux: {\n highWaterMark: config.demux?.backpressure?.highWaterMark ?? 10,\n },\n audioDemux: {\n highWaterMark: config.demux?.backpressure?.highWaterMark ?? 10,\n },\n videoDecode: config.decode?.video,\n audioDecode: config.decode?.audio,\n videoCompose: {\n width: config.compose?.canvas?.width ?? defaultCanvasWidth,\n height: config.compose?.canvas?.height ?? defaultCanvasHeight,\n fps: config.global?.defaultFps ?? defaultFps,\n backgroundColor: config.compose?.canvas?.backgroundColor ?? '#000000',\n enableSmoothing: config.compose?.visual?.enableSmoothing ?? true,\n enableHardwareAcceleration: config.compose?.visual?.enableHardwareAcceleration ?? true,\n },\n audioCompose: {\n ducking: config.compose?.audio?.ducking,\n mixing: config.compose?.audio?.mixing,\n },\n videoEncode: {\n codec: 'avc1.42002A',\n width: config.compose?.canvas?.width || defaultCanvasWidth,\n height: config.compose?.canvas?.height || defaultCanvasHeight,\n bitrate: config.encode?.video?.bitrateKbps\n ? config.encode.video.bitrateKbps * 1000\n : 12_000_000,\n framerate: config.encode?.video?.framerate || defaultFps,\n latencyMode: 'quality',\n bitrateMode: 'variable',\n hardwareAcceleration: 'no-preference',\n ...(config.encode?.video as any),\n },\n };\n }\n\n async export(model: CompositionModel, options: ExportOptions): Promise<Blob> {\n return this.muxManager.export(model, options);\n }\n}\n"],"names":["applyModelPatch","clip"],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ interface VideoClipSessionConfig {
|
|
|
28
28
|
export declare class VideoClipSession {
|
|
29
29
|
private readonly clipId;
|
|
30
30
|
private readonly sessionId;
|
|
31
|
+
private readonly forL2Only;
|
|
31
32
|
private readonly planner;
|
|
32
33
|
private readonly workerPool;
|
|
33
34
|
private readonly cacheManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoClipSession.d.ts","sourceRoot":"","sources":["../../src/orchestrator/VideoClipSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAQ,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,UAAU,yBAAyB;IACjC,qBAAqB,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7E,oBAAoB,CAClB,MAAM,EAAE,cAAc,CAAC;QAAE,KAAK,EAAE,iBAAiB,CAAC;QAAC,QAAQ,EAAE,yBAAyB,CAAA;KAAE,CAAC,EACzF,KAAK,EAAE,OAAO,GAAG,OAAO,GACvB,IAAI,CAAC;IACR,gBAAgB,CAAC,IAAI,IAAI,CAAC;IAC1B,eAAe,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED,UAAU,sBAAsB;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACvC,SAAS,EAAE,yBAAyB,CAAC;CACtC;AAQD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IAEtD,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,qBAAqB,CAA+B;IAC5D,OAAO,CAAC,qBAAqB,CAA+B;IAC5D,OAAO,CAAC,oBAAoB,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;WAEd,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI9E,OAAO;
|
|
1
|
+
{"version":3,"file":"VideoClipSession.d.ts","sourceRoot":"","sources":["../../src/orchestrator/VideoClipSession.ts"],"names":[],"mappings":"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"}
|