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
@@ -30,24 +30,30 @@ export const HARDWARE_ENCODERS = [
30
30
  { name: 'av1_vaapi', hwaccel: 'vaapi', codec: 'av1', priority: 3 },
31
31
  ];
32
32
  // Hardware decoder definitions
33
- // CUVID (NVDEC) is preferred on NVIDIA (native), QSV for Intel.
34
- // Note: VAAPI decoding can be added if needed but requires specific setup.
33
+ // CUVID (NVDEC) is preferred on NVIDIA (native), QSV for Intel, VAAPI for Linux.
34
+ // Note: VAAPI decoding uses the standard decoder (h264, hevc, etc.) with hwaccel mode,
35
+ // not separate decoder names. We use 'h264_vaapi' etc. as logical names for detection.
35
36
  export const HARDWARE_DECODERS = [
36
37
  // H.264 decoders
37
38
  { name: 'h264_cuvid', hwaccel: 'cuda', codec: 'h264', priority: 1 },
38
39
  { name: 'h264_qsv', hwaccel: 'qsv', codec: 'h264', priority: 2 },
40
+ { name: 'h264_vaapi', hwaccel: 'vaapi', codec: 'h264', priority: 3 },
39
41
  // HEVC decoders
40
42
  { name: 'hevc_cuvid', hwaccel: 'cuda', codec: 'hevc', priority: 1 },
41
43
  { name: 'hevc_qsv', hwaccel: 'qsv', codec: 'hevc', priority: 2 },
44
+ { name: 'hevc_vaapi', hwaccel: 'vaapi', codec: 'hevc', priority: 3 },
42
45
  // VP8 decoders
43
46
  { name: 'vp8_cuvid', hwaccel: 'cuda', codec: 'vp8', priority: 1 },
44
47
  { name: 'vp8_qsv', hwaccel: 'qsv', codec: 'vp8', priority: 2 },
48
+ { name: 'vp8_vaapi', hwaccel: 'vaapi', codec: 'vp8', priority: 3 },
45
49
  // VP9 decoders
46
50
  { name: 'vp9_cuvid', hwaccel: 'cuda', codec: 'vp9', priority: 1 },
47
51
  { name: 'vp9_qsv', hwaccel: 'qsv', codec: 'vp9', priority: 2 },
52
+ { name: 'vp9_vaapi', hwaccel: 'vaapi', codec: 'vp9', priority: 3 },
48
53
  // AV1 decoders
49
54
  { name: 'av1_cuvid', hwaccel: 'cuda', codec: 'av1', priority: 1 },
50
55
  { name: 'av1_qsv', hwaccel: 'qsv', codec: 'av1', priority: 2 },
56
+ { name: 'av1_vaapi', hwaccel: 'vaapi', codec: 'av1', priority: 3 },
51
57
  ];
52
58
  // Software encoder fallbacks
53
59
  export const SOFTWARE_ENCODERS = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hardware/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hardware/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * ArrayBuffer detachment utilities
