@tscaps/engine 0.1.1 → 0.2.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 (321) hide show
  1. package/README.md +2 -4
  2. package/dist/modules/css/CssScoper.d.ts +21 -1
  3. package/dist/modules/css/CssScoper.d.ts.map +1 -1
  4. package/dist/modules/css/CssScoper.js +129 -56
  5. package/dist/modules/css/CssScoper.js.map +1 -1
  6. package/dist/modules/css/CssVarReferenceScanner.d.ts +13 -0
  7. package/dist/modules/css/CssVarReferenceScanner.d.ts.map +1 -0
  8. package/dist/modules/css/CssVarReferenceScanner.js +20 -0
  9. package/dist/modules/css/CssVarReferenceScanner.js.map +1 -0
  10. package/dist/modules/css/index.d.ts +1 -0
  11. package/dist/modules/css/index.d.ts.map +1 -1
  12. package/dist/modules/css/index.js +1 -0
  13. package/dist/modules/css/index.js.map +1 -1
  14. package/dist/modules/document/CssVariable.d.ts +24 -3
  15. package/dist/modules/document/CssVariable.d.ts.map +1 -1
  16. package/dist/modules/document/CssVariable.js +30 -2
  17. package/dist/modules/document/CssVariable.js.map +1 -1
  18. package/dist/modules/document/Decoration.d.ts +42 -0
  19. package/dist/modules/document/Decoration.d.ts.map +1 -0
  20. package/dist/modules/document/Decoration.js +52 -0
  21. package/dist/modules/document/Decoration.js.map +1 -0
  22. package/dist/modules/document/Document.d.ts.map +1 -1
  23. package/dist/modules/document/Document.js +0 -3
  24. package/dist/modules/document/Document.js.map +1 -1
  25. package/dist/modules/document/DocumentEditor.d.ts +11 -0
  26. package/dist/modules/document/DocumentEditor.d.ts.map +1 -1
  27. package/dist/modules/document/DocumentEditor.js +49 -9
  28. package/dist/modules/document/DocumentEditor.js.map +1 -1
  29. package/dist/modules/document/Line.d.ts +9 -6
  30. package/dist/modules/document/Line.d.ts.map +1 -1
  31. package/dist/modules/document/Line.js +11 -24
  32. package/dist/modules/document/Line.js.map +1 -1
  33. package/dist/modules/document/Section.d.ts +0 -4
  34. package/dist/modules/document/Section.d.ts.map +1 -1
  35. package/dist/modules/document/Section.js +2 -18
  36. package/dist/modules/document/Section.js.map +1 -1
  37. package/dist/modules/document/Segment.d.ts +10 -7
  38. package/dist/modules/document/Segment.d.ts.map +1 -1
  39. package/dist/modules/document/Segment.js +15 -22
  40. package/dist/modules/document/Segment.js.map +1 -1
  41. package/dist/modules/document/Tag.d.ts +3 -0
  42. package/dist/modules/document/Tag.d.ts.map +1 -1
  43. package/dist/modules/document/Tag.js +3 -0
  44. package/dist/modules/document/Tag.js.map +1 -1
  45. package/dist/modules/document/Word.d.ts +20 -7
  46. package/dist/modules/document/Word.d.ts.map +1 -1
  47. package/dist/modules/document/Word.js +32 -34
  48. package/dist/modules/document/Word.js.map +1 -1
  49. package/dist/modules/document/index.d.ts +1 -0
  50. package/dist/modules/document/index.d.ts.map +1 -1
  51. package/dist/modules/document/index.js +1 -0
  52. package/dist/modules/document/index.js.map +1 -1
  53. package/dist/modules/effect/CarryQuotesEffect.d.ts +1 -7
  54. package/dist/modules/effect/CarryQuotesEffect.d.ts.map +1 -1
  55. package/dist/modules/effect/CarryQuotesEffect.js +17 -30
  56. package/dist/modules/effect/CarryQuotesEffect.js.map +1 -1
  57. package/dist/modules/effect/RemovePunctuationEffect.d.ts +10 -2
  58. package/dist/modules/effect/RemovePunctuationEffect.d.ts.map +1 -1
  59. package/dist/modules/effect/RemovePunctuationEffect.js +26 -6
  60. package/dist/modules/effect/RemovePunctuationEffect.js.map +1 -1
  61. package/dist/modules/effect/SmartLowercaseEffect.d.ts +7 -6
  62. package/dist/modules/effect/SmartLowercaseEffect.d.ts.map +1 -1
  63. package/dist/modules/effect/SmartLowercaseEffect.js +11 -7
  64. package/dist/modules/effect/SmartLowercaseEffect.js.map +1 -1
  65. package/dist/modules/pipeline/RenderPipelineBuilder.d.ts +3 -3
  66. package/dist/modules/pipeline/RenderPipelineBuilder.d.ts.map +1 -1
  67. package/dist/modules/pipeline/RenderPipelineBuilder.js +11 -6
  68. package/dist/modules/pipeline/RenderPipelineBuilder.js.map +1 -1
  69. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts +19 -25
  70. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts.map +1 -1
  71. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js +40 -717
  72. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js.map +1 -1
  73. package/dist/modules/rendering/SubtitleFrameRenderer.d.ts +8 -5
  74. package/dist/modules/rendering/SubtitleFrameRenderer.d.ts.map +1 -1
  75. package/dist/modules/rendering/index.d.ts +13 -8
  76. package/dist/modules/rendering/index.d.ts.map +1 -1
  77. package/dist/modules/rendering/index.js +5 -2
  78. package/dist/modules/rendering/index.js.map +1 -1
  79. package/dist/modules/rendering/styles/BaselineCssComposer.d.ts +23 -0
  80. package/dist/modules/rendering/styles/BaselineCssComposer.d.ts.map +1 -0
  81. package/dist/modules/rendering/styles/BaselineCssComposer.js +40 -0
  82. package/dist/modules/rendering/styles/BaselineCssComposer.js.map +1 -0
  83. package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts +19 -0
  84. package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts.map +1 -0
  85. package/dist/modules/rendering/styles/BehindActorBaselineCss.js +19 -0
  86. package/dist/modules/rendering/styles/BehindActorBaselineCss.js.map +1 -0
  87. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts +7 -0
  88. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts.map +1 -0
  89. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js +34 -0
  90. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js.map +1 -0
  91. package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts +27 -0
  92. package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts.map +1 -0
  93. package/dist/modules/rendering/styles/InlineStyleEmitter.js +53 -0
  94. package/dist/modules/rendering/styles/InlineStyleEmitter.js.map +1 -0
  95. package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.d.ts +15 -0
  96. package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.d.ts.map +1 -0
  97. package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.js +33 -0
  98. package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.js.map +1 -0
  99. package/dist/modules/rendering/styles/VideoFrameLayerClass.d.ts.map +1 -0
  100. package/dist/modules/rendering/styles/VideoFrameLayerClass.js.map +1 -0
  101. package/dist/modules/rendering/subtitle/AbstractAnim.d.ts +13 -0
  102. package/dist/modules/rendering/subtitle/AbstractAnim.d.ts.map +1 -0
  103. package/dist/modules/rendering/subtitle/AbstractAnim.js +2 -0
  104. package/dist/modules/rendering/subtitle/AbstractAnim.js.map +1 -0
  105. package/dist/modules/rendering/subtitle/ActiveRenderSession.d.ts +20 -0
  106. package/dist/modules/rendering/subtitle/ActiveRenderSession.d.ts.map +1 -0
  107. package/dist/modules/rendering/subtitle/ActiveRenderSession.js +31 -0
  108. package/dist/modules/rendering/subtitle/ActiveRenderSession.js.map +1 -0
  109. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts +19 -0
  110. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts.map +1 -0
  111. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js +41 -0
  112. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js.map +1 -0
  113. package/dist/modules/rendering/subtitle/AnimationProbe.d.ts +25 -0
  114. package/dist/modules/rendering/subtitle/AnimationProbe.d.ts.map +1 -0
  115. package/dist/modules/rendering/subtitle/AnimationProbe.js +198 -0
  116. package/dist/modules/rendering/subtitle/AnimationProbe.js.map +1 -0
  117. package/dist/modules/rendering/subtitle/AssetGroupBuilder.d.ts +15 -0
  118. package/dist/modules/rendering/subtitle/AssetGroupBuilder.d.ts.map +1 -0
  119. package/dist/modules/rendering/subtitle/AssetGroupBuilder.js +26 -0
  120. package/dist/modules/rendering/subtitle/AssetGroupBuilder.js.map +1 -0
  121. package/dist/modules/rendering/subtitle/BatchPlan.d.ts +32 -0
  122. package/dist/modules/rendering/subtitle/BatchPlan.d.ts.map +1 -0
  123. package/dist/modules/rendering/subtitle/BatchPlan.js +2 -0
  124. package/dist/modules/rendering/subtitle/BatchPlan.js.map +1 -0
  125. package/dist/modules/rendering/subtitle/BatchPlanner.d.ts +31 -0
  126. package/dist/modules/rendering/subtitle/BatchPlanner.d.ts.map +1 -0
  127. package/dist/modules/rendering/subtitle/BatchPlanner.js +91 -0
  128. package/dist/modules/rendering/subtitle/BatchPlanner.js.map +1 -0
  129. package/dist/modules/rendering/subtitle/PreparedStyle.d.ts +35 -0
  130. package/dist/modules/rendering/subtitle/PreparedStyle.d.ts.map +1 -0
  131. package/dist/modules/rendering/subtitle/PreparedStyle.js +2 -0
  132. package/dist/modules/rendering/subtitle/PreparedStyle.js.map +1 -0
  133. package/dist/modules/rendering/subtitle/PreparedStyleFactory.d.ts +31 -0
  134. package/dist/modules/rendering/subtitle/PreparedStyleFactory.d.ts.map +1 -0
  135. package/dist/modules/rendering/subtitle/PreparedStyleFactory.js +91 -0
  136. package/dist/modules/rendering/subtitle/PreparedStyleFactory.js.map +1 -0
  137. package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.d.ts +13 -0
  138. package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.d.ts.map +1 -0
  139. package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.js +24 -0
  140. package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.js.map +1 -0
  141. package/dist/modules/rendering/{SegmentPaintRegionResolver.d.ts → subtitle/SegmentPaintRegionResolver.d.ts} +1 -1
  142. package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.d.ts.map +1 -0
  143. package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.js.map +1 -0
  144. package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.d.ts +45 -0
  145. package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.d.ts.map +1 -0
  146. package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.js +50 -0
  147. package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.js.map +1 -0
  148. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts +80 -0
  149. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts.map +1 -0
  150. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js +188 -0
  151. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js.map +1 -0
  152. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts +45 -0
  153. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts.map +1 -0
  154. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js +141 -0
  155. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js.map +1 -0
  156. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts +46 -0
  157. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts.map +1 -0
  158. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js +134 -0
  159. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js.map +1 -0
  160. package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.d.ts +17 -0
  161. package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.d.ts.map +1 -0
  162. package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.js +58 -0
  163. package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.js.map +1 -0
  164. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts +27 -0
  165. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts.map +1 -0
  166. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js +40 -0
  167. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js.map +1 -0
  168. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts +42 -0
  169. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts.map +1 -0
  170. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js +112 -0
  171. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js.map +1 -0
  172. package/dist/modules/rendering/types/AlignmentConfig.d.ts.map +1 -0
  173. package/dist/modules/rendering/types/AlignmentConfig.js.map +1 -0
  174. package/dist/modules/rendering/types/BehindActorRequirement.d.ts +12 -0
  175. package/dist/modules/rendering/types/BehindActorRequirement.d.ts.map +1 -0
  176. package/dist/modules/rendering/types/BehindActorRequirement.js +2 -0
  177. package/dist/modules/rendering/types/BehindActorRequirement.js.map +1 -0
  178. package/dist/modules/rendering/types/BoxEdges.d.ts.map +1 -0
  179. package/dist/modules/rendering/types/BoxEdges.js.map +1 -0
  180. package/dist/modules/rendering/types/DecorationPlacementSide.d.ts +8 -0
  181. package/dist/modules/rendering/types/DecorationPlacementSide.d.ts.map +1 -0
  182. package/dist/modules/rendering/types/DecorationPlacementSide.js +2 -0
  183. package/dist/modules/rendering/types/DecorationPlacementSide.js.map +1 -0
  184. package/dist/modules/rendering/{ElementRenderOverrides.d.ts → types/ElementRenderOverrides.d.ts} +1 -1
  185. package/dist/modules/rendering/types/ElementRenderOverrides.d.ts.map +1 -0
  186. package/dist/modules/rendering/types/ElementRenderOverrides.js.map +1 -0
  187. package/dist/modules/rendering/types/InlineStyleMap.d.ts.map +1 -0
  188. package/dist/modules/rendering/types/InlineStyleMap.js.map +1 -0
  189. package/dist/modules/rendering/{RenderingConfig.d.ts → types/RenderingConfig.d.ts} +3 -1
  190. package/dist/modules/rendering/types/RenderingConfig.d.ts.map +1 -0
  191. package/dist/modules/rendering/types/RenderingConfig.js.map +1 -0
  192. package/dist/modules/rendering/{ScopedRenderOverride.d.ts → types/ScopedRenderOverride.d.ts} +2 -2
  193. package/dist/modules/rendering/types/ScopedRenderOverride.d.ts.map +1 -0
  194. package/dist/modules/rendering/types/ScopedRenderOverride.js.map +1 -0
  195. package/dist/modules/rendering/types/VideoFrameSource.d.ts.map +1 -0
  196. package/dist/modules/rendering/types/VideoFrameSource.js.map +1 -0
  197. package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.d.ts +33 -0
  198. package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.d.ts.map +1 -0
  199. package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.js +100 -0
  200. package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.js.map +1 -0
  201. package/dist/modules/splitting/FixedTailLineSplitter.d.ts +29 -0
  202. package/dist/modules/splitting/FixedTailLineSplitter.d.ts.map +1 -0
  203. package/dist/modules/splitting/FixedTailLineSplitter.js +43 -0
  204. package/dist/modules/splitting/FixedTailLineSplitter.js.map +1 -0
  205. package/dist/modules/splitting/index.d.ts +4 -0
  206. package/dist/modules/splitting/index.d.ts.map +1 -1
  207. package/dist/modules/splitting/index.js +2 -0
  208. package/dist/modules/splitting/index.js.map +1 -1
  209. package/dist/modules/tagging/PauseTagger.d.ts +24 -0
  210. package/dist/modules/tagging/PauseTagger.d.ts.map +1 -0
  211. package/dist/modules/tagging/PauseTagger.js +41 -0
  212. package/dist/modules/tagging/PauseTagger.js.map +1 -0
  213. package/dist/modules/tagging/StructureTagger.d.ts +1 -1
  214. package/dist/modules/tagging/StructureTagger.d.ts.map +1 -1
  215. package/dist/modules/tagging/StructureTagger.js +11 -5
  216. package/dist/modules/tagging/StructureTagger.js.map +1 -1
  217. package/dist/modules/tagging/index.d.ts +2 -0
  218. package/dist/modules/tagging/index.d.ts.map +1 -1
  219. package/dist/modules/tagging/index.js +1 -0
  220. package/dist/modules/tagging/index.js.map +1 -1
  221. package/dist/modules/transcription/VttTranscriber.d.ts +28 -0
  222. package/dist/modules/transcription/VttTranscriber.d.ts.map +1 -0
  223. package/dist/modules/transcription/VttTranscriber.js +59 -0
  224. package/dist/modules/transcription/VttTranscriber.js.map +1 -0
  225. package/dist/modules/transcription/index.d.ts +1 -0
  226. package/dist/modules/transcription/index.d.ts.map +1 -1
  227. package/dist/modules/transcription/index.js +1 -0
  228. package/dist/modules/transcription/index.js.map +1 -1
  229. package/dist/modules/video/RenderJob.d.ts +17 -0
  230. package/dist/modules/video/RenderJob.d.ts.map +1 -1
  231. package/dist/modules/video/RenderTimeMap.d.ts +50 -0
  232. package/dist/modules/video/RenderTimeMap.d.ts.map +1 -0
  233. package/dist/modules/video/RenderTimeMap.js +90 -0
  234. package/dist/modules/video/RenderTimeMap.js.map +1 -0
  235. package/dist/modules/video/index.d.ts +8 -1
  236. package/dist/modules/video/index.d.ts.map +1 -1
  237. package/dist/modules/video/index.js +4 -0
  238. package/dist/modules/video/index.js.map +1 -1
  239. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts +102 -0
  240. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts.map +1 -0
  241. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js +199 -0
  242. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js.map +1 -0
  243. package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts +12 -52
  244. package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts.map +1 -1
  245. package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js +25 -190
  246. package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js.map +1 -1
  247. package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts +7 -0
  248. package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts.map +1 -1
  249. package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js +2 -2
  250. package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js.map +1 -1
  251. package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts +2 -0
  252. package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts.map +1 -1
  253. package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js +8 -2
  254. package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js.map +1 -1
  255. package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts +3 -0
  256. package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts.map +1 -1
  257. package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js +9 -2
  258. package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js.map +1 -1
  259. package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts +7 -0
  260. package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts.map +1 -1
  261. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts +1 -1
  262. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts.map +1 -1
  263. package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts +9 -2
  264. package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts.map +1 -1
  265. package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts +5 -2
  266. package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts.map +1 -1
  267. package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js +8 -2
  268. package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js.map +1 -1
  269. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.d.ts +35 -0
  270. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.d.ts.map +1 -0
  271. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js +69 -0
  272. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js.map +1 -0
  273. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.d.ts +23 -0
  274. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.d.ts.map +1 -0
  275. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.js +23 -0
  276. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.js.map +1 -0
  277. package/dist/modules/video/mediabunny/painter/FramePainter.d.ts +46 -0
  278. package/dist/modules/video/mediabunny/painter/FramePainter.d.ts.map +1 -0
  279. package/dist/modules/video/mediabunny/painter/FramePainter.js +2 -0
  280. package/dist/modules/video/mediabunny/painter/FramePainter.js.map +1 -0
  281. package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts +25 -0
  282. package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts.map +1 -0
  283. package/dist/modules/video/mediabunny/painter/TopLayerSource.js +2 -0
  284. package/dist/modules/video/mediabunny/painter/TopLayerSource.js.map +1 -0
  285. package/package.json +1 -1
  286. package/dist/modules/rendering/AlignmentConfig.d.ts.map +0 -1
  287. package/dist/modules/rendering/AlignmentConfig.js.map +0 -1
  288. package/dist/modules/rendering/BoxEdges.d.ts.map +0 -1
  289. package/dist/modules/rendering/BoxEdges.js.map +0 -1
  290. package/dist/modules/rendering/ElementRenderOverrides.d.ts.map +0 -1
  291. package/dist/modules/rendering/ElementRenderOverrides.js.map +0 -1
  292. package/dist/modules/rendering/InlineStyleMap.d.ts.map +0 -1
  293. package/dist/modules/rendering/InlineStyleMap.js.map +0 -1
  294. package/dist/modules/rendering/RenderingConfig.d.ts.map +0 -1
  295. package/dist/modules/rendering/RenderingConfig.js.map +0 -1
  296. package/dist/modules/rendering/ScopedRenderOverride.d.ts.map +0 -1
  297. package/dist/modules/rendering/ScopedRenderOverride.js.map +0 -1
  298. package/dist/modules/rendering/SegmentPaintRegionResolver.d.ts.map +0 -1
  299. package/dist/modules/rendering/SegmentPaintRegionResolver.js.map +0 -1
  300. package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts +0 -58
  301. package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts.map +0 -1
  302. package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js +0 -132
  303. package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js.map +0 -1
  304. package/dist/modules/rendering/VideoFrameLayerClass.d.ts.map +0 -1
  305. package/dist/modules/rendering/VideoFrameLayerClass.js.map +0 -1
  306. package/dist/modules/rendering/VideoFrameSource.d.ts.map +0 -1
  307. package/dist/modules/rendering/VideoFrameSource.js.map +0 -1
  308. /package/dist/modules/rendering/{VideoFrameLayerClass.d.ts → styles/VideoFrameLayerClass.d.ts} +0 -0
  309. /package/dist/modules/rendering/{VideoFrameLayerClass.js → styles/VideoFrameLayerClass.js} +0 -0
  310. /package/dist/modules/rendering/{SegmentPaintRegionResolver.js → subtitle/SegmentPaintRegionResolver.js} +0 -0
  311. /package/dist/modules/rendering/{AlignmentConfig.d.ts → types/AlignmentConfig.d.ts} +0 -0
  312. /package/dist/modules/rendering/{AlignmentConfig.js → types/AlignmentConfig.js} +0 -0
  313. /package/dist/modules/rendering/{BoxEdges.d.ts → types/BoxEdges.d.ts} +0 -0
  314. /package/dist/modules/rendering/{BoxEdges.js → types/BoxEdges.js} +0 -0
  315. /package/dist/modules/rendering/{ElementRenderOverrides.js → types/ElementRenderOverrides.js} +0 -0
  316. /package/dist/modules/rendering/{InlineStyleMap.d.ts → types/InlineStyleMap.d.ts} +0 -0
  317. /package/dist/modules/rendering/{InlineStyleMap.js → types/InlineStyleMap.js} +0 -0
  318. /package/dist/modules/rendering/{RenderingConfig.js → types/RenderingConfig.js} +0 -0
  319. /package/dist/modules/rendering/{ScopedRenderOverride.js → types/ScopedRenderOverride.js} +0 -0
  320. /package/dist/modules/rendering/{VideoFrameSource.d.ts → types/VideoFrameSource.d.ts} +0 -0
  321. /package/dist/modules/rendering/{VideoFrameSource.js → types/VideoFrameSource.js} +0 -0
