webcodecs-node 0.7.5 → 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 (479) hide show
  1. package/README.md +12 -4
  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/containers/NodeAvMuxer.d.ts +7 -0
  214. package/dist/containers/NodeAvMuxer.d.ts.map +1 -1
  215. package/dist/containers/NodeAvMuxer.js +127 -7
  216. package/dist/containers/NodeAvMuxer.js.map +1 -1
  217. package/dist/core/AudioData.d.ts.map +1 -1
  218. package/dist/core/AudioData.js +54 -12
  219. package/dist/core/AudioData.js.map +1 -1
  220. package/dist/core/EncodedAudioChunk.d.ts.map +1 -1
  221. package/dist/core/EncodedAudioChunk.js +74 -6
  222. package/dist/core/EncodedAudioChunk.js.map +1 -1
  223. package/dist/core/EncodedVideoChunk.d.ts +2 -0
  224. package/dist/core/EncodedVideoChunk.d.ts.map +1 -1
  225. package/dist/core/EncodedVideoChunk.js +70 -2
  226. package/dist/core/EncodedVideoChunk.js.map +1 -1
  227. package/dist/core/VideoFrame.d.ts +16 -10
  228. package/dist/core/VideoFrame.d.ts.map +1 -1
  229. package/dist/core/VideoFrame.js +238 -129
  230. package/dist/core/VideoFrame.js.map +1 -1
  231. package/dist/core/video-frame/layout.d.ts +10 -0
  232. package/dist/core/video-frame/layout.d.ts.map +1 -0
  233. package/dist/core/video-frame/layout.js +97 -0
  234. package/dist/core/video-frame/layout.js.map +1 -0
  235. package/dist/core/video-frame/orientation.d.ts +23 -0
  236. package/dist/core/video-frame/orientation.d.ts.map +1 -0
  237. package/dist/core/video-frame/orientation.js +49 -0
  238. package/dist/core/video-frame/orientation.js.map +1 -0
  239. package/dist/core/video-frame/transfer.d.ts +19 -0
  240. package/dist/core/video-frame/transfer.d.ts.map +1 -0
  241. package/dist/core/video-frame/transfer.js +78 -0
  242. package/dist/core/video-frame/transfer.js.map +1 -0
  243. package/dist/core/video-frame/validation.d.ts +28 -0
  244. package/dist/core/video-frame/validation.d.ts.map +1 -0
  245. package/dist/core/video-frame/validation.js +76 -0
  246. package/dist/core/video-frame/validation.js.map +1 -0
  247. package/dist/decoders/AudioDecoder.d.ts +2 -19
  248. package/dist/decoders/AudioDecoder.d.ts.map +1 -1
  249. package/dist/decoders/AudioDecoder.js +27 -11
  250. package/dist/decoders/AudioDecoder.js.map +1 -1
  251. package/dist/decoders/ImageDecoder.d.ts +34 -41
  252. package/dist/decoders/ImageDecoder.d.ts.map +1 -1
  253. package/dist/decoders/ImageDecoder.js +158 -266
  254. package/dist/decoders/ImageDecoder.js.map +1 -1
  255. package/dist/decoders/VideoDecoder.d.ts +2 -38
  256. package/dist/decoders/VideoDecoder.d.ts.map +1 -1
  257. package/dist/decoders/VideoDecoder.js +120 -120
  258. package/dist/decoders/VideoDecoder.js.map +1 -1
  259. package/dist/decoders/audio/config.d.ts +23 -0
  260. package/dist/decoders/audio/config.d.ts.map +1 -0
  261. package/dist/decoders/audio/config.js +112 -0
  262. package/dist/decoders/audio/config.js.map +1 -0
  263. package/dist/decoders/audio/constants.d.ts +6 -0
  264. package/dist/decoders/audio/constants.d.ts.map +1 -0
  265. package/dist/decoders/audio/constants.js +6 -0
  266. package/dist/decoders/audio/constants.js.map +1 -0
  267. package/dist/decoders/audio/types.d.ts +21 -0
  268. package/dist/decoders/audio/types.d.ts.map +1 -0
  269. package/dist/decoders/audio/types.js +5 -0
  270. package/dist/decoders/audio/types.js.map +1 -0
  271. package/dist/decoders/image/orientation.d.ts +16 -0
  272. package/dist/decoders/image/orientation.d.ts.map +1 -0
  273. package/dist/decoders/image/orientation.js +170 -0
  274. package/dist/decoders/image/orientation.js.map +1 -0
  275. package/dist/decoders/image/stream.d.ts +12 -0
  276. package/dist/decoders/image/stream.d.ts.map +1 -0
  277. package/dist/decoders/image/stream.js +41 -0
  278. package/dist/decoders/image/stream.js.map +1 -0
  279. package/dist/decoders/image/tracks.d.ts +76 -0
  280. package/dist/decoders/image/tracks.d.ts.map +1 -0
  281. package/dist/decoders/image/tracks.js +136 -0
  282. package/dist/decoders/image/tracks.js.map +1 -0
  283. package/dist/decoders/image/types.d.ts +36 -0
  284. package/dist/decoders/image/types.d.ts.map +1 -0
  285. package/dist/decoders/image/types.js +5 -0
  286. package/dist/decoders/image/types.js.map +1 -0
  287. package/dist/decoders/video/codec-specific.d.ts +19 -0
  288. package/dist/decoders/video/codec-specific.d.ts.map +1 -0
  289. package/dist/decoders/video/codec-specific.js +62 -0
  290. package/dist/decoders/video/codec-specific.js.map +1 -0
  291. package/dist/decoders/video/config.d.ts +17 -0
  292. package/dist/decoders/video/config.d.ts.map +1 -0
  293. package/dist/decoders/video/config.js +91 -0
  294. package/dist/decoders/video/config.js.map +1 -0
  295. package/dist/decoders/video/constants.d.ts +8 -0
  296. package/dist/decoders/video/constants.d.ts.map +1 -0
  297. package/dist/decoders/video/constants.js +13 -0
  298. package/dist/decoders/video/constants.js.map +1 -0
  299. package/dist/decoders/video/queue.d.ts +9 -0
  300. package/dist/decoders/video/queue.d.ts.map +1 -0
  301. package/dist/decoders/video/queue.js +17 -0
  302. package/dist/decoders/video/queue.js.map +1 -0
  303. package/dist/decoders/video/types.d.ts +41 -0
  304. package/dist/decoders/video/types.d.ts.map +1 -0
  305. package/dist/decoders/video/types.js +5 -0
  306. package/dist/decoders/video/types.js.map +1 -0
  307. package/dist/demos/demo-audio-visualizer.js +74 -48
  308. package/dist/demos/demo-audio-visualizer.js.map +1 -1
  309. package/dist/demos/demo-dvd-logo.js +26 -23
  310. package/dist/demos/demo-dvd-logo.js.map +1 -1
  311. package/dist/demos/demo-flow-field.d.ts +11 -0
  312. package/dist/demos/demo-flow-field.d.ts.map +1 -0
  313. package/dist/demos/demo-flow-field.js +305 -0
  314. package/dist/demos/demo-flow-field.js.map +1 -0
  315. package/dist/demos/demo-four-corners.js +56 -120
  316. package/dist/demos/demo-four-corners.js.map +1 -1
  317. package/dist/demos/demo-image.js +24 -19
  318. package/dist/demos/demo-image.js.map +1 -1
  319. package/dist/demos/demo-matrix-rain.d.ts +11 -0
  320. package/dist/demos/demo-matrix-rain.d.ts.map +1 -0
  321. package/dist/demos/demo-matrix-rain.js +246 -0
  322. package/dist/demos/demo-matrix-rain.js.map +1 -0
  323. package/dist/demos/demo-pipeline.js +56 -51
  324. package/dist/demos/demo-pipeline.js.map +1 -1
  325. package/dist/demos/demo-samples.js +56 -402
  326. package/dist/demos/demo-samples.js.map +1 -1
  327. package/dist/encoders/AudioEncoder.d.ts +2 -28
  328. package/dist/encoders/AudioEncoder.d.ts.map +1 -1
  329. package/dist/encoders/AudioEncoder.js +80 -20
  330. package/dist/encoders/AudioEncoder.js.map +1 -1
  331. package/dist/encoders/VideoEncoder.d.ts +25 -46
  332. package/dist/encoders/VideoEncoder.d.ts.map +1 -1
  333. package/dist/encoders/VideoEncoder.js +180 -88
  334. package/dist/encoders/VideoEncoder.js.map +1 -1
  335. package/dist/encoders/audio/config.d.ts +30 -0
  336. package/dist/encoders/audio/config.d.ts.map +1 -0
  337. package/dist/encoders/audio/config.js +169 -0
  338. package/dist/encoders/audio/config.js.map +1 -0
  339. package/dist/encoders/audio/constants.d.ts +8 -0
  340. package/dist/encoders/audio/constants.d.ts.map +1 -0
  341. package/dist/encoders/audio/constants.js +8 -0
  342. package/dist/encoders/audio/constants.js.map +1 -0
  343. package/dist/encoders/audio/types.d.ts +70 -0
  344. package/dist/encoders/audio/types.d.ts.map +1 -0
  345. package/dist/encoders/audio/types.js +5 -0
  346. package/dist/encoders/audio/types.js.map +1 -0
  347. package/dist/encoders/video/config.d.ts +25 -0
  348. package/dist/encoders/video/config.d.ts.map +1 -0
  349. package/dist/encoders/video/config.js +132 -0
  350. package/dist/encoders/video/config.js.map +1 -0
  351. package/dist/encoders/video/constants.d.ts +8 -0
  352. package/dist/encoders/video/constants.d.ts.map +1 -0
  353. package/dist/encoders/video/constants.js +8 -0
  354. package/dist/encoders/video/constants.js.map +1 -0
  355. package/dist/encoders/video/queue.d.ts +9 -0
  356. package/dist/encoders/video/queue.d.ts.map +1 -0
  357. package/dist/encoders/video/queue.js +17 -0
  358. package/dist/encoders/video/queue.js.map +1 -0
  359. package/dist/encoders/video/types.d.ts +104 -0
  360. package/dist/encoders/video/types.d.ts.map +1 -0
  361. package/dist/encoders/video/types.js +5 -0
  362. package/dist/encoders/video/types.js.map +1 -0
  363. package/dist/formats/color-space/convert.d.ts +27 -0
  364. package/dist/formats/color-space/convert.d.ts.map +1 -0
  365. package/dist/formats/color-space/convert.js +91 -0
  366. package/dist/formats/color-space/convert.js.map +1 -0
  367. package/dist/formats/color-space/extract.d.ts +32 -0
  368. package/dist/formats/color-space/extract.d.ts.map +1 -0
  369. package/dist/formats/color-space/extract.js +116 -0
  370. package/dist/formats/color-space/extract.js.map +1 -0
  371. package/dist/formats/color-space/index.d.ts +10 -0
  372. package/dist/formats/color-space/index.d.ts.map +1 -0
  373. package/dist/formats/color-space/index.js +14 -0
  374. package/dist/formats/color-space/index.js.map +1 -0
  375. package/dist/formats/color-space/maps.d.ts +70 -0
  376. package/dist/formats/color-space/maps.d.ts.map +1 -0
  377. package/dist/formats/color-space/maps.js +70 -0
  378. package/dist/formats/color-space/maps.js.map +1 -0
  379. package/dist/formats/color-space/types.d.ts +68 -0
  380. package/dist/formats/color-space/types.d.ts.map +1 -0
  381. package/dist/formats/color-space/types.js +49 -0
  382. package/dist/formats/color-space/types.js.map +1 -0
  383. package/dist/formats/color-space.d.ts +4 -124
  384. package/dist/formats/color-space.d.ts.map +1 -1
  385. package/dist/formats/color-space.js +5 -108
  386. package/dist/formats/color-space.js.map +1 -1
  387. package/dist/formats/conversions/frame-converter.d.ts +8 -3
  388. package/dist/formats/conversions/frame-converter.d.ts.map +1 -1
  389. package/dist/formats/conversions/frame-converter.js +16 -12
  390. package/dist/formats/conversions/frame-converter.js.map +1 -1
  391. package/dist/formats/pixel-format/helpers.d.ts +49 -0
  392. package/dist/formats/pixel-format/helpers.d.ts.map +1 -0
  393. package/dist/formats/pixel-format/helpers.js +117 -0
  394. package/dist/formats/pixel-format/helpers.js.map +1 -0
  395. package/dist/formats/pixel-format/index.d.ts +9 -0
  396. package/dist/formats/pixel-format/index.d.ts.map +1 -0
  397. package/dist/formats/pixel-format/index.js +10 -0
  398. package/dist/formats/pixel-format/index.js.map +1 -0
  399. package/dist/formats/pixel-format/sizes.d.ts +17 -0
  400. package/dist/formats/pixel-format/sizes.d.ts.map +1 -0
  401. package/dist/formats/pixel-format/sizes.js +159 -0
  402. package/dist/formats/pixel-format/sizes.js.map +1 -0
  403. package/dist/formats/pixel-format/types.d.ts +13 -0
  404. package/dist/formats/pixel-format/types.d.ts.map +1 -0
  405. package/dist/formats/pixel-format/types.js +5 -0
  406. package/dist/formats/pixel-format/types.js.map +1 -0
  407. package/dist/formats/pixel-formats.d.ts +4 -53
  408. package/dist/formats/pixel-formats.d.ts.map +1 -1
  409. package/dist/formats/pixel-formats.js +5 -179
  410. package/dist/formats/pixel-formats.js.map +1 -1
  411. package/dist/hardware/types.d.ts.map +1 -1
  412. package/dist/hardware/types.js +8 -2
  413. package/dist/hardware/types.js.map +1 -1
  414. package/dist/transfer/detach.d.ts +42 -0
  415. package/dist/transfer/detach.d.ts.map +1 -0
  416. package/dist/transfer/detach.js +93 -0
  417. package/dist/transfer/detach.js.map +1 -0
  418. package/dist/transfer/index.d.ts +9 -0
  419. package/dist/transfer/index.d.ts.map +1 -0
  420. package/dist/transfer/index.js +11 -0
  421. package/dist/transfer/index.js.map +1 -0
  422. package/dist/transfer/validate.d.ts +45 -0
  423. package/dist/transfer/validate.d.ts.map +1 -0
  424. package/dist/transfer/validate.js +98 -0
  425. package/dist/transfer/validate.js.map +1 -0
  426. package/dist/types/video.d.ts +16 -0
  427. package/dist/types/video.d.ts.map +1 -1
  428. package/dist/utils/codec-validation.d.ts +3 -28
  429. package/dist/utils/codec-validation.d.ts.map +1 -1
  430. package/dist/utils/codec-validation.js +4 -248
  431. package/dist/utils/codec-validation.js.map +1 -1
  432. package/docs/api.md +4 -2
  433. package/docs/architecture-refactor-plan.md +149 -0
  434. package/docs/architecture.md +258 -0
  435. package/package.json +6 -4
  436. package/dist/config/ffmpeg-quality.d.ts +0 -23
  437. package/dist/config/ffmpeg-quality.d.ts.map +0 -1
  438. package/dist/config/ffmpeg-quality.js +0 -15
  439. package/dist/config/ffmpeg-quality.js.map +0 -1
  440. package/dist/containers/FFmpegSpawnMuxer.d.ts +0 -42
  441. package/dist/containers/FFmpegSpawnMuxer.d.ts.map +0 -1
  442. package/dist/containers/FFmpegSpawnMuxer.js +0 -311
  443. package/dist/containers/FFmpegSpawnMuxer.js.map +0 -1
  444. package/dist/containers/FallbackMuxer.d.ts +0 -42
  445. package/dist/containers/FallbackMuxer.d.ts.map +0 -1
  446. package/dist/containers/FallbackMuxer.js +0 -311
  447. package/dist/containers/FallbackMuxer.js.map +0 -1
  448. package/dist/containers/MuxerWithFallback.d.ts +0 -110
  449. package/dist/containers/MuxerWithFallback.d.ts.map +0 -1
  450. package/dist/containers/MuxerWithFallback.js +0 -239
  451. package/dist/containers/MuxerWithFallback.js.map +0 -1
  452. package/dist/demos/demo-audio-visualizer-mediabunny.d.ts +0 -10
  453. package/dist/demos/demo-audio-visualizer-mediabunny.d.ts.map +0 -1
  454. package/dist/demos/demo-audio-visualizer-mediabunny.js +0 -357
  455. package/dist/demos/demo-audio-visualizer-mediabunny.js.map +0 -1
  456. package/dist/demos/demo-audio-visualizer-nodeav.d.ts +0 -10
  457. package/dist/demos/demo-audio-visualizer-nodeav.d.ts.map +0 -1
  458. package/dist/demos/demo-audio-visualizer-nodeav.js +0 -318
  459. package/dist/demos/demo-audio-visualizer-nodeav.js.map +0 -1
  460. package/dist/demos/demo-muxer-fallback.d.ts +0 -8
  461. package/dist/demos/demo-muxer-fallback.d.ts.map +0 -1
  462. package/dist/demos/demo-muxer-fallback.js +0 -165
  463. package/dist/demos/demo-muxer-fallback.js.map +0 -1
  464. package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts +0 -72
  465. package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts.map +0 -1
  466. package/dist/polyfills/CanvasRenderingContext2DPolyfill.js +0 -293
  467. package/dist/polyfills/CanvasRenderingContext2DPolyfill.js.map +0 -1
  468. package/dist/polyfills/ImageDataPolyfill.d.ts +0 -12
  469. package/dist/polyfills/ImageDataPolyfill.d.ts.map +0 -1
  470. package/dist/polyfills/ImageDataPolyfill.js +0 -22
  471. package/dist/polyfills/ImageDataPolyfill.js.map +0 -1
  472. package/dist/polyfills/OffscreenCanvasPolyfill.d.ts +0 -16
  473. package/dist/polyfills/OffscreenCanvasPolyfill.d.ts.map +0 -1
  474. package/dist/polyfills/OffscreenCanvasPolyfill.js +0 -46
  475. package/dist/polyfills/OffscreenCanvasPolyfill.js.map +0 -1
  476. package/dist/polyfills/VideoFramePolyfill.d.ts +0 -44
  477. package/dist/polyfills/VideoFramePolyfill.d.ts.map +0 -1
  478. package/dist/polyfills/VideoFramePolyfill.js +0 -98
  479. package/dist/polyfills/VideoFramePolyfill.js.map +0 -1