3
+ *
4
+ * These utilities handle ArrayBuffer transfer semantics for WebCodecs objects.
5
+ * Detached buffers cannot be accessed and indicate ownership transfer.
6
+ */
7
+ /**
8
+ * Check if an ArrayBuffer is detached (transferred or neutered).
9
+ *
10
+ * In Node.js 20+, ArrayBuffer has a .detached property.
11
+ * For older versions, we use a conservative heuristic:
12
+ * - If _intentionallyEmpty flag is set, buffer is not detached
13
+ * - Otherwise, assume NOT detached (false negatives are safer than false positives)
14
+ *
15
+ * Note: On Node <20 without .detached, we cannot reliably distinguish between
16
+ * an intentionally empty buffer (new ArrayBuffer(0)) and a detached buffer.
17
+ * We err on the side of NOT detached to avoid false positives.
18
+ */
19
+ export declare function isDetached(buffer: ArrayBuffer): boolean;
20
+ /**
21
+ * Check if an ArrayBuffer is detached using strict mode.
22
+ *
23
+ * This is a stricter check that treats byteLength === 0 as detached on Node <20.
24
+ * Only use this when you're certain the buffer should NOT be empty.
25
+ */
26
+ export declare function isDetachedStrict(buffer: ArrayBuffer): boolean;
27
+ /**
28
+ * Detach an ArrayBuffer by transferring it to a worker-like structure.
29
+ *
30
+ * This is a simulated detach since Node.js doesn't have structured clone
31
+ * transfer in the same way browsers do. We create a new buffer and mark
32
+ * the original as "detached" by setting a flag.
33
+ *
34
+ * Note: This doesn't actually transfer memory; it copies and marks.
35
+ * For true zero-copy transfer, use MessageChannel or worker postMessage.
36
+ */
37
+ export declare function detachBuffer(buffer: ArrayBuffer): ArrayBuffer;
38
+ /**
39
+ * Create a copy of buffer data, handling typed arrays and ArrayBuffers.
40
+ */
41
+ export declare function copyBufferData(data: BufferSource): Uint8Array;
42
+ //# sourceMappingURL=detach.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detach.d.ts","sourceRoot":"","sources":["../../src/transfer/detach.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAiBvD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAQ7D;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAqB7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAY7D"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * ArrayBuffer detachment utilities
3
+ *
4
+ * These utilities handle ArrayBuffer transfer semantics for WebCodecs objects.
5
+ * Detached buffers cannot be accessed and indicate ownership transfer.
6
+ */
7
+ /**
8
+ * Check if an ArrayBuffer is detached (transferred or neutered).
9
+ *
10
+ * In Node.js 20+, ArrayBuffer has a .detached property.
11
+ * For older versions, we use a conservative heuristic:
12
+ * - If _intentionallyEmpty flag is set, buffer is not detached
13
+ * - Otherwise, assume NOT detached (false negatives are safer than false positives)
14
+ *
15
+ * Note: On Node <20 without .detached, we cannot reliably distinguish between
16
+ * an intentionally empty buffer (new ArrayBuffer(0)) and a detached buffer.
17
+ * We err on the side of NOT detached to avoid false positives.
18
+ */
19
+ export function isDetached(buffer) {
20
+ // Node.js 20+ has a .detached property - use it if available
21
+ if ('detached' in buffer) {
22
+ return buffer.detached === true;
23
+ }
24
+ // Fallback for Node <20: we can only detect truly detached buffers
25
+ // if we marked them with _intentionallyEmpty (for our internal buffers)
26
+ if (buffer._intentionallyEmpty) {
27
+ return false;
28
+ }
29
+ // For user-provided buffers on Node <20, we CANNOT reliably detect detachment.
30
+ // byteLength === 0 could be either a detached buffer OR a legitimately empty one.
31
+ // We assume NOT detached to avoid false positives on empty buffers.
32
+ // If the buffer truly is detached, operations will fail naturally later.
33
+ return false;
34
+ }
35
+ /**
36
+ * Check if an ArrayBuffer is detached using strict mode.
37
+ *
38
+ * This is a stricter check that treats byteLength === 0 as detached on Node <20.
39
+ * Only use this when you're certain the buffer should NOT be empty.
40
+ */
41
+ export function isDetachedStrict(buffer) {
42
+ // Node.js 20+ has a .detached property - use it if available
43
+ if ('detached' in buffer) {
44
+ return buffer.detached === true;
45
+ }
46
+ // On Node <20, byteLength === 0 is the only signal we have
47
+ return buffer.byteLength === 0;
48
+ }
49
+ /**
50
+ * Detach an ArrayBuffer by transferring it to a worker-like structure.
51
+ *
52
+ * This is a simulated detach since Node.js doesn't have structured clone
53
+ * transfer in the same way browsers do. We create a new buffer and mark
54
+ * the original as "detached" by setting a flag.
55
+ *
56
+ * Note: This doesn't actually transfer memory; it copies and marks.
57
+ * For true zero-copy transfer, use MessageChannel or worker postMessage.
58
+ */
59
+ export function detachBuffer(buffer) {
60
+ if (isDetached(buffer)) {
61
+ throw new DOMException('Cannot detach an already detached ArrayBuffer', 'DataCloneError');
62
+ }
63
+ // Create a copy of the data
64
+ const copy = buffer.slice(0);
65
+ // Mark the original as detached (this is a simulation)
66
+ // In reality, structured clone transfer would handle this
67
+ try {
68
+ // Try to use structuredClone with transfer if available
69
+ if (typeof structuredClone === 'function') {
70
+ structuredClone(buffer, { transfer: [buffer] });
71
+ }
72
+ }
73
+ catch {
74
+ // If structuredClone fails, we can't truly detach
75
+ // The copy is still valid though
76
+ }
77
+ return copy;
78
+ }
79
+ /**
80
+ * Create a copy of buffer data, handling typed arrays and ArrayBuffers.
81
+ */
82
+ export function copyBufferData(data) {
83
+ if (data instanceof ArrayBuffer) {
84
+ return new Uint8Array(data.slice(0));
85
+ }
86
+ // TypedArray or DataView
87
+ const view = data instanceof DataView
88
+ ? new Uint8Array(data.buffer, data.byteOffset, data.byteLength)
89
+ : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
90
+ // Create a copy
91
+ return new Uint8Array(view);
92
+ }
93
+ //# sourceMappingURL=detach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detach.js","sourceRoot":"","sources":["../../src/transfer/detach.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,MAAmB;IAC5C,6DAA6D;IAC7D,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;QACzB,OAAQ,MAAc,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC3C,CAAC;IAED,mEAAmE;IACnE,wEAAwE;IACxE,IAAK,MAAc,CAAC,mBAAmB,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,+EAA+E;IAC/E,kFAAkF;IAClF,oEAAoE;IACpE,yEAAyE;IACzE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAmB;IAClD,6DAA6D;IAC7D,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;QACzB,OAAQ,MAAc,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC3C,CAAC;IAED,2DAA2D;IAC3D,OAAO,MAAM,CAAC,UAAU,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,MAAmB;IAC9C,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,YAAY,CAAC,+CAA+C,EAAE,gBAAgB,CAAC,CAAC;IAC5F,CAAC;IAED,4BAA4B;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7B,uDAAuD;IACvD,0DAA0D;IAC1D,IAAI,CAAC;QACH,wDAAwD;QACxD,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE,CAAC;YAC1C,eAAe,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;QAClD,iCAAiC;IACnC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAkB;IAC/C,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;QAChC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,yBAAyB;IACzB,MAAM,IAAI,GAAG,IAAI,YAAY,QAAQ;QACnC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;QAC/D,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAElE,gBAAgB;IAChB,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Transfer module
3
+ *
4
+ * Provides utilities for ArrayBuffer transfer semantics in WebCodecs objects.
5
+ * Handles buffer detachment, transfer list validation, and data copying.
6
+ */
7
+ export { isDetached, isDetachedStrict, detachBuffer, copyBufferData, } from './detach.js';
8
+ export { validateTransferList, validateNotDetached, validateDescriptionNotDetached, isInTransferList, detachTransferredBuffers, } from './validate.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transfer/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,8BAA8B,EAC9B,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Transfer module
3
+ *
4
+ * Provides utilities for ArrayBuffer transfer semantics in WebCodecs objects.
5
+ * Handles buffer detachment, transfer list validation, and data copying.
6
+ */
7
+ // Detachment utilities
8
+ export { isDetached, isDetachedStrict, detachBuffer, copyBufferData, } from './detach.js';
9
+ // Validation utilities
10
+ export { validateTransferList, validateNotDetached, validateDescriptionNotDetached, isInTransferList, detachTransferredBuffers, } from './validate.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transfer/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uBAAuB;AACvB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,uBAAuB;AACvB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,8BAA8B,EAC9B,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Transfer list validation utilities
3
+ *
4
+ * These utilities validate transfer lists for WebCodecs constructors
5
+ * that support the transfer option for zero-copy buffer ownership transfer.
6
+ */
7
+ /**
8
+ * Validate a transfer list for WebCodecs-compliant transfer semantics.
9
+ *
10
+ * Checks:
11
+ * - All items are ArrayBuffer instances
12
+ * - No duplicate buffers in the list
13
+ * - No already-detached buffers
14
+ *
15
+ * @throws {TypeError} If transfer list contains non-ArrayBuffer items
16
+ * @throws {DOMException} DataCloneError if duplicates or detached buffers found
17
+ */
18
+ export declare function validateTransferList(transferList: unknown[]): void;
19
+ /**
20
+ * Validate that a buffer source is not detached.
21
+ *
22
+ * @throws {TypeError} If the buffer is detached
23
+ */
24
+ export declare function validateNotDetached(data: BufferSource, name?: string): void;
25
+ /**
26
+ * Validate that an optional description buffer is not detached.
27
+ * Used for decoder/encoder configure() calls that accept a description parameter.
28
+ *
29
+ * @throws {TypeError} If the description buffer is detached
30
+ */
31
+ export declare function validateDescriptionNotDetached(description: BufferSource | undefined): void;
32
+ /**
33
+ * Check if a buffer source references a buffer in the transfer list.
34
+ *
35
+ * This is used to determine if data should be transferred (moved) vs copied.
36
+ */
37
+ export declare function isInTransferList(data: BufferSource, transferList: ArrayBuffer[] | undefined): boolean;
38
+ /**
39
+ * Perform buffer detachment for items in a transfer list.
40
+ *
41
+ * This simulates the transfer behavior by using structuredClone when available.
42
+ * After this call, the original buffers should be considered detached.
43
+ */
44
+ export declare function detachTransferredBuffers(transferList: ArrayBuffer[]): void;
45
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/transfer/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,IAAI,CAkBlE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,GAAE,MAAiB,GAAG,IAAI,CAMrF;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,YAAY,GAAG,SAAS,GACpC,IAAI,CAgBN;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAClB,YAAY,EAAE,WAAW,EAAE,GAAG,SAAS,GACtC,OAAO,CAOT;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAa1E"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Transfer list validation utilities
3
+ *
4
+ * These utilities validate transfer lists for WebCodecs constructors
5
+ * that support the transfer option for zero-copy buffer ownership transfer.
6
+ */
7
+ import { isDetached } from './detach.js';
8
+ /**
9
+ * Validate a transfer list for WebCodecs-compliant transfer semantics.
10
+ *
11
+ * Checks:
12
+ * - All items are ArrayBuffer instances
13
+ * - No duplicate buffers in the list
14
+ * - No already-detached buffers
15
+ *
16
+ * @throws {TypeError} If transfer list contains non-ArrayBuffer items
17
+ * @throws {DOMException} DataCloneError if duplicates or detached buffers found
18
+ */
19
+ export function validateTransferList(transferList) {
20
+ const seen = new Set();
21
+ for (const item of transferList) {
22
+ if (!(item instanceof ArrayBuffer)) {
23
+ throw new TypeError('transfer list must only contain ArrayBuffer objects');
24
+ }
25
+ if (seen.has(item)) {
26
+ throw new DOMException('Duplicate ArrayBuffer in transfer list', 'DataCloneError');
27
+ }
28
+ if (isDetached(item)) {
29
+ throw new DOMException('Cannot transfer a detached ArrayBuffer', 'DataCloneError');
30
+ }
31
+ seen.add(item);
32
+ }
33
+ }
34
+ /**
35
+ * Validate that a buffer source is not detached.
36
+ *
37
+ * @throws {TypeError} If the buffer is detached
38
+ */
39
+ export function validateNotDetached(data, name = 'buffer') {
40
+ const buffer = data instanceof ArrayBuffer ? data : data.buffer;
41
+ if (isDetached(buffer)) {
42
+ throw new TypeError(`${name} ArrayBuffer is detached`);
43
+ }
44
+ }
45
+ /**
46
+ * Validate that an optional description buffer is not detached.
47
+ * Used for decoder/encoder configure() calls that accept a description parameter.
48
+ *
49
+ * @throws {TypeError} If the description buffer is detached
50
+ */
51
+ export function validateDescriptionNotDetached(description) {
52
+ if (description === undefined) {
53
+ return;
54
+ }
55
+ const buffer = description instanceof ArrayBuffer
56
+ ? description
57
+ : description.buffer;
58
+ // Use the 'detached' property if available (Node.js 20+)
59
+ if ('detached' in buffer && buffer.detached === true) {
60
+ throw new TypeError('description ArrayBuffer is detached');
61
+ }
62
+ // On Node <20, we cannot reliably detect detachment without false positives
63
+ // on legitimately empty descriptions (new ArrayBuffer(0)).
64
+ // Assume NOT detached - if truly detached, operations will fail later.
65
+ }
66
+ /**
67
+ * Check if a buffer source references a buffer in the transfer list.
68
+ *
69
+ * This is used to determine if data should be transferred (moved) vs copied.
70
+ */
71
+ export function isInTransferList(data, transferList) {
72
+ if (!transferList || transferList.length === 0) {
73
+ return false;
74
+ }
75
+ const buffer = data instanceof ArrayBuffer ? data : data.buffer;
76
+ return transferList.includes(buffer);
77
+ }
78
+ /**
79
+ * Perform buffer detachment for items in a transfer list.
80
+ *
81
+ * This simulates the transfer behavior by using structuredClone when available.
82
+ * After this call, the original buffers should be considered detached.
83
+ */
84
+ export function detachTransferredBuffers(transferList) {
85
+ if (typeof structuredClone !== 'function') {
86
+ // Can't truly detach without structuredClone
87
+ return;
88
+ }
89
+ for (const buffer of transferList) {
90
+ try {
91
+ structuredClone(buffer, { transfer: [buffer] });
92
+ }
93
+ catch {
94
+ // Buffer may already be detached or not transferable
95
+ }
96
+ }
97
+ }
98
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/transfer/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAuB;IAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,YAAY,CAAC,wCAAwC,EAAE,gBAAgB,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,YAAY,CAAC,wCAAwC,EAAE,gBAAgB,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAkB,EAAE,OAAe,QAAQ;IAC7E,MAAM,MAAM,GAAG,IAAI,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAEhE,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAC5C,WAAqC;IAErC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,YAAY,WAAW;QAC/C,CAAC,CAAC,WAAW;QACb,CAAC,CAAE,WAA+B,CAAC,MAAM,CAAC;IAE5C,yDAAyD;IACzD,IAAI,UAAU,IAAI,MAAM,IAAK,MAAc,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC9D,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;IAC7D,CAAC;IACD,4EAA4E;IAC5E,2DAA2D;IAC3D,uEAAuE;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAkB,EAClB,YAAuC;IAEvC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAChE,OAAO,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,YAA2B;IAClE,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE,CAAC;QAC1C,6CAA6C;QAC7C,OAAO;IACT,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,eAAe,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -19,6 +19,12 @@ export interface VideoFrameBufferInit {
19
19
  displayWidth?: number;
20
20
  displayHeight?: number;
21
21
  colorSpace?: VideoColorSpaceInit;
22
+ /** Frame rotation in degrees (0, 90, 180, 270) */
23
+ rotation?: 0 | 90 | 180 | 270;
24
+ /** Whether to flip the frame horizontally */
25
+ flip?: boolean;
26
+ /** ArrayBuffers to detach after frame construction (transfer ownership) */
27
+ transfer?: ArrayBuffer[];
22
28
  }
