@meframe/core 0.0.31 → 0.0.33

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 (72) hide show
  1. package/dist/Meframe.d.ts +2 -2
  2. package/dist/Meframe.d.ts.map +1 -1
  3. package/dist/Meframe.js +3 -2
  4. package/dist/Meframe.js.map +1 -1
  5. package/dist/cache/CacheManager.d.ts +12 -17
  6. package/dist/cache/CacheManager.d.ts.map +1 -1
  7. package/dist/cache/CacheManager.js +18 -280
  8. package/dist/cache/CacheManager.js.map +1 -1
  9. package/dist/cache/l1/AudioL1Cache.d.ts +36 -19
  10. package/dist/cache/l1/AudioL1Cache.d.ts.map +1 -1
  11. package/dist/cache/l1/AudioL1Cache.js +182 -282
  12. package/dist/cache/l1/AudioL1Cache.js.map +1 -1
  13. package/dist/controllers/PlaybackController.d.ts +5 -3
  14. package/dist/controllers/PlaybackController.d.ts.map +1 -1
  15. package/dist/controllers/PlaybackController.js +58 -16
  16. package/dist/controllers/PlaybackController.js.map +1 -1
  17. package/dist/event/events.d.ts +1 -1
  18. package/dist/event/events.d.ts.map +1 -1
  19. package/dist/event/events.js.map +1 -1
  20. package/dist/model/CompositionModel.d.ts +8 -0
  21. package/dist/model/CompositionModel.d.ts.map +1 -1
  22. package/dist/model/CompositionModel.js +18 -0
  23. package/dist/model/CompositionModel.js.map +1 -1
  24. package/dist/model/types.d.ts +0 -4
  25. package/dist/model/types.d.ts.map +1 -1
  26. package/dist/model/types.js.map +1 -1
  27. package/dist/orchestrator/ExportScheduler.d.ts +10 -0
  28. package/dist/orchestrator/ExportScheduler.d.ts.map +1 -1
  29. package/dist/orchestrator/ExportScheduler.js +66 -83
  30. package/dist/orchestrator/ExportScheduler.js.map +1 -1
  31. package/dist/orchestrator/GlobalAudioSession.d.ts +35 -28
  32. package/dist/orchestrator/GlobalAudioSession.d.ts.map +1 -1
  33. package/dist/orchestrator/GlobalAudioSession.js +213 -422
  34. package/dist/orchestrator/GlobalAudioSession.js.map +1 -1
  35. package/dist/orchestrator/OnDemandVideoSession.d.ts +3 -3
  36. package/dist/orchestrator/OnDemandVideoSession.d.ts.map +1 -1
  37. package/dist/orchestrator/OnDemandVideoSession.js +4 -4
  38. package/dist/orchestrator/OnDemandVideoSession.js.map +1 -1
  39. package/dist/orchestrator/Orchestrator.d.ts +11 -4
  40. package/dist/orchestrator/Orchestrator.d.ts.map +1 -1
  41. package/dist/orchestrator/Orchestrator.js +75 -68
  42. package/dist/orchestrator/Orchestrator.js.map +1 -1
  43. package/dist/orchestrator/VideoClipSession.d.ts +0 -2
  44. package/dist/orchestrator/VideoClipSession.d.ts.map +1 -1
  45. package/dist/orchestrator/VideoClipSession.js +0 -49
  46. package/dist/orchestrator/VideoClipSession.js.map +1 -1
  47. package/dist/stages/compose/OfflineAudioMixer.d.ts.map +1 -1
  48. package/dist/stages/compose/OfflineAudioMixer.js +13 -18
  49. package/dist/stages/compose/OfflineAudioMixer.js.map +1 -1
  50. package/dist/stages/decode/AudioChunkDecoder.js +169 -0
  51. package/dist/stages/decode/AudioChunkDecoder.js.map +1 -0
  52. package/dist/stages/demux/MP3FrameParser.js +186 -0
  53. package/dist/stages/demux/MP3FrameParser.js.map +1 -0
  54. package/dist/stages/load/ResourceLoader.d.ts +49 -30
  55. package/dist/stages/load/ResourceLoader.d.ts.map +1 -1
  56. package/dist/stages/load/ResourceLoader.js +255 -189
  57. package/dist/stages/load/ResourceLoader.js.map +1 -1
  58. package/dist/stages/load/TaskManager.d.ts +4 -0
  59. package/dist/stages/load/TaskManager.d.ts.map +1 -1
  60. package/dist/stages/load/TaskManager.js +11 -0
  61. package/dist/stages/load/TaskManager.js.map +1 -1
  62. package/dist/stages/load/types.d.ts +1 -0
  63. package/dist/stages/load/types.d.ts.map +1 -1
  64. package/dist/utils/audio-data.d.ts +16 -0
  65. package/dist/utils/audio-data.d.ts.map +1 -0
  66. package/dist/utils/audio-data.js +111 -0
  67. package/dist/utils/audio-data.js.map +1 -0
  68. package/package.json +1 -1
  69. package/dist/cache/resource/ImageBitmapCache.d.ts +0 -65
  70. package/dist/cache/resource/ImageBitmapCache.d.ts.map +0 -1
  71. package/dist/cache/resource/ImageBitmapCache.js +0 -101
  72. package/dist/cache/resource/ImageBitmapCache.js.map +0 -1
