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
@@ -68,8 +68,11 @@ export class Encoder {
68
68
  opts;
69
69
  /**
70
70
  * @param codecContext - Configured codec context
71
+ *
71
72
  * @param codec - Encoder codec
73
+ *
72
74
  * @param opts - Encoder options as Dictionary
75
+ *
73
76
  * @internal
74
77
  */
75
78
  constructor(codecContext, codec, opts) {
@@ -89,7 +92,9 @@ export class Encoder {
89
92
  * Direct mapping to avcodec_find_encoder_by_name() or avcodec_find_encoder().
90
93
  *
91
94
  * @param encoderCodec - Codec name, ID, or instance to use for encoding
95
+ *
92
96
  * @param options - Encoder configuration options including required timeBase
97
+ *
93
98
  * @returns Configured encoder instance
94
99
  *
95
100
  * @throws {Error} If encoder not found or timeBase not provided
@@ -188,6 +193,118 @@ export class Encoder {
188
193
  const opts = options.options ? Dictionary.fromObject(options.options) : undefined;
189
194
  return new Encoder(codecContext, codec, opts);
190
195
  }
196
+ /**
197
+ * Create an encoder with specified codec and options synchronously.
198
+ * Synchronous version of create.
199
+ *
200
+ * Initializes an encoder with the appropriate codec and configuration.
201
+ * Uses lazy initialization - encoder is opened when first frame is received.
202
+ * Hardware context will be automatically detected from first frame if not provided.
203
+ *
204
+ * Direct mapping to avcodec_find_encoder_by_name() or avcodec_find_encoder().
205
+ *
206
+ * @param encoderCodec - Codec name, ID, or instance to use for encoding
207
+ *
208
+ * @param options - Encoder configuration options including required timeBase
209
+ *
210
+ * @returns Configured encoder instance
211
+ *
212
+ * @throws {Error} If encoder not found or timeBase not provided
213
+ *
214
+ * @throws {FFmpegError} If codec allocation fails
215
+ *
216
+ * @example
217
+ * ```typescript
218
+ * // From decoder stream info
219
+ * const encoder = await Encoder.create(FF_ENCODER_LIBX264, {
220
+ * timeBase: video.timeBase,
221
+ * bitrate: '5M',
222
+ * gopSize: 60,
223
+ * options: {
224
+ * preset: 'fast',
225
+ * crf: '23'
226
+ * }
227
+ * });
228
+ * ```
229
+ *
230
+ * @example
231
+ * ```typescript
232
+ * // With custom stream info
233
+ * const encoder = await Encoder.create(FF_ENCODER_AAC, {
234
+ * timeBase: audio.timeBase,
235
+ * bitrate: '192k'
236
+ * });
237
+ * ```
238
+ *
239
+ * @example
240
+ * ```typescript
241
+ * // Hardware encoder
242
+ * const hw = HardwareContext.auto();
243
+ * const encoderCodec = hw?.getEncoderCodec('h264') ?? FF_ENCODER_H264_VIDEOTOOLBOX;
244
+ * const encoder = await Encoder.create(encoderCodec, {
245
+ * timeBase: video.timeBase,
246
+ * bitrate: '8M'
247
+ * });
248
+ * ```
249
+ *
250
+ * @see {@link create} For async version
251
+ */
252
+ static createSync(encoderCodec, options) {
253
+ let codec = null;
254
+ let codecName = '';
255
+ if (encoderCodec instanceof Codec) {
256
+ codec = encoderCodec;
257
+ codecName = codec.name ?? 'Unknown';
258
+ }
259
+ else if (typeof encoderCodec === 'string') {
260
+ codec = Codec.findEncoderByName(encoderCodec);
261
+ codecName = codec?.name ?? encoderCodec;
262
+ }
263
+ else {
264
+ codec = Codec.findEncoder(encoderCodec);
265
+ codecName = codec?.name ?? encoderCodec.toString();
266
+ }
267
+ if (!codec) {
268
+ throw new Error(`Encoder ${codecName} not found`);
269
+ }
270
+ // Allocate codec context
271
+ const codecContext = new CodecContext();
272
+ codecContext.allocContext3(codec);
273
+ // Apply encoder-specific options
274
+ if (options.gopSize !== undefined) {
275
+ codecContext.gopSize = options.gopSize;
276
+ }
277
+ if (options.maxBFrames !== undefined) {
278
+ codecContext.maxBFrames = options.maxBFrames;
279
+ }
280
+ // Apply common options
281
+ if (options.bitrate !== undefined) {
282
+ const bitrate = typeof options.bitrate === 'string' ? parseBitrate(options.bitrate) : BigInt(options.bitrate);
283
+ codecContext.bitRate = bitrate;
284
+ }
285
+ if (options.minRate !== undefined) {
286
+ const minRate = typeof options.minRate === 'string' ? parseBitrate(options.minRate) : BigInt(options.minRate);
287
+ codecContext.rcMinRate = minRate;
288
+ }
289
+ if (options.maxRate !== undefined) {
290
+ const maxRate = typeof options.maxRate === 'string' ? parseBitrate(options.maxRate) : BigInt(options.maxRate);
291
+ codecContext.rcMaxRate = maxRate;
292
+ }
293
+ if (options.bufSize !== undefined) {
294
+ const bufSize = typeof options.bufSize === 'string' ? parseBitrate(options.bufSize) : BigInt(options.bufSize);
295
+ codecContext.rcBufferSize = Number(bufSize);
296
+ }
297
+ if (options.threads !== undefined) {
298
+ codecContext.threadCount = options.threads;
299
+ }
300
+ codecContext.timeBase = new Rational(options.timeBase.num, options.timeBase.den);
301
+ codecContext.pktTimebase = new Rational(options.timeBase.num, options.timeBase.den);
302
+ if (options.frameRate) {
303
+ codecContext.framerate = new Rational(options.frameRate.num, options.frameRate.den);
304
+ }
305
+ const opts = options.options ? Dictionary.fromObject(options.options) : undefined;
306
+ return new Encoder(codecContext, codec, opts);
307
+ }
191
308
  /**
192
309
  * Check if encoder is open.
193
310
  *
@@ -261,6 +378,7 @@ export class Encoder {
261
378
  * Direct mapping to avcodec_send_frame() and avcodec_receive_packet().
262
379
  *
263
380
  * @param frame - Raw frame to encode (or null to flush)
381
+ *
264
382
  * @returns Encoded packet or null if more data needed
265
383
  *
266
384
  * @throws {Error} If encoder is closed
@@ -322,6 +440,78 @@ export class Encoder {
322
440
  // Try to receive packet
323
441
  return await this.receive();
324
442
  }
443
+ /**
444
+ * Encode a frame to a packet synchronously.
445
+ * Synchronous version of encode.
446
+ *
447
+ * Sends a frame to the encoder and attempts to receive an encoded packet.
448
+ * On first frame, automatically initializes encoder with frame properties.
449
+ * Handles internal buffering - may return null if more frames needed.
450
+ *
451
+ * Direct mapping to avcodec_send_frame() and avcodec_receive_packet().
452
+ *
453
+ * @param frame - Raw frame to encode (or null to flush)
454
+ *
455
+ * @returns Encoded packet or null if more data needed
456
+ *
457
+ * @throws {Error} If encoder is closed
458
+ *
459
+ * @throws {FFmpegError} If encoding fails
460
+ *
461
+ * @example
462
+ * ```typescript
463
+ * const packet = encoder.encodeSync(frame);
464
+ * if (packet) {
465
+ * console.log(`Encoded packet with PTS: ${packet.pts}`);
466
+ * output.writePacketSync(packet);
467
+ * packet.free();
468
+ * }
469
+ * ```
470
+ *
471
+ * @example
472
+ * ```typescript
473
+ * // Encode loop
474
+ * for (const frame of decoder.framesSync(packets)) {
475
+ * const packet = encoder.encodeSync(frame);
476
+ * if (packet) {
477
+ * output.writePacketSync(packet);
478
+ * packet.free();
479
+ * }
480
+ * frame.free();
481
+ * }
482
+ * ```
483
+ *
484
+ * @see {@link encode} For async version
485
+ */
486
+ encodeSync(frame) {
487
+ if (this.isClosed) {
488
+ if (!frame) {
489
+ return null;
490
+ }
491
+ throw new Error('Encoder is closed');
492
+ }
493
+ // Open encoder if not already done
494
+ if (!this.initialized) {
495
+ if (!frame) {
496
+ return null;
497
+ }
498
+ this.initializeSync(frame);
499
+ }
500
+ // Send frame to encoder
501
+ const sendRet = this.codecContext.sendFrameSync(frame);
502
+ if (sendRet < 0 && sendRet !== AVERROR_EOF) {
503
+ // Encoder might be full, try to receive first
504
+ const packet = this.receiveSync();
505
+ if (packet)
506
+ return packet;
507
+ // If still failing, it's an error
508
+ if (sendRet !== AVERROR_EAGAIN) {
509
+ FFmpegError.throwIfError(sendRet, 'Failed to send frame');
510
+ }
511
+ }
512
+ // Try to receive packet
513
+ return this.receiveSync();
514
+ }
325
515
  /**
326
516
  * Encode frame stream to packet stream.
327
517
  *
@@ -331,7 +521,9 @@ export class Encoder {
331
521
  * Primary interface for stream-based encoding.
332
522
  *
333
523
  * @param frames - Async iterable of frames (freed automatically)
524
+ *
334
525
  * @yields {Packet} Encoded packets (caller must free)
526
+ *
335
527
  * @throws {Error} If encoder is closed
336
528
  *
337
529
  * @throws {FFmpegError} If encoding fails
@@ -404,6 +596,76 @@ export class Encoder {
404
596
  yield remaining;
405
597
  }
406
598
  }
599
+ /**
600
+ * Encode frame stream to packet stream synchronously.
601
+ * Synchronous version of packets.
602
+ *
603
+ * High-level sync generator for complete encoding pipeline.
604
+ * Automatically manages frame memory, encoder state,
605
+ * and flushes buffered packets at end.
606
+ * Primary interface for stream-based encoding.
607
+ *
608
+ * @param frames - Iterable of frames (freed automatically)
609
+ *
610
+ * @yields {Packet} Encoded packets (caller must free)
611
+ *
612
+ * @throws {Error} If encoder is closed
613
+ *
614
+ * @throws {FFmpegError} If encoding fails
615
+ *
616
+ * @example
617
+ * ```typescript
618
+ * // Basic encoding pipeline
619
+ * for (const packet of encoder.packetsSync(decoder.framesSync(packets))) {
620
+ * output.writePacketSync(packet);
621
+ * packet.free(); // Must free output packets
622
+ * }
623
+ * ```
624
+ *
625
+ * @example
626
+ * ```typescript
627
+ * // With frame filtering
628
+ * function* filteredFrames() {
629
+ * for (const frame of decoder.framesSync(packets)) {
630
+ * const filtered = filter.processSync(frame);
631
+ * if (filtered) {
632
+ * yield filtered;
633
+ * }
634
+ * frame.free();
635
+ * }
636
+ * }
637
+ *
638
+ * for (const packet of encoder.packetsSync(filteredFrames())) {
639
+ * output.writePacketSync(packet);
640
+ * packet.free();
641
+ * }
642
+ * ```
643
+ *
644
+ * @see {@link packets} For async version
645
+ */
646
+ *packetsSync(frames) {
647
+ // Process frames
648
+ for (const frame of frames) {
649
+ try {
650
+ const packet = this.encodeSync(frame);
651
+ if (packet) {
652
+ yield packet;
653
+ }
654
+ }
655
+ finally {
656
+ // Free the input frame after encoding
657
+ frame.free();
658
+ }
659
+ }
660
+ // Flush encoder after all frames
661
+ this.flushSync();
662
+ while (true) {
663
+ const remaining = this.receiveSync();
664
+ if (!remaining)
665
+ break;
666
+ yield remaining;
667
+ }
668
+ }
407
669
  /**
408
670
  * Flush encoder and signal end-of-stream.
409
671
  *
@@ -442,6 +704,44 @@ export class Encoder {
442
704
  }
443
705
  }
444
706
  }
707
+ /**
708
+ * Flush encoder and signal end-of-stream synchronously.
709
+ * Synchronous version of flush.
710
+ *
711
+ * Sends null frame to encoder to signal end-of-stream.
712
+ * Does nothing if encoder was never initialized or is closed.
713
+ * Must call receiveSync() to get remaining buffered packets.
714
+ *
715
+ * Direct mapping to avcodec_send_frame(NULL).
716
+ *
717
+ * @example
718
+ * ```typescript
719
+ * // Signal end of stream
720
+ * encoder.flushSync();
721
+ *
722
+ * // Then get remaining packets
723
+ * let packet;
724
+ * while ((packet = encoder.receiveSync()) !== null) {
725
+ * console.log('Got buffered packet');
726
+ * output.writePacketSync(packet);
727
+ * packet.free();
728
+ * }
729
+ * ```
730
+ *
731
+ * @see {@link flush} For async version
732
+ */
733
+ flushSync() {
734
+ if (this.isClosed || !this.initialized) {
735
+ return;
736
+ }
737
+ // Send flush frame (null)
738
+ const ret = this.codecContext.sendFrameSync(null);
739
+ if (ret < 0 && ret !== AVERROR_EOF) {
740
+ if (ret !== AVERROR_EAGAIN) {
741
+ FFmpegError.throwIfError(ret, 'Failed to flush encoder');
742
+ }
743
+ }
744
+ }
445
745
  /**
446
746
  * Flush all buffered packets as async generator.
447
747
  *
@@ -472,6 +772,36 @@ export class Encoder {
472
772
  yield packet;
473
773
  }
474
774
  }
775
+ /**
776
+ * Flush all buffered packets as generator synchronously.
777
+ * Synchronous version of flushPackets.
778
+ *
779
+ * Convenient sync iteration over remaining packets.
780
+ * Automatically handles flush and repeated receive calls.
781
+ * Returns immediately if encoder was never initialized or is closed.
782
+ *
783
+ * @yields {Packet} Buffered packets
784
+ *
785
+ * @example
786
+ * ```typescript
787
+ * // Flush at end of encoding
788
+ * for (const packet of encoder.flushPacketsSync()) {
789
+ * console.log('Processing buffered packet');
790
+ * output.writePacketSync(packet);
791
+ * packet.free();
792
+ * }
793
+ * ```
794
+ *
795
+ * @see {@link flushPackets} For async version
796
+ */
797
+ *flushPacketsSync() {
798
+ // Send flush signal
799
+ this.flushSync();
800
+ let packet;
801
+ while ((packet = this.receiveSync()) !== null) {
802
+ yield packet;
803
+ }
804
+ }
475
805
  /**
476
806
  * Receive packet from encoder.
477
807
  *
@@ -531,6 +861,65 @@ export class Encoder {
531
861
  return null;
532
862
  }
533
863
  }
864
+ /**
865
+ * Receive packet from encoder synchronously.
866
+ * Synchronous version of receive.
867
+ *
868
+ * Gets encoded packets from the codec's internal buffer.
869
+ * Handles packet cloning and error checking.
870
+ * Returns null if encoder is closed, not initialized, or no packets available.
871
+ * Call repeatedly until null to drain all buffered packets.
872
+ *
873
+ * Direct mapping to avcodec_receive_packet().
874
+ *
875
+ * @returns Cloned packet or null if no packets available
876
+ *
877
+ * @throws {FFmpegError} If receive fails with error other than AVERROR_EAGAIN or AVERROR_EOF
878
+ *
879
+ * @example
880
+ * ```typescript
881
+ * const packet = encoder.receiveSync();
882
+ * if (packet) {
883
+ * console.log(`Got packet with PTS: ${packet.pts}`);
884
+ * output.writePacketSync(packet);
885
+ * packet.free();
886
+ * }
887
+ * ```
888
+ *
889
+ * @example
890
+ * ```typescript
891
+ * // Drain all buffered packets
892
+ * let packet;
893
+ * while ((packet = encoder.receiveSync()) !== null) {
894
+ * console.log(`Packet size: ${packet.size}`);
895
+ * output.writePacketSync(packet);
896
+ * packet.free();
897
+ * }
898
+ * ```
899
+ *
900
+ * @see {@link receive} For async version
901
+ */
902
+ receiveSync() {
903
+ if (this.isClosed || !this.initialized) {
904
+ return null;
905
+ }
906
+ // Clear previous packet data
907
+ this.packet.unref();
908
+ const ret = this.codecContext.receivePacketSync(this.packet);
909
+ if (ret === 0) {
910
+ // Got a packet, clone it for the user
911
+ return this.packet.clone();
912
+ }
913
+ else if (ret === AVERROR_EAGAIN || ret === AVERROR_EOF) {
914
+ // Need more data or end of stream
915
+ return null;
916
+ }
917
+ else {
918
+ // Error
919
+ FFmpegError.throwIfError(ret, 'Failed to receive packet');
920
+ return null;
921
+ }
922
+ }
534
923
  /**
535
924
  * Close encoder and free resources.
536
925
  *
@@ -594,6 +983,44 @@ export class Encoder {
594
983
  }
595
984
  this.initialized = true;
596
985
  }
986
+ /**
987
+ * Initialize encoder from first frame synchronously.
988
+ * Synchronous version of initialize.
989
+ *
990
+ * Sets codec context parameters from frame properties.
991
+ * Configures hardware context if present in frame.
992
+ * Opens encoder with accumulated options.
993
+ *
994
+ * @param frame - First frame to encode
995
+ *
996
+ * @throws {FFmpegError} If encoder open fails
997
+ *
998
+ * @internal
999
+ *
1000
+ * @see {@link initialize} For async version
1001
+ */
1002
+ initializeSync(frame) {
1003
+ if (frame.isVideo()) {
1004
+ this.codecContext.width = frame.width;
1005
+ this.codecContext.height = frame.height;
1006
+ this.codecContext.pixelFormat = frame.format;
1007
+ this.codecContext.sampleAspectRatio = frame.sampleAspectRatio;
1008
+ }
1009
+ else {
1010
+ this.codecContext.sampleRate = frame.sampleRate;
1011
+ this.codecContext.sampleFormat = frame.format;
1012
+ this.codecContext.channelLayout = frame.channelLayout;
1013
+ }
1014
+ this.codecContext.hwDeviceCtx = frame.hwFramesCtx?.deviceRef ?? null;
1015
+ this.codecContext.hwFramesCtx = frame.hwFramesCtx;
1016
+ // Open codec
1017
+ const openRet = this.codecContext.open2Sync(this.codec, this.opts);
1018
+ if (openRet < 0) {
1019
+ this.codecContext.freeContext();
1020
+ FFmpegError.throwIfError(openRet, 'Failed to open encoder');
1021
+ }
1022
+ this.initialized = true;
1023
+ }
597
1024
  /**
598
1025
  * Get encoder codec.
599
1026
  *
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/api/encoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/api/encoder.ts"],"names":[],"mappings":"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"}