23
29
  /**
24
30
  * Initialization options for creating a VideoFrame from CanvasImageSource
@@ -31,6 +37,10 @@ export interface VideoFrameInit {
31
37
  displayWidth?: number;
32
38
  displayHeight?: number;
33
39
  colorSpace?: VideoColorSpaceInit;
40
+ /** Frame rotation in degrees (0, 90, 180, 270) */
41
+ rotation?: 0 | 90 | 180 | 270;
42
+ /** Whether to flip the frame horizontally */
43
+ flip?: boolean;
34
44
  }
35
45
  /**
36
46
  * Options for VideoFrame.copyTo()
@@ -39,5 +49,11 @@ export interface VideoFrameCopyToOptions {
39
49
  rect?: DOMRectInit;
40
50
  layout?: PlaneLayout[];
41
51
  format?: VideoPixelFormat;
52
+ /**
53
+ * Target color space for the copy operation.
54
+ * When converting between YUV and RGB, the color space determines
55
+ * which conversion matrix coefficients are used.
56
+ */
57
+ colorSpace?: VideoColorSpaceInit;
42
58
  }
43
59
  //# sourceMappingURL=video.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/types/video.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B"}
1
+ {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/types/video.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC"}
@@ -1,33 +1,8 @@
1
1
  /**
2
2
  * Codec string validation according to WebCodecs specification
3
3
  *
4
- * The WebCodecs spec requires strict validation of codec strings:
5
- * - Case-sensitive matching
6
- * - Fully qualified codec strings (no ambiguous "vp9", must be "vp09.xx.xx.xx")
7
- * - Valid profile/level parameters
8
- *
9
- * @see https://www.w3.org/TR/webcodecs-codec-registry/
10
- */
11
- export interface CodecValidationResult {
12
- valid: boolean;
13
- supported: boolean;
14
- error?: string;
15
- }
16
- /**
17
- * Validate a video codec string according to WebCodecs spec
18
- *
19
- * Returns { valid: true, supported: true } for valid, supported codecs
20
- * Returns { valid: true, supported: false } for valid but unsupported codecs
21
- * Returns { valid: false, supported: false } for invalid codec strings
22
- */
23
- export declare function validateVideoCodec(codec: string): CodecValidationResult;
24
- /**
25
- * Check if a codec config is valid (should throw TypeError if invalid)
26
- * This checks for missing/empty required fields
27
- */
28
- export declare function validateVideoDecoderConfig(config: unknown): void;
29
- /**
30
- * Check if an encoder config is valid (should throw TypeError if invalid)
4
+ * @deprecated Import from '../codecs/validation' instead for new code.
5
+ * This file re-exports from the new modular structure for backward compatibility.
31
6
  */
32
- export declare function validateVideoEncoderConfig(config: unknown): void;
7
+ export * from '../codecs/validation/index.js';
33
8
  //# sourceMappingURL=codec-validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codec-validation.d.ts","sourceRoot":"","sources":["../../src/utils/codec-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAiEvE;AAyJD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAchE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA+ChE"}
1
+ {"version":3,"file":"codec-validation.d.ts","sourceRoot":"","sources":["../../src/utils/codec-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,+BAA+B,CAAC"}