@@ -22,29 +22,37 @@ interface AudioSessionDeps {
22
22
  export declare class GlobalAudioSession {
23
23
  private mixer;
24
24
  private activeClips;
25
- private streamEndedClips;
26
25
  private deps;
27
26
  private model;
28
27
  private audioContext;
29
- private audioSources;
30
- private audioGainNodes;
31
28
  private volume;
32
29
  private playbackRate;
33
30
  private isPlaying;
34
- private currentPlaybackTimeUs;
35
- private ensuringClips;
31
+ private nextScheduleTime;
32
+ private nextContentTimeUs;
33
+ private scheduledSources;
34
+ private readonly LOOKAHEAD_TIME;
35
+ private readonly CHUNK_DURATION;
36
36
  constructor(deps: AudioSessionDeps);
37
37
  setModel(model: CompositionModel): void;
38
38
  onAudioData(message: AudioDataMessage): void;
39
- ensureAudioForTime(timeUs: TimeUs): Promise<void>;
39
+ ensureAudioForTime(timeUs: TimeUs, options?: {
40
+ immediate?: boolean;
41
+ }): Promise<void>;
40
42
  activateAllAudioClips(): Promise<void>;
41
43
  deactivateClip(clipId: string): Promise<void>;
42
- restartPlayingClip(clipId: string, currentTimeUs?: TimeUs): void;
43
- private stopClipAudioSources;
44
- handleAudioStream(stream: ReadableStream<AudioData>, metadata: Record<string, any>): void;
45
44
  startPlayback(timeUs: TimeUs, audioContext: AudioContext): Promise<void>;
46
45
  stopPlayback(): void;
47
- updateTime(timeUs: TimeUs): void;
46
+ updateTime(_timeUs: TimeUs): void;
47
+ /**
48
+ * Schedule audio chunks ahead of playback cursor
49
+ * Uses OfflineAudioMixer for proper mixing, then plays the result
50
+ */
51
+ scheduleAudio(currentTimelineUs: TimeUs, audioContext: AudioContext): Promise<void>;
52
+ /**
53
+ * Reset playback states (called on seek)
54
+ */
55
+ resetPlaybackStates(): void;
48
56
  setVolume(volume: number): void;
49
57
  setPlaybackRate(rate: number): void;
50
58
  reset(): void;
@@ -52,40 +60,39 @@ export declare class GlobalAudioSession {
52
60
  * Mix and encode audio for a specific segment (used by ExportScheduler)
53
61
  */
54
62
  mixAndEncodeSegment(startUs: TimeUs, endUs: TimeUs, onChunk: (chunk: EncodedAudioChunk, metadata?: EncodedAudioChunkMetadata) => void): Promise<void>;
63
+ /**
64
+ * Ensure audio clips in time range are decoded (for export)
65
+ * Decodes from AudioSampleCache (replaces Worker pipeline)
66
+ */
67
+ private ensureAudioForSegment;
55
68
  private exportEncoder;
56
69
  private exportEncoderStream;
57
70
  private exportEncoderWriter;
58
71
  private startExportEncoderReader;
59
72
  finalizeExportAudio(): Promise<void>;
60
- /**
61
- * Create export audio stream
62
- */
63
- createExportAudioStream(): Promise<ReadableStream<AudioData> | null>;
64
- private waitForAudioClipsReady;
65
- private waitForClipPCM;
66
- private startAllActiveClips;
67
- private checkAndStartNewClips;
68
- private startClipPlayback;
69
73
  private stopAllAudioSources;
70
- private getActiveAudioClips;
71
74
  /**
72
- * Ensure PCM for a clip is available
73
- * Priority: AudioSampleCache (Resource) > L2 > None
75
+ * Ensure audio window for a clip (aligned with video architecture)
76
+ *
77
+ * Note: Unlike video getFrame(), this method doesn't need a 'preheat' parameter
78
+ * Why: Audio cache check is window-level (range query) via hasWindowPCM()
79
+ * It verifies the entire window has ≥80% data, not just a single point
80
+ * This naturally prevents premature return during preheating
74
81
  */
75
- ensureClipAudio(clipId: string): Promise<void>;
82
+ ensureAudioWindow(clipId: string, startUs: TimeUs, endUs: TimeUs): Promise<void>;
76
83
  /**
77
- * Ensure PCM from AudioSampleCache (Resource-level)
78
- * Returns true if successful
84
+ * Decode audio window for a clip (aligned with video architecture)
85
+ * Simple strategy: decode entire window range, cache handles duplicates
79
86
  */
80
- private ensureClipAudioFromResource;
87
+ private decodeAudioWindow;
81
88
  /**
82
89
  * Decode audio samples to PCM and cache
90
+ * Uses AudioChunkDecoder for consistency with project architecture
91
+ * Resamples to AudioContext sample rate if needed for better quality
83
92
  */
84
93
  private decodeAudioSamples;
85
- private pcmToAudioBuffer;
86
94
  private audioBufferToAudioData;
87
95
  private interleavePlanarData;
88
- private setupAudioPipeline;
89
96
  }
90
97
  export {};
91
98
  //# sourceMappingURL=GlobalAudioSession.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalAudioSession.d.ts","sourceRoot":"","sources":["../../src/orchestrator/GlobalAudioSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GlobalAudioSession.d.ts","sourceRoot":"","sources":["../../src/orchestrator/GlobalAudioSession.ts"],"names":[],"mappings":"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"}