node-av 1.0.3 → 1.2.0
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.
- package/README.md +56 -41
- package/dist/api/bitstream-filter.d.ts +180 -123
- package/dist/api/bitstream-filter.js +182 -126
- package/dist/api/bitstream-filter.js.map +1 -1
- package/dist/api/decoder.d.ts +286 -130
- package/dist/api/decoder.js +321 -159
- package/dist/api/decoder.js.map +1 -1
- package/dist/api/encoder.d.ts +254 -158
- package/dist/api/encoder.js +326 -298
- package/dist/api/encoder.js.map +1 -1
- package/dist/api/filter-presets.d.ts +912 -0
- package/dist/api/filter-presets.js +1407 -0
- package/dist/api/filter-presets.js.map +1 -0
- package/dist/api/filter.d.ts +280 -284
- package/dist/api/filter.js +435 -509
- package/dist/api/filter.js.map +1 -1
- package/dist/api/hardware.d.ts +226 -159
- package/dist/api/hardware.js +405 -287
- package/dist/api/hardware.js.map +1 -1
- package/dist/api/index.d.ts +3 -2
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/io-stream.d.ts +65 -61
- package/dist/api/io-stream.js +45 -47
- package/dist/api/io-stream.js.map +1 -1
- package/dist/api/media-input.d.ts +244 -141
- package/dist/api/media-input.js +207 -104
- package/dist/api/media-input.js.map +1 -1
- package/dist/api/media-output.d.ts +206 -128
- package/dist/api/media-output.js +212 -129
- package/dist/api/media-output.js.map +1 -1
- package/dist/api/pipeline.d.ts +168 -38
- package/dist/api/pipeline.js +238 -14
- package/dist/api/pipeline.js.map +1 -1
- package/dist/api/types.d.ts +22 -182
- package/dist/api/utilities/audio-sample.d.ts +1 -1
- package/dist/api/utilities/image.d.ts +1 -1
- package/dist/api/utilities/media-type.d.ts +1 -1
- package/dist/api/utilities/pixel-format.d.ts +1 -1
- package/dist/api/utilities/sample-format.d.ts +1 -1
- package/dist/api/utilities/timestamp.d.ts +1 -1
- package/dist/api/utils.d.ts +1 -2
- package/dist/api/utils.js +9 -0
- package/dist/api/utils.js.map +1 -1
- package/dist/{lib → constants}/channel-layouts.d.ts +1 -1
- package/dist/constants/channel-layouts.js.map +1 -0
- package/dist/{lib → constants}/constants.d.ts +19 -4
- package/dist/{lib → constants}/constants.js +15 -1
- package/dist/constants/constants.js.map +1 -0
- package/dist/constants/decoders.d.ts +609 -0
- package/dist/constants/decoders.js +617 -0
- package/dist/constants/decoders.js.map +1 -0
- package/dist/constants/encoders.d.ts +285 -0
- package/dist/constants/encoders.js +298 -0
- package/dist/constants/encoders.js.map +1 -0
- package/dist/constants/index.d.ts +4 -0
- package/dist/constants/index.js +5 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/audio-fifo.d.ts +128 -171
- package/dist/lib/audio-fifo.js +130 -173
- package/dist/lib/audio-fifo.js.map +1 -1
- package/dist/lib/binding.d.ts +7 -5
- package/dist/lib/binding.js +5 -0
- package/dist/lib/binding.js.map +1 -1
- package/dist/lib/bitstream-filter-context.d.ts +139 -184
- package/dist/lib/bitstream-filter-context.js +139 -188
- package/dist/lib/bitstream-filter-context.js.map +1 -1
- package/dist/lib/bitstream-filter.d.ts +69 -55
- package/dist/lib/bitstream-filter.js +68 -54
- package/dist/lib/bitstream-filter.js.map +1 -1
- package/dist/lib/codec-context.d.ts +317 -381
- package/dist/lib/codec-context.js +316 -381
- package/dist/lib/codec-context.js.map +1 -1
- package/dist/lib/codec-parameters.d.ts +161 -171
- package/dist/lib/codec-parameters.js +162 -172
- package/dist/lib/codec-parameters.js.map +1 -1
- package/dist/lib/codec-parser.d.ts +92 -105
- package/dist/lib/codec-parser.js +92 -103
- package/dist/lib/codec-parser.js.map +1 -1
- package/dist/lib/codec.d.ts +328 -217
- package/dist/lib/codec.js +392 -218
- package/dist/lib/codec.js.map +1 -1
- package/dist/lib/dictionary.d.ts +150 -204
- package/dist/lib/dictionary.js +159 -213
- package/dist/lib/dictionary.js.map +1 -1
- package/dist/lib/error.d.ts +97 -131
- package/dist/lib/error.js +98 -128
- package/dist/lib/error.js.map +1 -1
- package/dist/lib/filter-context.d.ts +317 -194
- package/dist/lib/filter-context.js +335 -200
- package/dist/lib/filter-context.js.map +1 -1
- package/dist/lib/filter-graph.d.ts +252 -293
- package/dist/lib/filter-graph.js +253 -294
- package/dist/lib/filter-graph.js.map +1 -1
- package/dist/lib/filter-inout.d.ts +87 -95
- package/dist/lib/filter-inout.js +87 -95
- package/dist/lib/filter-inout.js.map +1 -1
- package/dist/lib/filter.d.ts +93 -111
- package/dist/lib/filter.js +94 -112
- package/dist/lib/filter.js.map +1 -1
- package/dist/lib/format-context.d.ts +321 -429
- package/dist/lib/format-context.js +314 -386
- package/dist/lib/format-context.js.map +1 -1
- package/dist/lib/frame.d.ts +263 -406
- package/dist/lib/frame.js +263 -408
- package/dist/lib/frame.js.map +1 -1
- package/dist/lib/hardware-device-context.d.ts +150 -204
- package/dist/lib/hardware-device-context.js +149 -203
- package/dist/lib/hardware-device-context.js.map +1 -1
- package/dist/lib/hardware-frames-context.d.ts +171 -181
- package/dist/lib/hardware-frames-context.js +171 -181
- package/dist/lib/hardware-frames-context.js.map +1 -1
- package/dist/lib/index.d.ts +2 -3
- package/dist/lib/index.js +2 -5
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/input-format.d.ts +90 -118
- package/dist/lib/input-format.js +89 -117
- package/dist/lib/input-format.js.map +1 -1
- package/dist/lib/io-context.d.ts +210 -242
- package/dist/lib/io-context.js +221 -253
- package/dist/lib/io-context.js.map +1 -1
- package/dist/lib/log.d.ts +86 -120
- package/dist/lib/log.js +85 -122
- package/dist/lib/log.js.map +1 -1
- package/dist/lib/native-types.d.ts +127 -112
- package/dist/lib/native-types.js +9 -0
- package/dist/lib/native-types.js.map +1 -1
- package/dist/lib/option.d.ts +285 -242
- package/dist/lib/option.js +310 -250
- package/dist/lib/option.js.map +1 -1
- package/dist/lib/output-format.d.ts +78 -102
- package/dist/lib/output-format.js +77 -101
- package/dist/lib/output-format.js.map +1 -1
- package/dist/lib/packet.d.ts +173 -241
- package/dist/lib/packet.js +172 -241
- package/dist/lib/packet.js.map +1 -1
- package/dist/lib/rational.d.ts +0 -2
- package/dist/lib/rational.js +0 -2
- package/dist/lib/rational.js.map +1 -1
- package/dist/lib/software-resample-context.d.ts +242 -326
- package/dist/lib/software-resample-context.js +242 -326
- package/dist/lib/software-resample-context.js.map +1 -1
- package/dist/lib/software-scale-context.d.ts +130 -174
- package/dist/lib/software-scale-context.js +132 -176
- package/dist/lib/software-scale-context.js.map +1 -1
- package/dist/lib/stream.d.ts +88 -198
- package/dist/lib/stream.js +87 -197
- package/dist/lib/stream.js.map +1 -1
- package/dist/lib/types.d.ts +1 -1
- package/dist/lib/utilities.d.ts +372 -181
- package/dist/lib/utilities.js +373 -182
- package/dist/lib/utilities.js.map +1 -1
- package/install/check.js +0 -1
- package/package.json +32 -24
- package/release_notes.md +43 -13
- package/CHANGELOG.md +0 -8
- package/dist/lib/channel-layouts.js.map +0 -1
- package/dist/lib/constants.js.map +0 -1
- /package/dist/{lib → constants}/channel-layouts.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-graph.js","sourceRoot":"","sources":["../../src/lib/filter-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C
|
|
1
|
+
{"version":3,"file":"filter-graph.js","sourceRoot":"","sources":["../../src/lib/filter-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,91 +1,69 @@
|
|
|
1
1
|
import { FilterContext } from './filter-context.js';
|
|
2
2
|
import type { NativeFilterInOut, NativeWrapper } from './native-types.js';
|
|
3
3
|
/**
|
|
4
|
-
* Filter input/output
|
|
4
|
+
* Filter input/output linked list structure for filter graph parsing.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
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.
|
|
9
10
|
*
|
|
10
11
|
* Direct mapping to FFmpeg's AVFilterInOut.
|
|
11
12
|
*
|
|
12
13
|
* @example
|
|
13
14
|
* ```typescript
|
|
14
|
-
* import { FilterInOut,
|
|
15
|
+
* import { FilterInOut, FilterContext, FFmpegError } from 'node-av';
|
|
15
16
|
*
|
|
16
|
-
* // Create
|
|
17
|
-
* const inputs =
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* inputs.padIdx = 0;
|
|
17
|
+
* // Create a linked list of filter inputs/outputs
|
|
18
|
+
* const inputs = FilterInOut.createList([
|
|
19
|
+
* { name: 'in', filterCtx: bufferSrc, padIdx: 0 },
|
|
20
|
+
* { name: 'overlay', filterCtx: overlay, padIdx: 1 }
|
|
21
|
+
* ]);
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* outputs.filterCtx = bufferSinkCtx;
|
|
27
|
-
* outputs.padIdx = 0;
|
|
23
|
+
* // Parse filter graph with labeled connections
|
|
24
|
+
* const ret = graph.parse(filterString, inputs, outputs);
|
|
25
|
+
* FFmpegError.throwIfError(ret, 'parse');
|
|
28
26
|
*
|
|
29
|
-
* //
|
|
30
|
-
* const
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* FFmpegError.throwIfError(ret, 'parsePtr');
|
|
36
|
-
*
|
|
37
|
-
* // Clean up
|
|
38
|
-
* inputs.free();
|
|
39
|
-
* outputs.free();
|
|
27
|
+
* // Manual creation and linking
|
|
28
|
+
* const inout = new FilterInOut();
|
|
29
|
+
* inout.alloc();
|
|
30
|
+
* inout.name = 'input';
|
|
31
|
+
* inout.filterCtx = sourceFilter;
|
|
32
|
+
* inout.padIdx = 0;
|
|
40
33
|
* ```
|
|
34
|
+
*
|
|
35
|
+
* @see [AVFilterInOut](https://ffmpeg.org/doxygen/trunk/structAVFilterInOut.html) - FFmpeg Doxygen
|
|
36
|
+
* @see {@link FilterGraph} For parsing filter descriptions
|
|
37
|
+
* @see {@link FilterContext} For filter instances
|
|
41
38
|
*/
|
|
42
39
|
export declare class FilterInOut implements Disposable, NativeWrapper<NativeFilterInOut> {
|
|
43
40
|
private native;
|
|
44
|
-
/**
|
|
45
|
-
* Create a new FilterInOut instance.
|
|
46
|
-
*
|
|
47
|
-
* The structure is uninitialized - you must call alloc() before use.
|
|
48
|
-
* No FFmpeg resources are allocated until alloc() is called.
|
|
49
|
-
*
|
|
50
|
-
* Direct wrapper around AVFilterInOut.
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
* ```typescript
|
|
54
|
-
* import { FilterInOut } from 'node-av';
|
|
55
|
-
*
|
|
56
|
-
* const inout = new FilterInOut();
|
|
57
|
-
* inout.alloc();
|
|
58
|
-
* // Structure is now ready for use
|
|
59
|
-
* ```
|
|
60
|
-
*/
|
|
61
41
|
constructor();
|
|
62
42
|
/**
|
|
63
|
-
* Create a linked list of
|
|
64
|
-
*
|
|
65
|
-
* Helper method to create a chain of inputs or outputs.
|
|
66
|
-
* Useful for complex filter graphs with multiple I/O points.
|
|
43
|
+
* Create a linked list of filter inputs/outputs.
|
|
67
44
|
*
|
|
68
|
-
*
|
|
45
|
+
* Convenience method to build a linked list structure from an array
|
|
46
|
+
* of filter specifications. Each item becomes a node in the list.
|
|
69
47
|
*
|
|
70
|
-
* @
|
|
48
|
+
* @param items - Array of filter input/output specifications
|
|
49
|
+
* @returns Head of the linked list, or null if items is empty
|
|
71
50
|
*
|
|
72
51
|
* @example
|
|
73
52
|
* ```typescript
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* // Create multiple inputs
|
|
53
|
+
* // Create inputs for a filter graph
|
|
77
54
|
* const inputs = FilterInOut.createList([
|
|
78
|
-
* { name: 'video_in', filterCtx:
|
|
79
|
-
* { name: 'audio_in', filterCtx:
|
|
55
|
+
* { name: 'video_in', filterCtx: videoBuffer, padIdx: 0 },
|
|
56
|
+
* { name: 'audio_in', filterCtx: audioBuffer, padIdx: 0 }
|
|
80
57
|
* ]);
|
|
81
58
|
*
|
|
82
|
-
* //
|
|
83
|
-
* const
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* inputs?.free();
|
|
59
|
+
* // Create outputs
|
|
60
|
+
* const outputs = FilterInOut.createList([
|
|
61
|
+
* { name: 'video_out', filterCtx: videoSink, padIdx: 0 },
|
|
62
|
+
* { name: 'audio_out', filterCtx: audioSink, padIdx: 0 }
|
|
63
|
+
* ]);
|
|
88
64
|
* ```
|
|
65
|
+
*
|
|
66
|
+
* @see {@link alloc} For manual node creation
|
|
89
67
|
*/
|
|
90
68
|
static createList(items: {
|
|
91
69
|
name: string;
|
|
@@ -93,97 +71,110 @@ export declare class FilterInOut implements Disposable, NativeWrapper<NativeFilt
|
|
|
93
71
|
padIdx: number;
|
|
94
72
|
}[]): FilterInOut | null;
|
|
95
73
|
/**
|
|
96
|
-
*
|
|
74
|
+
* Label name for this filter pad.
|
|
97
75
|
*
|
|
98
|
-
*
|
|
76
|
+
* Used to reference this connection point in filter graph strings.
|
|
77
|
+
* For example, "[in]" or "[video_out]".
|
|
99
78
|
*
|
|
100
|
-
*
|
|
79
|
+
* Direct mapping to AVFilterInOut->name.
|
|
101
80
|
*/
|
|
102
81
|
get name(): string | null;
|
|
103
82
|
set name(value: string | null);
|
|
104
83
|
/**
|
|
105
|
-
*
|
|
84
|
+
* Filter context this pad belongs to.
|
|
106
85
|
*
|
|
107
|
-
*
|
|
86
|
+
* Reference to the filter instance containing this pad.
|
|
108
87
|
*
|
|
109
|
-
*
|
|
88
|
+
* Direct mapping to AVFilterInOut->filter_ctx.
|
|
110
89
|
*/
|
|
111
90
|
get filterCtx(): FilterContext | null;
|
|
112
91
|
set filterCtx(value: FilterContext | null);
|
|
113
92
|
/**
|
|
114
|
-
* Pad index.
|
|
93
|
+
* Pad index within the filter.
|
|
115
94
|
*
|
|
116
|
-
*
|
|
95
|
+
* Index of the input or output pad in the filter context.
|
|
96
|
+
* 0 for the first pad, 1 for the second, etc.
|
|
117
97
|
*
|
|
118
|
-
*
|
|
98
|
+
* Direct mapping to AVFilterInOut->pad_idx.
|
|
119
99
|
*/
|
|
120
100
|
get padIdx(): number;
|
|
121
101
|
set padIdx(value: number);
|
|
122
102
|
/**
|
|
123
|
-
* Next
|
|
103
|
+
* Next node in the linked list.
|
|
124
104
|
*
|
|
125
|
-
*
|
|
105
|
+
* Reference to the next FilterInOut in the chain, or null for the last node.
|
|
126
106
|
*
|
|
127
|
-
*
|
|
107
|
+
* Direct mapping to AVFilterInOut->next.
|
|
128
108
|
*/
|
|
129
109
|
get next(): FilterInOut | null;
|
|
130
110
|
set next(value: FilterInOut | null);
|
|
131
111
|
/**
|
|
132
|
-
* Allocate
|
|
112
|
+
* Allocate a FilterInOut structure.
|
|
133
113
|
*
|
|
134
|
-
* Allocates the structure
|
|
135
|
-
*
|
|
114
|
+
* Allocates memory for the structure. Must be called before using
|
|
115
|
+
* a manually created instance.
|
|
136
116
|
*
|
|
137
|
-
* Direct mapping to avfilter_inout_alloc()
|
|
117
|
+
* Direct mapping to avfilter_inout_alloc().
|
|
138
118
|
*
|
|
139
|
-
* @throws {Error}
|
|
119
|
+
* @throws {Error} If allocation fails (ENOMEM)
|
|
140
120
|
*
|
|
141
121
|
* @example
|
|
142
122
|
* ```typescript
|
|
143
|
-
* import { FilterInOut } from 'node-av';
|
|
144
|
-
*
|
|
145
123
|
* const inout = new FilterInOut();
|
|
146
124
|
* inout.alloc();
|
|
147
|
-
*
|
|
125
|
+
* inout.name = 'input';
|
|
126
|
+
* inout.filterCtx = bufferSource;
|
|
127
|
+
* inout.padIdx = 0;
|
|
148
128
|
* ```
|
|
149
129
|
*
|
|
150
|
-
* @see {@link free} To
|
|
130
|
+
* @see {@link free} To deallocate
|
|
131
|
+
* @see {@link createList} For automatic allocation
|
|
151
132
|
*/
|
|
152
133
|
alloc(): void;
|
|
153
134
|
/**
|
|
154
135
|
* Free the FilterInOut structure.
|
|
155
136
|
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
137
|
+
* Deallocates the structure and breaks the chain if part of a linked list.
|
|
138
|
+
* Only frees this node, not the entire list.
|
|
158
139
|
*
|
|
159
|
-
* Direct mapping to avfilter_inout_free()
|
|
140
|
+
* Direct mapping to avfilter_inout_free().
|
|
160
141
|
*
|
|
161
142
|
* @example
|
|
162
143
|
* ```typescript
|
|
163
144
|
* inout.free();
|
|
164
|
-
* //
|
|
145
|
+
* // Structure is now invalid
|
|
165
146
|
* ```
|
|
147
|
+
*
|
|
148
|
+
* @see {@link alloc} To allocate
|
|
149
|
+
* @see {@link Symbol.dispose} For automatic cleanup
|
|
166
150
|
*/
|
|
167
151
|
free(): void;
|
|
168
152
|
/**
|
|
169
|
-
* Count
|
|
153
|
+
* Count nodes in the linked list.
|
|
170
154
|
*
|
|
171
|
-
*
|
|
155
|
+
* Counts the total number of nodes starting from this node
|
|
156
|
+
* and following the next pointers.
|
|
172
157
|
*
|
|
173
|
-
* @returns Number of
|
|
158
|
+
* @returns Number of nodes in the list (including this one)
|
|
174
159
|
*
|
|
175
160
|
* @example
|
|
176
161
|
* ```typescript
|
|
177
|
-
* const
|
|
178
|
-
*
|
|
162
|
+
* const list = FilterInOut.createList([
|
|
163
|
+
* { name: 'in1', filterCtx: filter1, padIdx: 0 },
|
|
164
|
+
* { name: 'in2', filterCtx: filter2, padIdx: 0 },
|
|
165
|
+
* { name: 'in3', filterCtx: filter3, padIdx: 0 }
|
|
166
|
+
* ]);
|
|
167
|
+
*
|
|
168
|
+
* console.log(`List has ${list.count()} nodes`); // 3
|
|
179
169
|
* ```
|
|
180
170
|
*/
|
|
181
171
|
count(): number;
|
|
182
172
|
/**
|
|
183
|
-
* Get the native
|
|
173
|
+
* Get the underlying native FilterInOut object.
|
|
174
|
+
*
|
|
175
|
+
* @returns The native FilterInOut binding object
|
|
184
176
|
*
|
|
185
|
-
* @internal
|
|
186
|
-
* @returns The underlying native FilterInOut object
|
|
177
|
+
* @internal
|
|
187
178
|
*/
|
|
188
179
|
getNative(): NativeFilterInOut;
|
|
189
180
|
/**
|
|
@@ -197,7 +188,8 @@ export declare class FilterInOut implements Disposable, NativeWrapper<NativeFilt
|
|
|
197
188
|
* {
|
|
198
189
|
* using inout = new FilterInOut();
|
|
199
190
|
* inout.alloc();
|
|
200
|
-
*
|
|
191
|
+
* inout.name = 'test';
|
|
192
|
+
* // Use inout...
|
|
201
193
|
* } // Automatically freed when leaving scope
|
|
202
194
|
* ```
|
|
203
195
|
*/
|
package/dist/lib/filter-inout.js
CHANGED
|
@@ -1,93 +1,71 @@
|
|
|
1
1
|
import { bindings } from './binding.js';
|
|
2
2
|
import { FilterContext } from './filter-context.js';
|
|
3
3
|
/**
|
|
4
|
-
* Filter input/output
|
|
4
|
+
* Filter input/output linked list structure for filter graph parsing.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
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.
|
|
9
10
|
*
|
|
10
11
|
* Direct mapping to FFmpeg's AVFilterInOut.
|
|
11
12
|
*
|
|
12
13
|
* @example
|
|
13
14
|
* ```typescript
|
|
14
|
-
* import { FilterInOut,
|
|
15
|
+
* import { FilterInOut, FilterContext, FFmpegError } from 'node-av';
|
|
15
16
|
*
|
|
16
|
-
* // Create
|
|
17
|
-
* const inputs =
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* inputs.padIdx = 0;
|
|
17
|
+
* // Create a linked list of filter inputs/outputs
|
|
18
|
+
* const inputs = FilterInOut.createList([
|
|
19
|
+
* { name: 'in', filterCtx: bufferSrc, padIdx: 0 },
|
|
20
|
+
* { name: 'overlay', filterCtx: overlay, padIdx: 1 }
|
|
21
|
+
* ]);
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* outputs.filterCtx = bufferSinkCtx;
|
|
27
|
-
* outputs.padIdx = 0;
|
|
23
|
+
* // Parse filter graph with labeled connections
|
|
24
|
+
* const ret = graph.parse(filterString, inputs, outputs);
|
|
25
|
+
* FFmpegError.throwIfError(ret, 'parse');
|
|
28
26
|
*
|
|
29
|
-
* //
|
|
30
|
-
* const
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* FFmpegError.throwIfError(ret, 'parsePtr');
|
|
36
|
-
*
|
|
37
|
-
* // Clean up
|
|
38
|
-
* inputs.free();
|
|
39
|
-
* outputs.free();
|
|
27
|
+
* // Manual creation and linking
|
|
28
|
+
* const inout = new FilterInOut();
|
|
29
|
+
* inout.alloc();
|
|
30
|
+
* inout.name = 'input';
|
|
31
|
+
* inout.filterCtx = sourceFilter;
|
|
32
|
+
* inout.padIdx = 0;
|
|
40
33
|
* ```
|
|
34
|
+
*
|
|
35
|
+
* @see [AVFilterInOut](https://ffmpeg.org/doxygen/trunk/structAVFilterInOut.html) - FFmpeg Doxygen
|
|
36
|
+
* @see {@link FilterGraph} For parsing filter descriptions
|
|
37
|
+
* @see {@link FilterContext} For filter instances
|
|
41
38
|
*/
|
|
42
39
|
export class FilterInOut {
|
|
43
40
|
native;
|
|
44
|
-
/**
|
|
45
|
-
* Create a new FilterInOut instance.
|
|
46
|
-
*
|
|
47
|
-
* The structure is uninitialized - you must call alloc() before use.
|
|
48
|
-
* No FFmpeg resources are allocated until alloc() is called.
|
|
49
|
-
*
|
|
50
|
-
* Direct wrapper around AVFilterInOut.
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
* ```typescript
|
|
54
|
-
* import { FilterInOut } from 'node-av';
|
|
55
|
-
*
|
|
56
|
-
* const inout = new FilterInOut();
|
|
57
|
-
* inout.alloc();
|
|
58
|
-
* // Structure is now ready for use
|
|
59
|
-
* ```
|
|
60
|
-
*/
|
|
61
41
|
constructor() {
|
|
62
42
|
this.native = new bindings.FilterInOut();
|
|
63
43
|
}
|
|
64
44
|
/**
|
|
65
|
-
* Create a linked list of
|
|
66
|
-
*
|
|
67
|
-
* Helper method to create a chain of inputs or outputs.
|
|
68
|
-
* Useful for complex filter graphs with multiple I/O points.
|
|
45
|
+
* Create a linked list of filter inputs/outputs.
|
|
69
46
|
*
|
|
70
|
-
*
|
|
47
|
+
* Convenience method to build a linked list structure from an array
|
|
48
|
+
* of filter specifications. Each item becomes a node in the list.
|
|
71
49
|
*
|
|
72
|
-
* @
|
|
50
|
+
* @param items - Array of filter input/output specifications
|
|
51
|
+
* @returns Head of the linked list, or null if items is empty
|
|
73
52
|
*
|
|
74
53
|
* @example
|
|
75
54
|
* ```typescript
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* // Create multiple inputs
|
|
55
|
+
* // Create inputs for a filter graph
|
|
79
56
|
* const inputs = FilterInOut.createList([
|
|
80
|
-
* { name: 'video_in', filterCtx:
|
|
81
|
-
* { name: 'audio_in', filterCtx:
|
|
57
|
+
* { name: 'video_in', filterCtx: videoBuffer, padIdx: 0 },
|
|
58
|
+
* { name: 'audio_in', filterCtx: audioBuffer, padIdx: 0 }
|
|
82
59
|
* ]);
|
|
83
60
|
*
|
|
84
|
-
* //
|
|
85
|
-
* const
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* inputs?.free();
|
|
61
|
+
* // Create outputs
|
|
62
|
+
* const outputs = FilterInOut.createList([
|
|
63
|
+
* { name: 'video_out', filterCtx: videoSink, padIdx: 0 },
|
|
64
|
+
* { name: 'audio_out', filterCtx: audioSink, padIdx: 0 }
|
|
65
|
+
* ]);
|
|
90
66
|
* ```
|
|
67
|
+
*
|
|
68
|
+
* @see {@link alloc} For manual node creation
|
|
91
69
|
*/
|
|
92
70
|
static createList(items) {
|
|
93
71
|
if (items.length === 0)
|
|
@@ -112,11 +90,12 @@ export class FilterInOut {
|
|
|
112
90
|
return head;
|
|
113
91
|
}
|
|
114
92
|
/**
|
|
115
|
-
*
|
|
93
|
+
* Label name for this filter pad.
|
|
116
94
|
*
|
|
117
|
-
*
|
|
95
|
+
* Used to reference this connection point in filter graph strings.
|
|
96
|
+
* For example, "[in]" or "[video_out]".
|
|
118
97
|
*
|
|
119
|
-
*
|
|
98
|
+
* Direct mapping to AVFilterInOut->name.
|
|
120
99
|
*/
|
|
121
100
|
get name() {
|
|
122
101
|
return this.native.name;
|
|
@@ -125,11 +104,11 @@ export class FilterInOut {
|
|
|
125
104
|
this.native.name = value;
|
|
126
105
|
}
|
|
127
106
|
/**
|
|
128
|
-
*
|
|
107
|
+
* Filter context this pad belongs to.
|
|
129
108
|
*
|
|
130
|
-
*
|
|
109
|
+
* Reference to the filter instance containing this pad.
|
|
131
110
|
*
|
|
132
|
-
*
|
|
111
|
+
* Direct mapping to AVFilterInOut->filter_ctx.
|
|
133
112
|
*/
|
|
134
113
|
get filterCtx() {
|
|
135
114
|
const native = this.native.filterCtx;
|
|
@@ -139,11 +118,12 @@ export class FilterInOut {
|
|
|
139
118
|
this.native.filterCtx = value ? value.getNative() : null;
|
|
140
119
|
}
|
|
141
120
|
/**
|
|
142
|
-
* Pad index.
|
|
121
|
+
* Pad index within the filter.
|
|
143
122
|
*
|
|
144
|
-
*
|
|
123
|
+
* Index of the input or output pad in the filter context.
|
|
124
|
+
* 0 for the first pad, 1 for the second, etc.
|
|
145
125
|
*
|
|
146
|
-
*
|
|
126
|
+
* Direct mapping to AVFilterInOut->pad_idx.
|
|
147
127
|
*/
|
|
148
128
|
get padIdx() {
|
|
149
129
|
return this.native.padIdx;
|
|
@@ -152,11 +132,11 @@ export class FilterInOut {
|
|
|
152
132
|
this.native.padIdx = value;
|
|
153
133
|
}
|
|
154
134
|
/**
|
|
155
|
-
* Next
|
|
135
|
+
* Next node in the linked list.
|
|
156
136
|
*
|
|
157
|
-
*
|
|
137
|
+
* Reference to the next FilterInOut in the chain, or null for the last node.
|
|
158
138
|
*
|
|
159
|
-
*
|
|
139
|
+
* Direct mapping to AVFilterInOut->next.
|
|
160
140
|
*/
|
|
161
141
|
get next() {
|
|
162
142
|
const native = this.native.next;
|
|
@@ -171,25 +151,26 @@ export class FilterInOut {
|
|
|
171
151
|
this.native.next = value ? value.getNative() : null;
|
|
172
152
|
}
|
|
173
153
|
/**
|
|
174
|
-
* Allocate
|
|
154
|
+
* Allocate a FilterInOut structure.
|
|
175
155
|
*
|
|
176
|
-
* Allocates the structure
|
|
177
|
-
*
|
|
156
|
+
* Allocates memory for the structure. Must be called before using
|
|
157
|
+
* a manually created instance.
|
|
178
158
|
*
|
|
179
|
-
* Direct mapping to avfilter_inout_alloc()
|
|
159
|
+
* Direct mapping to avfilter_inout_alloc().
|
|
180
160
|
*
|
|
181
|
-
* @throws {Error}
|
|
161
|
+
* @throws {Error} If allocation fails (ENOMEM)
|
|
182
162
|
*
|
|
183
163
|
* @example
|
|
184
164
|
* ```typescript
|
|
185
|
-
* import { FilterInOut } from 'node-av';
|
|
186
|
-
*
|
|
187
165
|
* const inout = new FilterInOut();
|
|
188
166
|
* inout.alloc();
|
|
189
|
-
*
|
|
167
|
+
* inout.name = 'input';
|
|
168
|
+
* inout.filterCtx = bufferSource;
|
|
169
|
+
* inout.padIdx = 0;
|
|
190
170
|
* ```
|
|
191
171
|
*
|
|
192
|
-
* @see {@link free} To
|
|
172
|
+
* @see {@link free} To deallocate
|
|
173
|
+
* @see {@link createList} For automatic allocation
|
|
193
174
|
*/
|
|
194
175
|
alloc() {
|
|
195
176
|
this.native.alloc();
|
|
@@ -197,31 +178,40 @@ export class FilterInOut {
|
|
|
197
178
|
/**
|
|
198
179
|
* Free the FilterInOut structure.
|
|
199
180
|
*
|
|
200
|
-
*
|
|
201
|
-
*
|
|
181
|
+
* Deallocates the structure and breaks the chain if part of a linked list.
|
|
182
|
+
* Only frees this node, not the entire list.
|
|
202
183
|
*
|
|
203
|
-
* Direct mapping to avfilter_inout_free()
|
|
184
|
+
* Direct mapping to avfilter_inout_free().
|
|
204
185
|
*
|
|
205
186
|
* @example
|
|
206
187
|
* ```typescript
|
|
207
188
|
* inout.free();
|
|
208
|
-
* //
|
|
189
|
+
* // Structure is now invalid
|
|
209
190
|
* ```
|
|
191
|
+
*
|
|
192
|
+
* @see {@link alloc} To allocate
|
|
193
|
+
* @see {@link Symbol.dispose} For automatic cleanup
|
|
210
194
|
*/
|
|
211
195
|
free() {
|
|
212
196
|
this.native.free();
|
|
213
197
|
}
|
|
214
198
|
/**
|
|
215
|
-
* Count
|
|
199
|
+
* Count nodes in the linked list.
|
|
216
200
|
*
|
|
217
|
-
*
|
|
201
|
+
* Counts the total number of nodes starting from this node
|
|
202
|
+
* and following the next pointers.
|
|
218
203
|
*
|
|
219
|
-
* @returns Number of
|
|
204
|
+
* @returns Number of nodes in the list (including this one)
|
|
220
205
|
*
|
|
221
206
|
* @example
|
|
222
207
|
* ```typescript
|
|
223
|
-
* const
|
|
224
|
-
*
|
|
208
|
+
* const list = FilterInOut.createList([
|
|
209
|
+
* { name: 'in1', filterCtx: filter1, padIdx: 0 },
|
|
210
|
+
* { name: 'in2', filterCtx: filter2, padIdx: 0 },
|
|
211
|
+
* { name: 'in3', filterCtx: filter3, padIdx: 0 }
|
|
212
|
+
* ]);
|
|
213
|
+
*
|
|
214
|
+
* console.log(`List has ${list.count()} nodes`); // 3
|
|
225
215
|
* ```
|
|
226
216
|
*/
|
|
227
217
|
count() {
|
|
@@ -234,10 +224,11 @@ export class FilterInOut {
|
|
|
234
224
|
return count;
|
|
235
225
|
}
|
|
236
226
|
/**
|
|
237
|
-
* Get the native
|
|
227
|
+
* Get the underlying native FilterInOut object.
|
|
228
|
+
*
|
|
229
|
+
* @returns The native FilterInOut binding object
|
|
238
230
|
*
|
|
239
|
-
* @internal
|
|
240
|
-
* @returns The underlying native FilterInOut object
|
|
231
|
+
* @internal
|
|
241
232
|
*/
|
|
242
233
|
getNative() {
|
|
243
234
|
return this.native;
|
|
@@ -253,7 +244,8 @@ export class FilterInOut {
|
|
|
253
244
|
* {
|
|
254
245
|
* using inout = new FilterInOut();
|
|
255
246
|
* inout.alloc();
|
|
256
|
-
*
|
|
247
|
+
* inout.name = 'test';
|
|
248
|
+
* // Use inout...
|
|
257
249
|
* } // Automatically freed when leaving scope
|
|
258
250
|
* ```
|
|
259
251
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-inout.js","sourceRoot":"","sources":["../../src/lib/filter-inout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD
|
|
1
|
+
{"version":3,"file":"filter-inout.js","sourceRoot":"","sources":["../../src/lib/filter-inout.ts"],"names":[],"mappings":"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"}
|