node-av 3.1.3 → 5.0.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.
- package/README.md +88 -52
- package/binding.gyp +23 -11
- package/dist/api/audio-frame-buffer.d.ts +201 -0
- package/dist/api/audio-frame-buffer.js +275 -0
- package/dist/api/audio-frame-buffer.js.map +1 -0
- package/dist/api/bitstream-filter.d.ts +320 -78
- package/dist/api/bitstream-filter.js +684 -151
- package/dist/api/bitstream-filter.js.map +1 -1
- package/dist/api/constants.d.ts +44 -0
- package/dist/api/constants.js +45 -0
- package/dist/api/constants.js.map +1 -0
- package/dist/api/data/test_av1.ivf +0 -0
- package/dist/api/data/test_mjpeg.mjpeg +0 -0
- package/dist/api/data/test_vp8.ivf +0 -0
- package/dist/api/data/test_vp9.ivf +0 -0
- package/dist/api/decoder.d.ts +454 -77
- package/dist/api/decoder.js +1081 -271
- package/dist/api/decoder.js.map +1 -1
- package/dist/api/{media-input.d.ts → demuxer.d.ts} +295 -45
- package/dist/api/demuxer.js +1965 -0
- package/dist/api/demuxer.js.map +1 -0
- package/dist/api/encoder.d.ts +423 -132
- package/dist/api/encoder.js +1089 -240
- package/dist/api/encoder.js.map +1 -1
- package/dist/api/filter-complex.d.ts +769 -0
- package/dist/api/filter-complex.js +1596 -0
- package/dist/api/filter-complex.js.map +1 -0
- package/dist/api/filter-presets.d.ts +80 -5
- package/dist/api/filter-presets.js +117 -7
- package/dist/api/filter-presets.js.map +1 -1
- package/dist/api/filter.d.ts +561 -125
- package/dist/api/filter.js +1083 -274
- package/dist/api/filter.js.map +1 -1
- package/dist/api/{fmp4.d.ts → fmp4-stream.d.ts} +141 -140
- package/dist/api/fmp4-stream.js +539 -0
- package/dist/api/fmp4-stream.js.map +1 -0
- package/dist/api/hardware.d.ts +58 -6
- package/dist/api/hardware.js +127 -11
- package/dist/api/hardware.js.map +1 -1
- package/dist/api/index.d.ts +8 -4
- package/dist/api/index.js +17 -8
- package/dist/api/index.js.map +1 -1
- package/dist/api/io-stream.d.ts +6 -6
- package/dist/api/io-stream.js +5 -4
- package/dist/api/io-stream.js.map +1 -1
- package/dist/api/{media-output.d.ts → muxer.d.ts} +280 -66
- package/dist/api/muxer.js +1934 -0
- package/dist/api/muxer.js.map +1 -0
- package/dist/api/pipeline.d.ts +77 -29
- package/dist/api/pipeline.js +449 -439
- package/dist/api/pipeline.js.map +1 -1
- package/dist/api/rtp-stream.d.ts +312 -0
- package/dist/api/rtp-stream.js +630 -0
- package/dist/api/rtp-stream.js.map +1 -0
- package/dist/api/types.d.ts +533 -56
- package/dist/api/utilities/async-queue.d.ts +91 -0
- package/dist/api/utilities/async-queue.js +162 -0
- package/dist/api/utilities/async-queue.js.map +1 -0
- package/dist/api/utilities/audio-sample.d.ts +11 -1
- package/dist/api/utilities/audio-sample.js +10 -0
- package/dist/api/utilities/audio-sample.js.map +1 -1
- package/dist/api/utilities/channel-layout.d.ts +1 -0
- package/dist/api/utilities/channel-layout.js +1 -0
- package/dist/api/utilities/channel-layout.js.map +1 -1
- package/dist/api/utilities/image.d.ts +39 -1
- package/dist/api/utilities/image.js +38 -0
- package/dist/api/utilities/image.js.map +1 -1
- package/dist/api/utilities/index.d.ts +3 -0
- package/dist/api/utilities/index.js +6 -0
- package/dist/api/utilities/index.js.map +1 -1
- package/dist/api/utilities/media-type.d.ts +2 -1
- package/dist/api/utilities/media-type.js +1 -0
- package/dist/api/utilities/media-type.js.map +1 -1
- package/dist/api/utilities/pixel-format.d.ts +4 -1
- package/dist/api/utilities/pixel-format.js +3 -0
- package/dist/api/utilities/pixel-format.js.map +1 -1
- package/dist/api/utilities/sample-format.d.ts +6 -1
- package/dist/api/utilities/sample-format.js +5 -0
- package/dist/api/utilities/sample-format.js.map +1 -1
- package/dist/api/utilities/scheduler.d.ts +138 -0
- package/dist/api/utilities/scheduler.js +98 -0
- package/dist/api/utilities/scheduler.js.map +1 -0
- package/dist/api/utilities/streaming.d.ts +105 -15
- package/dist/api/utilities/streaming.js +201 -12
- package/dist/api/utilities/streaming.js.map +1 -1
- package/dist/api/utilities/timestamp.d.ts +15 -1
- package/dist/api/utilities/timestamp.js +14 -0
- package/dist/api/utilities/timestamp.js.map +1 -1
- package/dist/api/utilities/whisper-model.d.ts +310 -0
- package/dist/api/utilities/whisper-model.js +528 -0
- package/dist/api/utilities/whisper-model.js.map +1 -0
- package/dist/api/webrtc-stream.d.ts +288 -0
- package/dist/api/webrtc-stream.js +440 -0
- package/dist/api/webrtc-stream.js.map +1 -0
- package/dist/api/whisper.d.ts +324 -0
- package/dist/api/whisper.js +362 -0
- package/dist/api/whisper.js.map +1 -0
- package/dist/constants/constants.d.ts +54 -2
- package/dist/constants/constants.js +48 -1
- package/dist/constants/constants.js.map +1 -1
- package/dist/constants/encoders.d.ts +2 -1
- package/dist/constants/encoders.js +4 -3
- package/dist/constants/encoders.js.map +1 -1
- package/dist/constants/hardware.d.ts +26 -0
- package/dist/constants/hardware.js +27 -0
- package/dist/constants/hardware.js.map +1 -0
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.js +1 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/ffmpeg/index.d.ts +3 -3
- package/dist/ffmpeg/index.js +3 -3
- package/dist/ffmpeg/utils.d.ts +27 -0
- package/dist/ffmpeg/utils.js +28 -16
- package/dist/ffmpeg/utils.js.map +1 -1
- package/dist/lib/binding.d.ts +22 -11
- package/dist/lib/binding.js.map +1 -1
- package/dist/lib/codec-context.d.ts +87 -0
- package/dist/lib/codec-context.js +125 -4
- package/dist/lib/codec-context.js.map +1 -1
- package/dist/lib/codec-parameters.d.ts +229 -1
- package/dist/lib/codec-parameters.js +264 -0
- package/dist/lib/codec-parameters.js.map +1 -1
- package/dist/lib/codec-parser.d.ts +23 -0
- package/dist/lib/codec-parser.js +25 -0
- package/dist/lib/codec-parser.js.map +1 -1
- package/dist/lib/codec.d.ts +26 -4
- package/dist/lib/codec.js +35 -0
- package/dist/lib/codec.js.map +1 -1
- package/dist/lib/dictionary.js +1 -0
- package/dist/lib/dictionary.js.map +1 -1
- package/dist/lib/error.js +1 -1
- package/dist/lib/error.js.map +1 -1
- package/dist/lib/fifo.d.ts +416 -0
- package/dist/lib/fifo.js +453 -0
- package/dist/lib/fifo.js.map +1 -0
- package/dist/lib/filter-context.d.ts +52 -11
- package/dist/lib/filter-context.js +56 -12
- package/dist/lib/filter-context.js.map +1 -1
- package/dist/lib/filter-graph.d.ts +9 -0
- package/dist/lib/filter-graph.js +13 -0
- package/dist/lib/filter-graph.js.map +1 -1
- package/dist/lib/filter.d.ts +21 -0
- package/dist/lib/filter.js +28 -0
- package/dist/lib/filter.js.map +1 -1
- package/dist/lib/format-context.d.ts +48 -14
- package/dist/lib/format-context.js +76 -7
- package/dist/lib/format-context.js.map +1 -1
- package/dist/lib/frame.d.ts +264 -1
- package/dist/lib/frame.js +351 -1
- package/dist/lib/frame.js.map +1 -1
- package/dist/lib/hardware-device-context.d.ts +3 -2
- package/dist/lib/hardware-device-context.js.map +1 -1
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.js +4 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/input-format.d.ts +21 -0
- package/dist/lib/input-format.js +42 -2
- package/dist/lib/input-format.js.map +1 -1
- package/dist/lib/native-types.d.ts +76 -27
- package/dist/lib/option.d.ts +25 -13
- package/dist/lib/option.js +28 -0
- package/dist/lib/option.js.map +1 -1
- package/dist/lib/output-format.d.ts +22 -1
- package/dist/lib/output-format.js +28 -0
- package/dist/lib/output-format.js.map +1 -1
- package/dist/lib/packet.d.ts +35 -0
- package/dist/lib/packet.js +52 -2
- package/dist/lib/packet.js.map +1 -1
- package/dist/lib/rational.d.ts +18 -0
- package/dist/lib/rational.js +19 -0
- package/dist/lib/rational.js.map +1 -1
- package/dist/lib/stream.d.ts +126 -0
- package/dist/lib/stream.js +188 -5
- package/dist/lib/stream.js.map +1 -1
- package/dist/lib/sync-queue.d.ts +179 -0
- package/dist/lib/sync-queue.js +197 -0
- package/dist/lib/sync-queue.js.map +1 -0
- package/dist/lib/types.d.ts +49 -1
- package/dist/lib/utilities.d.ts +281 -53
- package/dist/lib/utilities.js +298 -55
- package/dist/lib/utilities.js.map +1 -1
- package/install/check.js +2 -2
- package/package.json +37 -26
- package/dist/api/fmp4.js +0 -710
- package/dist/api/fmp4.js.map +0 -1
- package/dist/api/media-input.js +0 -1075
- package/dist/api/media-input.js.map +0 -1
- package/dist/api/media-output.js +0 -1040
- package/dist/api/media-output.js.map +0 -1
- package/dist/api/webrtc.d.ts +0 -664
- package/dist/api/webrtc.js +0 -1132
- package/dist/api/webrtc.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Rational } from './rational.js';
|
|
2
|
-
import type { AVChromaLocation, AVCodecID, AVColorPrimaries, AVColorRange, AVColorSpace, AVColorTransferCharacteristic, AVMediaType, AVPixelFormat, AVProfile, AVSampleFormat } from '../constants/constants.js';
|
|
2
|
+
import type { AVChromaLocation, AVCodecID, AVCodecProp, AVColorPrimaries, AVColorRange, AVColorSpace, AVColorTransferCharacteristic, AVMediaType, AVPacketSideDataType, AVPixelFormat, AVProfile, AVSampleFormat } from '../constants/constants.js';
|
|
3
3
|
import type { CodecContext } from './codec-context.js';
|
|
4
4
|
import type { NativeCodecParameters, NativeWrapper } from './native-types.js';
|
|
5
5
|
import type { ChannelLayout } from './types.js';
|
|
@@ -112,6 +112,26 @@ export declare class CodecParameters implements NativeWrapper<NativeCodecParamet
|
|
|
112
112
|
*/
|
|
113
113
|
get bitRate(): bigint;
|
|
114
114
|
set bitRate(value: bigint);
|
|
115
|
+
/**
|
|
116
|
+
* Number of bits per coded sample.
|
|
117
|
+
*
|
|
118
|
+
* Bits per sample/pixel from the demuxer (needed by some codecs).
|
|
119
|
+
* For uncompressed formats, this is the bits per sample.
|
|
120
|
+
*
|
|
121
|
+
* Direct mapping to AVCodecParameters->bits_per_coded_sample.
|
|
122
|
+
*/
|
|
123
|
+
get bitsPerCodedSample(): number;
|
|
124
|
+
set bitsPerCodedSample(value: number);
|
|
125
|
+
/**
|
|
126
|
+
* Number of bits per raw sample.
|
|
127
|
+
*
|
|
128
|
+
* Bits per sample before compression/encoding.
|
|
129
|
+
* Only set when different from bitsPerCodedSample.
|
|
130
|
+
*
|
|
131
|
+
* Direct mapping to AVCodecParameters->bits_per_raw_sample.
|
|
132
|
+
*/
|
|
133
|
+
get bitsPerRawSample(): number;
|
|
134
|
+
set bitsPerRawSample(value: number);
|
|
115
135
|
/**
|
|
116
136
|
* Codec profile.
|
|
117
137
|
*
|
|
@@ -238,6 +258,97 @@ export declare class CodecParameters implements NativeWrapper<NativeCodecParamet
|
|
|
238
258
|
*/
|
|
239
259
|
get sampleRate(): number;
|
|
240
260
|
set sampleRate(value: number);
|
|
261
|
+
/**
|
|
262
|
+
* Audio frame size in samples.
|
|
263
|
+
*
|
|
264
|
+
* Number of samples per audio frame for codecs with constant frame size.
|
|
265
|
+
* For AAC this is typically 1024, for MP3 it's 1152.
|
|
266
|
+
* For codecs with variable frame size, this may be 0.
|
|
267
|
+
*
|
|
268
|
+
* Direct mapping to AVCodecParameters->frame_size.
|
|
269
|
+
*/
|
|
270
|
+
get frameSize(): number;
|
|
271
|
+
set frameSize(value: number);
|
|
272
|
+
/**
|
|
273
|
+
* Initial audio padding.
|
|
274
|
+
*
|
|
275
|
+
* Amount of padding (priming) samples at the beginning of the audio stream.
|
|
276
|
+
* For AAC encoding, this is typically 1024 samples.
|
|
277
|
+
* The muxer uses this value to correctly calculate packet timestamps.
|
|
278
|
+
*
|
|
279
|
+
* Direct mapping to AVCodecParameters->initial_padding.
|
|
280
|
+
*/
|
|
281
|
+
get initialPadding(): number;
|
|
282
|
+
set initialPadding(value: number);
|
|
283
|
+
/**
|
|
284
|
+
* Video delay in frames.
|
|
285
|
+
*
|
|
286
|
+
* Number of frames the decoded output will be delayed relative to the encoded input.
|
|
287
|
+
* Used for timestamp correction in video streams.
|
|
288
|
+
*
|
|
289
|
+
* Direct mapping to AVCodecParameters->video_delay.
|
|
290
|
+
*/
|
|
291
|
+
get videoDelay(): number;
|
|
292
|
+
set videoDelay(value: number);
|
|
293
|
+
/**
|
|
294
|
+
* Number of coded side data entries.
|
|
295
|
+
*
|
|
296
|
+
* Returns the count of coded side data attached to codec parameters.
|
|
297
|
+
*
|
|
298
|
+
* @returns Number of side data entries
|
|
299
|
+
*
|
|
300
|
+
* @example
|
|
301
|
+
* ```typescript
|
|
302
|
+
* console.log(`Codec has ${params.nbCodedSideData} side data entries`);
|
|
303
|
+
* ```
|
|
304
|
+
*/
|
|
305
|
+
get nbCodedSideData(): number;
|
|
306
|
+
/**
|
|
307
|
+
* Codec properties.
|
|
308
|
+
*
|
|
309
|
+
* Bitfield of AV_CODEC_PROP_* flags indicating codec features.
|
|
310
|
+
*
|
|
311
|
+
* Direct mapping to AVCodecDescriptor->props.
|
|
312
|
+
*
|
|
313
|
+
* @example
|
|
314
|
+
* ```typescript
|
|
315
|
+
* import { AV_CODEC_PROP_FIELDS } from 'node-av/constants';
|
|
316
|
+
*
|
|
317
|
+
* const props = params.codecProperties;
|
|
318
|
+
* if (props & AV_CODEC_PROP_FIELDS) {
|
|
319
|
+
* console.log('Codec supports interlaced video (fields)');
|
|
320
|
+
* }
|
|
321
|
+
* ```
|
|
322
|
+
*
|
|
323
|
+
* @see {@link hasProperties} For checking specific properties
|
|
324
|
+
*/
|
|
325
|
+
get codecProperties(): AVCodecProp;
|
|
326
|
+
/**
|
|
327
|
+
* Check if codec has specific properties.
|
|
328
|
+
*
|
|
329
|
+
* Tests whether all specified properties are present using bitwise AND.
|
|
330
|
+
*
|
|
331
|
+
* @param props - One or more property values to check
|
|
332
|
+
*
|
|
333
|
+
* @returns true if all specified properties are present, false otherwise
|
|
334
|
+
*
|
|
335
|
+
* @example
|
|
336
|
+
* ```typescript
|
|
337
|
+
* import { AV_CODEC_PROP_FIELDS, AV_CODEC_PROP_REORDER } from 'node-av/constants';
|
|
338
|
+
*
|
|
339
|
+
* if (params.hasProperties(AV_CODEC_PROP_FIELDS)) {
|
|
340
|
+
* console.log('Codec supports interlaced video (fields)');
|
|
341
|
+
* }
|
|
342
|
+
*
|
|
343
|
+
* // Check multiple properties
|
|
344
|
+
* if (params.hasProperties(AV_CODEC_PROP_LOSSY, AV_CODEC_PROP_REORDER)) {
|
|
345
|
+
* console.log('Codec is lossy and supports frame reordering');
|
|
346
|
+
* }
|
|
347
|
+
* ```
|
|
348
|
+
*
|
|
349
|
+
* @see {@link codecProperties} For direct properties access
|
|
350
|
+
*/
|
|
351
|
+
hasProperties(...props: AVCodecProp[]): boolean;
|
|
241
352
|
/**
|
|
242
353
|
* Allocate codec parameters.
|
|
243
354
|
*
|
|
@@ -347,6 +458,38 @@ export declare class CodecParameters implements NativeWrapper<NativeCodecParamet
|
|
|
347
458
|
* @see {@link fromContext} To extract from context
|
|
348
459
|
*/
|
|
349
460
|
toContext(codecContext: CodecContext): number;
|
|
461
|
+
/**
|
|
462
|
+
* Parse extradata to extract codec parameters.
|
|
463
|
+
*
|
|
464
|
+
* Opens a decoder to parse extradata (SPS/PPS for H.264, etc.) and extract
|
|
465
|
+
* codec parameters like width/height for video or sample_rate for audio.
|
|
466
|
+
* This is used when extradata exists (e.g., from SDP sprop-parameter-sets)
|
|
467
|
+
* but dimensions are missing due to insufficient probesize.
|
|
468
|
+
*
|
|
469
|
+
* Uses FFmpeg's decoder to parse extradata, same as avformat_find_stream_info()
|
|
470
|
+
* does internally. Works for all codecs (H.264, H.265, VP9, AV1, etc.).
|
|
471
|
+
*
|
|
472
|
+
* @returns 0 on success, negative error code on failure
|
|
473
|
+
*
|
|
474
|
+
* @example
|
|
475
|
+
* ```typescript
|
|
476
|
+
* import { FFmpegError } from 'node-av';
|
|
477
|
+
*
|
|
478
|
+
* // After opening RTSP with low probesize
|
|
479
|
+
* const input = await Demuxer.open('rtsp://...', {
|
|
480
|
+
* options: { probesize: 32 }
|
|
481
|
+
* });
|
|
482
|
+
*
|
|
483
|
+
* const stream = input.video();
|
|
484
|
+
* if (stream.codecpar.width === 0 && stream.codecpar.extradata) {
|
|
485
|
+
* // Parse extradata to get dimensions
|
|
486
|
+
* const ret = stream.codecpar.parseExtradata();
|
|
487
|
+
* FFmpegError.throwIfError(ret, 'parseExtradata');
|
|
488
|
+
* console.log(`Dimensions: ${stream.codecpar.width}x${stream.codecpar.height}`);
|
|
489
|
+
* }
|
|
490
|
+
* ```
|
|
491
|
+
*/
|
|
492
|
+
parseExtradata(): number;
|
|
350
493
|
/**
|
|
351
494
|
* Convert to JSON representation.
|
|
352
495
|
*
|
|
@@ -362,6 +505,91 @@ export declare class CodecParameters implements NativeWrapper<NativeCodecParamet
|
|
|
362
505
|
* ```
|
|
363
506
|
*/
|
|
364
507
|
toJSON(): Record<string, any>;
|
|
508
|
+
/**
|
|
509
|
+
* Get coded side data.
|
|
510
|
+
*
|
|
511
|
+
* Retrieves additional data associated with the codec parameters
|
|
512
|
+
* (e.g., HDR metadata, Dolby Vision configuration, mastering display).
|
|
513
|
+
*
|
|
514
|
+
* Direct mapping to accessing AVCodecParameters.coded_side_data.
|
|
515
|
+
*
|
|
516
|
+
* @param type - Type of side data to retrieve
|
|
517
|
+
*
|
|
518
|
+
* @returns Side data buffer, or null if not present
|
|
519
|
+
*
|
|
520
|
+
* @example
|
|
521
|
+
* ```typescript
|
|
522
|
+
* import { AV_PKT_DATA_MASTERING_DISPLAY_METADATA } from 'node-av/constants';
|
|
523
|
+
*
|
|
524
|
+
* // Get HDR mastering display metadata
|
|
525
|
+
* const hdrData = params.getCodedSideData(AV_PKT_DATA_MASTERING_DISPLAY_METADATA);
|
|
526
|
+
* if (hdrData) {
|
|
527
|
+
* console.log(`HDR metadata: ${hdrData.length} bytes`);
|
|
528
|
+
* }
|
|
529
|
+
* ```
|
|
530
|
+
*
|
|
531
|
+
* @see {@link addCodedSideData} To add side data
|
|
532
|
+
* @see {@link nbCodedSideData} For count of side data entries
|
|
533
|
+
*/
|
|
534
|
+
getCodedSideData(type: AVPacketSideDataType): Buffer | null;
|
|
535
|
+
/**
|
|
536
|
+
* Get all coded side data entries.
|
|
537
|
+
*
|
|
538
|
+
* Returns all side data attached to the codec parameters.
|
|
539
|
+
* Each entry contains the type and data buffer.
|
|
540
|
+
* This allows iteration over all side data like FFmpeg CLI does.
|
|
541
|
+
*
|
|
542
|
+
* Direct mapping to accessing AVCodecParameters.coded_side_data array.
|
|
543
|
+
*
|
|
544
|
+
* @returns Array of side data entries with type and data
|
|
545
|
+
*
|
|
546
|
+
* @example
|
|
547
|
+
* ```typescript
|
|
548
|
+
* // Iterate all side data like FFmpeg does (ffmpeg_mux_init.c)
|
|
549
|
+
* const allSideData = params.getAllCodedSideData();
|
|
550
|
+
* for (const sd of allSideData) {
|
|
551
|
+
* console.log(`Type: ${sd.type}, Size: ${sd.data.length}`);
|
|
552
|
+
* // Copy to output stream
|
|
553
|
+
* outParams.addCodedSideData(sd.type, sd.data);
|
|
554
|
+
* }
|
|
555
|
+
* ```
|
|
556
|
+
*
|
|
557
|
+
* @see {@link getCodedSideData} To get specific side data by type
|
|
558
|
+
* @see {@link addCodedSideData} To add side data
|
|
559
|
+
* @see {@link nbCodedSideData} For count of side data entries
|
|
560
|
+
*/
|
|
561
|
+
getAllCodedSideData(): {
|
|
562
|
+
type: AVPacketSideDataType;
|
|
563
|
+
data: Buffer;
|
|
564
|
+
}[];
|
|
565
|
+
/**
|
|
566
|
+
* Add coded side data to codec parameters.
|
|
567
|
+
*
|
|
568
|
+
* Attaches additional data to the codec parameters. The data is copied.
|
|
569
|
+
* Commonly used for HDR metadata, Dolby Vision configuration, etc.
|
|
570
|
+
*
|
|
571
|
+
* Direct mapping to av_packet_side_data_add() for coded_side_data.
|
|
572
|
+
*
|
|
573
|
+
* @param type - Type of side data
|
|
574
|
+
*
|
|
575
|
+
* @param data - Side data buffer
|
|
576
|
+
*
|
|
577
|
+
* @returns 0 on success, negative AVERROR on error
|
|
578
|
+
*
|
|
579
|
+
* @example
|
|
580
|
+
* ```typescript
|
|
581
|
+
* import { FFmpegError } from 'node-av';
|
|
582
|
+
* import { AV_PKT_DATA_DOVI_CONF } from 'node-av/constants';
|
|
583
|
+
*
|
|
584
|
+
* // Add Dolby Vision configuration
|
|
585
|
+
* const doviConf = Buffer.from([...]); // Dolby Vision config data
|
|
586
|
+
* const ret = params.addCodedSideData(AV_PKT_DATA_DOVI_CONF, doviConf);
|
|
587
|
+
* FFmpegError.throwIfError(ret, 'addCodedSideData');
|
|
588
|
+
* ```
|
|
589
|
+
*
|
|
590
|
+
* @see {@link getCodedSideData} To retrieve side data
|
|
591
|
+
*/
|
|
592
|
+
addCodedSideData(type: AVPacketSideDataType, data: Buffer): number;
|
|
365
593
|
/**
|
|
366
594
|
* Get the underlying native CodecParameters object.
|
|
367
595
|
*
|
|
@@ -146,6 +146,34 @@ export class CodecParameters {
|
|
|
146
146
|
set bitRate(value) {
|
|
147
147
|
this.native.bitRate = value;
|
|
148
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Number of bits per coded sample.
|
|
151
|
+
*
|
|
152
|
+
* Bits per sample/pixel from the demuxer (needed by some codecs).
|
|
153
|
+
* For uncompressed formats, this is the bits per sample.
|
|
154
|
+
*
|
|
155
|
+
* Direct mapping to AVCodecParameters->bits_per_coded_sample.
|
|
156
|
+
*/
|
|
157
|
+
get bitsPerCodedSample() {
|
|
158
|
+
return this.native.bitsPerCodedSample;
|
|
159
|
+
}
|
|
160
|
+
set bitsPerCodedSample(value) {
|
|
161
|
+
this.native.bitsPerCodedSample = value;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Number of bits per raw sample.
|
|
165
|
+
*
|
|
166
|
+
* Bits per sample before compression/encoding.
|
|
167
|
+
* Only set when different from bitsPerCodedSample.
|
|
168
|
+
*
|
|
169
|
+
* Direct mapping to AVCodecParameters->bits_per_raw_sample.
|
|
170
|
+
*/
|
|
171
|
+
get bitsPerRawSample() {
|
|
172
|
+
return this.native.bitsPerRawSample;
|
|
173
|
+
}
|
|
174
|
+
set bitsPerRawSample(value) {
|
|
175
|
+
this.native.bitsPerRawSample = value;
|
|
176
|
+
}
|
|
149
177
|
/**
|
|
150
178
|
* Codec profile.
|
|
151
179
|
*
|
|
@@ -330,6 +358,120 @@ export class CodecParameters {
|
|
|
330
358
|
set sampleRate(value) {
|
|
331
359
|
this.native.sampleRate = value;
|
|
332
360
|
}
|
|
361
|
+
/**
|
|
362
|
+
* Audio frame size in samples.
|
|
363
|
+
*
|
|
364
|
+
* Number of samples per audio frame for codecs with constant frame size.
|
|
365
|
+
* For AAC this is typically 1024, for MP3 it's 1152.
|
|
366
|
+
* For codecs with variable frame size, this may be 0.
|
|
367
|
+
*
|
|
368
|
+
* Direct mapping to AVCodecParameters->frame_size.
|
|
369
|
+
*/
|
|
370
|
+
get frameSize() {
|
|
371
|
+
return this.native.frameSize;
|
|
372
|
+
}
|
|
373
|
+
set frameSize(value) {
|
|
374
|
+
this.native.frameSize = value;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Initial audio padding.
|
|
378
|
+
*
|
|
379
|
+
* Amount of padding (priming) samples at the beginning of the audio stream.
|
|
380
|
+
* For AAC encoding, this is typically 1024 samples.
|
|
381
|
+
* The muxer uses this value to correctly calculate packet timestamps.
|
|
382
|
+
*
|
|
383
|
+
* Direct mapping to AVCodecParameters->initial_padding.
|
|
384
|
+
*/
|
|
385
|
+
get initialPadding() {
|
|
386
|
+
return this.native.initialPadding;
|
|
387
|
+
}
|
|
388
|
+
set initialPadding(value) {
|
|
389
|
+
this.native.initialPadding = value;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Video delay in frames.
|
|
393
|
+
*
|
|
394
|
+
* Number of frames the decoded output will be delayed relative to the encoded input.
|
|
395
|
+
* Used for timestamp correction in video streams.
|
|
396
|
+
*
|
|
397
|
+
* Direct mapping to AVCodecParameters->video_delay.
|
|
398
|
+
*/
|
|
399
|
+
get videoDelay() {
|
|
400
|
+
return this.native.videoDelay;
|
|
401
|
+
}
|
|
402
|
+
set videoDelay(value) {
|
|
403
|
+
this.native.videoDelay = value;
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Number of coded side data entries.
|
|
407
|
+
*
|
|
408
|
+
* Returns the count of coded side data attached to codec parameters.
|
|
409
|
+
*
|
|
410
|
+
* @returns Number of side data entries
|
|
411
|
+
*
|
|
412
|
+
* @example
|
|
413
|
+
* ```typescript
|
|
414
|
+
* console.log(`Codec has ${params.nbCodedSideData} side data entries`);
|
|
415
|
+
* ```
|
|
416
|
+
*/
|
|
417
|
+
get nbCodedSideData() {
|
|
418
|
+
return this.native.nbCodedSideData;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Codec properties.
|
|
422
|
+
*
|
|
423
|
+
* Bitfield of AV_CODEC_PROP_* flags indicating codec features.
|
|
424
|
+
*
|
|
425
|
+
* Direct mapping to AVCodecDescriptor->props.
|
|
426
|
+
*
|
|
427
|
+
* @example
|
|
428
|
+
* ```typescript
|
|
429
|
+
* import { AV_CODEC_PROP_FIELDS } from 'node-av/constants';
|
|
430
|
+
*
|
|
431
|
+
* const props = params.codecProperties;
|
|
432
|
+
* if (props & AV_CODEC_PROP_FIELDS) {
|
|
433
|
+
* console.log('Codec supports interlaced video (fields)');
|
|
434
|
+
* }
|
|
435
|
+
* ```
|
|
436
|
+
*
|
|
437
|
+
* @see {@link hasProperties} For checking specific properties
|
|
438
|
+
*/
|
|
439
|
+
get codecProperties() {
|
|
440
|
+
return this.native.codecProperties;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Check if codec has specific properties.
|
|
444
|
+
*
|
|
445
|
+
* Tests whether all specified properties are present using bitwise AND.
|
|
446
|
+
*
|
|
447
|
+
* @param props - One or more property values to check
|
|
448
|
+
*
|
|
449
|
+
* @returns true if all specified properties are present, false otherwise
|
|
450
|
+
*
|
|
451
|
+
* @example
|
|
452
|
+
* ```typescript
|
|
453
|
+
* import { AV_CODEC_PROP_FIELDS, AV_CODEC_PROP_REORDER } from 'node-av/constants';
|
|
454
|
+
*
|
|
455
|
+
* if (params.hasProperties(AV_CODEC_PROP_FIELDS)) {
|
|
456
|
+
* console.log('Codec supports interlaced video (fields)');
|
|
457
|
+
* }
|
|
458
|
+
*
|
|
459
|
+
* // Check multiple properties
|
|
460
|
+
* if (params.hasProperties(AV_CODEC_PROP_LOSSY, AV_CODEC_PROP_REORDER)) {
|
|
461
|
+
* console.log('Codec is lossy and supports frame reordering');
|
|
462
|
+
* }
|
|
463
|
+
* ```
|
|
464
|
+
*
|
|
465
|
+
* @see {@link codecProperties} For direct properties access
|
|
466
|
+
*/
|
|
467
|
+
hasProperties(...props) {
|
|
468
|
+
for (const prop of props) {
|
|
469
|
+
if ((this.native.codecProperties & prop) !== prop) {
|
|
470
|
+
return false;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
return true;
|
|
474
|
+
}
|
|
333
475
|
/**
|
|
334
476
|
* Allocate codec parameters.
|
|
335
477
|
*
|
|
@@ -449,6 +591,40 @@ export class CodecParameters {
|
|
|
449
591
|
toContext(codecContext) {
|
|
450
592
|
return this.native.toContext(codecContext.getNative());
|
|
451
593
|
}
|
|
594
|
+
/**
|
|
595
|
+
* Parse extradata to extract codec parameters.
|
|
596
|
+
*
|
|
597
|
+
* Opens a decoder to parse extradata (SPS/PPS for H.264, etc.) and extract
|
|
598
|
+
* codec parameters like width/height for video or sample_rate for audio.
|
|
599
|
+
* This is used when extradata exists (e.g., from SDP sprop-parameter-sets)
|
|
600
|
+
* but dimensions are missing due to insufficient probesize.
|
|
601
|
+
*
|
|
602
|
+
* Uses FFmpeg's decoder to parse extradata, same as avformat_find_stream_info()
|
|
603
|
+
* does internally. Works for all codecs (H.264, H.265, VP9, AV1, etc.).
|
|
604
|
+
*
|
|
605
|
+
* @returns 0 on success, negative error code on failure
|
|
606
|
+
*
|
|
607
|
+
* @example
|
|
608
|
+
* ```typescript
|
|
609
|
+
* import { FFmpegError } from 'node-av';
|
|
610
|
+
*
|
|
611
|
+
* // After opening RTSP with low probesize
|
|
612
|
+
* const input = await Demuxer.open('rtsp://...', {
|
|
613
|
+
* options: { probesize: 32 }
|
|
614
|
+
* });
|
|
615
|
+
*
|
|
616
|
+
* const stream = input.video();
|
|
617
|
+
* if (stream.codecpar.width === 0 && stream.codecpar.extradata) {
|
|
618
|
+
* // Parse extradata to get dimensions
|
|
619
|
+
* const ret = stream.codecpar.parseExtradata();
|
|
620
|
+
* FFmpegError.throwIfError(ret, 'parseExtradata');
|
|
621
|
+
* console.log(`Dimensions: ${stream.codecpar.width}x${stream.codecpar.height}`);
|
|
622
|
+
* }
|
|
623
|
+
* ```
|
|
624
|
+
*/
|
|
625
|
+
parseExtradata() {
|
|
626
|
+
return this.native.parseExtradata();
|
|
627
|
+
}
|
|
452
628
|
/**
|
|
453
629
|
* Convert to JSON representation.
|
|
454
630
|
*
|
|
@@ -466,6 +642,94 @@ export class CodecParameters {
|
|
|
466
642
|
toJSON() {
|
|
467
643
|
return this.native.toJSON();
|
|
468
644
|
}
|
|
645
|
+
/**
|
|
646
|
+
* Get coded side data.
|
|
647
|
+
*
|
|
648
|
+
* Retrieves additional data associated with the codec parameters
|
|
649
|
+
* (e.g., HDR metadata, Dolby Vision configuration, mastering display).
|
|
650
|
+
*
|
|
651
|
+
* Direct mapping to accessing AVCodecParameters.coded_side_data.
|
|
652
|
+
*
|
|
653
|
+
* @param type - Type of side data to retrieve
|
|
654
|
+
*
|
|
655
|
+
* @returns Side data buffer, or null if not present
|
|
656
|
+
*
|
|
657
|
+
* @example
|
|
658
|
+
* ```typescript
|
|
659
|
+
* import { AV_PKT_DATA_MASTERING_DISPLAY_METADATA } from 'node-av/constants';
|
|
660
|
+
*
|
|
661
|
+
* // Get HDR mastering display metadata
|
|
662
|
+
* const hdrData = params.getCodedSideData(AV_PKT_DATA_MASTERING_DISPLAY_METADATA);
|
|
663
|
+
* if (hdrData) {
|
|
664
|
+
* console.log(`HDR metadata: ${hdrData.length} bytes`);
|
|
665
|
+
* }
|
|
666
|
+
* ```
|
|
667
|
+
*
|
|
668
|
+
* @see {@link addCodedSideData} To add side data
|
|
669
|
+
* @see {@link nbCodedSideData} For count of side data entries
|
|
670
|
+
*/
|
|
671
|
+
getCodedSideData(type) {
|
|
672
|
+
return this.native.getCodedSideData(type);
|
|
673
|
+
}
|
|
674
|
+
/**
|
|
675
|
+
* Get all coded side data entries.
|
|
676
|
+
*
|
|
677
|
+
* Returns all side data attached to the codec parameters.
|
|
678
|
+
* Each entry contains the type and data buffer.
|
|
679
|
+
* This allows iteration over all side data like FFmpeg CLI does.
|
|
680
|
+
*
|
|
681
|
+
* Direct mapping to accessing AVCodecParameters.coded_side_data array.
|
|
682
|
+
*
|
|
683
|
+
* @returns Array of side data entries with type and data
|
|
684
|
+
*
|
|
685
|
+
* @example
|
|
686
|
+
* ```typescript
|
|
687
|
+
* // Iterate all side data like FFmpeg does (ffmpeg_mux_init.c)
|
|
688
|
+
* const allSideData = params.getAllCodedSideData();
|
|
689
|
+
* for (const sd of allSideData) {
|
|
690
|
+
* console.log(`Type: ${sd.type}, Size: ${sd.data.length}`);
|
|
691
|
+
* // Copy to output stream
|
|
692
|
+
* outParams.addCodedSideData(sd.type, sd.data);
|
|
693
|
+
* }
|
|
694
|
+
* ```
|
|
695
|
+
*
|
|
696
|
+
* @see {@link getCodedSideData} To get specific side data by type
|
|
697
|
+
* @see {@link addCodedSideData} To add side data
|
|
698
|
+
* @see {@link nbCodedSideData} For count of side data entries
|
|
699
|
+
*/
|
|
700
|
+
getAllCodedSideData() {
|
|
701
|
+
return this.native.getAllCodedSideData();
|
|
702
|
+
}
|
|
703
|
+
/**
|
|
704
|
+
* Add coded side data to codec parameters.
|
|
705
|
+
*
|
|
706
|
+
* Attaches additional data to the codec parameters. The data is copied.
|
|
707
|
+
* Commonly used for HDR metadata, Dolby Vision configuration, etc.
|
|
708
|
+
*
|
|
709
|
+
* Direct mapping to av_packet_side_data_add() for coded_side_data.
|
|
710
|
+
*
|
|
711
|
+
* @param type - Type of side data
|
|
712
|
+
*
|
|
713
|
+
* @param data - Side data buffer
|
|
714
|
+
*
|
|
715
|
+
* @returns 0 on success, negative AVERROR on error
|
|
716
|
+
*
|
|
717
|
+
* @example
|
|
718
|
+
* ```typescript
|
|
719
|
+
* import { FFmpegError } from 'node-av';
|
|
720
|
+
* import { AV_PKT_DATA_DOVI_CONF } from 'node-av/constants';
|
|
721
|
+
*
|
|
722
|
+
* // Add Dolby Vision configuration
|
|
723
|
+
* const doviConf = Buffer.from([...]); // Dolby Vision config data
|
|
724
|
+
* const ret = params.addCodedSideData(AV_PKT_DATA_DOVI_CONF, doviConf);
|
|
725
|
+
* FFmpegError.throwIfError(ret, 'addCodedSideData');
|
|
726
|
+
* ```
|
|
727
|
+
*
|
|
728
|
+
* @see {@link getCodedSideData} To retrieve side data
|
|
729
|
+
*/
|
|
730
|
+
addCodedSideData(type, data) {
|
|
731
|
+
return this.native.addCodedSideData(type, data);
|
|
732
|
+
}
|
|
469
733
|
/**
|
|
470
734
|
* Get the underlying native CodecParameters object.
|
|
471
735
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec-parameters.js","sourceRoot":"","sources":["../../src/lib/codec-parameters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"codec-parameters.js","sourceRoot":"","sources":["../../src/lib/codec-parameters.ts"],"names":[],"mappings":"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"}
|
|
@@ -133,6 +133,29 @@ export declare class CodecParser implements Disposable, NativeWrapper<NativeCode
|
|
|
133
133
|
* @see {@link init} To initialize parser
|
|
134
134
|
*/
|
|
135
135
|
parse2(codecContext: CodecContext, packet: Packet, data: Buffer, pts: bigint, dts: bigint, pos: number): number;
|
|
136
|
+
/**
|
|
137
|
+
* Number of pictures to repeat for field-based interlaced content.
|
|
138
|
+
*
|
|
139
|
+
* Used to calculate frame duration for interlaced video:
|
|
140
|
+
* `frame_duration = (1 + repeat_pict) * time_base`
|
|
141
|
+
*
|
|
142
|
+
* Commonly used in H.264 to display telecined material.
|
|
143
|
+
* Value comes from the codec parser after parsing a frame.
|
|
144
|
+
*
|
|
145
|
+
* Direct mapping to AVCodecParserContext.repeat_pict.
|
|
146
|
+
*
|
|
147
|
+
* @returns Repeat picture count (0 for progressive, >0 for interlaced)
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```typescript
|
|
151
|
+
* const parser = stream.parser;
|
|
152
|
+
* if (parser) {
|
|
153
|
+
* const fields = 1 + parser.repeatPict;
|
|
154
|
+
* console.log(`Frame uses ${fields} fields`);
|
|
155
|
+
* }
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
get repeatPict(): number;
|
|
136
159
|
/**
|
|
137
160
|
* Close the codec parser.
|
|
138
161
|
*
|
package/dist/lib/codec-parser.js
CHANGED
|
@@ -136,6 +136,31 @@ export class CodecParser {
|
|
|
136
136
|
parse2(codecContext, packet, data, pts, dts, pos) {
|
|
137
137
|
return this.native.parse2(codecContext.getNative(), packet.getNative(), data, pts, dts, pos);
|
|
138
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Number of pictures to repeat for field-based interlaced content.
|
|
141
|
+
*
|
|
142
|
+
* Used to calculate frame duration for interlaced video:
|
|
143
|
+
* `frame_duration = (1 + repeat_pict) * time_base`
|
|
144
|
+
*
|
|
145
|
+
* Commonly used in H.264 to display telecined material.
|
|
146
|
+
* Value comes from the codec parser after parsing a frame.
|
|
147
|
+
*
|
|
148
|
+
* Direct mapping to AVCodecParserContext.repeat_pict.
|
|
149
|
+
*
|
|
150
|
+
* @returns Repeat picture count (0 for progressive, >0 for interlaced)
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* const parser = stream.parser;
|
|
155
|
+
* if (parser) {
|
|
156
|
+
* const fields = 1 + parser.repeatPict;
|
|
157
|
+
* console.log(`Frame uses ${fields} fields`);
|
|
158
|
+
* }
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
get repeatPict() {
|
|
162
|
+
return this.native.repeatPict;
|
|
163
|
+
}
|
|
139
164
|
/**
|
|
140
165
|
* Close the codec parser.
|
|
141
166
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec-parser.js","sourceRoot":"","sources":["../../src/lib/codec-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAOxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,OAAO,WAAW;IACd,MAAM,CAAoB;IAElC;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,IAAI,CAAC,OAAkB;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwDG;IACH,MAAM,CAAC,YAA0B,EAAE,MAAc,EAAE,IAAY,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW;QACpG,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/F,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"codec-parser.js","sourceRoot":"","sources":["../../src/lib/codec-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAOxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,OAAO,WAAW;IACd,MAAM,CAAoB;IAElC;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,IAAI,CAAC,OAAkB;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwDG;IACH,MAAM,CAAC,YAA0B,EAAE,MAAc,EAAE,IAAY,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW;QACpG,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/F,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;CACF"}
|