node-av-light 0.0.0-stage → 7.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/LICENSE.md +22 -0
  2. package/README.md +710 -2
  3. package/dist/api/audio-frame-buffer.d.ts +636 -0
  4. package/dist/api/audio-frame-buffer.js +1027 -0
  5. package/dist/api/audio-frame-buffer.js.map +1 -0
  6. package/dist/api/bitstream-filter.d.ts +938 -0
  7. package/dist/api/bitstream-filter.js +1427 -0
  8. package/dist/api/bitstream-filter.js.map +1 -0
  9. package/dist/api/constants.d.ts +44 -0
  10. package/dist/api/constants.js +45 -0
  11. package/dist/api/constants.js.map +1 -0
  12. package/dist/api/data/test_av1.ivf +0 -0
  13. package/dist/api/data/test_h264.h264 +0 -0
  14. package/dist/api/data/test_hevc.h265 +0 -0
  15. package/dist/api/data/test_mjpeg.mjpeg +0 -0
  16. package/dist/api/data/test_vp8.ivf +0 -0
  17. package/dist/api/data/test_vp9.ivf +0 -0
  18. package/dist/api/decoder.d.ts +1413 -0
  19. package/dist/api/decoder.js +2367 -0
  20. package/dist/api/decoder.js.map +1 -0
  21. package/dist/api/demuxer.d.ts +1295 -0
  22. package/dist/api/demuxer.js +2344 -0
  23. package/dist/api/demuxer.js.map +1 -0
  24. package/dist/api/device.d.ts +589 -0
  25. package/dist/api/device.js +964 -0
  26. package/dist/api/device.js.map +1 -0
  27. package/dist/api/encoder-pool.d.ts +262 -0
  28. package/dist/api/encoder-pool.js +397 -0
  29. package/dist/api/encoder-pool.js.map +1 -0
  30. package/dist/api/encoder.d.ts +1509 -0
  31. package/dist/api/encoder.js +2619 -0
  32. package/dist/api/encoder.js.map +1 -0
  33. package/dist/api/filter-complex.d.ts +828 -0
  34. package/dist/api/filter-complex.js +1661 -0
  35. package/dist/api/filter-complex.js.map +1 -0
  36. package/dist/api/filter-presets.d.ts +800 -0
  37. package/dist/api/filter-presets.js +1554 -0
  38. package/dist/api/filter-presets.js.map +1 -0
  39. package/dist/api/filter.d.ts +1339 -0
  40. package/dist/api/filter.js +2075 -0
  41. package/dist/api/filter.js.map +1 -0
  42. package/dist/api/fmp4-stream.d.ts +797 -0
  43. package/dist/api/fmp4-stream.js +1428 -0
  44. package/dist/api/fmp4-stream.js.map +1 -0
  45. package/dist/api/hardware.d.ts +677 -0
  46. package/dist/api/hardware.js +1300 -0
  47. package/dist/api/hardware.js.map +1 -0
  48. package/dist/api/index.d.ts +21 -0
  49. package/dist/api/index.js +38 -0
  50. package/dist/api/index.js.map +1 -0
  51. package/dist/api/io-stream.d.ts +308 -0
  52. package/dist/api/io-stream.js +358 -0
  53. package/dist/api/io-stream.js.map +1 -0
  54. package/dist/api/muxer.d.ts +1311 -0
  55. package/dist/api/muxer.js +2672 -0
  56. package/dist/api/muxer.js.map +1 -0
  57. package/dist/api/pipeline.d.ts +801 -0
  58. package/dist/api/pipeline.js +1344 -0
  59. package/dist/api/pipeline.js.map +1 -0
  60. package/dist/api/probe.d.ts +128 -0
  61. package/dist/api/probe.js +227 -0
  62. package/dist/api/probe.js.map +1 -0
  63. package/dist/api/rtp-stream.d.ts +497 -0
  64. package/dist/api/rtp-stream.js +1131 -0
  65. package/dist/api/rtp-stream.js.map +1 -0
  66. package/dist/api/scaler.d.ts +561 -0
  67. package/dist/api/scaler.js +918 -0
  68. package/dist/api/scaler.js.map +1 -0
  69. package/dist/api/types.d.ts +17 -0
  70. package/dist/api/types.js +2 -0
  71. package/dist/api/types.js.map +1 -0
  72. package/dist/api/utilities/async-queue.d.ts +149 -0
  73. package/dist/api/utilities/async-queue.js +254 -0
  74. package/dist/api/utilities/async-queue.js.map +1 -0
  75. package/dist/api/utilities/audio-sample.d.ts +117 -0
  76. package/dist/api/utilities/audio-sample.js +112 -0
  77. package/dist/api/utilities/audio-sample.js.map +1 -0
  78. package/dist/api/utilities/audio-transcode.d.ts +20 -0
  79. package/dist/api/utilities/audio-transcode.js +27 -0
  80. package/dist/api/utilities/audio-transcode.js.map +1 -0
  81. package/dist/api/utilities/channel-layout.d.ts +76 -0
  82. package/dist/api/utilities/channel-layout.js +80 -0
  83. package/dist/api/utilities/channel-layout.js.map +1 -0
  84. package/dist/api/utilities/codec-format.d.ts +87 -0
  85. package/dist/api/utilities/codec-format.js +117 -0
  86. package/dist/api/utilities/codec-format.js.map +1 -0
  87. package/dist/api/utilities/context-options.d.ts +25 -0
  88. package/dist/api/utilities/context-options.js +23 -0
  89. package/dist/api/utilities/context-options.js.map +1 -0
  90. package/dist/api/utilities/electron-shared-texture.d.ts +368 -0
  91. package/dist/api/utilities/electron-shared-texture.js +540 -0
  92. package/dist/api/utilities/electron-shared-texture.js.map +1 -0
  93. package/dist/api/utilities/image.d.ts +207 -0
  94. package/dist/api/utilities/image.js +213 -0
  95. package/dist/api/utilities/image.js.map +1 -0
  96. package/dist/api/utilities/index.d.ts +14 -0
  97. package/dist/api/utilities/index.js +27 -0
  98. package/dist/api/utilities/index.js.map +1 -0
  99. package/dist/api/utilities/live-decoding.d.ts +15 -0
  100. package/dist/api/utilities/live-decoding.js +32 -0
  101. package/dist/api/utilities/live-decoding.js.map +1 -0
  102. package/dist/api/utilities/media-type.d.ts +49 -0
  103. package/dist/api/utilities/media-type.js +53 -0
  104. package/dist/api/utilities/media-type.js.map +1 -0
  105. package/dist/api/utilities/packet-age-watchdog.d.ts +198 -0
  106. package/dist/api/utilities/packet-age-watchdog.js +594 -0
  107. package/dist/api/utilities/packet-age-watchdog.js.map +1 -0
  108. package/dist/api/utilities/pixel-format.d.ts +89 -0
  109. package/dist/api/utilities/pixel-format.js +97 -0
  110. package/dist/api/utilities/pixel-format.js.map +1 -0
  111. package/dist/api/utilities/sample-format.d.ts +129 -0
  112. package/dist/api/utilities/sample-format.js +141 -0
  113. package/dist/api/utilities/sample-format.js.map +1 -0
  114. package/dist/api/utilities/scale-size.d.ts +51 -0
  115. package/dist/api/utilities/scale-size.js +55 -0
  116. package/dist/api/utilities/scale-size.js.map +1 -0
  117. package/dist/api/utilities/scheduler.d.ts +138 -0
  118. package/dist/api/utilities/scheduler.js +98 -0
  119. package/dist/api/utilities/scheduler.js.map +1 -0
  120. package/dist/api/utilities/streaming.d.ts +186 -0
  121. package/dist/api/utilities/streaming.js +309 -0
  122. package/dist/api/utilities/streaming.js.map +1 -0
  123. package/dist/api/utilities/timestamp.d.ts +193 -0
  124. package/dist/api/utilities/timestamp.js +206 -0
  125. package/dist/api/utilities/timestamp.js.map +1 -0
  126. package/dist/api/utilities/video-transcode.d.ts +218 -0
  127. package/dist/api/utilities/video-transcode.js +624 -0
  128. package/dist/api/utilities/video-transcode.js.map +1 -0
  129. package/dist/api/utilities/whisper-model.d.ts +330 -0
  130. package/dist/api/utilities/whisper-model.js +587 -0
  131. package/dist/api/utilities/whisper-model.js.map +1 -0
  132. package/dist/api/utils.d.ts +19 -0
  133. package/dist/api/utils.js +39 -0
  134. package/dist/api/utils.js.map +1 -0
  135. package/dist/api/webrtc-stream.d.ts +294 -0
  136. package/dist/api/webrtc-stream.js +546 -0
  137. package/dist/api/webrtc-stream.js.map +1 -0
  138. package/dist/api/whisper.d.ts +326 -0
  139. package/dist/api/whisper.js +402 -0
  140. package/dist/api/whisper.js.map +1 -0
  141. package/dist/constants/bsf-options.d.ts +364 -0
  142. package/dist/constants/bsf-options.js +7 -0
  143. package/dist/constants/bsf-options.js.map +1 -0
  144. package/dist/constants/channel-layouts.d.ts +53 -0
  145. package/dist/constants/channel-layouts.js +57 -0
  146. package/dist/constants/channel-layouts.js.map +1 -0
  147. package/dist/constants/constants.d.ts +2435 -0
  148. package/dist/constants/constants.js +1989 -0
  149. package/dist/constants/constants.js.map +1 -0
  150. package/dist/constants/decoders.d.ts +651 -0
  151. package/dist/constants/decoders.js +641 -0
  152. package/dist/constants/decoders.js.map +1 -0
  153. package/dist/constants/encoders.d.ts +314 -0
  154. package/dist/constants/encoders.js +309 -0
  155. package/dist/constants/encoders.js.map +1 -0
  156. package/dist/constants/filter-options.d.ts +12099 -0
  157. package/dist/constants/filter-options.js +7 -0
  158. package/dist/constants/filter-options.js.map +1 -0
  159. package/dist/constants/format-options.d.ts +4319 -0
  160. package/dist/constants/format-options.js +7 -0
  161. package/dist/constants/format-options.js.map +1 -0
  162. package/dist/constants/formats.d.ts +18 -0
  163. package/dist/constants/formats.js +7 -0
  164. package/dist/constants/formats.js.map +1 -0
  165. package/dist/constants/hardware.d.ts +26 -0
  166. package/dist/constants/hardware.js +27 -0
  167. package/dist/constants/hardware.js.map +1 -0
  168. package/dist/constants/index.d.ts +10 -0
  169. package/dist/constants/index.js +6 -0
  170. package/dist/constants/index.js.map +1 -0
  171. package/dist/constants/options.d.ts +6217 -0
  172. package/dist/constants/options.js +7 -0
  173. package/dist/constants/options.js.map +1 -0
  174. package/dist/ffmpeg/index.d.ts +101 -0
  175. package/dist/ffmpeg/index.js +161 -0
  176. package/dist/ffmpeg/index.js.map +1 -0
  177. package/dist/ffmpeg/version.d.ts +6 -0
  178. package/dist/ffmpeg/version.js +7 -0
  179. package/dist/ffmpeg/version.js.map +1 -0
  180. package/dist/index.d.ts +4 -0
  181. package/dist/index.js +9 -0
  182. package/dist/index.js.map +1 -0
  183. package/dist/lib/audio-fifo.d.ts +399 -0
  184. package/dist/lib/audio-fifo.js +431 -0
  185. package/dist/lib/audio-fifo.js.map +1 -0
  186. package/dist/lib/binding.d.ts +242 -0
  187. package/dist/lib/binding.js +102 -0
  188. package/dist/lib/binding.js.map +1 -0
  189. package/dist/lib/bitstream-filter-context.d.ts +381 -0
  190. package/dist/lib/bitstream-filter-context.js +443 -0
  191. package/dist/lib/bitstream-filter-context.js.map +1 -0
  192. package/dist/lib/bitstream-filter.d.ts +140 -0
  193. package/dist/lib/bitstream-filter.js +154 -0
  194. package/dist/lib/bitstream-filter.js.map +1 -0
  195. package/dist/lib/codec-context.d.ts +1069 -0
  196. package/dist/lib/codec-context.js +1336 -0
  197. package/dist/lib/codec-context.js.map +1 -0
  198. package/dist/lib/codec-parameters.d.ts +664 -0
  199. package/dist/lib/codec-parameters.js +813 -0
  200. package/dist/lib/codec-parameters.js.map +1 -0
  201. package/dist/lib/codec-parser.d.ts +201 -0
  202. package/dist/lib/codec-parser.js +213 -0
  203. package/dist/lib/codec-parser.js.map +1 -0
  204. package/dist/lib/codec.d.ts +617 -0
  205. package/dist/lib/codec.js +746 -0
  206. package/dist/lib/codec.js.map +1 -0
  207. package/dist/lib/device.d.ts +294 -0
  208. package/dist/lib/device.js +326 -0
  209. package/dist/lib/device.js.map +1 -0
  210. package/dist/lib/dictionary.d.ts +333 -0
  211. package/dist/lib/dictionary.js +372 -0
  212. package/dist/lib/dictionary.js.map +1 -0
  213. package/dist/lib/error.d.ts +311 -0
  214. package/dist/lib/error.js +395 -0
  215. package/dist/lib/error.js.map +1 -0
  216. package/dist/lib/fifo.d.ts +416 -0
  217. package/dist/lib/fifo.js +453 -0
  218. package/dist/lib/fifo.js.map +1 -0
  219. package/dist/lib/filter-context.d.ts +714 -0
  220. package/dist/lib/filter-context.js +783 -0
  221. package/dist/lib/filter-context.js.map +1 -0
  222. package/dist/lib/filter-graph-segment.d.ts +161 -0
  223. package/dist/lib/filter-graph-segment.js +172 -0
  224. package/dist/lib/filter-graph-segment.js.map +1 -0
  225. package/dist/lib/filter-graph.d.ts +641 -0
  226. package/dist/lib/filter-graph.js +704 -0
  227. package/dist/lib/filter-graph.js.map +1 -0
  228. package/dist/lib/filter-inout.d.ts +202 -0
  229. package/dist/lib/filter-inout.js +261 -0
  230. package/dist/lib/filter-inout.js.map +1 -0
  231. package/dist/lib/filter.d.ts +243 -0
  232. package/dist/lib/filter.js +272 -0
  233. package/dist/lib/filter.js.map +1 -0
  234. package/dist/lib/format-context.d.ts +1335 -0
  235. package/dist/lib/format-context.js +1455 -0
  236. package/dist/lib/format-context.js.map +1 -0
  237. package/dist/lib/frame-utils.d.ts +116 -0
  238. package/dist/lib/frame-utils.js +98 -0
  239. package/dist/lib/frame-utils.js.map +1 -0
  240. package/dist/lib/frame.d.ts +1315 -0
  241. package/dist/lib/frame.js +1535 -0
  242. package/dist/lib/frame.js.map +1 -0
  243. package/dist/lib/hardware-device-context.d.ts +362 -0
  244. package/dist/lib/hardware-device-context.js +383 -0
  245. package/dist/lib/hardware-device-context.js.map +1 -0
  246. package/dist/lib/hardware-frames-context.d.ts +418 -0
  247. package/dist/lib/hardware-frames-context.js +471 -0
  248. package/dist/lib/hardware-frames-context.js.map +1 -0
  249. package/dist/lib/index.d.ts +35 -0
  250. package/dist/lib/index.js +60 -0
  251. package/dist/lib/index.js.map +1 -0
  252. package/dist/lib/input-format.d.ts +249 -0
  253. package/dist/lib/input-format.js +306 -0
  254. package/dist/lib/input-format.js.map +1 -0
  255. package/dist/lib/io-context.d.ts +698 -0
  256. package/dist/lib/io-context.js +771 -0
  257. package/dist/lib/io-context.js.map +1 -0
  258. package/dist/lib/log.d.ts +174 -0
  259. package/dist/lib/log.js +184 -0
  260. package/dist/lib/log.js.map +1 -0
  261. package/dist/lib/native-types.d.ts +1024 -0
  262. package/dist/lib/native-types.js +2 -0
  263. package/dist/lib/native-types.js.map +1 -0
  264. package/dist/lib/option.d.ts +953 -0
  265. package/dist/lib/option.js +1607 -0
  266. package/dist/lib/option.js.map +1 -0
  267. package/dist/lib/output-format.d.ts +222 -0
  268. package/dist/lib/output-format.js +259 -0
  269. package/dist/lib/output-format.js.map +1 -0
  270. package/dist/lib/packet.d.ts +521 -0
  271. package/dist/lib/packet.js +613 -0
  272. package/dist/lib/packet.js.map +1 -0
  273. package/dist/lib/rational.d.ts +251 -0
  274. package/dist/lib/rational.js +278 -0
  275. package/dist/lib/rational.js.map +1 -0
  276. package/dist/lib/software-resample-context.d.ts +552 -0
  277. package/dist/lib/software-resample-context.js +592 -0
  278. package/dist/lib/software-resample-context.js.map +1 -0
  279. package/dist/lib/software-scale-context.d.ts +344 -0
  280. package/dist/lib/software-scale-context.js +366 -0
  281. package/dist/lib/software-scale-context.js.map +1 -0
  282. package/dist/lib/stream.d.ts +383 -0
  283. package/dist/lib/stream.js +524 -0
  284. package/dist/lib/stream.js.map +1 -0
  285. package/dist/lib/sync-queue.d.ts +179 -0
  286. package/dist/lib/sync-queue.js +197 -0
  287. package/dist/lib/sync-queue.js.map +1 -0
  288. package/dist/lib/types.d.ts +34 -0
  289. package/dist/lib/types.js +2 -0
  290. package/dist/lib/types.js.map +1 -0
  291. package/dist/lib/utilities.d.ts +1198 -0
  292. package/dist/lib/utilities.js +1302 -0
  293. package/dist/lib/utilities.js.map +1 -0
  294. package/dist/utils/electron.d.ts +49 -0
  295. package/dist/utils/electron.js +63 -0
  296. package/dist/utils/electron.js.map +1 -0
  297. package/dist/utils/index.d.ts +6 -0
  298. package/dist/utils/index.js +7 -0
  299. package/dist/utils/index.js.map +1 -0
  300. package/dist/utils/libc.d.ts +11 -0
  301. package/dist/utils/libc.js +35 -0
  302. package/dist/utils/libc.js.map +1 -0
  303. package/dist/utils/variant.d.ts +26 -0
  304. package/dist/utils/variant.js +31 -0
  305. package/dist/utils/variant.js.map +1 -0
  306. package/dist/webrtc/index.d.ts +4 -0
  307. package/dist/webrtc/index.js +7 -0
  308. package/dist/webrtc/index.js.map +1 -0
  309. package/install/check.js +124 -0
  310. package/install/ffmpeg.js +66 -0
  311. package/package.json +167 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtp-stream.js","sourceRoot":"","sources":["../../src/api/rtp-stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,561 @@
