node-av 5.2.4-beta.1 → 6.0.0-beta.10
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 +15 -1
- package/dist/api/bitstream-filter.d.ts +110 -87
- package/dist/api/bitstream-filter.js +162 -102
- package/dist/api/bitstream-filter.js.map +1 -1
- package/dist/api/decoder.d.ts +87 -8
- package/dist/api/decoder.js +179 -4
- package/dist/api/decoder.js.map +1 -1
- package/dist/api/demuxer.d.ts +30 -24
- package/dist/api/demuxer.js +4 -5
- package/dist/api/demuxer.js.map +1 -1
- package/dist/api/device.js.map +1 -1
- package/dist/api/encoder-pool.d.ts +220 -0
- package/dist/api/encoder-pool.js +285 -0
- package/dist/api/encoder-pool.js.map +1 -0
- package/dist/api/encoder.d.ts +133 -7
- package/dist/api/encoder.js +392 -68
- package/dist/api/encoder.js.map +1 -1
- package/dist/api/filter-complex.d.ts +2 -1
- package/dist/api/filter-complex.js +11 -7
- package/dist/api/filter-complex.js.map +1 -1
- package/dist/api/filter-presets.d.ts +130 -654
- package/dist/api/filter-presets.js +180 -858
- package/dist/api/filter-presets.js.map +1 -1
- package/dist/api/filter.js +13 -8
- package/dist/api/filter.js.map +1 -1
- package/dist/api/fmp4-stream.js +1 -1
- package/dist/api/fmp4-stream.js.map +1 -1
- package/dist/api/index.d.ts +6 -6
- package/dist/api/index.js +8 -8
- package/dist/api/index.js.map +1 -1
- package/dist/api/muxer.d.ts +43 -15
- package/dist/api/muxer.js +79 -27
- package/dist/api/muxer.js.map +1 -1
- package/dist/api/pipeline.d.ts +50 -0
- package/dist/api/pipeline.js +138 -22
- package/dist/api/pipeline.js.map +1 -1
- package/dist/api/probe.d.ts +128 -0
- package/dist/api/probe.js +227 -0
- package/dist/api/probe.js.map +1 -0
- package/dist/api/rtp-stream.js +1 -1
- package/dist/api/rtp-stream.js.map +1 -1
- package/dist/api/scaler.d.ts +431 -0
- package/dist/api/scaler.js +620 -0
- package/dist/api/scaler.js.map +1 -0
- package/dist/api/utilities/async-queue.d.ts +27 -1
- package/dist/api/utilities/async-queue.js +38 -1
- package/dist/api/utilities/async-queue.js.map +1 -1
- package/dist/api/utilities/electron-shared-texture.d.ts +41 -1
- package/dist/api/utilities/electron-shared-texture.js +41 -4
- package/dist/api/utilities/electron-shared-texture.js.map +1 -1
- package/dist/api/utilities/index.d.ts +1 -1
- package/dist/api/utilities/index.js.map +1 -1
- package/dist/api/webrtc-stream.d.ts +0 -1
- package/dist/api/webrtc-stream.js +0 -1
- package/dist/api/webrtc-stream.js.map +1 -1
- package/dist/constants/bsf-options.d.ts +333 -0
- package/dist/constants/bsf-options.js +7 -0
- package/dist/constants/bsf-options.js.map +1 -0
- package/dist/constants/constants.d.ts +109 -0
- package/dist/constants/constants.js +110 -0
- package/dist/constants/constants.js.map +1 -1
- package/dist/constants/decoders.d.ts +636 -618
- package/dist/constants/decoders.js +1 -3
- package/dist/constants/decoders.js.map +1 -1
- package/dist/constants/encoders.d.ts +300 -282
- package/dist/constants/encoders.js +0 -2
- package/dist/constants/encoders.js.map +1 -1
- package/dist/constants/filter-options.d.ts +10915 -0
- package/dist/constants/filter-options.js +7 -0
- package/dist/constants/filter-options.js.map +1 -0
- package/dist/constants/format-options.d.ts +3056 -0
- package/dist/constants/format-options.js +7 -0
- package/dist/constants/format-options.js.map +1 -0
- package/dist/constants/formats.d.ts +18 -0
- package/dist/constants/formats.js +7 -0
- package/dist/constants/formats.js.map +1 -0
- package/dist/constants/index.d.ts +5 -0
- package/dist/constants/options.d.ts +4073 -0
- package/dist/constants/options.js +7 -0
- package/dist/constants/options.js.map +1 -0
- package/dist/lib/binding.d.ts +4 -1
- package/dist/lib/binding.js.map +1 -1
- package/dist/lib/codec.d.ts +36 -5
- package/dist/lib/codec.js +37 -4
- package/dist/lib/codec.js.map +1 -1
- package/dist/lib/dictionary.d.ts +1 -1
- package/dist/lib/dictionary.js.map +1 -1
- package/dist/lib/error.d.ts +69 -0
- package/dist/lib/error.js +92 -0
- package/dist/lib/error.js.map +1 -1
- package/dist/lib/frame.d.ts +46 -3
- package/dist/lib/frame.js +50 -3
- package/dist/lib/frame.js.map +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/native-types.d.ts +68 -0
- package/dist/lib/packet.d.ts +17 -3
- package/dist/lib/packet.js +19 -3
- package/dist/lib/packet.js.map +1 -1
- package/dist/lib/utilities.d.ts +21 -0
- package/dist/lib/utilities.js +23 -0
- package/dist/lib/utilities.js.map +1 -1
- package/dist/webrtc/index.d.ts +3 -0
- package/dist/webrtc/index.js +7 -0
- package/dist/webrtc/index.js.map +1 -0
- package/package.json +33 -22
|
@@ -55,7 +55,9 @@ import { BitStreamFilterContext } from '../lib/bitstream-filter-context.js';
|
|
|
55
55
|
import { BitStreamFilter } from '../lib/bitstream-filter.js';
|
|
56
56
|
import { FFmpegError } from '../lib/error.js';
|
|
57
57
|
import { Packet } from '../lib/packet.js';
|
|
58
|
+
import { Stream } from '../lib/stream.js';
|
|
58
59
|
import { PACKET_THREAD_QUEUE_SIZE } from './constants.js';
|
|
60
|
+
import { Encoder } from './encoder.js';
|
|
59
61
|
import { Muxer } from './muxer.js';
|
|
60
62
|
import { AsyncQueue } from './utilities/async-queue.js';
|
|
61
63
|
import { Scheduler, SchedulerControl } from './utilities/scheduler.js';
|
|
@@ -101,7 +103,8 @@ import { Scheduler, SchedulerControl } from './utilities/scheduler.js';
|
|
|
101
103
|
export class BitStreamFilterAPI {
|
|
102
104
|
ctx;
|
|
103
105
|
bsf;
|
|
104
|
-
|
|
106
|
+
source;
|
|
107
|
+
initialized = false;
|
|
105
108
|
packet;
|
|
106
109
|
isClosed = false;
|
|
107
110
|
// Worker pattern for push-based processing
|
|
@@ -116,73 +119,66 @@ export class BitStreamFilterAPI {
|
|
|
116
119
|
*
|
|
117
120
|
* @param ctx - Filter context
|
|
118
121
|
*
|
|
119
|
-
* @param
|
|
122
|
+
* @param source - Input source for lazy parameter resolution
|
|
120
123
|
*
|
|
121
124
|
* @internal
|
|
122
125
|
*/
|
|
123
|
-
constructor(bsf, ctx,
|
|
126
|
+
constructor(bsf, ctx, source) {
|
|
124
127
|
this.bsf = bsf;
|
|
125
128
|
this.ctx = ctx;
|
|
126
|
-
this.
|
|
129
|
+
this.source = source;
|
|
127
130
|
this.packet = new Packet();
|
|
128
131
|
this.packet.alloc();
|
|
129
|
-
this.inputQueue = new AsyncQueue(PACKET_THREAD_QUEUE_SIZE);
|
|
130
|
-
this.outputQueue = new AsyncQueue(PACKET_THREAD_QUEUE_SIZE);
|
|
132
|
+
this.inputQueue = new AsyncQueue(PACKET_THREAD_QUEUE_SIZE, (p) => p.free());
|
|
133
|
+
this.outputQueue = new AsyncQueue(PACKET_THREAD_QUEUE_SIZE, (p) => p.free());
|
|
131
134
|
}
|
|
132
135
|
/**
|
|
133
|
-
* Create a bitstream filter
|
|
136
|
+
* Create a bitstream filter.
|
|
134
137
|
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
138
|
+
* The input source provides the codec parameters the filter is configured with.
|
|
139
|
+
* Pass a {@link Stream} to filter its packets directly (stream copy), or an
|
|
140
|
+
* {@link Encoder} to filter that encoder's output (transcode) - parameters are
|
|
141
|
+
* derived from the encoder once it is open. Another {@link BitStreamFilterAPI}
|
|
142
|
+
* may be passed to chain filters.
|
|
143
|
+
*
|
|
144
|
+
* Initialization is lazy: filter options are validated immediately, but the
|
|
145
|
+
* input parameters are bound and the filter is initialized on the first packet,
|
|
146
|
+
* so an `Encoder` source (opened lazily on its first frame) is ready in time.
|
|
137
147
|
*
|
|
138
148
|
* Direct mapping to av_bsf_get_by_name() and av_bsf_alloc().
|
|
139
149
|
*
|
|
140
150
|
* @param filterName - Name of the bitstream filter
|
|
141
151
|
*
|
|
142
|
-
* @param
|
|
152
|
+
* @param source - Input source: a `Stream` (copy), `Encoder` (transcode), or upstream filter (chain)
|
|
143
153
|
*
|
|
144
154
|
* @param filterOptions - Optional filter-specific options
|
|
145
155
|
*
|
|
146
156
|
* @returns Configured bitstream filter
|
|
147
157
|
*
|
|
148
|
-
* @throws {
|
|
149
|
-
*
|
|
150
|
-
* @throws {FFmpegError} If allocation or initialization fails
|
|
158
|
+
* @throws {FFmpegError} If the filter is not found, allocation fails, or an option is invalid
|
|
151
159
|
*
|
|
152
160
|
* @example
|
|
153
161
|
* ```typescript
|
|
154
|
-
* // H.264 MP4 to Annex B conversion
|
|
162
|
+
* // Stream copy: H.264 MP4 to Annex B conversion
|
|
155
163
|
* const filter = BitStreamFilterAPI.create('h264_mp4toannexb', videoStream);
|
|
156
164
|
* ```
|
|
157
165
|
*
|
|
158
166
|
* @example
|
|
159
167
|
* ```typescript
|
|
160
|
-
* //
|
|
161
|
-
* const filter = BitStreamFilterAPI.create('
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
* @example
|
|
165
|
-
* ```typescript
|
|
166
|
-
* // Remove AUDs from H.264 stream
|
|
167
|
-
* const filter = BitStreamFilterAPI.create('h264_metadata', stream, {
|
|
168
|
-
* options: { aud: 'remove' }
|
|
169
|
-
* });
|
|
170
|
-
* ```
|
|
171
|
-
*
|
|
172
|
-
* @example
|
|
173
|
-
* ```typescript
|
|
174
|
-
* // Set H.264 level
|
|
175
|
-
* const filter = BitStreamFilterAPI.create('h264_metadata', stream, {
|
|
176
|
-
* options: { level: 51 }
|
|
168
|
+
* // Transcode: derive parameters from the encoder's output
|
|
169
|
+
* const filter = BitStreamFilterAPI.create('h264_metadata', encoder, {
|
|
170
|
+
* options: { aud: 'remove', level: '4.1' },
|
|
177
171
|
* });
|
|
172
|
+
* pipeline(input, decoder, encoder, filter, output);
|
|
178
173
|
* ```
|
|
179
174
|
*
|
|
180
175
|
* @see {@link BitStreamFilter.getByName} For filter discovery
|
|
181
176
|
* @see {@link BitstreamFilterOptions} For available options
|
|
182
177
|
*/
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
178
|
+
// eslint-disable-next-line space-before-function-paren
|
|
179
|
+
static create(filterName, source, filterOptions) {
|
|
180
|
+
if (!source) {
|
|
181
|
+
throw new Error('A source (Stream, Encoder, or BitStreamFilterAPI) is required');
|
|
186
182
|
}
|
|
187
183
|
// Find the bitstream filter
|
|
188
184
|
const filter = BitStreamFilter.getByName(filterName);
|
|
@@ -194,24 +190,15 @@ export class BitStreamFilterAPI {
|
|
|
194
190
|
const allocRet = ctx.alloc(filter);
|
|
195
191
|
FFmpegError.throwIfError(allocRet, 'Failed to allocate bitstream filter context');
|
|
196
192
|
try {
|
|
197
|
-
//
|
|
198
|
-
|
|
199
|
-
throw new Error('Failed to get input codec parameters from filter context');
|
|
200
|
-
}
|
|
201
|
-
stream.codecpar.copy(ctx.inputCodecParameters);
|
|
202
|
-
// Set time base
|
|
203
|
-
ctx.inputTimeBase = stream.timeBase;
|
|
204
|
-
// Apply filter-specific options before init
|
|
193
|
+
// Apply (and validate) filter-specific options now; input parameters and
|
|
194
|
+
// init() are deferred to ensureInitialized() on the first packet.
|
|
205
195
|
if (filterOptions?.options) {
|
|
206
196
|
for (const [key, value] of Object.entries(filterOptions.options)) {
|
|
207
197
|
const ret = ctx.setOption(key, value);
|
|
208
198
|
FFmpegError.throwIfError(ret, `Failed to set bitstream filter option '${key}'`);
|
|
209
199
|
}
|
|
210
200
|
}
|
|
211
|
-
|
|
212
|
-
const initRet = ctx.init();
|
|
213
|
-
FFmpegError.throwIfError(initRet, 'Failed to initialize bitstream filter');
|
|
214
|
-
const bsfApi = new BitStreamFilterAPI(filter, ctx, stream);
|
|
201
|
+
const bsfApi = new BitStreamFilterAPI(filter, ctx, source);
|
|
215
202
|
if (filterOptions?.signal) {
|
|
216
203
|
filterOptions.signal.throwIfAborted();
|
|
217
204
|
bsfApi.signal = filterOptions.signal;
|
|
@@ -277,6 +264,45 @@ export class BitStreamFilterAPI {
|
|
|
277
264
|
get isBitstreamFilterOpen() {
|
|
278
265
|
return !this.isClosed;
|
|
279
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* Check if the filter has been initialized.
|
|
269
|
+
*
|
|
270
|
+
* Initialization is lazy and happens on the first processed packet, after
|
|
271
|
+
* which {@link outputCodecParameters} reflect the filter's output.
|
|
272
|
+
*
|
|
273
|
+
* @example
|
|
274
|
+
* ```typescript
|
|
275
|
+
* if (filter.isInitialized) {
|
|
276
|
+
* const params = filter.outputCodecParameters;
|
|
277
|
+
* }
|
|
278
|
+
* ```
|
|
279
|
+
*/
|
|
280
|
+
get isInitialized() {
|
|
281
|
+
return this.initialized;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Get associated stream.
|
|
285
|
+
*
|
|
286
|
+
* Returns the stream this filter was created for. Only available when the
|
|
287
|
+
* filter was created from a {@link Stream}; filters created from an `Encoder`
|
|
288
|
+
* derive their parameters from the encoder's output instead.
|
|
289
|
+
*
|
|
290
|
+
* @returns Associated stream
|
|
291
|
+
*
|
|
292
|
+
* @throws {Error} If the filter was not created from a stream
|
|
293
|
+
*
|
|
294
|
+
* @example
|
|
295
|
+
* ```typescript
|
|
296
|
+
* const stream = filter.getStream();
|
|
297
|
+
* console.log(`Filtering stream ${stream.index}`);
|
|
298
|
+
* ```
|
|
299
|
+
*/
|
|
300
|
+
getStream() {
|
|
301
|
+
if (!(this.source instanceof Stream)) {
|
|
302
|
+
throw new Error('No associated stream: this bitstream filter derives its parameters from an upstream component');
|
|
303
|
+
}
|
|
304
|
+
return this.source;
|
|
305
|
+
}
|
|
280
306
|
/**
|
|
281
307
|
* Send a packet to the filter.
|
|
282
308
|
*
|
|
@@ -334,6 +360,7 @@ export class BitStreamFilterAPI {
|
|
|
334
360
|
if (this.isClosed) {
|
|
335
361
|
return;
|
|
336
362
|
}
|
|
363
|
+
this.ensureInitialized();
|
|
337
364
|
// Send packet to filter (null signals EOF/flush)
|
|
338
365
|
const sendRet = await this.ctx.sendPacket(packet);
|
|
339
366
|
if (sendRet < 0 && sendRet !== AVERROR_EOF && sendRet !== AVERROR_EAGAIN) {
|
|
@@ -397,6 +424,7 @@ export class BitStreamFilterAPI {
|
|
|
397
424
|
if (this.isClosed) {
|
|
398
425
|
return;
|
|
399
426
|
}
|
|
427
|
+
this.ensureInitialized();
|
|
400
428
|
// Send packet to filter (null signals EOF/flush)
|
|
401
429
|
const sendRet = this.ctx.sendPacketSync(packet);
|
|
402
430
|
if (sendRet < 0 && sendRet !== AVERROR_EOF && sendRet !== AVERROR_EAGAIN) {
|
|
@@ -748,7 +776,7 @@ export class BitStreamFilterAPI {
|
|
|
748
776
|
*/
|
|
749
777
|
async flush() {
|
|
750
778
|
this.signal?.throwIfAborted();
|
|
751
|
-
if (this.isClosed) {
|
|
779
|
+
if (this.isClosed || !this.initialized) {
|
|
752
780
|
return;
|
|
753
781
|
}
|
|
754
782
|
// Send EOF
|
|
@@ -791,7 +819,7 @@ export class BitStreamFilterAPI {
|
|
|
791
819
|
* @see {@link flush} For async version
|
|
792
820
|
*/
|
|
793
821
|
flushSync() {
|
|
794
|
-
if (this.isClosed) {
|
|
822
|
+
if (this.isClosed || !this.initialized) {
|
|
795
823
|
return;
|
|
796
824
|
}
|
|
797
825
|
// Send EOF
|
|
@@ -844,7 +872,7 @@ export class BitStreamFilterAPI {
|
|
|
844
872
|
* @see {@link receiveSync} For synchronous version
|
|
845
873
|
*/
|
|
846
874
|
async receive() {
|
|
847
|
-
if (this.isClosed) {
|
|
875
|
+
if (this.isClosed || !this.initialized) {
|
|
848
876
|
return null;
|
|
849
877
|
}
|
|
850
878
|
// Clear previous packet data
|
|
@@ -911,7 +939,7 @@ export class BitStreamFilterAPI {
|
|
|
911
939
|
* @see {@link receive} For async version
|
|
912
940
|
*/
|
|
913
941
|
receiveSync() {
|
|
914
|
-
if (this.isClosed) {
|
|
942
|
+
if (this.isClosed || !this.initialized) {
|
|
915
943
|
return null;
|
|
916
944
|
}
|
|
917
945
|
// Clear previous packet data
|
|
@@ -935,6 +963,42 @@ export class BitStreamFilterAPI {
|
|
|
935
963
|
return null;
|
|
936
964
|
}
|
|
937
965
|
}
|
|
966
|
+
pipeTo(target, streamIndex) {
|
|
967
|
+
if (target instanceof Muxer) {
|
|
968
|
+
// Start worker if not already running
|
|
969
|
+
this.workerPromise ??= this.runWorker();
|
|
970
|
+
// Start pipe task: filter.outputQueue -> output
|
|
971
|
+
this.pipeToPromise = (async () => {
|
|
972
|
+
while (true) {
|
|
973
|
+
const packet = await this.receiveFromQueue();
|
|
974
|
+
if (!packet)
|
|
975
|
+
break;
|
|
976
|
+
await target.writePacket(packet, streamIndex);
|
|
977
|
+
}
|
|
978
|
+
})();
|
|
979
|
+
// Return control without pipeTo (terminal stage)
|
|
980
|
+
return new SchedulerControl(this);
|
|
981
|
+
}
|
|
982
|
+
else {
|
|
983
|
+
// BitStreamFilterAPI
|
|
984
|
+
const t = target;
|
|
985
|
+
// Store reference to next component for flush propagation
|
|
986
|
+
this.nextComponent = t;
|
|
987
|
+
// Start worker if not already running
|
|
988
|
+
this.workerPromise ??= this.runWorker();
|
|
989
|
+
// Start pipe task: filter.outputQueue -> target.inputQueue (via target.send)
|
|
990
|
+
this.pipeToPromise = (async () => {
|
|
991
|
+
while (true) {
|
|
992
|
+
const packet = await this.receiveFromQueue();
|
|
993
|
+
if (!packet)
|
|
994
|
+
break;
|
|
995
|
+
await t.sendToQueue(packet);
|
|
996
|
+
}
|
|
997
|
+
})();
|
|
998
|
+
// Return scheduler for chaining (target is now the last component)
|
|
999
|
+
return new Scheduler(this, t);
|
|
1000
|
+
}
|
|
1001
|
+
}
|
|
938
1002
|
/**
|
|
939
1003
|
* Flush all buffered packets as async generator.
|
|
940
1004
|
*
|
|
@@ -998,22 +1062,6 @@ export class BitStreamFilterAPI {
|
|
|
998
1062
|
yield packet;
|
|
999
1063
|
}
|
|
1000
1064
|
}
|
|
1001
|
-
/**
|
|
1002
|
-
* Get associated stream.
|
|
1003
|
-
*
|
|
1004
|
-
* Returns the stream this filter was created for.
|
|
1005
|
-
*
|
|
1006
|
-
* @returns Associated stream
|
|
1007
|
-
*
|
|
1008
|
-
* @example
|
|
1009
|
-
* ```typescript
|
|
1010
|
-
* const stream = filter.getStream();
|
|
1011
|
-
* console.log(`Filtering stream ${stream.index}`);
|
|
1012
|
-
* ```
|
|
1013
|
-
*/
|
|
1014
|
-
getStream() {
|
|
1015
|
-
return this.stream;
|
|
1016
|
-
}
|
|
1017
1065
|
/**
|
|
1018
1066
|
* Reset filter state.
|
|
1019
1067
|
*
|
|
@@ -1057,6 +1105,9 @@ export class BitStreamFilterAPI {
|
|
|
1057
1105
|
// Close queues
|
|
1058
1106
|
this.inputQueue.close();
|
|
1059
1107
|
this.outputQueue.close();
|
|
1108
|
+
// Free any packets left buffered on an aborted/early-closed pipeline.
|
|
1109
|
+
this.inputQueue.clear();
|
|
1110
|
+
this.outputQueue.clear();
|
|
1060
1111
|
this.packet.free();
|
|
1061
1112
|
this.ctx.free();
|
|
1062
1113
|
}
|
|
@@ -1079,6 +1130,50 @@ export class BitStreamFilterAPI {
|
|
|
1079
1130
|
[Symbol.dispose]() {
|
|
1080
1131
|
this.close();
|
|
1081
1132
|
}
|
|
1133
|
+
/**
|
|
1134
|
+
* Bind input parameters from the source and initialize the filter.
|
|
1135
|
+
*
|
|
1136
|
+
* @internal
|
|
1137
|
+
*/
|
|
1138
|
+
ensureInitialized() {
|
|
1139
|
+
if (this.initialized) {
|
|
1140
|
+
return;
|
|
1141
|
+
}
|
|
1142
|
+
const params = this.ctx.inputCodecParameters;
|
|
1143
|
+
if (!params) {
|
|
1144
|
+
throw new Error('Failed to get input codec parameters from filter context');
|
|
1145
|
+
}
|
|
1146
|
+
const source = this.source;
|
|
1147
|
+
if (source instanceof Stream) {
|
|
1148
|
+
source.codecpar.copy(params);
|
|
1149
|
+
this.ctx.inputTimeBase = source.timeBase;
|
|
1150
|
+
}
|
|
1151
|
+
else if (source instanceof Encoder) {
|
|
1152
|
+
const codecContext = source.getCodecContext();
|
|
1153
|
+
if (!codecContext) {
|
|
1154
|
+
throw new Error('Encoder is not initialized yet; cannot derive bitstream filter parameters.');
|
|
1155
|
+
}
|
|
1156
|
+
const ret = params.fromContext(codecContext);
|
|
1157
|
+
FFmpegError.throwIfError(ret, 'Failed to derive bitstream filter parameters from encoder');
|
|
1158
|
+
this.ctx.inputTimeBase = codecContext.timeBase;
|
|
1159
|
+
}
|
|
1160
|
+
else {
|
|
1161
|
+
// Upstream is another bitstream filter: chain from its output.
|
|
1162
|
+
source.ensureInitialized();
|
|
1163
|
+
const upstream = source.outputCodecParameters;
|
|
1164
|
+
if (!upstream) {
|
|
1165
|
+
throw new Error('Upstream bitstream filter has no output parameters.');
|
|
1166
|
+
}
|
|
1167
|
+
upstream.copy(params);
|
|
1168
|
+
const tb = source.outputTimeBase;
|
|
1169
|
+
if (tb) {
|
|
1170
|
+
this.ctx.inputTimeBase = tb;
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
const initRet = this.ctx.init();
|
|
1174
|
+
FFmpegError.throwIfError(initRet, 'Failed to initialize bitstream filter');
|
|
1175
|
+
this.initialized = true;
|
|
1176
|
+
}
|
|
1082
1177
|
/**
|
|
1083
1178
|
* Send packet to input queue or flush the pipeline.
|
|
1084
1179
|
*
|
|
@@ -1146,6 +1241,7 @@ export class BitStreamFilterAPI {
|
|
|
1146
1241
|
if (this.isClosed) {
|
|
1147
1242
|
break;
|
|
1148
1243
|
}
|
|
1244
|
+
this.ensureInitialized();
|
|
1149
1245
|
// Send packet to filter
|
|
1150
1246
|
const sendRet = await this.ctx.sendPacket(packet);
|
|
1151
1247
|
// Handle EAGAIN
|
|
@@ -1202,41 +1298,5 @@ export class BitStreamFilterAPI {
|
|
|
1202
1298
|
this.outputQueue?.close();
|
|
1203
1299
|
}
|
|
1204
1300
|
}
|
|
1205
|
-
pipeTo(target, streamIndex) {
|
|
1206
|
-
if (target instanceof Muxer) {
|
|
1207
|
-
// Start worker if not already running
|
|
1208
|
-
this.workerPromise ??= this.runWorker();
|
|
1209
|
-
// Start pipe task: filter.outputQueue -> output
|
|
1210
|
-
this.pipeToPromise = (async () => {
|
|
1211
|
-
while (true) {
|
|
1212
|
-
const packet = await this.receiveFromQueue();
|
|
1213
|
-
if (!packet)
|
|
1214
|
-
break;
|
|
1215
|
-
await target.writePacket(packet, streamIndex);
|
|
1216
|
-
}
|
|
1217
|
-
})();
|
|
1218
|
-
// Return control without pipeTo (terminal stage)
|
|
1219
|
-
return new SchedulerControl(this);
|
|
1220
|
-
}
|
|
1221
|
-
else {
|
|
1222
|
-
// BitStreamFilterAPI
|
|
1223
|
-
const t = target;
|
|
1224
|
-
// Store reference to next component for flush propagation
|
|
1225
|
-
this.nextComponent = t;
|
|
1226
|
-
// Start worker if not already running
|
|
1227
|
-
this.workerPromise ??= this.runWorker();
|
|
1228
|
-
// Start pipe task: filter.outputQueue -> target.inputQueue (via target.send)
|
|
1229
|
-
this.pipeToPromise = (async () => {
|
|
1230
|
-
while (true) {
|
|
1231
|
-
const packet = await this.receiveFromQueue();
|
|
1232
|
-
if (!packet)
|
|
1233
|
-
break;
|
|
1234
|
-
await t.sendToQueue(packet);
|
|
1235
|
-
}
|
|
1236
|
-
})();
|
|
1237
|
-
// Return scheduler for chaining (target is now the last component)
|
|
1238
|
-
return new Scheduler(this, t);
|
|
1239
|
-
}
|
|
1240
|
-
}
|
|
1241
1301
|
}
|
|
1242
1302
|
//# sourceMappingURL=bitstream-filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitstream-filter.js","sourceRoot":"","sources":["../../src/api/bitstream-filter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bitstream-filter.js","sourceRoot":"","sources":["../../src/api/bitstream-filter.ts"],"names":[],"mappings":"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"}
|
package/dist/api/decoder.d.ts
CHANGED
|
@@ -3,16 +3,16 @@ import { Codec } from '../lib/codec.js';
|
|
|
3
3
|
import { Frame } from '../lib/frame.js';
|
|
4
4
|
import { Packet } from '../lib/packet.js';
|
|
5
5
|
import { Scheduler } from './utilities/scheduler.js';
|
|
6
|
-
import type { AVCodecID, AVPixelFormat, AVThreadType, EOFSignal, FFDecoderCodec } from '../constants/index.js';
|
|
6
|
+
import type { AVCodecID, AVPixelFormat, AVSampleFormat, AVThreadType, DecoderOptionsFor, EOFSignal, FFDecoderCodec } from '../constants/index.js';
|
|
7
7
|
import type { Stream } from '../lib/stream.js';
|
|
8
|
-
import type { IRational } from '../lib/types.js';
|
|
8
|
+
import type { ChannelLayout, IRational } from '../lib/types.js';
|
|
9
9
|
import type { Encoder } from './encoder.js';
|
|
10
10
|
import type { FilterAPI } from './filter.js';
|
|
11
11
|
import type { HardwareContext } from './hardware.js';
|
|
12
12
|
/**
|
|
13
13
|
* Options for decoder creation.
|
|
14
14
|
*/
|
|
15
|
-
export interface DecoderOptions {
|
|
15
|
+
export interface DecoderOptions<C = unknown> {
|
|
16
16
|
/**
|
|
17
17
|
* Exit immediately on first decode error.
|
|
18
18
|
*
|
|
@@ -68,6 +68,28 @@ export interface DecoderOptions {
|
|
|
68
68
|
* @default false
|
|
69
69
|
*/
|
|
70
70
|
applyCropping?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Resample decoded audio to a target format (audio only).
|
|
73
|
+
*
|
|
74
|
+
* When set, decoded audio frames are transparently converted to the requested
|
|
75
|
+
* sample rate, sample format, and/or channel layout before they are returned —
|
|
76
|
+
* the audio mirror of `hwaccelOutputFormat`. Any omitted field keeps the
|
|
77
|
+
* decoded value, and conversion is skipped entirely when the source already
|
|
78
|
+
* matches the target. Useful when a capture device delivers a rate you cannot
|
|
79
|
+
* control (e.g. avfoundation ignoring a microphone sample-rate request) and you
|
|
80
|
+
* want every downstream stage to receive the rate you asked for.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* // Guarantee 48 kHz frames regardless of the device's actual rate
|
|
85
|
+
* const decoder = await Decoder.create(stream, { resample: { sampleRate: 48000 } });
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
resample?: {
|
|
89
|
+
sampleRate?: number;
|
|
90
|
+
sampleFormat?: AVSampleFormat;
|
|
91
|
+
channelLayout?: ChannelLayout;
|
|
92
|
+
};
|
|
71
93
|
/**
|
|
72
94
|
* Number of threads to use for decoding.
|
|
73
95
|
*
|
|
@@ -92,10 +114,12 @@ export interface DecoderOptions {
|
|
|
92
114
|
/**
|
|
93
115
|
* Additional codec-specific options.
|
|
94
116
|
*
|
|
95
|
-
* Key-value pairs of FFmpeg
|
|
96
|
-
*
|
|
117
|
+
* Key-value pairs of FFmpeg private codec options, passed directly to the decoder.
|
|
118
|
+
* When the codec is created from a branded constant (e.g. `FF_DECODER_H264_CUVID`),
|
|
119
|
+
* these are strongly typed to that codec's known options (autocomplete + validation);
|
|
120
|
+
* otherwise any string/number/boolean values are accepted.
|
|
97
121
|
*/
|
|
98
|
-
options?:
|
|
122
|
+
options?: DecoderOptionsFor<C>;
|
|
99
123
|
/**
|
|
100
124
|
* AbortSignal for cancellation.
|
|
101
125
|
*
|
|
@@ -158,6 +182,12 @@ export declare class Decoder implements Disposable {
|
|
|
158
182
|
private lastFrameTb;
|
|
159
183
|
private lastFrameSampleRate;
|
|
160
184
|
private lastFilterInRescaleDelta;
|
|
185
|
+
private audioResampler?;
|
|
186
|
+
private resampledFrame?;
|
|
187
|
+
private resampleTarget?;
|
|
188
|
+
private resampleInputLayout?;
|
|
189
|
+
private audioResamplerSetup;
|
|
190
|
+
private audioResamplerDrained;
|
|
161
191
|
private inputQueue;
|
|
162
192
|
private outputQueue;
|
|
163
193
|
private workerPromise;
|
|
@@ -235,7 +265,7 @@ export declare class Decoder implements Disposable {
|
|
|
235
265
|
* @see {@link createSync} For synchronous version
|
|
236
266
|
*/
|
|
237
267
|
static create(stream: Stream, options?: DecoderOptions): Promise<Decoder>;
|
|
238
|
-
static create
|
|
268
|
+
static create<const C extends FFDecoderCodec | AVCodecID | Codec>(stream: Stream, decoderCodec: C, options?: DecoderOptions<C>): Promise<Decoder>;
|
|
239
269
|
/**
|
|
240
270
|
* Create a decoder for a media stream synchronously.
|
|
241
271
|
* Synchronous version of create.
|
|
@@ -292,7 +322,7 @@ export declare class Decoder implements Disposable {
|
|
|
292
322
|
* @see {@link create} For async version
|
|
293
323
|
*/
|
|
294
324
|
static createSync(stream: Stream, options?: DecoderOptions): Decoder;
|
|
295
|
-
static createSync
|
|
325
|
+
static createSync<const C extends FFDecoderCodec | AVCodecID | Codec>(stream: Stream, decoderCodec: C, options?: DecoderOptions<C>): Decoder;
|
|
296
326
|
/**
|
|
297
327
|
* Check if decoder is open.
|
|
298
328
|
*
|
|
@@ -1068,6 +1098,55 @@ export declare class Decoder implements Disposable {
|
|
|
1068
1098
|
* @internal
|
|
1069
1099
|
*/
|
|
1070
1100
|
private processAudioFrame;
|
|
1101
|
+
/**
|
|
1102
|
+
* Lazily configure the audio output resampler from the first decoded frame.
|
|
1103
|
+
*
|
|
1104
|
+
* Reads the source format from the frame, resolves the target from
|
|
1105
|
+
* `options.resample` (omitted fields keep the source value), and builds a
|
|
1106
|
+
* `SoftwareResampleContext` only when something actually differs. Runs once.
|
|
1107
|
+
*
|
|
1108
|
+
* @param frame - First decoded audio frame
|
|
1109
|
+
*
|
|
1110
|
+
* @throws {FFmpegError} If the resampler cannot be configured or initialized
|
|
1111
|
+
*
|
|
1112
|
+
* @internal
|
|
1113
|
+
*/
|
|
1114
|
+
private setupAudioResampler;
|
|
1115
|
+
/**
|
|
1116
|
+
* Lazily allocate the reused resampler output frame.
|
|
1117
|
+
*
|
|
1118
|
+
* @returns The allocated output frame
|
|
1119
|
+
*
|
|
1120
|
+
* @internal
|
|
1121
|
+
*/
|
|
1122
|
+
private getResampleFrame;
|
|
1123
|
+
/**
|
|
1124
|
+
* Resample a decoded audio frame to the target format and clone it for the user.
|
|
1125
|
+
*
|
|
1126
|
+
* `swr_convert_frame` allocates/sizes the output buffer; the sample timestamp
|
|
1127
|
+
* (carried in the frame's own timebase) is preserved, while `nb_samples` and
|
|
1128
|
+
* `sample_rate` reflect the new rate. Returns null when the resampler buffered
|
|
1129
|
+
* the input without emitting samples yet (caller should feed more).
|
|
1130
|
+
*
|
|
1131
|
+
* @param frame - Decoded source audio frame
|
|
1132
|
+
*
|
|
1133
|
+
* @returns Cloned resampled frame owned by the caller, or null if none emitted
|
|
1134
|
+
*
|
|
1135
|
+
* @throws {FFmpegError} If resampling fails
|
|
1136
|
+
*
|
|
1137
|
+
* @internal
|
|
1138
|
+
*/
|
|
1139
|
+
private resampleAudioClone;
|
|
1140
|
+
/**
|
|
1141
|
+
* Drain samples buffered inside the resampler (rate-conversion delay) at EOF.
|
|
1142
|
+
*
|
|
1143
|
+
* @returns Cloned drained frame owned by the caller, or null when empty
|
|
1144
|
+
*
|
|
1145
|
+
* @throws {FFmpegError} If draining fails
|
|
1146
|
+
*
|
|
1147
|
+
* @internal
|
|
1148
|
+
*/
|
|
1149
|
+
private drainResamplerClone;
|
|
1071
1150
|
/**
|
|
1072
1151
|
* Dispose of decoder.
|
|
1073
1152
|
*
|