webcodecs-node 0.7.2 → 0.8.5

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 (507) hide show
  1. package/README.md +106 -16
  2. package/dist/backends/node-av/HardwarePipeline.d.ts +36 -0
  3. package/dist/backends/node-av/HardwarePipeline.d.ts.map +1 -0
  4. package/dist/backends/node-av/HardwarePipeline.js +203 -0
  5. package/dist/backends/node-av/HardwarePipeline.js.map +1 -0
  6. package/dist/backends/node-av/audio/NodeAvAudioDecoder.d.ts +46 -0
  7. package/dist/backends/node-av/audio/NodeAvAudioDecoder.d.ts.map +1 -0
  8. package/dist/backends/node-av/audio/NodeAvAudioDecoder.js +277 -0
  9. package/dist/backends/node-av/audio/NodeAvAudioDecoder.js.map +1 -0
  10. package/dist/backends/node-av/audio/NodeAvAudioEncoder.d.ts +47 -0
  11. package/dist/backends/node-av/audio/NodeAvAudioEncoder.d.ts.map +1 -0
  12. package/dist/backends/node-av/audio/NodeAvAudioEncoder.js +363 -0
  13. package/dist/backends/node-av/audio/NodeAvAudioEncoder.js.map +1 -0
  14. package/dist/backends/node-av/audio/decoder/channel-layout.d.ts +12 -0
  15. package/dist/backends/node-av/audio/decoder/channel-layout.d.ts.map +1 -0
  16. package/dist/backends/node-av/audio/decoder/channel-layout.js +24 -0
  17. package/dist/backends/node-av/audio/decoder/channel-layout.js.map +1 -0
  18. package/dist/backends/node-av/audio/decoder/codec-mapping.d.ts +9 -0
  19. package/dist/backends/node-av/audio/decoder/codec-mapping.d.ts.map +1 -0
  20. package/dist/backends/node-av/audio/decoder/codec-mapping.js +40 -0
  21. package/dist/backends/node-av/audio/decoder/codec-mapping.js.map +1 -0
  22. package/dist/backends/node-av/audio/decoder/constants.d.ts +6 -0
  23. package/dist/backends/node-av/audio/decoder/constants.d.ts.map +1 -0
  24. package/dist/backends/node-av/audio/decoder/constants.js +6 -0
  25. package/dist/backends/node-av/audio/decoder/constants.js.map +1 -0
  26. package/dist/backends/node-av/audio/decoder/index.d.ts +8 -0
  27. package/dist/backends/node-av/audio/decoder/index.d.ts.map +1 -0
  28. package/dist/backends/node-av/audio/decoder/index.js +8 -0
  29. package/dist/backends/node-av/audio/decoder/index.js.map +1 -0
  30. package/dist/backends/node-av/audio/decoder/sample-format.d.ts +14 -0
  31. package/dist/backends/node-av/audio/decoder/sample-format.d.ts.map +1 -0
  32. package/dist/backends/node-av/audio/decoder/sample-format.js +54 -0
  33. package/dist/backends/node-av/audio/decoder/sample-format.js.map +1 -0
  34. package/dist/backends/node-av/audio/encoder/channel-layout.d.ts +12 -0
  35. package/dist/backends/node-av/audio/encoder/channel-layout.d.ts.map +1 -0
  36. package/dist/backends/node-av/audio/encoder/channel-layout.js +24 -0
  37. package/dist/backends/node-av/audio/encoder/channel-layout.js.map +1 -0
  38. package/dist/backends/node-av/audio/encoder/codec-description.d.ts +33 -0
  39. package/dist/backends/node-av/audio/encoder/codec-description.d.ts.map +1 -0
  40. package/dist/backends/node-av/audio/encoder/codec-description.js +137 -0
  41. package/dist/backends/node-av/audio/encoder/codec-description.js.map +1 -0
  42. package/dist/backends/node-av/audio/encoder/codec-mapping.d.ts +12 -0
  43. package/dist/backends/node-av/audio/encoder/codec-mapping.d.ts.map +1 -0
  44. package/dist/backends/node-av/audio/encoder/codec-mapping.js +61 -0
  45. package/dist/backends/node-av/audio/encoder/codec-mapping.js.map +1 -0
  46. package/dist/backends/node-av/audio/encoder/constants.d.ts +6 -0
  47. package/dist/backends/node-av/audio/encoder/constants.d.ts.map +1 -0
  48. package/dist/backends/node-av/audio/encoder/constants.js +6 -0
  49. package/dist/backends/node-av/audio/encoder/constants.js.map +1 -0
  50. package/dist/backends/node-av/audio/encoder/drain.d.ts +32 -0
  51. package/dist/backends/node-av/audio/encoder/drain.d.ts.map +1 -0
  52. package/dist/backends/node-av/audio/encoder/drain.js +51 -0
  53. package/dist/backends/node-av/audio/encoder/drain.js.map +1 -0
  54. package/dist/backends/node-av/audio/encoder/index.d.ts +20 -0
  55. package/dist/backends/node-av/audio/encoder/index.d.ts.map +1 -0
  56. package/dist/backends/node-av/audio/encoder/index.js +20 -0
  57. package/dist/backends/node-av/audio/encoder/index.js.map +1 -0
  58. package/dist/backends/node-av/audio/encoder/options.d.ts +40 -0
  59. package/dist/backends/node-av/audio/encoder/options.d.ts.map +1 -0
  60. package/dist/backends/node-av/audio/encoder/options.js +127 -0
  61. package/dist/backends/node-av/audio/encoder/options.js.map +1 -0
  62. package/dist/backends/node-av/audio/encoder/sample-format-convert.d.ts +40 -0
  63. package/dist/backends/node-av/audio/encoder/sample-format-convert.d.ts.map +1 -0
  64. package/dist/backends/node-av/audio/encoder/sample-format-convert.js +152 -0
  65. package/dist/backends/node-av/audio/encoder/sample-format-convert.js.map +1 -0
  66. package/dist/backends/node-av/hardware-pipeline/capabilities.d.ts +10 -0
  67. package/dist/backends/node-av/hardware-pipeline/capabilities.d.ts.map +1 -0
  68. package/dist/backends/node-av/hardware-pipeline/capabilities.js +45 -0
  69. package/dist/backends/node-av/hardware-pipeline/capabilities.js.map +1 -0
  70. package/dist/backends/node-av/hardware-pipeline/index.d.ts +6 -0
  71. package/dist/backends/node-av/hardware-pipeline/index.d.ts.map +1 -0
  72. package/dist/backends/node-av/hardware-pipeline/index.js +5 -0
  73. package/dist/backends/node-av/hardware-pipeline/index.js.map +1 -0
  74. package/dist/backends/node-av/hardware-pipeline/types.d.ts +13 -0
  75. package/dist/backends/node-av/hardware-pipeline/types.d.ts.map +1 -0
  76. package/dist/backends/node-av/hardware-pipeline/types.js +5 -0
  77. package/dist/backends/node-av/hardware-pipeline/types.js.map +1 -0
  78. package/dist/backends/node-av/image/NodeAvImageDecoder.d.ts +95 -0
  79. package/dist/backends/node-av/image/NodeAvImageDecoder.d.ts.map +1 -0
  80. package/dist/backends/node-av/image/NodeAvImageDecoder.js +383 -0
  81. package/dist/backends/node-av/image/NodeAvImageDecoder.js.map +1 -0
  82. package/dist/backends/node-av/image/WebPImageDecoder.d.ts +57 -0
  83. package/dist/backends/node-av/image/WebPImageDecoder.d.ts.map +1 -0
  84. package/dist/backends/node-av/image/WebPImageDecoder.js +178 -0
  85. package/dist/backends/node-av/image/WebPImageDecoder.js.map +1 -0
  86. package/dist/backends/node-av/image/decoder/constants.d.ts +14 -0
  87. package/dist/backends/node-av/image/decoder/constants.d.ts.map +1 -0
  88. package/dist/backends/node-av/image/decoder/constants.js +24 -0
  89. package/dist/backends/node-av/image/decoder/constants.js.map +1 -0
  90. package/dist/backends/node-av/image/decoder/index.d.ts +7 -0
  91. package/dist/backends/node-av/image/decoder/index.d.ts.map +1 -0
  92. package/dist/backends/node-av/image/decoder/index.js +6 -0
  93. package/dist/backends/node-av/image/decoder/index.js.map +1 -0
  94. package/dist/backends/node-av/image/decoder/probe.d.ts +12 -0
  95. package/dist/backends/node-av/image/decoder/probe.d.ts.map +1 -0
  96. package/dist/backends/node-av/image/decoder/probe.js +57 -0
  97. package/dist/backends/node-av/image/decoder/probe.js.map +1 -0
  98. package/dist/backends/node-av/image/decoder/types.d.ts +25 -0
  99. package/dist/backends/node-av/image/decoder/types.d.ts.map +1 -0
  100. package/dist/backends/node-av/image/decoder/types.js +5 -0
  101. package/dist/backends/node-av/image/decoder/types.js.map +1 -0
  102. package/dist/backends/node-av/video/NodeAvVideoDecoder.d.ts +44 -0
  103. package/dist/backends/node-av/video/NodeAvVideoDecoder.d.ts.map +1 -0
  104. package/dist/backends/node-av/video/NodeAvVideoDecoder.js +326 -0
  105. package/dist/backends/node-av/video/NodeAvVideoDecoder.js.map +1 -0
  106. package/dist/backends/node-av/video/NodeAvVideoEncoder.d.ts +49 -0
  107. package/dist/backends/node-av/video/NodeAvVideoEncoder.d.ts.map +1 -0
  108. package/dist/backends/node-av/video/NodeAvVideoEncoder.js +317 -0
  109. package/dist/backends/node-av/video/NodeAvVideoEncoder.js.map +1 -0
  110. package/dist/backends/node-av/video/decoder/codec-mapping.d.ts +9 -0
  111. package/dist/backends/node-av/video/decoder/codec-mapping.d.ts.map +1 -0
  112. package/dist/backends/node-av/video/decoder/codec-mapping.js +25 -0
  113. package/dist/backends/node-av/video/decoder/codec-mapping.js.map +1 -0
  114. package/dist/backends/node-av/video/decoder/constants.d.ts +13 -0
  115. package/dist/backends/node-av/video/decoder/constants.d.ts.map +1 -0
  116. package/dist/backends/node-av/video/decoder/constants.js +13 -0
  117. package/dist/backends/node-av/video/decoder/constants.js.map +1 -0
  118. package/dist/backends/node-av/video/decoder/index.d.ts +7 -0
  119. package/dist/backends/node-av/video/decoder/index.d.ts.map +1 -0
  120. package/dist/backends/node-av/video/decoder/index.js +7 -0
  121. package/dist/backends/node-av/video/decoder/index.js.map +1 -0
  122. package/dist/backends/node-av/video/decoder/pixel-format.d.ts +13 -0
  123. package/dist/backends/node-av/video/decoder/pixel-format.d.ts.map +1 -0
  124. package/dist/backends/node-av/video/decoder/pixel-format.js +88 -0
  125. package/dist/backends/node-av/video/decoder/pixel-format.js.map +1 -0
  126. package/dist/backends/node-av/video/encoder/codec-description.d.ts +26 -0
  127. package/dist/backends/node-av/video/encoder/codec-description.d.ts.map +1 -0
  128. package/dist/backends/node-av/video/encoder/codec-description.js +86 -0
  129. package/dist/backends/node-av/video/encoder/codec-description.js.map +1 -0
  130. package/dist/backends/node-av/video/encoder/drain.d.ts +34 -0
  131. package/dist/backends/node-av/video/encoder/drain.d.ts.map +1 -0
  132. package/dist/backends/node-av/video/encoder/drain.js +51 -0
  133. package/dist/backends/node-av/video/encoder/drain.js.map +1 -0
  134. package/dist/backends/node-av/video/encoder/filters.d.ts +37 -0
  135. package/dist/backends/node-av/video/encoder/filters.d.ts.map +1 -0
  136. package/dist/backends/node-av/video/encoder/filters.js +71 -0
  137. package/dist/backends/node-av/video/encoder/filters.js.map +1 -0
  138. package/dist/backends/node-av/video/encoder/gpu-filters.d.ts +9 -0
  139. package/dist/backends/node-av/video/encoder/gpu-filters.d.ts.map +1 -0
  140. package/dist/backends/node-av/video/encoder/gpu-filters.js +26 -0
  141. package/dist/backends/node-av/video/encoder/gpu-filters.js.map +1 -0
  142. package/dist/backends/node-av/video/encoder/hardware-constraints.d.ts +12 -0
  143. package/dist/backends/node-av/video/encoder/hardware-constraints.d.ts.map +1 -0
  144. package/dist/backends/node-av/video/encoder/hardware-constraints.js +31 -0
  145. package/dist/backends/node-av/video/encoder/hardware-constraints.js.map +1 -0
  146. package/dist/backends/node-av/video/encoder/index.d.ts +28 -0
  147. package/dist/backends/node-av/video/encoder/index.d.ts.map +1 -0
  148. package/dist/backends/node-av/video/encoder/index.js +28 -0
  149. package/dist/backends/node-av/video/encoder/index.js.map +1 -0
  150. package/dist/backends/node-av/video/encoder/options.d.ts +39 -0
  151. package/dist/backends/node-av/video/encoder/options.d.ts.map +1 -0
  152. package/dist/backends/node-av/video/encoder/options.js +195 -0
  153. package/dist/backends/node-av/video/encoder/options.js.map +1 -0
  154. package/dist/backends/node-av/video/encoder/pixel-format-config.d.ts +42 -0
  155. package/dist/backends/node-av/video/encoder/pixel-format-config.d.ts.map +1 -0
  156. package/dist/backends/node-av/video/encoder/pixel-format-config.js +122 -0
  157. package/dist/backends/node-av/video/encoder/pixel-format-config.js.map +1 -0
  158. package/dist/backends/node-av/video/encoder/pixel-format.d.ts +13 -0
  159. package/dist/backends/node-av/video/encoder/pixel-format.d.ts.map +1 -0
  160. package/dist/backends/node-av/video/encoder/pixel-format.js +68 -0
  161. package/dist/backends/node-av/video/encoder/pixel-format.js.map +1 -0
  162. package/dist/backends/node-av/video/encoder/setup.d.ts +33 -0
  163. package/dist/backends/node-av/video/encoder/setup.d.ts.map +1 -0
  164. package/dist/backends/node-av/video/encoder/setup.js +62 -0
  165. package/dist/backends/node-av/video/encoder/setup.js.map +1 -0
  166. package/dist/backends/node-av/video/encoder/software-encoders.d.ts +8 -0
  167. package/dist/backends/node-av/video/encoder/software-encoders.d.ts.map +1 -0
  168. package/dist/backends/node-av/video/encoder/software-encoders.js +17 -0
  169. package/dist/backends/node-av/video/encoder/software-encoders.js.map +1 -0
  170. package/dist/backends/node-av/video/encoder/timestamp.d.ts +34 -0
  171. package/dist/backends/node-av/video/encoder/timestamp.d.ts.map +1 -0
  172. package/dist/backends/node-av/video/encoder/timestamp.js +39 -0
  173. package/dist/backends/node-av/video/encoder/timestamp.js.map +1 -0
  174. package/dist/backends/types.d.ts +44 -0
  175. package/dist/backends/types.d.ts.map +1 -1
  176. package/dist/backends/types.js.map +1 -1
  177. package/dist/codec-utils/formats.d.ts.map +1 -1
  178. package/dist/codec-utils/formats.js +78 -0
  179. package/dist/codec-utils/formats.js.map +1 -1
  180. package/dist/codec-utils/types.d.ts +1 -1
  181. package/dist/codecs/aac.d.ts +10 -0
  182. package/dist/codecs/aac.d.ts.map +1 -0
  183. package/dist/codecs/aac.js +10 -0
  184. package/dist/codecs/aac.js.map +1 -0
  185. package/dist/codecs/avc.d.ts +11 -0
  186. package/dist/codecs/avc.d.ts.map +1 -0
  187. package/dist/codecs/avc.js +11 -0
  188. package/dist/codecs/avc.js.map +1 -0
  189. package/dist/codecs/hevc.d.ts +11 -0
  190. package/dist/codecs/hevc.d.ts.map +1 -0
  191. package/dist/codecs/hevc.js +11 -0
  192. package/dist/codecs/hevc.js.map +1 -0
  193. package/dist/codecs/index.d.ts +10 -0
  194. package/dist/codecs/index.d.ts.map +1 -0
  195. package/dist/codecs/index.js +14 -0
  196. package/dist/codecs/index.js.map +1 -0
  197. package/dist/codecs/validation/audio.d.ts +19 -0
  198. package/dist/codecs/validation/audio.d.ts.map +1 -0
  199. package/dist/codecs/validation/audio.js +111 -0
  200. package/dist/codecs/validation/audio.js.map +1 -0
  201. package/dist/codecs/validation/config.d.ts +27 -0
  202. package/dist/codecs/validation/config.d.ts.map +1 -0
  203. package/dist/codecs/validation/config.js +154 -0
  204. package/dist/codecs/validation/config.js.map +1 -0
  205. package/dist/codecs/validation/index.d.ts +9 -0
  206. package/dist/codecs/validation/index.d.ts.map +1 -0
  207. package/dist/codecs/validation/index.js +12 -0
  208. package/dist/codecs/validation/index.js.map +1 -0
  209. package/dist/codecs/validation/video.d.ts +24 -0
  210. package/dist/codecs/validation/video.d.ts.map +1 -0
  211. package/dist/codecs/validation/video.js +196 -0
  212. package/dist/codecs/validation/video.js.map +1 -0
  213. package/dist/config/webcodecs-config.d.ts +58 -0
  214. package/dist/config/webcodecs-config.d.ts.map +1 -0
  215. package/dist/config/webcodecs-config.js +187 -0
  216. package/dist/config/webcodecs-config.js.map +1 -0
  217. package/dist/containers/Demuxer.d.ts +3 -1
  218. package/dist/containers/Demuxer.d.ts.map +1 -1
  219. package/dist/containers/Demuxer.js +26 -19
  220. package/dist/containers/Demuxer.js.map +1 -1
  221. package/dist/containers/FFmpegMuxer.d.ts +42 -0
  222. package/dist/containers/FFmpegMuxer.d.ts.map +1 -0
  223. package/dist/containers/FFmpegMuxer.js +311 -0
  224. package/dist/containers/FFmpegMuxer.js.map +1 -0
  225. package/dist/containers/Muxer.d.ts +75 -107
  226. package/dist/containers/Muxer.d.ts.map +1 -1
  227. package/dist/containers/Muxer.js +184 -243
  228. package/dist/containers/Muxer.js.map +1 -1
  229. package/dist/containers/NodeAvMuxer.d.ts +125 -0
  230. package/dist/containers/NodeAvMuxer.d.ts.map +1 -0
  231. package/dist/containers/NodeAvMuxer.js +458 -0
  232. package/dist/containers/NodeAvMuxer.js.map +1 -0
  233. package/dist/containers/extract.d.ts.map +1 -1
  234. package/dist/containers/extract.js +3 -1
  235. package/dist/containers/extract.js.map +1 -1
  236. package/dist/containers/index.d.ts +20 -14
  237. package/dist/containers/index.d.ts.map +1 -1
  238. package/dist/containers/index.js +21 -14
  239. package/dist/containers/index.js.map +1 -1
  240. package/dist/containers/muxer-types.d.ts +117 -0
  241. package/dist/containers/muxer-types.d.ts.map +1 -0
  242. package/dist/containers/muxer-types.js +45 -0
  243. package/dist/containers/muxer-types.js.map +1 -0
  244. package/dist/containers/transcode.d.ts.map +1 -1
  245. package/dist/containers/transcode.js +171 -150
  246. package/dist/containers/transcode.js.map +1 -1
  247. package/dist/core/AudioData.d.ts.map +1 -1
  248. package/dist/core/AudioData.js +54 -12
  249. package/dist/core/AudioData.js.map +1 -1
  250. package/dist/core/EncodedAudioChunk.d.ts.map +1 -1
  251. package/dist/core/EncodedAudioChunk.js +74 -6
  252. package/dist/core/EncodedAudioChunk.js.map +1 -1
  253. package/dist/core/EncodedVideoChunk.d.ts +2 -0
  254. package/dist/core/EncodedVideoChunk.d.ts.map +1 -1
  255. package/dist/core/EncodedVideoChunk.js +70 -2
  256. package/dist/core/EncodedVideoChunk.js.map +1 -1
  257. package/dist/core/VideoFrame.d.ts +27 -2
  258. package/dist/core/VideoFrame.d.ts.map +1 -1
  259. package/dist/core/VideoFrame.js +245 -125
  260. package/dist/core/VideoFrame.js.map +1 -1
  261. package/dist/core/video-frame/layout.d.ts +10 -0
  262. package/dist/core/video-frame/layout.d.ts.map +1 -0
  263. package/dist/core/video-frame/layout.js +97 -0
  264. package/dist/core/video-frame/layout.js.map +1 -0
  265. package/dist/core/video-frame/orientation.d.ts +23 -0
  266. package/dist/core/video-frame/orientation.d.ts.map +1 -0
  267. package/dist/core/video-frame/orientation.js +49 -0
  268. package/dist/core/video-frame/orientation.js.map +1 -0
  269. package/dist/core/video-frame/transfer.d.ts +19 -0
  270. package/dist/core/video-frame/transfer.d.ts.map +1 -0
  271. package/dist/core/video-frame/transfer.js +78 -0
  272. package/dist/core/video-frame/transfer.js.map +1 -0
  273. package/dist/core/video-frame/validation.d.ts +28 -0
  274. package/dist/core/video-frame/validation.d.ts.map +1 -0
  275. package/dist/core/video-frame/validation.js +76 -0
  276. package/dist/core/video-frame/validation.js.map +1 -0
  277. package/dist/decoders/AudioDecoder.d.ts +2 -19
  278. package/dist/decoders/AudioDecoder.d.ts.map +1 -1
  279. package/dist/decoders/AudioDecoder.js +27 -11
  280. package/dist/decoders/AudioDecoder.js.map +1 -1
  281. package/dist/decoders/ImageDecoder.d.ts +34 -41
  282. package/dist/decoders/ImageDecoder.d.ts.map +1 -1
  283. package/dist/decoders/ImageDecoder.js +158 -266
  284. package/dist/decoders/ImageDecoder.js.map +1 -1
  285. package/dist/decoders/VideoDecoder.d.ts +3 -38
  286. package/dist/decoders/VideoDecoder.d.ts.map +1 -1
  287. package/dist/decoders/VideoDecoder.js +126 -124
  288. package/dist/decoders/VideoDecoder.js.map +1 -1
  289. package/dist/decoders/audio/config.d.ts +23 -0
  290. package/dist/decoders/audio/config.d.ts.map +1 -0
  291. package/dist/decoders/audio/config.js +112 -0
  292. package/dist/decoders/audio/config.js.map +1 -0
  293. package/dist/decoders/audio/constants.d.ts +6 -0
  294. package/dist/decoders/audio/constants.d.ts.map +1 -0
  295. package/dist/decoders/audio/constants.js +6 -0
  296. package/dist/decoders/audio/constants.js.map +1 -0
  297. package/dist/decoders/audio/types.d.ts +21 -0
  298. package/dist/decoders/audio/types.d.ts.map +1 -0
  299. package/dist/decoders/audio/types.js +5 -0
  300. package/dist/decoders/audio/types.js.map +1 -0
  301. package/dist/decoders/image/orientation.d.ts +16 -0
  302. package/dist/decoders/image/orientation.d.ts.map +1 -0
  303. package/dist/decoders/image/orientation.js +170 -0
  304. package/dist/decoders/image/orientation.js.map +1 -0
  305. package/dist/decoders/image/stream.d.ts +12 -0
  306. package/dist/decoders/image/stream.d.ts.map +1 -0
  307. package/dist/decoders/image/stream.js +41 -0
  308. package/dist/decoders/image/stream.js.map +1 -0
  309. package/dist/decoders/image/tracks.d.ts +76 -0
  310. package/dist/decoders/image/tracks.d.ts.map +1 -0
  311. package/dist/decoders/image/tracks.js +136 -0
  312. package/dist/decoders/image/tracks.js.map +1 -0
  313. package/dist/decoders/image/types.d.ts +36 -0
  314. package/dist/decoders/image/types.d.ts.map +1 -0
  315. package/dist/decoders/image/types.js +5 -0
  316. package/dist/decoders/image/types.js.map +1 -0
  317. package/dist/decoders/video/codec-specific.d.ts +19 -0
  318. package/dist/decoders/video/codec-specific.d.ts.map +1 -0
  319. package/dist/decoders/video/codec-specific.js +62 -0
  320. package/dist/decoders/video/codec-specific.js.map +1 -0
  321. package/dist/decoders/video/config.d.ts +17 -0
  322. package/dist/decoders/video/config.d.ts.map +1 -0
  323. package/dist/decoders/video/config.js +91 -0
  324. package/dist/decoders/video/config.js.map +1 -0
  325. package/dist/decoders/video/constants.d.ts +8 -0
  326. package/dist/decoders/video/constants.d.ts.map +1 -0
  327. package/dist/decoders/video/constants.js +13 -0
  328. package/dist/decoders/video/constants.js.map +1 -0
  329. package/dist/decoders/video/queue.d.ts +9 -0
  330. package/dist/decoders/video/queue.d.ts.map +1 -0
  331. package/dist/decoders/video/queue.js +17 -0
  332. package/dist/decoders/video/queue.js.map +1 -0
  333. package/dist/decoders/video/types.d.ts +41 -0
  334. package/dist/decoders/video/types.d.ts.map +1 -0
  335. package/dist/decoders/video/types.js +5 -0
  336. package/dist/decoders/video/types.js.map +1 -0
  337. package/dist/demos/demo-audio-visualizer.js +74 -48
  338. package/dist/demos/demo-audio-visualizer.js.map +1 -1
  339. package/dist/demos/demo-dvd-logo.js +26 -23
  340. package/dist/demos/demo-dvd-logo.js.map +1 -1
  341. package/dist/demos/demo-flow-field.d.ts +11 -0
  342. package/dist/demos/demo-flow-field.d.ts.map +1 -0
  343. package/dist/demos/demo-flow-field.js +305 -0
  344. package/dist/demos/demo-flow-field.js.map +1 -0
  345. package/dist/demos/demo-four-corners.js +56 -120
  346. package/dist/demos/demo-four-corners.js.map +1 -1
  347. package/dist/demos/demo-image.js +24 -19
  348. package/dist/demos/demo-image.js.map +1 -1
  349. package/dist/demos/demo-matrix-rain.d.ts +11 -0
  350. package/dist/demos/demo-matrix-rain.d.ts.map +1 -0
  351. package/dist/demos/demo-matrix-rain.js +246 -0
  352. package/dist/demos/demo-matrix-rain.js.map +1 -0
  353. package/dist/demos/demo-pipeline.js +56 -51
  354. package/dist/demos/demo-pipeline.js.map +1 -1
  355. package/dist/demos/demo-samples.js +56 -402
  356. package/dist/demos/demo-samples.js.map +1 -1
  357. package/dist/encoders/AudioEncoder.d.ts +4 -28
  358. package/dist/encoders/AudioEncoder.d.ts.map +1 -1
  359. package/dist/encoders/AudioEncoder.js +83 -20
  360. package/dist/encoders/AudioEncoder.js.map +1 -1
  361. package/dist/encoders/VideoEncoder.d.ts +25 -46
  362. package/dist/encoders/VideoEncoder.d.ts.map +1 -1
  363. package/dist/encoders/VideoEncoder.js +180 -88
  364. package/dist/encoders/VideoEncoder.js.map +1 -1
  365. package/dist/encoders/audio/config.d.ts +30 -0
  366. package/dist/encoders/audio/config.d.ts.map +1 -0
  367. package/dist/encoders/audio/config.js +169 -0
  368. package/dist/encoders/audio/config.js.map +1 -0
  369. package/dist/encoders/audio/constants.d.ts +8 -0
  370. package/dist/encoders/audio/constants.d.ts.map +1 -0
  371. package/dist/encoders/audio/constants.js +8 -0
  372. package/dist/encoders/audio/constants.js.map +1 -0
  373. package/dist/encoders/audio/types.d.ts +70 -0
  374. package/dist/encoders/audio/types.d.ts.map +1 -0
  375. package/dist/encoders/audio/types.js +5 -0
  376. package/dist/encoders/audio/types.js.map +1 -0
  377. package/dist/encoders/video/config.d.ts +25 -0
  378. package/dist/encoders/video/config.d.ts.map +1 -0
  379. package/dist/encoders/video/config.js +132 -0
  380. package/dist/encoders/video/config.js.map +1 -0
  381. package/dist/encoders/video/constants.d.ts +8 -0
  382. package/dist/encoders/video/constants.d.ts.map +1 -0
  383. package/dist/encoders/video/constants.js +8 -0
  384. package/dist/encoders/video/constants.js.map +1 -0
  385. package/dist/encoders/video/queue.d.ts +9 -0
  386. package/dist/encoders/video/queue.d.ts.map +1 -0
  387. package/dist/encoders/video/queue.js +17 -0
  388. package/dist/encoders/video/queue.js.map +1 -0
  389. package/dist/encoders/video/types.d.ts +104 -0
  390. package/dist/encoders/video/types.d.ts.map +1 -0
  391. package/dist/encoders/video/types.js +5 -0
  392. package/dist/encoders/video/types.js.map +1 -0
  393. package/dist/formats/color-space/convert.d.ts +27 -0
  394. package/dist/formats/color-space/convert.d.ts.map +1 -0
  395. package/dist/formats/color-space/convert.js +91 -0
  396. package/dist/formats/color-space/convert.js.map +1 -0
  397. package/dist/formats/color-space/extract.d.ts +32 -0
  398. package/dist/formats/color-space/extract.d.ts.map +1 -0
  399. package/dist/formats/color-space/extract.js +116 -0
  400. package/dist/formats/color-space/extract.js.map +1 -0
  401. package/dist/formats/color-space/index.d.ts +10 -0
  402. package/dist/formats/color-space/index.d.ts.map +1 -0
  403. package/dist/formats/color-space/index.js +14 -0
  404. package/dist/formats/color-space/index.js.map +1 -0
  405. package/dist/formats/color-space/maps.d.ts +70 -0
  406. package/dist/formats/color-space/maps.d.ts.map +1 -0
  407. package/dist/formats/color-space/maps.js +70 -0
  408. package/dist/formats/color-space/maps.js.map +1 -0
  409. package/dist/formats/color-space/types.d.ts +68 -0
  410. package/dist/formats/color-space/types.d.ts.map +1 -0
  411. package/dist/formats/color-space/types.js +49 -0
  412. package/dist/formats/color-space/types.js.map +1 -0
  413. package/dist/formats/color-space.d.ts +4 -124
  414. package/dist/formats/color-space.d.ts.map +1 -1
  415. package/dist/formats/color-space.js +5 -108
  416. package/dist/formats/color-space.js.map +1 -1
  417. package/dist/formats/conversions/frame-converter.d.ts +8 -3
  418. package/dist/formats/conversions/frame-converter.d.ts.map +1 -1
  419. package/dist/formats/conversions/frame-converter.js +16 -12
  420. package/dist/formats/conversions/frame-converter.js.map +1 -1
  421. package/dist/formats/pixel-format/helpers.d.ts +49 -0
  422. package/dist/formats/pixel-format/helpers.d.ts.map +1 -0
  423. package/dist/formats/pixel-format/helpers.js +117 -0
  424. package/dist/formats/pixel-format/helpers.js.map +1 -0
  425. package/dist/formats/pixel-format/index.d.ts +9 -0
  426. package/dist/formats/pixel-format/index.d.ts.map +1 -0
  427. package/dist/formats/pixel-format/index.js +10 -0
  428. package/dist/formats/pixel-format/index.js.map +1 -0
  429. package/dist/formats/pixel-format/sizes.d.ts +17 -0
  430. package/dist/formats/pixel-format/sizes.d.ts.map +1 -0
  431. package/dist/formats/pixel-format/sizes.js +159 -0
  432. package/dist/formats/pixel-format/sizes.js.map +1 -0
  433. package/dist/formats/pixel-format/types.d.ts +13 -0
  434. package/dist/formats/pixel-format/types.d.ts.map +1 -0
  435. package/dist/formats/pixel-format/types.js +5 -0
  436. package/dist/formats/pixel-format/types.js.map +1 -0
  437. package/dist/formats/pixel-formats.d.ts +4 -53
  438. package/dist/formats/pixel-formats.d.ts.map +1 -1
  439. package/dist/formats/pixel-formats.js +5 -179
  440. package/dist/formats/pixel-formats.js.map +1 -1
  441. package/dist/hardware/decoder-args.d.ts.map +1 -1
  442. package/dist/hardware/decoder-args.js +35 -14
  443. package/dist/hardware/decoder-args.js.map +1 -1
  444. package/dist/hardware/detection.d.ts.map +1 -1
  445. package/dist/hardware/detection.js +39 -0
  446. package/dist/hardware/detection.js.map +1 -1
  447. package/dist/hardware/encoder-args.d.ts.map +1 -1
  448. package/dist/hardware/encoder-args.js +43 -5
  449. package/dist/hardware/encoder-args.js.map +1 -1
  450. package/dist/hardware/types.d.ts.map +1 -1
  451. package/dist/hardware/types.js +36 -28
  452. package/dist/hardware/types.js.map +1 -1
  453. package/dist/node-av/NodeAvVideoEncoder.d.ts +5 -0
  454. package/dist/node-av/NodeAvVideoEncoder.d.ts.map +1 -1
  455. package/dist/node-av/NodeAvVideoEncoder.js +76 -23
  456. package/dist/node-av/NodeAvVideoEncoder.js.map +1 -1
  457. package/dist/transfer/detach.d.ts +42 -0
  458. package/dist/transfer/detach.d.ts.map +1 -0
  459. package/dist/transfer/detach.js +93 -0
  460. package/dist/transfer/detach.js.map +1 -0
  461. package/dist/transfer/index.d.ts +9 -0
  462. package/dist/transfer/index.d.ts.map +1 -0
  463. package/dist/transfer/index.js +11 -0
  464. package/dist/transfer/index.js.map +1 -0
  465. package/dist/transfer/validate.d.ts +45 -0
  466. package/dist/transfer/validate.d.ts.map +1 -0
  467. package/dist/transfer/validate.js +98 -0
  468. package/dist/transfer/validate.js.map +1 -0
  469. package/dist/types/video.d.ts +16 -0
  470. package/dist/types/video.d.ts.map +1 -1
  471. package/dist/utils/avc.d.ts +2 -0
  472. package/dist/utils/avc.d.ts.map +1 -1
  473. package/dist/utils/avc.js +36 -8
  474. package/dist/utils/avc.js.map +1 -1
  475. package/dist/utils/codec-validation.d.ts +3 -28
  476. package/dist/utils/codec-validation.d.ts.map +1 -1
  477. package/dist/utils/codec-validation.js +4 -238
  478. package/dist/utils/codec-validation.js.map +1 -1
  479. package/dist/utils/hevc.d.ts +2 -0
  480. package/dist/utils/hevc.d.ts.map +1 -1
  481. package/dist/utils/hevc.js +42 -8
  482. package/dist/utils/hevc.js.map +1 -1
  483. package/docs/api.md +24 -4
  484. package/docs/architecture-refactor-plan.md +149 -0
  485. package/docs/architecture.md +258 -0
  486. package/docs/configuration.md +10 -7
  487. package/package.json +6 -4
  488. package/dist/config/ffmpeg-quality.d.ts +0 -14
  489. package/dist/config/ffmpeg-quality.d.ts.map +0 -1
  490. package/dist/config/ffmpeg-quality.js +0 -41
  491. package/dist/config/ffmpeg-quality.js.map +0 -1
  492. package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts +0 -72
  493. package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts.map +0 -1
  494. package/dist/polyfills/CanvasRenderingContext2DPolyfill.js +0 -293
  495. package/dist/polyfills/CanvasRenderingContext2DPolyfill.js.map +0 -1
  496. package/dist/polyfills/ImageDataPolyfill.d.ts +0 -12
  497. package/dist/polyfills/ImageDataPolyfill.d.ts.map +0 -1
  498. package/dist/polyfills/ImageDataPolyfill.js +0 -22
  499. package/dist/polyfills/ImageDataPolyfill.js.map +0 -1
  500. package/dist/polyfills/OffscreenCanvasPolyfill.d.ts +0 -16
  501. package/dist/polyfills/OffscreenCanvasPolyfill.d.ts.map +0 -1
  502. package/dist/polyfills/OffscreenCanvasPolyfill.js +0 -46
  503. package/dist/polyfills/OffscreenCanvasPolyfill.js.map +0 -1
  504. package/dist/polyfills/VideoFramePolyfill.d.ts +0 -44
  505. package/dist/polyfills/VideoFramePolyfill.d.ts.map +0 -1
  506. package/dist/polyfills/VideoFramePolyfill.js +0 -98
  507. package/dist/polyfills/VideoFramePolyfill.js.map +0 -1