1
+ import { Frame } from '../lib/frame.js';
2
+ import type { SwsFlags } from '../constants/index.js';
3
+ import type { HardwareContext } from './hardware.js';
4
+ /**
5
+ * Output pixel format for scaled images.
6
+ */
7
+ export type ScaledImageFormat = 'rgb' | 'rgba' | 'gray' | 'nv12' | 'yuv420p';
8
+ /**
9
+ * Crop region in source pixel coordinates.
10
+ */
11
+ export interface ScalerCrop {
12
+ x: number;
13
+ y: number;
14
+ width: number;
15
+ height: number;
16
+ }
17
+ /**
18
+ * Target dimensions for scaling.
19
+ */
20
+ export interface ScalerResize {
21
+ width: number;
22
+ height: number;
23
+ }
24
+ /**
25
+ * Options for a single scale/crop/convert operation.
26
+ */
27
+ export interface ScaleOptions {
28
+ /** Optional crop applied before scaling (source pixel coordinates). */
29
+ crop?: ScalerCrop;
30
+ /** Optional target dimensions. Omit to keep the (cropped) source size. */
31
+ resize?: ScalerResize;
32
+ /** Optional output pixel format. Omit to keep the source format. */
33
+ format?: ScaledImageFormat;
34
+ /**
35
+ * Optional buffer to write the result into instead of allocating a new one.
36
+ * It must be a Buffer of at least the result's size and must not overlap the
37
+ * source frame's data; the returned buffer is then a view of its first bytes.
38
+ * Do not read or write it until the call has settled.
39
+ */
40
+ output?: Buffer;
41
+ }
42
+ /**
43
+ * Options for encoding a frame to JPEG.
44
+ */
45
+ export interface JpegOptions {
46
+ /** Optional crop applied before scaling (source pixel coordinates). */
47
+ crop?: ScalerCrop;
48
+ /** Optional target dimensions. Omit to keep the (cropped) source size. */
49
+ resize?: ScalerResize;
50
+ /** JPEG quality from 1 (smallest, lowest quality) to 100 (best). Default 90. */
51
+ quality?: number;
52
+ }
53
+ /**
54
+ * Options for encoding a frame to PNG.
55
+ */
56
+ export interface PngOptions {
57
+ /** Optional crop applied before scaling (source pixel coordinates). */
58
+ crop?: ScalerCrop;
59
+ /** Optional target dimensions. Omit to keep the (cropped) source size. */
60
+ resize?: ScalerResize;
61
+ /** Output color format. Default `'rgb'`. */
62
+ format?: 'rgb' | 'rgba' | 'gray';
63
+ }
64
+ /**
65
+ * Options for creating a {@link Scaler}.
66
+ */
67
+ export interface ScalerOptions {
68
+ /**
69
+ * Hardware context. Required to process hardware frames - crop/scale/convert
70
+ * then run on the GPU and only the small result is downloaded.
71
+ */
72
+ hardware?: HardwareContext | null;
73
+ /** swscale algorithm flags (SWS_*) for the software path. Defaults to `SWS_BILINEAR`. */
74
+ flags?: SwsFlags;
75
+ /**
76
+ * Maximum number of cached hardware filter graphs (one per distinct output
77
+ * configuration). Least-recently-used graphs are evicted beyond this. Default 16.
78
+ */
79
+ maxCacheSize?: number;
80
+ }
81
+ /**
82
+ * High-level image scaler, cropper, and pixel-format converter.
83
+ *
84
+ * Scales, crops, and converts decoded frames to raw pixel buffers or encoded
85
+ * JPEG/PNG images. Built for the detection/thumbnail/snapshot workload: one
86
+ * instance pools its swscale contexts, GPU filter graphs, and encoders, so
87
+ * reusing it for every frame and every crop avoids per-frame allocation.
88
+ * Software frames are scaled with swscale; hardware frames are cropped, scaled,
89
+ * and converted on the GPU with only the small result downloaded.
90
+ *
91
+ * Safe for concurrent use: calls that share a cached graph or pooled encoder are
92
+ * serialized on that resource, while distinct output configurations run fully in
93
+ * parallel, and cache eviction never disposes a resource that is still in flight.
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * import { Scaler } from 'node-av/api';
98
+ *
99
+ * using scaler = new Scaler({ hardware });
100
+ *
101
+ * // Scale + convert to RGB (on the GPU for hardware frames)
102
+ * const rgb = await scaler.toBuffer(frame, { resize: { width: 640, height: 360 }, format: 'rgb' });
103
+ *
104
+ * // Crop a detected region and encode a snapshot
105
+ * const jpeg = await scaler.toJpeg(frame, { crop: { x, y, width: w, height: h }, quality: 85 });
106
+ * ```
107
+ *
108
+ * @see {@link EncoderPool} For pooled image encoders
109
+ * @see {@link FilterAPI} For streaming filtergraphs
110
+ */
111
+ export declare class Scaler implements Disposable {
112
+ private native;
113
+ private syncNative?;
114
+ private nativeLock;
115
+ private hardware?;
116
+ private flags;
117
+ private maxCacheSize;
118
+ private graphs;
119
+ private jpegPool?;
120
+ private pngPool?;
121
+ private disposed;
122
+ /**
123
+ * Create a new scaler.
124
+ *
125
+ * @param options - Scaler options
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * using scaler = new Scaler({ hardware: HardwareContext.auto() });
130
+ * ```
131
+ */
132
+ constructor(options?: ScalerOptions);
133
+ /**
134
+ * Scale, crop, and/or convert a frame and return the raw pixel data.
135
+ *
136
+ * The returned buffer is tightly packed (no row padding). For planar formats
137
+ * (`nv12`, `yuv420p`) planes are concatenated.
138
+ *
139
+ * @param frame - Source frame (software or hardware; hardware frames are processed on the GPU and downloaded)
140
+ *
141
+ * @param options - Crop, resize, format, and output buffer options
142
+ *
143
+ * @returns Tightly packed pixel data (a view of `options.output` when given)
144
+ *
145
+ * @throws {FFmpegError} If scaling fails
146
+ *
147
+ * @throws {TypeError} If `options.output` is not a Buffer or is smaller than the result
148
+ *
149
+ * @example
150
+ * ```typescript
151
+ * const gray = await scaler.toBuffer(frame, { resize: { width: 320, height: 180 }, format: 'gray' });
152
+ *
153
+ * // Reuse one buffer across frames
154
+ * const reused = Buffer.allocUnsafe(320 * 180);
155
+ * await scaler.toBuffer(frame, { resize: { width: 320, height: 180 }, format: 'gray', output: reused });
156
+ * ```
157
+ *
158
+ * @see {@link toBufferSync} For synchronous version
159
+ */
160
+ toBuffer(frame: Frame, options?: ScaleOptions): Promise<Buffer>;
161
+ /**
162
+ * Scale, crop, and/or convert a frame and return the raw pixel data.
163
+ * Synchronous version of toBuffer.
164
+ *
165
+ * @param frame - Source frame (software or hardware; hardware frames are processed on the GPU and downloaded)
166
+ *
167
+ * @param options - Crop, resize, format, and output buffer options
168
+ *
169
+ * @returns Tightly packed pixel data (a view of `options.output` when given)
170
+ *
171
+ * @throws {FFmpegError} If scaling fails
172
+ *
173
+ * @throws {TypeError} If `options.output` is not a Buffer or is smaller than the result
174
+ *
175
+ * @example
176
+ * ```typescript
177
+ * const gray = scaler.toBufferSync(frame, { resize: { width: 320, height: 180 }, format: 'gray' });
178
+ * ```
179
+ *
180
+ * @see {@link toBuffer} For async version
181
+ */
182
+ toBufferSync(frame: Frame, options?: ScaleOptions): Buffer;
183
+ /**
184
+ * Scale/crop a frame and encode it to a JPEG image.
185
+ *
186
+ * The encoder is pooled per output size and reused across calls - no encoder is
187
+ * rebuilt per snapshot. Hardware frames are scaled on the GPU and downloaded;
188
+ * software frames are scaled with swscale.
189
+ *
190
+ * @param frame - Source frame (software or hardware)
191
+ *
192
+ * @param options - Crop, resize, and quality options
193
+ *
194
+ * @returns Encoded JPEG bytes
195
+ *
196
+ * @throws {FFmpegError} If scaling or encoding fails
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * const jpeg = await scaler.toJpeg(frame, { resize: { width: 1280, height: 720 }, quality: 85 });
201
+ * await writeFile('snapshot.jpg', jpeg);
202
+ * ```
203
+ *
204
+ * @see {@link toJpegSync} For synchronous version
205
+ */
206
+ toJpeg(frame: Frame, options?: JpegOptions): Promise<Buffer>;
207
+ /**
208
+ * Scale/crop a frame and encode it to a JPEG image.
209
+ * Synchronous version of toJpeg.
210
+ *
211
+ * @param frame - Source frame (software or hardware)
212
+ *
213
+ * @param options - Crop, resize, and quality options
214
+ *
215
+ * @returns Encoded JPEG bytes
216
+ *
217
+ * @throws {FFmpegError} If scaling or encoding fails
218
+ *
219
+ * @example
220
+ * ```typescript
221
+ * const jpeg = scaler.toJpegSync(frame, { resize: { width: 1280, height: 720 }, quality: 85 });
222
+ * ```
223
+ *
224
+ * @see {@link toJpeg} For async version
225
+ */
226
+ toJpegSync(frame: Frame, options?: JpegOptions): Buffer;
227
+ /**
228
+ * Scale/crop a frame and encode it to a PNG image.
229
+ *
230
+ * The encoder is pooled per output size/format and reused across calls. Hardware
231
+ * frames are scaled on the GPU and downloaded; software frames use swscale.
232
+ *
233
+ * @param frame - Source frame (software or hardware)
234
+ *
235
+ * @param options - Crop, resize, and color-format options
236
+ *
237
+ * @returns Encoded PNG bytes
238
+ *
239
+ * @throws {FFmpegError} If scaling or encoding fails
240
+ *
241
+ * @example
242
+ * ```typescript
243
+ * const png = await scaler.toPng(frame, { crop: { x, y, width: w, height: h } });
244
+ * await writeFile('region.png', png);
245
+ * ```
246
+ *
247
+ * @see {@link toPngSync} For synchronous version
248
+ */
249
+ toPng(frame: Frame, options?: PngOptions): Promise<Buffer>;
250
+ /**
251
+ * Scale/crop a frame and encode it to a PNG image.
252
+ * Synchronous version of toPng.
253
+ *
254
+ * @param frame - Source frame (software or hardware)
255
+ *
256
+ * @param options - Crop, resize, and color-format options
257
+ *
258
+ * @returns Encoded PNG bytes
259
+ *
260
+ * @throws {FFmpegError} If scaling or encoding fails
261
+ *
262
+ * @example
263
+ * ```typescript
264
+ * const png = scaler.toPngSync(frame, { crop: { x, y, width: w, height: h } });
265
+ * ```
266
+ *
267
+ * @see {@link toPng} For async version
268
+ */
269
+ toPngSync(frame: Frame, options?: PngOptions): Buffer;
270
+ /**
271
+ * Release all pooled scaling contexts, graphs, and frames.
272
+ *
273
+ * @example
274
+ * ```typescript
275
+ * scaler.close();
276
+ * ```
277
+ */
278
+ close(): void;
279
+ /**
280
+ * Whether a frame has to be downloaded before it is cropped and scaled.
281
+ *
282
+ * Without a hardware context, or on a device without a GPU scaler, hardware
283
+ * frames are processed in software. The D3D11VA and D3D12VA scalers run on
284
+ * the GPU but ignore the crop, so only uncropped frames stay there.
285
+ *
286
+ * @param frame - Source frame
287
+ *
288
+ * @param crop - Requested crop region
289
+ *
290
+ * @returns True for a hardware frame the GPU graph cannot handle
291
+ *
292
+ * @internal
293
+ */
294
+ private needsDownload;
295
+ /**
296
+ * Download a hardware frame to system memory for the software path.
297
+ *
298
+ * Allocates a fresh target per call - concurrent downloads must not share a
299
+ * staging frame. The frame's own hwframe context selects a supported software
300
+ * format. The caller frees the returned frame.
301
+ *
302
+ * @param frame - Hardware source frame
303
+ *
304
+ * @returns Software frame (caller frees)
305
+ *
306
+ * @throws {FFmpegError} If the transfer fails
307
+ *
308
+ * @internal
309
+ */
310
+ private downloadToSoftware;
311
+ /**
312
+ * Synchronous version of downloadToSoftware.
313
+ *
314
+ * @param frame - Hardware source frame
315
+ *
316
+ * @returns Software frame (caller frees)
317
+ *
318
+ * @throws {FFmpegError} If the transfer fails
319
+ *
320
+ * @internal
321
+ */
322
+ private downloadToSoftwareSync;
323
+ /**
324
+ * Run the pooled native software scaler, serialized per instance.
325
+ *
326
+ * The native scaler reuses staging frames and sws contexts per configuration;
327
+ * overlapping async calls would race on them in the worker threads.
328
+ *
329
+ * @param frame - Software source frame
330
+ *
331
+ * @param options - Crop, resize, and format options
332
+ *
333
+ * @returns Tightly packed pixel data
334
+ *
335
+ * @throws {FFmpegError} If scaling fails
336
+ *
337
+ * @internal
338
+ */
339
+ private processNative;
340
+ /**
341
+ * The native scaler used by the sync path (lazily created).
342
+ *
343
+ * Sync calls block the event loop but can land while an async call's worker is
344
+ * scaling in the background; a separate native instance keeps them off the async
345
+ * scaler's pooled contexts, which are not safe to share across threads.
346
+ *
347
+ * @returns The sync-path native scaler
348
+ *
349
+ * @internal
350
+ */
351
+ private getSyncNative;
352
+ /**
353
+ * Scale/crop/convert a frame through a cached filter graph and return the
354
+ * resulting frame (caller must free it).
355
+ *
356
+ * Software frames are scaled with swscale filters; hardware frames are
357
+ * cropped/scaled/converted on the GPU and downloaded. The crop region is
358
+ * reconfigured per frame via a runtime command on a graph shared per output
359
+ * size (except OpenCL, where the crop is baked in).
360
+ *
361
+ * @param frame - Source frame (software, or hardware with a hardware context)
362
+ *
363
+ * @param crop - Crop region, or undefined for the full frame
364
+ *
365
+ * @param resize - Target dimensions, or undefined to keep the cropped size
366
+ *
367
+ * @param format - Output pixel format
368
+ *
369
+ * @returns The scaled output frame (caller frees)
370
+ *
371
+ * @throws {Error} If the crop is out of bounds or the graph produces no frame
372
+ *
373
+ * @internal
374
+ */
375
+ private toFrame;
376
+ /**
377
+ * Synchronous version of toFrame.
378
+ *
379
+ * Sync scales cannot interleave with each other (they block the event loop),
380
+ * but they can land between the awaits of an in-flight async scale; a busy
381
+ * cached graph is bypassed with a throwaway graph in that case.
382
+ *
383
+ * @param frame - Source frame (software, or hardware with a hardware context)
384
+ *
385
+ * @param crop - Crop region, or undefined for the full frame
386
+ *
387
+ * @param resize - Target dimensions, or undefined to keep the cropped size
388
+ *
389
+ * @param format - Output pixel format
390
+ *
391
+ * @returns The scaled output frame (caller frees)
392
+ *
393
+ * @internal
394
+ */
395
+ private toFrameSync;
396
+ /**
397
+ * Scale through a throwaway graph with the crop baked in, bypassing the cache.
398
+ *
399
+ * @param frame - Source frame
400
+ *
401
+ * @param acq - Resolved operation configuration
402
+ *
403
+ * @returns The scaled output frame (caller frees)
404
+ *
405
+ * @throws {Error} If the graph produces no frame
406
+ *
407
+ * @internal
408
+ */
409
+ private scaleOneShotSync;
410
+ /**
411
+ * Resolve (and, on demand, build) the cached filter graph for a frame. Shared
412
+ * by the sync and async scaling paths; all of this work is synchronous, so a
413
+ * resolved entry cannot be evicted before the caller marks it in use.
414
+ *
415
+ * @param frame - Source frame (software, or hardware with a hardware context)
416
+ *
417
+ * @param crop - Crop region, or undefined for the full frame
418
+ *
419
+ * @param resize - Target dimensions, or undefined to keep the cropped size
420
+ *
421
+ * @param format - Output pixel format
422
+ *
423
+ * @returns The cached graph entry and the resolved operation configuration
424
+ *
425
+ * @throws {Error} If the crop is out of bounds
426
+ *
427
+ * @internal
428
+ */
429
+ private resolveGraph;
430
+ /**
431
+ * Bring a cached graph in line with the current call. Must run under the entry
432
+ * lock (async path) or with no async call in flight (sync path).
433
+ *
434
+ * Rebuilds the graph when the source parameters changed: FilterAPI would
435
+ * otherwise reinitialize itself from the original graph description, silently
436
+ * resurrecting the crop baked in at build time instead of the current one. A
437
+ * graph that has not seen a frame yet is likewise rebuilt when the crop
438
+ * differs, because commands cannot be sent before initialization. Otherwise a
439
+ * changed crop is re-aimed with runtime commands - identical crops reuse the
440
+ * graph untouched (no config_input/config_output re-run).
441
+ *
442
+ * @param acq - Resolved graph and operation configuration
443
+ *
444
+ * @param frame - Frame about to be processed
445
+ *
446
+ * @internal
447
+ */
448
+ private prepareGraph;
449
+ /**
450
+ * Remove a graph from the cache and retire it.
451
+ *
452
+ * Identity-checked so a newer graph cached under the same key is left alone.
453
+ * Used after a flush (the graph is at EOF and can no longer accept frames) and
454
+ * after mid-stream failures, so the next operation rebuilds it.
455
+ *
456
+ * @param key - Cache key of the graph
457
+ *
458
+ * @param entry - The exact entry to evict
459
+ *
460
+ * @internal
461
+ */
462
+ private evictGraph;
463
+ /**
464
+ * Take a graph out of service, disposing it now or on last release.
465
+ *
466
+ * An entry with in-flight scales is only marked; the final {@link releaseGraph}
467
+ * disposes the filter once nothing uses it anymore.
468
+ *
469
+ * @param entry - Entry removed from the cache
470
+ *
471
+ * @internal
472
+ */
473
+ private retireEntry;
474
+ /**
475
+ * Drop an in-flight reference, disposing the graph if it was retired meanwhile.
476
+ *
477
+ * @param entry - Entry acquired by {@link toFrame}
478
+ *
479
+ * @internal
480
+ */
481
+ private releaseGraph;
482
+ /**
483
+ * Tag a frame for MJPEG encoding: full color range and a per-frame quality.
484
+ *
485
+ * MJPEG quality is carried on the frame (the encoder pool sets the QSCALE flag),
486
+ * so one pooled encoder serves every quality for a given output size.
487
+ *
488
+ * @param frame - Frame about to be JPEG-encoded
489
+ *
490
+ * @param quality - Quality from 1 (worst) to 100 (best)
491
+ *
492
+ * @internal
493
+ */
494
+ private prepareJpegFrame;
495
+ /**
496
+ * The lazily created MJPEG encoder pool (QSCALE flag set for per-frame quality).
497
+ *
498
+ * @returns The JPEG encoder pool
499
+ *
500
+ * @internal
501
+ */
502
+ private getJpegPool;
503
+ /**
504
+ * The lazily created PNG encoder pool.
505
+ *
506
+ * @returns The PNG encoder pool
507
+ *
508
+ * @internal
509
+ */
510
+ private getPngPool;
511
+ /**
512
+ * Build a crop+scale+convert graph.
513
+ *
514
+ * For software frames this is `crop,scale,format`. For hardware frames the crop
515
+ * filter sets crop metadata that the hardware scaler (scale_vt/scale_cuda/
516
+ * scale_vaapi) applies on the GPU; the result is kept in NV12, downloaded, and
517
+ * converted on the CPU. Scalers with a same-size/same-format passthrough mode
518
+ * (scale_vaapi/scale_cuda/vpp_qsv) get `passthrough=0`, since skipping the scaler
519
+ * would drop the crop metadata unapplied. When `commandable` the crop is a labeled instance
520
+ * (`crop@sc`) whose initial region is `crop` but which is re-aimed per frame via
521
+ * `sendCommand`. Otherwise (OpenCL) the crop is fixed in the graph.
522
+ *
523
+ * @param isHw - Whether the input is a hardware frame
524
+ *
525
+ * @param outW - Output width
526
+ *
527
+ * @param outH - Output height
528
+ *
529
+ * @param format - Output pixel format
530
+ *
531
+ * @param crop - Initial crop region
532
+ *
533
+ * @param commandable - Whether the crop can be reconfigured at runtime
534
+ *
535
+ * @returns Filtergraph description
536
+ *
537
+ * @internal
538
+ */
539
+ private buildGraph;
540
+ /**
541
+ * Insert a graph, evicting the least-recently-used entry if over capacity.
542
+ *
543
+ * @param key - Operation-configuration key
544
+ *
545
+ * @param entry - Graph entry to cache
546
+ *
547
+ * @internal
548
+ */
549
+ private cacheSet;
550
+ /**
551
+ * Dispose of the scaler (for `using` statements).
552
+ *
553
+ * @example
554
+ * ```typescript
555
+ * using scaler = new Scaler();
556
+ * // ... use scaler ...
557
+ * // automatically disposed at end of scope
558
+ * ```
559
+ */
560
+ [Symbol.dispose](): void;
561
+ }