node-av 2.6.4 → 2.7.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/dist/api/bitstream-filter.d.ts +41 -40
- package/dist/api/bitstream-filter.js +84 -80
- package/dist/api/bitstream-filter.js.map +1 -1
- package/dist/api/data/test_h264.h264 +0 -0
- package/dist/api/data/test_hevc.h265 +0 -0
- package/dist/api/decoder.d.ts +2 -6
- package/dist/api/decoder.js +20 -10
- package/dist/api/decoder.js.map +1 -1
- package/dist/api/encoder.d.ts +2 -10
- package/dist/api/encoder.js +6 -20
- package/dist/api/encoder.js.map +1 -1
- package/dist/api/filter.d.ts +4 -4
- package/dist/api/filter.js +22 -20
- package/dist/api/filter.js.map +1 -1
- package/dist/api/hardware.d.ts +89 -2
- package/dist/api/hardware.js +290 -4
- package/dist/api/hardware.js.map +1 -1
- package/dist/api/media-input.d.ts +23 -3
- package/dist/api/media-input.js +63 -7
- package/dist/api/media-input.js.map +1 -1
- package/dist/api/types.d.ts +9 -0
- package/dist/lib/codec-context.d.ts +10 -0
- package/dist/lib/codec-context.js +14 -0
- package/dist/lib/codec-context.js.map +1 -1
- package/dist/lib/filter-context.d.ts +10 -0
- package/dist/lib/filter-context.js +14 -0
- package/dist/lib/filter-context.js.map +1 -1
- package/dist/lib/native-types.d.ts +2 -0
- package/package.json +18 -17
|
@@ -42,7 +42,7 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
42
42
|
private ctx;
|
|
43
43
|
private filter;
|
|
44
44
|
private stream;
|
|
45
|
-
private
|
|
45
|
+
private isClosed;
|
|
46
46
|
/**
|
|
47
47
|
* @param filter - Bitstream filter instance
|
|
48
48
|
*
|
|
@@ -126,6 +126,17 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
126
126
|
* ```
|
|
127
127
|
*/
|
|
128
128
|
get outputTimeBase(): import("../lib/rational.js").Rational | null;
|
|
129
|
+
/**
|
|
130
|
+
* Check if filter is open.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* if (filter.isBitstreamFilterOpen) {
|
|
135
|
+
* const packet = await filter.process(frame);
|
|
136
|
+
* }
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
get isBitstreamFilterOpen(): boolean;
|
|
129
140
|
/**
|
|
130
141
|
* Process a packet through the filter.
|
|
131
142
|
*
|
|
@@ -137,18 +148,18 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
137
148
|
*
|
|
138
149
|
* @param packet - Packet to filter or null for EOF
|
|
139
150
|
*
|
|
140
|
-
* @returns Array of filtered packets
|
|
141
|
-
*
|
|
142
|
-
* @throws {Error} If filter is disposed
|
|
151
|
+
* @returns Array of filtered packets or null if filter is closed
|
|
143
152
|
*
|
|
144
153
|
* @throws {FFmpegError} If filtering fails
|
|
145
154
|
*
|
|
146
155
|
* @example
|
|
147
156
|
* ```typescript
|
|
148
157
|
* const outputPackets = await filter.process(inputPacket);
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
158
|
+
* if (outputPackets) {
|
|
159
|
+
* for (const packet of outputPackets) {
|
|
160
|
+
* console.log(`Filtered packet: pts=${packet.pts}`);
|
|
161
|
+
* packet.free();
|
|
162
|
+
* }
|
|
152
163
|
* }
|
|
153
164
|
* ```
|
|
154
165
|
*
|
|
@@ -174,18 +185,18 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
174
185
|
*
|
|
175
186
|
* @param packet - Packet to filter or null for EOF
|
|
176
187
|
*
|
|
177
|
-
* @returns Array of filtered packets
|
|
178
|
-
*
|
|
179
|
-
* @throws {Error} If filter is disposed
|
|
188
|
+
* @returns Array of filtered packets or null if filter is closed
|
|
180
189
|
*
|
|
181
190
|
* @throws {FFmpegError} If filtering fails
|
|
182
191
|
*
|
|
183
192
|
* @example
|
|
184
193
|
* ```typescript
|
|
185
194
|
* const outputPackets = filter.processSync(inputPacket);
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
195
|
+
* if (outputPackets) {
|
|
196
|
+
* for (const packet of outputPackets) {
|
|
197
|
+
* console.log(`Filtered packet: pts=${packet.pts}`);
|
|
198
|
+
* packet.free();
|
|
199
|
+
* }
|
|
189
200
|
* }
|
|
190
201
|
* ```
|
|
191
202
|
*
|
|
@@ -209,8 +220,6 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
209
220
|
*
|
|
210
221
|
* @yields {Packet} Filtered packets
|
|
211
222
|
*
|
|
212
|
-
* @throws {Error} If filter is disposed
|
|
213
|
-
*
|
|
214
223
|
* @throws {FFmpegError} If filtering fails
|
|
215
224
|
*
|
|
216
225
|
* @example
|
|
@@ -250,8 +259,6 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
250
259
|
*
|
|
251
260
|
* @yields {Packet} Filtered packets
|
|
252
261
|
*
|
|
253
|
-
* @throws {Error} If filter is disposed
|
|
254
|
-
*
|
|
255
262
|
* @throws {FFmpegError} If filtering fails
|
|
256
263
|
*
|
|
257
264
|
* @example
|
|
@@ -286,16 +293,16 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
286
293
|
*
|
|
287
294
|
* Direct mapping to av_bsf_flush().
|
|
288
295
|
*
|
|
289
|
-
* @returns Array of remaining packets
|
|
290
|
-
*
|
|
291
|
-
* @throws {Error} If filter is disposed
|
|
296
|
+
* @returns Array of remaining packets or null if filter is closed
|
|
292
297
|
*
|
|
293
298
|
* @example
|
|
294
299
|
* ```typescript
|
|
295
300
|
* const remaining = await filter.flush();
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
*
|
|
301
|
+
* if (remaining) {
|
|
302
|
+
* for (const packet of remaining) {
|
|
303
|
+
* await output.writePacket(packet);
|
|
304
|
+
* packet.free();
|
|
305
|
+
* }
|
|
299
306
|
* }
|
|
300
307
|
* ```
|
|
301
308
|
*
|
|
@@ -312,16 +319,16 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
312
319
|
*
|
|
313
320
|
* Direct mapping to av_bsf_flush().
|
|
314
321
|
*
|
|
315
|
-
* @returns Array of remaining packets
|
|
316
|
-
*
|
|
317
|
-
* @throws {Error} If filter is disposed
|
|
322
|
+
* @returns Array of remaining packets or null if filter is closed
|
|
318
323
|
*
|
|
319
324
|
* @example
|
|
320
325
|
* ```typescript
|
|
321
326
|
* const remaining = filter.flushSync();
|
|
322
|
-
*
|
|
323
|
-
*
|
|
324
|
-
*
|
|
327
|
+
* if (remaining) {
|
|
328
|
+
* for (const packet of remaining) {
|
|
329
|
+
* output.writePacketSync(packet);
|
|
330
|
+
* packet.free();
|
|
331
|
+
* }
|
|
325
332
|
* }
|
|
326
333
|
* ```
|
|
327
334
|
*
|
|
@@ -336,8 +343,6 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
336
343
|
*
|
|
337
344
|
* @yields {Packet} Remaining packets
|
|
338
345
|
*
|
|
339
|
-
* @throws {Error} If filter is disposed
|
|
340
|
-
*
|
|
341
346
|
* @example
|
|
342
347
|
* ```typescript
|
|
343
348
|
* for await (const packet of filter.flushPackets()) {
|
|
@@ -358,8 +363,6 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
358
363
|
*
|
|
359
364
|
* @yields {Packet} Remaining packets
|
|
360
365
|
*
|
|
361
|
-
* @throws {Error} If filter is disposed
|
|
362
|
-
*
|
|
363
366
|
* @example
|
|
364
367
|
* ```typescript
|
|
365
368
|
* for (const packet of filter.flushPacketsSync()) {
|
|
@@ -393,8 +396,6 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
393
396
|
*
|
|
394
397
|
* Direct mapping to av_bsf_flush().
|
|
395
398
|
*
|
|
396
|
-
* @throws {Error} If filter is disposed
|
|
397
|
-
*
|
|
398
399
|
* @example
|
|
399
400
|
* ```typescript
|
|
400
401
|
* // Reset for new segment
|
|
@@ -405,19 +406,19 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
405
406
|
*/
|
|
406
407
|
reset(): void;
|
|
407
408
|
/**
|
|
408
|
-
*
|
|
409
|
+
* Close filter and free resources.
|
|
409
410
|
*
|
|
410
|
-
* Releases filter context and marks as
|
|
411
|
+
* Releases filter context and marks as closed.
|
|
411
412
|
* Safe to call multiple times.
|
|
412
413
|
*
|
|
413
414
|
* @example
|
|
414
415
|
* ```typescript
|
|
415
|
-
* filter.
|
|
416
|
+
* filter.close();
|
|
416
417
|
* ```
|
|
417
418
|
*
|
|
418
419
|
* @see {@link Symbol.dispose} For automatic cleanup
|
|
419
420
|
*/
|
|
420
|
-
|
|
421
|
+
close(): void;
|
|
421
422
|
/**
|
|
422
423
|
* Dispose of filter.
|
|
423
424
|
*
|
|
@@ -432,7 +433,7 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
432
433
|
* } // Automatically disposed
|
|
433
434
|
* ```
|
|
434
435
|
*
|
|
435
|
-
* @see {@link
|
|
436
|
+
* @see {@link close} For manual cleanup
|
|
436
437
|
*/
|
|
437
438
|
[Symbol.dispose](): void;
|
|
438
439
|
}
|
|
@@ -42,7 +42,7 @@ export class BitStreamFilterAPI {
|
|
|
42
42
|
ctx;
|
|
43
43
|
filter;
|
|
44
44
|
stream;
|
|
45
|
-
|
|
45
|
+
isClosed = false;
|
|
46
46
|
/**
|
|
47
47
|
* @param filter - Bitstream filter instance
|
|
48
48
|
*
|
|
@@ -167,6 +167,19 @@ export class BitStreamFilterAPI {
|
|
|
167
167
|
get outputTimeBase() {
|
|
168
168
|
return this.ctx.outputTimeBase;
|
|
169
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Check if filter is open.
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```typescript
|
|
175
|
+
* if (filter.isBitstreamFilterOpen) {
|
|
176
|
+
* const packet = await filter.process(frame);
|
|
177
|
+
* }
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
get isBitstreamFilterOpen() {
|
|
181
|
+
return !this.isClosed;
|
|
182
|
+
}
|
|
170
183
|
/**
|
|
171
184
|
* Process a packet through the filter.
|
|
172
185
|
*
|
|
@@ -178,18 +191,18 @@ export class BitStreamFilterAPI {
|
|
|
178
191
|
*
|
|
179
192
|
* @param packet - Packet to filter or null for EOF
|
|
180
193
|
*
|
|
181
|
-
* @returns Array of filtered packets
|
|
182
|
-
*
|
|
183
|
-
* @throws {Error} If filter is disposed
|
|
194
|
+
* @returns Array of filtered packets or null if filter is closed
|
|
184
195
|
*
|
|
185
196
|
* @throws {FFmpegError} If filtering fails
|
|
186
197
|
*
|
|
187
198
|
* @example
|
|
188
199
|
* ```typescript
|
|
189
200
|
* const outputPackets = await filter.process(inputPacket);
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
201
|
+
* if (outputPackets) {
|
|
202
|
+
* for (const packet of outputPackets) {
|
|
203
|
+
* console.log(`Filtered packet: pts=${packet.pts}`);
|
|
204
|
+
* packet.free();
|
|
205
|
+
* }
|
|
193
206
|
* }
|
|
194
207
|
* ```
|
|
195
208
|
*
|
|
@@ -203,8 +216,8 @@ export class BitStreamFilterAPI {
|
|
|
203
216
|
* @see {@link packets} For stream processing
|
|
204
217
|
*/
|
|
205
218
|
async process(packet) {
|
|
206
|
-
if (this.
|
|
207
|
-
|
|
219
|
+
if (this.isClosed) {
|
|
220
|
+
return [];
|
|
208
221
|
}
|
|
209
222
|
const outputPackets = [];
|
|
210
223
|
// Send packet to filter
|
|
@@ -213,7 +226,7 @@ export class BitStreamFilterAPI {
|
|
|
213
226
|
FFmpegError.throwIfError(sendRet, 'Failed to send packet to bitstream filter');
|
|
214
227
|
}
|
|
215
228
|
// Receive all output packets
|
|
216
|
-
while (
|
|
229
|
+
while (!this.isClosed) {
|
|
217
230
|
const outPacket = new Packet();
|
|
218
231
|
outPacket.alloc();
|
|
219
232
|
const recvRet = await this.ctx.receivePacket(outPacket);
|
|
@@ -241,18 +254,18 @@ export class BitStreamFilterAPI {
|
|
|
241
254
|
*
|
|
242
255
|
* @param packet - Packet to filter or null for EOF
|
|
243
256
|
*
|
|
244
|
-
* @returns Array of filtered packets
|
|
245
|
-
*
|
|
246
|
-
* @throws {Error} If filter is disposed
|
|
257
|
+
* @returns Array of filtered packets or null if filter is closed
|
|
247
258
|
*
|
|
248
259
|
* @throws {FFmpegError} If filtering fails
|
|
249
260
|
*
|
|
250
261
|
* @example
|
|
251
262
|
* ```typescript
|
|
252
263
|
* const outputPackets = filter.processSync(inputPacket);
|
|
253
|
-
*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
264
|
+
* if (outputPackets) {
|
|
265
|
+
* for (const packet of outputPackets) {
|
|
266
|
+
* console.log(`Filtered packet: pts=${packet.pts}`);
|
|
267
|
+
* packet.free();
|
|
268
|
+
* }
|
|
256
269
|
* }
|
|
257
270
|
* ```
|
|
258
271
|
*
|
|
@@ -265,8 +278,8 @@ export class BitStreamFilterAPI {
|
|
|
265
278
|
* @see {@link process} For async version
|
|
266
279
|
*/
|
|
267
280
|
processSync(packet) {
|
|
268
|
-
if (this.
|
|
269
|
-
|
|
281
|
+
if (this.isClosed) {
|
|
282
|
+
return [];
|
|
270
283
|
}
|
|
271
284
|
const outputPackets = [];
|
|
272
285
|
// Send packet to filter
|
|
@@ -275,7 +288,7 @@ export class BitStreamFilterAPI {
|
|
|
275
288
|
FFmpegError.throwIfError(sendRet, 'Failed to send packet to bitstream filter');
|
|
276
289
|
}
|
|
277
290
|
// Receive all output packets
|
|
278
|
-
while (
|
|
291
|
+
while (!this.isClosed) {
|
|
279
292
|
const outPacket = new Packet();
|
|
280
293
|
outPacket.alloc();
|
|
281
294
|
const recvRet = this.ctx.receivePacketSync(outPacket);
|
|
@@ -302,8 +315,6 @@ export class BitStreamFilterAPI {
|
|
|
302
315
|
*
|
|
303
316
|
* @yields {Packet} Filtered packets
|
|
304
317
|
*
|
|
305
|
-
* @throws {Error} If filter is disposed
|
|
306
|
-
*
|
|
307
318
|
* @throws {FFmpegError} If filtering fails
|
|
308
319
|
*
|
|
309
320
|
* @example
|
|
@@ -331,21 +342,22 @@ export class BitStreamFilterAPI {
|
|
|
331
342
|
* @see {@link flush} For end-of-stream handling
|
|
332
343
|
*/
|
|
333
344
|
async *packets(packets) {
|
|
334
|
-
if (this.isDisposed) {
|
|
335
|
-
throw new Error('BitStreamFilterAPI is disposed');
|
|
336
|
-
}
|
|
337
345
|
try {
|
|
338
346
|
// Process all input packets
|
|
339
347
|
for await (const packet of packets) {
|
|
340
348
|
const filtered = await this.process(packet);
|
|
341
|
-
|
|
342
|
-
|
|
349
|
+
if (filtered) {
|
|
350
|
+
for (const outPacket of filtered) {
|
|
351
|
+
yield outPacket;
|
|
352
|
+
}
|
|
343
353
|
}
|
|
344
354
|
}
|
|
345
355
|
// Send EOF and get remaining packets
|
|
346
356
|
const remaining = await this.flush();
|
|
347
|
-
|
|
348
|
-
|
|
357
|
+
if (remaining) {
|
|
358
|
+
for (const packet of remaining) {
|
|
359
|
+
yield packet;
|
|
360
|
+
}
|
|
349
361
|
}
|
|
350
362
|
}
|
|
351
363
|
catch (error) {
|
|
@@ -366,8 +378,6 @@ export class BitStreamFilterAPI {
|
|
|
366
378
|
*
|
|
367
379
|
* @yields {Packet} Filtered packets
|
|
368
380
|
*
|
|
369
|
-
* @throws {Error} If filter is disposed
|
|
370
|
-
*
|
|
371
381
|
* @throws {FFmpegError} If filtering fails
|
|
372
382
|
*
|
|
373
383
|
* @example
|
|
@@ -394,21 +404,22 @@ export class BitStreamFilterAPI {
|
|
|
394
404
|
* @see {@link packets} For async version
|
|
395
405
|
*/
|
|
396
406
|
*packetsSync(packets) {
|
|
397
|
-
if (this.isDisposed) {
|
|
398
|
-
throw new Error('BitStreamFilterAPI is disposed');
|
|
399
|
-
}
|
|
400
407
|
try {
|
|
401
408
|
// Process all input packets
|
|
402
409
|
for (const packet of packets) {
|
|
403
410
|
const filtered = this.processSync(packet);
|
|
404
|
-
|
|
405
|
-
|
|
411
|
+
if (filtered) {
|
|
412
|
+
for (const outPacket of filtered) {
|
|
413
|
+
yield outPacket;
|
|
414
|
+
}
|
|
406
415
|
}
|
|
407
416
|
}
|
|
408
417
|
// Send EOF and get remaining packets
|
|
409
418
|
const remaining = this.flushSync();
|
|
410
|
-
|
|
411
|
-
|
|
419
|
+
if (remaining) {
|
|
420
|
+
for (const packet of remaining) {
|
|
421
|
+
yield packet;
|
|
422
|
+
}
|
|
412
423
|
}
|
|
413
424
|
}
|
|
414
425
|
catch (error) {
|
|
@@ -425,16 +436,16 @@ export class BitStreamFilterAPI {
|
|
|
425
436
|
*
|
|
426
437
|
* Direct mapping to av_bsf_flush().
|
|
427
438
|
*
|
|
428
|
-
* @returns Array of remaining packets
|
|
429
|
-
*
|
|
430
|
-
* @throws {Error} If filter is disposed
|
|
439
|
+
* @returns Array of remaining packets or null if filter is closed
|
|
431
440
|
*
|
|
432
441
|
* @example
|
|
433
442
|
* ```typescript
|
|
434
443
|
* const remaining = await filter.flush();
|
|
435
|
-
*
|
|
436
|
-
*
|
|
437
|
-
*
|
|
444
|
+
* if (remaining) {
|
|
445
|
+
* for (const packet of remaining) {
|
|
446
|
+
* await output.writePacket(packet);
|
|
447
|
+
* packet.free();
|
|
448
|
+
* }
|
|
438
449
|
* }
|
|
439
450
|
* ```
|
|
440
451
|
*
|
|
@@ -442,8 +453,8 @@ export class BitStreamFilterAPI {
|
|
|
442
453
|
* @see {@link reset} For state reset only
|
|
443
454
|
*/
|
|
444
455
|
async flush() {
|
|
445
|
-
if (this.
|
|
446
|
-
|
|
456
|
+
if (this.isClosed) {
|
|
457
|
+
return [];
|
|
447
458
|
}
|
|
448
459
|
// Send EOF
|
|
449
460
|
const filtered = await this.process(null);
|
|
@@ -460,24 +471,24 @@ export class BitStreamFilterAPI {
|
|
|
460
471
|
*
|
|
461
472
|
* Direct mapping to av_bsf_flush().
|
|
462
473
|
*
|
|
463
|
-
* @returns Array of remaining packets
|
|
464
|
-
*
|
|
465
|
-
* @throws {Error} If filter is disposed
|
|
474
|
+
* @returns Array of remaining packets or null if filter is closed
|
|
466
475
|
*
|
|
467
476
|
* @example
|
|
468
477
|
* ```typescript
|
|
469
478
|
* const remaining = filter.flushSync();
|
|
470
|
-
*
|
|
471
|
-
*
|
|
472
|
-
*
|
|
479
|
+
* if (remaining) {
|
|
480
|
+
* for (const packet of remaining) {
|
|
481
|
+
* output.writePacketSync(packet);
|
|
482
|
+
* packet.free();
|
|
483
|
+
* }
|
|
473
484
|
* }
|
|
474
485
|
* ```
|
|
475
486
|
*
|
|
476
487
|
* @see {@link flush} For async version
|
|
477
488
|
*/
|
|
478
489
|
flushSync() {
|
|
479
|
-
if (this.
|
|
480
|
-
|
|
490
|
+
if (this.isClosed) {
|
|
491
|
+
return [];
|
|
481
492
|
}
|
|
482
493
|
// Send EOF
|
|
483
494
|
const filtered = this.processSync(null);
|
|
@@ -493,8 +504,6 @@ export class BitStreamFilterAPI {
|
|
|
493
504
|
*
|
|
494
505
|
* @yields {Packet} Remaining packets
|
|
495
506
|
*
|
|
496
|
-
* @throws {Error} If filter is disposed
|
|
497
|
-
*
|
|
498
507
|
* @example
|
|
499
508
|
* ```typescript
|
|
500
509
|
* for await (const packet of filter.flushPackets()) {
|
|
@@ -506,12 +515,11 @@ export class BitStreamFilterAPI {
|
|
|
506
515
|
* @see {@link flush} For array return
|
|
507
516
|
*/
|
|
508
517
|
async *flushPackets() {
|
|
509
|
-
if (this.isDisposed) {
|
|
510
|
-
throw new Error('BitStreamFilterAPI is disposed');
|
|
511
|
-
}
|
|
512
518
|
const remaining = await this.flush();
|
|
513
|
-
|
|
514
|
-
|
|
519
|
+
if (remaining) {
|
|
520
|
+
for (const packet of remaining) {
|
|
521
|
+
yield packet;
|
|
522
|
+
}
|
|
515
523
|
}
|
|
516
524
|
}
|
|
517
525
|
/**
|
|
@@ -523,8 +531,6 @@ export class BitStreamFilterAPI {
|
|
|
523
531
|
*
|
|
524
532
|
* @yields {Packet} Remaining packets
|
|
525
533
|
*
|
|
526
|
-
* @throws {Error} If filter is disposed
|
|
527
|
-
*
|
|
528
534
|
* @example
|
|
529
535
|
* ```typescript
|
|
530
536
|
* for (const packet of filter.flushPacketsSync()) {
|
|
@@ -536,12 +542,11 @@ export class BitStreamFilterAPI {
|
|
|
536
542
|
* @see {@link flushPackets} For async version
|
|
537
543
|
*/
|
|
538
544
|
*flushPacketsSync() {
|
|
539
|
-
if (this.isDisposed) {
|
|
540
|
-
throw new Error('BitStreamFilterAPI is disposed');
|
|
541
|
-
}
|
|
542
545
|
const remaining = this.flushSync();
|
|
543
|
-
|
|
544
|
-
|
|
546
|
+
if (remaining) {
|
|
547
|
+
for (const packet of remaining) {
|
|
548
|
+
yield packet;
|
|
549
|
+
}
|
|
545
550
|
}
|
|
546
551
|
}
|
|
547
552
|
/**
|
|
@@ -568,8 +573,6 @@ export class BitStreamFilterAPI {
|
|
|
568
573
|
*
|
|
569
574
|
* Direct mapping to av_bsf_flush().
|
|
570
575
|
*
|
|
571
|
-
* @throws {Error} If filter is disposed
|
|
572
|
-
*
|
|
573
576
|
* @example
|
|
574
577
|
* ```typescript
|
|
575
578
|
* // Reset for new segment
|
|
@@ -579,29 +582,30 @@ export class BitStreamFilterAPI {
|
|
|
579
582
|
* @see {@link flush} For reset with packet retrieval
|
|
580
583
|
*/
|
|
581
584
|
reset() {
|
|
582
|
-
if (this.
|
|
583
|
-
|
|
585
|
+
if (this.isClosed) {
|
|
586
|
+
return;
|
|
584
587
|
}
|
|
585
588
|
this.ctx.flush();
|
|
586
589
|
}
|
|
587
590
|
/**
|
|
588
|
-
*
|
|
591
|
+
* Close filter and free resources.
|
|
589
592
|
*
|
|
590
|
-
* Releases filter context and marks as
|
|
593
|
+
* Releases filter context and marks as closed.
|
|
591
594
|
* Safe to call multiple times.
|
|
592
595
|
*
|
|
593
596
|
* @example
|
|
594
597
|
* ```typescript
|
|
595
|
-
* filter.
|
|
598
|
+
* filter.close();
|
|
596
599
|
* ```
|
|
597
600
|
*
|
|
598
601
|
* @see {@link Symbol.dispose} For automatic cleanup
|
|
599
602
|
*/
|
|
600
|
-
|
|
601
|
-
if (
|
|
602
|
-
|
|
603
|
-
this.isDisposed = true;
|
|
603
|
+
close() {
|
|
604
|
+
if (this.isClosed) {
|
|
605
|
+
return;
|
|
604
606
|
}
|
|
607
|
+
this.isClosed = true;
|
|
608
|
+
this.ctx.free();
|
|
605
609
|
}
|
|
606
610
|
/**
|
|
607
611
|
* Dispose of filter.
|
|
@@ -617,10 +621,10 @@ export class BitStreamFilterAPI {
|
|
|
617
621
|
* } // Automatically disposed
|
|
618
622
|
* ```
|
|
619
623
|
*
|
|
620
|
-
* @see {@link
|
|
624
|
+
* @see {@link close} For manual cleanup
|
|
621
625
|
*/
|
|
622
626
|
[Symbol.dispose]() {
|
|
623
|
-
this.
|
|
627
|
+
this.close();
|
|
624
628
|
}
|
|
625
629
|
}
|
|
626
630
|
//# sourceMappingURL=bitstream-filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitstream-filter.js","sourceRoot":"","sources":["../../src/api/bitstream-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAI/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,OAAO,kBAAkB;IACrB,GAAG,CAAyB;IAC5B,MAAM,CAAkB;IACxB,MAAM,CAAS;IACf,
|
|
1
|
+
{"version":3,"file":"bitstream-filter.js","sourceRoot":"","sources":["../../src/api/bitstream-filter.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
package/dist/api/decoder.d.ts
CHANGED
|
@@ -232,9 +232,7 @@ export declare class Decoder implements Disposable {
|
|
|
232
232
|
*
|
|
233
233
|
* @param packet - Compressed packet to decode
|
|
234
234
|
*
|
|
235
|
-
* @returns Decoded frame or null if more data needed
|
|
236
|
-
*
|
|
237
|
-
* @throws {Error} If decoder is closed
|
|
235
|
+
* @returns Decoded frame or null if more data needed or decoder is closed
|
|
238
236
|
*
|
|
239
237
|
* @throws {FFmpegError} If decoding fails
|
|
240
238
|
*
|
|
@@ -275,9 +273,7 @@ export declare class Decoder implements Disposable {
|
|
|
275
273
|
*
|
|
276
274
|
* @param packet - Compressed packet to decode
|
|
277
275
|
*
|
|
278
|
-
* @returns Decoded frame or null
|
|
279
|
-
*
|
|
280
|
-
* @throws {Error} If decoder is closed
|
|
276
|
+
* @returns Decoded frame or null if more data needed or decoder is closed
|
|
281
277
|
*
|
|
282
278
|
* @throws {FFmpegError} If decoding fails
|
|
283
279
|
*
|