@@ -0,0 +1,258 @@
1
+ # WebCodecs-Node Architecture
2
+
3
+ This document provides an architecture overview, design decisions, and feature matrix for the webcodecs-node library.
4
+
5
+ ## High-Level Architecture
6
+
7
+ ```
8
+ ┌─────────────────────────────────────────────────────────────────────────┐
9
+ │ User Application │
10
+ └─────────────────────────────────────────────────────────────────────────┘
11
+
12
+
13
+ ┌─────────────────────────────────────────────────────────────────────────┐
14
+ │ Public WebCodecs API │
15
+ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
16
+ │ │VideoEncoder │ │VideoDecoder │ │AudioEncoder │ │AudioDecoder │ │
17
+ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
18
+ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────────────┐ │
19
+ │ │ImageDecoder │ │ VideoFrame │ │ AudioData / EncodedChunks │ │
20
+ │ └─────────────┘ └─────────────┘ └─────────────────────────────────┘ │
21
+ └─────────────────────────────────────────────────────────────────────────┘
22
+
23
+ ┌───────────────┼───────────────┐
24
+ ▼ ▼ ▼
25
+ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
26
+ │ Validation │ │ Config │ │ Formats │
27
+ │ (codecs/) │ │ Parsing │ │ (pixel/color)│
28
+ └──────────────┘ └──────────────┘ └──────────────┘
29
+
30
+
31
+ ┌─────────────────────────────────────────────────────────────────────────┐
32
+ │ Backend Abstraction │
33
+ │ │
34
+ │ isConfigSupported() → validation → backend probe (if needed) │
35
+ │ configure() → validation → backend initialization │
36
+ │ encode()/decode() → data transform → backend processing │
37
+ │ output callback ← chunk creation ← backend output │
38
+ └─────────────────────────────────────────────────────────────────────────┘
39
+
40
+
41
+ ┌─────────────────────────────────────────────────────────────────────────┐
42
+ │ node-av Backend │
43
+ │ ┌─────────────────────────────────────────────────────────────────┐ │
44
+ │ │ NodeAvVideoEncoder │ NodeAvVideoDecoder │ NodeAvImageDecoder│ │
45
+ │ │ NodeAvAudioEncoder │ NodeAvAudioDecoder │ │ │
46
+ │ └─────────────────────────────────────────────────────────────────┘ │
47
+ │ │ │
48
+ │ ┌─────────────────────┼─────────────────────┐ │
49
+ │ ▼ ▼ ▼ │
50
+ │ Hardware Accel Software Codecs Filter Graphs │
51
+ │ (VAAPI, NVENC, QSV) (x264, x265, libvpx, (scale, format, │
52
+ │ SVT-AV1, libopus) transpose) │
53
+ └─────────────────────────────────────────────────────────────────────────┘
54
+
55
+
56
+ ┌─────────────────────────────────────────────────────────────────────────┐
57
+ │ FFmpeg (via node-av) │
58
+ └─────────────────────────────────────────────────────────────────────────┘
59
+ ```
60
+
61
+ ## Data Flow
62
+
63
+ ### Encoding Pipeline
64
+
65
+ ```
66
+ VideoFrame/AudioData EncodedVideoChunk/EncodedAudioChunk
67
+ │ ▲
68
+ ▼ │
69
+ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
70
+ │ Validate │───▶│ Convert │───▶│ Encode │
71
+ │ (format, │ │ (pixel fmt, │ │ (hardware │
72
+ │ dimensions)│ │ colorspace) │ │ or software)│
73
+ └──────────────┘ └──────────────┘ └──────────────┘
74
+ │ │
75
+ ▼ ▼
76
+ FFmpeg filters FFmpeg encoder
77
+ (scale, format) (h264_vaapi, libx264, etc.)
78
+ ```
79
+
80
+ ### Decoding Pipeline
81
+
82
+ ```
83
+ EncodedVideoChunk/EncodedAudioChunk VideoFrame/AudioData
84
+ │ ▲
85
+ ▼ │
86
+ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
87
+ │ Parse │───▶│ Decode │───▶│ Convert │
88
+ │ (NAL units, │ │ (hardware │ │ (to user │
89
+ │ headers) │ │ or software)│ │ format) │
90
+ └──────────────┘ └──────────────┘ └──────────────┘
91
+ ```
92
+
93
+ ## Module Structure
94
+
95
+ ```
96
+ src/
97
+ ├── core/ # WebCodecs data types (VideoFrame, AudioData, etc.)
98
+ ├── encoders/ # Public encoder APIs (VideoEncoder, AudioEncoder)
99
+ ├── decoders/ # Public decoder APIs (VideoDecoder, AudioDecoder, ImageDecoder)
100
+ ├── backends/node-av/ # FFmpeg backend implementation
101
+ │ ├── video/ # Video encoder/decoder
102
+ │ ├── audio/ # Audio encoder/decoder
103
+ │ └── image/ # Image decoder
104
+ ├── codecs/ # Codec-specific utilities
105
+ │ └── validation/ # Codec string validation (WebCodecs spec compliant)
106
+ ├── formats/ # Pixel format and color space handling
107
+ ├── containers/ # Muxer/Demuxer for MP4, WebM, MKV
108
+ ├── capabilities/ # MediaCapabilities API
109
+ ├── transfer/ # ArrayBuffer transfer semantics
110
+ └── utils/ # Shared utilities (errors, logging, buffers)
111
+ ```
112
+
113
+ ## Feature Matrix
114
+
115
+ ### Video Codecs
116
+
117
+ | Codec | Encode | Decode | Hardware Accel | Notes |
118
+ |-------|--------|--------|----------------|-------|
119
+ | H.264/AVC (`avc1.*`) | ✅ | ✅ | VAAPI, NVENC, QSV | Full profile/level support |
120
+ | H.265/HEVC (`hvc1.*`, `hev1.*`) | ✅ | ✅ | VAAPI, NVENC, QSV | 8-bit and 10-bit |
121
+ | VP8 (`vp8`) | ✅ | ✅ | ❌ | Software only |
122
+ | VP9 (`vp09.*`) | ✅ | ✅ | VAAPI | Alpha channel (software), profiles 0-3 |
123
+ | AV1 (`av01.*`) | ✅ | ✅ | VAAPI (decode) | SVT-AV1 encoder, 8/10/12-bit |
124
+
125
+ ### Audio Codecs
126
+
127
+ | Codec | Encode | Decode | Notes |
128
+ |-------|--------|--------|-------|
129
+ | Opus (`opus`) | ✅ | ✅ | All sample rates, stereo/mono |
130
+ | AAC (`mp4a.40.*`) | ✅ | ✅ | AAC-LC, HE-AAC, HE-AACv2 |
131
+ | FLAC (`flac`) | ✅ | ✅ | Lossless, up to 24-bit |
132
+ | Vorbis (`vorbis`) | ✅ | ✅ | WebM container |
133
+ | MP3 (`mp3`) | ✅ | ✅ | Decode-only recommended |
134
+ | PCM (`pcm-*`) | ✅ | ✅ | u8, s16, s24, s32, f32 |
135
+
136
+ ### Container Formats
137
+
138
+ | Format | Mux | Demux | Video Codecs | Audio Codecs |
139
+ |--------|-----|-------|--------------|--------------|
140
+ | MP4 | ✅ | ✅ | H.264, H.265, AV1 | AAC, Opus, FLAC |
141
+ | WebM | ✅ | ✅ | VP8, VP9, AV1 | Opus, Vorbis |
142
+ | MKV | ✅ | ✅ | All | All |
143
+
144
+ ### Image Formats (ImageDecoder)
145
+
146
+ | Format | Decode | Animated | Notes |
147
+ |--------|--------|----------|-------|
148
+ | JPEG | ✅ | N/A | EXIF orientation |
149
+ | PNG | ✅ | ✅ (APNG) | Alpha channel |
150
+ | WebP | ✅ | ✅ | Lossy and lossless |
151
+ | GIF | ✅ | ✅ | Frame disposal |
152
+ | AVIF | ✅ | ✅ | AV1-based |
153
+ | BMP | ✅ | N/A | Basic support |
154
+
155
+ ## Design Decisions
156
+
157
+ ### 1. Timebase Handling
158
+
159
+ **Problem**: FFmpeg uses rational timebases (e.g., 1/90000 for video), while WebCodecs uses microseconds.
160
+
161
+ **Solution**:
162
+ - Input timestamps (microseconds) are converted to encoder timebase on write
163
+ - Output timestamps are converted back to microseconds from packet PTS
164
+ - For AV1 (SVT-AV1), timestamps are quantized to framerate-based timebase to match encoder behavior
165
+
166
+ **Rationale**: This preserves timestamp accuracy while letting FFmpeg handle internal timing correctly.
167
+
168
+ ### 2. B-Frame Reordering
169
+
170
+ **Problem**: B-frames cause output order to differ from input order, breaking simple FIFO duration tracking.
171
+
172
+ **Solution**: Store pending frame info (duration, keyFrame hint) in a Map keyed by timestamp. Look up by timestamp when packets arrive, not by order.
173
+
174
+ **Tradeoff**: Small memory overhead for tracking pending frames.
175
+
176
+ ### 3. Hardware Acceleration (Default Behavior)
177
+
178
+ **Default**: `'no-preference'` which tries hardware first, falls back to software automatically.
179
+
180
+ **Options**:
181
+ - `'no-preference'` (default): Use hardware if available, otherwise software
182
+ - `'prefer-hardware'`: Same as no-preference (explicit hardware preference)
183
+ - `'prefer-software'`: Force software encoder
184
+
185
+ **Fallback Logic**: If hardware encoder initialization fails (driver issues, unsupported resolution, etc.), automatically falls back to software encoder. This is logged at `info` level.
186
+
187
+ **Rationale**: Hardware acceleration provides significant performance benefits. Silent fallback ensures encoding always works even if hardware has quirks.
188
+
189
+ ### 4. HDR Metadata Gap
190
+
191
+ **Problem**: WebCodecs supports HDR metadata (mastering display, content light level), but node-av's API doesn't expose side data attachment for encoded packets.
192
+
193
+ **Current Status**: HDR metadata is accepted in config but not written to output. Requires node-av API additions.
194
+
195
+ **Workaround**: For HDR content, use container-level metadata or post-process with FFmpeg.
196
+
197
+ ### 5. Opus Format Restriction
198
+
199
+ **Problem**: Opus in WebM uses different framing than Opus in Ogg.
200
+
201
+ **Solution**: Only `webm` format is supported for Opus encoding. Requests for `ogg` format throw `NotSupportedError`.
202
+
203
+ **Rationale**: Ogg Opus requires page-based framing that doesn't map cleanly to WebCodecs' chunk model.
204
+
205
+ ### 6. Validation Duplication
206
+
207
+ **Design Choice**: Validation exists in both `isConfigSupported()` and `configure()`.
208
+
209
+ - `isConfigSupported()`: Returns `{ supported: false }` for unsupported configs (no throw)
210
+ - `configure()`: Throws `TypeError` for invalid configs, `NotSupportedError` for unsupported
211
+
212
+ **Rationale**: This matches WebCodecs spec behavior where the two methods have different error semantics.
213
+
214
+ ### 7. Native Frame Passthrough
215
+
216
+ **Optimization**: When VideoFrame wraps a native FFmpeg frame (from decoding), encoding can pass it directly to the encoder without pixel copy.
217
+
218
+ **Benefit**: Zero-copy transcoding path for same-colorspace scenarios.
219
+
220
+ ## Known Limitations
221
+
222
+ 1. **Scalability Mode (SVC)**: Not supported. `scalabilityMode` config is rejected.
223
+
224
+ 2. **Alpha Channel**: Only VP9 software encoding supports alpha. H.264/H.265/AV1 do not.
225
+
226
+ 3. **Odd Dimensions**: Require even width/height for most codecs (YUV420 subsampling). VP9/AV1 software can handle odd dimensions.
227
+
228
+ 4. **Real-time Encoding**: `latencyMode: 'realtime'` reduces quality for lower latency but doesn't guarantee real-time performance.
229
+
230
+ 5. **contentHint**: Accepted but only affects encoder tuning (not a hard guarantee):
231
+ - `text`: Screen content mode (AV1), stillimage tune (x264)
232
+ - `detail`: Lower preset, SSIM tune
233
+ - `motion`: Film tune (x264/x265)
234
+
235
+ ## Logging Conventions
236
+
237
+ Enable debug logging: `WEBCODECS_DEBUG=1`
238
+
239
+ | Level | Usage |
240
+ |-------|-------|
241
+ | `debug` | Internal state, fallback paths, timing details |
242
+ | `info` | Feature limitations, capability detection results |
243
+ | `warn` | Spec mismatches, deprecated usage, recoverable issues |
244
+ | `error` | Failures that will be reported to error callback |
245
+
246
+ ## Testing Strategy
247
+
248
+ - **Unit tests**: Codec validation, format utilities, data type construction
249
+ - **Integration tests**: Full encode/decode cycles with real frames
250
+ - **WPT-style tests**: WebCodecs spec compliance (state machine, error conditions)
251
+ - **Benchmark tests**: Performance regression detection
252
+
253
+ ## Future Considerations
254
+
255
+ 1. **Additional backends**: WebAssembly-based codecs for environments without native FFmpeg
256
+ 2. **Worker support**: Offload encoding/decoding to worker threads
257
+ 3. **Streaming demux**: Chunk-at-a-time demuxing for live streams
258
+ 4. **HDR passthrough**: When node-av exposes side data API
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webcodecs-node",
3
- "version": "0.7.5",
3
+ "version": "0.8.5",
4
4
  "description": "WebCodecs API implementation for Node.js using node-av",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -41,6 +41,8 @@
