node-av 1.3.0 → 2.1.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 (127) hide show
  1. package/README.md +47 -40
  2. package/binding.gyp +12 -0
  3. package/dist/api/bitstream-filter.d.ts +134 -2
  4. package/dist/api/bitstream-filter.js +200 -2
  5. package/dist/api/bitstream-filter.js.map +1 -1
  6. package/dist/api/decoder.d.ts +261 -105
  7. package/dist/api/decoder.js +384 -171
  8. package/dist/api/decoder.js.map +1 -1
  9. package/dist/api/encoder.d.ts +338 -74
  10. package/dist/api/encoder.js +546 -188
  11. package/dist/api/encoder.js.map +1 -1
  12. package/dist/api/filter-presets.d.ts +479 -1513
  13. package/dist/api/filter-presets.js +1044 -2005
  14. package/dist/api/filter-presets.js.map +1 -1
  15. package/dist/api/filter.d.ts +370 -150
  16. package/dist/api/filter.js +647 -364
  17. package/dist/api/filter.js.map +1 -1
  18. package/dist/api/hardware.d.ts +25 -31
  19. package/dist/api/hardware.js +36 -70
  20. package/dist/api/hardware.js.map +1 -1
  21. package/dist/api/index.d.ts +1 -1
  22. package/dist/api/index.js +1 -1
  23. package/dist/api/index.js.map +1 -1
  24. package/dist/api/io-stream.d.ts +6 -0
  25. package/dist/api/io-stream.js +2 -0
  26. package/dist/api/io-stream.js.map +1 -1
  27. package/dist/api/media-input.d.ts +208 -2
  28. package/dist/api/media-input.js +356 -8
  29. package/dist/api/media-input.js.map +1 -1
  30. package/dist/api/media-output.d.ts +142 -104
  31. package/dist/api/media-output.js +446 -179
  32. package/dist/api/media-output.js.map +1 -1
  33. package/dist/api/pipeline.d.ts +82 -17
  34. package/dist/api/pipeline.js +80 -42
  35. package/dist/api/pipeline.js.map +1 -1
  36. package/dist/api/types.d.ts +24 -57
  37. package/dist/api/utils.js +2 -0
  38. package/dist/api/utils.js.map +1 -1
  39. package/dist/lib/audio-fifo.d.ts +103 -0
  40. package/dist/lib/audio-fifo.js +109 -0
  41. package/dist/lib/audio-fifo.js.map +1 -1
  42. package/dist/lib/binding.d.ts +1 -0
  43. package/dist/lib/binding.js.map +1 -1
  44. package/dist/lib/bitstream-filter-context.d.ts +79 -0
  45. package/dist/lib/bitstream-filter-context.js +83 -0
  46. package/dist/lib/bitstream-filter-context.js.map +1 -1
  47. package/dist/lib/bitstream-filter.d.ts +2 -0
  48. package/dist/lib/bitstream-filter.js +2 -0
  49. package/dist/lib/bitstream-filter.js.map +1 -1
  50. package/dist/lib/codec-context.d.ts +168 -0
  51. package/dist/lib/codec-context.js +178 -0
  52. package/dist/lib/codec-context.js.map +1 -1
  53. package/dist/lib/codec-parameters.d.ts +3 -0
  54. package/dist/lib/codec-parameters.js +3 -0
  55. package/dist/lib/codec-parameters.js.map +1 -1
  56. package/dist/lib/codec-parser.d.ts +6 -0
  57. package/dist/lib/codec-parser.js +6 -0
  58. package/dist/lib/codec-parser.js.map +1 -1
  59. package/dist/lib/codec.d.ts +12 -0
  60. package/dist/lib/codec.js +12 -0
  61. package/dist/lib/codec.js.map +1 -1
  62. package/dist/lib/dictionary.d.ts +18 -2
  63. package/dist/lib/dictionary.js +18 -2
  64. package/dist/lib/dictionary.js.map +1 -1
  65. package/dist/lib/error.d.ts +8 -0
  66. package/dist/lib/error.js +9 -0
  67. package/dist/lib/error.js.map +1 -1
  68. package/dist/lib/filter-context.d.ts +119 -2
  69. package/dist/lib/filter-context.js +119 -0
  70. package/dist/lib/filter-context.js.map +1 -1
  71. package/dist/lib/filter-graph.d.ts +80 -0
  72. package/dist/lib/filter-graph.js +84 -0
  73. package/dist/lib/filter-graph.js.map +1 -1
  74. package/dist/lib/filter-inout.d.ts +1 -0
  75. package/dist/lib/filter-inout.js +1 -0
  76. package/dist/lib/filter-inout.js.map +1 -1
  77. package/dist/lib/filter.d.ts +2 -0
  78. package/dist/lib/filter.js +2 -0
  79. package/dist/lib/filter.js.map +1 -1
  80. package/dist/lib/format-context.d.ts +356 -20
  81. package/dist/lib/format-context.js +375 -23
  82. package/dist/lib/format-context.js.map +1 -1
  83. package/dist/lib/frame.d.ts +84 -1
  84. package/dist/lib/frame.js +96 -0
  85. package/dist/lib/frame.js.map +1 -1
  86. package/dist/lib/hardware-device-context.d.ts +8 -0
  87. package/dist/lib/hardware-device-context.js +8 -0
  88. package/dist/lib/hardware-device-context.js.map +1 -1
  89. package/dist/lib/hardware-frames-context.d.ts +55 -0
  90. package/dist/lib/hardware-frames-context.js +57 -0
  91. package/dist/lib/hardware-frames-context.js.map +1 -1
  92. package/dist/lib/input-format.d.ts +43 -3
  93. package/dist/lib/input-format.js +48 -0
  94. package/dist/lib/input-format.js.map +1 -1
  95. package/dist/lib/io-context.d.ts +212 -0
  96. package/dist/lib/io-context.js +228 -0
  97. package/dist/lib/io-context.js.map +1 -1
  98. package/dist/lib/log.d.ts +2 -0
  99. package/dist/lib/log.js +2 -0
  100. package/dist/lib/log.js.map +1 -1
  101. package/dist/lib/native-types.d.ts +39 -1
  102. package/dist/lib/option.d.ts +90 -0
  103. package/dist/lib/option.js +97 -0
  104. package/dist/lib/option.js.map +1 -1
  105. package/dist/lib/output-format.d.ts +4 -0
  106. package/dist/lib/output-format.js +4 -0
  107. package/dist/lib/output-format.js.map +1 -1
  108. package/dist/lib/packet.d.ts +7 -0
  109. package/dist/lib/packet.js +7 -0
  110. package/dist/lib/packet.js.map +1 -1
  111. package/dist/lib/rational.d.ts +1 -0
  112. package/dist/lib/rational.js +1 -0
  113. package/dist/lib/rational.js.map +1 -1
  114. package/dist/lib/software-resample-context.d.ts +64 -0
  115. package/dist/lib/software-resample-context.js +66 -0
  116. package/dist/lib/software-resample-context.js.map +1 -1
  117. package/dist/lib/software-scale-context.d.ts +98 -0
  118. package/dist/lib/software-scale-context.js +102 -0
  119. package/dist/lib/software-scale-context.js.map +1 -1
  120. package/dist/lib/stream.d.ts +1 -0
  121. package/dist/lib/stream.js +1 -0
  122. package/dist/lib/stream.js.map +1 -1
  123. package/dist/lib/utilities.d.ts +60 -0
  124. package/dist/lib/utilities.js +60 -0
  125. package/dist/lib/utilities.js.map +1 -1
  126. package/package.json +18 -18
  127. package/release_notes.md +0 -29
