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
@@ -1,3 +1,4 @@
1
+ import { closeSync, openSync, readSync } from 'fs';
1
2
  import { open } from 'fs/promises';
2
3
  import { resolve } from 'path';
3
4
  import { AVFLAG_NONE, AVMEDIA_TYPE_AUDIO, AVMEDIA_TYPE_VIDEO } from '../constants/constants.js';
@@ -48,6 +49,7 @@ export class MediaInput {
48
49
  ioContext;
49
50
  /**
50
51
  * @param formatContext - Opened format context
52
+ *
51
53
  * @internal
52
54
  */
53
55
  constructor(formatContext) {
@@ -62,6 +64,7 @@ export class MediaInput {
62
64
  * Direct mapping to av_probe_input_format().
63
65
  *
64
66
  * @param input - File path or buffer to probe
67
+ *
65
68
  * @returns Format information or null if unrecognized
66
69
  *
67
70
  * @example
@@ -133,6 +136,89 @@ export class MediaInput {
133
136
  return null;
134
137
  }
135
138
  }
139
+ /**
140
+ * Probe media format without fully opening the file synchronously.
141
+ * Synchronous version of probeFormat.
142
+ *
143
+ * Detects format by analyzing file headers and content.
144
+ * Useful for format validation before processing.
145
+ *
146
+ * Direct mapping to av_probe_input_format().
147
+ *
148
+ * @param input - File path or buffer to probe
149
+ *
150
+ * @returns Format information or null if unrecognized
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * const info = MediaInput.probeFormatSync('video.mp4');
155
+ * if (info) {
156
+ * console.log(`Format: ${info.format}`);
157
+ * console.log(`Confidence: ${info.confidence}%`);
158
+ * }
159
+ * ```
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * // Probe from buffer
164
+ * const buffer = fs.readFileSync('video.webm');
165
+ * const info = MediaInput.probeFormatSync(buffer);
166
+ * console.log(`MIME type: ${info?.mimeType}`);
167
+ * ```
168
+ *
169
+ * @see {@link probeFormat} For async version
170
+ */
171
+ static probeFormatSync(input) {
172
+ try {
173
+ if (Buffer.isBuffer(input)) {
174
+ // Probe from buffer
175
+ const format = InputFormat.probe(input);
176
+ if (!format) {
177
+ return null;
178
+ }
179
+ return {
180
+ format: format.name ?? 'unknown',
181
+ longName: format.longName ?? undefined,
182
+ extensions: format.extensions ?? undefined,
183
+ mimeType: format.mimeType ?? undefined,
184
+ confidence: 100, // Direct probe always has high confidence
185
+ };
186
+ }
187
+ else {
188
+ // For files, read first part and probe
189
+ let fd;
190
+ try {
191
+ fd = openSync(input, 'r');
192
+ // Read first 64KB for probing
193
+ const buffer = Buffer.alloc(65536);
194
+ const bytesRead = readSync(fd, buffer, 0, 65536, 0);
195
+ const probeBuffer = buffer.subarray(0, bytesRead);
196
+ const format = InputFormat.probe(probeBuffer, input);
197
+ if (!format) {
198
+ return null;
199
+ }
200
+ return {
201
+ format: format.name ?? 'unknown',
202
+ longName: format.longName ?? undefined,
203
+ extensions: format.extensions ?? undefined,
204
+ mimeType: format.mimeType ?? undefined,
205
+ confidence: 90, // File-based probe with filename hint
206
+ };
207
+ }
208
+ catch {
209
+ // If file reading fails, return null
210
+ return null;
211
+ }
212
+ finally {
213
+ if (fd !== undefined)
214
+ closeSync(fd);
215
+ }
216
+ }
217
+ }
218
+ catch {
219
+ return null;
220
+ }
221
+ }
136
222
  static async open(input, options = {}) {
137
223
  // Check if input is raw data
138
224
  if (typeof input === 'object' && 'type' in input && ('width' in input || 'sampleRate' in input)) {
@@ -231,6 +317,92 @@ export class MediaInput {
231
317
  }
232
318
  }
233
319
  }
320
+ static openSync(input, options = {}) {
321
+ // Check if input is raw data
322
+ if (typeof input === 'object' && 'type' in input && ('width' in input || 'sampleRate' in input)) {
323
+ // Build options for raw data
324
+ const rawOptions = {
325
+ bufferSize: options.bufferSize,
326
+ format: options.format ?? (input.type === 'video' ? 'rawvideo' : 's16le'),
327
+ options: {
328
+ ...options.options,
329
+ },
330
+ };
331
+ if (input.type === 'video') {
332
+ rawOptions.options = {
333
+ ...rawOptions.options,
334
+ video_size: `${input.width}x${input.height}`,
335
+ pixel_format: avGetPixFmtName(input.pixelFormat) ?? 'yuv420p',
336
+ framerate: new Rational(input.frameRate.num, input.frameRate.den).toString(),
337
+ };
338
+ }
339
+ else {
340
+ rawOptions.options = {
341
+ ...rawOptions.options,
342
+ sample_rate: input.sampleRate,
343
+ channels: input.channels,
344
+ sample_fmt: avGetSampleFmtName(input.sampleFormat) ?? 's16le',
345
+ };
346
+ }
347
+ // Open with the raw data source
348
+ return MediaInput.openSync(input.input, rawOptions);
349
+ }
350
+ // Original implementation for non-raw data
351
+ const formatContext = new FormatContext();
352
+ let ioContext;
353
+ let optionsDict = null;
354
+ let inputFormat = null;
355
+ try {
356
+ // Create options dictionary if options are provided
357
+ if (options.options) {
358
+ optionsDict = Dictionary.fromObject(options.options);
359
+ }
360
+ // Find input format if specified
361
+ if (options.format) {
362
+ inputFormat = InputFormat.findInputFormat(options.format);
363
+ if (!inputFormat) {
364
+ throw new Error(`Input format '${options.format}' not found`);
365
+ }
366
+ }
367
+ if (typeof input === 'string') {
368
+ // File path or URL - resolve relative paths to absolute
369
+ // Check if it's a URL (starts with protocol://) or a file path
370
+ const isUrl = /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(input);
371
+ const resolvedInput = isUrl ? input : resolve(input);
372
+ const ret = formatContext.openInputSync(resolvedInput, inputFormat, optionsDict);
373
+ FFmpegError.throwIfError(ret, 'Failed to open input');
374
+ }
375
+ else {
376
+ throw new TypeError('Invalid input type. Expected file path, URL, or Buffer');
377
+ }
378
+ // Find stream information
379
+ const ret = formatContext.findStreamInfoSync(null);
380
+ FFmpegError.throwIfError(ret, 'Failed to find stream info');
381
+ const mediaInput = new MediaInput(formatContext);
382
+ mediaInput.ioContext = ioContext;
383
+ // After successful creation, streams should be available
384
+ mediaInput._streams = formatContext.streams ?? [];
385
+ return mediaInput;
386
+ }
387
+ catch (error) {
388
+ // Clean up only on error
389
+ if (ioContext) {
390
+ // Clear the pb reference first
391
+ formatContext.pb = null;
392
+ // Free the IOContext
393
+ ioContext.freeContext();
394
+ }
395
+ // Clean up FormatContext
396
+ formatContext.closeInputSync();
397
+ throw error;
398
+ }
399
+ finally {
400
+ // Clean up options dictionary
401
+ if (optionsDict) {
402
+ optionsDict.free();
403
+ }
404
+ }
405
+ }
234
406
  /**
235
407
  * Get all streams in the media.
236
408
  *
@@ -322,6 +494,7 @@ export class MediaInput {
322
494
  * Returns undefined if stream doesn't exist.
323
495
  *
324
496
  * @param index - Video stream index (default: 0)
497
+ *
325
498
  * @returns Video stream or undefined
326
499
  *
327
500
  * @example
@@ -352,6 +525,7 @@ export class MediaInput {
352
525
  * Returns undefined if stream doesn't exist.
353
526
  *
354
527
  * @param index - Audio stream index (default: 0)
528
+ *
355
529
  * @returns Audio stream or undefined
356
530
  *
357
531
  * @example
@@ -384,6 +558,7 @@ export class MediaInput {
384
558
  * Direct mapping to av_find_best_stream().
385
559
  *
386
560
  * @param type - Media type to find
561
+ *
387
562
  * @returns Best stream or undefined if not found
388
563
  *
389
564
  * @example
@@ -413,7 +588,9 @@ export class MediaInput {
413
588
  * Direct mapping to av_read_frame().
414
589
  *
415
590
  * @param index - Optional stream index to filter
591
+ *
416
592
  * @yields {Packet} Demuxed packets (must be freed by caller)
593
+ *
417
594
  * @throws {Error} If packet cloning fails
418
595
  *
419
596
  * @example
@@ -468,6 +645,74 @@ export class MediaInput {
468
645
  packet.free();
469
646
  }
470
647
  }
648
+ /**
649
+ * Read packets from media as generator synchronously.
650
+ * Synchronous version of packets.
651
+ *
652
+ * Yields demuxed packets for processing.
653
+ * Automatically handles packet memory management.
654
+ * Optionally filters packets by stream index.
655
+ *
656
+ * Direct mapping to av_read_frame().
657
+ *
658
+ * @param index - Optional stream index to filter
659
+ *
660
+ * @yields {Packet} Demuxed packets (must be freed by caller)
661
+ *
662
+ * @throws {Error} If packet cloning fails
663
+ *
664
+ * @example
665
+ * ```typescript
666
+ * // Read all packets
667
+ * for (const packet of input.packetsSync()) {
668
+ * console.log(`Packet: stream=${packet.streamIndex}, pts=${packet.pts}`);
669
+ * packet.free();
670
+ * }
671
+ * ```
672
+ *
673
+ * @example
674
+ * ```typescript
675
+ * // Read only video packets
676
+ * const videoStream = input.video();
677
+ * for (const packet of input.packetsSync(videoStream.index)) {
678
+ * // Process video packet
679
+ * packet.free();
680
+ * }
681
+ * ```
682
+ *
683
+ * @see {@link packets} For async version
684
+ */
685
+ *packetsSync(index) {
686
+ const packet = new Packet();
687
+ packet.alloc();
688
+ try {
689
+ while (true) {
690
+ const ret = this.formatContext.readFrameSync(packet);
691
+ if (ret < 0) {
692
+ // End of file or error
693
+ break;
694
+ }
695
+ if (index === undefined || packet.streamIndex === index) {
696
+ // Clone the packet for the user
697
+ // This creates a new Packet object that shares the same data buffer
698
+ // through reference counting. The data won't be freed until both
699
+ // the original and the clone are unreferenced.
700
+ const cloned = packet.clone();
701
+ if (!cloned) {
702
+ throw new Error('Failed to clone packet (out of memory)');
703
+ }
704
+ yield cloned;
705
+ }
706
+ // Unreference the original packet's data buffer
707
+ // This allows us to reuse the packet object for the next readFrame()
708
+ // The data itself is still alive because the clone has a reference
709
+ packet.unref();
710
+ }
711
+ }
712
+ finally {
713
+ packet.free();
714
+ }
715
+ }
471
716
  /**
472
717
  * Seek to timestamp in media.
473
718
  *
@@ -477,8 +722,11 @@ export class MediaInput {
477
722
  * Direct mapping to av_seek_frame().
478
723
  *
479
724
  * @param timestamp - Target position in seconds
725
+ *
480
726
  * @param streamIndex - Stream index or -1 for global (default: -1)
727
+ *
481
728
  * @param flags - Seek flags (default: AVFLAG_NONE)
729
+ *
482
730
  * @returns 0 on success, negative on error
483
731
  *
484
732
  * @example
@@ -503,6 +751,45 @@ export class MediaInput {
503
751
  const ts = BigInt(Math.floor(timestamp * 1000000));
504
752
  return this.formatContext.seekFrame(streamIndex, ts, flags);
505
753
  }
754
+ /**
755
+ * Seek to timestamp in media synchronously.
756
+ * Synchronous version of seek.
757
+ *
758
+ * Seeks to the specified position in seconds.
759
+ * Can seek in specific stream or globally.
760
+ *
761
+ * Direct mapping to av_seek_frame().
762
+ *
763
+ * @param timestamp - Target position in seconds
764
+ *
765
+ * @param streamIndex - Stream index or -1 for global (default: -1)
766
+ *
767
+ * @param flags - Seek flags (default: AVFLAG_NONE)
768
+ *
769
+ * @returns 0 on success, negative on error
770
+ *
771
+ * @example
772
+ * ```typescript
773
+ * // Seek to 30 seconds
774
+ * const ret = input.seekSync(30);
775
+ * FFmpegError.throwIfError(ret, 'seek failed');
776
+ * ```
777
+ *
778
+ * @example
779
+ * ```typescript
780
+ * import { AVSEEK_FLAG_BACKWARD } from 'node-av/constants';
781
+ *
782
+ * // Seek to keyframe before 60 seconds
783
+ * input.seekSync(60, -1, AVSEEK_FLAG_BACKWARD);
784
+ * ```
785
+ *
786
+ * @see {@link seek} For async version
787
+ */
788
+ seekSync(timestamp, streamIndex = -1, flags = AVFLAG_NONE) {
789
+ // Convert seconds to AV_TIME_BASE
790
+ const ts = BigInt(Math.floor(timestamp * 1000000));
791
+ return this.formatContext.seekFrameSync(streamIndex, ts, flags);
792
+ }
506
793
  /**
507
794
  * Close media input and free resources.
508
795
  *
@@ -537,6 +824,41 @@ export class MediaInput {
537
824
  this.ioContext = undefined;
538
825
  }
539
826
  }
827
+ /**
828
+ * Close media input and free resources synchronously.
829
+ * Synchronous version of close.
830
+ *
831
+ * Releases format context and I/O context.
832
+ * Safe to call multiple times.
833
+ * Automatically called by Symbol.dispose.
834
+ *
835
+ * Direct mapping to avformat_close_input().
836
+ *
837
+ * @example
838
+ * ```typescript
839
+ * const input = MediaInput.openSync('video.mp4');
840
+ * try {
841
+ * // Use input
842
+ * } finally {
843
+ * input.closeSync();
844
+ * }
845
+ * ```
846
+ *
847
+ * @see {@link close} For async version
848
+ */
849
+ closeSync() {
850
+ // IMPORTANT: Clear pb reference FIRST to prevent use-after-free
851
+ if (this.ioContext) {
852
+ this.formatContext.pb = null;
853
+ }
854
+ // Close FormatContext
855
+ this.formatContext.closeInputSync();
856
+ // NOW we can safely free the IOContext
857
+ if (this.ioContext) {
858
+ this.ioContext.freeContext();
859
+ this.ioContext = undefined;
860
+ }
861
+ }
540
862
  /**
541
863
  * Get underlying format context.
542
864
  *
@@ -568,5 +890,24 @@ export class MediaInput {
568
890
  async [Symbol.asyncDispose]() {
569
891
  await this.close();
570
892
  }
893
+ /**
894
+ * Dispose of media input synchronously.
895
+ *
896
+ * Implements Disposable interface for automatic cleanup.
897
+ * Equivalent to calling closeSync().
898
+ *
899
+ * @example
900
+ * ```typescript
901
+ * {
902
+ * using input = MediaInput.openSync('video.mp4');
903
+ * // Process media...
904
+ * } // Automatically closed
905
+ * ```
906
+ *
907
+ * @see {@link closeSync} For manual cleanup
908
+ */
909
+ [Symbol.dispose]() {
910
+ this.closeSync();
911
+ }
571
912
  }
572
913
  //# sourceMappingURL=media-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-input.js","sourceRoot":"","sources":["../../src/api/media-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7I,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,OAAO,UAAU;IACb,aAAa,CAAgB;IAC7B,QAAQ,GAAa,EAAE,CAAC;IACxB,SAAS,CAAa;IAE9B;;;OAGG;IACH,YAAoB,aAA4B;QAC9C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAsB;QAO7C,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,oBAAoB;gBACpB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,OAAO;oBACL,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,SAAS;oBAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;oBACtC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,SAAS;oBAC1C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;oBACtC,UAAU,EAAE,GAAG,EAAE,0CAA0C;iBAC5D,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,uCAAuC;gBACvC,IAAI,UAAU,CAAC;gBACf,IAAI,CAAC;oBACH,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACpC,8BAA8B;oBAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACnC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;oBAEjE,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;oBAClD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;oBAErD,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,OAAO,IAAI,CAAC;oBACd,CAAC;oBAED,OAAO;wBACL,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,SAAS;wBAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;wBACtC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,SAAS;wBAC1C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;wBACtC,UAAU,EAAE,EAAE,EAAE,sCAAsC;qBACvD,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,qCAAqC;oBACrC,OAAO,IAAI,CAAC;gBACd,CAAC;wBAAS,CAAC;oBACT,MAAM,UAAU,EAAE,KAAK,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IA6DD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAgC,EAAE,UAA6B,EAAE;QACjF,6BAA6B;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK,CAAC,EAAE,CAAC;YAChG,6BAA6B;YAC7B,MAAM,UAAU,GAAsB;gBACpC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;gBACzE,OAAO,EAAE;oBACP,GAAG,OAAO,CAAC,OAAO;iBACnB;aACF,CAAC;YAEF,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,UAAU,CAAC,OAAO,GAAG;oBACnB,GAAG,UAAU,CAAC,OAAO;oBACrB,UAAU,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;oBAC5C,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,SAAS;oBAC7D,SAAS,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;iBAC7E,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,OAAO,GAAG;oBACnB,GAAG,UAAU,CAAC,OAAO;oBACrB,WAAW,EAAE,KAAK,CAAC,UAAU;oBAC7B,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,OAAO;iBAC9D,CAAC;YACJ,CAAC;YAED,gCAAgC;YAChC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;QAED,2CAA2C;QAC3C,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,IAAI,SAAgC,CAAC;QACrC,IAAI,WAAW,GAAsB,IAAI,CAAC;QAC1C,IAAI,WAAW,GAAuB,IAAI,CAAC;QAE3C,IAAI,CAAC;YACH,oDAAoD;YACpD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACvD,CAAC;YAED,iCAAiC;YACjC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,WAAW,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,wDAAwD;gBACxD,+DAA+D;gBAC/D,MAAM,KAAK,GAAG,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1D,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAErD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;gBACnF,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,+BAA+B;gBAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACzD,CAAC;gBACD,sDAAsD;gBACtD,aAAa,CAAC,YAAY,EAAE,CAAC;gBAC7B,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;gBACvE,aAAa,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC7B,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;gBACxE,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;YAChF,CAAC;YAED,0BAA0B;YAC1B,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACrD,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;YAE5D,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;YACjD,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;YAEjC,yDAAyD;YACzD,UAAU,CAAC,QAAQ,GAAG,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC;YAElD,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yBAAyB;YACzB,IAAI,SAAS,EAAE,CAAC;gBACd,+BAA+B;gBAC/B,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC;gBACxB,qBAAqB;gBACrB,SAAS,CAAC,WAAW,EAAE,CAAC;YAC1B,CAAC;YACD,yBAAyB;YACzB,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,8BAA8B;YAC9B,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;;;;;;OASG;IACH,IAAI,QAAQ;QACV,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QACzC,sDAAsD;QACtD,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;IACpC,CAAC;IAED;;;;;;;;;OASG;IACH,IAAI,OAAO;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAC3C,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QACvC,sDAAsD;QACtD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAChC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACrD,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,IAAI,SAAS,CAAC;IACvD,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,IAAI,gBAAgB,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,KAAK,CAAC,KAAK,GAAG,CAAC;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,KAAK,kBAAkB,CAAC,CAAC;QACzF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,KAAK,CAAC,KAAK,GAAG,CAAC;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,KAAK,kBAAkB,CAAC,CAAC;QACzF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,cAAc,CAAC,IAAiB;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,eAAe,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,KAAK,CAAC,CAAC,OAAO,CAAC,KAAc;QAC3B,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACvD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;oBACZ,uBAAuB;oBACvB,MAAM;gBACR,CAAC;gBAED,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;oBACxD,gCAAgC;oBAChC,oEAAoE;oBACpE,iEAAiE;oBACjE,+CAA+C;oBAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;oBAC5D,CAAC;oBACD,MAAM,MAAM,CAAC;gBACf,CAAC;gBACD,gDAAgD;gBAChD,qEAAqE;gBACrE,mEAAmE;gBACnE,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,QAAoB,WAAW;QAC7E,kCAAkC;QAClC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,KAAK;QACT,gEAAgE;QAChE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC;QAC/B,CAAC;QAED,sBAAsB;QACtB,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAEtC,uCAAuC;QACvC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"media-input.js","sourceRoot":"","sources":["../../src/api/media-input.ts"],"names":[],"mappings":"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"}
@@ -59,7 +59,7 @@ export interface StreamDescription {
59
59
  * @see {@link Encoder} For encoding frames to packets
60
60
  * @see {@link FormatContext} For low-level API
61
61
  */
62
- export declare class MediaOutput implements AsyncDisposable {
62
+ export declare class MediaOutput implements AsyncDisposable, Disposable {
63
63
  private formatContext;
64
64
  private streams;
65
65
  private ioContext?;
@@ -81,7 +81,9 @@ export declare class MediaOutput implements AsyncDisposable {
81
81
  * Direct mapping to avformat_alloc_output_context2() and avio_open2().
82
82
  *
83
83
  * @param target - File path, URL, or I/O callbacks
84
+ *
84
85
  * @param options - Output configuration options
86
+ *
85
87
  * @returns Opened media output instance
86
88
  *
87
89
  * @throws {Error} If format required for custom I/O
@@ -126,6 +128,43 @@ export declare class MediaOutput implements AsyncDisposable {
126
128
  * @see {@link IOOutputCallbacks} For custom I/O interface
127
129
  */
128
130
  static open(target: string | IOOutputCallbacks, options?: MediaOutputOptions): Promise<MediaOutput>;
131
+ /**
132
+ * Open media output for writing synchronously.
133
+ * Synchronous version of open.
134
+ *
135
+ * Creates and configures output context for muxing.
136
+ * Automatically creates directories for file output.
137
+ * Supports files, URLs, and custom I/O callbacks.
138
+ *
139
+ * Direct mapping to avformat_alloc_output_context2() and avio_open2().
140
+ *
141
+ * @param target - File path, URL, or I/O callbacks
142
+ *
143
+ * @param options - Output configuration options
144
+ *
145
+ * @returns Opened media output instance
146
+ *
147
+ * @throws {Error} If format required for custom I/O
148
+ *
149
+ * @throws {FFmpegError} If allocation or opening fails
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * // Create file output
154
+ * using output = MediaOutput.openSync('output.mp4');
155
+ * ```
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * // Create output with specific format
160
+ * using output = MediaOutput.openSync('output.ts', {
161
+ * format: 'mpegts'
162
+ * });
163
+ * ```
164
+ *
165
+ * @see {@link open} For async version
166
+ */
167
+ static openSync(target: string | IOOutputCallbacks, options?: MediaOutputOptions): MediaOutput;
129
168
  /**
130
169
  * Add a stream to the output.
131
170
  *
@@ -140,8 +179,11 @@ export declare class MediaOutput implements AsyncDisposable {
140
179
  * Direct mapping to avformat_new_stream().
141
180
  *
142
181
  * @param source - Encoder or stream to add
182
+ *
143
183
  * @param options - Stream configuration options
184
+ *
144
185
  * @param options.timeBase - Optional custom timebase for the stream
186
+ *
145
187
  * @returns Stream index for packet writing
146
188
  *
147
189
  * @throws {Error} If called after packets have been written or output closed
@@ -183,7 +225,9 @@ export declare class MediaOutput implements AsyncDisposable {
183
225
  * Direct mapping to avformat_write_header() (on first packet) and av_interleaved_write_frame().
184
226
  *
185
227
  * @param packet - Packet to write
228
+ *
186
229
  * @param streamIndex - Target stream index
230
+ *
187
231
  * @throws {Error} If stream invalid or encoder not initialized
188
232
  *
189
233
  * @throws {FFmpegError} If write fails
@@ -212,6 +256,54 @@ export declare class MediaOutput implements AsyncDisposable {
212
256
  * @see {@link addStream} For adding streams
213
257
  */
214
258
  writePacket(packet: Packet, streamIndex: number): Promise<void>;
259
+ /**
260
+ * Write a packet to the output synchronously.
261
+ * Synchronous version of writePacket.
262
+ *
263
+ * Writes muxed packet to the specified stream.
264
+ * Automatically handles:
265
+ * - Stream initialization on first packet (lazy initialization)
266
+ * - Codec parameter configuration from encoder or input stream
267
+ * - Header writing on first packet
268
+ * - Timestamp rescaling between source and output timebases
269
+ *
270
+ * For encoder sources, the encoder must have processed at least one frame
271
+ * before packets can be written (encoder must be initialized).
272
+ *
273
+ * Direct mapping to avformat_write_header() (on first packet) and av_interleaved_write_frame().
274
+ *
275
+ * @param packet - Packet to write
276
+ *
277
+ * @param streamIndex - Target stream index
278
+ *
279
+ * @throws {Error} If stream invalid or encoder not initialized
280
+ *
281
+ * @throws {FFmpegError} If write fails
282
+ *
283
+ * @example
284
+ * ```typescript
285
+ * // Write encoded packet - header written automatically on first packet
286
+ * const packet = encoder.encodeSync(frame);
287
+ * if (packet) {
288
+ * output.writePacketSync(packet, videoIdx);
289
+ * packet.free();
290
+ * }
291
+ * ```
292
+ *
293
+ * @example
294
+ * ```typescript
295
+ * // Stream copy with packet processing
296
+ * for (const packet of input.packetsSync()) {
297
+ * if (packet.streamIndex === inputVideoIdx) {
298
+ * output.writePacketSync(packet, outputVideoIdx);
299
+ * }
300
+ * packet.free();
301
+ * }
302
+ * ```
303
+ *
304
+ * @see {@link writePacket} For async version
305
+ */
306
+ writePacketSync(packet: Packet, streamIndex: number): void;
215
307
  /**
216
308
  * Close media output and free resources.
217
309
  *
@@ -233,6 +325,28 @@ export declare class MediaOutput implements AsyncDisposable {
233
325
  * @see {@link Symbol.asyncDispose} For automatic cleanup
234
326
  */
235
327
  close(): Promise<void>;
328
+ /**
329
+ * Close media output and free resources synchronously.
330
+ * Synchronous version of close.
331
+ *
332
+ * Automatically writes trailer if header was written.
333
+ * Closes the output file and releases all resources.
334
+ * Safe to call multiple times.
335
+ * Automatically called by Symbol.dispose.
336
+ *
337
+ * @example
338
+ * ```typescript
339
+ * const output = MediaOutput.openSync('output.mp4');
340
+ * try {
341
+ * // Use output - trailer written automatically on close
342
+ * } finally {
343
+ * output.closeSync();
344
+ * }
345
+ * ```
346
+ *
347
+ * @see {@link close} For async version
348
+ */
349
+ closeSync(): void;
236
350
  /**
237
351
  * Get underlying format context.
238
352
  *
@@ -260,4 +374,21 @@ export declare class MediaOutput implements AsyncDisposable {
260
374
  * @see {@link close} For manual cleanup
261
375
  */
262
376
  [Symbol.asyncDispose](): Promise<void>;
377
+ /**
378
+ * Dispose of media output synchronously.
379
+ *
380
+ * Implements Disposable interface for automatic cleanup.
381
+ * Equivalent to calling closeSync().
382
+ *
383
+ * @example
384
+ * ```typescript
385
+ * {
386
+ * using output = MediaOutput.openSync('output.mp4');
387
+ * // Use output...
388
+ * } // Automatically closed
389
+ * ```
390
+ *
391
+ * @see {@link closeSync} For manual cleanup
392
+ */
393
+ [Symbol.dispose](): void;
263
394
  }