node-av 3.1.3 → 4.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 +65 -52
- package/binding.gyp +4 -0
- 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 +319 -78
- package/dist/api/bitstream-filter.js +680 -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 +279 -17
- package/dist/api/decoder.js +998 -209
- package/dist/api/decoder.js.map +1 -1
- package/dist/api/{media-input.d.ts → demuxer.d.ts} +294 -44
- package/dist/api/demuxer.js +1968 -0
- package/dist/api/demuxer.js.map +1 -0
- package/dist/api/encoder.d.ts +308 -50
- package/dist/api/encoder.js +1133 -111
- package/dist/api/encoder.js.map +1 -1
- package/dist/api/filter-presets.d.ts +12 -5
- package/dist/api/filter-presets.js +21 -7
- package/dist/api/filter-presets.js.map +1 -1
- package/dist/api/filter.d.ts +406 -40
- package/dist/api/filter.js +966 -139
- 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 +6 -4
- package/dist/api/index.js +14 -8
- package/dist/api/index.js.map +1 -1
- package/dist/api/io-stream.d.ts +3 -3
- 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} +274 -60
- 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 +435 -425
- 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 +476 -55
- 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 +1 -1
- package/dist/api/utilities/image.d.ts +1 -1
- package/dist/api/utilities/index.d.ts +2 -0
- package/dist/api/utilities/index.js +4 -0
- package/dist/api/utilities/index.js.map +1 -1
- package/dist/api/utilities/media-type.d.ts +1 -1
- package/dist/api/utilities/pixel-format.d.ts +1 -1
- package/dist/api/utilities/sample-format.d.ts +1 -1
- package/dist/api/utilities/scheduler.d.ts +169 -0
- package/dist/api/utilities/scheduler.js +136 -0
- package/dist/api/utilities/scheduler.js.map +1 -0
- package/dist/api/utilities/streaming.d.ts +74 -15
- package/dist/api/utilities/streaming.js +170 -12
- package/dist/api/utilities/streaming.js.map +1 -1
- package/dist/api/utilities/timestamp.d.ts +1 -1
- 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/constants/constants.d.ts +51 -1
- package/dist/constants/constants.js +47 -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/lib/binding.d.ts +19 -8
- 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 +183 -1
- package/dist/lib/codec-parameters.js +209 -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/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 +168 -0
- package/dist/lib/frame.js +212 -0
- 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 +1 -0
- package/dist/lib/index.js +2 -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 +48 -26
- 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/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 +27 -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/package.json +20 -19
- 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
|
@@ -171,6 +171,34 @@ export class OutputFormat {
|
|
|
171
171
|
get flags() {
|
|
172
172
|
return this.native.flags;
|
|
173
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Check if output format has specific flags.
|
|
176
|
+
*
|
|
177
|
+
* Tests whether all specified flags are set using bitwise AND.
|
|
178
|
+
*
|
|
179
|
+
* @param flags - One or more flag values to check
|
|
180
|
+
*
|
|
181
|
+
* @returns true if all specified flags are set, false otherwise
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* import { AVFMT_GLOBALHEADER } from 'node-av/constants';
|
|
186
|
+
*
|
|
187
|
+
* if (outputFormat.hasFlags(AVFMT_GLOBALHEADER)) {
|
|
188
|
+
* console.log('This format requires global headers');
|
|
189
|
+
* }
|
|
190
|
+
* ```
|
|
191
|
+
*
|
|
192
|
+
* @see {@link flags} For direct flags access
|
|
193
|
+
*/
|
|
194
|
+
hasFlags(...flags) {
|
|
195
|
+
for (const flag of flags) {
|
|
196
|
+
if ((this.native.flags & flag) !== flag) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
174
202
|
/**
|
|
175
203
|
* Get the underlying native OutputFormat object.
|
|
176
204
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-format.js","sourceRoot":"","sources":["../../src/lib/output-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,OAAO,YAAY;IACf,MAAM,CAAqB;IAEnC;;;;OAIG;IACH,YAAY,MAA0B;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,MAAM,CAAC,WAAW,CAAC,SAAwB,EAAE,QAAuB,EAAE,QAAuB;QAC3F,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"output-format.js","sourceRoot":"","sources":["../../src/lib/output-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,OAAO,YAAY;IACf,MAAM,CAAqB;IAEnC;;;;OAIG;IACH,YAAY,MAA0B;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,MAAM,CAAC,WAAW,CAAC,SAAwB,EAAE,QAAuB,EAAE,QAAuB;QAC3F,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,GAAG,KAA2C;QACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACxC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
|
package/dist/lib/packet.d.ts
CHANGED
|
@@ -85,6 +85,16 @@ export declare class Packet implements Disposable, NativeWrapper<NativePacket> {
|
|
|
85
85
|
*/
|
|
86
86
|
get duration(): bigint;
|
|
87
87
|
set duration(value: bigint);
|
|
88
|
+
/**
|
|
89
|
+
* Timebase for timestamps in this packet.
|
|
90
|
+
*
|
|
91
|
+
* Used by av_interleaved_write_frame() to correctly sort packets from different streams.
|
|
92
|
+
* Must be set to the output stream's timebase before calling av_interleaved_write_frame().
|
|
93
|
+
*
|
|
94
|
+
* Direct mapping to AVPacket->time_base.
|
|
95
|
+
*/
|
|
96
|
+
get timeBase(): IRational;
|
|
97
|
+
set timeBase(value: IRational);
|
|
88
98
|
/**
|
|
89
99
|
* Byte position in stream.
|
|
90
100
|
*
|
|
@@ -416,6 +426,7 @@ export declare class Packet implements Disposable, NativeWrapper<NativePacket> {
|
|
|
416
426
|
* ```
|
|
417
427
|
*
|
|
418
428
|
* @see {@link clearFlags} To unset flags
|
|
429
|
+
* @see {@link hasFlags} To check flags
|
|
419
430
|
* @see {@link flags} For direct flag access
|
|
420
431
|
*/
|
|
421
432
|
setFlags(...flags: AVPacketFlag[]): void;
|
|
@@ -436,9 +447,33 @@ export declare class Packet implements Disposable, NativeWrapper<NativePacket> {
|
|
|
436
447
|
* ```
|
|
437
448
|
*
|
|
438
449
|
* @see {@link setFlags} To set flags
|
|
450
|
+
* @see {@link hasFlags} To check flags
|
|
439
451
|
* @see {@link flags} For direct flag access
|
|
440
452
|
*/
|
|
441
453
|
clearFlags(...flags: AVPacketFlag[]): void;
|
|
454
|
+
/**
|
|
455
|
+
* Check if packet has specific flags.
|
|
456
|
+
*
|
|
457
|
+
* Tests whether all specified flags are set using bitwise AND.
|
|
458
|
+
*
|
|
459
|
+
* @param flags - One or more flag values to check
|
|
460
|
+
*
|
|
461
|
+
* @returns true if all specified flags are set, false otherwise
|
|
462
|
+
*
|
|
463
|
+
* @example
|
|
464
|
+
* ```typescript
|
|
465
|
+
* import { AV_PKT_FLAG_KEY } from 'node-av/constants';
|
|
466
|
+
*
|
|
467
|
+
* if (packet.hasFlags(AV_PKT_FLAG_KEY)) {
|
|
468
|
+
* console.log('This is a keyframe packet');
|
|
469
|
+
* }
|
|
470
|
+
* ```
|
|
471
|
+
*
|
|
472
|
+
* @see {@link setFlags} To set flags
|
|
473
|
+
* @see {@link clearFlags} To unset flags
|
|
474
|
+
* @see {@link flags} For direct flag access
|
|
475
|
+
*/
|
|
476
|
+
hasFlags(...flags: AVPacketFlag[]): boolean;
|
|
442
477
|
/**
|
|
443
478
|
* Get the underlying native Packet object.
|
|
444
479
|
*
|
package/dist/lib/packet.js
CHANGED
|
@@ -101,6 +101,20 @@ export class Packet {
|
|
|
101
101
|
set duration(value) {
|
|
102
102
|
this.native.duration = value;
|
|
103
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Timebase for timestamps in this packet.
|
|
106
|
+
*
|
|
107
|
+
* Used by av_interleaved_write_frame() to correctly sort packets from different streams.
|
|
108
|
+
* Must be set to the output stream's timebase before calling av_interleaved_write_frame().
|
|
109
|
+
*
|
|
110
|
+
* Direct mapping to AVPacket->time_base.
|
|
111
|
+
*/
|
|
112
|
+
get timeBase() {
|
|
113
|
+
return this.native.timeBase;
|
|
114
|
+
}
|
|
115
|
+
set timeBase(value) {
|
|
116
|
+
this.native.timeBase = value;
|
|
117
|
+
}
|
|
104
118
|
/**
|
|
105
119
|
* Byte position in stream.
|
|
106
120
|
*
|
|
@@ -481,10 +495,13 @@ export class Packet {
|
|
|
481
495
|
* ```
|
|
482
496
|
*
|
|
483
497
|
* @see {@link clearFlags} To unset flags
|
|
498
|
+
* @see {@link hasFlags} To check flags
|
|
484
499
|
* @see {@link flags} For direct flag access
|
|
485
500
|
*/
|
|
486
501
|
setFlags(...flags) {
|
|
487
|
-
|
|
502
|
+
for (const flag of flags) {
|
|
503
|
+
this.native.flags = (this.native.flags | flag);
|
|
504
|
+
}
|
|
488
505
|
}
|
|
489
506
|
/**
|
|
490
507
|
* Clear packet flags.
|
|
@@ -503,10 +520,43 @@ export class Packet {
|
|
|
503
520
|
* ```
|
|
504
521
|
*
|
|
505
522
|
* @see {@link setFlags} To set flags
|
|
523
|
+
* @see {@link hasFlags} To check flags
|
|
506
524
|
* @see {@link flags} For direct flag access
|
|
507
525
|
*/
|
|
508
526
|
clearFlags(...flags) {
|
|
509
|
-
|
|
527
|
+
for (const flag of flags) {
|
|
528
|
+
this.native.flags = (this.native.flags & ~flag);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Check if packet has specific flags.
|
|
533
|
+
*
|
|
534
|
+
* Tests whether all specified flags are set using bitwise AND.
|
|
535
|
+
*
|
|
536
|
+
* @param flags - One or more flag values to check
|
|
537
|
+
*
|
|
538
|
+
* @returns true if all specified flags are set, false otherwise
|
|
539
|
+
*
|
|
540
|
+
* @example
|
|
541
|
+
* ```typescript
|
|
542
|
+
* import { AV_PKT_FLAG_KEY } from 'node-av/constants';
|
|
543
|
+
*
|
|
544
|
+
* if (packet.hasFlags(AV_PKT_FLAG_KEY)) {
|
|
545
|
+
* console.log('This is a keyframe packet');
|
|
546
|
+
* }
|
|
547
|
+
* ```
|
|
548
|
+
*
|
|
549
|
+
* @see {@link setFlags} To set flags
|
|
550
|
+
* @see {@link clearFlags} To unset flags
|
|
551
|
+
* @see {@link flags} For direct flag access
|
|
552
|
+
*/
|
|
553
|
+
hasFlags(...flags) {
|
|
554
|
+
for (const flag of flags) {
|
|
555
|
+
if ((this.native.flags & flag) !== flag) {
|
|
556
|
+
return false;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
return true;
|
|
510
560
|
}
|
|
511
561
|
/**
|
|
512
562
|
* Get the underlying native Packet object.
|
package/dist/lib/packet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet.js","sourceRoot":"","sources":["../../src/lib/packet.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"packet.js","sourceRoot":"","sources":["../../src/lib/packet.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/stream.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CodecParameters } from './codec-parameters.js';
|
|
2
|
+
import { CodecParser } from './codec-parser.js';
|
|
2
3
|
import { Dictionary } from './dictionary.js';
|
|
3
4
|
import { Rational } from './rational.js';
|
|
4
5
|
import type { AVDiscard, AVDisposition, AVStreamEventFlag } from '../constants/constants.js';
|
|
@@ -47,7 +48,9 @@ import type { Packet } from './packet.js';
|
|
|
47
48
|
*/
|
|
48
49
|
export declare class Stream implements NativeWrapper<NativeStream> {
|
|
49
50
|
private native;
|
|
51
|
+
private _metadata?;
|
|
50
52
|
private _codecpar?;
|
|
53
|
+
private _parser?;
|
|
51
54
|
/**
|
|
52
55
|
* @param native - The native stream instance
|
|
53
56
|
*
|
|
@@ -173,6 +176,16 @@ export declare class Stream implements NativeWrapper<NativeStream> {
|
|
|
173
176
|
*/
|
|
174
177
|
get rFrameRate(): Rational;
|
|
175
178
|
set rFrameRate(value: Rational);
|
|
179
|
+
/**
|
|
180
|
+
* Number of bits for PTS wrap-around detection.
|
|
181
|
+
*
|
|
182
|
+
* Used for timestamp wrap-around correction in formats with limited timestamp bits.
|
|
183
|
+
* Common values: 33 (MPEG-TS), 31 (DVB), 64 (no wrapping).
|
|
184
|
+
*
|
|
185
|
+
* Direct mapping to AVStream->pts_wrap_bits.
|
|
186
|
+
*/
|
|
187
|
+
get ptsWrapBits(): number;
|
|
188
|
+
set ptsWrapBits(value: number);
|
|
176
189
|
/**
|
|
177
190
|
* Stream metadata.
|
|
178
191
|
*
|
|
@@ -202,6 +215,29 @@ export declare class Stream implements NativeWrapper<NativeStream> {
|
|
|
202
215
|
*/
|
|
203
216
|
get eventFlags(): AVStreamEventFlag;
|
|
204
217
|
set eventFlags(value: AVStreamEventFlag);
|
|
218
|
+
/**
|
|
219
|
+
* Get the codec parser attached to this stream.
|
|
220
|
+
*
|
|
221
|
+
* Returns the parser context if the stream has an active parser, null otherwise.
|
|
222
|
+
* Parsers are automatically created by FFmpeg for certain formats and codecs.
|
|
223
|
+
* Useful for accessing parser state like repeat_pict for interlaced video.
|
|
224
|
+
*
|
|
225
|
+
* Direct mapping to av_stream_get_parser().
|
|
226
|
+
*
|
|
227
|
+
* @returns Parser context or null if no parser attached
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```typescript
|
|
231
|
+
* const parser = stream.parser;
|
|
232
|
+
* if (parser) {
|
|
233
|
+
* const fields = 1 + parser.repeatPict;
|
|
234
|
+
* console.log(`Frame uses ${fields} fields`);
|
|
235
|
+
* }
|
|
236
|
+
* ```
|
|
237
|
+
*
|
|
238
|
+
* @see {@link CodecParser} For parser details
|
|
239
|
+
*/
|
|
240
|
+
get parser(): CodecParser | null;
|
|
205
241
|
/**
|
|
206
242
|
* Set stream event flags.
|
|
207
243
|
*
|
|
@@ -219,6 +255,7 @@ export declare class Stream implements NativeWrapper<NativeStream> {
|
|
|
219
255
|
* ```
|
|
220
256
|
*
|
|
221
257
|
* @see {@link clearEventFlags} To unset event flags
|
|
258
|
+
* @see {@link hasEventFlags} To check event flags
|
|
222
259
|
* @see {@link eventFlags} For direct event flag access
|
|
223
260
|
*/
|
|
224
261
|
setEventFlags(...flags: AVStreamEventFlag[]): void;
|
|
@@ -239,9 +276,98 @@ export declare class Stream implements NativeWrapper<NativeStream> {
|
|
|
239
276
|
* ```
|
|
240
277
|
*
|
|
241
278
|
* @see {@link setEventFlags} To set event flags
|
|
279
|
+
* @see {@link hasEventFlags} To check event flags
|
|
242
280
|
* @see {@link eventFlags} For direct event flag access
|
|
243
281
|
*/
|
|
244
282
|
clearEventFlags(...flags: AVStreamEventFlag[]): void;
|
|
283
|
+
/**
|
|
284
|
+
* Check if stream has specific event flags.
|
|
285
|
+
*
|
|
286
|
+
* Tests whether all specified event flags are set using bitwise AND.
|
|
287
|
+
*
|
|
288
|
+
* @param flags - One or more event flag values to check
|
|
289
|
+
*
|
|
290
|
+
* @returns true if all specified event flags are set, false otherwise
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```typescript
|
|
294
|
+
* import { AVSTREAM_EVENT_FLAG_METADATA_UPDATED } from 'node-av/constants';
|
|
295
|
+
*
|
|
296
|
+
* if (stream.hasEventFlags(AVSTREAM_EVENT_FLAG_METADATA_UPDATED)) {
|
|
297
|
+
* console.log('Stream metadata was updated');
|
|
298
|
+
* }
|
|
299
|
+
* ```
|
|
300
|
+
*
|
|
301
|
+
* @see {@link setEventFlags} To set event flags
|
|
302
|
+
* @see {@link clearEventFlags} To unset event flags
|
|
303
|
+
* @see {@link eventFlags} For direct event flag access
|
|
304
|
+
*/
|
|
305
|
+
hasEventFlags(...flags: AVStreamEventFlag[]): boolean;
|
|
306
|
+
/**
|
|
307
|
+
* Set stream disposition flags.
|
|
308
|
+
*
|
|
309
|
+
* Sets one or more disposition flags using bitwise OR. Allows setting multiple flags
|
|
310
|
+
* without manually performing bitwise operations.
|
|
311
|
+
*
|
|
312
|
+
* @param flags - One or more disposition flag values to set
|
|
313
|
+
*
|
|
314
|
+
* @example
|
|
315
|
+
* ```typescript
|
|
316
|
+
* import { AV_DISPOSITION_DEFAULT, AV_DISPOSITION_FORCED } from 'node-av/constants';
|
|
317
|
+
*
|
|
318
|
+
* // Set multiple disposition flags at once
|
|
319
|
+
* stream.setDisposition(AV_DISPOSITION_DEFAULT, AV_DISPOSITION_FORCED);
|
|
320
|
+
* ```
|
|
321
|
+
*
|
|
322
|
+
* @see {@link clearDisposition} To unset disposition flags
|
|
323
|
+
* @see {@link hasDisposition} To check disposition flags
|
|
324
|
+
* @see {@link disposition} For direct disposition flag access
|
|
325
|
+
*/
|
|
326
|
+
setDisposition(...flags: AVDisposition[]): void;
|
|
327
|
+
/**
|
|
328
|
+
* Clear stream disposition flags.
|
|
329
|
+
*
|
|
330
|
+
* Clears one or more disposition flags using bitwise AND NOT. Allows clearing multiple
|
|
331
|
+
* flags without manually performing bitwise operations.
|
|
332
|
+
*
|
|
333
|
+
* @param flags - One or more disposition flag values to clear
|
|
334
|
+
*
|
|
335
|
+
* @example
|
|
336
|
+
* ```typescript
|
|
337
|
+
* import { AV_DISPOSITION_FORCED } from 'node-av/constants';
|
|
338
|
+
*
|
|
339
|
+
* // Clear specific disposition flag
|
|
340
|
+
* stream.clearDisposition(AV_DISPOSITION_FORCED);
|
|
341
|
+
* ```
|
|
342
|
+
*
|
|
343
|
+
* @see {@link setDisposition} To set disposition flags
|
|
344
|
+
* @see {@link hasDisposition} To check disposition flags
|
|
345
|
+
* @see {@link disposition} For direct disposition flag access
|
|
346
|
+
*/
|
|
347
|
+
clearDisposition(...flags: AVDisposition[]): void;
|
|
348
|
+
/**
|
|
349
|
+
* Check if stream has specific disposition flags.
|
|
350
|
+
*
|
|
351
|
+
* Tests whether all specified disposition flags are set using bitwise AND.
|
|
352
|
+
*
|
|
353
|
+
* @param flags - One or more disposition flag values to check
|
|
354
|
+
*
|
|
355
|
+
* @returns true if all specified disposition flags are set, false otherwise
|
|
356
|
+
*
|
|
357
|
+
* @example
|
|
358
|
+
* ```typescript
|
|
359
|
+
* import { AV_DISPOSITION_DEFAULT } from 'node-av/constants';
|
|
360
|
+
*
|
|
361
|
+
* if (stream.hasDisposition(AV_DISPOSITION_DEFAULT)) {
|
|
362
|
+
* console.log('Stream is marked as default');
|
|
363
|
+
* }
|
|
364
|
+
* ```
|
|
365
|
+
*
|
|
366
|
+
* @see {@link setDisposition} To set disposition flags
|
|
367
|
+
* @see {@link clearDisposition} To unset disposition flags
|
|
368
|
+
* @see {@link disposition} For direct disposition flag access
|
|
369
|
+
*/
|
|
370
|
+
hasDisposition(...flags: AVDisposition[]): boolean;
|
|
245
371
|
/**
|
|
246
372
|
* Get the underlying native Stream object.
|
|
247
373
|
*
|
package/dist/lib/stream.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CodecParameters } from './codec-parameters.js';
|
|
2
|
+
import { CodecParser } from './codec-parser.js';
|
|
2
3
|
import { Dictionary } from './dictionary.js';
|
|
3
4
|
import { Rational } from './rational.js';
|
|
4
5
|
/**
|
|
@@ -44,7 +45,9 @@ import { Rational } from './rational.js';
|
|
|
44
45
|
*/
|
|
45
46
|
export class Stream {
|
|
46
47
|
native;
|
|
48
|
+
_metadata; // Cache for metadata wrapper
|
|
47
49
|
_codecpar; // Cache the wrapped codecpar
|
|
50
|
+
_parser; // Cache the wrapped parser
|
|
48
51
|
/**
|
|
49
52
|
* @param native - The native stream instance
|
|
50
53
|
*
|
|
@@ -242,6 +245,20 @@ export class Stream {
|
|
|
242
245
|
set rFrameRate(value) {
|
|
243
246
|
this.native.rFrameRate = { num: value.num, den: value.den };
|
|
244
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Number of bits for PTS wrap-around detection.
|
|
250
|
+
*
|
|
251
|
+
* Used for timestamp wrap-around correction in formats with limited timestamp bits.
|
|
252
|
+
* Common values: 33 (MPEG-TS), 31 (DVB), 64 (no wrapping).
|
|
253
|
+
*
|
|
254
|
+
* Direct mapping to AVStream->pts_wrap_bits.
|
|
255
|
+
*/
|
|
256
|
+
get ptsWrapBits() {
|
|
257
|
+
return this.native.ptsWrapBits;
|
|
258
|
+
}
|
|
259
|
+
set ptsWrapBits(value) {
|
|
260
|
+
this.native.ptsWrapBits = value;
|
|
261
|
+
}
|
|
245
262
|
/**
|
|
246
263
|
* Stream metadata.
|
|
247
264
|
*
|
|
@@ -251,14 +268,25 @@ export class Stream {
|
|
|
251
268
|
* Direct mapping to AVStream->metadata.
|
|
252
269
|
*/
|
|
253
270
|
get metadata() {
|
|
254
|
-
const
|
|
255
|
-
if (!
|
|
271
|
+
const native = this.native.metadata;
|
|
272
|
+
if (!native) {
|
|
273
|
+
// Clear cache if native is null
|
|
274
|
+
this._metadata = undefined;
|
|
256
275
|
return null;
|
|
257
276
|
}
|
|
258
|
-
|
|
277
|
+
// Return cached wrapper if available and still valid
|
|
278
|
+
if (this._metadata && this._metadata.native === native) {
|
|
279
|
+
return this._metadata;
|
|
280
|
+
}
|
|
281
|
+
// Create and cache new wrapper
|
|
282
|
+
const device = Object.create(Dictionary.prototype);
|
|
283
|
+
device.native = native;
|
|
284
|
+
this._metadata = device;
|
|
285
|
+
return device;
|
|
259
286
|
}
|
|
260
287
|
set metadata(value) {
|
|
261
288
|
this.native.metadata = value?.getNative() ?? null;
|
|
289
|
+
this._metadata = undefined;
|
|
262
290
|
}
|
|
263
291
|
/**
|
|
264
292
|
* Attached picture.
|
|
@@ -285,6 +313,45 @@ export class Stream {
|
|
|
285
313
|
set eventFlags(value) {
|
|
286
314
|
this.native.eventFlags = value;
|
|
287
315
|
}
|
|
316
|
+
/**
|
|
317
|
+
* Get the codec parser attached to this stream.
|
|
318
|
+
*
|
|
319
|
+
* Returns the parser context if the stream has an active parser, null otherwise.
|
|
320
|
+
* Parsers are automatically created by FFmpeg for certain formats and codecs.
|
|
321
|
+
* Useful for accessing parser state like repeat_pict for interlaced video.
|
|
322
|
+
*
|
|
323
|
+
* Direct mapping to av_stream_get_parser().
|
|
324
|
+
*
|
|
325
|
+
* @returns Parser context or null if no parser attached
|
|
326
|
+
*
|
|
327
|
+
* @example
|
|
328
|
+
* ```typescript
|
|
329
|
+
* const parser = stream.parser;
|
|
330
|
+
* if (parser) {
|
|
331
|
+
* const fields = 1 + parser.repeatPict;
|
|
332
|
+
* console.log(`Frame uses ${fields} fields`);
|
|
333
|
+
* }
|
|
334
|
+
* ```
|
|
335
|
+
*
|
|
336
|
+
* @see {@link CodecParser} For parser details
|
|
337
|
+
*/
|
|
338
|
+
get parser() {
|
|
339
|
+
const native = this.native.parser;
|
|
340
|
+
if (!native) {
|
|
341
|
+
// Clear cache if native is null
|
|
342
|
+
this._parser = undefined;
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
345
|
+
// Return cached wrapper if available and still valid
|
|
346
|
+
if (this._parser && this._parser.native === native) {
|
|
347
|
+
return this._parser;
|
|
348
|
+
}
|
|
349
|
+
// Create and cache new wrapper
|
|
350
|
+
const parser = Object.create(CodecParser.prototype);
|
|
351
|
+
parser.native = native;
|
|
352
|
+
this._parser = parser;
|
|
353
|
+
return parser;
|
|
354
|
+
}
|
|
288
355
|
/**
|
|
289
356
|
* Set stream event flags.
|
|
290
357
|
*
|
|
@@ -302,10 +369,13 @@ export class Stream {
|
|
|
302
369
|
* ```
|
|
303
370
|
*
|
|
304
371
|
* @see {@link clearEventFlags} To unset event flags
|
|
372
|
+
* @see {@link hasEventFlags} To check event flags
|
|
305
373
|
* @see {@link eventFlags} For direct event flag access
|
|
306
374
|
*/
|
|
307
375
|
setEventFlags(...flags) {
|
|
308
|
-
|
|
376
|
+
for (const flag of flags) {
|
|
377
|
+
this.native.eventFlags = (this.native.eventFlags | flag);
|
|
378
|
+
}
|
|
309
379
|
}
|
|
310
380
|
/**
|
|
311
381
|
* Clear stream event flags.
|
|
@@ -324,10 +394,123 @@ export class Stream {
|
|
|
324
394
|
* ```
|
|
325
395
|
*
|
|
326
396
|
* @see {@link setEventFlags} To set event flags
|
|
397
|
+
* @see {@link hasEventFlags} To check event flags
|
|
327
398
|
* @see {@link eventFlags} For direct event flag access
|
|
328
399
|
*/
|
|
329
400
|
clearEventFlags(...flags) {
|
|
330
|
-
|
|
401
|
+
for (const flag of flags) {
|
|
402
|
+
this.native.eventFlags = (this.native.eventFlags & ~flag);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Check if stream has specific event flags.
|
|
407
|
+
*
|
|
408
|
+
* Tests whether all specified event flags are set using bitwise AND.
|
|
409
|
+
*
|
|
410
|
+
* @param flags - One or more event flag values to check
|
|
411
|
+
*
|
|
412
|
+
* @returns true if all specified event flags are set, false otherwise
|
|
413
|
+
*
|
|
414
|
+
* @example
|
|
415
|
+
* ```typescript
|
|
416
|
+
* import { AVSTREAM_EVENT_FLAG_METADATA_UPDATED } from 'node-av/constants';
|
|
417
|
+
*
|
|
418
|
+
* if (stream.hasEventFlags(AVSTREAM_EVENT_FLAG_METADATA_UPDATED)) {
|
|
419
|
+
* console.log('Stream metadata was updated');
|
|
420
|
+
* }
|
|
421
|
+
* ```
|
|
422
|
+
*
|
|
423
|
+
* @see {@link setEventFlags} To set event flags
|
|
424
|
+
* @see {@link clearEventFlags} To unset event flags
|
|
425
|
+
* @see {@link eventFlags} For direct event flag access
|
|
426
|
+
*/
|
|
427
|
+
hasEventFlags(...flags) {
|
|
428
|
+
for (const flag of flags) {
|
|
429
|
+
if ((this.native.eventFlags & flag) !== flag) {
|
|
430
|
+
return false;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
return true;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Set stream disposition flags.
|
|
437
|
+
*
|
|
438
|
+
* Sets one or more disposition flags using bitwise OR. Allows setting multiple flags
|
|
439
|
+
* without manually performing bitwise operations.
|
|
440
|
+
*
|
|
441
|
+
* @param flags - One or more disposition flag values to set
|
|
442
|
+
*
|
|
443
|
+
* @example
|
|
444
|
+
* ```typescript
|
|
445
|
+
* import { AV_DISPOSITION_DEFAULT, AV_DISPOSITION_FORCED } from 'node-av/constants';
|
|
446
|
+
*
|
|
447
|
+
* // Set multiple disposition flags at once
|
|
448
|
+
* stream.setDisposition(AV_DISPOSITION_DEFAULT, AV_DISPOSITION_FORCED);
|
|
449
|
+
* ```
|
|
450
|
+
*
|
|
451
|
+
* @see {@link clearDisposition} To unset disposition flags
|
|
452
|
+
* @see {@link hasDisposition} To check disposition flags
|
|
453
|
+
* @see {@link disposition} For direct disposition flag access
|
|
454
|
+
*/
|
|
455
|
+
setDisposition(...flags) {
|
|
456
|
+
for (const flag of flags) {
|
|
457
|
+
this.native.disposition = (this.native.disposition | flag);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Clear stream disposition flags.
|
|
462
|
+
*
|
|
463
|
+
* Clears one or more disposition flags using bitwise AND NOT. Allows clearing multiple
|
|
464
|
+
* flags without manually performing bitwise operations.
|
|
465
|
+
*
|
|
466
|
+
* @param flags - One or more disposition flag values to clear
|
|
467
|
+
*
|
|
468
|
+
* @example
|
|
469
|
+
* ```typescript
|
|
470
|
+
* import { AV_DISPOSITION_FORCED } from 'node-av/constants';
|
|
471
|
+
*
|
|
472
|
+
* // Clear specific disposition flag
|
|
473
|
+
* stream.clearDisposition(AV_DISPOSITION_FORCED);
|
|
474
|
+
* ```
|
|
475
|
+
*
|
|
476
|
+
* @see {@link setDisposition} To set disposition flags
|
|
477
|
+
* @see {@link hasDisposition} To check disposition flags
|
|
478
|
+
* @see {@link disposition} For direct disposition flag access
|
|
479
|
+
*/
|
|
480
|
+
clearDisposition(...flags) {
|
|
481
|
+
for (const flag of flags) {
|
|
482
|
+
this.native.disposition = (this.native.disposition & ~flag);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Check if stream has specific disposition flags.
|
|
487
|
+
*
|
|
488
|
+
* Tests whether all specified disposition flags are set using bitwise AND.
|
|
489
|
+
*
|
|
490
|
+
* @param flags - One or more disposition flag values to check
|
|
491
|
+
*
|
|
492
|
+
* @returns true if all specified disposition flags are set, false otherwise
|
|
493
|
+
*
|
|
494
|
+
* @example
|
|
495
|
+
* ```typescript
|
|
496
|
+
* import { AV_DISPOSITION_DEFAULT } from 'node-av/constants';
|
|
497
|
+
*
|
|
498
|
+
* if (stream.hasDisposition(AV_DISPOSITION_DEFAULT)) {
|
|
499
|
+
* console.log('Stream is marked as default');
|
|
500
|
+
* }
|
|
501
|
+
* ```
|
|
502
|
+
*
|
|
503
|
+
* @see {@link setDisposition} To set disposition flags
|
|
504
|
+
* @see {@link clearDisposition} To unset disposition flags
|
|
505
|
+
* @see {@link disposition} For direct disposition flag access
|
|
506
|
+
*/
|
|
507
|
+
hasDisposition(...flags) {
|
|
508
|
+
for (const flag of flags) {
|
|
509
|
+
if ((this.native.disposition & flag) !== flag) {
|
|
510
|
+
return false;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
return true;
|
|
331
514
|
}
|
|
332
515
|
/**
|
|
333
516
|
* Get the underlying native Stream object.
|
package/dist/lib/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/lib/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,OAAO,MAAM;IACT,MAAM,CAAe;IACrB,SAAS,CAAmB,CAAC,6BAA6B;
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/lib/stream.ts"],"names":[],"mappings":"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"}
|