@@ -41,12 +41,18 @@ export class PassthroughAudioTrackBridge {
41
41
  // discarded — the output writer rejects negative timestamps.
42
42
  if (packet.timestamp < 0)
43
43
  return;
44
+ const timeMap = this.config.timeMap;
45
+ if (timeMap.isSkipped(packet.timestamp))
46
+ return;
47
+ const outputPacket = timeMap.isEmpty()
48
+ ? packet
49
+ : packet.clone({ timestamp: timeMap.toOutputTime(packet.timestamp) });
44
50
  if (this.firstPacketPending && this.decoderConfig) {
45
- await this.source.add(packet, { decoderConfig: this.decoderConfig });
51
+ await this.source.add(outputPacket, { decoderConfig: this.decoderConfig });
46
52
  this.firstPacketPending = false;
47
53
  return;
48
54
  }
49
- await this.source.add(packet);
55
+ await this.source.add(outputPacket);
50
56
  }
51
57
  }
52
58
  //# sourceMappingURL=PassthroughAudioTrackBridge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PassthroughAudioTrackBridge.js","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,iBAAiB,GAKlB,MAAM,YAAY,CAAC;AAQpB;;;;;;;GAOG;AACH,MAAM,OAAO,2BAA2B;IAQT;IANZ,MAAM,CAA2B;IACjC,IAAI,CAAoB;IACjC,UAAU,GAAyB,IAAI,CAAC;IACxC,aAAa,GAA8B,IAAI,CAAC;IAChD,kBAAkB,GAAG,IAAI,CAAC;IAElC,YAA6B,MAAyC;QAAzC,WAAM,GAAN,MAAM,CAAmC;QACpE,IAAI,CAAC,MAAM,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,cAAsB;QACpC,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,cAAc,EAAE,CAAC;YACtE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,MAAqB;QACtC,qEAAqE;QACrE,6DAA6D;QAC7D,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC;YAAE,OAAO;QACjC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"PassthroughAudioTrackBridge.js","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,iBAAiB,GAKlB,MAAM,YAAY,CAAC;AAUpB;;;;;;;GAOG;AACH,MAAM,OAAO,2BAA2B;IAQT;IANZ,MAAM,CAA2B;IACjC,IAAI,CAAoB;IACjC,UAAU,GAAyB,IAAI,CAAC;IACxC,aAAa,GAA8B,IAAI,CAAC;IAChD,kBAAkB,GAAG,IAAI,CAAC;IAElC,YAA6B,MAAyC;QAAzC,WAAM,GAAN,MAAM,CAAmC;QACpE,IAAI,CAAC,MAAM,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,cAAsB;QACpC,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,cAAc,EAAE,CAAC;YACtE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,MAAqB;QACtC,qEAAqE;QACrE,6DAA6D;QAC7D,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC;YAAE,OAAO;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACpC,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;YAAE,OAAO;QAChD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE;YACpC,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YAC3E,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -1,9 +1,11 @@
