node-av-light 0.0.0 → 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 +711 -0
  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 +165 -3
@@ -0,0 +1,202 @@
1
+ import { FilterContext } from './filter-context.js';
2
+ import type { NativeFilterInOut, NativeWrapper } from './native-types.js';
3
+ /**
4
+ * Filter input/output linked list structure for filter graph parsing.
5
+ *
6
+ * Represents a linked list of labeled filter pads used during filter graph
7
+ * configuration. Each node contains a filter context, pad index, and optional
8
+ * label for connecting filters together. Used internally by avfilter_graph_parse()
9
+ * to track unlinked filter pads during graph construction.
10
+ *
11
+ * The head of a list owns all of its nodes, including lists appended through
12
+ * `next`. Once the head is freed, the other nodes read their defaults (e.g. name
13
+ * null) and ignore writes.
14
+ *
15
+ * Direct mapping to FFmpeg's AVFilterInOut.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { FilterInOut, FilterContext, FFmpegError } from 'node-av';
20
+ *
21
+ * // Create a linked list of filter inputs/outputs
22
+ * const inputs = FilterInOut.createList([
23
+ * { name: 'in', filterCtx: bufferSrc, padIdx: 0 },
24
+ * { name: 'overlay', filterCtx: overlay, padIdx: 1 }
25
+ * ]);
26
+ *
27
+ * // Parse filter graph with labeled connections
28
+ * const ret = graph.parse(filterString, inputs, outputs);
29
+ * FFmpegError.throwIfError(ret, 'parse');
30
+ *
31
+ * // Manual creation and linking
32
+ * const inout = new FilterInOut();
33
+ * inout.alloc();
34
+ * inout.name = 'input';
35
+ * inout.filterCtx = sourceFilter;
36
+ * inout.padIdx = 0;
37
+ * ```
38
+ *
39
+ * @see [AVFilterInOut](https://ffmpeg.org/doxygen/trunk/structAVFilterInOut.html) - FFmpeg Doxygen
40
+ * @see {@link FilterGraph} For parsing filter descriptions
41
+ * @see {@link FilterContext} For filter instances
42
+ */
43
+ export declare class FilterInOut implements Disposable, NativeWrapper<NativeFilterInOut> {
44
+ private native;
45
+ constructor();
46
+ /**
47
+ * Create a linked list of filter inputs/outputs.
48
+ *
49
+ * Convenience method to build a linked list structure from an array
50
+ * of filter specifications. Each item becomes a node in the list.
51
+ *
52
+ * @param items - Array of filter input/output specifications
53
+ *
54
+ * @returns Head of the linked list, or null if items is empty
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * // Create inputs for a filter graph
59
+ * const inputs = FilterInOut.createList([
60
+ * { name: 'video_in', filterCtx: videoBuffer, padIdx: 0 },
61
+ * { name: 'audio_in', filterCtx: audioBuffer, padIdx: 0 }
62
+ * ]);
63
+ *
64
+ * // Create outputs
65
+ * const outputs = FilterInOut.createList([
66
+ * { name: 'video_out', filterCtx: videoSink, padIdx: 0 },
67
+ * { name: 'audio_out', filterCtx: audioSink, padIdx: 0 }
68
+ * ]);
69
+ * ```
70
+ *
71
+ * @see {@link alloc} For manual node creation
72
+ */
73
+ static createList(items: {
74
+ name: string;
75
+ filterCtx: FilterContext;
76
+ padIdx: number;
77
+ }[]): FilterInOut | null;
78
+ /**
79
+ * Label name for this filter pad.
80
+ *
81
+ * Used to reference this connection point in filter graph strings.
82
+ * For example, "[in]" or "[video_out]".
83
+ *
84
+ * Direct mapping to AVFilterInOut->name.
85
+ */
86
+ get name(): string | null;
87
+ set name(value: string | null);
88
+ /**
89
+ * Filter context this pad belongs to.
90
+ *
91
+ * Reference to the filter instance containing this pad.
92
+ *
93
+ * Direct mapping to AVFilterInOut->filter_ctx.
94
+ */
95
+ get filterCtx(): FilterContext | null;
96
+ set filterCtx(value: FilterContext | null);
97
+ /**
98
+ * Pad index within the filter.
99
+ *
100
+ * Index of the input or output pad in the filter context.
101
+ * 0 for the first pad, 1 for the second, etc.
102
+ *
103
+ * Direct mapping to AVFilterInOut->pad_idx.
104
+ */
105
+ get padIdx(): number;
106
+ set padIdx(value: number);
107
+ /**
108
+ * Next node in the linked list.
109
+ *
110
+ * Reference to the next FilterInOut in the chain, or null for the last node.
111
+ *
112
+ * Direct mapping to AVFilterInOut->next.
113
+ */
114
+ get next(): FilterInOut | null;
115
+ set next(value: FilterInOut | null);
116
+ /**
117
+ * Allocate a FilterInOut structure.
118
+ *
119
+ * Allocates memory for the structure. Must be called before using
120
+ * a manually created instance.
121
+ *
122
+ * Direct mapping to avfilter_inout_alloc().
123
+ *
124
+ * @throws {Error} If allocation fails (ENOMEM)
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * const inout = new FilterInOut();
129
+ * inout.alloc();
130
+ * inout.name = 'input';
131
+ * inout.filterCtx = bufferSource;
132
+ * inout.padIdx = 0;
133
+ * ```
134
+ *
135
+ * @see {@link free} To deallocate
136
+ * @see {@link createList} For automatic allocation
137
+ */
138
+ alloc(): void;
139
+ /**
140
+ * Free the FilterInOut structure.
141
+ *
142
+ * Deallocates the structure and breaks the chain if part of a linked list.
143
+ * Only frees this node, not the entire list.
144
+ *
145
+ * Direct mapping to avfilter_inout_free().
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * inout.free();
150
+ * // Structure is now invalid
151
+ * ```
152
+ *
153
+ * @see {@link alloc} To allocate
154
+ * @see {@link Symbol.dispose} For automatic cleanup
155
+ */
156
+ free(): void;
157
+ /**
158
+ * Count nodes in the linked list.
159
+ *
160
+ * Counts the total number of nodes starting from this node
161
+ * and following the next pointers.
162
+ *
163
+ * @returns Number of nodes in the list (including this one)
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * const list = FilterInOut.createList([
168
+ * { name: 'in1', filterCtx: filter1, padIdx: 0 },
169
+ * { name: 'in2', filterCtx: filter2, padIdx: 0 },
170
+ * { name: 'in3', filterCtx: filter3, padIdx: 0 }
171
+ * ]);
172
+ *
173
+ * console.log(`List has ${list.count()} nodes`); // 3
174
+ * ```
175
+ */
176
+ count(): number;
177
+ /**
178
+ * Get the underlying native FilterInOut object.
179
+ *
180
+ * @returns The native FilterInOut binding object
181
+ *
182
+ * @internal
183
+ */
184
+ getNative(): NativeFilterInOut;
185
+ /**
186
+ * Dispose of the FilterInOut structure.
187
+ *
188
+ * Implements the Disposable interface for automatic cleanup.
189
+ * Equivalent to calling free().
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * {
194
+ * using inout = new FilterInOut();
195
+ * inout.alloc();
196
+ * inout.name = 'test';
197
+ * // Use inout...
198
+ * } // Automatically freed when leaving scope
199
+ * ```
200
+ */
201
+ [Symbol.dispose](): void;
202
+ }
@@ -0,0 +1,261 @@
1
+ import { bindings } from './binding.js';
2
+ import { FilterContext } from './filter-context.js';
3
+ /**
4
+ * Filter input/output linked list structure for filter graph parsing.
5
+ *
6
+ * Represents a linked list of labeled filter pads used during filter graph
7
+ * configuration. Each node contains a filter context, pad index, and optional
8
+ * label for connecting filters together. Used internally by avfilter_graph_parse()
9
+ * to track unlinked filter pads during graph construction.
10
+ *
11
+ * The head of a list owns all of its nodes, including lists appended through
12
+ * `next`. Once the head is freed, the other nodes read their defaults (e.g. name
13
+ * null) and ignore writes.
14
+ *
15
+ * Direct mapping to FFmpeg's AVFilterInOut.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { FilterInOut, FilterContext, FFmpegError } from 'node-av';
20
+ *
21
+ * // Create a linked list of filter inputs/outputs
22
+ * const inputs = FilterInOut.createList([
23
+ * { name: 'in', filterCtx: bufferSrc, padIdx: 0 },
24
+ * { name: 'overlay', filterCtx: overlay, padIdx: 1 }
25
+ * ]);
26
+ *
27
+ * // Parse filter graph with labeled connections
28
+ * const ret = graph.parse(filterString, inputs, outputs);
29
+ * FFmpegError.throwIfError(ret, 'parse');
30
+ *
31
+ * // Manual creation and linking
32
+ * const inout = new FilterInOut();
33
+ * inout.alloc();
34
+ * inout.name = 'input';
35
+ * inout.filterCtx = sourceFilter;
36
+ * inout.padIdx = 0;
37
+ * ```
38
+ *
39
+ * @see [AVFilterInOut](https://ffmpeg.org/doxygen/trunk/structAVFilterInOut.html) - FFmpeg Doxygen
40
+ * @see {@link FilterGraph} For parsing filter descriptions
41
+ * @see {@link FilterContext} For filter instances
42
+ */
43
+ export class FilterInOut {
44
+ native;
45
+ constructor() {
46
+ this.native = new bindings.FilterInOut();
47
+ }
48
+ /**
49
+ * Create a linked list of filter inputs/outputs.
50
+ *
51
+ * Convenience method to build a linked list structure from an array
52
+ * of filter specifications. Each item becomes a node in the list.
53
+ *
54
+ * @param items - Array of filter input/output specifications
55
+ *
56
+ * @returns Head of the linked list, or null if items is empty
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * // Create inputs for a filter graph
61
+ * const inputs = FilterInOut.createList([
62
+ * { name: 'video_in', filterCtx: videoBuffer, padIdx: 0 },
63
+ * { name: 'audio_in', filterCtx: audioBuffer, padIdx: 0 }
64
+ * ]);
65
+ *
66
+ * // Create outputs
67
+ * const outputs = FilterInOut.createList([
68
+ * { name: 'video_out', filterCtx: videoSink, padIdx: 0 },
69
+ * { name: 'audio_out', filterCtx: audioSink, padIdx: 0 }
70
+ * ]);
71
+ * ```
72
+ *
73
+ * @see {@link alloc} For manual node creation
74
+ */
75
+ static createList(items) {
76
+ if (items.length === 0)
77
+ return null;
78
+ let head = null;
79
+ let current = null;
80
+ for (const item of items) {
81
+ const inout = new FilterInOut();
82
+ inout.alloc();
83
+ inout.name = item.name;
84
+ inout.filterCtx = item.filterCtx;
85
+ inout.padIdx = item.padIdx;
86
+ if (!head) {
87
+ head = inout;
88
+ current = inout;
89
+ }
90
+ else if (current) {
91
+ current.next = inout;
92
+ current = inout;
93
+ }
94
+ }
95
+ return head;
96
+ }
97
+ /**
98
+ * Label name for this filter pad.
99
+ *
100
+ * Used to reference this connection point in filter graph strings.
101
+ * For example, "[in]" or "[video_out]".
102
+ *
103
+ * Direct mapping to AVFilterInOut->name.
104
+ */
105
+ get name() {
106
+ return this.native.name;
107
+ }
108
+ set name(value) {
109
+ this.native.name = value;
110
+ }
111
+ /**
112
+ * Filter context this pad belongs to.
113
+ *
114
+ * Reference to the filter instance containing this pad.
115
+ *
116
+ * Direct mapping to AVFilterInOut->filter_ctx.
117
+ */
118
+ get filterCtx() {
119
+ const native = this.native.filterCtx;
120
+ return native ? new FilterContext(native) : null;
121
+ }
122
+ set filterCtx(value) {
123
+ this.native.filterCtx = value ? value.getNative() : null;
124
+ }
125
+ /**
126
+ * Pad index within the filter.
127
+ *
128
+ * Index of the input or output pad in the filter context.
129
+ * 0 for the first pad, 1 for the second, etc.
130
+ *
131
+ * Direct mapping to AVFilterInOut->pad_idx.
132
+ */
133
+ get padIdx() {
134
+ return this.native.padIdx;
135
+ }
136
+ set padIdx(value) {
137
+ this.native.padIdx = value;
138
+ }
139
+ /**
140
+ * Next node in the linked list.
141
+ *
142
+ * Reference to the next FilterInOut in the chain, or null for the last node.
143
+ *
144
+ * Direct mapping to AVFilterInOut->next.
145
+ */
146
+ get next() {
147
+ const native = this.native.next;
148
+ if (!native) {
149
+ return null;
150
+ }
151
+ const filterInOut = Object.create(FilterInOut.prototype);
152
+ filterInOut.native = native;
153
+ return filterInOut;
154
+ }
155
+ set next(value) {
156
+ this.native.next = value ? value.getNative() : null;
157
+ }
158
+ /**
159
+ * Allocate a FilterInOut structure.
160
+ *
161
+ * Allocates memory for the structure. Must be called before using
162
+ * a manually created instance.
163
+ *
164
+ * Direct mapping to avfilter_inout_alloc().
165
+ *
166
+ * @throws {Error} If allocation fails (ENOMEM)
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * const inout = new FilterInOut();
171
+ * inout.alloc();
172
+ * inout.name = 'input';
173
+ * inout.filterCtx = bufferSource;
174
+ * inout.padIdx = 0;
175
+ * ```
176
+ *
177
+ * @see {@link free} To deallocate
178
+ * @see {@link createList} For automatic allocation
179
+ */
180
+ alloc() {
181
+ this.native.alloc();
182
+ }
183
+ /**
184
+ * Free the FilterInOut structure.
185
+ *
186
+ * Deallocates the structure and breaks the chain if part of a linked list.
187
+ * Only frees this node, not the entire list.
188
+ *
189
+ * Direct mapping to avfilter_inout_free().
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * inout.free();
194
+ * // Structure is now invalid
195
+ * ```
196
+ *
197
+ * @see {@link alloc} To allocate
198
+ * @see {@link Symbol.dispose} For automatic cleanup
199
+ */
200
+ free() {
201
+ this.native.free();
202
+ }
203
+ /**
204
+ * Count nodes in the linked list.
205
+ *
206
+ * Counts the total number of nodes starting from this node
207
+ * and following the next pointers.
208
+ *
209
+ * @returns Number of nodes in the list (including this one)
210
+ *
211
+ * @example
212
+ * ```typescript
213
+ * const list = FilterInOut.createList([
214
+ * { name: 'in1', filterCtx: filter1, padIdx: 0 },
215
+ * { name: 'in2', filterCtx: filter2, padIdx: 0 },
216
+ * { name: 'in3', filterCtx: filter3, padIdx: 0 }
217
+ * ]);
218
+ *
219
+ * console.log(`List has ${list.count()} nodes`); // 3
220
+ * ```
221
+ */
222
+ count() {
223
+ let count = 1;
224
+ let current = this.next;
225
+ while (current) {
226
+ count++;
227
+ current = current.next;
228
+ }
229
+ return count;
230
+ }
231
+ /**
232
+ * Get the underlying native FilterInOut object.
233
+ *
234
+ * @returns The native FilterInOut binding object
235
+ *
236
+ * @internal
237
+ */
238
+ getNative() {
239
+ return this.native;
240
+ }
241
+ /**
242
+ * Dispose of the FilterInOut structure.
243
+ *
244
+ * Implements the Disposable interface for automatic cleanup.
245
+ * Equivalent to calling free().
246
+ *
247
+ * @example
248
+ * ```typescript
249
+ * {
250
+ * using inout = new FilterInOut();
251
+ * inout.alloc();
252
+ * inout.name = 'test';
253
+ * // Use inout...
254
+ * } // Automatically freed when leaving scope
255
+ * ```
256
+ */
257
+ [Symbol.dispose]() {
258
+ this.native[Symbol.dispose]();
259
+ }
260
+ }
261
+ //# sourceMappingURL=filter-inout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-inout.js","sourceRoot":"","sources":["../../src/lib/filter-inout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,243 @@
1
+ import { type AVMediaType } from '../constants/constants.js';
2
+ import type { NativeFilter, NativeWrapper } from './native-types.js';
3
+ /**
4
+ * Filter pad information
5
+ */
6
+ export interface FilterPad {
7
+ name: string | null;
8
+ type: AVMediaType;
9
+ }
10
+ /**
11
+ * Filter descriptor for video/audio processing.
12
+ *
13
+ * Represents a filter that can be used in filter graphs for processing
14
+ * audio and video frames. Filters can be sources (no inputs), sinks (no outputs),
15
+ * or processors (with both inputs and outputs). Each filter has specific
16
+ * capabilities and pad configurations.
17
+ *
18
+ * Direct mapping to FFmpeg's AVFilter.
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * import { Filter } from 'node-av';
23
+ *
24
+ * // Get a specific filter
25
+ * const scaleFilter = Filter.getByName('scale');
26
+ * if (scaleFilter) {
27
+ * console.log(`Filter: ${scaleFilter.name}`);
28
+ * console.log(`Description: ${scaleFilter.description}`);
29
+ * console.log(`Inputs: ${scaleFilter.inputs.length}`);
30
+ * console.log(`Outputs: ${scaleFilter.outputs.length}`);
31
+ * }
32
+ *
33
+ * // List all video filters
34
+ * const filters = Filter.getList();
35
+ * const videoFilters = filters.filter(f => f.isVideo());
36
+ * console.log(`Found ${videoFilters.length} video filters`);
37
+ * ```
38
+ *
39
+ * @see [AVFilter](https://ffmpeg.org/doxygen/trunk/structAVFilter.html) - FFmpeg Doxygen
40
+ * @see {@link FilterContext} For using filters in graphs
41
+ * @see {@link FilterGraph} For building filter pipelines
42
+ */
43
+ export declare class Filter implements NativeWrapper<NativeFilter> {
44
+ private native;
45
+ /**
46
+ * @param native - The native filter instance
47
+ *
48
+ * @internal
49
+ */
50
+ constructor(native: NativeFilter);
51
+ /**
52
+ * Get a filter by name.
53
+ *
54
+ * Retrieves a specific filter descriptor by its name.
55
+ * Common filter names include 'scale', 'crop', 'overlay', 'aformat', etc.
56
+ *
57
+ * Direct mapping to avfilter_get_by_name().
58
+ *
59
+ * @param name - Name of the filter
60
+ *
61
+ * @returns Filter instance if found, null otherwise
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * // Get video scaling filter
66
+ * const scale = Filter.getByName('scale');
67
+ * if (!scale) {
68
+ * throw new Error('Scale filter not available');
69
+ * }
70
+ *
71
+ * // Get audio format filter
72
+ * const aformat = Filter.getByName('aformat');
73
+ * ```
74
+ *
75
+ * @see {@link getList} To list all available filters
76
+ */
77
+ static getByName(name: string): Filter | null;
78
+ /**
79
+ * Get list of all available filters.
80
+ *
81
+ * Returns an array of all registered filters in FFmpeg.
82
+ * Useful for discovering available filters or building filter lists.
83
+ *
84
+ * @returns Array of all available filters
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * // List all filters
89
+ * const filters = Filter.getList();
90
+ * console.log(`Total filters: ${filters.length}`);
91
+ *
92
+ * // Find all source filters (generators)
93
+ * const sources = filters.filter(f => f.isSource());
94
+ * console.log(`Source filters: ${sources.length}`);
95
+ *
96
+ * // Find all sink filters (outputs)
97
+ * const sinks = filters.filter(f => f.isSink());
98
+ * console.log(`Sink filters: ${sinks.length}`);
99
+ * ```
100
+ *
101
+ * @see {@link getByName} To get a specific filter
102
+ */
103
+ static getList(): Filter[];
104
+ /**
105
+ * Filter name.
106
+ *
107
+ * Unique identifier for the filter (e.g., 'scale', 'overlay').
108
+ *
109
+ * Direct mapping to AVFilter->name.
110
+ */
111
+ get name(): string | null;
112
+ /**
113
+ * Filter description.
114
+ *
115
+ * Human-readable description of what the filter does.
116
+ *
117
+ * Direct mapping to AVFilter->description.
118
+ */
119
+ get description(): string | null;
120
+ /**
121
+ * Input pads.
122
+ *
123
+ * Array of input pad descriptors.
124
+ * Empty array for source filters.
125
+ *
126
+ * Direct mapping to AVFilter->inputs.
127
+ */
128
+ get inputs(): FilterPad[];
129
+ /**
130
+ * Output pads.
131
+ *
132
+ * Array of output pad descriptors.
133
+ * Empty array for sink filters.
134
+ *
135
+ * Direct mapping to AVFilter->outputs.
136
+ */
137
+ get outputs(): FilterPad[];
138
+ /**
139
+ * Filter flags.
140
+ *
141
+ * Combination of AVFILTER_FLAG_* values indicating filter capabilities.
142
+ *
143
+ * Direct mapping to AVFilter->flags.
144
+ */
145
+ get flags(): number;
146
+ /**
147
+ * Check if filter has specific flags.
148
+ *
149
+ * Tests whether all specified flags are set using bitwise AND.
150
+ *
151
+ * @param flags - One or more flag values to check
152
+ *
153
+ * @returns true if all specified flags are set, false otherwise
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * import { AVFILTER_FLAG_DYNAMIC_INPUTS } from 'node-av/constants';
158
+ *
159
+ * if (filter.hasFlags(AVFILTER_FLAG_DYNAMIC_INPUTS)) {
160
+ * console.log('This filter supports dynamic inputs');
161
+ * }
162
+ * ```
163
+ *
164
+ * @see {@link flags} For direct flags access
165
+ */
166
+ hasFlags(...flags: number[]): boolean;
167
+ /**
168
+ * Check if filter is a source.
169
+ *
170
+ * Source filters generate frames without input
171
+ * (e.g., 'testsrc', 'color', 'anullsrc').
172
+ *
173
+ * @returns True if filter has no inputs
174
+ *
175
+ * @example
176
+ * ```typescript
177
+ * const filter = Filter.getByName('testsrc');
178
+ * if (filter?.isSource()) {
179
+ * console.log('This is a source filter');
180
+ * }
181
+ * ```
182
+ *
183
+ * @see {@link isSink} To check for sink filters
184
+ */
185
+ isSource(): boolean;
186
+ /**
187
+ * Check if filter is a sink.
188
+ *
189
+ * Sink filters consume frames without output
190
+ * (e.g., 'nullsink', 'buffersink').
191
+ *
192
+ * @returns True if filter has no outputs
193
+ *
194
+ * @example
195
+ * ```typescript
196
+ * const filter = Filter.getByName('nullsink');
197
+ * if (filter?.isSink()) {
198
+ * console.log('This is a sink filter');
199
+ * }
200
+ * ```
201
+ *
202
+ * @see {@link isSource} To check for source filters
203
+ */
204
+ isSink(): boolean;
205
+ /**
206
+ * Check if filter processes video.
207
+ *
208
+ * @returns True if filter has video inputs or outputs
209
+ *
210
+ * @example
211
+ * ```typescript
212
+ * const filters = Filter.getList();
213
+ * const videoFilters = filters.filter(f => f.isVideo());
214
+ * console.log(`Video filters: ${videoFilters.length}`);
215
+ * ```
216
+ *
217
+ * @see {@link isAudio} To check for audio filters
218
+ */
219
+ isVideo(): boolean;
220
+ /**
221
+ * Check if filter processes audio.
222
+ *
223
+ * @returns True if filter has audio inputs or outputs
224
+ *
225
+ * @example
226
+ * ```typescript
227
+ * const filters = Filter.getList();
228
+ * const audioFilters = filters.filter(f => f.isAudio());
229
+ * console.log(`Audio filters: ${audioFilters.length}`);
230
+ * ```
231
+ *
232
+ * @see {@link isVideo} To check for video filters
233
+ */
234
+ isAudio(): boolean;
235
+ /**
236
+ * Get the underlying native Filter object.
237
+ *
238
+ * @returns The native Filter binding object
239
+ *
240
+ * @internal
241
+ */
242
+ getNative(): NativeFilter;
243
+ }