webcodecs-node 0.7.2 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/README.md +106 -16
  2. package/dist/backends/node-av/HardwarePipeline.d.ts +36 -0
  3. package/dist/backends/node-av/HardwarePipeline.d.ts.map +1 -0
  4. package/dist/backends/node-av/HardwarePipeline.js +203 -0
  5. package/dist/backends/node-av/HardwarePipeline.js.map +1 -0
  6. package/dist/backends/node-av/audio/NodeAvAudioDecoder.d.ts +46 -0
  7. package/dist/backends/node-av/audio/NodeAvAudioDecoder.d.ts.map +1 -0
  8. package/dist/backends/node-av/audio/NodeAvAudioDecoder.js +277 -0
  9. package/dist/backends/node-av/audio/NodeAvAudioDecoder.js.map +1 -0
  10. package/dist/backends/node-av/audio/NodeAvAudioEncoder.d.ts +47 -0
  11. package/dist/backends/node-av/audio/NodeAvAudioEncoder.d.ts.map +1 -0
  12. package/dist/backends/node-av/audio/NodeAvAudioEncoder.js +363 -0
  13. package/dist/backends/node-av/audio/NodeAvAudioEncoder.js.map +1 -0
  14. package/dist/backends/node-av/audio/decoder/channel-layout.d.ts +12 -0
  15. package/dist/backends/node-av/audio/decoder/channel-layout.d.ts.map +1 -0
  16. package/dist/backends/node-av/audio/decoder/channel-layout.js +24 -0
  17. package/dist/backends/node-av/audio/decoder/channel-layout.js.map +1 -0
  18. package/dist/backends/node-av/audio/decoder/codec-mapping.d.ts +9 -0
  19. package/dist/backends/node-av/audio/decoder/codec-mapping.d.ts.map +1 -0
  20. package/dist/backends/node-av/audio/decoder/codec-mapping.js +40 -0
  21. package/dist/backends/node-av/audio/decoder/codec-mapping.js.map +1 -0
  22. package/dist/backends/node-av/audio/decoder/constants.d.ts +6 -0
  23. package/dist/backends/node-av/audio/decoder/constants.d.ts.map +1 -0
  24. package/dist/backends/node-av/audio/decoder/constants.js +6 -0
  25. package/dist/backends/node-av/audio/decoder/constants.js.map +1 -0
  26. package/dist/backends/node-av/audio/decoder/index.d.ts +8 -0
  27. package/dist/backends/node-av/audio/decoder/index.d.ts.map +1 -0
  28. package/dist/backends/node-av/audio/decoder/index.js +8 -0
  29. package/dist/backends/node-av/audio/decoder/index.js.map +1 -0
  30. package/dist/backends/node-av/audio/decoder/sample-format.d.ts +14 -0
  31. package/dist/backends/node-av/audio/decoder/sample-format.d.ts.map +1 -0
  32. package/dist/backends/node-av/audio/decoder/sample-format.js +54 -0
  33. package/dist/backends/node-av/audio/decoder/sample-format.js.map +1 -0
  34. package/dist/backends/node-av/audio/encoder/channel-layout.d.ts +12 -0
  35. package/dist/backends/node-av/audio/encoder/channel-layout.d.ts.map +1 -0
  36. package/dist/backends/node-av/audio/encoder/channel-layout.js +24 -0
  37. package/dist/backends/node-av/audio/encoder/channel-layout.js.map +1 -0
  38. package/dist/backends/node-av/audio/encoder/codec-description.d.ts +33 -0
  39. package/dist/backends/node-av/audio/encoder/codec-description.d.ts.map +1 -0
  40. package/dist/backends/node-av/audio/encoder/codec-description.js +137 -0
  41. package/dist/backends/node-av/audio/encoder/codec-description.js.map +1 -0
  42. package/dist/backends/node-av/audio/encoder/codec-mapping.d.ts +12 -0
  43. package/dist/backends/node-av/audio/encoder/codec-mapping.d.ts.map +1 -0
  44. package/dist/backends/node-av/audio/encoder/codec-mapping.js +61 -0
  45. package/dist/backends/node-av/audio/encoder/codec-mapping.js.map +1 -0
  46. package/dist/backends/node-av/audio/encoder/constants.d.ts +6 -0
  47. package/dist/backends/node-av/audio/encoder/constants.d.ts.map +1 -0
  48. package/dist/backends/node-av/audio/encoder/constants.js +6 -0
  49. package/dist/backends/node-av/audio/encoder/constants.js.map +1 -0
  50. package/dist/backends/node-av/audio/encoder/drain.d.ts +32 -0
  51. package/dist/backends/node-av/audio/encoder/drain.d.ts.map +1 -0
  52. package/dist/backends/node-av/audio/encoder/drain.js +51 -0
  53. package/dist/backends/node-av/audio/encoder/drain.js.map +1 -0
  54. package/dist/backends/node-av/audio/encoder/index.d.ts +20 -0
  55. package/dist/backends/node-av/audio/encoder/index.d.ts.map +1 -0
  56. package/dist/backends/node-av/audio/encoder/index.js +20 -0
  57. package/dist/backends/node-av/audio/encoder/index.js.map +1 -0
  58. package/dist/backends/node-av/audio/encoder/options.d.ts +40 -0
  59. package/dist/backends/node-av/audio/encoder/options.d.ts.map +1 -0
  60. package/dist/backends/node-av/audio/encoder/options.js +127 -0
  61. package/dist/backends/node-av/audio/encoder/options.js.map +1 -0
  62. package/dist/backends/node-av/audio/encoder/sample-format-convert.d.ts +40 -0
  63. package/dist/backends/node-av/audio/encoder/sample-format-convert.d.ts.map +1 -0
  64. package/dist/backends/node-av/audio/encoder/sample-format-convert.js +152 -0
  65. package/dist/backends/node-av/audio/encoder/sample-format-convert.js.map +1 -0
  66. package/dist/backends/node-av/hardware-pipeline/capabilities.d.ts +10 -0
  67. package/dist/backends/node-av/hardware-pipeline/capabilities.d.ts.map +1 -0
  68. package/dist/backends/node-av/hardware-pipeline/capabilities.js +45 -0
  69. package/dist/backends/node-av/hardware-pipeline/capabilities.js.map +1 -0
  70. package/dist/backends/node-av/hardware-pipeline/index.d.ts +6 -0
  71. package/dist/backends/node-av/hardware-pipeline/index.d.ts.map +1 -0
  72. package/dist/backends/node-av/hardware-pipeline/index.js +5 -0
  73. package/dist/backends/node-av/hardware-pipeline/index.js.map +1 -0
  74. package/dist/backends/node-av/hardware-pipeline/types.d.ts +13 -0
  75. package/dist/backends/node-av/hardware-pipeline/types.d.ts.map +1 -0
  76. package/dist/backends/node-av/hardware-pipeline/types.js +5 -0
  77. package/dist/backends/node-av/hardware-pipeline/types.js.map +1 -0
  78. package/dist/backends/node-av/image/NodeAvImageDecoder.d.ts +95 -0
  79. package/dist/backends/node-av/image/NodeAvImageDecoder.d.ts.map +1 -0
  80. package/dist/backends/node-av/image/NodeAvImageDecoder.js +383 -0
  81. package/dist/backends/node-av/image/NodeAvImageDecoder.js.map +1 -0
  82. package/dist/backends/node-av/image/WebPImageDecoder.d.ts +57 -0
  83. package/dist/backends/node-av/image/WebPImageDecoder.d.ts.map +1 -0
  84. package/dist/backends/node-av/image/WebPImageDecoder.js +178 -0
  85. package/dist/backends/node-av/image/WebPImageDecoder.js.map +1 -0
  86. package/dist/backends/node-av/image/decoder/constants.d.ts +14 -0
  87. package/dist/backends/node-av/image/decoder/constants.d.ts.map +1 -0
  88. package/dist/backends/node-av/image/decoder/constants.js +24 -0
  89. package/dist/backends/node-av/image/decoder/constants.js.map +1 -0
  90. package/dist/backends/node-av/image/decoder/index.d.ts +7 -0
  91. package/dist/backends/node-av/image/decoder/index.d.ts.map +1 -0
  92. package/dist/backends/node-av/image/decoder/index.js +6 -0
  93. package/dist/backends/node-av/image/decoder/index.js.map +1 -0
  94. package/dist/backends/node-av/image/decoder/probe.d.ts +12 -0
  95. package/dist/backends/node-av/image/decoder/probe.d.ts.map +1 -0
  96. package/dist/backends/node-av/image/decoder/probe.js +57 -0
  97. package/dist/backends/node-av/image/decoder/probe.js.map +1 -0
  98. package/dist/backends/node-av/image/decoder/types.d.ts +25 -0
  99. package/dist/backends/node-av/image/decoder/types.d.ts.map +1 -0
  100. package/dist/backends/node-av/image/decoder/types.js +5 -0
  101. package/dist/backends/node-av/image/decoder/types.js.map +1 -0
  102. package/dist/backends/node-av/video/NodeAvVideoDecoder.d.ts +44 -0
  103. package/dist/backends/node-av/video/NodeAvVideoDecoder.d.ts.map +1 -0
  104. package/dist/backends/node-av/video/NodeAvVideoDecoder.js +326 -0
  105. package/dist/backends/node-av/video/NodeAvVideoDecoder.js.map +1 -0
  106. package/dist/backends/node-av/video/NodeAvVideoEncoder.d.ts +49 -0
  107. package/dist/backends/node-av/video/NodeAvVideoEncoder.d.ts.map +1 -0
  108. package/dist/backends/node-av/video/NodeAvVideoEncoder.js +317 -0
  109. package/dist/backends/node-av/video/NodeAvVideoEncoder.js.map +1 -0
  110. package/dist/backends/node-av/video/decoder/codec-mapping.d.ts +9 -0
  111. package/dist/backends/node-av/video/decoder/codec-mapping.d.ts.map +1 -0
  112. package/dist/backends/node-av/video/decoder/codec-mapping.js +25 -0
  113. package/dist/backends/node-av/video/decoder/codec-mapping.js.map +1 -0
  114. package/dist/backends/node-av/video/decoder/constants.d.ts +13 -0
  115. package/dist/backends/node-av/video/decoder/constants.d.ts.map +1 -0
  116. package/dist/backends/node-av/video/decoder/constants.js +13 -0
  117. package/dist/backends/node-av/video/decoder/constants.js.map +1 -0
  118. package/dist/backends/node-av/video/decoder/index.d.ts +7 -0
  119. package/dist/backends/node-av/video/decoder/index.d.ts.map +1 -0
  120. package/dist/backends/node-av/video/decoder/index.js +7 -0
  121. package/dist/backends/node-av/video/decoder/index.js.map +1 -0
  122. package/dist/backends/node-av/video/decoder/pixel-format.d.ts +13 -0
  123. package/dist/backends/node-av/video/decoder/pixel-format.d.ts.map +1 -0
  124. package/dist/backends/node-av/video/decoder/pixel-format.js +88 -0
  125. package/dist/backends/node-av/video/decoder/pixel-format.js.map +1 -0
  126. package/dist/backends/node-av/video/encoder/codec-description.d.ts +26 -0
  127. package/dist/backends/node-av/video/encoder/codec-description.d.ts.map +1 -0
  128. package/dist/backends/node-av/video/encoder/codec-description.js +86 -0
  129. package/dist/backends/node-av/video/encoder/codec-description.js.map +1 -0
  130. package/dist/backends/node-av/video/encoder/drain.d.ts +34 -0
  131. package/dist/backends/node-av/video/encoder/drain.d.ts.map +1 -0
  132. package/dist/backends/node-av/video/encoder/drain.js +51 -0
  133. package/dist/backends/node-av/video/encoder/drain.js.map +1 -0
  134. package/dist/backends/node-av/video/encoder/filters.d.ts +37 -0
  135. package/dist/backends/node-av/video/encoder/filters.d.ts.map +1 -0
  136. package/dist/backends/node-av/video/encoder/filters.js +71 -0
  137. package/dist/backends/node-av/video/encoder/filters.js.map +1 -0
  138. package/dist/backends/node-av/video/encoder/gpu-filters.d.ts +9 -0
  139. package/dist/backends/node-av/video/encoder/gpu-filters.d.ts.map +1 -0
  140. package/dist/backends/node-av/video/encoder/gpu-filters.js +26 -0
  141. package/dist/backends/node-av/video/encoder/gpu-filters.js.map +1 -0
  142. package/dist/backends/node-av/video/encoder/hardware-constraints.d.ts +12 -0
  143. package/dist/backends/node-av/video/encoder/hardware-constraints.d.ts.map +1 -0
  144. package/dist/backends/node-av/video/encoder/hardware-constraints.js +31 -0
  145. package/dist/backends/node-av/video/encoder/hardware-constraints.js.map +1 -0
  146. package/dist/backends/node-av/video/encoder/index.d.ts +28 -0
  147. package/dist/backends/node-av/video/encoder/index.d.ts.map +1 -0
  148. package/dist/backends/node-av/video/encoder/index.js +28 -0
  149. package/dist/backends/node-av/video/encoder/index.js.map +1 -0
  150. package/dist/backends/node-av/video/encoder/options.d.ts +39 -0
  151. package/dist/backends/node-av/video/encoder/options.d.ts.map +1 -0
  152. package/dist/backends/node-av/video/encoder/options.js +195 -0
  153. package/dist/backends/node-av/video/encoder/options.js.map +1 -0
  154. package/dist/backends/node-av/video/encoder/pixel-format-config.d.ts +42 -0
  155. package/dist/backends/node-av/video/encoder/pixel-format-config.d.ts.map +1 -0
  156. package/dist/backends/node-av/video/encoder/pixel-format-config.js +122 -0
  157. package/dist/backends/node-av/video/encoder/pixel-format-config.js.map +1 -0
  158. package/dist/backends/node-av/video/encoder/pixel-format.d.ts +13 -0
  159. package/dist/backends/node-av/video/encoder/pixel-format.d.ts.map +1 -0
  160. package/dist/backends/node-av/video/encoder/pixel-format.js +68 -0
  161. package/dist/backends/node-av/video/encoder/pixel-format.js.map +1 -0
  162. package/dist/backends/node-av/video/encoder/setup.d.ts +33 -0
  163. package/dist/backends/node-av/video/encoder/setup.d.ts.map +1 -0
  164. package/dist/backends/node-av/video/encoder/setup.js +62 -0
  165. package/dist/backends/node-av/video/encoder/setup.js.map +1 -0
  166. package/dist/backends/node-av/video/encoder/software-encoders.d.ts +8 -0
  167. package/dist/backends/node-av/video/encoder/software-encoders.d.ts.map +1 -0
  168. package/dist/backends/node-av/video/encoder/software-encoders.js +17 -0
  169. package/dist/backends/node-av/video/encoder/software-encoders.js.map +1 -0
  170. package/dist/backends/node-av/video/encoder/timestamp.d.ts +34 -0
  171. package/dist/backends/node-av/video/encoder/timestamp.d.ts.map +1 -0
  172. package/dist/backends/node-av/video/encoder/timestamp.js +39 -0
  173. package/dist/backends/node-av/video/encoder/timestamp.js.map +1 -0
  174. package/dist/backends/types.d.ts +44 -0
  175. package/dist/backends/types.d.ts.map +1 -1
  176. package/dist/backends/types.js.map +1 -1
  177. package/dist/codec-utils/formats.d.ts.map +1 -1
  178. package/dist/codec-utils/formats.js +78 -0
  179. package/dist/codec-utils/formats.js.map +1 -1
  180. package/dist/codec-utils/types.d.ts +1 -1
  181. package/dist/codecs/aac.d.ts +10 -0
  182. package/dist/codecs/aac.d.ts.map +1 -0
  183. package/dist/codecs/aac.js +10 -0
  184. package/dist/codecs/aac.js.map +1 -0
  185. package/dist/codecs/avc.d.ts +11 -0
  186. package/dist/codecs/avc.d.ts.map +1 -0
  187. package/dist/codecs/avc.js +11 -0
  188. package/dist/codecs/avc.js.map +1 -0
  189. package/dist/codecs/hevc.d.ts +11 -0
  190. package/dist/codecs/hevc.d.ts.map +1 -0
  191. package/dist/codecs/hevc.js +11 -0
  192. package/dist/codecs/hevc.js.map +1 -0
  193. package/dist/codecs/index.d.ts +10 -0
  194. package/dist/codecs/index.d.ts.map +1 -0
  195. package/dist/codecs/index.js +14 -0
  196. package/dist/codecs/index.js.map +1 -0
  197. package/dist/codecs/validation/audio.d.ts +19 -0
  198. package/dist/codecs/validation/audio.d.ts.map +1 -0
  199. package/dist/codecs/validation/audio.js +111 -0
  200. package/dist/codecs/validation/audio.js.map +1 -0
  201. package/dist/codecs/validation/config.d.ts +27 -0
  202. package/dist/codecs/validation/config.d.ts.map +1 -0
  203. package/dist/codecs/validation/config.js +154 -0
  204. package/dist/codecs/validation/config.js.map +1 -0
  205. package/dist/codecs/validation/index.d.ts +9 -0
  206. package/dist/codecs/validation/index.d.ts.map +1 -0
  207. package/dist/codecs/validation/index.js +12 -0
  208. package/dist/codecs/validation/index.js.map +1 -0
  209. package/dist/codecs/validation/video.d.ts +24 -0
  210. package/dist/codecs/validation/video.d.ts.map +1 -0
  211. package/dist/codecs/validation/video.js +196 -0
  212. package/dist/codecs/validation/video.js.map +1 -0
  213. package/dist/config/webcodecs-config.d.ts +58 -0
  214. package/dist/config/webcodecs-config.d.ts.map +1 -0
  215. package/dist/config/webcodecs-config.js +187 -0
  216. package/dist/config/webcodecs-config.js.map +1 -0
  217. package/dist/containers/Demuxer.d.ts +3 -1
  218. package/dist/containers/Demuxer.d.ts.map +1 -1
  219. package/dist/containers/Demuxer.js +26 -19
  220. package/dist/containers/Demuxer.js.map +1 -1
  221. package/dist/containers/FFmpegMuxer.d.ts +42 -0
  222. package/dist/containers/FFmpegMuxer.d.ts.map +1 -0
  223. package/dist/containers/FFmpegMuxer.js +311 -0
  224. package/dist/containers/FFmpegMuxer.js.map +1 -0
  225. package/dist/containers/Muxer.d.ts +75 -107
  226. package/dist/containers/Muxer.d.ts.map +1 -1
  227. package/dist/containers/Muxer.js +184 -243
  228. package/dist/containers/Muxer.js.map +1 -1
  229. package/dist/containers/NodeAvMuxer.d.ts +125 -0
  230. package/dist/containers/NodeAvMuxer.d.ts.map +1 -0
  231. package/dist/containers/NodeAvMuxer.js +458 -0
  232. package/dist/containers/NodeAvMuxer.js.map +1 -0
  233. package/dist/containers/extract.d.ts.map +1 -1
  234. package/dist/containers/extract.js +3 -1
  235. package/dist/containers/extract.js.map +1 -1
  236. package/dist/containers/index.d.ts +20 -14
  237. package/dist/containers/index.d.ts.map +1 -1
  238. package/dist/containers/index.js +21 -14
  239. package/dist/containers/index.js.map +1 -1
  240. package/dist/containers/muxer-types.d.ts +117 -0
  241. package/dist/containers/muxer-types.d.ts.map +1 -0
  242. package/dist/containers/muxer-types.js +45 -0
  243. package/dist/containers/muxer-types.js.map +1 -0
  244. package/dist/containers/transcode.d.ts.map +1 -1
  245. package/dist/containers/transcode.js +171 -150
  246. package/dist/containers/transcode.js.map +1 -1
  247. package/dist/core/AudioData.d.ts.map +1 -1
  248. package/dist/core/AudioData.js +54 -12
  249. package/dist/core/AudioData.js.map +1 -1
  250. package/dist/core/EncodedAudioChunk.d.ts.map +1 -1
  251. package/dist/core/EncodedAudioChunk.js +74 -6
  252. package/dist/core/EncodedAudioChunk.js.map +1 -1
  253. package/dist/core/EncodedVideoChunk.d.ts +2 -0
  254. package/dist/core/EncodedVideoChunk.d.ts.map +1 -1
  255. package/dist/core/EncodedVideoChunk.js +70 -2
  256. package/dist/core/EncodedVideoChunk.js.map +1 -1
  257. package/dist/core/VideoFrame.d.ts +27 -2
  258. package/dist/core/VideoFrame.d.ts.map +1 -1
  259. package/dist/core/VideoFrame.js +245 -125
  260. package/dist/core/VideoFrame.js.map +1 -1
  261. package/dist/core/video-frame/layout.d.ts +10 -0
  262. package/dist/core/video-frame/layout.d.ts.map +1 -0
  263. package/dist/core/video-frame/layout.js +97 -0
  264. package/dist/core/video-frame/layout.js.map +1 -0
  265. package/dist/core/video-frame/orientation.d.ts +23 -0
  266. package/dist/core/video-frame/orientation.d.ts.map +1 -0
  267. package/dist/core/video-frame/orientation.js +49 -0
  268. package/dist/core/video-frame/orientation.js.map +1 -0
  269. package/dist/core/video-frame/transfer.d.ts +19 -0
  270. package/dist/core/video-frame/transfer.d.ts.map +1 -0
  271. package/dist/core/video-frame/transfer.js +78 -0
  272. package/dist/core/video-frame/transfer.js.map +1 -0
  273. package/dist/core/video-frame/validation.d.ts +28 -0
  274. package/dist/core/video-frame/validation.d.ts.map +1 -0
  275. package/dist/core/video-frame/validation.js +76 -0
  276. package/dist/core/video-frame/validation.js.map +1 -0
  277. package/dist/decoders/AudioDecoder.d.ts +2 -19
  278. package/dist/decoders/AudioDecoder.d.ts.map +1 -1
  279. package/dist/decoders/AudioDecoder.js +27 -11
  280. package/dist/decoders/AudioDecoder.js.map +1 -1
  281. package/dist/decoders/ImageDecoder.d.ts +34 -41
  282. package/dist/decoders/ImageDecoder.d.ts.map +1 -1
  283. package/dist/decoders/ImageDecoder.js +158 -266
  284. package/dist/decoders/ImageDecoder.js.map +1 -1
  285. package/dist/decoders/VideoDecoder.d.ts +3 -38
  286. package/dist/decoders/VideoDecoder.d.ts.map +1 -1
  287. package/dist/decoders/VideoDecoder.js +126 -124
  288. package/dist/decoders/VideoDecoder.js.map +1 -1
  289. package/dist/decoders/audio/config.d.ts +23 -0
  290. package/dist/decoders/audio/config.d.ts.map +1 -0
  291. package/dist/decoders/audio/config.js +112 -0
  292. package/dist/decoders/audio/config.js.map +1 -0
  293. package/dist/decoders/audio/constants.d.ts +6 -0
  294. package/dist/decoders/audio/constants.d.ts.map +1 -0
  295. package/dist/decoders/audio/constants.js +6 -0
  296. package/dist/decoders/audio/constants.js.map +1 -0
  297. package/dist/decoders/audio/types.d.ts +21 -0
  298. package/dist/decoders/audio/types.d.ts.map +1 -0
  299. package/dist/decoders/audio/types.js +5 -0
  300. package/dist/decoders/audio/types.js.map +1 -0
  301. package/dist/decoders/image/orientation.d.ts +16 -0
  302. package/dist/decoders/image/orientation.d.ts.map +1 -0
  303. package/dist/decoders/image/orientation.js +170 -0
  304. package/dist/decoders/image/orientation.js.map +1 -0
  305. package/dist/decoders/image/stream.d.ts +12 -0
  306. package/dist/decoders/image/stream.d.ts.map +1 -0
  307. package/dist/decoders/image/stream.js +41 -0
  308. package/dist/decoders/image/stream.js.map +1 -0
  309. package/dist/decoders/image/tracks.d.ts +76 -0
  310. package/dist/decoders/image/tracks.d.ts.map +1 -0
  311. package/dist/decoders/image/tracks.js +136 -0
  312. package/dist/decoders/image/tracks.js.map +1 -0
  313. package/dist/decoders/image/types.d.ts +36 -0
  314. package/dist/decoders/image/types.d.ts.map +1 -0
  315. package/dist/decoders/image/types.js +5 -0
  316. package/dist/decoders/image/types.js.map +1 -0
  317. package/dist/decoders/video/codec-specific.d.ts +19 -0
  318. package/dist/decoders/video/codec-specific.d.ts.map +1 -0
  319. package/dist/decoders/video/codec-specific.js +62 -0
  320. package/dist/decoders/video/codec-specific.js.map +1 -0
  321. package/dist/decoders/video/config.d.ts +17 -0
  322. package/dist/decoders/video/config.d.ts.map +1 -0
  323. package/dist/decoders/video/config.js +91 -0
  324. package/dist/decoders/video/config.js.map +1 -0
  325. package/dist/decoders/video/constants.d.ts +8 -0
  326. package/dist/decoders/video/constants.d.ts.map +1 -0
  327. package/dist/decoders/video/constants.js +13 -0
  328. package/dist/decoders/video/constants.js.map +1 -0
  329. package/dist/decoders/video/queue.d.ts +9 -0
  330. package/dist/decoders/video/queue.d.ts.map +1 -0
  331. package/dist/decoders/video/queue.js +17 -0
  332. package/dist/decoders/video/queue.js.map +1 -0
  333. package/dist/decoders/video/types.d.ts +41 -0
  334. package/dist/decoders/video/types.d.ts.map +1 -0
  335. package/dist/decoders/video/types.js +5 -0
  336. package/dist/decoders/video/types.js.map +1 -0
  337. package/dist/demos/demo-audio-visualizer.js +74 -48
  338. package/dist/demos/demo-audio-visualizer.js.map +1 -1
  339. package/dist/demos/demo-dvd-logo.js +26 -23
  340. package/dist/demos/demo-dvd-logo.js.map +1 -1
  341. package/dist/demos/demo-flow-field.d.ts +11 -0
  342. package/dist/demos/demo-flow-field.d.ts.map +1 -0
  343. package/dist/demos/demo-flow-field.js +305 -0
  344. package/dist/demos/demo-flow-field.js.map +1 -0
  345. package/dist/demos/demo-four-corners.js +56 -120
  346. package/dist/demos/demo-four-corners.js.map +1 -1
  347. package/dist/demos/demo-image.js +24 -19
  348. package/dist/demos/demo-image.js.map +1 -1
  349. package/dist/demos/demo-matrix-rain.d.ts +11 -0
  350. package/dist/demos/demo-matrix-rain.d.ts.map +1 -0
  351. package/dist/demos/demo-matrix-rain.js +246 -0
  352. package/dist/demos/demo-matrix-rain.js.map +1 -0
  353. package/dist/demos/demo-pipeline.js +56 -51
  354. package/dist/demos/demo-pipeline.js.map +1 -1
  355. package/dist/demos/demo-samples.js +56 -402
  356. package/dist/demos/demo-samples.js.map +1 -1
  357. package/dist/encoders/AudioEncoder.d.ts +4 -28
  358. package/dist/encoders/AudioEncoder.d.ts.map +1 -1
  359. package/dist/encoders/AudioEncoder.js +83 -20
  360. package/dist/encoders/AudioEncoder.js.map +1 -1
  361. package/dist/encoders/VideoEncoder.d.ts +25 -46
  362. package/dist/encoders/VideoEncoder.d.ts.map +1 -1
  363. package/dist/encoders/VideoEncoder.js +180 -88
  364. package/dist/encoders/VideoEncoder.js.map +1 -1
  365. package/dist/encoders/audio/config.d.ts +30 -0
  366. package/dist/encoders/audio/config.d.ts.map +1 -0
  367. package/dist/encoders/audio/config.js +169 -0
  368. package/dist/encoders/audio/config.js.map +1 -0
  369. package/dist/encoders/audio/constants.d.ts +8 -0
  370. package/dist/encoders/audio/constants.d.ts.map +1 -0
  371. package/dist/encoders/audio/constants.js +8 -0
  372. package/dist/encoders/audio/constants.js.map +1 -0
  373. package/dist/encoders/audio/types.d.ts +70 -0
  374. package/dist/encoders/audio/types.d.ts.map +1 -0
  375. package/dist/encoders/audio/types.js +5 -0
  376. package/dist/encoders/audio/types.js.map +1 -0
  377. package/dist/encoders/video/config.d.ts +25 -0
  378. package/dist/encoders/video/config.d.ts.map +1 -0
  379. package/dist/encoders/video/config.js +132 -0
  380. package/dist/encoders/video/config.js.map +1 -0
  381. package/dist/encoders/video/constants.d.ts +8 -0
  382. package/dist/encoders/video/constants.d.ts.map +1 -0
  383. package/dist/encoders/video/constants.js +8 -0
  384. package/dist/encoders/video/constants.js.map +1 -0
  385. package/dist/encoders/video/queue.d.ts +9 -0
  386. package/dist/encoders/video/queue.d.ts.map +1 -0
  387. package/dist/encoders/video/queue.js +17 -0
  388. package/dist/encoders/video/queue.js.map +1 -0
  389. package/dist/encoders/video/types.d.ts +104 -0
  390. package/dist/encoders/video/types.d.ts.map +1 -0
  391. package/dist/encoders/video/types.js +5 -0
  392. package/dist/encoders/video/types.js.map +1 -0
  393. package/dist/formats/color-space/convert.d.ts +27 -0
  394. package/dist/formats/color-space/convert.d.ts.map +1 -0
  395. package/dist/formats/color-space/convert.js +91 -0
  396. package/dist/formats/color-space/convert.js.map +1 -0
  397. package/dist/formats/color-space/extract.d.ts +32 -0
  398. package/dist/formats/color-space/extract.d.ts.map +1 -0
  399. package/dist/formats/color-space/extract.js +116 -0
  400. package/dist/formats/color-space/extract.js.map +1 -0
  401. package/dist/formats/color-space/index.d.ts +10 -0
  402. package/dist/formats/color-space/index.d.ts.map +1 -0
  403. package/dist/formats/color-space/index.js +14 -0
  404. package/dist/formats/color-space/index.js.map +1 -0
  405. package/dist/formats/color-space/maps.d.ts +70 -0
  406. package/dist/formats/color-space/maps.d.ts.map +1 -0
  407. package/dist/formats/color-space/maps.js +70 -0
  408. package/dist/formats/color-space/maps.js.map +1 -0
  409. package/dist/formats/color-space/types.d.ts +68 -0
  410. package/dist/formats/color-space/types.d.ts.map +1 -0
  411. package/dist/formats/color-space/types.js +49 -0
  412. package/dist/formats/color-space/types.js.map +1 -0
  413. package/dist/formats/color-space.d.ts +4 -124
  414. package/dist/formats/color-space.d.ts.map +1 -1
  415. package/dist/formats/color-space.js +5 -108
  416. package/dist/formats/color-space.js.map +1 -1
  417. package/dist/formats/conversions/frame-converter.d.ts +8 -3
  418. package/dist/formats/conversions/frame-converter.d.ts.map +1 -1
  419. package/dist/formats/conversions/frame-converter.js +16 -12
  420. package/dist/formats/conversions/frame-converter.js.map +1 -1
  421. package/dist/formats/pixel-format/helpers.d.ts +49 -0
  422. package/dist/formats/pixel-format/helpers.d.ts.map +1 -0
  423. package/dist/formats/pixel-format/helpers.js +117 -0
  424. package/dist/formats/pixel-format/helpers.js.map +1 -0
  425. package/dist/formats/pixel-format/index.d.ts +9 -0
  426. package/dist/formats/pixel-format/index.d.ts.map +1 -0
  427. package/dist/formats/pixel-format/index.js +10 -0
  428. package/dist/formats/pixel-format/index.js.map +1 -0
  429. package/dist/formats/pixel-format/sizes.d.ts +17 -0
  430. package/dist/formats/pixel-format/sizes.d.ts.map +1 -0
  431. package/dist/formats/pixel-format/sizes.js +159 -0
  432. package/dist/formats/pixel-format/sizes.js.map +1 -0
  433. package/dist/formats/pixel-format/types.d.ts +13 -0
  434. package/dist/formats/pixel-format/types.d.ts.map +1 -0
  435. package/dist/formats/pixel-format/types.js +5 -0
  436. package/dist/formats/pixel-format/types.js.map +1 -0
  437. package/dist/formats/pixel-formats.d.ts +4 -53
  438. package/dist/formats/pixel-formats.d.ts.map +1 -1
  439. package/dist/formats/pixel-formats.js +5 -179
  440. package/dist/formats/pixel-formats.js.map +1 -1
  441. package/dist/hardware/decoder-args.d.ts.map +1 -1
  442. package/dist/hardware/decoder-args.js +35 -14
  443. package/dist/hardware/decoder-args.js.map +1 -1
  444. package/dist/hardware/detection.d.ts.map +1 -1
  445. package/dist/hardware/detection.js +39 -0
  446. package/dist/hardware/detection.js.map +1 -1
  447. package/dist/hardware/encoder-args.d.ts.map +1 -1
  448. package/dist/hardware/encoder-args.js +43 -5
  449. package/dist/hardware/encoder-args.js.map +1 -1
  450. package/dist/hardware/types.d.ts.map +1 -1
  451. package/dist/hardware/types.js +36 -28
  452. package/dist/hardware/types.js.map +1 -1
  453. package/dist/node-av/NodeAvVideoEncoder.d.ts +5 -0
  454. package/dist/node-av/NodeAvVideoEncoder.d.ts.map +1 -1
  455. package/dist/node-av/NodeAvVideoEncoder.js +76 -23
  456. package/dist/node-av/NodeAvVideoEncoder.js.map +1 -1
  457. package/dist/transfer/detach.d.ts +42 -0
  458. package/dist/transfer/detach.d.ts.map +1 -0
  459. package/dist/transfer/detach.js +93 -0
  460. package/dist/transfer/detach.js.map +1 -0
  461. package/dist/transfer/index.d.ts +9 -0
  462. package/dist/transfer/index.d.ts.map +1 -0
  463. package/dist/transfer/index.js +11 -0
  464. package/dist/transfer/index.js.map +1 -0
  465. package/dist/transfer/validate.d.ts +45 -0
  466. package/dist/transfer/validate.d.ts.map +1 -0
  467. package/dist/transfer/validate.js +98 -0
  468. package/dist/transfer/validate.js.map +1 -0
  469. package/dist/types/video.d.ts +16 -0
  470. package/dist/types/video.d.ts.map +1 -1
  471. package/dist/utils/avc.d.ts +2 -0
  472. package/dist/utils/avc.d.ts.map +1 -1
  473. package/dist/utils/avc.js +36 -8
  474. package/dist/utils/avc.js.map +1 -1
  475. package/dist/utils/codec-validation.d.ts +3 -28
  476. package/dist/utils/codec-validation.d.ts.map +1 -1
  477. package/dist/utils/codec-validation.js +4 -238
  478. package/dist/utils/codec-validation.js.map +1 -1
  479. package/dist/utils/hevc.d.ts +2 -0
  480. package/dist/utils/hevc.d.ts.map +1 -1
  481. package/dist/utils/hevc.js +42 -8
  482. package/dist/utils/hevc.js.map +1 -1
  483. package/docs/api.md +24 -4
  484. package/docs/architecture-refactor-plan.md +149 -0
  485. package/docs/architecture.md +258 -0
  486. package/docs/configuration.md +10 -7
  487. package/package.json +6 -4
  488. package/dist/config/ffmpeg-quality.d.ts +0 -14
  489. package/dist/config/ffmpeg-quality.d.ts.map +0 -1
  490. package/dist/config/ffmpeg-quality.js +0 -41
  491. package/dist/config/ffmpeg-quality.js.map +0 -1
  492. package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts +0 -72
  493. package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts.map +0 -1
  494. package/dist/polyfills/CanvasRenderingContext2DPolyfill.js +0 -293
  495. package/dist/polyfills/CanvasRenderingContext2DPolyfill.js.map +0 -1
  496. package/dist/polyfills/ImageDataPolyfill.d.ts +0 -12
  497. package/dist/polyfills/ImageDataPolyfill.d.ts.map +0 -1
  498. package/dist/polyfills/ImageDataPolyfill.js +0 -22
  499. package/dist/polyfills/ImageDataPolyfill.js.map +0 -1
  500. package/dist/polyfills/OffscreenCanvasPolyfill.d.ts +0 -16
  501. package/dist/polyfills/OffscreenCanvasPolyfill.d.ts.map +0 -1
  502. package/dist/polyfills/OffscreenCanvasPolyfill.js +0 -46
  503. package/dist/polyfills/OffscreenCanvasPolyfill.js.map +0 -1
  504. package/dist/polyfills/VideoFramePolyfill.d.ts +0 -44
  505. package/dist/polyfills/VideoFramePolyfill.d.ts.map +0 -1
  506. package/dist/polyfills/VideoFramePolyfill.js +0 -98
  507. package/dist/polyfills/VideoFramePolyfill.js.map +0 -1