1
1
  import { type AudioCodec, type InputAudioTrack, type Output } from 'mediabunny';
2
2
  import type { AudioTrackBridge } from '../../../video/mediabunny/audio/AudioTrackBridge';
3
+ import type { RenderTimeMap } from '../../../video/RenderTimeMap';
3
4
  export interface TranscodeAudioTrackBridgeConfig {
4
5
  inputTrack: InputAudioTrack;
5
6
  /** Target codec to encode into. Must be supported by the output container. */
6
7
  codec: AudioCodec;
8
+ timeMap: RenderTimeMap;
7
9
  }
8
10
  /**
9
11
  * Decodes the input audio track and re-encodes it into the requested
@@ -13,6 +15,7 @@ export interface TranscodeAudioTrackBridgeConfig {
13
15
  export declare class TranscodeAudioTrackBridge implements AudioTrackBridge {
14
16
  private readonly source;
15
17
  private readonly sink;
18
+ private readonly timeMap;
16
19
  private iterator;
17
20
  private nextSample;
18
21
  constructor(config: TranscodeAudioTrackBridgeConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"TranscodeAudioTrackBridge.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,UAAU,EAEf,KAAK,eAAe,EACpB,KAAK,MAAM,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAEzF,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,eAAe,CAAC;IAC5B,8EAA8E;IAC9E,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,gBAAgB;IAEhE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,UAAU,CAA4B;gBAElC,MAAM,EAAE,+BAA+B;IAK7C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAOf,IAAI;YAYJ,OAAO;CAKtB"}
1
+ {"version":3,"file":"TranscodeAudioTrackBridge.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,UAAU,EAEf,KAAK,eAAe,EACpB,KAAK,MAAM,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,eAAe,CAAC;IAC5B,8EAA8E;IAC9E,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,gBAAgB;IAEhE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,UAAU,CAA4B;gBAElC,MAAM,EAAE,+BAA+B;IAM7C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAOf,IAAI;YAeJ,OAAO;CAKtB"}
@@ -7,11 +7,13 @@ import { AudioSampleSink, AudioSampleSource, QUALITY_HIGH, } from 'mediabunny';
7
7
  export class TranscodeAudioTrackBridge {
8
8
  source;
9
9
  sink;
10
+ timeMap;
10
11
  iterator = null;
11
12
  nextSample = null;
12
13
  constructor(config) {
13
14
  this.source = new AudioSampleSource({ codec: config.codec, bitrate: QUALITY_HIGH });
14
15
  this.sink = new AudioSampleSink(config.inputTrack);
16
+ this.timeMap = config.timeMap;
15
17
  }
16
18
  async attachTo(output) {
17
19
  output.addAudioTrack(this.source);
@@ -34,9 +36,14 @@ export class TranscodeAudioTrackBridge {
34
36
  try {
35
37
  // Samples before t=0 (container offsets) are discarded because the
36
38
  // muxer rejects negative timestamps.
37
- if (sample.timestamp >= 0) {
38
- await this.source.add(sample);
39
+ if (sample.timestamp < 0)
40
+ return;
41
+ if (this.timeMap.isSkipped(sample.timestamp))
42
+ return;
43
+ if (!this.timeMap.isEmpty()) {
44
+ sample.setTimestamp(this.timeMap.toOutputTime(sample.timestamp));
39
45
  }
46
+ await this.source.add(sample);
40
47
  }
41
48
  finally {
42
49
  sample.close();
@@ -1 +1 @@
1
- {"version":3,"file":"TranscodeAudioTrackBridge.js","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,GAKb,MAAM,YAAY,CAAC;AASpB;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IAEnB,MAAM,CAAoB;IAC1B,IAAI,CAAkB;IAC/B,QAAQ,GAAsC,IAAI,CAAC;IACnD,UAAU,GAAuB,IAAI,CAAC;IAE9C,YAAY,MAAuC;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5D,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,cAAsB;QACpC,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,cAAc,EAAE,CAAC;YACtE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,MAAmB;QACpC,IAAI,CAAC;YACH,mEAAmE;YACnE,qCAAqC;YACrC,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnD,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"TranscodeAudioTrackBridge.js","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,GAKb,MAAM,YAAY,CAAC;AAWpB;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IAEnB,MAAM,CAAoB;IAC1B,IAAI,CAAkB;IACtB,OAAO,CAAgB;IAChC,QAAQ,GAAsC,IAAI,CAAC;IACnD,UAAU,GAAuB,IAAI,CAAC;IAE9C,YAAY,MAAuC;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5D,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,cAAsB;QACpC,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,cAAc,EAAE,CAAC;YACtE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,MAAmB;QACpC,IAAI,CAAC;YACH,mEAAmE;YACnE,qCAAqC;YACrC,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC;gBAAE,OAAO;YACjC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;gBAAE,OAAO;YACrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC5B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACnE,CAAC;YACD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnD,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC;CACF"}
@@ -20,6 +20,13 @@ export interface VideoCodecResolution {
20
20
  latencyMode: 'quality' | 'realtime';
21
21
  /** Optional hint about the content being encoded, e.g. `'text'` for high-contrast overlays. */
