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
@@ -154,6 +154,7 @@ export class BitStreamFilterContext extends OptionMember {
154
154
  * Direct mapping to av_bsf_alloc().
155
155
  *
156
156
  * @param filter - The bitstream filter to use
157
+ *
157
158
  * @returns 0 on success, negative AVERROR on error:
158
159
  * - AVERROR_ENOMEM: Memory allocation failure
159
160
  * - AVERROR_EINVAL: Invalid filter
@@ -259,6 +260,7 @@ export class BitStreamFilterContext extends OptionMember {
259
260
  * Direct mapping to av_bsf_send_packet().
260
261
  *
261
262
  * @param packet - Packet to filter, or null to signal EOF
263
+ *
262
264
  * @returns 0 on success, negative AVERROR on error:
263
265
  * - AVERROR_EAGAIN: Filter needs output to be consumed first
264
266
  * - AVERROR_EOF: Filter has been flushed
@@ -288,6 +290,47 @@ export class BitStreamFilterContext extends OptionMember {
288
290
  async sendPacket(packet) {
289
291
  return await this.native.sendPacket(packet ? packet.getNative() : null);
290
292
  }
293
+ /**
294
+ * Send a packet to the bitstream filter synchronously.
295
+ * Synchronous version of sendPacket.
296
+ *
297
+ * Submits a packet for filtering. The filter may buffer packets
298
+ * internally and produce output with different timing.
299
+ *
300
+ * Direct mapping to av_bsf_send_packet().
301
+ *
302
+ * @param packet - Packet to filter (null to drain)
303
+ *
304
+ * @returns 0 on success, negative AVERROR on error:
305
+ * - AVERROR_EAGAIN: Need to receive packets first
306
+ * - AVERROR_EOF: Filter has been flushed
307
+ * - AVERROR_EINVAL: Invalid state
308
+ * - AVERROR(ENOMEM): Memory allocation failure
309
+ *
310
+ * @example
311
+ * ```typescript
312
+ * import { FFmpegError } from 'node-av';
313
+ * import { AVERROR_EAGAIN } from 'node-av/constants';
314
+ *
315
+ * // Send packet to filter
316
+ * const ret = ctx.sendPacketSync(inputPacket);
317
+ * if (ret === AVERROR_EAGAIN) {
318
+ * // Need to receive output first
319
+ * const outputPacket = new Packet();
320
+ * ctx.receivePacketSync(outputPacket);
321
+ * } else {
322
+ * FFmpegError.throwIfError(ret, 'sendPacketSync');
323
+ * }
324
+ *
325
+ * // Drain filter
326
+ * ctx.sendPacketSync(null);
327
+ * ```
328
+ *
329
+ * @see {@link sendPacket} For async version
330
+ */
331
+ sendPacketSync(packet) {
332
+ return this.native.sendPacketSync(packet ? packet.getNative() : null);
333
+ }
291
334
  /**
292
335
  * Receive a filtered packet from the bitstream filter.
293
336
  *
@@ -297,6 +340,7 @@ export class BitStreamFilterContext extends OptionMember {
297
340
  * Direct mapping to av_bsf_receive_packet().
298
341
  *
299
342
  * @param packet - Packet to receive filtered data into
343
+ *
300
344
  * @returns 0 on success, negative AVERROR on error:
301
345
  * - AVERROR_EAGAIN: Need more input
302
346
  * - AVERROR_EOF: No more packets available
@@ -325,6 +369,45 @@ export class BitStreamFilterContext extends OptionMember {
325
369
  async receivePacket(packet) {
326
370
  return await this.native.receivePacket(packet.getNative());
327
371
  }
372
+ /**
373
+ * Receive a filtered packet from the bitstream filter synchronously.
374
+ * Synchronous version of receivePacket.
375
+ *
376
+ * Retrieves a packet that has been processed by the filter.
377
+ * May need to be called multiple times after each sendPacketSync().
378
+ *
379
+ * Direct mapping to av_bsf_receive_packet().
380
+ *
381
+ * @param packet - Packet to receive filtered data into
382
+ *
383
+ * @returns 0 on success, negative AVERROR on error:
384
+ * - AVERROR_EAGAIN: Need more input
385
+ * - AVERROR_EOF: No more packets available
386
+ *
387
+ * @example
388
+ * ```typescript
389
+ * import { FFmpegError } from 'node-av';
390
+ * import { AVERROR_EAGAIN, AVERROR_EOF } from 'node-av/constants';
391
+ *
392
+ * // Receive filtered packets
393
+ * const outputPacket = new Packet();
394
+ * let ret;
395
+ * while ((ret = ctx.receivePacketSync(outputPacket)) >= 0) {
396
+ * // Process filtered packet
397
+ * console.log(`Filtered packet size: ${outputPacket.size}`);
398
+ * outputPacket.unref();
399
+ * }
400
+ *
401
+ * if (ret !== AVERROR_EAGAIN && ret !== AVERROR_EOF) {
402
+ * FFmpegError.throwIfError(ret, 'receivePacketSync');
403
+ * }
404
+ * ```
405
+ *
406
+ * @see {@link receivePacket} For async version
407
+ */
408
+ receivePacketSync(packet) {
409
+ return this.native.receivePacketSync(packet.getNative());
410
+ }
328
411
  /**
329
412
  * Get the underlying native BitStreamFilterContext object.
330
413
  *
@@ -1 +1 @@
1
- {"version":3,"file":"bitstream-filter-context.js","sourceRoot":"","sources":["../../src/lib/bitstream-filter-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bitstream-filter-context.js","sourceRoot":"","sources":["../../src/lib/bitstream-filter-context.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ export declare class BitStreamFilter implements NativeWrapper<NativeBitStreamFil
34
34
  private native;
35
35
  /**
36
36
  * @param native The native bitstream filter instance
37
+ *
37
38
  * @internal
38
39
  */
39
40
  constructor(native: NativeBitStreamFilter);
@@ -47,6 +48,7 @@ export declare class BitStreamFilter implements NativeWrapper<NativeBitStreamFil
47
48
  * Direct mapping to av_bsf_get_by_name().
48
49
  *
49
50
  * @param name - Name of the bitstream filter
51
+ *
50
52
  * @returns BitStreamFilter instance if found, null otherwise
51
53
  *
52
54
  * @example
@@ -33,6 +33,7 @@ export class BitStreamFilter {
33
33
  native;
34
34
  /**
35
35
  * @param native The native bitstream filter instance
36
+ *
36
37
  * @internal
37
38
  */
38
39
  constructor(native) {
@@ -48,6 +49,7 @@ export class BitStreamFilter {
48
49
  * Direct mapping to av_bsf_get_by_name().
49
50
  *
50
51
  * @param name - Name of the bitstream filter
52
+ *
51
53
  * @returns BitStreamFilter instance if found, null otherwise
52
54
  *
53
55
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"bitstream-filter.js","sourceRoot":"","sources":["../../src/lib/bitstream-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,eAAe;IAClB,MAAM,CAAwB;IAEtC;;;OAGG;IACH,YAAY,MAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,MAAM,CAAC,SAAS,CAAC,IAAY;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,MAAM,CAAC,OAAO;QACZ,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QACnD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAA6B,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACrF,CAAC;IAED;;;;;;OAMG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAA8B,CAAC;IACpD,CAAC;IAED;;;;;;OAMG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"bitstream-filter.js","sourceRoot":"","sources":["../../src/lib/bitstream-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,eAAe;IAClB,MAAM,CAAwB;IAEtC;;;;OAIG;IACH,YAAY,MAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,MAAM,CAAC,SAAS,CAAC,IAAY;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,MAAM,CAAC,OAAO;QACZ,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QACnD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAA6B,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACrF,CAAC;IAED;;;;;;OAMG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAA8B,CAAC;IACpD,CAAC;IAED;;;;;;OAMG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
@@ -450,7 +450,9 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
450
450
  * Direct mapping to avcodec_open2().
451
451
  *
452
452
  * @param codec - Codec to open with (null to use already set)
453
+ *
453
454
  * @param options - Codec-specific options
455
+ *
454
456
  * @returns 0 on success, negative AVERROR on error:
455
457
  * - AVERROR_EINVAL: Invalid parameters
456
458
  * - AVERROR_ENOMEM: Memory allocation failure
@@ -468,6 +470,35 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
468
470
  * @see {@link isOpen} To check if open
469
471
  */
470
472
  open2(codec?: Codec | null, options?: Dictionary | null): Promise<number>;
473
+ /**
474
+ * Open the codec synchronously.
475
+ * Synchronous version of open2.
476
+ *
477
+ * Initializes the codec for encoding/decoding.
478
+ * Must be called before processing frames/packets.
479
+ *
480
+ * Direct mapping to avcodec_open2().
481
+ *
482
+ * @param codec - Codec to open with (null to use already set)
483
+ *
484
+ * @param options - Codec-specific options
485
+ *
486
+ * @returns 0 on success, negative AVERROR on error:
487
+ * - AVERROR_EINVAL: Invalid parameters
488
+ * - AVERROR_ENOMEM: Memory allocation failure
489
+ *
490
+ * @example
491
+ * ```typescript
492
+ * import { FFmpegError } from 'node-av';
493
+ *
494
+ * const ret = ctx.open2Sync(codec);
495
+ * FFmpegError.throwIfError(ret, 'open2Sync');
496
+ * // Codec is now open and ready
497
+ * ```
498
+ *
499
+ * @see {@link open2} For async version
500
+ */
501
+ open2Sync(codec?: Codec | null, options?: Dictionary | null): number;
471
502
  /**
472
503
  * Fill codec context from parameters.
473
504
  *
@@ -477,6 +508,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
477
508
  * Direct mapping to avcodec_parameters_to_context().
478
509
  *
479
510
  * @param params - Source codec parameters
511
+ *
480
512
  * @returns 0 on success, negative AVERROR on error:
481
513
  * - AVERROR_EINVAL: Invalid parameters
482
514
  *
@@ -500,6 +532,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
500
532
  * Direct mapping to avcodec_parameters_from_context().
501
533
  *
502
534
  * @param params - Destination codec parameters
535
+ *
503
536
  * @returns 0 on success, negative AVERROR on error:
504
537
  * - AVERROR_EINVAL: Invalid parameters
505
538
  *
@@ -539,6 +572,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
539
572
  * Direct mapping to avcodec_send_packet().
540
573
  *
541
574
  * @param packet - Packet to decode (null to flush)
575
+ *
542
576
  * @returns 0 on success, negative AVERROR on error:
543
577
  * - AVERROR_EAGAIN: Must receive frames first
544
578
  * - AVERROR_EOF: Decoder has been flushed
@@ -561,6 +595,38 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
561
595
  * @see {@link receiveFrame} To get decoded frames
562
596
  */
563
597
  sendPacket(packet: Packet | null): Promise<number>;
598
+ /**
599
+ * Send packet to decoder synchronously.
600
+ * Synchronous version of sendPacket.
601
+ *
602
+ * Submits compressed data for decoding.
603
+ * Call receiveFrameSync() to get decoded frames.
604
+ *
605
+ * Direct mapping to avcodec_send_packet().
606
+ *
607
+ * @param packet - Packet to decode (null to flush)
608
+ *
609
+ * @returns 0 on success, negative AVERROR on error:
610
+ * - AVERROR_EAGAIN: Must receive frames first
611
+ * - AVERROR_EOF: Decoder has been flushed
612
+ * - AVERROR_EINVAL: Invalid decoder state
613
+ * - AVERROR_ENOMEM: Memory allocation failure
614
+ *
615
+ * @example
616
+ * ```typescript
617
+ * import { FFmpegError } from 'node-av';
618
+ * import { AVERROR_EAGAIN } from 'node-av';
619
+ *
620
+ * const ret = ctx.sendPacketSync(packet);
621
+ * if (ret === AVERROR_EAGAIN) {
622
+ * // Need to receive frames first
623
+ * ctx.receiveFrameSync(frame);
624
+ * }
625
+ * ```
626
+ *
627
+ * @see {@link sendPacket} For async version
628
+ */
629
+ sendPacketSync(packet: Packet | null): number;
564
630
  /**
565
631
  * Receive decoded frame.
566
632
  *
@@ -570,6 +636,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
570
636
  * Direct mapping to avcodec_receive_frame().
571
637
  *
572
638
  * @param frame - Frame to receive into
639
+ *
573
640
  * @returns 0 on success, negative AVERROR on error:
574
641
  * - AVERROR_EAGAIN: Need more input
575
642
  * - AVERROR_EOF: All frames have been output
@@ -592,6 +659,39 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
592
659
  * @see {@link sendPacket} To send packets for decoding
593
660
  */
594
661
  receiveFrame(frame: Frame): Promise<number>;
662
+ /**
663
+ * Receive decoded frame synchronously.
664
+ * Synchronous version of receiveFrame.
665
+ *
666
+ * Gets a decoded frame from the decoder.
667
+ * Call after sendPacketSync().
668
+ *
669
+ * Direct mapping to avcodec_receive_frame().
670
+ *
671
+ * @param frame - Frame to receive into
672
+ *
673
+ * @returns 0 on success, negative AVERROR on error:
674
+ * - AVERROR_EAGAIN: Need more input
675
+ * - AVERROR_EOF: All frames have been output
676
+ * - AVERROR_EINVAL: Invalid decoder state
677
+ *
678
+ * @example
679
+ * ```typescript
680
+ * import { FFmpegError } from 'node-av';
681
+ * import { AVERROR_EAGAIN, AVERROR_EOF } from 'node-av';
682
+ *
683
+ * const ret = ctx.receiveFrameSync(frame);
684
+ * if (ret === AVERROR_EAGAIN || ret === AVERROR_EOF) {
685
+ * // No frame available
686
+ * } else {
687
+ * FFmpegError.throwIfError(ret, 'receiveFrameSync');
688
+ * // Process frame
689
+ * }
690
+ * ```
691
+ *
692
+ * @see {@link receiveFrame} For async version
693
+ */
694
+ receiveFrameSync(frame: Frame): number;
595
695
  /**
596
696
  * Send frame to encoder.
597
697
  *
@@ -601,6 +701,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
601
701
  * Direct mapping to avcodec_send_frame().
602
702
  *
603
703
  * @param frame - Frame to encode (null to flush)
704
+ *
604
705
  * @returns 0 on success, negative AVERROR on error:
605
706
  * - AVERROR_EAGAIN: Must receive packets first
606
707
  * - AVERROR_EOF: Encoder has been flushed
@@ -623,6 +724,38 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
623
724
  * @see {@link receivePacket} To get encoded packets
624
725
  */
625
726
  sendFrame(frame: Frame | null): Promise<number>;
727
+ /**
728
+ * Send frame to encoder synchronously.
729
+ * Synchronous version of sendFrame.
730
+ *
731
+ * Submits raw frame for encoding.
732
+ * Call receivePacketSync() to get encoded packets.
733
+ *
734
+ * Direct mapping to avcodec_send_frame().
735
+ *
736
+ * @param frame - Frame to encode (null to flush)
737
+ *
738
+ * @returns 0 on success, negative AVERROR on error:
739
+ * - AVERROR_EAGAIN: Must receive packets first
740
+ * - AVERROR_EOF: Encoder has been flushed
741
+ * - AVERROR_EINVAL: Invalid encoder state
742
+ * - AVERROR_ENOMEM: Memory allocation failure
743
+ *
744
+ * @example
745
+ * ```typescript
746
+ * import { FFmpegError } from 'node-av';
747
+ * import { AVERROR_EAGAIN } from 'node-av';
748
+ *
749
+ * const ret = ctx.sendFrameSync(frame);
750
+ * if (ret === AVERROR_EAGAIN) {
751
+ * // Need to receive packets first
752
+ * ctx.receivePacketSync(packet);
753
+ * }
754
+ * ```
755
+ *
756
+ * @see {@link sendFrame} For async version
757
+ */
758
+ sendFrameSync(frame: Frame | null): number;
626
759
  /**
627
760
  * Receive encoded packet.
628
761
  *
@@ -632,6 +765,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
632
765
  * Direct mapping to avcodec_receive_packet().
633
766
  *
634
767
  * @param packet - Packet to receive into
768
+ *
635
769
  * @returns 0 on success, negative AVERROR on error:
636
770
  * - AVERROR_EAGAIN: Need more input
637
771
  * - AVERROR_EOF: All packets have been output
@@ -654,6 +788,39 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
654
788
  * @see {@link sendFrame} To send frames for encoding
655
789
  */
656
790
  receivePacket(packet: Packet): Promise<number>;
791
+ /**
792
+ * Receive encoded packet synchronously.
793
+ * Synchronous version of receivePacket.
794
+ *
795
+ * Gets an encoded packet from the encoder.
796
+ * Call after sendFrameSync().
797
+ *
798
+ * Direct mapping to avcodec_receive_packet().
799
+ *
800
+ * @param packet - Packet to receive into
801
+ *
802
+ * @returns 0 on success, negative AVERROR on error:
803
+ * - AVERROR_EAGAIN: Need more input
804
+ * - AVERROR_EOF: All packets have been output
805
+ * - AVERROR_EINVAL: Invalid encoder state
806
+ *
807
+ * @example
808
+ * ```typescript
809
+ * import { FFmpegError } from 'node-av';
810
+ * import { AVERROR_EAGAIN, AVERROR_EOF } from 'node-av';
811
+ *
812
+ * const ret = ctx.receivePacketSync(packet);
813
+ * if (ret === AVERROR_EAGAIN || ret === AVERROR_EOF) {
814
+ * // No packet available
815
+ * } else {
816
+ * FFmpegError.throwIfError(ret, 'receivePacketSync');
817
+ * // Process packet
818
+ * }
819
+ * ```
820
+ *
821
+ * @see {@link receivePacket} For async version
822
+ */
823
+ receivePacketSync(packet: Packet): number;
657
824
  /**
658
825
  * Set hardware pixel format.
659
826
  *
@@ -661,6 +828,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
661
828
  * Used in get_format callback for hardware decoding.
662
829
  *
663
830
  * @param hwFormat - Hardware pixel format
831
+ *
664
832
  * @param swFormat - Software pixel format (optional)
665
833
  *
666
834
  * @example
@@ -637,7 +637,9 @@ export class CodecContext extends OptionMember {
637
637
  * Direct mapping to avcodec_open2().
638
638
  *
639
639
  * @param codec - Codec to open with (null to use already set)
640
+ *
640
641
  * @param options - Codec-specific options
642
+ *
641
643
  * @returns 0 on success, negative AVERROR on error:
642
644
  * - AVERROR_EINVAL: Invalid parameters
643
645
  * - AVERROR_ENOMEM: Memory allocation failure
@@ -657,6 +659,37 @@ export class CodecContext extends OptionMember {
657
659
  async open2(codec = null, options = null) {
658
660
  return await this.native.open2(codec?.getNative() ?? null, options?.getNative() ?? null);
659
661
  }
662
+ /**
663
+ * Open the codec synchronously.
664
+ * Synchronous version of open2.
665
+ *
666
+ * Initializes the codec for encoding/decoding.
667
+ * Must be called before processing frames/packets.
668
+ *
669
+ * Direct mapping to avcodec_open2().
670
+ *
671
+ * @param codec - Codec to open with (null to use already set)
672
+ *
673
+ * @param options - Codec-specific options
674
+ *
675
+ * @returns 0 on success, negative AVERROR on error:
676
+ * - AVERROR_EINVAL: Invalid parameters
677
+ * - AVERROR_ENOMEM: Memory allocation failure
678
+ *
679
+ * @example
680
+ * ```typescript
681
+ * import { FFmpegError } from 'node-av';
682
+ *
683
+ * const ret = ctx.open2Sync(codec);
684
+ * FFmpegError.throwIfError(ret, 'open2Sync');
685
+ * // Codec is now open and ready
686
+ * ```
687
+ *
688
+ * @see {@link open2} For async version
689
+ */
690
+ open2Sync(codec = null, options = null) {
691
+ return this.native.open2Sync(codec?.getNative() ?? null, options?.getNative() ?? null);
692
+ }
660
693
  /**
661
694
  * Fill codec context from parameters.
662
695
  *
@@ -666,6 +699,7 @@ export class CodecContext extends OptionMember {
666
699
  * Direct mapping to avcodec_parameters_to_context().
667
700
  *
668
701
  * @param params - Source codec parameters
702
+ *
669
703
  * @returns 0 on success, negative AVERROR on error:
670
704
  * - AVERROR_EINVAL: Invalid parameters
671
705
  *
@@ -691,6 +725,7 @@ export class CodecContext extends OptionMember {
691
725
  * Direct mapping to avcodec_parameters_from_context().
692
726
  *
693
727
  * @param params - Destination codec parameters
728
+ *
694
729
  * @returns 0 on success, negative AVERROR on error:
695
730
  * - AVERROR_EINVAL: Invalid parameters
696
731
  *
@@ -734,6 +769,7 @@ export class CodecContext extends OptionMember {
734
769
  * Direct mapping to avcodec_send_packet().
735
770
  *
736
771
  * @param packet - Packet to decode (null to flush)
772
+ *
737
773
  * @returns 0 on success, negative AVERROR on error:
738
774
  * - AVERROR_EAGAIN: Must receive frames first
739
775
  * - AVERROR_EOF: Decoder has been flushed
@@ -758,6 +794,40 @@ export class CodecContext extends OptionMember {
758
794
  async sendPacket(packet) {
759
795
  return await this.native.sendPacket(packet?.getNative() ?? null);
760
796
  }
797
+ /**
798
+ * Send packet to decoder synchronously.
799
+ * Synchronous version of sendPacket.
800
+ *
801
+ * Submits compressed data for decoding.
802
+ * Call receiveFrameSync() to get decoded frames.
803
+ *
804
+ * Direct mapping to avcodec_send_packet().
805
+ *
806
+ * @param packet - Packet to decode (null to flush)
807
+ *
808
+ * @returns 0 on success, negative AVERROR on error:
809
+ * - AVERROR_EAGAIN: Must receive frames first
810
+ * - AVERROR_EOF: Decoder has been flushed
811
+ * - AVERROR_EINVAL: Invalid decoder state
812
+ * - AVERROR_ENOMEM: Memory allocation failure
813
+ *
814
+ * @example
815
+ * ```typescript
816
+ * import { FFmpegError } from 'node-av';
817
+ * import { AVERROR_EAGAIN } from 'node-av';
818
+ *
819
+ * const ret = ctx.sendPacketSync(packet);
820
+ * if (ret === AVERROR_EAGAIN) {
821
+ * // Need to receive frames first
822
+ * ctx.receiveFrameSync(frame);
823
+ * }
824
+ * ```
825
+ *
826
+ * @see {@link sendPacket} For async version
827
+ */
828
+ sendPacketSync(packet) {
829
+ return this.native.sendPacketSync(packet?.getNative() ?? null);
830
+ }
761
831
  /**
762
832
  * Receive decoded frame.
763
833
  *
@@ -767,6 +837,7 @@ export class CodecContext extends OptionMember {
767
837
  * Direct mapping to avcodec_receive_frame().
768
838
  *
769
839
  * @param frame - Frame to receive into
840
+ *
770
841
  * @returns 0 on success, negative AVERROR on error:
771
842
  * - AVERROR_EAGAIN: Need more input
772
843
  * - AVERROR_EOF: All frames have been output
@@ -791,6 +862,41 @@ export class CodecContext extends OptionMember {
791
862
  async receiveFrame(frame) {
792
863
  return await this.native.receiveFrame(frame.getNative());
793
864
  }
865
+ /**
866
+ * Receive decoded frame synchronously.
867
+ * Synchronous version of receiveFrame.
868
+ *
869
+ * Gets a decoded frame from the decoder.
870
+ * Call after sendPacketSync().
871
+ *
872
+ * Direct mapping to avcodec_receive_frame().
873
+ *
874
+ * @param frame - Frame to receive into
875
+ *
876
+ * @returns 0 on success, negative AVERROR on error:
877
+ * - AVERROR_EAGAIN: Need more input
878
+ * - AVERROR_EOF: All frames have been output
879
+ * - AVERROR_EINVAL: Invalid decoder state
880
+ *
881
+ * @example
882
+ * ```typescript
883
+ * import { FFmpegError } from 'node-av';
884
+ * import { AVERROR_EAGAIN, AVERROR_EOF } from 'node-av';
885
+ *
886
+ * const ret = ctx.receiveFrameSync(frame);
887
+ * if (ret === AVERROR_EAGAIN || ret === AVERROR_EOF) {
888
+ * // No frame available
889
+ * } else {
890
+ * FFmpegError.throwIfError(ret, 'receiveFrameSync');
891
+ * // Process frame
892
+ * }
893
+ * ```
894
+ *
895
+ * @see {@link receiveFrame} For async version
896
+ */
897
+ receiveFrameSync(frame) {
898
+ return this.native.receiveFrameSync(frame.getNative());
899
+ }
794
900
  /**
795
901
  * Send frame to encoder.
796
902
  *
@@ -800,6 +906,7 @@ export class CodecContext extends OptionMember {
800
906
  * Direct mapping to avcodec_send_frame().
801
907
  *
802
908
  * @param frame - Frame to encode (null to flush)
909
+ *
803
910
  * @returns 0 on success, negative AVERROR on error:
804
911
  * - AVERROR_EAGAIN: Must receive packets first
805
912
  * - AVERROR_EOF: Encoder has been flushed
@@ -824,6 +931,40 @@ export class CodecContext extends OptionMember {
824
931
  async sendFrame(frame) {
825
932
  return await this.native.sendFrame(frame?.getNative() ?? null);
826
933
  }
934
+ /**
935
+ * Send frame to encoder synchronously.
936
+ * Synchronous version of sendFrame.
937
+ *
938
+ * Submits raw frame for encoding.
939
+ * Call receivePacketSync() to get encoded packets.
940
+ *
941
+ * Direct mapping to avcodec_send_frame().
942
+ *
943
+ * @param frame - Frame to encode (null to flush)
944
+ *
945
+ * @returns 0 on success, negative AVERROR on error:
946
+ * - AVERROR_EAGAIN: Must receive packets first
947
+ * - AVERROR_EOF: Encoder has been flushed
948
+ * - AVERROR_EINVAL: Invalid encoder state
949
+ * - AVERROR_ENOMEM: Memory allocation failure
950
+ *
951
+ * @example
952
+ * ```typescript
953
+ * import { FFmpegError } from 'node-av';
954
+ * import { AVERROR_EAGAIN } from 'node-av';
955
+ *
956
+ * const ret = ctx.sendFrameSync(frame);
957
+ * if (ret === AVERROR_EAGAIN) {
958
+ * // Need to receive packets first
959
+ * ctx.receivePacketSync(packet);
960
+ * }
961
+ * ```
962
+ *
963
+ * @see {@link sendFrame} For async version
964
+ */
965
+ sendFrameSync(frame) {
966
+ return this.native.sendFrameSync(frame?.getNative() ?? null);
967
+ }
827
968
  /**
828
969
  * Receive encoded packet.
829
970
  *
@@ -833,6 +974,7 @@ export class CodecContext extends OptionMember {
833
974
  * Direct mapping to avcodec_receive_packet().
834
975
  *
835
976
  * @param packet - Packet to receive into
977
+ *
836
978
  * @returns 0 on success, negative AVERROR on error:
837
979
  * - AVERROR_EAGAIN: Need more input
838
980
  * - AVERROR_EOF: All packets have been output
@@ -857,6 +999,41 @@ export class CodecContext extends OptionMember {
857
999
  async receivePacket(packet) {
858
1000
  return await this.native.receivePacket(packet.getNative());
859
1001
  }
1002
+ /**
1003
+ * Receive encoded packet synchronously.
1004
+ * Synchronous version of receivePacket.
1005
+ *
1006
+ * Gets an encoded packet from the encoder.
1007
+ * Call after sendFrameSync().
1008
+ *
1009
+ * Direct mapping to avcodec_receive_packet().
1010
+ *
1011
+ * @param packet - Packet to receive into
1012
+ *
1013
+ * @returns 0 on success, negative AVERROR on error:
1014
+ * - AVERROR_EAGAIN: Need more input
1015
+ * - AVERROR_EOF: All packets have been output
1016
+ * - AVERROR_EINVAL: Invalid encoder state
1017
+ *
1018
+ * @example
1019
+ * ```typescript
1020
+ * import { FFmpegError } from 'node-av';
1021
+ * import { AVERROR_EAGAIN, AVERROR_EOF } from 'node-av';
1022
+ *
1023
+ * const ret = ctx.receivePacketSync(packet);
1024
+ * if (ret === AVERROR_EAGAIN || ret === AVERROR_EOF) {
1025
+ * // No packet available
1026
+ * } else {
1027
+ * FFmpegError.throwIfError(ret, 'receivePacketSync');
1028
+ * // Process packet
1029
+ * }
1030
+ * ```
1031
+ *
1032
+ * @see {@link receivePacket} For async version
1033
+ */
1034
+ receivePacketSync(packet) {
1035
+ return this.native.receivePacketSync(packet.getNative());
1036
+ }
860
1037
  /**
861
1038
  * Set hardware pixel format.
862
1039
  *
@@ -864,6 +1041,7 @@ export class CodecContext extends OptionMember {
864
1041
  * Used in get_format callback for hardware decoding.
865
1042
  *
866
1043
  * @param hwFormat - Hardware pixel format
1044
+ *
867
1045
  * @param swFormat - Software pixel format (optional)
868
1046
  *
869
1047
  * @example