node-av 2.0.0 → 2.4.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.
Files changed (124) hide show
  1. package/README.md +18 -5
  2. package/binding.gyp +12 -0
  3. package/dist/api/bitstream-filter.d.ts +132 -0
  4. package/dist/api/bitstream-filter.js +198 -0
  5. package/dist/api/bitstream-filter.js.map +1 -1
  6. package/dist/api/decoder.d.ts +194 -0
  7. package/dist/api/decoder.js +313 -0
  8. package/dist/api/decoder.js.map +1 -1
  9. package/dist/api/encoder.d.ts +263 -0
  10. package/dist/api/encoder.js +427 -0
  11. package/dist/api/encoder.js.map +1 -1
  12. package/dist/api/filter-presets.d.ts +92 -0
  13. package/dist/api/filter-presets.js +92 -0
  14. package/dist/api/filter-presets.js.map +1 -1
  15. package/dist/api/filter.d.ts +234 -9
  16. package/dist/api/filter.js +372 -9
  17. package/dist/api/filter.js.map +1 -1
  18. package/dist/api/hardware.d.ts +17 -0
  19. package/dist/api/hardware.js +28 -17
  20. package/dist/api/hardware.js.map +1 -1
  21. package/dist/api/io-stream.d.ts +6 -0
  22. package/dist/api/io-stream.js +2 -0
  23. package/dist/api/io-stream.js.map +1 -1
  24. package/dist/api/media-input.d.ts +214 -1
  25. package/dist/api/media-input.js +341 -0
  26. package/dist/api/media-input.js.map +1 -1
  27. package/dist/api/media-output.d.ts +132 -1
  28. package/dist/api/media-output.js +339 -0
  29. package/dist/api/media-output.js.map +1 -1
  30. package/dist/api/pipeline.d.ts +73 -8
  31. package/dist/api/pipeline.js +61 -0
  32. package/dist/api/pipeline.js.map +1 -1
  33. package/dist/api/types.d.ts +7 -0
  34. package/dist/api/utils.js +2 -0
  35. package/dist/api/utils.js.map +1 -1
  36. package/dist/lib/audio-fifo.d.ts +103 -0
  37. package/dist/lib/audio-fifo.js +109 -0
  38. package/dist/lib/audio-fifo.js.map +1 -1
  39. package/dist/lib/binding.d.ts +1 -0
  40. package/dist/lib/binding.js +32 -7
  41. package/dist/lib/binding.js.map +1 -1
  42. package/dist/lib/bitstream-filter-context.d.ts +79 -0
  43. package/dist/lib/bitstream-filter-context.js +83 -0
  44. package/dist/lib/bitstream-filter-context.js.map +1 -1
  45. package/dist/lib/bitstream-filter.d.ts +2 -0
  46. package/dist/lib/bitstream-filter.js +2 -0
  47. package/dist/lib/bitstream-filter.js.map +1 -1
  48. package/dist/lib/codec-context.d.ts +168 -0
  49. package/dist/lib/codec-context.js +178 -0
  50. package/dist/lib/codec-context.js.map +1 -1
  51. package/dist/lib/codec-parameters.d.ts +3 -0
  52. package/dist/lib/codec-parameters.js +3 -0
  53. package/dist/lib/codec-parameters.js.map +1 -1
  54. package/dist/lib/codec-parser.d.ts +6 -0
  55. package/dist/lib/codec-parser.js +6 -0
  56. package/dist/lib/codec-parser.js.map +1 -1
  57. package/dist/lib/codec.d.ts +12 -0
  58. package/dist/lib/codec.js +12 -0
  59. package/dist/lib/codec.js.map +1 -1
  60. package/dist/lib/dictionary.d.ts +16 -0
  61. package/dist/lib/dictionary.js +16 -0
  62. package/dist/lib/dictionary.js.map +1 -1
  63. package/dist/lib/error.d.ts +8 -0
  64. package/dist/lib/error.js +9 -0
  65. package/dist/lib/error.js.map +1 -1
  66. package/dist/lib/filter-context.d.ts +100 -0
  67. package/dist/lib/filter-context.js +104 -0
  68. package/dist/lib/filter-context.js.map +1 -1
  69. package/dist/lib/filter-graph.d.ts +80 -0
  70. package/dist/lib/filter-graph.js +84 -0
  71. package/dist/lib/filter-graph.js.map +1 -1
  72. package/dist/lib/filter-inout.d.ts +1 -0
  73. package/dist/lib/filter-inout.js +1 -0
  74. package/dist/lib/filter-inout.js.map +1 -1
  75. package/dist/lib/filter.d.ts +2 -0
  76. package/dist/lib/filter.js +2 -0
  77. package/dist/lib/filter.js.map +1 -1
  78. package/dist/lib/format-context.d.ts +338 -2
  79. package/dist/lib/format-context.js +355 -3
  80. package/dist/lib/format-context.js.map +1 -1
  81. package/dist/lib/frame.d.ts +41 -0
  82. package/dist/lib/frame.js +43 -0
  83. package/dist/lib/frame.js.map +1 -1
  84. package/dist/lib/hardware-device-context.d.ts +8 -0
  85. package/dist/lib/hardware-device-context.js +8 -0
  86. package/dist/lib/hardware-device-context.js.map +1 -1
  87. package/dist/lib/hardware-frames-context.d.ts +55 -0
  88. package/dist/lib/hardware-frames-context.js +57 -0
  89. package/dist/lib/hardware-frames-context.js.map +1 -1
  90. package/dist/lib/input-format.d.ts +43 -3
  91. package/dist/lib/input-format.js +48 -0
  92. package/dist/lib/input-format.js.map +1 -1
  93. package/dist/lib/io-context.d.ts +218 -0
  94. package/dist/lib/io-context.js +234 -0
  95. package/dist/lib/io-context.js.map +1 -1
  96. package/dist/lib/log.d.ts +2 -0
  97. package/dist/lib/log.js +2 -0
  98. package/dist/lib/log.js.map +1 -1
  99. package/dist/lib/native-types.d.ts +39 -1
  100. package/dist/lib/option.d.ts +90 -0
  101. package/dist/lib/option.js +97 -0
  102. package/dist/lib/option.js.map +1 -1
  103. package/dist/lib/output-format.d.ts +4 -0
  104. package/dist/lib/output-format.js +4 -0
  105. package/dist/lib/output-format.js.map +1 -1
  106. package/dist/lib/packet.d.ts +7 -0
  107. package/dist/lib/packet.js +7 -0
  108. package/dist/lib/packet.js.map +1 -1
  109. package/dist/lib/rational.d.ts +1 -0
  110. package/dist/lib/rational.js +1 -0
  111. package/dist/lib/rational.js.map +1 -1
  112. package/dist/lib/software-resample-context.d.ts +64 -0
  113. package/dist/lib/software-resample-context.js +66 -0
  114. package/dist/lib/software-resample-context.js.map +1 -1
  115. package/dist/lib/software-scale-context.d.ts +98 -0
  116. package/dist/lib/software-scale-context.js +102 -0
  117. package/dist/lib/software-scale-context.js.map +1 -1
  118. package/dist/lib/stream.d.ts +1 -0
  119. package/dist/lib/stream.js +1 -0
  120. package/dist/lib/stream.js.map +1 -1
  121. package/dist/lib/utilities.d.ts +60 -0
  122. package/dist/lib/utilities.js +60 -0
  123. package/dist/lib/utilities.js.map +1 -1
  124. package/package.json +19 -17