@@ -3,9 +3,14 @@
3
3
  * https://developer.mozilla.org/en-US/docs/Web/API/VideoFrame
4
4
  */
5
5
  import { DOMException, DOMRectReadOnly, isNativeFrame } from '../types/index.js';
6
- import { toUint8Array } from '../utils/buffer.js';
6
+ import { toUint8Array, copyToUint8Array } from '../utils/buffer.js';
7
7
  import { getFrameAllocationSize, getPlaneCount, getPlaneInfo, isRgbFormat, VideoColorSpace, } from '../formats/index.js';
8
8
  import { convertFrameFormat, getPlaneOffset, } from '../formats/conversions/frame-converter.js';
9
+ // Import from video-frame submodule
10
+ import { VALID_PIXEL_FORMATS, validateFinitePositive, validateDuration, validateRotation, validateSubsamplingAlignment, validateVisibleRect, } from './video-frame/validation.js';
11
+ import { detachArrayBuffers, validateTransferList, } from './video-frame/transfer.js';
12
+ import { composeOrientations, computeDefaultDisplayDimensions } from './video-frame/orientation.js';
13
+ import { getPlaneLayoutForSize } from './video-frame/layout.js';
9
14
  // Import type guards from utils
10
15
  import { isImageDataLike, isCanvasLike, isVideoFrameLike, isCanvasImageSource, extractCanvasPixels, } from '../utils/type-guards.js';