@@ -315,8 +315,11 @@ export class FormatContext extends OptionMember {
315
315
  * Direct mapping to avformat_alloc_output_context2().
316
316
  *
317
317
  * @param oformat - Specific output format to use
318
+ *
318
319
  * @param formatName - Format name (e.g., 'mp4', 'mkv')
320
+ *
319
321
  * @param filename - Filename to guess format from extension
322
+ *
320
323
  * @returns 0 on success, negative AVERROR on error:
321
324
  * - AVERROR_ENOMEM: Memory allocation failure
322
325
  * - AVERROR_EINVAL: Invalid parameters
@@ -357,26 +360,6 @@ export class FormatContext extends OptionMember {
357
360
  freeContext() {
358
361
  this.native.freeContext();
359
362
  }
360
- /**
361
- * Close an input format context.
362
- *
363
- * Closes input file and releases resources.
364
- *
365
- * Direct mapping to avformat_close_input().
366
- *
367
- * @returns Promise that resolves when closed
368
- *
369
- * @example
370
- * ```typescript
371
- * await ctx.closeInput();
372
- * // Input closed and context freed
373
- * ```
374
- *
375
- * @see {@link openInput} To open input
376
- */
377
- async closeInput() {
378
- return await this.native.closeInput();
379
- }
380
363
  /**
381
364
  * Open output file for writing.
382
365
  *
@@ -404,6 +387,32 @@ export class FormatContext extends OptionMember {
404
387
  async openOutput() {
405
388
  return await this.native.openOutput();
406
389
  }
390
+ /**
391
+ * Open output file synchronously.
392
+ * Synchronous version of openOutput.
393
+ *
394
+ * Opens output file for writing.
395
+ * I/O context must be set before calling.
396
+ *
397
+ * Direct mapping to avio_open2().
398
+ *
399
+ * @returns 0 on success, negative AVERROR on error:
400
+ * - AVERROR(EIO): I/O error
401
+ * - AVERROR(ENOMEM): Memory allocation failure
402
+ *
403
+ * @example
404
+ * ```typescript
405
+ * import { FFmpegError } from 'node-av';
406
+ *
407
+ * const ret = ctx.openOutputSync();
408
+ * FFmpegError.throwIfError(ret, 'openOutputSync');
409
+ * ```
410
+ *
411
+ * @see {@link openOutput} For async version
412
+ */
413
+ openOutputSync() {
414
+ return this.native.openOutputSync();
415
+ }
407
416
  /**
408
417
  * Close output file.
409
418
  *
@@ -424,6 +433,25 @@ export class FormatContext extends OptionMember {
424
433
  async closeOutput() {
425
434
  return await this.native.closeOutput();
426
435
  }
436
+ /**
437
+ * Close output file synchronously.
438
+ * Synchronous version of closeOutput.
439
+ *
440
+ * Closes the output file and releases I/O resources.
441
+ *
442
+ * Direct mapping to avio_closep().
443
+ *
444
+ * @example
445
+ * ```typescript
446
+ * ctx.closeOutputSync();
447
+ * // Output file closed
448
+ * ```
449
+ *
450
+ * @see {@link closeOutput} For async version
451
+ */
452
+ closeOutputSync() {
453
+ this.native.closeOutputSync();
454
+ }
427
455
  /**
428
456
  * Open input file for reading.
429
457
  *
@@ -433,8 +461,11 @@ export class FormatContext extends OptionMember {
433
461
  * Direct mapping to avformat_open_input().
434
462
  *
435
463
  * @param url - URL or file path to open
464
+ *
436
465
  * @param fmt - Force specific input format (null for auto-detect)
466
+ *
437
467
  * @param options - Format-specific options
468
+ *
438
469
  * @returns 0 on success, negative AVERROR on error:
439
470
  * - AVERROR_ENOENT: File not found
440
471
  * - AVERROR_INVALIDDATA: Invalid file format
@@ -454,6 +485,78 @@ export class FormatContext extends OptionMember {
454
485
  async openInput(url, fmt = null, options = null) {
455
486
  return await this.native.openInput(url, fmt?.getNative() ?? null, options?.getNative() ?? null);
456
487
  }
488
+ /**
489
+ * Open an input file or URL synchronously.
490
+ * Synchronous version of openInput.
491
+ *
492
+ * Opens a media file or stream for reading.
493
+ * The format is auto-detected if not specified.
494
+ *
495
+ * Direct mapping to avformat_open_input().
496
+ *
497
+ * @param url - File path or URL to open
498
+ *
499
+ * @param fmt - Force specific format (null for auto-detect)
500
+ *
501
+ * @param options - Format-specific options
502
+ *
503
+ * @returns 0 on success, negative AVERROR on error:
504
+ * - AVERROR_EINVAL: Invalid arguments
505
+ * - AVERROR(EIO): I/O error
506
+ * - AVERROR(ENOMEM): Memory allocation failure
507
+ *
508
+ * @example
509
+ * ```typescript
510
+ * import { FFmpegError } from 'node-av';
511
+ *
512
+ * const ret = ctx.openInputSync('input.mp4');
513
+ * FFmpegError.throwIfError(ret, 'openInputSync');
514
+ * ```
515
+ *
516
+ * @see {@link openInput} For async version
517
+ */
518
+ openInputSync(url, fmt = null, options = null) {
519
+ return this.native.openInputSync(url, fmt?.getNative() ?? null, options?.getNative() ?? null);
520
+ }
521
+ /**
522
+ * Close an input format context.
523
+ *
524
+ * Closes input file and releases resources.
525
+ *
526
+ * Direct mapping to avformat_close_input().
527
+ *
528
+ * @returns Promise that resolves when closed
529
+ *
530
+ * @example
531
+ * ```typescript
532
+ * await ctx.closeInput();
533
+ * // Input closed and context freed
534
+ * ```
535
+ *
536
+ * @see {@link openInput} To open input
537
+ */
538
+ async closeInput() {
539
+ return await this.native.closeInput();
540
+ }
541
+ /**
542
+ * Close an input format context synchronously.
543
+ * Synchronous version of closeInput.
544
+ *
545
+ * Closes input file and releases resources.
546
+ *
547
+ * Direct mapping to avformat_close_input().
548
+ *
549
+ * @example
550
+ * ```typescript
551
+ * ctx.closeInputSync();
552
+ * // Input closed and context freed
553
+ * ```
554
+ *
555
+ * @see {@link closeInput} For async version
556
+ */
557
+ closeInputSync() {
558
+ this.native.closeInputSync();
559
+ }
457
560
  /**
458
561
  * Analyze streams to get stream info.
459
562
  *
@@ -463,6 +566,7 @@ export class FormatContext extends OptionMember {
463
566
  * Direct mapping to avformat_find_stream_info().
464
567
  *
465
568
  * @param options - Per-stream options array
569
+ *
466
570
  * @returns >=0 on success, negative AVERROR on error:
467
571
  * - AVERROR_EOF: End of file reached
468
572
  * - AVERROR_ENOMEM: Memory allocation failure
@@ -481,6 +585,35 @@ export class FormatContext extends OptionMember {
481
585
  async findStreamInfo(options = null) {
482
586
  return await this.native.findStreamInfo(options?.map((d) => d.getNative()) ?? null);
483
587
  }
588
+ /**
589
+ * Analyze streams to get stream info synchronously.
590
+ * Synchronous version of findStreamInfo.
591
+ *
592
+ * Reads packet headers to fill in stream information.
593
+ * Should be called after openInputSync for accurate stream data.
594
+ *
595
+ * Direct mapping to avformat_find_stream_info().
596
+ *
597
+ * @param options - Options dictionary (single, not array for sync version)
598
+ *
599
+ * @returns >=0 on success, negative AVERROR on error:
600
+ * - AVERROR_EOF: End of file reached
601
+ * - AVERROR_ENOMEM: Memory allocation failure
602
+ *
603
+ * @example
604
+ * ```typescript
605
+ * import { FFmpegError } from 'node-av';
606
+ *
607
+ * const ret = ctx.findStreamInfoSync();
608
+ * FFmpegError.throwIfError(ret, 'findStreamInfoSync');
609
+ * console.log(`Found ${ctx.nbStreams} streams`);
610
+ * ```
611
+ *
612
+ * @see {@link findStreamInfo} For async version
613
+ */
614
+ findStreamInfoSync(options = null) {
615
+ return this.native.findStreamInfoSync(options?.getNative() ?? null);
616
+ }
484
617
  /**
485
618
  * Read next packet from the input.
486
619
  *
@@ -490,6 +623,7 @@ export class FormatContext extends OptionMember {
490
623
  * Direct mapping to av_read_frame().
491
624
  *
492
625
  * @param pkt - Packet to read into
626
+ *
493
627
  * @returns 0 on success, negative AVERROR on error:
494
628
  * - AVERROR_EOF: End of file
495
629
  * - AVERROR_EAGAIN: Temporarily unavailable
@@ -519,6 +653,46 @@ export class FormatContext extends OptionMember {
519
653
  async readFrame(pkt) {
520
654
  return await this.native.readFrame(pkt.getNative());
521
655
  }
656
+ /**
657
+ * Read next packet from the input synchronously.
658
+ * Synchronous version of readFrame.
659
+ *
660
+ * Reads and returns the next packet in the stream.
661
+ * Packet must be unreferenced after use.
662
+ *
663
+ * Direct mapping to av_read_frame().
664
+ *
665
+ * @param pkt - Packet to read into
666
+ *
667
+ * @returns 0 on success, negative AVERROR on error:
668
+ * - AVERROR_EOF: End of file
669
+ * - AVERROR_EAGAIN: Temporarily unavailable
670
+ *
671
+ * @example
672
+ * ```typescript
673
+ * import { FFmpegError } from 'node-av';
674
+ * import { AVERROR_EOF } from 'node-av';
675
+ *
676
+ * const packet = new Packet();
677
+ * packet.alloc();
678
+ *
679
+ * let ret;
680
+ * while ((ret = ctx.readFrameSync(packet)) >= 0) {
681
+ * // Process packet
682
+ * console.log(`Stream ${packet.streamIndex}, PTS: ${packet.pts}`);
683
+ * packet.unref();
684
+ * }
685
+ *
686
+ * if (ret !== AVERROR_EOF) {
687
+ * FFmpegError.throwIfError(ret, 'readFrameSync');
688
+ * }
689
+ * ```
690
+ *
691
+ * @see {@link readFrame} For async version
692
+ */
693
+ readFrameSync(pkt) {
694
+ return this.native.readFrameSync(pkt.getNative());
695
+ }
522
696
  /**
523
697
  * Seek to timestamp in stream.
524
698
  *
@@ -527,8 +701,11 @@ export class FormatContext extends OptionMember {
527
701
  * Direct mapping to av_seek_frame().
528
702
  *
529
703
  * @param streamIndex - Stream to seek in (-1 for default)
704
+ *
530
705
  * @param timestamp - Target timestamp in stream time base
706
+ *
531
707
  * @param flags - Seek flags (AVSEEK_FLAG_*)
708
+ *
532
709
  * @returns >=0 on success, negative AVERROR on error:
533
710
  * - AVERROR_EINVAL: Invalid parameters
534
711
  * - AVERROR_EOF: Seek beyond file
@@ -548,6 +725,41 @@ export class FormatContext extends OptionMember {
548
725
  async seekFrame(streamIndex, timestamp, flags = AVFLAG_NONE) {
549
726
  return await this.native.seekFrame(streamIndex, timestamp, flags);
550
727
  }
728
+ /**
729
+ * Seek to timestamp in stream synchronously.
730
+ * Synchronous version of seekFrame.
731
+ *
732
+ * Seeks to closest keyframe at or before timestamp.
733
+ * Timestamp is in stream timebase units.
734
+ *
735
+ * Direct mapping to av_seek_frame().
736
+ *
737
+ * @param streamIndex - Stream to seek in (-1 for default)
738
+ *
739
+ * @param timestamp - Target timestamp in stream timebase
740
+ *
741
+ * @param flags - Seek flags (AVSEEK_FLAG_*)
742
+ *
743
+ * @returns >=0 on success, negative AVERROR on error:
744
+ * - AVERROR_EINVAL: Invalid arguments
745
+ * - AVERROR(EIO): I/O error
746
+ *
747
+ * @example
748
+ * ```typescript
749
+ * import { FFmpegError } from 'node-av';
750
+ * import { AVSEEK_FLAG_BACKWARD } from 'node-av/constants';
751
+ *
752
+ * // Seek to 10 seconds
753
+ * const timestamp = 10n * 1000000n; // Assuming microsecond timebase
754
+ * const ret = ctx.seekFrameSync(-1, timestamp, AVSEEK_FLAG_BACKWARD);
755
+ * FFmpegError.throwIfError(ret, 'seekFrameSync');
756
+ * ```
757
+ *
758
+ * @see {@link seekFrame} For async version
759
+ */
760
+ seekFrameSync(streamIndex, timestamp, flags = AVFLAG_NONE) {
761
+ return this.native.seekFrameSync(streamIndex, timestamp, flags);
762
+ }
551
763
  /**
552
764
  * Seek to timestamp with bounds.
553
765
  *
@@ -556,10 +768,15 @@ export class FormatContext extends OptionMember {
556
768
  * Direct mapping to avformat_seek_file().
557
769
  *
558
770
  * @param streamIndex - Stream to seek in (-1 for default)
771
+ *
559
772
  * @param minTs - Minimum acceptable timestamp
773
+ *
560
774
  * @param ts - Target timestamp
775
+ *
561
776
  * @param maxTs - Maximum acceptable timestamp
777
+ *
562
778
  * @param flags - Seek flags
779
+ *
563
780
  * @returns >=0 on success, negative AVERROR on error
564
781
  *
565
782
  * @example
@@ -591,6 +808,7 @@ export class FormatContext extends OptionMember {
591
808
  * Direct mapping to avformat_write_header().
592
809
  *
593
810
  * @param options - Muxer-specific options
811
+ *
594
812
  * @returns 0 on success, negative AVERROR on error:
595
813
  * - AVERROR_EINVAL: Invalid parameters
596
814
  * - AVERROR_EIO: I/O error
@@ -610,6 +828,33 @@ export class FormatContext extends OptionMember {
610
828
  async writeHeader(options = null) {
611
829
  return await this.native.writeHeader(options?.getNative() ?? null);
612
830
  }
831
+ /**
832
+ * Write file header synchronously.
833
+ * Synchronous version of writeHeader.
834
+ *
835
+ * Writes format header to output file.
836
+ * Must be called before writing packets.
837
+ *
838
+ * Direct mapping to avformat_write_header().
839
+ *
840
+ * @param options - Muxer-specific options
841
+ *
842
+ * @returns 0 on success, negative AVERROR on error:
843
+ * - AVERROR_EINVAL: Invalid parameters
844
+ *
845
+ * @example
846
+ * ```typescript
847
+ * import { FFmpegError } from 'node-av';
848
+ *
849
+ * const ret = ctx.writeHeaderSync();
850
+ * FFmpegError.throwIfError(ret, 'writeHeaderSync');
851
+ * ```
852
+ *
853
+ * @see {@link writeHeader} For async version
854
+ */
855
+ writeHeaderSync(options = null) {
856
+ return this.native.writeHeaderSync(options?.getNative() ?? null);
857
+ }
613
858
  /**
614
859
  * Write packet to output.
615
860
  *
@@ -619,6 +864,7 @@ export class FormatContext extends OptionMember {
619
864
  * Direct mapping to av_write_frame().
620
865
  *
621
866
  * @param pkt - Packet to write (null to flush)
867
+ *
622
868
  * @returns 0 on success, negative AVERROR on error:
623
869
  * - AVERROR_EINVAL: Invalid packet
624
870
  * - AVERROR_EIO: I/O error
@@ -636,6 +882,32 @@ export class FormatContext extends OptionMember {
636
882
  async writeFrame(pkt) {
637
883
  return await this.native.writeFrame(pkt ? pkt.getNative() : null);
638
884
  }
885
+ /**
886
+ * Write packet to output synchronously.
887
+ * Synchronous version of writeFrame.
888
+ *
889
+ * Writes a packet directly without interleaving.
890
+ * Caller must handle correct interleaving.
891
+ *
892
+ * Direct mapping to av_write_frame().
893
+ *
894
+ * @param pkt - Packet to write (null to flush)
895
+ *
896
+ * @returns 0 on success, negative AVERROR on error
897
+ *
898
+ * @example
899
+ * ```typescript
900
+ * import { FFmpegError } from 'node-av';
901
+ *
902
+ * const ret = ctx.writeFrameSync(packet);
903
+ * FFmpegError.throwIfError(ret, 'writeFrameSync');
904
+ * ```
905
+ *
906
+ * @see {@link writeFrame} For async version
907
+ */
908
+ writeFrameSync(pkt) {
909
+ return this.native.writeFrameSync(pkt ? pkt.getNative() : null);
910
+ }
639
911
  /**
640
912
  * Write packet with automatic interleaving.
641
913
  *
@@ -645,6 +917,7 @@ export class FormatContext extends OptionMember {
645
917
  * Direct mapping to av_interleaved_write_frame().
646
918
  *
647
919
  * @param pkt - Packet to write (null to flush)
920
+ *
648
921
  * @returns 0 on success, negative AVERROR on error:
649
922
  * - AVERROR_EINVAL: Invalid packet
650
923
  * - AVERROR_EIO: I/O error
@@ -666,6 +939,38 @@ export class FormatContext extends OptionMember {
666
939
  async interleavedWriteFrame(pkt) {
667
940
  return await this.native.interleavedWriteFrame(pkt ? pkt.getNative() : null);
668
941
  }
942
+ /**
943
+ * Write packet with automatic interleaving synchronously.
944
+ * Synchronous version of interleavedWriteFrame.
945
+ *
946
+ * Writes packet with proper interleaving for muxing.
947
+ * Preferred method for writing packets.
948
+ *
949
+ * Direct mapping to av_interleaved_write_frame().
950
+ *
951
+ * @param pkt - Packet to write (null to flush)
952
+ *
953
+ * @returns 0 on success, negative AVERROR on error:
954
+ * - AVERROR_EINVAL: Invalid parameters
955
+ * - AVERROR(EIO): I/O error
956
+ *
957
+ * @example
958
+ * ```typescript
959
+ * import { FFmpegError } from 'node-av';
960
+ *
961
+ * // Write packet
962
+ * const ret = ctx.interleavedWriteFrameSync(packet);
963
+ * FFmpegError.throwIfError(ret, 'interleavedWriteFrameSync');
964
+ *
965
+ * // Flush interleaved packets
966
+ * ctx.interleavedWriteFrameSync(null);
967
+ * ```
968
+ *
969
+ * @see {@link interleavedWriteFrame} For async version
970
+ */
971
+ interleavedWriteFrameSync(pkt) {
972
+ return this.native.interleavedWriteFrameSync(pkt ? pkt.getNative() : null);
973
+ }
669
974
  /**
670
975
  * Write file trailer.
671
976
  *
@@ -691,6 +996,31 @@ export class FormatContext extends OptionMember {
691
996
  async writeTrailer() {
692
997
  return await this.native.writeTrailer();
693
998
  }
999
+ /**
1000
+ * Write file trailer synchronously.
1001
+ * Synchronous version of writeTrailer.
1002
+ *
1003
+ * Finalizes the output file, writing index and metadata.
1004
+ * Must be called to properly close output files.
1005
+ *
1006
+ * Direct mapping to av_write_trailer().
1007
+ *
1008
+ * @returns 0 on success, negative AVERROR on error
1009
+ *
1010
+ * @example
1011
+ * ```typescript
1012
+ * import { FFmpegError } from 'node-av';
1013
+ *
1014
+ * const ret = ctx.writeTrailerSync();
1015
+ * FFmpegError.throwIfError(ret, 'writeTrailerSync');
1016
+ * // File is now finalized
1017
+ * ```
1018
+ *
1019
+ * @see {@link writeTrailer} For async version
1020
+ */
1021
+ writeTrailerSync() {
1022
+ return this.native.writeTrailerSync();
1023
+ }
694
1024
  /**
695
1025
  * Flush buffered data.
696
1026
  *
@@ -700,12 +1030,31 @@ export class FormatContext extends OptionMember {
700
1030
  *
701
1031
  * @example
702
1032
  * ```typescript
703
- * ctx.flush();
1033
+ * await ctx.flush();
704
1034
  * // Buffered data written to output
705
1035
  * ```
706
1036
  */
707
- flush() {
708
- this.native.flush();
1037
+ async flush() {
1038
+ await this.native.flush();
1039
+ }
1040
+ /**
1041
+ * Flush buffered data synchronously.
1042
+ * Synchronous version of flush.
1043
+ *
1044
+ * Flushes any buffered packets in muxers.
1045
+ *
1046
+ * Direct mapping to avio_flush().
1047
+ *
1048
+ * @example
1049
+ * ```typescript
1050
+ * ctx.flushSync();
1051
+ * // Buffered data written to output
1052
+ * ```
1053
+ *
1054
+ * @see {@link flush} For async version
1055
+ */
1056
+ flushSync() {
1057
+ this.native.flushSync();
709
1058
  }
710
1059
  /**
711
1060
  * Print format information.
@@ -716,7 +1065,9 @@ export class FormatContext extends OptionMember {
716
1065
  * Direct mapping to av_dump_format().
717
1066
  *
718
1067
  * @param index - Stream index to highlight (-1 for none)
1068
+ *
719
1069
  * @param url - URL to display
1070
+ *
720
1071
  * @param isOutput - True for output format, false for input
721
1072
  *
722
1073
  * @example
@@ -754,6 +1105,7 @@ export class FormatContext extends OptionMember {
754
1105
  * Direct mapping to avformat_new_stream().
755
1106
  *
756
1107
  * @param c - Codec for the stream (optional)
1108
+ *
757
1109
  * @returns New stream instance
758
1110
  *
759
1111
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"format-context.js","sourceRoot":"","sources":["../../src/lib/format-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format-context.js","sourceRoot":"","sources":["../../src/lib/format-context.ts"],"names":[],"mappings":"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"}