@meframe/core 0.0.1

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 (352) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/LICENSE +22 -0
  3. package/README.md +396 -0
  4. package/dist/Meframe.d.ts +82 -0
  5. package/dist/Meframe.d.ts.map +1 -0
  6. package/dist/Meframe.js +290 -0
  7. package/dist/Meframe.js.map +1 -0
  8. package/dist/_virtual/mp4box.all.js +5 -0
  9. package/dist/_virtual/mp4box.all.js.map +1 -0
  10. package/dist/cache/BatchWriter.d.ts +25 -0
  11. package/dist/cache/BatchWriter.d.ts.map +1 -0
  12. package/dist/cache/CacheManager.d.ts +115 -0
  13. package/dist/cache/CacheManager.d.ts.map +1 -0
  14. package/dist/cache/CacheManager.js +388 -0
  15. package/dist/cache/CacheManager.js.map +1 -0
  16. package/dist/cache/CacheStatsDecorator.d.ts +27 -0
  17. package/dist/cache/CacheStatsDecorator.d.ts.map +1 -0
  18. package/dist/cache/L2Cache.d.ts +39 -0
  19. package/dist/cache/L2Cache.d.ts.map +1 -0
  20. package/dist/cache/L2Cache.js +282 -0
  21. package/dist/cache/L2Cache.js.map +1 -0
  22. package/dist/cache/index.d.ts +7 -0
  23. package/dist/cache/index.d.ts.map +1 -0
  24. package/dist/cache/l1/AudioL1Cache.d.ts +30 -0
  25. package/dist/cache/l1/AudioL1Cache.d.ts.map +1 -0
  26. package/dist/cache/l1/AudioL1Cache.js +306 -0
  27. package/dist/cache/l1/AudioL1Cache.js.map +1 -0
  28. package/dist/cache/l1/MixedAudioL1Cache.d.ts +13 -0
  29. package/dist/cache/l1/MixedAudioL1Cache.d.ts.map +1 -0
  30. package/dist/cache/l1/MixedAudioL1Cache.js +52 -0
  31. package/dist/cache/l1/MixedAudioL1Cache.js.map +1 -0
  32. package/dist/cache/l1/VideoL1Cache.d.ts +69 -0
  33. package/dist/cache/l1/VideoL1Cache.d.ts.map +1 -0
  34. package/dist/cache/l1/VideoL1Cache.js +318 -0
  35. package/dist/cache/l1/VideoL1Cache.js.map +1 -0
  36. package/dist/cache/l1/gop-utils.d.ts +10 -0
  37. package/dist/cache/l1/gop-utils.d.ts.map +1 -0
  38. package/dist/cache/l1/gop-utils.js +78 -0
  39. package/dist/cache/l1/gop-utils.js.map +1 -0
  40. package/dist/cache/l1/index.d.ts +4 -0
  41. package/dist/cache/l1/index.d.ts.map +1 -0
  42. package/dist/cache/l1/types.d.ts +17 -0
  43. package/dist/cache/l1/types.d.ts.map +1 -0
  44. package/dist/cache/types.d.ts +93 -0
  45. package/dist/cache/types.d.ts.map +1 -0
  46. package/dist/config/ConfigLoader.d.ts +69 -0
  47. package/dist/config/ConfigLoader.d.ts.map +1 -0
  48. package/dist/config/ConfigLoader.js +133 -0
  49. package/dist/config/ConfigLoader.js.map +1 -0
  50. package/dist/config/defaults.d.ts +125 -0
  51. package/dist/config/defaults.d.ts.map +1 -0
  52. package/dist/config/defaults.js +191 -0
  53. package/dist/config/defaults.js.map +1 -0
  54. package/dist/config/index.d.ts +6 -0
  55. package/dist/config/index.d.ts.map +1 -0
  56. package/dist/config/presets.d.ts +32 -0
  57. package/dist/config/presets.d.ts.map +1 -0
  58. package/dist/config/presets.js +11 -0
  59. package/dist/config/presets.js.map +1 -0
  60. package/dist/config/types.d.ts +199 -0
  61. package/dist/config/types.d.ts.map +1 -0
  62. package/dist/config/validation.d.ts +19 -0
  63. package/dist/config/validation.d.ts.map +1 -0
  64. package/dist/config/validation.js +232 -0
  65. package/dist/config/validation.js.map +1 -0
  66. package/dist/controllers/PlaybackController.d.ts +55 -0
  67. package/dist/controllers/PlaybackController.d.ts.map +1 -0
  68. package/dist/controllers/PlaybackController.js +369 -0
  69. package/dist/controllers/PlaybackController.js.map +1 -0
  70. package/dist/controllers/PreRenderService.d.ts +34 -0
  71. package/dist/controllers/PreRenderService.d.ts.map +1 -0
  72. package/dist/controllers/PreRenderService.js +83 -0
  73. package/dist/controllers/PreRenderService.js.map +1 -0
  74. package/dist/controllers/PreRenderTaskQueue.d.ts +21 -0
  75. package/dist/controllers/PreRenderTaskQueue.d.ts.map +1 -0
  76. package/dist/controllers/PreviewHandle.d.ts +23 -0
  77. package/dist/controllers/PreviewHandle.d.ts.map +1 -0
  78. package/dist/controllers/PreviewHandle.js +39 -0
  79. package/dist/controllers/PreviewHandle.js.map +1 -0
  80. package/dist/controllers/index.d.ts +8 -0
  81. package/dist/controllers/index.d.ts.map +1 -0
  82. package/dist/controllers/types.d.ts +102 -0
  83. package/dist/controllers/types.d.ts.map +1 -0
  84. package/dist/event/EventBus.d.ts +42 -0
  85. package/dist/event/EventBus.d.ts.map +1 -0
  86. package/dist/event/EventBus.js +94 -0
  87. package/dist/event/EventBus.js.map +1 -0
  88. package/dist/event/events.d.ts +371 -0
  89. package/dist/event/events.d.ts.map +1 -0
  90. package/dist/event/events.js +71 -0
  91. package/dist/event/events.js.map +1 -0
  92. package/dist/event/index.d.ts +4 -0
  93. package/dist/event/index.d.ts.map +1 -0
  94. package/dist/index.d.ts +14 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +15 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/model/CompositionModel.d.ts +48 -0
  99. package/dist/model/CompositionModel.d.ts.map +1 -0
  100. package/dist/model/CompositionModel.js +197 -0
  101. package/dist/model/CompositionModel.js.map +1 -0
  102. package/dist/model/RcFrame.d.ts +34 -0
  103. package/dist/model/RcFrame.d.ts.map +1 -0
  104. package/dist/model/RcFrame.js +97 -0
  105. package/dist/model/RcFrame.js.map +1 -0
  106. package/dist/model/dirty-range.d.ts +5 -0
  107. package/dist/model/dirty-range.d.ts.map +1 -0
  108. package/dist/model/dirty-range.js +220 -0
  109. package/dist/model/dirty-range.js.map +1 -0
  110. package/dist/model/index.d.ts +7 -0
  111. package/dist/model/index.d.ts.map +1 -0
  112. package/dist/model/patch.d.ts +5 -0
  113. package/dist/model/patch.d.ts.map +1 -0
  114. package/dist/model/patch.js +250 -0
  115. package/dist/model/patch.js.map +1 -0
  116. package/dist/model/types.d.ts +135 -0
  117. package/dist/model/types.d.ts.map +1 -0
  118. package/dist/model/types.js +5 -0
  119. package/dist/model/types.js.map +1 -0
  120. package/dist/model/validation.d.ts +15 -0
  121. package/dist/model/validation.d.ts.map +1 -0
  122. package/dist/model/validation.js +74 -0
  123. package/dist/model/validation.js.map +1 -0
  124. package/dist/node_modules/.pnpm/mp4box@0.5.4/node_modules/mp4box/dist/mp4box.all.js +7046 -0
  125. package/dist/node_modules/.pnpm/mp4box@0.5.4/node_modules/mp4box/dist/mp4box.all.js.map +1 -0
  126. package/dist/orchestrator/ClipSessionManager.d.ts +75 -0
  127. package/dist/orchestrator/ClipSessionManager.d.ts.map +1 -0
  128. package/dist/orchestrator/ClipSessionManager.js +160 -0
  129. package/dist/orchestrator/ClipSessionManager.js.map +1 -0
  130. package/dist/orchestrator/CompositionPlanner.d.ts +55 -0
  131. package/dist/orchestrator/CompositionPlanner.d.ts.map +1 -0
  132. package/dist/orchestrator/CompositionPlanner.js +411 -0
  133. package/dist/orchestrator/CompositionPlanner.js.map +1 -0
  134. package/dist/orchestrator/Orchestrator.d.ts +59 -0
  135. package/dist/orchestrator/Orchestrator.d.ts.map +1 -0
  136. package/dist/orchestrator/Orchestrator.js +390 -0
  137. package/dist/orchestrator/Orchestrator.js.map +1 -0
  138. package/dist/orchestrator/VideoClipSession.d.ts +64 -0
  139. package/dist/orchestrator/VideoClipSession.d.ts.map +1 -0
  140. package/dist/orchestrator/VideoClipSession.js +309 -0
  141. package/dist/orchestrator/VideoClipSession.js.map +1 -0
  142. package/dist/orchestrator/index.d.ts +5 -0
  143. package/dist/orchestrator/index.d.ts.map +1 -0
  144. package/dist/orchestrator/types.d.ts +64 -0
  145. package/dist/orchestrator/types.d.ts.map +1 -0
  146. package/dist/plugins/BackpressureMonitor.d.ts +33 -0
  147. package/dist/plugins/BackpressureMonitor.d.ts.map +1 -0
  148. package/dist/plugins/BackpressureMonitor.js +62 -0
  149. package/dist/plugins/BackpressureMonitor.js.map +1 -0
  150. package/dist/plugins/PluginManager.d.ts +37 -0
  151. package/dist/plugins/PluginManager.d.ts.map +1 -0
  152. package/dist/plugins/PluginManager.js +66 -0
  153. package/dist/plugins/PluginManager.js.map +1 -0
  154. package/dist/plugins/types.d.ts +60 -0
  155. package/dist/plugins/types.d.ts.map +1 -0
  156. package/dist/stages/compose/AudioDucker.d.ts +59 -0
  157. package/dist/stages/compose/AudioDucker.d.ts.map +1 -0
  158. package/dist/stages/compose/AudioDucker.js +161 -0
  159. package/dist/stages/compose/AudioDucker.js.map +1 -0
  160. package/dist/stages/compose/AudioMixer.d.ts +29 -0
  161. package/dist/stages/compose/AudioMixer.d.ts.map +1 -0
  162. package/dist/stages/compose/AudioMixer.js +373 -0
  163. package/dist/stages/compose/AudioMixer.js.map +1 -0
  164. package/dist/stages/compose/FilterProcessor.d.ts +41 -0
  165. package/dist/stages/compose/FilterProcessor.d.ts.map +1 -0
  166. package/dist/stages/compose/FilterProcessor.js +226 -0
  167. package/dist/stages/compose/FilterProcessor.js.map +1 -0
  168. package/dist/stages/compose/GlobalAudioSession.d.ts +38 -0
  169. package/dist/stages/compose/GlobalAudioSession.d.ts.map +1 -0
  170. package/dist/stages/compose/GlobalAudioSession.js +122 -0
  171. package/dist/stages/compose/GlobalAudioSession.js.map +1 -0
  172. package/dist/stages/compose/LayerRenderer.d.ts +30 -0
  173. package/dist/stages/compose/LayerRenderer.d.ts.map +1 -0
  174. package/dist/stages/compose/LayerRenderer.js +215 -0
  175. package/dist/stages/compose/LayerRenderer.js.map +1 -0
  176. package/dist/stages/compose/OfflineAudioMixer.d.ts +14 -0
  177. package/dist/stages/compose/OfflineAudioMixer.d.ts.map +1 -0
  178. package/dist/stages/compose/OfflineAudioMixer.js +68 -0
  179. package/dist/stages/compose/OfflineAudioMixer.js.map +1 -0
  180. package/dist/stages/compose/TransitionProcessor.d.ts +30 -0
  181. package/dist/stages/compose/TransitionProcessor.d.ts.map +1 -0
  182. package/dist/stages/compose/TransitionProcessor.js +189 -0
  183. package/dist/stages/compose/TransitionProcessor.js.map +1 -0
  184. package/dist/stages/compose/VideoComposer.d.ts +30 -0
  185. package/dist/stages/compose/VideoComposer.d.ts.map +1 -0
  186. package/dist/stages/compose/VideoComposer.js +186 -0
  187. package/dist/stages/compose/VideoComposer.js.map +1 -0
  188. package/dist/stages/compose/audio-compose.worker.d.ts +79 -0
  189. package/dist/stages/compose/audio-compose.worker.d.ts.map +1 -0
  190. package/dist/stages/compose/audio-compose.worker.js +541 -0
  191. package/dist/stages/compose/audio-compose.worker.js.map +1 -0
  192. package/dist/stages/compose/instructions.d.ts +95 -0
  193. package/dist/stages/compose/instructions.d.ts.map +1 -0
  194. package/dist/stages/compose/types.d.ts +245 -0
  195. package/dist/stages/compose/types.d.ts.map +1 -0
  196. package/dist/stages/compose/video-compose.worker.d.ts +60 -0
  197. package/dist/stages/compose/video-compose.worker.d.ts.map +1 -0
  198. package/dist/stages/compose/video-compose.worker.js +369 -0
  199. package/dist/stages/compose/video-compose.worker.js.map +1 -0
  200. package/dist/stages/decode/AudioChunkDecoder.d.ts +41 -0
  201. package/dist/stages/decode/AudioChunkDecoder.d.ts.map +1 -0
  202. package/dist/stages/decode/AudioChunkDecoder.js +83 -0
  203. package/dist/stages/decode/AudioChunkDecoder.js.map +1 -0
  204. package/dist/stages/decode/BaseDecoder.d.ts +35 -0
  205. package/dist/stages/decode/BaseDecoder.d.ts.map +1 -0
  206. package/dist/stages/decode/BaseDecoder.js +130 -0
  207. package/dist/stages/decode/BaseDecoder.js.map +1 -0
  208. package/dist/stages/decode/VideoChunkDecoder.d.ts +54 -0
  209. package/dist/stages/decode/VideoChunkDecoder.d.ts.map +1 -0
  210. package/dist/stages/decode/VideoChunkDecoder.js +209 -0
  211. package/dist/stages/decode/VideoChunkDecoder.js.map +1 -0
  212. package/dist/stages/decode/decode.worker.d.ts +70 -0
  213. package/dist/stages/decode/decode.worker.d.ts.map +1 -0
  214. package/dist/stages/decode/decode.worker.js +436 -0
  215. package/dist/stages/decode/decode.worker.js.map +1 -0
  216. package/dist/stages/decode/index.d.ts +5 -0
  217. package/dist/stages/decode/index.d.ts.map +1 -0
  218. package/dist/stages/decode/types.d.ts +108 -0
  219. package/dist/stages/decode/types.d.ts.map +1 -0
  220. package/dist/stages/demux/MP3FrameParser.d.ts +33 -0
  221. package/dist/stages/demux/MP3FrameParser.d.ts.map +1 -0
  222. package/dist/stages/demux/MP3FrameParser.js +186 -0
  223. package/dist/stages/demux/MP3FrameParser.js.map +1 -0
  224. package/dist/stages/demux/MP4Demuxer.d.ts +45 -0
  225. package/dist/stages/demux/MP4Demuxer.d.ts.map +1 -0
  226. package/dist/stages/demux/MP4Demuxer.js +227 -0
  227. package/dist/stages/demux/MP4Demuxer.js.map +1 -0
  228. package/dist/stages/demux/aac-esds-extractor.d.ts +7 -0
  229. package/dist/stages/demux/aac-esds-extractor.d.ts.map +1 -0
  230. package/dist/stages/demux/audio-demux.worker.d.ts +51 -0
  231. package/dist/stages/demux/audio-demux.worker.d.ts.map +1 -0
  232. package/dist/stages/demux/audio-demux.worker.js +312 -0
  233. package/dist/stages/demux/audio-demux.worker.js.map +1 -0
  234. package/dist/stages/demux/types.d.ts +77 -0
  235. package/dist/stages/demux/types.d.ts.map +1 -0
  236. package/dist/stages/demux/video-demux.worker.d.ts +48 -0
  237. package/dist/stages/demux/video-demux.worker.d.ts.map +1 -0
  238. package/dist/stages/demux/video-demux.worker.js +173 -0
  239. package/dist/stages/demux/video-demux.worker.js.map +1 -0
  240. package/dist/stages/encode/AudioChunkEncoder.d.ts +21 -0
  241. package/dist/stages/encode/AudioChunkEncoder.d.ts.map +1 -0
  242. package/dist/stages/encode/AudioChunkEncoder.js +37 -0
  243. package/dist/stages/encode/AudioChunkEncoder.js.map +1 -0
  244. package/dist/stages/encode/BaseEncoder.d.ts +44 -0
  245. package/dist/stages/encode/BaseEncoder.d.ts.map +1 -0
  246. package/dist/stages/encode/BaseEncoder.js +164 -0
  247. package/dist/stages/encode/BaseEncoder.js.map +1 -0
  248. package/dist/stages/encode/EncoderPool.d.ts +28 -0
  249. package/dist/stages/encode/EncoderPool.d.ts.map +1 -0
  250. package/dist/stages/encode/VideoChunkEncoder.d.ts +26 -0
  251. package/dist/stages/encode/VideoChunkEncoder.d.ts.map +1 -0
  252. package/dist/stages/encode/VideoChunkEncoder.js +50 -0
  253. package/dist/stages/encode/VideoChunkEncoder.js.map +1 -0
  254. package/dist/stages/encode/encode.worker.d.ts +3 -0
  255. package/dist/stages/encode/encode.worker.d.ts.map +1 -0
  256. package/dist/stages/encode/encode.worker.js +318 -0
  257. package/dist/stages/encode/encode.worker.js.map +1 -0
  258. package/dist/stages/encode/index.d.ts +6 -0
  259. package/dist/stages/encode/index.d.ts.map +1 -0
  260. package/dist/stages/encode/types.d.ts +127 -0
  261. package/dist/stages/encode/types.d.ts.map +1 -0
  262. package/dist/stages/load/EventHandlers.d.ts +35 -0
  263. package/dist/stages/load/EventHandlers.d.ts.map +1 -0
  264. package/dist/stages/load/EventHandlers.js +65 -0
  265. package/dist/stages/load/EventHandlers.js.map +1 -0
  266. package/dist/stages/load/ResourceLoader.d.ts +36 -0
  267. package/dist/stages/load/ResourceLoader.d.ts.map +1 -0
  268. package/dist/stages/load/ResourceLoader.js +184 -0
  269. package/dist/stages/load/ResourceLoader.js.map +1 -0
  270. package/dist/stages/load/StreamFactory.d.ts +42 -0
  271. package/dist/stages/load/StreamFactory.d.ts.map +1 -0
  272. package/dist/stages/load/StreamFactory.js +201 -0
  273. package/dist/stages/load/StreamFactory.js.map +1 -0
  274. package/dist/stages/load/TaskManager.d.ts +50 -0
  275. package/dist/stages/load/TaskManager.d.ts.map +1 -0
  276. package/dist/stages/load/TaskManager.js +103 -0
  277. package/dist/stages/load/TaskManager.js.map +1 -0
  278. package/dist/stages/load/WindowByteRangeResolver.d.ts +47 -0
  279. package/dist/stages/load/WindowByteRangeResolver.d.ts.map +1 -0
  280. package/dist/stages/load/WindowByteRangeResolver.js +270 -0
  281. package/dist/stages/load/WindowByteRangeResolver.js.map +1 -0
  282. package/dist/stages/load/index.d.ts +11 -0
  283. package/dist/stages/load/index.d.ts.map +1 -0
  284. package/dist/stages/load/types.d.ts +177 -0
  285. package/dist/stages/load/types.d.ts.map +1 -0
  286. package/dist/stages/mux/MP4Muxer.d.ts +44 -0
  287. package/dist/stages/mux/MP4Muxer.d.ts.map +1 -0
  288. package/dist/stages/mux/MP4Muxer.js +262 -0
  289. package/dist/stages/mux/MP4Muxer.js.map +1 -0
  290. package/dist/stages/mux/OPFSWriter.d.ts +46 -0
  291. package/dist/stages/mux/OPFSWriter.d.ts.map +1 -0
  292. package/dist/stages/mux/index.d.ts +5 -0
  293. package/dist/stages/mux/index.d.ts.map +1 -0
  294. package/dist/stages/mux/mux.worker.d.ts +65 -0
  295. package/dist/stages/mux/mux.worker.d.ts.map +1 -0
  296. package/dist/stages/mux/mux.worker.js +219 -0
  297. package/dist/stages/mux/mux.worker.js.map +1 -0
  298. package/dist/stages/mux/types.d.ts +95 -0
  299. package/dist/stages/mux/types.d.ts.map +1 -0
  300. package/dist/stages/mux/utils.d.ts +32 -0
  301. package/dist/stages/mux/utils.d.ts.map +1 -0
  302. package/dist/stages/mux/utils.js +34 -0
  303. package/dist/stages/mux/utils.js.map +1 -0
  304. package/dist/types.d.ts +25 -0
  305. package/dist/types.d.ts.map +1 -0
  306. package/dist/utils/BackpressureAdapter.d.ts +26 -0
  307. package/dist/utils/BackpressureAdapter.d.ts.map +1 -0
  308. package/dist/utils/binary-search.d.ts +33 -0
  309. package/dist/utils/binary-search.d.ts.map +1 -0
  310. package/dist/utils/binary-search.js +62 -0
  311. package/dist/utils/binary-search.js.map +1 -0
  312. package/dist/utils/canvas-utils.d.ts +96 -0
  313. package/dist/utils/canvas-utils.d.ts.map +1 -0
  314. package/dist/utils/canvas-utils.js +58 -0
  315. package/dist/utils/canvas-utils.js.map +1 -0
  316. package/dist/utils/object-utils.d.ts +34 -0
  317. package/dist/utils/object-utils.d.ts.map +1 -0
  318. package/dist/utils/object-utils.js +22 -0
  319. package/dist/utils/object-utils.js.map +1 -0
  320. package/dist/utils/time-utils.d.ts +10 -0
  321. package/dist/utils/time-utils.d.ts.map +1 -0
  322. package/dist/utils/time-utils.js +60 -0
  323. package/dist/utils/time-utils.js.map +1 -0
  324. package/dist/worker/BaseWorker.d.ts +44 -0
  325. package/dist/worker/BaseWorker.d.ts.map +1 -0
  326. package/dist/worker/BaseWorker.js +98 -0
  327. package/dist/worker/BaseWorker.js.map +1 -0
  328. package/dist/worker/WorkerChannel.d.ts +105 -0
  329. package/dist/worker/WorkerChannel.d.ts.map +1 -0
  330. package/dist/worker/WorkerChannel.js +355 -0
  331. package/dist/worker/WorkerChannel.js.map +1 -0
  332. package/dist/worker/WorkerPool.d.ts +52 -0
  333. package/dist/worker/WorkerPool.d.ts.map +1 -0
  334. package/dist/worker/WorkerPool.js +124 -0
  335. package/dist/worker/WorkerPool.js.map +1 -0
  336. package/dist/worker/index.d.ts +11 -0
  337. package/dist/worker/index.d.ts.map +1 -0
  338. package/dist/worker/transferable-helper.d.ts +89 -0
  339. package/dist/worker/transferable-helper.d.ts.map +1 -0
  340. package/dist/worker/transferable-helper.js +44 -0
  341. package/dist/worker/transferable-helper.js.map +1 -0
  342. package/dist/worker/types.d.ts +179 -0
  343. package/dist/worker/types.d.ts.map +1 -0
  344. package/dist/worker/types.js +50 -0
  345. package/dist/worker/types.js.map +1 -0
  346. package/dist/worker/worker-event-whitelist.d.ts +23 -0
  347. package/dist/worker/worker-event-whitelist.d.ts.map +1 -0
  348. package/dist/worker/worker-retry.d.ts +36 -0
  349. package/dist/worker/worker-retry.d.ts.map +1 -0
  350. package/dist/worker/worker-retry.js +55 -0
  351. package/dist/worker/worker-retry.js.map +1 -0
  352. package/package.json +105 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,42 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.0.1] - 2025-10-08