@@ -14,7 +14,7 @@ import { avGetSampleFmtName } from '../lib/utilities.js';
14
14
  * import { FilterAPI } from 'node-av/api';
15
15
  *
16
16
  * // Create video filter - initializes on first frame
17
- * const filter = await FilterAPI.create('scale=1280:720', {
17
+ * const filter = FilterAPI.create('scale=1280:720', {
18
18
  * timeBase: video.timeBase,
19
19
  * });
20
20
  *
@@ -29,7 +29,7 @@ import { avGetSampleFmtName } from '../lib/utilities.js';
29
29
  * @example
30
30
  * ```typescript
31
31
  * // Hardware-accelerated filtering - hw context detected from frame
32
- * const filter = await FilterAPI.create('hwupload,scale_cuda=1920:1080,hwdownload', {
32
+ * const filter = FilterAPI.create('hwupload,scale_cuda=1920:1080,hwdownload', {
33
33
  * timeBase: video.timeBase,
34
34
  * });
35
35
  * // Hardware frames context will be automatically detected from first frame
@@ -48,8 +48,11 @@ export class FilterAPI {
48
48
  isClosed = false;
49
49
  /**
50
50
  * @param graph - Filter graph instance
51
+ *
51
52
  * @param description - Filter description string
53
+ *
52
54
  * @param options - Filter options
55
+ *
53
56
  * @internal
54
57
  */
55
58
  constructor(graph, description, options) {
@@ -67,7 +70,9 @@ export class FilterAPI {
67
70
  * Direct mapping to avfilter_graph_parse_ptr() and avfilter_graph_config().
68
71
  *
69
72
  * @param description - Filter graph description
73
+ *
70
74
  * @param options - Filter options including required timeBase
75
+ *
71
76
  * @returns Configured filter instance
72
77
  *
73
78
  * @throws {Error} If filter creation or configuration fails
@@ -77,7 +82,7 @@ export class FilterAPI {
77
82
  * @example
78
83
  * ```typescript
79
84
  * // Simple video filter
80
- * const filter = await FilterAPI.create('scale=640:480', {
85
+ * const filter = FilterAPI.create('scale=640:480', {
81
86
  * timeBase: video.timeBase
82
87
  * });
83
88
  * ```
@@ -85,7 +90,7 @@ export class FilterAPI {
85
90
  * @example
86
91
  * ```typescript
87
92
  * // Complex filter chain
88
- * const filter = await FilterAPI.create('crop=640:480:0:0,rotate=PI/4', {
93
+ * const filter = FilterAPI.create('crop=640:480:0:0,rotate=PI/4', {
89
94
  * timeBase: video.timeBase
90
95
  * });
91
96
  * ```
@@ -93,7 +98,7 @@ export class FilterAPI {
93
98
  * @example
94
99
  * ```typescript
95
100
  * // Audio filter
96
- * const filter = await FilterAPI.create('volume=0.5,aecho=0.8:0.9:1000:0.3', {
101
+ * const filter = FilterAPI.create('volume=0.5,aecho=0.8:0.9:1000:0.3', {
97
102
  * timeBase: audio.timeBase
98
103
  * });
99
104
  * ```
@@ -101,7 +106,7 @@ export class FilterAPI {
101
106
  * @see {@link process} For frame processing
102
107
  * @see {@link FilterOptions} For configuration options
103
108
  */
104
- static async create(description, options) {
109
+ static create(description, options) {
105
110
  // Create graph
106
111
  const graph = new FilterGraph();
107
112
  graph.alloc();
@@ -192,6 +197,7 @@ export class FilterAPI {
192
197
  * Direct mapping to av_buffersrc_add_frame() and av_buffersink_get_frame().
193
198
  *
194
199
  * @param frame - Input frame to process (or null to flush)
200
+ *
195
201
  * @returns Filtered frame or null if buffered
196
202
  *
197
203
  * @throws {Error} If filter is closed with non-null frame
@@ -259,6 +265,86 @@ export class FilterAPI {
259
265
  return null;
260
266
  }
261
267
  }
268
+ /**
269
+ * Process a frame through the filter synchronously.
270
+ * Synchronous version of process.
271
+ *
272
+ * Applies filter operations to input frame.
273
+ * On first frame, automatically builds filter graph with frame properties.
274
+ * May buffer frames internally before producing output.
275
+ * Hardware frames context is automatically detected from frame.
276
+ * Returns null if filter is closed and frame is null.
277
+ *
278
+ * Direct mapping to av_buffersrc_add_frame() and av_buffersink_get_frame().
279
+ *
280
+ * @param frame - Input frame to process (or null to flush)
281
+ *
282
+ * @returns Filtered frame or null if buffered
283
+ *
284
+ * @throws {Error} If filter is closed with non-null frame
285
+ *
286
+ * @throws {FFmpegError} If processing fails
287
+ *
288
+ * @example
289
+ * ```typescript
290
+ * const output = filter.processSync(inputFrame);
291
+ * if (output) {
292
+ * console.log(`Got filtered frame: pts=${output.pts}`);
293
+ * output.free();
294
+ * }
295
+ * ```
296
+ *
297
+ * @example
298
+ * ```typescript
299
+ * // Process frame - may buffer internally
300
+ * const output = filter.processSync(frame);
301
+ * if (output) {
302
+ * // Got output immediately
303
+ * yield output;
304
+ * }
305
+ * // For buffered frames, use the framesSync() generator
306
+ * ```
307
+ *
308
+ * @see {@link process} For async version
309
+ */
310
+ processSync(frame) {
311
+ if (this.isClosed) {
312
+ if (!frame) {
313
+ return null;
314
+ }
315
+ throw new Error('Filter is closed');
316
+ }
317
+ // Open filter if not already done
318
+ if (!this.initialized) {
319
+ if (!frame) {
320
+ return null;
321
+ }
322
+ this.initializeSync(frame);
323
+ }
324
+ if (!this.buffersrcCtx || !this.buffersinkCtx) {
325
+ throw new Error('Filter not initialized');
326
+ }
327
+ // Send frame to filter
328
+ const addRet = this.buffersrcCtx.buffersrcAddFrameSync(frame);
329
+ FFmpegError.throwIfError(addRet, 'Failed to add frame to filter');
330
+ // Try to get filtered frame
331
+ const outputFrame = new Frame();
332
+ outputFrame.alloc();
333
+ const getRet = this.buffersinkCtx.buffersinkGetFrameSync(outputFrame);
334
+ if (getRet >= 0) {
335
+ return outputFrame;
336
+ }
337
+ else if (getRet === AVERROR_EAGAIN) {
338
+ // Need more input
339
+ outputFrame.free();
340
+ return null;
341
+ }
342
+ else {
343
+ outputFrame.free();
344
+ FFmpegError.throwIfError(getRet, 'Failed to get frame from filter');
345
+ return null;
346
+ }
347
+ }
262
348
  /**
263
349
  * Process multiple frames at once.
264
350
  *
@@ -266,6 +352,7 @@ export class FilterAPI {
266
352
  * Useful for filters that buffer multiple frames.
267
353
  *
268
354
  * @param frames - Array of input frames
355
+ *
269
356
  * @returns Array of all output frames
270
357
  *
271
358
  * @throws {Error} If filter not ready
@@ -300,6 +387,49 @@ export class FilterAPI {
300
387
  }
301
388
  return outputFrames;
302
389
  }
390
+ /**
391
+ * Process multiple frames at once synchronously.
392
+ * Synchronous version of processMultiple.
393
+ *
394
+ * Processes batch of frames and drains all output.
395
+ * Useful for filters that buffer multiple frames.
396
+ *
397
+ * @param frames - Array of input frames
398
+ *
399
+ * @returns Array of all output frames
400
+ *
401
+ * @throws {Error} If filter not ready
402
+ *
403
+ * @throws {FFmpegError} If processing fails
404
+ *
405
+ * @example
406
+ * ```typescript
407
+ * const outputs = filter.processMultipleSync([frame1, frame2, frame3]);
408
+ * for (const output of outputs) {
409
+ * console.log(`Output frame: pts=${output.pts}`);
410
+ * output.free();
411
+ * }
412
+ * ```
413
+ *
414
+ * @see {@link processMultiple} For async version
415
+ */
416
+ processMultipleSync(frames) {
417
+ const outputFrames = [];
418
+ for (const frame of frames) {
419
+ const output = this.processSync(frame);
420
+ if (output) {
421
+ outputFrames.push(output);
422
+ }
423
+ // Drain any additional frames
424
+ while (true) {
425
+ const additional = this.receiveSync();
426
+ if (!additional)
427
+ break;
428
+ outputFrames.push(additional);
429
+ }
430
+ }
431
+ return outputFrames;
432
+ }
303
433
  /**
304
434
  * Process frame stream through filter.
305
435
  *
@@ -308,7 +438,9 @@ export class FilterAPI {
308
438
  * Frees input frames after processing.
309
439
  *
310
440
  * @param frames - Async generator of input frames
441
+ *
311
442
  * @yields {Frame} Filtered frames
443
+ *
312
444
  * @throws {Error} If filter not ready
313
445
  *
314
446
  * @throws {FFmpegError} If processing fails
@@ -325,10 +457,10 @@ export class FilterAPI {
325
457
  * @example
326
458
  * ```typescript
327
459
  * // Chain filters
328
- * const filter1 = await FilterAPI.create('scale=640:480', {
460
+ * const filter1 = FilterAPI.create('scale=640:480', {
329
461
  * timeBase: video.timeBase
330
462
  * });
331
- * const filter2 = await FilterAPI.create('rotate=PI/4', {
463
+ * const filter2 = FilterAPI.create('rotate=PI/4', {
332
464
  * timeBase: video.timeBase
333
465
  * });
334
466
  *
@@ -371,6 +503,79 @@ export class FilterAPI {
371
503
  yield remaining;
372
504
  }
373
505
  }
506
+ /**
507
+ * Process frame stream through filter synchronously.
508
+ * Synchronous version of frames.
509
+ *
510
+ * High-level sync generator for filtering frame streams.
511
+ * Automatically handles buffering and flushing.
512
+ * Frees input frames after processing.
513
+ *
514
+ * @param frames - Generator of input frames
515
+ *
516
+ * @yields {Frame} Filtered frames
517
+ *
518
+ * @throws {Error} If filter not ready
519
+ *
520
+ * @throws {FFmpegError} If processing fails
521
+ *
522
+ * @example
523
+ * ```typescript
524
+ * // Filter decoded frames
525
+ * for (const frame of filter.framesSync(decoder.framesSync(packets))) {
526
+ * encoder.encodeSync(frame);
527
+ * frame.free();
528
+ * }
529
+ * ```
530
+ *
531
+ * @example
532
+ * ```typescript
533
+ * // Chain filters
534
+ * const filter1 = FilterAPI.create('scale=640:480', {
535
+ * timeBase: video.timeBase
536
+ * });
537
+ * const filter2 = FilterAPI.create('rotate=PI/4', {
538
+ * timeBase: video.timeBase
539
+ * });
540
+ *
541
+ * for (const frame of filter2.framesSync(filter1.framesSync(input))) {
542
+ * // Process filtered frames
543
+ * frame.free();
544
+ * }
545
+ * ```
546
+ *
547
+ * @see {@link frames} For async version
548
+ */
549
+ *framesSync(frames) {
550
+ for (const frame of frames) {
551
+ try {
552
+ // Process input frame
553
+ const output = this.processSync(frame);
554
+ if (output) {
555
+ yield output;
556
+ }
557
+ // Drain any buffered frames
558
+ while (true) {
559
+ const buffered = this.receiveSync();
560
+ if (!buffered)
561
+ break;
562
+ yield buffered;
563
+ }
564
+ }
565
+ finally {
566
+ // Free the input frame after processing
567
+ frame.free();
568
+ }
569
+ }
570
+ // Flush and get remaining frames
571
+ this.flushSync();
572
+ while (true) {
573
+ const remaining = this.receiveSync();
574
+ if (!remaining)
575
+ break;
576
+ yield remaining;
577
+ }
578
+ }
374
579
  /**
375
580
  * Flush filter and signal end-of-stream.
376
581
  *
@@ -405,6 +610,40 @@ export class FilterAPI {
405
610
  FFmpegError.throwIfError(ret, 'Failed to flush filter');
406
611
  }
407
612
  }
613
+ /**
614
+ * Flush filter and signal end-of-stream synchronously.
615
+ * Synchronous version of flush.
616
+ *
617
+ * Sends null frame to flush buffered data.
618
+ * Must call receiveSync() to get flushed frames.
619
+ * Does nothing if filter is closed or was never initialized.
620
+ *
621
+ * Direct mapping to av_buffersrc_add_frame(NULL).
622
+ *
623
+ * @throws {FFmpegError} If flush fails
624
+ *
625
+ * @example
626
+ * ```typescript
627
+ * filter.flushSync();
628
+ * // Get remaining frames
629
+ * let frame;
630
+ * while ((frame = filter.receiveSync()) !== null) {
631
+ * frame.free();
632
+ * }
633
+ * ```
634
+ *
635
+ * @see {@link flush} For async version
636
+ */
637
+ flushSync() {
638
+ if (this.isClosed || !this.initialized || !this.buffersrcCtx) {
639
+ return;
640
+ }
641
+ // Send flush frame (null)
642
+ const ret = this.buffersrcCtx.buffersrcAddFrameSync(null);
643
+ if (ret < 0 && ret !== AVERROR_EOF) {
644
+ FFmpegError.throwIfError(ret, 'Failed to flush filter');
645
+ }
646
+ }
408
647
  /**
409
648
  * Flush filter and yield remaining frames.
410
649
  *
@@ -436,6 +675,37 @@ export class FilterAPI {
436
675
  yield frame;
437
676
  }
438
677
  }
678
+ /**
679
+ * Flush filter and yield remaining frames synchronously.
680
+ * Synchronous version of flushFrames.
681
+ *
682
+ * Convenient sync generator for flushing.
683
+ * Combines flush and receive operations.
684
+ * Returns immediately if filter is closed or was never initialized.
685
+ *
686
+ * @yields {Frame} Remaining frames from filter
687
+ *
688
+ * @throws {FFmpegError} If flush fails
689
+ *
690
+ * @example
691
+ * ```typescript
692
+ * for (const frame of filter.flushFramesSync()) {
693
+ * console.log(`Flushed frame: pts=${frame.pts}`);
694
+ * frame.free();
695
+ * }
696
+ * ```
697
+ *
698
+ * @see {@link flushFrames} For async version
699
+ */
700
+ *flushFramesSync() {
701
+ // Send flush signal
702
+ this.flushSync();
703
+ // Yield all remaining frames
704
+ let frame;
705
+ while ((frame = this.receiveSync()) !== null) {
706
+ yield frame;
707
+ }
708
+ }
439
709
  /**
440
710
  * Receive buffered frame from filter.
441
711
  *
@@ -477,6 +747,50 @@ export class FilterAPI {
477
747
  return null;
478
748
  }
479
749
  }
750
+ /**
751
+ * Receive buffered frame from filter synchronously.
752
+ * Synchronous version of receive.
753
+ *
754
+ * Drains frames buffered by the filter.
755
+ * Call repeatedly until null to get all buffered frames.
756
+ * Returns null if filter is closed, not initialized, or no frames available.
757
+ *
758
+ * Direct mapping to av_buffersink_get_frame().
759
+ *
760
+ * @returns Buffered frame or null if none available
761
+ *
762
+ * @throws {FFmpegError} If receiving fails
763
+ *
764
+ * @example
765
+ * ```typescript
766
+ * let frame;
767
+ * while ((frame = filter.receiveSync()) !== null) {
768
+ * console.log(`Received frame: pts=${frame.pts}`);
769
+ * frame.free();
770
+ * }
771
+ * ```
772
+ *
773
+ * @see {@link receive} For async version
774
+ */
775
+ receiveSync() {
776
+ if (this.isClosed || !this.initialized || !this.buffersinkCtx) {
777
+ return null;
778
+ }
779
+ const frame = new Frame();
780
+ frame.alloc();
781
+ const ret = this.buffersinkCtx.buffersinkGetFrameSync(frame);
782
+ if (ret >= 0) {
783
+ return frame;
784
+ }
785
+ else {
786
+ frame.free();
787
+ if (ret === AVERROR_EAGAIN || ret === AVERROR_EOF) {
788
+ return null;
789
+ }
790
+ FFmpegError.throwIfError(ret, 'Failed to receive frame from filter');
791
+ return null;
792
+ }
793
+ }
480
794
  /**
481
795
  * Send command to filter.
482
796
  *
@@ -486,9 +800,13 @@ export class FilterAPI {
486
800
  * Direct mapping to avfilter_graph_send_command().
487
801
  *
488
802
  * @param target - Target filter name
803
+ *
489
804
  * @param cmd - Command name
805
+ *
490
806
  * @param arg - Command argument
807
+ *
491
808
  * @param flags - Command flags
809
+ *
492
810
  * @returns Response string from filter
493
811
  *
494
812
  * @throws {Error} If filter not ready
@@ -526,10 +844,15 @@ export class FilterAPI {
526
844
  * Direct mapping to avfilter_graph_queue_command().
527
845
  *
528
846
  * @param target - Target filter name
847
+ *
529
848
  * @param cmd - Command name
849
+ *
530
850
  * @param arg - Command argument
851
+ *
531
852
  * @param ts - Timestamp for execution
853
+ *
532
854
  * @param flags - Command flags
855
+ *
533
856
  * @throws {Error} If filter not ready
534
857
  *
535
858
  * @throws {FFmpegError} If queue fails
@@ -612,6 +935,46 @@ export class FilterAPI {
612
935
  FFmpegError.throwIfError(ret, 'Failed to configure filter graph');
613
936
  this.initialized = true;
614
937
  }
938
+ /**
939
+ * Initialize filter graph from first frame synchronously.
940
+ * Synchronous version of initialize.
941
+ *
942
+ * Creates and configures filter graph components.
943
+ * Sets buffer source parameters from frame properties.
944
+ * Automatically configures hardware frames context if present.
945
+ *
946
+ * @param frame - First frame to process, provides format and hw context
947
+ *
948
+ * @throws {Error} If initialization fails
949
+ *
950
+ * @throws {FFmpegError} If configuration fails
951
+ *
952
+ * @internal
953
+ *
954
+ * @see {@link initialize} For async version
955
+ */
956
+ initializeSync(frame) {
957
+ // Create buffer source
958
+ this.createBufferSource(frame);
959
+ // Create buffer sink
960
+ this.createBufferSink(frame);
961
+ // Parse filter description
962
+ this.parseFilterDescription(this.description);
963
+ // Set hw_device_ctx on hardware filters
964
+ const filters = this.graph.filters;
965
+ if (filters) {
966
+ for (const filterCtx of filters) {
967
+ const filter = filterCtx.filter;
968
+ if (filter && (filter.flags & AVFILTER_FLAG_HWDEVICE) !== 0) {
969
+ filterCtx.hwDeviceCtx = frame.hwFramesCtx?.deviceRef ?? this.options.hardware?.deviceContext ?? null;
970
+ }
971
+ }
972
+ }
973
+ // Configure the graph
974
+ const ret = this.graph.configSync();
975
+ FFmpegError.throwIfError(ret, 'Failed to configure filter graph');
976
+ this.initialized = true;
977
+ }
615
978
  /**
616
979
  * Create buffer source with frame parameters.
617
980
  *
@@ -736,7 +1099,7 @@ export class FilterAPI {
736
1099
  * @example
737
1100
  * ```typescript
738
1101
  * {
739
- * using filter = await FilterAPI.create('scale=640:480', { ... });
1102
+ * using filter = FilterAPI.create('scale=640:480', { ... });
740
1103
  * // Use filter...
741
1104
  * } // Automatically freed
742
1105
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/api/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/api/filter.ts"],"names":[],"mappings":"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"}
@@ -42,8 +42,11 @@ export declare class HardwareContext implements Disposable {
42
42
  private _isDisposed;
43
43
  /**
44
44
  * @param deviceContext - Initialized hardware device context
45
+ *
45
46
  * @param deviceType - Hardware device type enum
47
+ *
46
48
  * @param deviceTypeName - Human-readable device type name
49
+ *
47
50
  * @internal
48
51
  */
49
52
  private constructor();
@@ -55,6 +58,7 @@ export declare class HardwareContext implements Disposable {
55
58
  * Platform-specific preference order ensures optimal performance.
56
59
  *
57
60
  * @param options - Optional hardware configuration
61
+ *
58
62
  * @returns Hardware context or null if unavailable
59
63
  *
60
64
  * @example
@@ -87,8 +91,11 @@ export declare class HardwareContext implements Disposable {
87
91
  * Direct mapping to av_hwdevice_ctx_create().
88
92
  *
89
93
  * @param deviceType - Hardware device type from AVHWDeviceType
94
+ *
90
95
  * @param device - Optional device specifier (e.g., GPU index, device path)
96
+ *
91
97
  * @param options - Optional device initialization options
98
+ *
92
99
  * @returns Initialized hardware context
93
100
  *
94
101
  * @throws {Error} If device type unsupported or initialization fails
@@ -202,7 +209,9 @@ export declare class HardwareContext implements Disposable {
202
209
  * Direct mapping to avcodec_get_hw_config().
203
210
  *
204
211
  * @param codecId - Codec ID from AVCodecID enum
212
+ *
205
213
  * @param isEncoder - Check for encoder support (default: decoder)
214
+ *
206
215
  * @returns true if codec is supported
207
216
  *
208
217
  * @example
@@ -224,8 +233,11 @@ export declare class HardwareContext implements Disposable {
224
233
  * Important for ensuring format compatibility in pipelines.
225
234
  *
226
235
  * @param codecId - Codec ID from AVCodecID enum
236
+ *
227
237
  * @param pixelFormat - Pixel format to check
238
+ *
228
239
  * @param isEncoder - Check for encoder (default: decoder)
240
+ *
229
241
  * @returns true if pixel format is supported
230
242
  *
231
243
  * @example
@@ -248,6 +260,7 @@ export declare class HardwareContext implements Disposable {
248
260
  * Automatically tests encoder viability before returning.
249
261
  *
250
262
  * @param codec - Generic codec name (e.g., 'h264', 'hevc', 'av1') or AVCodecID
263
+ *
251
264
  * @returns Hardware encoder codec or null if unsupported
252
265
  *
253
266
  * @example
@@ -280,6 +293,7 @@ export declare class HardwareContext implements Disposable {
280
293
  * Direct mapping to av_codec_iterate() with hardware config checks.
281
294
  *
282
295
  * @param isEncoder - Find encoders (true) or decoders (false)
296
+ *
283
297
  * @returns Array of codec names that support this hardware
284
298
  *
285
299
  * @example
@@ -323,6 +337,7 @@ export declare class HardwareContext implements Disposable {
323
337
  * Used internally to find hardware-specific encoder implementations.
324
338
  *
325
339
  * @param codecId - AVCodecID enum value
340
+ *
326
341
  * @returns Base codec name or null if unsupported
327
342
  *
328
343
  * @internal
@@ -345,7 +360,9 @@ export declare class HardwareContext implements Disposable {
345
360
  * Internal factory method using av_hwdevice_ctx_create().
346
361
  *
347
362
  * @param deviceType - AVHWDeviceType enum value
363
+ *
348
364
  * @param device - Optional device specifier
365
+ *
349
366
  * @param options - Optional device options
350
367
  *
351
368
  * @returns Hardware context or null if creation fails