@@ -1,293 +0,0 @@
1
- /**
2
- * Minimal CanvasRenderingContext2D implementation using sharp
3
- */
4
- import sharp from 'sharp';
5
- import { ImageDataPolyfill } from './ImageDataPolyfill.js';
6
- export class OffscreenCanvasRenderingContext2DPolyfill {
7
- _canvas;
8
- _imageData;
9
- // Canvas state (minimal)
10
- fillStyle = '#000000';
11
- strokeStyle = '#000000';
12
- globalAlpha = 1;
13
- imageSmoothingEnabled = true;
14
- constructor(canvas) {
15
- this._canvas = canvas;
16
- this._imageData = new Uint8ClampedArray(canvas.width * canvas.height * 4);
17
- }
18
- get canvas() {
19
- return this._canvas;
20
- }
21
- // Pending resize operation
22
- _pendingResize = null;
23
- /**
24
- * Draw image to canvas - the main method Mediabunny uses
25
- */
26
- drawImage(image, sxOrDx, syOrDy, swOrDw, shOrDh, dx, dy, dw, dh) {
27
- // Extract source data and dimensions from various image types
28
- let sourceData;
29
- let sourceWidth;
30
- let sourceHeight;
31
- const img = image;
32
- if (this._isOffscreenCanvas(image)) {
33
- const canvas = image;
34
- sourceData = canvas._getImageData();
35
- sourceWidth = canvas.width;
36
- sourceHeight = canvas.height;
37
- }
38
- else if (this._isVideoFrame(image)) {
39
- // VideoFrame polyfill
40
- const frame = image;
41
- sourceData = frame._rawData;
42
- sourceWidth = frame.codedWidth;
43
- sourceHeight = frame.codedHeight;
44
- }
45
- else if (img._rawData instanceof Uint8Array) {
46
- // VideoFrame polyfill accessed via generic object
47
- sourceData = img._rawData;
48
- sourceWidth = (img.codedWidth || img.width);
49
- sourceHeight = (img.codedHeight || img.height);
50
- }
51
- else if (img._data instanceof Uint8Array || img._data instanceof Uint8ClampedArray) {
52
- // VideoSample with raw pixel data
53
- sourceData = img._data;
54
- sourceWidth = (img.codedWidth || img.width);
55
- sourceHeight = (img.codedHeight || img.height);
56
- }
57
- else if (img.data instanceof Uint8Array || img.data instanceof Uint8ClampedArray) {
58
- sourceData = img.data;
59
- sourceWidth = img.width;
60
- sourceHeight = img.height;
61
- }
62
- else {
63
- // Try to get dimensions from common properties
64
- sourceWidth = (img.width || img.codedWidth || this._canvas.width);
65
- sourceHeight = (img.height || img.codedHeight || this._canvas.height);
66
- // Create empty data if we can't extract it
67
- sourceData = new Uint8ClampedArray(sourceWidth * sourceHeight * 4);
68
- }
69
- // Determine destination coordinates
70
- let destX, destY, destW, destH;
71
- if (dx !== undefined) {
72
- // 9-argument form: drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh)
73
- destX = dx;
74
- destY = dy;
75
- destW = dw;
76
- destH = dh;
77
- }
78
- else if (swOrDw !== undefined) {
79
- // 5-argument form: drawImage(image, dx, dy, dw, dh)
80
- destX = sxOrDx;
81
- destY = syOrDy;
82
- destW = swOrDw;
83
- destH = shOrDh;
84
- }
85
- else {
86
- // 3-argument form: drawImage(image, dx, dy)
87
- destX = sxOrDx;
88
- destY = syOrDy;
89
- destW = sourceWidth;
90
- destH = sourceHeight;
91
- }
92
- // If dimensions match and no offset, just copy directly
93
- if (destX === 0 && destY === 0 &&
94
- destW === this._canvas.width && destH === this._canvas.height &&
95
- sourceWidth === destW && sourceHeight === destH) {
96
- this._imageData.set(new Uint8ClampedArray(sourceData.buffer, sourceData.byteOffset, sourceData.byteLength));
97
- return;
98
- }
99
- // Store for async resize
100
- this._pendingResize = {
101
- sourceData: new Uint8Array(sourceData),
102
- sourceWidth,
103
- sourceHeight,
104
- destX,
105
- destY,
106
- destW,
107
- destH,
108
- };
109
- // Apply resize synchronously using sharp (blocking)
110
- this._applyPendingResizeSync();
111
- }
112
- _isOffscreenCanvas(obj) {
113
- return obj !== null && typeof obj === 'object' && '_getImageData' in obj && 'width' in obj && 'height' in obj;
114
- }
115
- _isVideoFrame(obj) {
116
- return obj !== null && typeof obj === 'object' && '_rawData' in obj && 'codedWidth' in obj && 'codedHeight' in obj;
117
- }
118
- /**
119
- * Apply pending resize synchronously
120
- */
121
- _applyPendingResizeSync() {
122
- if (!this._pendingResize)
123
- return;
124
- const { sourceData, sourceWidth, sourceHeight, destX, destY, destW, destH } = this._pendingResize;
125
- this._pendingResize = null;
126
- // Use sharp for high-quality resizing (sync via deasync pattern or direct buffer manipulation)
127
- // For now, do a simple nearest-neighbor resize synchronously
128
- this._resizeNearest(sourceData, sourceWidth, sourceHeight, destX, destY, destW, destH);
129
- }
130
- /**
131
- * Simple nearest-neighbor resize (synchronous fallback)
132
- */
133
- _resizeNearest(sourceData, sourceWidth, sourceHeight, destX, destY, destW, destH) {
134
- const canvasWidth = this._canvas.width;
135
- for (let y = 0; y < destH; y++) {
136
- const srcY = Math.floor(y * sourceHeight / destH);
137
- for (let x = 0; x < destW; x++) {
138
- const srcX = Math.floor(x * sourceWidth / destW);
139
- const srcOffset = (srcY * sourceWidth + srcX) * 4;
140
- const dstOffset = ((destY + y) * canvasWidth + (destX + x)) * 4;
141
- this._imageData[dstOffset] = sourceData[srcOffset];
142
- this._imageData[dstOffset + 1] = sourceData[srcOffset + 1];
143
- this._imageData[dstOffset + 2] = sourceData[srcOffset + 2];
144
- this._imageData[dstOffset + 3] = sourceData[srcOffset + 3];
145
- }
146
- }
147
- }
148
- /**
149
- * Apply pending resize asynchronously using sharp (higher quality)
150
- */
151
- async _applyPendingResizeAsync() {
152
- if (!this._pendingResize)
153
- return;
154
- const { sourceData, sourceWidth, sourceHeight, destX, destY, destW, destH } = this._pendingResize;
155
- this._pendingResize = null;
156
- try {
157
- // Use sharp for high-quality resizing
158
- const resized = await sharp(Buffer.from(sourceData), {
159
- raw: {
160
- width: sourceWidth,
161
- height: sourceHeight,
162
- channels: 4,
163
- },
164
- })
165
- .resize(destW, destH, {
166
- fit: 'fill',
167
- kernel: 'lanczos3',
168
- })
169
- .raw()
170
- .toBuffer();
171
- // Copy resized data to canvas at destination position
172
- const canvasWidth = this._canvas.width;
173
- for (let y = 0; y < destH; y++) {
174
- const srcOffset = y * destW * 4;
175
- const dstOffset = ((destY + y) * canvasWidth + destX) * 4;
176
- for (let x = 0; x < destW * 4; x++) {
177
- this._imageData[dstOffset + x] = resized[srcOffset + x];
178
- }
179
- }
180
- }
181
- catch (error) {
182
- console.error('Sharp resize error:', error);
183
- }
184
- }
185
- getImageData(sx, sy, sw, sh) {
186
- const data = new Uint8ClampedArray(sw * sh * 4);
187
- const canvasWidth = this._canvas.width;
188
- for (let y = 0; y < sh; y++) {
189
- const srcOffset = ((sy + y) * canvasWidth + sx) * 4;
190
- const dstOffset = y * sw * 4;
191
- for (let x = 0; x < sw * 4; x++) {
192
- data[dstOffset + x] = this._imageData[srcOffset + x];
193
- }
194
- }
195
- return new ImageDataPolyfill(data, sw, sh);
196
- }
197
- putImageData(imageData, dx, dy) {
198
- const canvasWidth = this._canvas.width;
199
- const srcWidth = imageData.width;
200
- const srcHeight = imageData.height;
201
- for (let y = 0; y < srcHeight; y++) {
202
- const srcOffset = y * srcWidth * 4;
203
- const dstOffset = ((dy + y) * canvasWidth + dx) * 4;
204
- for (let x = 0; x < srcWidth * 4; x++) {
205
- this._imageData[dstOffset + x] = imageData.data[srcOffset + x];
206
- }
207
- }
208
- }
209
- createImageData(widthOrImageData, height) {
210
- if (typeof widthOrImageData === 'number') {
211
- return new ImageDataPolyfill(widthOrImageData, height);
212
- }
213
- return new ImageDataPolyfill(widthOrImageData.width, widthOrImageData.height);
214
- }
215
- // Internal methods to access data
216
- _getImageData() {
217
- return this._imageData;
218
- }
219
- _setImageData(data) {
220
- this._imageData = data;
221
- }
222
- // Basic drawing operations
223
- clearRect(x, y, w, h) {
224
- const canvasWidth = this._canvas.width;
225
- for (let py = y; py < y + h && py < this._canvas.height; py++) {
226
- for (let px = x; px < x + w && px < canvasWidth; px++) {
227
- const offset = (py * canvasWidth + px) * 4;
228
- this._imageData[offset] = 0;
229
- this._imageData[offset + 1] = 0;
230
- this._imageData[offset + 2] = 0;
231
- this._imageData[offset + 3] = 0;
232
- }
233
- }
234
- }
235
- fillRect(x, y, w, h) {
236
- const color = this._parseColor(this.fillStyle);
237
- const canvasWidth = this._canvas.width;
238
- for (let py = y; py < y + h && py < this._canvas.height; py++) {
239
- for (let px = x; px < x + w && px < canvasWidth; px++) {
240
- const offset = (py * canvasWidth + px) * 4;
241
- this._imageData[offset] = color.r;
242
- this._imageData[offset + 1] = color.g;
243
- this._imageData[offset + 2] = color.b;
244
- this._imageData[offset + 3] = color.a;
245
- }
246
- }
247
- }
248
- _parseColor(color) {
249
- if (color.startsWith('#')) {
250
- const hex = color.slice(1);
251
- if (hex.length === 6) {
252
- return {
253
- r: parseInt(hex.slice(0, 2), 16),
254
- g: parseInt(hex.slice(2, 4), 16),
255
- b: parseInt(hex.slice(4, 6), 16),
256
- a: 255,
257
- };
258
- }
259
- }
260
- return { r: 0, g: 0, b: 0, a: 255 };
261
- }
262
- // Stub methods that Mediabunny might call
263
- save() { }
264
- restore() { }
265
- reset() {
266
- this._imageData.fill(0);
267
- }
268
- scale(_x, _y) { }
269
- rotate(_angle) { }
270
- translate(_x, _y) { }
271
- transform(_a, _b, _c, _d, _e, _f) { }
272
- setTransform(_a, _b, _c, _d, _e, _f) { }
273
- resetTransform() { }
274
- beginPath() { }
275
- closePath() { }
276
- moveTo(_x, _y) { }
277
- lineTo(_x, _y) { }
278
- rect(_x, _y, _w, _h) { }
279
- arc(_x, _y, _r, _start, _end, _ccw) { }
280
- fill() { }
281
- stroke() { }
282
- clip() { }
283
- strokeRect(_x, _y, _w, _h) { }
284
- fillText(_text, _x, _y) { }
285
- strokeText(_text, _x, _y) { }
286
- measureText(_text) {
287
- return { width: 0 };
288
- }
289
- getContextAttributes() {
290
- return { alpha: true, willReadFrequently: true };
291
- }
292
- }
293
- //# sourceMappingURL=CanvasRenderingContext2DPolyfill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CanvasRenderingContext2DPolyfill.js","sourceRoot":"","sources":["../../src/polyfills/CanvasRenderingContext2DPolyfill.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * ImageData polyfill for Node.js
3
- */
4
- export declare class ImageDataPolyfill {
5
- readonly data: Uint8ClampedArray;
6
- readonly width: number;
7
- readonly height: number;
8
- readonly colorSpace: string;
9
- constructor(width: number, height: number);
10
- constructor(data: Uint8ClampedArray, width: number, height?: number);
11
- }
12
- //# sourceMappingURL=ImageDataPolyfill.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageDataPolyfill.d.ts","sourceRoot":"","sources":["../../src/polyfills/ImageDataPolyfill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAU;gBAEzB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;gBAC7B,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAgBpE"}
@@ -1,22 +0,0 @@
1
- /**
2
- * ImageData polyfill for Node.js
3
- */
4
- export class ImageDataPolyfill {
5
- data;
6
- width;
7
- height;
8
- colorSpace = 'srgb';
9
- constructor(dataOrWidth, widthOrHeight, height) {
10
- if (typeof dataOrWidth === 'number') {
11
- this.width = dataOrWidth;
12
- this.height = widthOrHeight;
13
- this.data = new Uint8ClampedArray(this.width * this.height * 4);
14
- }
15
- else {
16
- this.data = dataOrWidth;
17
- this.width = widthOrHeight;
18
- this.height = height ?? (dataOrWidth.length / 4 / widthOrHeight);
19
- }
20
- }
21
- }
22
- //# sourceMappingURL=ImageDataPolyfill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageDataPolyfill.js","sourceRoot":"","sources":["../../src/polyfills/ImageDataPolyfill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,OAAO,iBAAiB;IACnB,IAAI,CAAoB;IACxB,KAAK,CAAS;IACd,MAAM,CAAS;IACf,UAAU,GAAW,MAAM,CAAC;IAIrC,YACE,WAAuC,EACvC,aAAqB,EACrB,MAAe;QAEf,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;CACF"}
@@ -1,16 +0,0 @@
1
- /**
2
- * OffscreenCanvas polyfill using sharp for image processing
3
- */
4
- import { OffscreenCanvasRenderingContext2DPolyfill } from './CanvasRenderingContext2DPolyfill.js';
5
- export declare class OffscreenCanvasPolyfill {
6
- readonly width: number;
7
- readonly height: number;
8
- private _context;
9
- constructor(width: number, height: number);
10
- getContext(contextId: string, _options?: unknown): OffscreenCanvasRenderingContext2DPolyfill | null;
11
- convertToBlob(_options?: unknown): Promise<Blob>;
12
- transferToImageBitmap(): unknown;
13
- _getImageData(): Uint8ClampedArray;
14
- _flush(): Promise<void>;
15
- }
16
- //# sourceMappingURL=OffscreenCanvasPolyfill.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OffscreenCanvasPolyfill.d.ts","sourceRoot":"","sources":["../../src/polyfills/OffscreenCanvasPolyfill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,yCAAyC,EAAE,MAAM,uCAAuC,CAAC;AAElG,qBAAa,uBAAuB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAA0D;gBAE9D,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKzC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,yCAAyC,GAAG,IAAI;IAUnG,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,qBAAqB,IAAI,OAAO;IAahC,aAAa,IAAI,iBAAiB;IAK5B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAK9B"}
@@ -1,46 +0,0 @@
1
- /**
2
- * OffscreenCanvas polyfill using sharp for image processing
3
- */
4
- import { OffscreenCanvasRenderingContext2DPolyfill } from './CanvasRenderingContext2DPolyfill.js';
5
- export class OffscreenCanvasPolyfill {
6
- width;
7
- height;
8
- _context = null;
9
- constructor(width, height) {
10
- this.width = width;
11
- this.height = height;
12
- }
13
- getContext(contextId, _options) {
14
- if (contextId === '2d') {
15
- if (!this._context) {
16
- this._context = new OffscreenCanvasRenderingContext2DPolyfill(this);
17
- }
18
- return this._context;
19
- }
20
- return null;
21
- }
22
- convertToBlob(_options) {
23
- return Promise.reject(new Error('convertToBlob not implemented'));
24
- }
25
- transferToImageBitmap() {
26
- // Create a minimal ImageBitmap-like object
27
- const imageData = this._context?._getImageData() || new Uint8ClampedArray(this.width * this.height * 4);
28
- return {
29
- width: this.width,
30
- height: this.height,
31
- close: () => { },
32
- _data: imageData,
33
- };
34
- }
35
- // Internal method to get image data
36
- _getImageData() {
37
- return this._context?._getImageData() || new Uint8ClampedArray(this.width * this.height * 4);
38
- }
39
- // Apply any pending async operations
40
- async _flush() {
41
- if (this._context) {
42
- await this._context._applyPendingResizeAsync();
43
- }
44
- }
45
- }
46
- //# sourceMappingURL=OffscreenCanvasPolyfill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OffscreenCanvasPolyfill.js","sourceRoot":"","sources":["../../src/polyfills/OffscreenCanvasPolyfill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,yCAAyC,EAAE,MAAM,uCAAuC,CAAC;AAElG,MAAM,OAAO,uBAAuB;IACzB,KAAK,CAAS;IACd,MAAM,CAAS;IAChB,QAAQ,GAAqD,IAAI,CAAC;IAE1E,YAAY,KAAa,EAAE,MAAc;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,UAAU,CAAC,SAAiB,EAAE,QAAkB;QAC9C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,yCAAyC,CAAC,IAAI,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,QAAkB;QAC9B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,qBAAqB;QACnB,2CAA2C;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAExG,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;YACf,KAAK,EAAE,SAAS;SACjB,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,aAAa;QACX,OAAO,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAC;QACjD,CAAC;IACH,CAAC;CACF"}
@@ -1,44 +0,0 @@
1
- /**
2
- * VideoFrame polyfill for Node.js
3
- * Minimal implementation sufficient for Mediabunny's needs
4
- */
5
- import type { OffscreenCanvasPolyfill } from './OffscreenCanvasPolyfill.js';
6
- export declare class VideoFramePolyfill {
7
- readonly format: string;
8
- readonly codedWidth: number;
9
- readonly codedHeight: number;
10
- readonly displayWidth: number;
11
- readonly displayHeight: number;
12
- readonly timestamp: number;
13
- readonly duration: number | null;
14
- readonly colorSpace: {
15
- primaries: string;
16
- transfer: string;
17
- matrix: string;
18
- fullRange: boolean;
19
- };
20
- private _data;
21
- private _closed;
22
- constructor(data: Uint8Array | Uint8ClampedArray | OffscreenCanvasPolyfill | unknown, init: {
23
- format?: string;
24
- codedWidth?: number;
25
- codedHeight?: number;
26
- timestamp: number;
27
- duration?: number;
28
- colorSpace?: {
29
- primaries?: string;
30
- transfer?: string;
31
- matrix?: string;
32
- fullRange?: boolean;
33
- };
34
- });
35
- allocationSize(): number;
36
- copyTo(destination: Uint8Array | Uint8ClampedArray): Promise<Array<{
37
- offset: number;
38
- stride: number;
39
- }>>;
40
- clone(): VideoFramePolyfill;
41
- close(): void;
42
- get _rawData(): Uint8Array;
43
- }
44
- //# sourceMappingURL=VideoFramePolyfill.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VideoFramePolyfill.d.ts","sourceRoot":"","sources":["../../src/polyfills/VideoFramePolyfill.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAE5E,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IACjG,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,OAAO,CAAkB;gBAG/B,IAAI,EAAE,UAAU,GAAG,iBAAiB,GAAG,uBAAuB,GAAG,OAAO,EACxE,IAAI,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KAC9F;IAkDH,cAAc,IAAI,MAAM;IAIlB,MAAM,CAAC,WAAW,EAAE,UAAU,GAAG,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAQ7G,KAAK,IAAI,kBAAkB;IAc3B,KAAK,IAAI,IAAI;IAKb,IAAI,QAAQ,IAAI,UAAU,CAEzB;CACF"}
@@ -1,98 +0,0 @@
1
- /**
2
- * VideoFrame polyfill for Node.js
3
- * Minimal implementation sufficient for Mediabunny's needs
4
- */
5
- export class VideoFramePolyfill {
6
- format;
7
- codedWidth;
8
- codedHeight;
9
- displayWidth;
10
- displayHeight;
11
- timestamp;
12
- duration;
13
- colorSpace;
14
- _data;
15
- _closed = false;
16
- constructor(data, init) {
17
- // Handle OffscreenCanvas input
18
- if (data && typeof data === 'object' && '_getImageData' in data && typeof data._getImageData === 'function') {
19
- const canvas = data;
20
- this._data = new Uint8Array(canvas._getImageData());
21
- this.format = 'RGBA';
22
- this.codedWidth = canvas.width;
23
- this.codedHeight = canvas.height;
24
- }
25
- else if (data instanceof Uint8Array || data instanceof Uint8ClampedArray) {
26
- // Handle raw data input
27
- this._data = new Uint8Array(data);
28
- this.format = init.format ?? 'RGBA';
29
- this.codedWidth = init.codedWidth ?? 0;
30
- this.codedHeight = init.codedHeight ?? 0;
31
- }
32
- else {
33
- // Try to extract data from canvas-like objects
34
- const obj = data;
35
- if (obj && obj.width !== undefined && obj.height !== undefined) {
36
- const width = obj.width;
37
- const height = obj.height;
38
- // Try to get image data
39
- if (typeof obj._getImageData === 'function') {
40
- this._data = new Uint8Array(obj._getImageData());
41
- }
42
- else {
43
- this._data = new Uint8Array(width * height * 4);
44
- }
45
- this.format = 'RGBA';
46
- this.codedWidth = width;
47
- this.codedHeight = height;
48
- }
49
- else {
50
- this._data = new Uint8Array(0);
51
- this.format = init.format ?? 'RGBA';
52
- this.codedWidth = init.codedWidth ?? 0;
53
- this.codedHeight = init.codedHeight ?? 0;
54
- }
55
- }
56
- this.displayWidth = this.codedWidth;
57
- this.displayHeight = this.codedHeight;
58
- this.timestamp = init.timestamp;
59
- this.duration = init.duration ?? null;
60
- this.colorSpace = {
61
- primaries: init.colorSpace?.primaries ?? 'bt709',
62
- transfer: init.colorSpace?.transfer ?? 'bt709',
63
- matrix: init.colorSpace?.matrix ?? 'bt709',
64
- fullRange: init.colorSpace?.fullRange ?? true,
65
- };
66
- }
67
- allocationSize() {
68
- return this._data.byteLength;
69
- }
70
- async copyTo(destination) {
71
- if (this._closed) {
72
- throw new Error('VideoFrame is closed');
73
- }
74
- destination.set(this._data.subarray(0, destination.length));
75
- return [{ offset: 0, stride: this.codedWidth * 4 }];
76
- }
77
- clone() {
78
- if (this._closed) {
79
- throw new Error('VideoFrame is closed');
80
- }
81
- return new VideoFramePolyfill(this._data, {
82
- format: this.format,
83
- codedWidth: this.codedWidth,
84
- codedHeight: this.codedHeight,
85
- timestamp: this.timestamp,
86
- duration: this.duration ?? undefined,
87
- colorSpace: this.colorSpace,
88
- });
89
- }
90
- close() {
91
- this._closed = true;
92
- }
93
- // Property to expose data for OffscreenCanvas polyfill
94
- get _rawData() {
95
- return this._data;
96
- }
97
- }
98
- //# sourceMappingURL=VideoFramePolyfill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VideoFramePolyfill.js","sourceRoot":"","sources":["../../src/polyfills/VideoFramePolyfill.ts"],"names":[],"mappings":"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"}