11
+
12
+ ### Added
13
+
14
+ - Initial release of @meframe/core
15
+ - Six-stage processing pipeline: Load → Demux → Decode → Compose → Encode → Mux/Export
16
+ - Worker-based parallel architecture
17
+ - Dual-layer cache system (L1 VRAM + L2 IndexedDB)
18
+ - Streaming processing support
19
+ - Incremental update via patch system
20
+ - Plugin system foundation
21
+ - Basic composition model support
22
+ - Preview and export capabilities
23
+
24
+ ### Features
25
+
26
+ - WebCodecs-based video/audio processing
27
+ - Multi-track composition
28
+ - Real-time preview with playback control
29
+ - Video export to MP4/WebM
30
+ - Performance monitoring plugin
31
+ - Resource loading and management
32
+ - Cache-aware rendering
33
+
34
+ ### Documentation
35
+
36
+ - Architecture overview
37
+ - API reference
38
+ - Quick start guide
39
+ - Migration guide from v1
40
+
41
+ [Unreleased]: https://github.com/one2x-ai/meframe/compare/v0.0.1...HEAD
42
+ [0.0.1]: https://github.com/one2x-ai/meframe/releases/tag/v0.0.1
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Sheepy
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
package/README.md ADDED
@@ -0,0 +1,396 @@
1
+ # MEFrame Core
2
+
3
+ > 新一代高性能浏览器端视频合成引擎
4
+
5
+ ## 概述
6
+
7
+ MEFrame Core 是完全重新设计的视频处理引擎,基于 WebCodecs API 和 Worker 并行架构,提供毫秒级响应的视频编辑和秒级导出能力。
8
+
9
+ ### 核心特性
10
+
11
+ - **六阶段处理模型** - Load → Demux → Decode → Compose → Encode → Mux/Export
12
+ - **Worker 并行架构** - 充分利用多核 CPU,各阶段独立并行处理
13
+ - **双层缓存系统** - L1 VRAM + L2 IndexedDB,智能缓存管理
14
+ - **流式处理** - 边加载边处理,优化首帧时间
15
+ - **增量更新** - 基于 Patch 的细粒度更新,最小化重渲染
16
+
17
+ ### 性能指标
18
+
19
+ | 指标 | 目标值 | 说明 |
20
+ | --------- | ----------- | ------------------ |
21
+ | 首帧渲染 | < 100ms | 从加载到显示第一帧 |
22
+ | Seek 响应 | < 50ms | 缓存命中情况下 |
23
+ | 播放帧率 | > 29.97 fps | 1080p 多轨合成 |
24
+ | 导出速度 | > 2x 实时 | 1080p H.264 编码 |
25
+ | 内存占用 | < 500MB | 典型项目场景 |
26
+
27
+ ## 快速开始
28
+
29
+ ### 安装
30
+
31
+ ```bash
32
+ npm install @meframe/core
33
+ ```
34
+
35
+ ### 基础使用
36
+
37
+ ```typescript
38
+ import { Meframe } from '@meframe/core';
39
+ import { parseDSL } from '@meframe/dsl-parser'; // 可选:DSL 解析
40
+
41
+ // 1. 创建实例
42
+ const core = await Meframe.create({
43
+ canvas: document.getElementById('preview'),
44
+ workerBaseUrl: '/workers/',
45
+ });
46
+
47
+ // 2. 设置合成树(两种方式)
48
+
49
+ // 方式一:直接使用标准模型格式
50
+ // CompositionModel 是引擎的标准输入模型,定义了明确的数据契约
51
+ const compositionTree = {
52
+ version: '1.0',
53
+ fps: 30,
54
+ durationUs: 10_000_000, // 10 seconds
55
+ root: {
56
+ type: 'group',
57
+ id: 'root',
58
+ startUs: 0,
59
+ durationUs: 10_000_000,
60
+ children: [
61
+ {
62
+ type: 'video',
63
+ id: 'video-1',
64
+ src: 'https://example.com/video.mp4',
65
+ startUs: 0,
66
+ durationUs: 5_000_000,
67
+ },
68
+ {
69
+ type: 'caption',
70
+ id: 'caption-1',
71
+ text: 'Hello World',
72
+ startUs: 1_000_000,
73
+ durationUs: 3_000_000,
74
+ style: {
75
+ fontSize: 48,
76
+ color: '#ffffff',
77
+ },
78
+ },
79
+ ],
80
+ },
81
+ };
82
+
83
+ await core.setCompositionTree(compositionTree);
84
+
85
+ // 方式二:使用 DSL Parser(业务 DSL → CompositionModel)
86
+ const dsl = await fetch('/project.json').then((r) => r.json());
87
+ const model = parseDSL(dsl); // 转换为标准格式
88
+ await core.setCompositionTree(model);
89
+
90
+ // 3. 开始预览
91
+ const preview = core.startPreview();
92
+ preview.play();
93
+
94
+ // 4. 导出视频
95
+ const blob = await core.export({
96
+ preset: 'high',
97
+ container: 'mp4',
98
+ });
99
+ ```
100
+
101
+ ### 增量更新
102
+
103
+ ```typescript
104
+ // 应用局部更新
105
+ await core.applyPatch({
106
+ version: '1.0',
107
+ operations: [
108
+ {
109
+ type: 'update',
110
+ nodeId: 'caption-1',
111
+ updates: {
112
+ text: 'Updated Text',
113
+ },
114
+ },
115
+ ],
116
+ });
117
+ ```
118
+
119
+ ### 插件使用
120
+
121
+ ```typescript
122
+ import { PerfMonitorPlugin } from '@meframe/core/plugins';
123
+
124
+ const core = await Meframe.create({
125
+ canvas,
126
+ workerBaseUrl: '/workers/',
127
+ plugins: [
128
+ new PerfMonitorPlugin({
129
+ overlay: true,
130
+ sampleRate: 60,
131
+ }),
132
+ ],
133
+ });
134
+ ```
135
+
136
+ ## API 参考
137
+
138
+ ### Meframe
139
+
140
+ #### 创建实例
141
+
142
+ ```typescript
143
+ static async create(config: CoreConfig): Promise<Meframe>
144
+ ```
145
+
146
+ #### 合成树管理
147
+
148
+ ```typescript
149
+ async setCompositionTree(model: CompositionModel): Promise<void>
150
+ async applyPatch(patch: CompositionPatch): Promise<void>
151
+ ```
152
+
153
+ #### 预览控制
154
+
155
+ ```typescript
156
+ startPreview(options?: PreviewOptions): PreviewHandle
157
+ ```
158
+
159
+ #### 导出
160
+
161
+ ```typescript
162
+ async export(options: ExportOptions): Promise<Blob>
163
+ ```
164
+
165
+ ### PreviewHandle
166
+
167
+ ```typescript
168
+ interface PreviewHandle {
169
+ play(): void;
170
+ pause(): void;
171
+ seek(timeUs: number): void;
172
+ setRate(rate: number): void;
173
+ getCurrentTime(): number;
174
+ on(event: string, handler: Function): void;
175
+ }
176
+ ```
177
+
178
+ ### CompositionModel
179
+
180
+ ```typescript
181
+ interface CompositionModel {
182
+ version: '1.0';
183
+ fps: 24 | 25 | 30 | 60;
184
+ durationUs: number;
185
+ root: GroupNode;
186
+ renderConfig?: {
187
+ width: number;
188
+ height: number;
189
+ background?: string;
190
+ };
191
+ }
192
+ ```
193
+
194
+ ## 架构设计
195
+
196
+ ### 系统架构图
197
+
198
+ ```
199
+ ┌─────────────────────────────────────────────────────────┐
200
+ │ Main Thread │
201
+ │ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐ │
202
+ │ │ Meframe │ │ Orchestrator │ │ CacheManager │ │
203
+ │ └─────────────┘ └──────────────┘ └──────────────┘ │
204
+ └─────────────────────────┬───────────────────────────────┘
205
+ │ MessageChannel
206
+ ┌─────────────────────────┴───────────────────────────────┐
207
+ │ Worker Threads │
208
+ │ ┌────────────┐ ┌─────────────┐ ┌────────────────┐ │
209
+ │ │DecodeWorker│ │ComposeWorker│ │EncodeWorker │ │
210
+ │ └────────────┘ └─────────────┘ └────────────────┘ │
211
+ │ ┌─────────────┐ │
212
+ │ │ MuxWorker │ │
213
+ │ └─────────────┘ │
214
+ └──────────────────────────────────────────────────────────┘
215
+ ```
216
+
217
+ ### 数据流
218
+
219
+ ```
220
+ Input Stream
221
+
222
+ [ResourceLoader] → ReadableStream
223
+
224
+ [DecodeWorker] → VideoFrame/AudioData
225
+
226
+ [ComposeWorker] → Composed VideoFrame
227
+
228
+ [EncodeWorker] → EncodedChunk
229
+
230
+ [MuxWorker] → MP4/WebM Blob
231
+
232
+ Output File
233
+ ```
234
+
235
+ ### 缓存架构
236
+
237
+ ```
238
+ ┌─────────────────────────────────────┐
239
+ │ Cache Manager │
240
+ ├─────────────────────────────────────┤
241
+ │ L1: VRAM (VideoFrame) │
242
+ │ - LRU eviction │
243
+ │ - ~90 frames @ 1080p │
244
+ ├─────────────────────────────────────┤
245
+ │ L2: IndexedDB (EncodedChunk) │
246
+ │ - Compressed storage │
247
+ │ - Persistent across sessions │
248
+ └─────────────────────────────────────┘
249
+ ```
250
+
251
+ ## 性能优化
252
+
253
+ ### 内存管理
254
+
255
+ ```typescript
256
+ // 显式释放资源
257
+ videoFrame.close();
258
+
259
+ // 配置缓存限制
260
+ const core = await Meframe.create({
261
+ cache: {
262
+ l1: { maxMemoryMB: 200 },
263
+ l2: { maxSizeMB: 1000 },
264
+ },
265
+ });
266
+ ```
267
+
268
+ ### 预渲染策略
269
+
270
+ ```typescript
271
+ // 配置预渲染窗口
272
+ core.setPreRenderWindow({
273
+ forward: 10_000_000, // 10s ahead
274
+ backward: 2_000_000, // 2s behind
275
+ });
276
+ ```
277
+
278
+ ### 降级处理
279
+
280
+ ```typescript
281
+ // 配置质量自适应
282
+ core.setAdaptiveQuality({
283
+ enabled: true,
284
+ targetFPS: 30,
285
+ minQuality: 'low',
286
+ maxQuality: 'high',
287
+ });
288
+ ```
289
+
290
+ ## 浏览器兼容性
291
+
292
+ | 浏览器 | 最低版本 | 说明 |
293
+ | ------- | -------- | ------------------ |
294
+ | Chrome | 94+ | 完整支持 |
295
+ | Edge | 94+ | 完整支持 |
296
+ | Safari | 16.4+ | 需要开启实验性功能 |
297
+ | Firefox | - | 暂不支持 WebCodecs |
298
+
299
+ ## 迁移指南
300
+
301
+ ### 从 v1 迁移
302
+
303
+ 主要变化:
304
+
305
+ 1. **时间单位** - 所有时间值改为微秒(microseconds)
306
+ 2. **八阶段 → 六阶段** - 简化的处理模型
307
+ 3. **新的数据结构** - CompositionModel 替代 Storyboard
308
+ 4. **Worker 架构** - 所有重计算移至 Worker
309
+
310
+ 详细迁移步骤请参考 [MIGRATION.md](./docs/MIGRATION.md)
311
+
312
+ ## 相关文档
313
+
314
+ - [架构总览](./ARCHITECTURE_VNEXT.md) - 架构设计
315
+ - [技术实现](./TECHNICAL_IMPLEMENTATION.md) - 详细技术方案
316
+ - [API 契约](./API_CONTRACTS.md) - 完整 API 定义
317
+ - [实现计划](./IMPLEMENTATION_PLAN.md) - 项目结构和技术架构
318
+ - [开发任务](./IMPLEMENTATION_TASKS.md) - 任务列表和进度跟踪
319
+ - [DSL Parser](./DSL_PARSER_ARCHITECTURE.md) - DSL 解析包架构
320
+
321
+ ## 开发
322
+
323
+ ### 环境准备
324
+
325
+ ```bash
326
+ # 安装依赖
327
+ npm install
328
+
329
+ # 启动开发服务器
330
+ npm run dev
331
+
332
+ # 运行测试
333
+ npm test
334
+
335
+ # 构建
336
+ npm run build
337
+ ```
338
+
339
+ ### 项目结构
340
+
341
+ ```
342
+ packages/core-next/
343
+ ├── src/ # 源代码
344
+ ├── tests/ # 测试文件
345
+ ├── examples/ # 示例代码
346
+ ├── docs/ # 文档
347
+ └── benchmarks/ # 性能测试
348
+ ```
349
+
350
+ ### 贡献指南
351
+
352
+ 1. Fork 项目
353
+ 2. 创建特性分支 (`git checkout -b feature/amazing`)
354
+ 3. 提交更改 (`git commit -m 'Add amazing feature'`)
355
+ 4. 推送分支 (`git push origin feature/amazing`)
356
+ 5. 创建 Pull Request
357
+
358
+ ## 路线图
359
+
360
+ ### v2.0.0 (Current)
361
+
362
+ - [x] 基础架构设计
363
+ - [x] Worker 架构实现
364
+ - [x] 双层缓存系统
365
+ - [ ] 插件系统
366
+ - [ ] 性能优化
367
+
368
+ ### v2.1.0 (Q2 2024)
369
+
370
+ - [ ] WebGPU 渲染加速
371
+ - [ ] 实时协作支持
372
+ - [ ] AI 辅助编辑
373
+
374
+ ### v2.2.0 (Q3 2024)
375
+
376
+ - [ ] 3D 素材支持
377
+ - [ ] 高级特效系统
378
+ - [ ] 云端渲染集成
379
+
380
+ ## 许可证
381
+
382
+ MIT License
383
+
384
+ ## 支持
385
+
386
+ - 文档:[https://meframe.dev](https://meframe.dev)
387
+ - Issues:[GitHub Issues](https://github.com/meframe/core-next/issues)
388
+ - 讨论:[GitHub Discussions](https://github.com/meframe/core-next/discussions)
389
+
390
+ ## 致谢
391
+
392
+ 感谢所有贡献者和以下开源项目:
393
+
394
+ - [WebCodecs API](https://www.w3.org/TR/webcodecs/)
395
+ - [MP4Box.js](https://github.com/gpac/mp4box.js)
396
+ - [Web Workers](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API)
@@ -0,0 +1,82 @@
1
+ import { MeframeConfig, ResolvedConfig, MeframeState, ExportOptions } from './types';
2
+ import { CompositionModelData, CompositionPatch, TimeUs } from './model/types';
3
+ import { PreviewHandle } from './controllers/types';
4
+ import { CompositionModel } from './model/CompositionModel';
5
+ import { PluginManager } from './plugins/PluginManager';
6
+ import { EventBus } from './event/EventBus';
7
+ import { EventPayloadMap } from './event/events';
8
+
9
+ export declare class Meframe {
10
+ /** Current state - managed internally via setState() */
11
+ state: MeframeState;
12
+ /** Configuration - immutable after construction */
13
+ readonly config: ResolvedConfig;
14
+ /** Composition model - managed via setCompositionTree() */
15
+ model: CompositionModel | null;
16
+ /** Plugin manager for extensions */
17
+ readonly pluginManager: PluginManager;
18
+ /** Event bus for subscribing to Meframe events */
19
+ readonly events: Pick<EventBus<EventPayloadMap>, 'on' | 'off' | 'once'>;
20
+ private orchestrator;
21
+ private eventBus;
22
+ private playbackController;
23
+ private preRenderService;
24
+ private canvas?;
25
+ private constructor();
26
+ /**
27
+ * Create a new Meframe instance
28
+ */
29
+ static create(config?: MeframeConfig): Promise<Meframe>;
30
+ /**
31
+ * Initialize the core engine
32
+ */
33
+ private initialize;
34
+ /**
35
+ * Set the composition model
36
+ */
37
+ setCompositionModel(model: CompositionModel | CompositionModelData): Promise<void>;
38
+ /**
39
+ * Apply a patch to the composition model
40
+ */
41
+ applyPatch(patch: CompositionPatch): Promise<void>;
42
+ /**
43
+ * Start preview and return a handle for control
44
+ */
45
+ startPreview(options?: {
46
+ canvas?: HTMLCanvasElement | OffscreenCanvas;
47
+ startUs?: TimeUs;
48
+ }): PreviewHandle;
49
+ /**
50
+ * Export the composition
51
+ */
52
+ export(options: ExportOptions): Promise<ReadableStream<Uint8Array>>;
53
+ /**
54
+ * Run the export pipeline
55
+ */
56
+ private runExportPipeline;
57
+ /**
58
+ * Export to buffer (convenience method)
59
+ */
60
+ exportToBuffer(options: ExportOptions): Promise<ArrayBuffer>;
61
+ /**
62
+ * Get current playback time
63
+ */
64
+ getCurrentTime(): number;
65
+ /**
66
+ * Clean up and destroy the instance
67
+ */
68
+ dispose(): Promise<void>;
69
+ /**
70
+ * Set internal state
71
+ */
72
+ private setState;
73
+ /**
74
+ * Ensure the instance is not destroyed
75
+ */
76
+ private ensureNotDestroyed;
77
+ /**
78
+ * Ensure the instance is ready
79
+ */
80
+ private ensureReady;
81
+ }
82
+ //# sourceMappingURL=Meframe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Meframe.d.ts","sourceRoot":"","sources":["../src/Meframe.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAM5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGpE,qBAAa,OAAO;IAClB,wDAAwD;IACxD,KAAK,EAAE,YAAY,CAAU;IAC7B,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,2DAA2D;IAC3D,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACtC,oCAAoC;IACpC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;IAExE,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,MAAM,CAAC,CAAsC;IAErD,OAAO;IAeP;;OAEG;WACU,MAAM,CAAC,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAQjE;;OAEG;YACW,UAAU;IAyBxB;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxF;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxD;;OAEG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE;QACrB,MAAM,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;QAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,aAAa;IA+BjB;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IA+EzE;;OAEG;YACW,iBAAiB;IA8C/B;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IA0BlE;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB9B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAYhB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,OAAO,CAAC,WAAW;CAWpB"}