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,714 @@
1
+ import { Filter } from './filter.js';
2
+ import { HardwareDeviceContext } from './hardware-device-context.js';
3
+ import { OptionMember } from './option.js';
4
+ import { Rational } from './rational.js';
5
+ import type { AVBufferSrcFlag, AVColorRange, AVColorSpace, AVPixelFormat, AVSampleFormat } from '../constants/constants.js';
6
+ import type { Frame } from './frame.js';
7
+ import type { HardwareFramesContext } from './hardware-frames-context.js';
8
+ import type { NativeDictionary, NativeFilterContext, NativeFilterGraph, NativeWrapper } from './native-types.js';
9
+ import type { ChannelLayout, IRational } from './types.js';
10
+ /**
11
+ * Filter instance in a filter graph.
12
+ *
13
+ * Represents an instantiated filter within a filter graph. Each context contains
14
+ * a specific filter configuration with its parameters, connections to other filters,
15
+ * and input/output pads. Supports both software and hardware filtering operations.
16
+ * Essential for building complex filter chains for audio/video processing.
17
+ *
18
+ * A filter context belongs to its filter graph. Once that graph is freed, the context
19
+ * reads its defaults (e.g. name null), ignores writes and its frame operations fail.
20
+ *
21
+ * Direct mapping to FFmpeg's AVFilterContext.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * import { FilterContext, FilterGraph, Filter, FFmpegError } from 'node-av';
26
+ *
27
+ * // Create filter context in a graph
28
+ * const graph = new FilterGraph();
29
+ * const filter = Filter.getByName('scale');
30
+ * const context = graph.createFilter(filter, 'scaler');
31
+ *
32
+ * // Initialize with parameters
33
+ * const ret = context.initStr('640:480');
34
+ * FFmpegError.throwIfError(ret, 'initStr');
35
+ *
36
+ * // Link filters together
37
+ * const ret2 = source.link(0, context, 0);
38
+ * FFmpegError.throwIfError(ret2, 'link');
39
+ *
40
+ * // For buffer source/sink
41
+ * const ret3 = await bufferSrc.buffersrcAddFrame(frame);
42
+ * FFmpegError.throwIfError(ret3, 'buffersrcAddFrame');
43
+ * ```
44
+ *
45
+ * @see [AVFilterContext](https://ffmpeg.org/doxygen/trunk/structAVFilterContext.html) - FFmpeg Doxygen
46
+ * @see {@link FilterGraph} For managing filter graphs
47
+ * @see {@link Filter} For filter descriptors
48
+ */
49
+ export declare class FilterContext extends OptionMember<NativeFilterContext> implements Disposable, NativeWrapper<NativeFilterContext> {
50
+ /**
51
+ * @param native - The native filter context instance
52
+ *
53
+ * @internal
54
+ */
55
+ constructor(native: NativeFilterContext);
56
+ /**
57
+ * Filter instance name.
58
+ *
59
+ * User-assigned name for this filter instance in the graph.
60
+ * Used for identification and debugging.
61
+ *
62
+ * Direct mapping to AVFilterContext->name.
63
+ */
64
+ get name(): string | null;
65
+ set name(value: string | null);
66
+ /**
67
+ * Filter descriptor.
68
+ *
69
+ * Reference to the filter type this context instantiates.
70
+ *
71
+ * Direct mapping to AVFilterContext->filter.
72
+ */
73
+ get filter(): Filter | null;
74
+ /**
75
+ * Parent filter graph.
76
+ *
77
+ * Reference to the graph containing this filter context.
78
+ *
79
+ * Direct mapping to AVFilterContext->graph.
80
+ */
81
+ get graph(): NativeFilterGraph | null;
82
+ /**
83
+ * Number of input pads.
84
+ *
85
+ * Total number of input connections this filter can accept.
86
+ *
87
+ * Direct mapping to AVFilterContext->nb_inputs.
88
+ */
89
+ get nbInputs(): number;
90
+ /**
91
+ * Number of output pads.
92
+ *
93
+ * Total number of output connections this filter can provide.
94
+ *
95
+ * Direct mapping to AVFilterContext->nb_outputs.
96
+ */
97
+ get nbOutputs(): number;
98
+ /**
99
+ * Hardware device context.
100
+ *
101
+ * Hardware acceleration context for GPU-based filtering.
102
+ * Set to enable hardware-accelerated filter operations.
103
+ *
104
+ * Direct mapping to AVFilterContext->hw_device_ctx.
105
+ */
106
+ get hwDeviceCtx(): HardwareDeviceContext | null;
107
+ set hwDeviceCtx(value: HardwareDeviceContext | null);
108
+ /**
109
+ * Number of extra hardware frames to allocate.
110
+ *
111
+ * Specifies additional hardware frame buffers for filters that need them.
112
+ * Useful for deinterlacing or other filters requiring frame buffering.
113
+ *
114
+ * Direct mapping to AVFilterContext->extra_hw_frames.
115
+ */
116
+ get extraHWFrames(): number;
117
+ set extraHWFrames(value: number);
118
+ /**
119
+ * Initialize filter with dictionary options.
120
+ *
121
+ * Configures the filter with key-value option pairs.
122
+ * Must be called after creation and before processing.
123
+ *
124
+ * Direct mapping to avfilter_init_dict().
125
+ *
126
+ * @param options - Dictionary of filter options
127
+ *
128
+ * @returns 0 on success, negative AVERROR on error:
129
+ * - AVERROR_EINVAL: Invalid parameters
130
+ * - AVERROR_ENOMEM: Memory allocation failure
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * import { FFmpegError } from 'node-av';
135
+ *
136
+ * const options = { width: '1920', height: '1080' };
137
+ * const ret = context.init(options);
138
+ * FFmpegError.throwIfError(ret, 'init');
139
+ * ```
140
+ *
141
+ * @see {@link initStr} For string-based initialization
142
+ */
143
+ init(options?: NativeDictionary | null): number;
144
+ /**
145
+ * Initialize filter with string arguments.
146
+ *
147
+ * Configures the filter using a string representation of parameters.
148
+ * Format depends on the specific filter.
149
+ *
150
+ * Direct mapping to avfilter_init_str().
151
+ *
152
+ * @param args - Filter arguments string
153
+ *
154
+ * @returns 0 on success, negative AVERROR on error:
155
+ * - AVERROR_EINVAL: Invalid arguments
156
+ * - AVERROR_ENOMEM: Memory allocation failure
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * import { FFmpegError } from 'node-av';
161
+ *
162
+ * // Scale filter with width:height
163
+ * const ret = scaleContext.initStr('1920:1080');
164
+ * FFmpegError.throwIfError(ret, 'initStr');
165
+ *
166
+ * // Crop filter with width:height:x:y
167
+ * const ret2 = cropContext.initStr('640:480:100:50');
168
+ * FFmpegError.throwIfError(ret2, 'initStr');
169
+ * ```
170
+ *
171
+ * @see {@link init} For dictionary-based initialization
172
+ */
173
+ initStr(args?: string | null): number;
174
+ /**
175
+ * Link this filter's output to another filter's input.
176
+ *
177
+ * Creates a connection between two filters in the graph.
178
+ * Data flows from this filter's output pad to the destination's input pad.
179
+ *
180
+ * Direct mapping to avfilter_link().
181
+ *
182
+ * @param srcPad - Output pad index of this filter
183
+ *
184
+ * @param dst - Destination filter context
185
+ *
186
+ * @param dstPad - Input pad index of destination filter
187
+ *
188
+ * @returns 0 on success, negative AVERROR on error:
189
+ * - AVERROR_EINVAL: Invalid pad indices or incompatible formats
190
+ * - AVERROR_ENOMEM: Memory allocation failure
191
+ *
192
+ * @example
193
+ * ```typescript
194
+ * import { FFmpegError } from 'node-av';
195
+ *
196
+ * // Link source output 0 to scale input 0
197
+ * const ret = source.link(0, scale, 0);
198
+ * FFmpegError.throwIfError(ret, 'link');
199
+ *
200
+ * // Link scale output 0 to sink input 0
201
+ * const ret2 = scale.link(0, sink, 0);
202
+ * FFmpegError.throwIfError(ret2, 'link');
203
+ * ```
204
+ *
205
+ * @see {@link unlink} To disconnect filters
206
+ */
207
+ link(srcPad: number, dst: FilterContext, dstPad: number): number;
208
+ /**
209
+ * Unlink a filter pad.
210
+ *
211
+ * Disconnects a pad from its linked filter.
212
+ * Used to reconfigure filter connections.
213
+ *
214
+ * Direct mapping to avfilter_link_free().
215
+ *
216
+ * @param pad - Pad index to unlink
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * // Disconnect output pad 0
221
+ * context.unlink(0);
222
+ * ```
223
+ *
224
+ * @see {@link link} To connect filters
225
+ */
226
+ unlink(pad: number): void;
227
+ /**
228
+ * Add a frame to a buffer source filter.
229
+ *
230
+ * Sends a frame into the filter graph through a buffer source.
231
+ * Only valid for buffer source filters. Send null to signal EOF.
232
+ *
233
+ * Direct mapping to av_buffersrc_add_frame_flags().
234
+ *
235
+ * @param frame - Frame to send, or null for EOF
236
+ *
237
+ * @param flags - Optional buffersrc flags (defaults to AV_BUFFERSRC_FLAG_NONE = 0)
238
+ *
239
+ * @returns 0 on success, negative AVERROR on error:
240
+ * - AVERROR_EAGAIN: Filter needs more output consumption
241
+ * - AVERROR_EOF: Filter has been closed
242
+ * - AVERROR_EINVAL: Not a buffer source filter
243
+ * - AVERROR_ENOMEM: Memory allocation failure
244
+ *
245
+ * @example
246
+ * ```typescript
247
+ * import { FFmpegError } from 'node-av';
248
+ * import { AVERROR_EAGAIN, AV_BUFFERSRC_FLAG_PUSH } from 'node-av/constants';
249
+ *
250
+ * // Send frame to filter graph with PUSH flag (immediate processing)
251
+ * const ret = await bufferSrc.buffersrcAddFrame(frame, AV_BUFFERSRC_FLAG_PUSH);
252
+ * if (ret === AVERROR_EAGAIN) {
253
+ * // Need to consume output first
254
+ * } else {
255
+ * FFmpegError.throwIfError(ret, 'buffersrcAddFrame');
256
+ * }
257
+ *
258
+ * // Signal EOF
259
+ * await bufferSrc.buffersrcAddFrame(null);
260
+ * ```
261
+ *
262
+ * @see {@link buffersinkGetFrame} To retrieve filtered frames
263
+ */
264
+ buffersrcAddFrame(frame: Frame | null, flags?: AVBufferSrcFlag): Promise<number>;
265
+ /**
266
+ * Add frame to buffer source filter synchronously.
267
+ * Synchronous version of buffersrcAddFrame.
268
+ *
269
+ * Sends a frame to a buffer source filter for processing.
270
+ * Only valid for buffer source filters (buffer, abuffer).
271
+ *
272
+ * Direct mapping to av_buffersrc_add_frame_flags().
273
+ *
274
+ * @param frame - Frame to send (null to mark EOF)
275
+ *
276
+ * @param flags - Optional buffersrc flags (defaults to AV_BUFFERSRC_FLAG_NONE = 0)
277
+ *
278
+ * @returns 0 on success, negative AVERROR on error:
279
+ * - AVERROR_EAGAIN: Need to retrieve output first
280
+ * - AVERROR_EOF: Graph has finished processing
281
+ * - AVERROR_EINVAL: Invalid parameters
282
+ * - AVERROR(ENOMEM): Memory allocation failure
283
+ *
284
+ * @example
285
+ * ```typescript
286
+ * import { FFmpegError } from 'node-av';
287
+ * import { AVERROR_EAGAIN, AV_BUFFERSRC_FLAG_PUSH } from 'node-av/constants';
288
+ *
289
+ * // Send frame to filter with PUSH flag (immediate processing)
290
+ * const ret = bufferSrc.buffersrcAddFrameSync(frame, AV_BUFFERSRC_FLAG_PUSH);
291
+ * if (ret === AVERROR_EAGAIN) {
292
+ * // Need to get output frames first
293
+ * const filtered = new Frame();
294
+ * bufferSink.buffersinkGetFrameSync(filtered);
295
+ * } else {
296
+ * FFmpegError.throwIfError(ret, 'buffersrcAddFrameSync');
297
+ * }
298
+ *
299
+ * // Mark end of stream
300
+ * bufferSrc.buffersrcAddFrameSync(null);
301
+ * ```
302
+ *
303
+ * @see {@link buffersrcAddFrame} For async version
304
+ */
305
+ buffersrcAddFrameSync(frame: Frame | null, flags?: AVBufferSrcFlag): number;
306
+ /**
307
+ * Set parameters for a buffer source filter.
308
+ *
309
+ * Configures the format and properties of frames that will be sent
310
+ * to the buffer source. Must be called before sending frames.
311
+ *
312
+ * Direct mapping to av_buffersrc_parameters_set().
313
+ *
314
+ * @param params - Source parameters
315
+ *
316
+ * @param params.width - Video frame width
317
+ *
318
+ * @param params.height - Video frame height
319
+ *
320
+ * @param params.format - Pixel or sample format
321
+ *
322
+ * @param params.timeBase - Time base for timestamps
323
+ *
324
+ * @param params.frameRate - Video frame rate
325
+ *
326
+ * @param params.sampleAspectRatio - Pixel aspect ratio
327
+ *
328
+ * @param params.hwFramesCtx - Hardware frames context
329
+ *
330
+ * @param params.sampleRate - Audio sample rate
331
+ *
332
+ * @param params.channelLayout - Audio channel layout
333
+ *
334
+ * @param params.colorRange - Color range for video
335
+ *
336
+ * @param params.colorSpace - Color space for video
337
+ *
338
+ * @param params.alphaMode - Alpha channel mode
339
+ *
340
+ * @returns 0 on success, negative AVERROR on error:
341
+ * - AVERROR_EINVAL: Invalid parameters
342
+ * - AVERROR_ENOMEM: Memory allocation failure
343
+ *
344
+ * @example
345
+ * ```typescript
346
+ * import { FFmpegError, Rational } from 'node-av';
347
+ * import { AV_PIX_FMT_YUV420P } from 'node-av/constants';
348
+ *
349
+ * // Configure video buffer source
350
+ * const ret = bufferSrc.buffersrcParametersSet({
351
+ * width: 1920,
352
+ * height: 1080,
353
+ * format: AV_PIX_FMT_YUV420P,
354
+ * timeBase: { num: 1, den: 25 },
355
+ * frameRate: { num: 25, den: 1 }
356
+ * });
357
+ * FFmpegError.throwIfError(ret, 'buffersrcParametersSet');
358
+ *
359
+ * @example
360
+ * ```typescript
361
+ * import { FFmpegError } from 'node-av';
362
+ * import { AV_SAMPLE_FMT_FLTP } from 'node-av/constants';
363
+ *
364
+ * // Configure audio buffer source
365
+ * const ret = bufferSrc.buffersrcParametersSet({
366
+ * format: AV_SAMPLE_FMT_FLTP,
367
+ * sampleRate: 44100,
368
+ * channelLayout: AV_CHANNEL_LAYOUT_STEREO
369
+ * });
370
+ * FFmpegError.throwIfError(ret, 'buffersrcParametersSet');
371
+ * ```
372
+ */
373
+ buffersrcParametersSet(params: {
374
+ width?: number;
375
+ height?: number;
376
+ format?: AVPixelFormat | AVSampleFormat;
377
+ timeBase?: IRational;
378
+ frameRate?: IRational;
379
+ sampleAspectRatio?: IRational;
380
+ hwFramesCtx?: HardwareFramesContext | null;
381
+ sampleRate?: number;
382
+ channelLayout?: bigint;
383
+ colorRange?: AVColorRange;
384
+ colorSpace?: AVColorSpace;
385
+ alphaMode?: number;
386
+ }): number;
387
+ /**
388
+ * Get a frame from a buffer sink filter.
389
+ *
390
+ * Retrieves a filtered frame from the filter graph through a buffer sink.
391
+ * Only valid for buffer sink filters.
392
+ *
393
+ * Direct mapping to av_buffersink_get_frame().
394
+ *
395
+ * @param frame - Frame to receive filtered data
396
+ *
397
+ * @returns 0 on success, negative AVERROR on error:
398
+ * - AVERROR_EAGAIN: No frame available yet
399
+ * - AVERROR_EOF: No more frames will be produced
400
+ * - AVERROR_EINVAL: Not a buffer sink filter
401
+ *
402
+ * @example
403
+ * ```typescript
404
+ * import { FFmpegError, Frame } from 'node-av';
405
+ * import { AVERROR_EAGAIN, AVERROR_EOF } from 'node-av/constants';
406
+ *
407
+ * const frame = new Frame();
408
+ * frame.alloc();
409
+ *
410
+ * const ret = await bufferSink.buffersinkGetFrame(frame);
411
+ * if (ret === AVERROR_EAGAIN) {
412
+ * // No frame available yet
413
+ * } else if (ret === AVERROR_EOF) {
414
+ * // End of stream
415
+ * } else {
416
+ * FFmpegError.throwIfError(ret, 'buffersinkGetFrame');
417
+ * // Process filtered frame
418
+ * }
419
+ * ```
420
+ *
421
+ * @see {@link buffersrcAddFrame} To send frames for filtering
422
+ */
423
+ buffersinkGetFrame(frame: Frame): Promise<number>;
424
+ /**
425
+ * Get frame from buffer sink filter synchronously.
426
+ * Synchronous version of buffersinkGetFrame.
427
+ *
428
+ * Retrieves a filtered frame from a buffer sink filter.
429
+ * Only valid for buffer sink filters (buffersink, abuffersink).
430
+ *
431
+ * Direct mapping to av_buffersink_get_frame().
432
+ *
433
+ * @param frame - Frame to receive filtered data
434
+ *
435
+ * @returns 0 on success, negative AVERROR on error:
436
+ * - AVERROR_EAGAIN: Need more input
437
+ * - AVERROR_EOF: No more frames available
438
+ * - AVERROR_EINVAL: Invalid parameters
439
+ *
440
+ * @example
441
+ * ```typescript
442
+ * import { Frame, FFmpegError } from 'node-av';
443
+ * import { AVERROR_EAGAIN, AVERROR_EOF } from 'node-av/constants';
444
+ *
445
+ * // Get filtered frame
446
+ * const filtered = new Frame();
447
+ * const ret = bufferSink.buffersinkGetFrameSync(filtered);
448
+ *
449
+ * if (ret === 0) {
450
+ * // Process filtered frame
451
+ * console.log(`Got filtered frame with ${filtered.nbSamples} samples`);
452
+ * filtered.unref();
453
+ * } else if (ret === AVERROR_EAGAIN) {
454
+ * // Need more input frames
455
+ * } else if (ret === AVERROR_EOF) {
456
+ * // No more frames
457
+ * } else {
458
+ * FFmpegError.throwIfError(ret, 'buffersinkGetFrameSync');
459
+ * }
460
+ * ```
461
+ *
462
+ * @see {@link buffersinkGetFrame} For async version
463
+ */
464
+ buffersinkGetFrameSync(frame: Frame): number;
465
+ /**
466
+ * Get time base from buffer sink.
467
+ *
468
+ * Returns the time base of frames from a buffer sink filter.
469
+ * Only valid for buffer sink filters.
470
+ *
471
+ * Direct mapping to av_buffersink_get_time_base().
472
+ *
473
+ * @returns Time base as Rational
474
+ *
475
+ * @example
476
+ * ```typescript
477
+ * const timeBase = bufferSink.buffersinkGetTimeBase();
478
+ * console.log(`Time base: ${timeBase.num}/${timeBase.den}`);
479
+ * ```
480
+ */
481
+ buffersinkGetTimeBase(): Rational;
482
+ /**
483
+ * Get pixel/sample format from buffer sink.
484
+ *
485
+ * Returns the format of frames from a buffer sink filter.
486
+ * Only valid for buffer sink filters.
487
+ *
488
+ * Direct mapping to av_buffersink_get_format().
489
+ *
490
+ * @returns Pixel format for video, sample format for audio
491
+ *
492
+ * @example
493
+ * ```typescript
494
+ * import { AV_PIX_FMT_YUV420P } from 'node-av/constants';
495
+ *
496
+ * const format = bufferSink.buffersinkGetFormat();
497
+ * if (format === AV_PIX_FMT_YUV420P) {
498
+ * console.log('Output is YUV420P');
499
+ * }
500
+ * ```
501
+ */
502
+ buffersinkGetFormat(): AVPixelFormat | AVSampleFormat;
503
+ /**
504
+ * Get frame width from buffer sink.
505
+ *
506
+ * Returns the width of video frames from a buffer sink filter.
507
+ * Only valid for video buffer sink filters.
508
+ *
509
+ * Direct mapping to av_buffersink_get_w().
510
+ *
511
+ * @returns Frame width in pixels
512
+ *
513
+ * @example
514
+ * ```typescript
515
+ * const width = bufferSink.buffersinkGetWidth();
516
+ * console.log(`Output width: ${width}px`);
517
+ * ```
518
+ */
519
+ buffersinkGetWidth(): number;
520
+ /**
521
+ * Get frame height from buffer sink.
522
+ *
523
+ * Returns the height of video frames from a buffer sink filter.
524
+ * Only valid for video buffer sink filters.
525
+ *
526
+ * Direct mapping to av_buffersink_get_h().
527
+ *
528
+ * @returns Frame height in pixels
529
+ *
530
+ * @example
531
+ * ```typescript
532
+ * const height = bufferSink.buffersinkGetHeight();
533
+ * console.log(`Output height: ${height}px`);
534
+ * ```
535
+ */
536
+ buffersinkGetHeight(): number;
537
+ /**
538
+ * Get sample aspect ratio from buffer sink.
539
+ *
540
+ * Returns the pixel aspect ratio of video frames from a buffer sink filter.
541
+ * Only valid for video buffer sink filters.
542
+ *
543
+ * Direct mapping to av_buffersink_get_sample_aspect_ratio().
544
+ *
545
+ * @returns Sample aspect ratio as Rational
546
+ *
547
+ * @example
548
+ * ```typescript
549
+ * const sar = bufferSink.buffersinkGetSampleAspectRatio();
550
+ * console.log(`SAR: ${sar.num}:${sar.den}`);
551
+ * ```
552
+ */
553
+ buffersinkGetSampleAspectRatio(): Rational;
554
+ /**
555
+ * Get frame rate from buffer sink.
556
+ *
557
+ * Returns the frame rate of video from a buffer sink filter.
558
+ * Only valid for video buffer sink filters.
559
+ *
560
+ * Direct mapping to av_buffersink_get_frame_rate().
561
+ *
562
+ * @returns Frame rate as Rational
563
+ *
564
+ * @example
565
+ * ```typescript
566
+ * const frameRate = bufferSink.buffersinkGetFrameRate();
567
+ * console.log(`Frame rate: ${frameRate.num}/${frameRate.den} fps`);
568
+ * ```
569
+ */
570
+ buffersinkGetFrameRate(): Rational;
571
+ /**
572
+ * Get sample rate from buffer sink.
573
+ *
574
+ * Returns the sample rate of audio from a buffer sink filter.
575
+ * Only valid for audio buffer sink filters.
576
+ *
577
+ * Direct mapping to av_buffersink_get_sample_rate().
578
+ *
579
+ * @returns Sample rate in Hz
580
+ *
581
+ * @example
582
+ * ```typescript
583
+ * const sampleRate = bufferSink.buffersinkGetSampleRate();
584
+ * console.log(`Sample rate: ${sampleRate} Hz`);
585
+ * ```
586
+ */
587
+ buffersinkGetSampleRate(): number;
588
+ /**
589
+ * Get channel layout from buffer sink.
590
+ *
591
+ * Returns the channel layout of audio from a buffer sink filter.
592
+ * Only valid for audio buffer sink filters.
593
+ *
594
+ * Direct mapping to av_buffersink_get_channel_layout().
595
+ *
596
+ * @returns Channel layout configuration
597
+ *
598
+ * @example
599
+ * ```typescript
600
+ * const layout = bufferSink.buffersinkGetChannelLayout();
601
+ * console.log(`Channels: ${layout.nbChannels}`);
602
+ * ```
603
+ */
604
+ buffersinkGetChannelLayout(): ChannelLayout;
605
+ /**
606
+ * Get color space from buffer sink.
607
+ *
608
+ * Returns the color space of video from a buffer sink filter.
609
+ * Only valid for video buffer sink filters.
610
+ *
611
+ * Direct mapping to av_buffersink_get_colorspace().
612
+ *
613
+ * @returns Color space
614
+ *
615
+ * @example
616
+ * ```typescript
617
+ * const colorSpace = bufferSink.buffersinkGetColorspace();
618
+ * console.log(`Color space: ${colorSpace}`);
619
+ * ```
620
+ */
621
+ buffersinkGetColorspace(): AVColorSpace;
622
+ /**
623
+ * Get color range from buffer sink.
624
+ *
625
+ * Returns the color range of video from a buffer sink filter.
626
+ * Only valid for video buffer sink filters.
627
+ *
628
+ * Direct mapping to av_buffersink_get_color_range().
629
+ *
630
+ * @returns Color range
631
+ *
632
+ * @example
633
+ * ```typescript
634
+ * const colorRange = bufferSink.buffersinkGetColorRange();
635
+ * console.log(`Color range: ${colorRange}`);
636
+ * ```
637
+ */
638
+ buffersinkGetColorRange(): AVColorRange;
639
+ /**
640
+ * Free the filter context.
641
+ *
642
+ * Releases all resources associated with the filter context.
643
+ * The context becomes invalid after calling this.
644
+ *
645
+ * Direct mapping to avfilter_free().
646
+ *
647
+ * @example
648
+ * ```typescript
649
+ * context.free();
650
+ * // Context is now invalid
651
+ * ```
652
+ *
653
+ * @see {@link Symbol.dispose} For automatic cleanup
654
+ */
655
+ free(): void;
656
+ /**
657
+ * Check if filter is a source.
658
+ *
659
+ * Source filters generate frames without input.
660
+ *
661
+ * @returns True if filter has no inputs
662
+ *
663
+ * @example
664
+ * ```typescript
665
+ * if (context.isSource()) {
666
+ * console.log('This is a source filter');
667
+ * }
668
+ * ```
669
+ *
670
+ * @see {@link isSink} To check for sink filters
671
+ */
672
+ isSource(): boolean;
673
+ /**
674
+ * Check if filter is a sink.
675
+ *
676
+ * Sink filters consume frames without output.
677
+ *
678
+ * @returns True if filter has no outputs
679
+ *
680
+ * @example
681
+ * ```typescript
682
+ * if (context.isSink()) {
683
+ * console.log('This is a sink filter');
684
+ * }
685
+ * ```
686
+ *
687
+ * @see {@link isSource} To check for source filters
688
+ */
689
+ isSink(): boolean;
690
+ /**
691
+ * Get the underlying native FilterContext object.
692
+ *
693
+ * @returns The native FilterContext binding object
694
+ *
695
+ * @internal
696
+ */
697
+ getNative(): NativeFilterContext;
698
+ /**
699
+ * Dispose of the filter context.
700
+ *
701
+ * Implements the Disposable interface for automatic cleanup.
702
+ * Equivalent to calling free().
703
+ *
704
+ * @example
705
+ * ```typescript
706
+ * {
707
+ * using context = graph.createFilter(filter, 'test');
708
+ * context.initStr('640:480');
709
+ * // Use context...
710
+ * } // Automatically freed when leaving scope
711
+ * ```
712
+ */
713
+ [Symbol.dispose](): void;
714
+ }