22
22
  contentHint?: string;
23
+ /**
24
+ * Distance, in seconds, between forced key frames. When omitted, the
25
+ * encoder picks its default cadence. A short interval trades file
26
+ * size for random-access granularity — useful for outputs that will
27
+ * be scrubbed heavily (e.g. preview proxies).
28
+ */
29
+ keyFrameInterval?: number;
23
30
  }
24
31
  /**
25
32
  * Resolves codec, bitrate and encoder knobs for a render.
@@ -1 +1 @@
1
- {"version":3,"file":"CodecPolicy.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/codec/CodecPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,WAAW,2BAA2B;IAC1C,mDAAmD;IACnD,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,UAAU,CAAC;IAClB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,UAAU,GAAG,UAAU,CAAC;IACrC,WAAW,EAAE,SAAS,GAAG,UAAU,CAAC;IACpC,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACnF"}
1
+ {"version":3,"file":"CodecPolicy.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/codec/CodecPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,WAAW,2BAA2B;IAC1C,mDAAmD;IACnD,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,UAAU,CAAC;IAClB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,UAAU,GAAG,UAAU,CAAC;IACrC,WAAW,EAAE,SAAS,GAAG,UAAU,CAAC;IACpC,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACnF"}
@@ -1,4 +1,4 @@
1
- import type { VideoFrameSource, VideoFrameRegion } from '../../../rendering/VideoFrameSource';
1
+ import type { VideoFrameSource, VideoFrameRegion } from '../../../rendering/types/VideoFrameSource';
2
2
  import type { DecodedVideoFrame } from '../../../video/mediabunny/frame/VideoFrameDecoder';
3
3
  /**
4
4
  * Single-slot `VideoFrameSource`. {@link setCurrent} stores one
@@ -1 +1 @@
1
- {"version":3,"file":"CurrentFrameVideoSource.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/frame/CurrentFrameVideoSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAC9F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAG3F;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,gBAAgB;IAI9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAQ;IAErD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoC;IACxD,OAAO,CAAC,gBAAgB,CAAuB;gBAEnC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IASzC;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAOvD,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBtG,OAAO,CAAC,MAAM;IAqBd,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;CAQtB"}
1
+ {"version":3,"file":"CurrentFrameVideoSource.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/frame/CurrentFrameVideoSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAG3F;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,gBAAgB;IAI9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAQ;IAErD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoC;IACxD,OAAO,CAAC,gBAAgB,CAAuB;gBAEnC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IASzC;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAOvD,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBtG,OAAO,CAAC,MAAM;IAqBd,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;CAQtB"}
@@ -4,8 +4,9 @@ import type { OverlayFrame } from '../../../rendering/OverlayFrameRenderer';
4
4
  /**
5
5
  * The inputs the compositor needs to produce one output frame: the
6
6
  * decoded source frame, the per-timestamp caption layer, the
7
- * frame-invariant overlay, and the target dimensions. Layer order is
8
- * the compositor's call, not the request's.
7
+ * frame-invariant overlay, an optional top actor-cutout layer, and
8
+ * the target dimensions. Layer order is the compositor's call, not
9
+ * the request's.
9
10
  */