41
41
  "demo:1080p": "node dist/demos/demo-1080p-transcode.js",
42
42
  "demo:dvd": "node dist/demos/demo-dvd-logo.js",
43
43
  "demo:visualizer": "node dist/demos/demo-audio-visualizer.js",
44
+ "demo:matrix": "node dist/demos/demo-matrix-rain.js",
45
+ "demo:flowfield": "node dist/demos/demo-flow-field.js",
44
46
  "bench": "node scripts/encoding-benchmark.mjs",
45
47
  "bench:quick": "node scripts/encoding-benchmark.mjs --frames 30 --resolution 360p",
46
48
  "bench:full": "node scripts/encoding-benchmark.mjs --frames 300 --resolution 1080p"
@@ -70,12 +72,12 @@
70
72
  "license": "AGPL-3.0-only",
71
73
  "repository": {
72
74
  "type": "git",
73
- "url": ""
75
+ "url": "git+https://github.com/aptumfr/webcodecs-node.git"
74
76
  },
75
77
  "bugs": {
76
- "url": ""
78
+ "url": "https://github.com/aptumfr/webcodecs-node/issues"
77
79
  },
78
- "homepage": "",
80
+ "homepage": "https://github.com/aptumfr/webcodecs-node#readme",
79
81
  "dependencies": {
80
82
  "node-av": "^5.0.2",
81
83
  "node-webpmux": "^3.2.1",
@@ -1,23 +0,0 @@
1
- /**
2
- * FFmpeg quality overrides
3
- *
4
- * This module provides backwards compatibility with the old ffmpeg-quality.js config.
5
- * New code should use webcodecs-config.js via getQualityConfig() instead.
6
- */
7
- export type FfmpegQualityOverrides = {
8
- crf?: number;
9
- preset?: string;
10
- perCodec?: Record<string, {
11
- crf?: number;
12
- preset?: string;
13
- }>;
14
- };
15
- /**
16
- * Get quality overrides for a codec
17
- * Uses unified webcodecs-config.js
18
- */
19
- export declare function getFfmpegQualityOverrides(codecName: string): {
20
- crf?: number;
21
- preset?: string;
22
- };
23
- //# sourceMappingURL=ffmpeg-quality.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ffmpeg-quality.d.ts","sourceRoot":"","sources":["../../src/config/ffmpeg-quality.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAE9F"}
@@ -1,15 +0,0 @@
1
- /**
2
- * FFmpeg quality overrides
3
- *
4
- * This module provides backwards compatibility with the old ffmpeg-quality.js config.
5
- * New code should use webcodecs-config.js via getQualityConfig() instead.
6
- */
7
- import { getQualityConfig } from './webcodecs-config.js';
8
- /**
9
- * Get quality overrides for a codec
10
- * Uses unified webcodecs-config.js
11
- */
12
- export function getFfmpegQualityOverrides(codecName) {
13
- return getQualityConfig(codecName);
14
- }
15
- //# sourceMappingURL=ffmpeg-quality.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ffmpeg-quality.js","sourceRoot":"","sources":["../../src/config/ffmpeg-quality.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAQzD;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACzD,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC"}
@@ -1,42 +0,0 @@
1
- /**
2
- * FFmpeg Spawn Muxer - Fallback muxer using FFmpeg subprocess
3
- *
4
- * This muxer accumulates encoded chunks in memory and uses FFmpeg
5
- * to mux them when close() is called. It serves as a fallback when
6
- * the node-av muxer fails.
7
- */
8
- import type { EncodedVideoChunk } from '../core/EncodedVideoChunk.js';
9
- import type { EncodedAudioChunk } from '../core/EncodedAudioChunk.js';
10
- import type { IMuxer, MuxerConfig, VideoTrackConfig, AudioTrackConfig } from './muxer-types.js';
11
- /**
12
- * FFmpeg-based muxer that uses subprocess for muxing
13
- *
14
- * This is a fallback muxer that accumulates chunks and uses FFmpeg
15
- * to create the final output file. It's more battle-tested but slower
16
- * than the native node-av muxer.
17
- */
18
- export declare class FFmpegSpawnMuxer implements IMuxer {
19
- private config;
20
- private videoConfig;
21
- private audioConfig;
22
- private videoChunks;
23
- private audioChunks;
24
- private _videoChunkCount;
25
- private _audioChunkCount;
26
- private isOpen;
27
- private tempDir;
28
- constructor(config: MuxerConfig);
29
- open(timeout?: number): Promise<void>;
30
- addVideoTrack(config: VideoTrackConfig): Promise<number>;
31
- addAudioTrack(config: AudioTrackConfig): Promise<number>;
32
- writeVideoChunk(chunk: EncodedVideoChunk): Promise<void>;
33
- writeAudioChunk(chunk: EncodedAudioChunk): Promise<void>;
34
- close(timeout?: number): Promise<void>;
35
- private muxWithFFmpeg;
36
- private writeVideoToFile;
37
- private writeAudioToFile;
38
- private spawnFFmpeg;
39
- get videoChunkCount(): number;
40
- get audioChunkCount(): number;
41
- }
42
- //# sourceMappingURL=FFmpegSpawnMuxer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FFmpegSpawnMuxer.d.ts","sourceRoot":"","sources":["../../src/containers/FFmpegSpawnMuxer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAwK1B;;;;;;GAMG;AACH,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAuB;gBAE1B,MAAM,EAAE,WAAW;IAIzB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrC,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQxD,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQxD,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAgB9B,aAAa;YA4Cb,gBAAgB;YAgChB,gBAAgB;IA0B9B,OAAO,CAAC,WAAW;IAoCnB,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;CACF"}