11
16
  export class VideoFrame {
@@ -23,6 +28,9 @@ export class VideoFrame {
23
28
  _duration;
24
29
  _timestamp;
25
30
  _colorSpace;
31
+ _inputLayout = null; // Layout from init, if provided
32
+ _rotation = 0;
33
+ _flip = false;
26
34
  get format() { return this._closed ? null : this._format; }
27
35
  get codedWidth() { return this._closed ? 0 : this._codedWidth; }
28
36
  get codedHeight() { return this._closed ? 0 : this._codedHeight; }
@@ -30,10 +38,14 @@ export class VideoFrame {
30
38
  get visibleRect() { return this._closed ? null : this._visibleRect; }
31
39
  get displayWidth() { return this._closed ? 0 : this._displayWidth; }
32
40
  get displayHeight() { return this._closed ? 0 : this._displayHeight; }
33
- // timestamp and duration are preserved after close per WebCodecs spec
41
+ // timestamp, duration, colorSpace, rotation, flip are preserved after close per WebCodecs spec
34
42
  get duration() { return this._duration; }
35
43
  get timestamp() { return this._timestamp; }
36
- get colorSpace() { return this._closed ? null : this._colorSpace; }
44
+ get colorSpace() { return this._colorSpace; }
45
+ /** Frame rotation in degrees (0, 90, 180, 270) - preserved after close */
46
+ get rotation() { return this._rotation; }
47
+ /** Whether frame is flipped horizontally - preserved after close */
48
+ get flip() { return this._flip; }
37
49
  constructor(dataOrImage, init) {
38
50
  // Special case: constructing from another VideoFrame without init
39
51
  if (isVideoFrameLike(dataOrImage)) {
@@ -80,9 +92,40 @@ export class VideoFrame {
80
92
  else {
81
93
  this._visibleRect = new DOMRectReadOnly(0, 0, sourceFrame.codedWidth, sourceFrame.codedHeight);
82
94
  }
83
- this._displayWidth = frameInit.displayWidth ?? sourceFrame.displayWidth;
84
- this._displayHeight = frameInit.displayHeight ?? sourceFrame.displayHeight;
85
95
  this._colorSpace = new VideoColorSpace(this._getDefaultColorSpace(this._format, frameInit.colorSpace));
96
+ // Compose orientations: source orientation + init orientation
97
+ // Get source orientation from getter (if it's our VideoFrame) or metadata
98
+ let srcRotation = 0;
99
+ let srcFlip = false;
100
+ if (typeof sourceFrame.rotation === 'number') {
101
+ srcRotation = sourceFrame.rotation;
102
+ }
103
+ else if (sourceFrame.metadata) {
104
+ const sourceMetadata = sourceFrame.metadata();
105
+ srcRotation = sourceMetadata?.rotation ?? 0;
106
+ srcFlip = sourceMetadata?.flip ?? false;
107
+ }
108
+ if (typeof sourceFrame.flip === 'boolean') {
109
+ srcFlip = sourceFrame.flip;
110
+ }
111
+ const initRotation = frameInit.rotation ?? 0;
112
+ const initFlip = frameInit.flip ?? false;
113
+ // Compose the orientations per WebCodecs spec
114
+ const composed = composeOrientations(srcRotation, srcFlip, initRotation, initFlip);
115
+ this._rotation = composed.rotation;
116
+ this._flip = composed.flip;
117
+ // Display dimensions: use explicit values if provided, otherwise compute from source
118
+ // accounting for the composed orientation's effect on dimensions
119
+ if (frameInit.displayWidth !== undefined && frameInit.displayHeight !== undefined) {
120
+ this._displayWidth = frameInit.displayWidth;
121
+ this._displayHeight = frameInit.displayHeight;
122
+ }
123
+ else {
124
+ // Compute default display dimensions based on composed orientation
125
+ const defaultDisplay = computeDefaultDisplayDimensions(this._visibleRect.width, this._visibleRect.height, this._rotation);
126
+ this._displayWidth = frameInit.displayWidth ?? defaultDisplay.displayWidth;
127
+ this._displayHeight = frameInit.displayHeight ?? defaultDisplay.displayHeight;
128
+ }
86
129
  return;
87
130
  }
88
131
  // Validate init is provided for non-VideoFrame sources
@@ -95,15 +138,36 @@ export class VideoFrame {
95
138
  if (!bufferInit.format) {
96
139
  throw new TypeError('format is required');
97
140
  }
98
- if (typeof bufferInit.codedWidth !== 'number' || bufferInit.codedWidth <= 0) {
99
- throw new TypeError('codedWidth must be a positive number');
141
+ // Validate pixel format is known
142
+ if (!VALID_PIXEL_FORMATS.has(bufferInit.format)) {
143
+ throw new TypeError(`Unknown pixel format: ${bufferInit.format}`);
144
+ }
145
+ if (typeof bufferInit.codedWidth !== 'number') {
146
+ throw new TypeError('codedWidth is required');
100
147
  }
101
- if (typeof bufferInit.codedHeight !== 'number' || bufferInit.codedHeight <= 0) {
102
- throw new TypeError('codedHeight must be a positive number');
148
+ validateFinitePositive(bufferInit.codedWidth, 'codedWidth');
149
+ if (typeof bufferInit.codedHeight !== 'number') {
150
+ throw new TypeError('codedHeight is required');
103
151
  }
104
- if (typeof bufferInit.timestamp !== 'number') {
105
- throw new TypeError('timestamp is required');
152
+ validateFinitePositive(bufferInit.codedHeight, 'codedHeight');
153
+ if (typeof bufferInit.timestamp !== 'number' || !Number.isFinite(bufferInit.timestamp)) {
154
+ throw new TypeError('timestamp must be a finite number');
106
155
  }
156
+ // Validate subsampling alignment
157
+ validateSubsamplingAlignment(bufferInit.format, bufferInit.codedWidth, bufferInit.codedHeight);
158
+ // Validate visibleRect bounds
159
+ validateVisibleRect(bufferInit.visibleRect, bufferInit.codedWidth, bufferInit.codedHeight);
160
+ // Validate displayWidth/displayHeight if provided
161
+ if (bufferInit.displayWidth !== undefined) {
162
+ validateFinitePositive(bufferInit.displayWidth, 'displayWidth');
163
+ }
164
+ if (bufferInit.displayHeight !== undefined) {
165
+ validateFinitePositive(bufferInit.displayHeight, 'displayHeight');
166
+ }
167
+ // Validate duration if provided
168
+ validateDuration(bufferInit.duration);
169
+ // Validate rotation if provided
170
+ validateRotation(bufferInit.rotation);
107
171
  this._nativeFrame = dataOrImage;
108
172
  this._nativeCleanup = init._nativeCleanup ?? null;
109
173
  this._data = new Uint8Array(0);
@@ -119,8 +183,13 @@ export class VideoFrame {
119
183
  else {
120
184
  this._visibleRect = new DOMRectReadOnly(0, 0, bufferInit.codedWidth, bufferInit.codedHeight);
121
185
  }
122
- this._displayWidth = bufferInit.displayWidth ?? this._visibleRect.width;
123
- this._displayHeight = bufferInit.displayHeight ?? this._visibleRect.height;
186
+ // Set rotation/flip first as they affect default display dimensions
187
+ this._rotation = bufferInit.rotation ?? 0;
188
+ this._flip = bufferInit.flip ?? false;
189
+ // Compute default display dimensions (swapped for 90/270 rotation)
190
+ const defaultDisplay = computeDefaultDisplayDimensions(this._visibleRect.width, this._visibleRect.height, this._rotation);
191
+ this._displayWidth = bufferInit.displayWidth ?? defaultDisplay.displayWidth;
192
+ this._displayHeight = bufferInit.displayHeight ?? defaultDisplay.displayHeight;
124
193
  this._colorSpace = new VideoColorSpace(this._getDefaultColorSpace(bufferInit.format, bufferInit.colorSpace));
125
194
  }
126
195
  else if (dataOrImage instanceof ArrayBuffer || ArrayBuffer.isView(dataOrImage)) {
@@ -130,15 +199,38 @@ export class VideoFrame {
130
199
  if (!bufferInit.format) {
131
200
  throw new TypeError('format is required');
132
201
  }
133
- if (typeof bufferInit.codedWidth !== 'number' || bufferInit.codedWidth <= 0) {
134
- throw new TypeError('codedWidth must be a positive number');
135
- }
136
- if (typeof bufferInit.codedHeight !== 'number' || bufferInit.codedHeight <= 0) {
137
- throw new TypeError('codedHeight must be a positive number');
138
- }
139
- if (typeof bufferInit.timestamp !== 'number') {
140
- throw new TypeError('timestamp is required');
141
- }
202
+ // Validate pixel format is known
203
+ if (!VALID_PIXEL_FORMATS.has(bufferInit.format)) {
204
+ throw new TypeError(`Unknown pixel format: ${bufferInit.format}`);
205
+ }
206
+ if (typeof bufferInit.codedWidth !== 'number') {
207
+ throw new TypeError('codedWidth is required');
208
+ }
209
+ validateFinitePositive(bufferInit.codedWidth, 'codedWidth');
210
+ if (typeof bufferInit.codedHeight !== 'number') {
211
+ throw new TypeError('codedHeight is required');
212
+ }
213
+ validateFinitePositive(bufferInit.codedHeight, 'codedHeight');
214
+ if (typeof bufferInit.timestamp !== 'number' || !Number.isFinite(bufferInit.timestamp)) {
215
+ throw new TypeError('timestamp must be a finite number');
216
+ }
217
+ // Validate subsampling alignment
218
+ validateSubsamplingAlignment(bufferInit.format, bufferInit.codedWidth, bufferInit.codedHeight);
219
+ // Validate visibleRect bounds
220
+ validateVisibleRect(bufferInit.visibleRect, bufferInit.codedWidth, bufferInit.codedHeight);
221
+ // Validate displayWidth/displayHeight if provided
222
+ if (bufferInit.displayWidth !== undefined) {
223
+ validateFinitePositive(bufferInit.displayWidth, 'displayWidth');
224
+ }
225
+ if (bufferInit.displayHeight !== undefined) {
226
+ validateFinitePositive(bufferInit.displayHeight, 'displayHeight');
227
+ }
228
+ // Validate duration if provided
229
+ validateDuration(bufferInit.duration);
230
+ // Validate rotation if provided
231
+ validateRotation(bufferInit.rotation);
232
+ // Validate transfer list if provided (check for duplicates and detached buffers)
233
+ validateTransferList(bufferInit.transfer);
142
234
  // Validate buffer size
143
235
  const expectedSize = getFrameAllocationSize(bufferInit.format, bufferInit.codedWidth, bufferInit.codedHeight);
144
236
  const actualSize = data instanceof ArrayBuffer ? data.byteLength : data.byteLength;
@@ -146,7 +238,14 @@ export class VideoFrame {
146
238
  throw new TypeError(`Buffer too small: expected at least ${expectedSize} bytes for ${bufferInit.format} ` +
147
239
  `${bufferInit.codedWidth}x${bufferInit.codedHeight}, got ${actualSize}`);
148
240
  }
149
- this._data = toUint8Array(data);
241
+ // Copy data to internal buffer (must happen before transfer detaches source)
242
+ // Use copyToUint8Array when transfer is specified to ensure we don't hold a view
243
+ // to a buffer that will be detached
244
+ this._data = bufferInit.transfer && bufferInit.transfer.length > 0
245
+ ? copyToUint8Array(data)
246
+ : toUint8Array(data);
247
+ // Detach transferred buffers after data has been copied
248
+ detachArrayBuffers(bufferInit.transfer);
150
249
  this._format = bufferInit.format;
151
250
  this._codedWidth = bufferInit.codedWidth;
152
251
  this._codedHeight = bufferInit.codedHeight;
@@ -159,9 +258,16 @@ export class VideoFrame {
159
258
  else {
160
259
  this._visibleRect = new DOMRectReadOnly(0, 0, bufferInit.codedWidth, bufferInit.codedHeight);
161
260
  }
162
- this._displayWidth = bufferInit.displayWidth ?? this._visibleRect.width;
163
- this._displayHeight = bufferInit.displayHeight ?? this._visibleRect.height;
261
+ // Set rotation/flip first as they affect default display dimensions
262
+ this._rotation = bufferInit.rotation ?? 0;
263
+ this._flip = bufferInit.flip ?? false;
264
+ // Compute default display dimensions (swapped for 90/270 rotation)
265
+ const defaultDisplay = computeDefaultDisplayDimensions(this._visibleRect.width, this._visibleRect.height, this._rotation);
266
+ this._displayWidth = bufferInit.displayWidth ?? defaultDisplay.displayWidth;
267
+ this._displayHeight = bufferInit.displayHeight ?? defaultDisplay.displayHeight;
164
268
  this._colorSpace = new VideoColorSpace(this._getDefaultColorSpace(bufferInit.format, bufferInit.colorSpace));
269
+ // Store input layout if provided (for non-standard memory layouts)
270
+ this._inputLayout = bufferInit.layout ?? null;
165
271
  }
166
272
  else if (isCanvasImageSource(dataOrImage)) {
167
273
  const frameInit = init;
@@ -170,6 +276,23 @@ export class VideoFrame {
170
276
  throw new TypeError('timestamp is required and must be a finite number for CanvasImageSource');
171
277
  }
172
278
  const result = this._extractFromCanvasImageSource(dataOrImage, frameInit);
279
+ // Validate canvas isn't empty
280
+ if (result.width <= 0 || result.height <= 0) {
281
+ throw new DOMException('CanvasImageSource has zero dimensions', 'InvalidStateError');
282
+ }
283
+ // Validate visibleRect bounds
284
+ validateVisibleRect(frameInit.visibleRect, result.width, result.height);
285
+ // Validate displayWidth/displayHeight if provided
286
+ if (frameInit.displayWidth !== undefined) {
287
+ validateFinitePositive(frameInit.displayWidth, 'displayWidth');
288
+ }
289
+ if (frameInit.displayHeight !== undefined) {
290
+ validateFinitePositive(frameInit.displayHeight, 'displayHeight');
291
+ }
292
+ // Validate duration if provided
293
+ validateDuration(frameInit.duration);
294
+ // Validate rotation if provided
295
+ validateRotation(frameInit.rotation);
173
296
  this._data = result.data;
174
297
  this._format = result.format;
175
298
  this._codedWidth = result.width;
@@ -183,8 +306,13 @@ export class VideoFrame {
183
306
  else {
184
307
  this._visibleRect = new DOMRectReadOnly(0, 0, result.width, result.height);
185
308
  }
186
- this._displayWidth = frameInit.displayWidth ?? this._visibleRect.width;
187
- this._displayHeight = frameInit.displayHeight ?? this._visibleRect.height;
309
+ // Set rotation/flip first as they affect default display dimensions
310
+ this._rotation = frameInit.rotation ?? 0;
311
+ this._flip = frameInit.flip ?? false;
312
+ // Compute default display dimensions (swapped for 90/270 rotation)
313
+ const defaultDisplay = computeDefaultDisplayDimensions(this._visibleRect.width, this._visibleRect.height, this._rotation);
314
+ this._displayWidth = frameInit.displayWidth ?? defaultDisplay.displayWidth;
315
+ this._displayHeight = frameInit.displayHeight ?? defaultDisplay.displayHeight;
188
316
  this._colorSpace = new VideoColorSpace(this._getDefaultColorSpace(result.format, frameInit.colorSpace));
189
317
  }
190
318
  else {
@@ -319,6 +447,21 @@ export class VideoFrame {
319
447
  const height = rect?.height ?? this._visibleRect.height;
320
448
  return getFrameAllocationSize(format, width, height);
321
449
  }
450
+ /**
451
+ * Returns metadata associated with this VideoFrame.
452
+ * Per W3C WebCodecs spec: https://w3c.github.io/webcodecs/video_frame_metadata_registry.html
453
+ */
454
+ metadata() {
455
+ this._checkNotClosed();
456
+ const result = {};
457
+ if (this._rotation !== 0) {
458
+ result.rotation = this._rotation;
459
+ }
460
+ if (this._flip) {
461
+ result.flip = this._flip;
462
+ }
463
+ return result;
464
+ }
322
465
  /**
323
466
  * Returns the number of planes for this frame's format
324
467
  */
@@ -334,6 +477,7 @@ export class VideoFrame {
334
477
  const destArray = toUint8Array(destination);
335
478
  const destFormat = options?.format ?? this._format;
336
479
  const rect = options?.rect;
480
+ const layout = options?.layout;
337
481
  const srcX = Math.floor(rect?.x ?? this._visibleRect.x);
338
482
  const srcY = Math.floor(rect?.y ?? this._visibleRect.y);
339
483
  const srcW = Math.floor(rect?.width ?? this._visibleRect.width);
@@ -341,19 +485,83 @@ export class VideoFrame {
341
485
  if (srcX < 0 || srcY < 0 || srcX + srcW > this._codedWidth || srcY + srcH > this._codedHeight) {
342
486
  throw new DOMException('Rect is out of bounds', 'ConstraintError');
343
487
  }
344
- const requiredSize = getFrameAllocationSize(destFormat, srcW, srcH);
345
- if (destArray.byteLength < requiredSize) {
488
+ // Validate layout if provided
489
+ const numPlanes = getPlaneCount(destFormat);
490
+ if (layout) {
491
+ if (layout.length !== numPlanes) {
492
+ throw new TypeError(`layout must have ${numPlanes} entries for format ${destFormat}, got ${layout.length}`);
493
+ }
494
+ // Validate that buffer is large enough for the provided layout
495
+ for (let p = 0; p < numPlanes; p++) {
496
+ const planeInfo = getPlaneInfo(destFormat, srcW, srcH, p);
497
+ const planeEnd = layout[p].offset + (planeInfo.height - 1) * layout[p].stride + planeInfo.width * planeInfo.bytesPerPixel;
498
+ if (planeEnd > destArray.byteLength) {
499
+ throw new TypeError(`destination buffer too small for layout: plane ${p} needs ${planeEnd} bytes`);
500
+ }
501
+ }
502
+ }
503
+ const requiredSize = layout ? 0 : getFrameAllocationSize(destFormat, srcW, srcH);
504
+ if (!layout && destArray.byteLength < requiredSize) {
346
505
  throw new TypeError(`destination buffer is too small (need ${requiredSize}, got ${destArray.byteLength})`);
347
506
  }
348
- if (destFormat === this._format && srcX === 0 && srcY === 0 &&
507
+ // Fast path: no conversion, no clipping, no custom layout
508
+ if (!layout && destFormat === this._format && srcX === 0 && srcY === 0 &&
349
509
  srcW === this._codedWidth && srcH === this._codedHeight) {
350
510
  destArray.set(this._data);
351
- return this._getPlaneLayoutForSize(srcW, srcH, destFormat);
511
+ return getPlaneLayoutForSize(srcW, srcH, destFormat);
512
+ }
513
+ // Get colorSpace for conversion (use options if provided, otherwise use frame's colorSpace)
514
+ // Convert null values to undefined for proper VideoColorSpaceInit compatibility
515
+ const colorSpace = options?.colorSpace ?? {
516
+ primaries: this._colorSpace.primaries,
517
+ transfer: this._colorSpace.transfer,
518
+ matrix: this._colorSpace.matrix,
519
+ fullRange: this._colorSpace.fullRange ?? undefined,
520
+ };
521
+ // Copy with optional layout
522
+ if (layout) {
523
+ this._copyWithLayout(destArray, destFormat, srcX, srcY, srcW, srcH, layout, colorSpace);
524
+ return layout;
352
525
  }
353
- this._copyWithConversion(destArray, destFormat, srcX, srcY, srcW, srcH);
354
- return this._getPlaneLayoutForSize(srcW, srcH, destFormat);
526
+ this._copyWithConversion(destArray, destFormat, srcX, srcY, srcW, srcH, colorSpace);
527
+ return getPlaneLayoutForSize(srcW, srcH, destFormat);
355
528
  }
356
- _copyWithConversion(dest, destFormat, srcX, srcY, srcW, srcH) {
529
+ /**
530
+ * Copy to destination with custom layout (offsets and strides)
531
+ */
532
+ _copyWithLayout(dest, destFormat, srcX, srcY, srcW, srcH, layout, colorSpace) {
533
+ // First, convert to a temporary buffer if format conversion needed
534
+ let srcData;
535
+ if (this._format === destFormat) {
536
+ srcData = this._data;
537
+ }
538
+ else {
539
+ // Convert to temp buffer with packed layout, then copy to dest with custom layout
540
+ const tempSize = getFrameAllocationSize(destFormat, srcW, srcH);
541
+ const tempBuffer = new Uint8Array(tempSize);
542
+ this._copyWithConversion(tempBuffer, destFormat, srcX, srcY, srcW, srcH, colorSpace);
543
+ srcData = tempBuffer;
544
+ // Reset srcX/srcY since tempBuffer already has the clipped region
545
+ srcX = 0;
546
+ srcY = 0;
547
+ }
548
+ const numPlanes = getPlaneCount(destFormat);
549
+ let srcOffset = 0;
550
+ for (let p = 0; p < numPlanes; p++) {
551
+ const planeInfo = getPlaneInfo(destFormat, srcW, srcH, p);
552
+ const destOffset = layout[p].offset;
553
+ const destStride = layout[p].stride;
554
+ const srcStride = planeInfo.width * planeInfo.bytesPerPixel;
555
+ // Copy row by row with custom stride
556
+ for (let row = 0; row < planeInfo.height; row++) {
557
+ const srcRowOffset = srcOffset + row * srcStride;
558
+ const destRowOffset = destOffset + row * destStride;
559
+ dest.set(srcData.subarray(srcRowOffset, srcRowOffset + srcStride), destRowOffset);
560
+ }
561
+ srcOffset += srcStride * planeInfo.height;
562
+ }
563
+ }
564
+ _copyWithConversion(dest, destFormat, srcX, srcY, srcW, srcH, colorSpace) {
357
565
  if (this._format === destFormat) {
358
566
  this._copyDirectWithClipping(dest, srcX, srcY, srcW, srcH);
359
567
  return;
@@ -365,7 +573,7 @@ export class VideoFrame {
365
573
  width: this._codedWidth,
366
574
  height: this._codedHeight,
367
575
  };
368
- convertFrameFormat(src, dest, destFormat, srcX, srcY, srcW, srcH);
576
+ convertFrameFormat(src, dest, destFormat, srcX, srcY, srcW, srcH, colorSpace);
369
577
  }
370
578
  _copyDirectWithClipping(dest, srcX, srcY, srcW, srcH) {
371
579
  const numPlanes = getPlaneCount(this._format);
@@ -390,96 +598,6 @@ export class VideoFrame {
390
598
  }
391
599
  }
392
600
  }
393
- _getPlaneLayoutForSize(width, height, format) {
394
- const chromaW = Math.ceil(width / 2);
395
- const chromaH = Math.ceil(height / 2);
396
- switch (format) {
397
- case 'I420': {
398
- const ySize = width * height;
399
- const uvSize = chromaW * chromaH;
400
- return [
401
- { offset: 0, stride: width },
402
- { offset: ySize, stride: chromaW },
403
- { offset: ySize + uvSize, stride: chromaW },
404
- ];
405
- }
406
- case 'I420A': {
407
- const ySize = width * height;
408
- const uvSize = chromaW * chromaH;
409
- return [
410
- { offset: 0, stride: width },
411
- { offset: ySize, stride: chromaW },
412
- { offset: ySize + uvSize, stride: chromaW },
413
- { offset: ySize + 2 * uvSize, stride: width },
414
- ];
415
- }
416
- case 'I422': {
417
- const ySize = width * height;
418
- const uvSize = chromaW * height;
419
- return [
420
- { offset: 0, stride: width },
421
- { offset: ySize, stride: chromaW },
422
- { offset: ySize + uvSize, stride: chromaW },
423
- ];
424
- }
425
- case 'I444': {
426
- const planeSize = width * height;
427
- return [
428
- { offset: 0, stride: width },
429
- { offset: planeSize, stride: width },
430
- { offset: 2 * planeSize, stride: width },
431
- ];
432
- }
433
- case 'NV12': {
434
- const ySize = width * height;
435
- return [
436
- { offset: 0, stride: width },
437
- { offset: ySize, stride: width },
438
- ];
439
- }
440
- // 10-bit formats: 2 bytes per sample
441
- case 'I420P10': {
442
- const ySize = width * height * 2;
443
- const uvSize = chromaW * chromaH * 2;
444
- return [
445
- { offset: 0, stride: width * 2 },
446
- { offset: ySize, stride: chromaW * 2 },
447
- { offset: ySize + uvSize, stride: chromaW * 2 },
448
- ];
449
- }
450
- case 'I422P10': {
451
- const ySize = width * height * 2;
452
- const uvSize = chromaW * height * 2;
453
- return [
454
- { offset: 0, stride: width * 2 },
455
- { offset: ySize, stride: chromaW * 2 },
456
- { offset: ySize + uvSize, stride: chromaW * 2 },
457
- ];
458
- }
459
- case 'I444P10': {
460
- const planeSize = width * height * 2;
461
- return [
462
- { offset: 0, stride: width * 2 },
463
- { offset: planeSize, stride: width * 2 },
464
- { offset: 2 * planeSize, stride: width * 2 },
465
- ];
466
- }
467
- case 'P010': {
468
- const ySize = width * height * 2;
469
- return [
470
- { offset: 0, stride: width * 2 },
471
- { offset: ySize, stride: width * 2 },
472
- ];
473
- }
474
- case 'RGBA':
475
- case 'RGBX':
476
- case 'BGRA':
477
- case 'BGRX':
478
- return [{ offset: 0, stride: width * 4 }];
479
- default:
480
- return [{ offset: 0, stride: width * 4 }];
481
- }
482
- }
483
601
  /**
484
602
  * Creates a copy of this VideoFrame
485
603
  */
@@ -505,6 +623,8 @@ export class VideoFrame {
505
623
  displayHeight: this._displayHeight,
506
624
  visibleRect: this._visibleRect.toJSON(),
507
625
  colorSpace,
626
+ rotation: this._rotation,
627
+ flip: this._flip,
508
628
  });
509
629
  }
510
630
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"VideoFrame.js","sourceRoot":"","sources":["../../src/core/VideoFrame.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VideoFrame.js","sourceRoot":"","sources":["../../src/core/VideoFrame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * VideoFrame plane layout utilities
3
+ */
4
+ import type { PlaneLayout } from '../../types/index.js';
5
+ import type { VideoPixelFormat } from '../../types/video.js';
6
+ /**
7
+ * Get plane layout for a given frame size and format
8
+ */
9
+ export declare function getPlaneLayoutForSize(width: number, height: number, format: VideoPixelFormat): PlaneLayout[];
10
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/core/video-frame/layout.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,GACvB,WAAW,EAAE,CA0Ff"}