10
11
  export interface FrameCompositionRequest {
11
12
  /** Decoded source frame for this output frame. */
@@ -14,6 +15,12 @@ export interface FrameCompositionRequest {
14
15
  readonly captions: SubtitleFrame | null;
15
16
  /** Frame-invariant decoration. `null` when no overlay was supplied. */
16
17
  readonly overlay: OverlayFrame | null;
18
+ /**
19
+ * Per-timestamp top layer painted after the captions — used by
20
+ * effects that must occlude the captions (e.g. text-behind-actor).
21
+ * `null` when no top layer applies to this frame.
22
+ */
23
+ readonly topLayer: OverlayFrame | null;
17
24
  /** Width in pixels of the composition target. */
18
25
  readonly width: number;
19
26
  /** Height in pixels of the composition target. */
@@ -1 +1 @@
1
- {"version":3,"file":"FrameCompositor.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/frame/FrameCompositor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IACxC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IACtC,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CACL,MAAM,EAAE,iCAAiC,GAAG,wBAAwB,EACpE,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAAC;CACT"}
1
+ {"version":3,"file":"FrameCompositor.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/frame/FrameCompositor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IACxC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IACvC,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CACL,MAAM,EAAE,iCAAiC,GAAG,wBAAwB,EACpE,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAAC;CACT"}
@@ -1,8 +1,11 @@
1
1
  import type { FrameCompositionRequest, FrameCompositor } from '../../../video/mediabunny/frame/FrameCompositor';
2
2
  /**
3
3
  * Paints the source frame at the base, then the frame-invariant
4
- * overlay on top of it, then the per-timestamp subtitle layer on top
5
- * of both captions stay readable through any overlay decoration.
4
+ * overlay on top of it, then the per-timestamp subtitle layer, then
5
+ * the optional top layer used by effects that need to occlude the
6
+ * captions (e.g. text-behind-actor). Captions stay readable through
7
+ * any overlay decoration; the top layer, when supplied, paints on top
8
+ * of the captions.
6
9
  */
7
10
  export declare class LayeredFrameCompositor implements FrameCompositor {
8
11
  compose(target: OffscreenCanvasRenderingContext2D | CanvasRenderingContext2D, request: FrameCompositionRequest): void;
@@ -1 +1 @@
1
- {"version":3,"file":"LayeredFrameCompositor.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/frame/LayeredFrameCompositor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EAChB,MAAM,iDAAiD,CAAC;AAEzD;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAE5D,OAAO,CACL,MAAM,EAAE,iCAAiC,GAAG,wBAAwB,EACpE,OAAO,EAAE,uBAAuB,GAC/B,IAAI;CASR"}
1
+ {"version":3,"file":"LayeredFrameCompositor.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/frame/LayeredFrameCompositor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EAChB,MAAM,iDAAiD,CAAC;AAEzD;;;;;;;GAOG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAE5D,OAAO,CACL,MAAM,EAAE,iCAAiC,GAAG,wBAAwB,EACpE,OAAO,EAAE,uBAAuB,GAC/B,IAAI;CAYR"}
@@ -1,7 +1,10 @@
1
1
  /**
2
2
  * Paints the source frame at the base, then the frame-invariant
3
- * overlay on top of it, then the per-timestamp subtitle layer on top
4
- * of both captions stay readable through any overlay decoration.
3
+ * overlay on top of it, then the per-timestamp subtitle layer, then
4
+ * the optional top layer used by effects that need to occlude the
5
+ * captions (e.g. text-behind-actor). Captions stay readable through
6
+ * any overlay decoration; the top layer, when supplied, paints on top
7
+ * of the captions.
5
8
  */
6
9
  export class LayeredFrameCompositor {
7
10
  compose(target, request) {
@@ -12,6 +15,9 @@ export class LayeredFrameCompositor {
12
15
  if (request.captions) {
13
16
  request.captions.draw(target, 0, 0, request.width, request.height);
14
17
  }
18
+ if (request.topLayer) {
19
+ request.topLayer.draw(target, 0, 0, request.width, request.height);
20
+ }
15
21
  }
16
22
  }
17
23
  //# sourceMappingURL=LayeredFrameCompositor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LayeredFrameCompositor.js","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/frame/LayeredFrameCompositor.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,OAAO,sBAAsB;IAEjC,OAAO,CACL,MAAoE,EACpE,OAAgC;QAEhC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"LayeredFrameCompositor.js","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/frame/LayeredFrameCompositor.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,OAAO,sBAAsB;IAEjC,OAAO,CACL,MAAoE,EACpE,OAAgC;QAEhC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,35 @@
1
+ import type { Document } from '../../../document/Document';
2
+ import type { OverlayFrameRenderer } from '../../../rendering/OverlayFrameRenderer';
3
+ import type { SubtitleStyle } from '../../../rendering/SubtitleFrameRenderer';
4
+ import type { DecodedVideoFrame } from '../../../video/mediabunny/frame/VideoFrameDecoder';
5
+ import type { FrameCompositor } from '../../../video/mediabunny/frame/FrameCompositor';
6
+ import type { SubtitleLayerSource } from '../../../video/mediabunny/caption/SubtitleLayerSource';
7
+ import type { TopLayerSource } from '../../../video/mediabunny/painter/TopLayerSource';
8
+ import type { PaintFrame } from '../../../video/mediabunny/encoder/VideoTrackEncoder';
9
+ import type { FramePainter } from '../../../video/mediabunny/painter/FramePainter';
10
+ /**
11
+ * Paints each output frame as the source frame composited with a
12
+ * per-timestamp caption raster and a frame-invariant overlay. The
13
+ * caption strategy (batched, video-frame-bound, mixed) lives entirely
14
+ * behind the {@link SubtitleLayerSource} injected in the constructor.
15
+ *
16
+ * Single-use: one open/close cycle per instance. Build a fresh one for
17
+ * each transcode run through the factory.
18
+ */
19
+ export declare class CaptionsOverlayFramePainter implements FramePainter {
20
+ private readonly subtitleLayer;
21
+ private readonly overlayRenderer;
22
+ private readonly frameCompositor;
23
+ private readonly document;
24
+ private readonly styles;
25
+ private readonly overlayHtml;
26
+ private readonly topLayer;
27
+ private width;
28
+ private height;
29
+ private overlay;
30
+ constructor(subtitleLayer: SubtitleLayerSource, overlayRenderer: OverlayFrameRenderer, frameCompositor: FrameCompositor, document: Document, styles: Readonly<Record<string, SubtitleStyle>>, overlayHtml: string | undefined, topLayer: TopLayerSource | null);
31
+ begin(width: number, height: number, fps: number): Promise<void>;
32
+ paint(frame: DecodedVideoFrame, _outputTimestamp: number): Promise<PaintFrame>;
33
+ end(): void;
34
+ }
35
+ //# sourceMappingURL=CaptionsOverlayFramePainter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CaptionsOverlayFramePainter.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAgB,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AACtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAUnF;;;;;;;;GAQG;AACH,qBAAa,2BAA4B,YAAW,YAAY;IAO5D,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX3B,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAA6B;gBAGzB,aAAa,EAAE,mBAAmB,EAClC,eAAe,EAAE,oBAAoB,EACrC,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,QAAQ,EAAE,cAAc,GAAG,IAAI;IAG5C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAahE,KAAK,CAAC,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAepF,GAAG,IAAI,IAAI;CAKZ"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Caption ticks step at the source's frame rate up to this cap. Past
3
+ * it, per-letter or per-word animations gain nothing from extra renders
4
+ * (the eye doesn't resolve sub-30fps differences in caption motion) and
5
+ * the per-batch subtitle decode dominates the render budget.
6
+ */
7
+ const CAPTION_FPS_CAP = 30;
8
+ /**
9
+ * Paints each output frame as the source frame composited with a
10
+ * per-timestamp caption raster and a frame-invariant overlay. The
11
+ * caption strategy (batched, video-frame-bound, mixed) lives entirely
12
+ * behind the {@link SubtitleLayerSource} injected in the constructor.
13
+ *
14
+ * Single-use: one open/close cycle per instance. Build a fresh one for
15
+ * each transcode run through the factory.
16
+ */
17
+ export class CaptionsOverlayFramePainter {
18
+ subtitleLayer;
19
+ overlayRenderer;
20
+ frameCompositor;
21
+ document;
22
+ styles;
23
+ overlayHtml;
24
+ topLayer;
25
+ width = 0;
26
+ height = 0;
27
+ overlay = null;
28
+ constructor(subtitleLayer, overlayRenderer, frameCompositor, document, styles, overlayHtml, topLayer) {
29
+ this.subtitleLayer = subtitleLayer;
30
+ this.overlayRenderer = overlayRenderer;
31
+ this.frameCompositor = frameCompositor;
32
+ this.document = document;
33
+ this.styles = styles;
34
+ this.overlayHtml = overlayHtml;
35
+ this.topLayer = topLayer;
36
+ }
37
+ async begin(width, height, fps) {
38
+ this.width = width;
39
+ this.height = height;
40
+ const captionInterval = 1 / Math.min(fps, CAPTION_FPS_CAP);
41
+ await this.subtitleLayer.open(this.document, this.styles, width, height, captionInterval);
42
+ if (this.overlayHtml !== undefined) {
43
+ this.overlay = await this.overlayRenderer.render(this.overlayHtml, width, height);
44
+ }
45
+ if (this.topLayer !== null) {
46
+ await this.topLayer.open(this.document, this.styles, width, height, captionInterval);
47
+ }
48
+ }
49
+ async paint(frame, _outputTimestamp) {
50
+ const captions = await this.subtitleLayer.frameAt(frame.timestamp, frame);
51
+ const topLayer = this.topLayer === null ? null : await this.topLayer.frameAt(frame.timestamp, frame);
52
+ return (ctx) => {
53
+ this.frameCompositor.compose(ctx, {
54
+ frame,
55
+ captions,
56
+ overlay: this.overlay,
57
+ topLayer,
58
+ width: this.width,
59
+ height: this.height,
60
+ });
61
+ };
62
+ }
63
+ end() {
64
+ this.subtitleLayer.close();
65
+ this.topLayer?.close();
66
+ this.overlay = null;
67
+ }
68
+ }
69
+ //# sourceMappingURL=CaptionsOverlayFramePainter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CaptionsOverlayFramePainter.js","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.ts"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;;;;;;;GAQG;AACH,MAAM,OAAO,2BAA2B;IAOnB;IACA;IACA;IACA;IACA;IACA;IACA;IAXX,KAAK,GAAG,CAAC,CAAC;IACV,MAAM,GAAG,CAAC,CAAC;IACX,OAAO,GAAwB,IAAI,CAAC;IAE5C,YACmB,aAAkC,EAClC,eAAqC,EACrC,eAAgC,EAChC,QAAkB,EAClB,MAA+C,EAC/C,WAA+B,EAC/B,QAA+B;QAN/B,kBAAa,GAAb,aAAa,CAAqB;QAClC,oBAAe,GAAf,eAAe,CAAsB;QACrC,oBAAe,GAAf,eAAe,CAAiB;QAChC,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAyC;QAC/C,gBAAW,GAAX,WAAW,CAAoB;QAC/B,aAAQ,GAAR,QAAQ,CAAuB;IAC/C,CAAC;IAEJ,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,MAAc,EAAE,GAAW;QACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAC3D,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAC1F,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAwB,EAAE,gBAAwB;QAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACrG,OAAO,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE;gBAChC,KAAK;gBACL,QAAQ;gBACR,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ;gBACR,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,GAAG;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ import type { Document } from '../../../document/Document';
2
+ import type { OverlayFrameRenderer } from '../../../rendering/OverlayFrameRenderer';
3
+ import type { SubtitleStyle } from '../../../rendering/SubtitleFrameRenderer';
4
+ import type { FrameCompositor } from '../../../video/mediabunny/frame/FrameCompositor';
5
+ import type { SubtitleLayerSource } from '../../../video/mediabunny/caption/SubtitleLayerSource';
6
+ import type { TopLayerSource } from '../../../video/mediabunny/painter/TopLayerSource';
7
+ import { CaptionsOverlayFramePainter } from '../../../video/mediabunny/painter/CaptionsOverlayFramePainter';
8
+ /**
9
+ * Builds a fresh {@link CaptionsOverlayFramePainter} bound to a
10
+ * specific document, style set, (optional) overlay HTML, and an
11
+ * (optional) top-layer source. The factory owns the shared,
12
+ * engine-wide dependencies (subtitle source, overlay renderer,
13
+ * compositor); each call to {@link create} returns a single-use
14
+ * painter for one transcode run.
15
+ */
16
+ export declare class CaptionsOverlayFramePainterFactory {
17
+ private readonly subtitleLayer;
18
+ private readonly overlayRenderer;
19
+ private readonly frameCompositor;
20
+ constructor(subtitleLayer: SubtitleLayerSource, overlayRenderer: OverlayFrameRenderer, frameCompositor: FrameCompositor);
21
+ create(document: Document, styles: Readonly<Record<string, SubtitleStyle>>, overlayHtml: string | undefined, topLayer?: TopLayerSource | null): CaptionsOverlayFramePainter;
22
+ }
23
+ //# sourceMappingURL=CaptionsOverlayFramePainterFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CaptionsOverlayFramePainterFactory.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+DAA+D,CAAC;AAE5G;;;;;;;GAOG;AACH,qBAAa,kCAAkC;IAG3C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAFf,aAAa,EAAE,mBAAmB,EAClC,eAAe,EAAE,oBAAoB,EACrC,eAAe,EAAE,eAAe;IAGnD,MAAM,CACJ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,QAAQ,GAAE,cAAc,GAAG,IAAW,GACrC,2BAA2B;CAW/B"}
@@ -0,0 +1,23 @@
1
+ import { CaptionsOverlayFramePainter } from '../../../video/mediabunny/painter/CaptionsOverlayFramePainter';
2
+ /**
3
+ * Builds a fresh {@link CaptionsOverlayFramePainter} bound to a
4
+ * specific document, style set, (optional) overlay HTML, and an
5
+ * (optional) top-layer source. The factory owns the shared,
6
+ * engine-wide dependencies (subtitle source, overlay renderer,
7
+ * compositor); each call to {@link create} returns a single-use
8
+ * painter for one transcode run.
9
+ */
10
+ export class CaptionsOverlayFramePainterFactory {
11
+ subtitleLayer;
12
+ overlayRenderer;
13
+ frameCompositor;
14
+ constructor(subtitleLayer, overlayRenderer, frameCompositor) {
15
+ this.subtitleLayer = subtitleLayer;
16
+ this.overlayRenderer = overlayRenderer;
17
+ this.frameCompositor = frameCompositor;
18
+ }
19
+ create(document, styles, overlayHtml, topLayer = null) {
20
+ return new CaptionsOverlayFramePainter(this.subtitleLayer, this.overlayRenderer, this.frameCompositor, document, styles, overlayHtml, topLayer);
21
+ }
22
+ }
23
+ //# sourceMappingURL=CaptionsOverlayFramePainterFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CaptionsOverlayFramePainterFactory.js","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+DAA+D,CAAC;AAE5G;;;;;;;GAOG;AACH,MAAM,OAAO,kCAAkC;IAG1B;IACA;IACA;IAHnB,YACmB,aAAkC,EAClC,eAAqC,EACrC,eAAgC;QAFhC,kBAAa,GAAb,aAAa,CAAqB;QAClC,oBAAe,GAAf,eAAe,CAAsB;QACrC,oBAAe,GAAf,eAAe,CAAiB;IAChD,CAAC;IAEJ,MAAM,CACJ,QAAkB,EAClB,MAA+C,EAC/C,WAA+B,EAC/B,WAAkC,IAAI;QAEtC,OAAO,IAAI,2BAA2B,CACpC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,eAAe,EACpB,QAAQ,EACR,MAAM,EACN,WAAW,EACX,QAAQ,CACT,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,46 @@
1
+ import type { DecodedVideoFrame } from '../../../video/mediabunny/frame/VideoFrameDecoder';
2
+ import type { PaintFrame } from '../../../video/mediabunny/encoder/VideoTrackEncoder';
3
+ /**
4
+ * Owns the pixel work for a single transcode run: what to draw into
5
+ * every output frame's canvas. The transcode coordinator owns the
6
+ * encode loop and decides *when* each frame runs; the painter decides
7
+ * *what* the frame looks like.
8
+ *
9
+ * Lifecycle is per-run: {@link begin} once at the start with the
10
+ * resolved output dimensions and source frame rate, {@link paint} for
11
+ * each decoded frame in monotonically advancing source-time order, and
12
+ * {@link end} once at the end (called on both success and failure).
13
+ * Instances are single-use unless the concrete class documents
14
+ * otherwise.
15
+ *
16
+ * The two-step {@link paint} contract exists because
17
+ * {@link VideoTrackEncoder.encode} takes a synchronous paint callback:
18
+ * any per-frame work that has to be awaited (e.g. rasterizing a
19
+ * caption layer) happens inside {@link paint}, and the returned
20
+ * closure runs synchronously against the encoder's canvas.
21
+ */
22
+ export interface FramePainter {
23
+ /**
24
+ * Opens per-run resources (e.g. caption source, overlay raster) for
25
+ * a run at the given output pixel dimensions. `fps` is the source
26
+ * frame rate the coordinator resolved — implementations may cap or
27
+ * quantize it as they see fit.
28
+ */
29
+ begin(width: number, height: number, fps: number): Promise<void>;
30
+ /**
31
+ * Resolves any per-frame state asynchronously and returns the
32
+ * synchronous paint step the encoder will run. `outputTimestamp` is
33
+ * the frame's presentation time on the output timeline (already
34
+ * mapped through any skip ranges by the caller); `frame.timestamp`
35
+ * carries the source-timeline time and stays authoritative for any
36
+ * lookup against source-aligned data (captions, per-source overlays).
37
+ */
38
+ paint(frame: DecodedVideoFrame, outputTimestamp: number): Promise<PaintFrame>;
39
+ /**
40
+ * Releases the per-run resources opened by {@link begin}. Called on
41
+ * both success and failure paths of the enclosing run. Idempotent:
42
+ * safe to call before or after {@link begin} succeeds.
43
+ */
44
+ end(): void;
45
+ }
46
+ //# sourceMappingURL=FramePainter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FramePainter.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/painter/FramePainter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AAEtF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAE9E;;;;OAIG;IACH,GAAG,IAAI,IAAI,CAAC;CACb"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FramePainter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FramePainter.js","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/painter/FramePainter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import type { Document } from '../../../document/Document';
2
+ import type { SubtitleStyle } from '../../../rendering/SubtitleFrameRenderer';
3
+ import type { OverlayFrame } from '../../../rendering/OverlayFrameRenderer';
4
+ import type { DecodedVideoFrame } from '../../../video/mediabunny/frame/VideoFrameDecoder';
5
+ /**
6
+ * Produces one on-top raster per video frame — the layer the
7
+ * compositor paints above the caption layer. Consumers use it to
8
+ * occlude the captions with an effect (a person cutout, a
9
+ * frame-locked decoration) whose pixels depend on the source frame.
10
+ *
11
+ * Lifecycle mirrors {@link SubtitleLayerSource}: {@link open} prepares
12
+ * the source for a render, {@link frameAt} services each video frame
13
+ * in monotonically advancing `time` order, and {@link close} releases
14
+ * resources. Open/close pairs may repeat against the same instance,
15
+ * but a source cannot serve two renders concurrently.
16
+ *
17
+ * `frameAt` returns `null` when this frame has no on-top layer to
18
+ * paint; the compositor then skips the layer entirely for that frame.
19
+ */
20
+ export interface TopLayerSource {
21
+ open(doc: Document, styles: Readonly<Record<string, SubtitleStyle>>, width: number, height: number, tickInterval: number): Promise<void>;
22
+ frameAt(time: number, videoFrame: DecodedVideoFrame): Promise<OverlayFrame | null>;
23
+ close(): void;
24
+ }
25
+ //# sourceMappingURL=TopLayerSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopLayerSource.d.ts","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/painter/TopLayerSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAE3F;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CACF,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAEnF,KAAK,IAAI,IAAI,CAAC;CACf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TopLayerSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopLayerSource.js","sourceRoot":"","sources":["../../../../../src/modules/video/mediabunny/painter/TopLayerSource.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tscaps/engine",
3
- "version": "0.1.1",
3
+ "version": "0.2.1",
4
4
  "description": "Burn subtitles into video in the browser. CSS-styled captions, frame-accurate export, no server.",
5
5
  "keywords": [
6
6
  "subtitles",
@@ -1 +0,0 @@
1
- {"version":3,"file":"AlignmentConfig.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/AlignmentConfig.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,aAAa,CAAC;IAE7B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IAEjC,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AlignmentConfig.js","sourceRoot":"","sources":["../../../src/modules/rendering/AlignmentConfig.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BoxEdges.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/BoxEdges.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BoxEdges.js","sourceRoot":"","sources":["../../../src/modules/rendering/BoxEdges.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ElementRenderOverrides.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/ElementRenderOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAEpF;;;;GAIG;AACH,qBAAa,sBAAsB;IAY/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,MAAM,CAAC,KAAK,IAAI,sBAAsB;IAItC,MAAM,CAAC,WAAW,CAChB,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,GAC9D,sBAAsB;IAIzB,OAAO;IAIP,OAAO,IAAI,OAAO;IAIlB,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;CAGzD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ElementRenderOverrides.js","sourceRoot":"","sources":["../../../src/modules/rendering/ElementRenderOverrides.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,sBAAsB;IAYd;IAXnB,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,sBAAsB,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,WAAW,CAChB,OAA+D;QAE/D,OAAO,IAAI,sBAAsB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,YACmB,OAAkD;QAAlD,YAAO,GAAP,OAAO,CAA2C;IAClE,CAAC;IAEJ,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InlineStyleMap.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/InlineStyleMap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InlineStyleMap.js","sourceRoot":"","sources":["../../../src/modules/rendering/InlineStyleMap.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RenderingConfig.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/RenderingConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;IAC3C,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;CACnC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RenderingConfig.js","sourceRoot":"","sources":["../../../src/modules/rendering/RenderingConfig.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ScopedRenderOverride.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/ScopedRenderOverride.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC/C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ScopedRenderOverride.js","sourceRoot":"","sources":["../../../src/modules/rendering/ScopedRenderOverride.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SegmentPaintRegionResolver.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/SegmentPaintRegionResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,oGAAoG;IACpG,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,sGAAsG;IACtG,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,qBAAa,0BAA0B;IAErC,OAAO,CAAC,KAAK,EAAE,uBAAuB,GAAG,gBAAgB;IAezD,OAAO,CAAC,aAAa;CAuBtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SegmentPaintRegionResolver.js","sourceRoot":"","sources":["../../../src/modules/rendering/SegmentPaintRegionResolver.ts"],"names":[],"mappings":"AA+BA;;;;;;;GAOG;AACH,MAAM,OAAO,0BAA0B;IAErC,OAAO,CAAC,KAA8B;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,gCAAgC,KAAK,CAAC,aAAa,eAAe,KAAK,CAAC,cAAc,KAAK,CAAC;QACjH,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,uBAAuB,CAAC;QAC9C,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxB,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,IAAiB,EAAE,KAA8B;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAgC,CAAC;QACtD,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAgC,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC;QAElD,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,GAAG,CAAC;QACjG,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,GAAG,CAAC;QACjG,MAAM,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC;QACvD,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC;QAEpD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC;QACvG,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC;QACzG,OAAO;YACL,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,GAAG;YACN,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;YAChC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;SAClC,CAAC;IACJ,CAAC;CACF"}