@revizly/node-av 5.2.2-beta.1
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/BUILD_LINUX.md +61 -0
- package/LICENSE.md +22 -0
- package/README.md +662 -0
- package/build_mac_local.sh +69 -0
- package/dist/api/audio-frame-buffer.d.ts +205 -0
- package/dist/api/audio-frame-buffer.js +287 -0
- package/dist/api/audio-frame-buffer.js.map +1 -0
- package/dist/api/bitstream-filter.d.ts +820 -0
- package/dist/api/bitstream-filter.js +1242 -0
- package/dist/api/bitstream-filter.js.map +1 -0
- 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_h264.h264 +0 -0
- package/dist/api/data/test_hevc.h265 +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 +1088 -0
- package/dist/api/decoder.js +1775 -0
- package/dist/api/decoder.js.map +1 -0
- package/dist/api/demuxer.d.ts +1219 -0
- package/dist/api/demuxer.js +2081 -0
- package/dist/api/demuxer.js.map +1 -0
- package/dist/api/device.d.ts +586 -0
- package/dist/api/device.js +961 -0
- package/dist/api/device.js.map +1 -0
- package/dist/api/encoder.d.ts +1132 -0
- package/dist/api/encoder.js +1988 -0
- package/dist/api/encoder.js.map +1 -0
- package/dist/api/filter-complex.d.ts +821 -0
- package/dist/api/filter-complex.js +1604 -0
- package/dist/api/filter-complex.js.map +1 -0
- package/dist/api/filter-presets.d.ts +1286 -0
- package/dist/api/filter-presets.js +2152 -0
- package/dist/api/filter-presets.js.map +1 -0
- package/dist/api/filter.d.ts +1234 -0
- package/dist/api/filter.js +1976 -0
- package/dist/api/filter.js.map +1 -0
- package/dist/api/fmp4-stream.d.ts +426 -0
- package/dist/api/fmp4-stream.js +739 -0
- package/dist/api/fmp4-stream.js.map +1 -0
- package/dist/api/hardware.d.ts +651 -0
- package/dist/api/hardware.js +1260 -0
- package/dist/api/hardware.js.map +1 -0
- package/dist/api/index.d.ts +17 -0
- package/dist/api/index.js +32 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/io-stream.d.ts +307 -0
- package/dist/api/io-stream.js +282 -0
- package/dist/api/io-stream.js.map +1 -0
- package/dist/api/muxer.d.ts +957 -0
- package/dist/api/muxer.js +2002 -0
- package/dist/api/muxer.js.map +1 -0
- package/dist/api/pipeline.d.ts +607 -0
- package/dist/api/pipeline.js +1145 -0
- package/dist/api/pipeline.js.map +1 -0
- package/dist/api/utilities/async-queue.d.ts +120 -0
- package/dist/api/utilities/async-queue.js +211 -0
- package/dist/api/utilities/async-queue.js.map +1 -0
- package/dist/api/utilities/audio-sample.d.ts +117 -0
- package/dist/api/utilities/audio-sample.js +112 -0
- package/dist/api/utilities/audio-sample.js.map +1 -0
- package/dist/api/utilities/channel-layout.d.ts +76 -0
- package/dist/api/utilities/channel-layout.js +80 -0
- package/dist/api/utilities/channel-layout.js.map +1 -0
- package/dist/api/utilities/electron-shared-texture.d.ts +328 -0
- package/dist/api/utilities/electron-shared-texture.js +503 -0
- package/dist/api/utilities/electron-shared-texture.js.map +1 -0
- package/dist/api/utilities/image.d.ts +207 -0
- package/dist/api/utilities/image.js +213 -0
- package/dist/api/utilities/image.js.map +1 -0
- package/dist/api/utilities/index.d.ts +12 -0
- package/dist/api/utilities/index.js +25 -0
- package/dist/api/utilities/index.js.map +1 -0
- package/dist/api/utilities/media-type.d.ts +49 -0
- package/dist/api/utilities/media-type.js +53 -0
- package/dist/api/utilities/media-type.js.map +1 -0
- package/dist/api/utilities/pixel-format.d.ts +89 -0
- package/dist/api/utilities/pixel-format.js +97 -0
- package/dist/api/utilities/pixel-format.js.map +1 -0
- package/dist/api/utilities/sample-format.d.ts +129 -0
- package/dist/api/utilities/sample-format.js +141 -0
- package/dist/api/utilities/sample-format.js.map +1 -0
- 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 +186 -0
- package/dist/api/utilities/streaming.js +309 -0
- package/dist/api/utilities/streaming.js.map +1 -0
- package/dist/api/utilities/timestamp.d.ts +193 -0
- package/dist/api/utilities/timestamp.js +206 -0
- package/dist/api/utilities/timestamp.js.map +1 -0
- 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/utils.d.ts +19 -0
- package/dist/api/utils.js +39 -0
- package/dist/api/utils.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/channel-layouts.d.ts +53 -0
- package/dist/constants/channel-layouts.js +57 -0
- package/dist/constants/channel-layouts.js.map +1 -0
- package/dist/constants/constants.d.ts +2325 -0
- package/dist/constants/constants.js +1887 -0
- package/dist/constants/constants.js.map +1 -0
- package/dist/constants/decoders.d.ts +633 -0
- package/dist/constants/decoders.js +641 -0
- package/dist/constants/decoders.js.map +1 -0
- package/dist/constants/encoders.d.ts +295 -0
- package/dist/constants/encoders.js +308 -0
- package/dist/constants/encoders.js.map +1 -0
- 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 +5 -0
- package/dist/constants/index.js +6 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/ffmpeg/index.d.ts +99 -0
- package/dist/ffmpeg/index.js +115 -0
- package/dist/ffmpeg/index.js.map +1 -0
- package/dist/ffmpeg/utils.d.ts +31 -0
- package/dist/ffmpeg/utils.js +68 -0
- package/dist/ffmpeg/utils.js.map +1 -0
- package/dist/ffmpeg/version.d.ts +6 -0
- package/dist/ffmpeg/version.js +7 -0
- package/dist/ffmpeg/version.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/audio-fifo.d.ts +399 -0
- package/dist/lib/audio-fifo.js +431 -0
- package/dist/lib/audio-fifo.js.map +1 -0
- package/dist/lib/binding.d.ts +228 -0
- package/dist/lib/binding.js +60 -0
- package/dist/lib/binding.js.map +1 -0
- package/dist/lib/bitstream-filter-context.d.ts +379 -0
- package/dist/lib/bitstream-filter-context.js +441 -0
- package/dist/lib/bitstream-filter-context.js.map +1 -0
- package/dist/lib/bitstream-filter.d.ts +140 -0
- package/dist/lib/bitstream-filter.js +154 -0
- package/dist/lib/bitstream-filter.js.map +1 -0
- package/dist/lib/codec-context.d.ts +1071 -0
- package/dist/lib/codec-context.js +1354 -0
- package/dist/lib/codec-context.js.map +1 -0
- package/dist/lib/codec-parameters.d.ts +616 -0
- package/dist/lib/codec-parameters.js +761 -0
- package/dist/lib/codec-parameters.js.map +1 -0
- package/dist/lib/codec-parser.d.ts +201 -0
- package/dist/lib/codec-parser.js +213 -0
- package/dist/lib/codec-parser.js.map +1 -0
- package/dist/lib/codec.d.ts +586 -0
- package/dist/lib/codec.js +713 -0
- package/dist/lib/codec.js.map +1 -0
- package/dist/lib/device.d.ts +291 -0
- package/dist/lib/device.js +324 -0
- package/dist/lib/device.js.map +1 -0
- package/dist/lib/dictionary.d.ts +333 -0
- package/dist/lib/dictionary.js +372 -0
- package/dist/lib/dictionary.js.map +1 -0
- package/dist/lib/error.d.ts +242 -0
- package/dist/lib/error.js +303 -0
- package/dist/lib/error.js.map +1 -0
- 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 +712 -0
- package/dist/lib/filter-context.js +789 -0
- package/dist/lib/filter-context.js.map +1 -0
- package/dist/lib/filter-graph-segment.d.ts +160 -0
- package/dist/lib/filter-graph-segment.js +171 -0
- package/dist/lib/filter-graph-segment.js.map +1 -0
- package/dist/lib/filter-graph.d.ts +641 -0
- package/dist/lib/filter-graph.js +704 -0
- package/dist/lib/filter-graph.js.map +1 -0
- package/dist/lib/filter-inout.d.ts +198 -0
- package/dist/lib/filter-inout.js +257 -0
- package/dist/lib/filter-inout.js.map +1 -0
- package/dist/lib/filter.d.ts +243 -0
- package/dist/lib/filter.js +272 -0
- package/dist/lib/filter.js.map +1 -0
- package/dist/lib/format-context.d.ts +1254 -0
- package/dist/lib/format-context.js +1379 -0
- package/dist/lib/format-context.js.map +1 -0
- package/dist/lib/frame-utils.d.ts +116 -0
- package/dist/lib/frame-utils.js +98 -0
- package/dist/lib/frame-utils.js.map +1 -0
- package/dist/lib/frame.d.ts +1222 -0
- package/dist/lib/frame.js +1435 -0
- package/dist/lib/frame.js.map +1 -0
- package/dist/lib/hardware-device-context.d.ts +362 -0
- package/dist/lib/hardware-device-context.js +383 -0
- package/dist/lib/hardware-device-context.js.map +1 -0
- package/dist/lib/hardware-frames-context.d.ts +419 -0
- package/dist/lib/hardware-frames-context.js +477 -0
- package/dist/lib/hardware-frames-context.js.map +1 -0
- package/dist/lib/index.d.ts +35 -0
- package/dist/lib/index.js +60 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/input-format.d.ts +249 -0
- package/dist/lib/input-format.js +306 -0
- package/dist/lib/input-format.js.map +1 -0
- package/dist/lib/io-context.d.ts +696 -0
- package/dist/lib/io-context.js +769 -0
- package/dist/lib/io-context.js.map +1 -0
- package/dist/lib/log.d.ts +174 -0
- package/dist/lib/log.js +184 -0
- package/dist/lib/log.js.map +1 -0
- package/dist/lib/native-types.d.ts +946 -0
- package/dist/lib/native-types.js +2 -0
- package/dist/lib/native-types.js.map +1 -0
- package/dist/lib/option.d.ts +927 -0
- package/dist/lib/option.js +1583 -0
- package/dist/lib/option.js.map +1 -0
- package/dist/lib/output-format.d.ts +180 -0
- package/dist/lib/output-format.js +213 -0
- package/dist/lib/output-format.js.map +1 -0
- package/dist/lib/packet.d.ts +501 -0
- package/dist/lib/packet.js +590 -0
- package/dist/lib/packet.js.map +1 -0
- package/dist/lib/rational.d.ts +251 -0
- package/dist/lib/rational.js +278 -0
- package/dist/lib/rational.js.map +1 -0
- package/dist/lib/software-resample-context.d.ts +552 -0
- package/dist/lib/software-resample-context.js +592 -0
- package/dist/lib/software-resample-context.js.map +1 -0
- package/dist/lib/software-scale-context.d.ts +344 -0
- package/dist/lib/software-scale-context.js +366 -0
- package/dist/lib/software-scale-context.js.map +1 -0
- package/dist/lib/stream.d.ts +379 -0
- package/dist/lib/stream.js +526 -0
- package/dist/lib/stream.js.map +1 -0
- 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 +34 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utilities.d.ts +1127 -0
- package/dist/lib/utilities.js +1225 -0
- package/dist/lib/utilities.js.map +1 -0
- package/dist/utils/electron.d.ts +49 -0
- package/dist/utils/electron.js +63 -0
- package/dist/utils/electron.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/install/check.js +121 -0
- package/install/ffmpeg.js +66 -0
- package/jellyfin-ffmpeg.patch +181 -0
- package/package.json +129 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/api/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AsyncQueue provides a promise-based blocking queue similar to FFmpeg's ThreadQueue.
|
|
3
|
+
*
|
|
4
|
+
* Unlike FFmpeg's pthread-based blocking, this uses Promises to achieve
|
|
5
|
+
* non-blocking async behavior while maintaining queue semantics.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const queue = new AsyncQueue<Frame>(8);
|
|
10
|
+
*
|
|
11
|
+
* // Producer
|
|
12
|
+
* await queue.send(frame); // Blocks if queue full
|
|
13
|
+
*
|
|
14
|
+
* // Consumer
|
|
15
|
+
* const frame = await queue.receive(); // Blocks if queue empty
|
|
16
|
+
*
|
|
17
|
+
* // Cleanup
|
|
18
|
+
* queue.close();
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare class AsyncQueue<T> {
|
|
22
|
+
private queue;
|
|
23
|
+
private sendWaiters;
|
|
24
|
+
private receiveWaiters;
|
|
25
|
+
private maxSize;
|
|
26
|
+
private closed;
|
|
27
|
+
private error;
|
|
28
|
+
/**
|
|
29
|
+
* Creates a new AsyncQueue.
|
|
30
|
+
*
|
|
31
|
+
* @param maxSize Maximum number of items in queue before send() blocks
|
|
32
|
+
*/
|
|
33
|
+
constructor(maxSize: number);
|
|
34
|
+
/**
|
|
35
|
+
* Current number of items in the queue.
|
|
36
|
+
*/
|
|
37
|
+
get size(): number;
|
|
38
|
+
/**
|
|
39
|
+
* Whether the queue is closed.
|
|
40
|
+
*/
|
|
41
|
+
get isClosed(): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Error that caused the queue to close, if any.
|
|
44
|
+
*/
|
|
45
|
+
get closedWithError(): Error | null;
|
|
46
|
+
/**
|
|
47
|
+
* Maximum queue size (from constructor).
|
|
48
|
+
*/
|
|
49
|
+
get capacity(): number;
|
|
50
|
+
/**
|
|
51
|
+
* Number of producers waiting to send (backpressure indicator).
|
|
52
|
+
*/
|
|
53
|
+
get waitingSenders(): number;
|
|
54
|
+
/**
|
|
55
|
+
* Number of consumers waiting to receive.
|
|
56
|
+
*/
|
|
57
|
+
get waitingReceivers(): number;
|
|
58
|
+
/**
|
|
59
|
+
* Sends an item to the queue.
|
|
60
|
+
*
|
|
61
|
+
* If the queue is full, this method blocks (awaits) until space is available.
|
|
62
|
+
* If the queue was closed with an error, throws that error.
|
|
63
|
+
*
|
|
64
|
+
* @param item Item to send
|
|
65
|
+
*
|
|
66
|
+
* @returns Promise that resolves when item is sent
|
|
67
|
+
*
|
|
68
|
+
* @throws {Error} If the queue was closed with an error via closeWithError()
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* await queue.send(item);
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
send(item: T): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Receives an item from the queue.
|
|
78
|
+
*
|
|
79
|
+
* If the queue is empty and not closed, this method blocks (awaits) until an item is available.
|
|
80
|
+
* If the queue is closed and empty, returns null.
|
|
81
|
+
* If the queue was closed with an error, throws that error.
|
|
82
|
+
*
|
|
83
|
+
* @returns Next item from queue, or null if closed and empty
|
|
84
|
+
*
|
|
85
|
+
* @throws {Error} If the queue was closed with an error via closeWithError()
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const item = await queue.receive();
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
receive(): Promise<T | null>;
|
|
93
|
+
/**
|
|
94
|
+
* Closes the queue, rejecting any pending sends and resolving pending receives with null.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* queue.close();
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
close(): void;
|
|
102
|
+
/**
|
|
103
|
+
* Closes the queue with an error.
|
|
104
|
+
*
|
|
105
|
+
* All pending and future receive() calls will throw this error.
|
|
106
|
+
* Use this to propagate errors through the pipeline.
|
|
107
|
+
*
|
|
108
|
+
* @param error - Error to propagate to consumers
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* try {
|
|
113
|
+
* await processItem(item);
|
|
114
|
+
* } catch (error) {
|
|
115
|
+
* queue.closeWithError(error);
|
|
116
|
+
* }
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
closeWithError(error: Error): void;
|
|
120
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AsyncQueue provides a promise-based blocking queue similar to FFmpeg's ThreadQueue.
|
|
3
|
+
*
|
|
4
|
+
* Unlike FFmpeg's pthread-based blocking, this uses Promises to achieve
|
|
5
|
+
* non-blocking async behavior while maintaining queue semantics.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const queue = new AsyncQueue<Frame>(8);
|
|
10
|
+
*
|
|
11
|
+
* // Producer
|
|
12
|
+
* await queue.send(frame); // Blocks if queue full
|
|
13
|
+
*
|
|
14
|
+
* // Consumer
|
|
15
|
+
* const frame = await queue.receive(); // Blocks if queue empty
|
|
16
|
+
*
|
|
17
|
+
* // Cleanup
|
|
18
|
+
* queue.close();
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export class AsyncQueue {
|
|
22
|
+
queue = [];
|
|
23
|
+
sendWaiters = [];
|
|
24
|
+
receiveWaiters = [];
|
|
25
|
+
maxSize;
|
|
26
|
+
closed = false;
|
|
27
|
+
error = null;
|
|
28
|
+
/**
|
|
29
|
+
* Creates a new AsyncQueue.
|
|
30
|
+
*
|
|
31
|
+
* @param maxSize Maximum number of items in queue before send() blocks
|
|
32
|
+
*/
|
|
33
|
+
constructor(maxSize) {
|
|
34
|
+
if (maxSize <= 0) {
|
|
35
|
+
maxSize = 1;
|
|
36
|
+
}
|
|
37
|
+
this.maxSize = maxSize;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Current number of items in the queue.
|
|
41
|
+
*/
|
|
42
|
+
get size() {
|
|
43
|
+
return this.queue.length;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Whether the queue is closed.
|
|
47
|
+
*/
|
|
48
|
+
get isClosed() {
|
|
49
|
+
return this.closed;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Error that caused the queue to close, if any.
|
|
53
|
+
*/
|
|
54
|
+
get closedWithError() {
|
|
55
|
+
return this.error;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Maximum queue size (from constructor).
|
|
59
|
+
*/
|
|
60
|
+
get capacity() {
|
|
61
|
+
return this.maxSize;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Number of producers waiting to send (backpressure indicator).
|
|
65
|
+
*/
|
|
66
|
+
get waitingSenders() {
|
|
67
|
+
return this.sendWaiters.length;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Number of consumers waiting to receive.
|
|
71
|
+
*/
|
|
72
|
+
get waitingReceivers() {
|
|
73
|
+
return this.receiveWaiters.length;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Sends an item to the queue.
|
|
77
|
+
*
|
|
78
|
+
* If the queue is full, this method blocks (awaits) until space is available.
|
|
79
|
+
* If the queue was closed with an error, throws that error.
|
|
80
|
+
*
|
|
81
|
+
* @param item Item to send
|
|
82
|
+
*
|
|
83
|
+
* @returns Promise that resolves when item is sent
|
|
84
|
+
*
|
|
85
|
+
* @throws {Error} If the queue was closed with an error via closeWithError()
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* await queue.send(item);
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
async send(item) {
|
|
93
|
+
// If closed with error, throw it
|
|
94
|
+
if (this.error) {
|
|
95
|
+
throw this.error;
|
|
96
|
+
}
|
|
97
|
+
if (this.closed) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
// Block if queue full
|
|
101
|
+
while (this.queue.length >= this.maxSize && !this.closed) {
|
|
102
|
+
await new Promise((resolve) => this.sendWaiters.push(resolve));
|
|
103
|
+
// Check for error after waking up
|
|
104
|
+
if (this.error) {
|
|
105
|
+
throw this.error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (this.closed) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
this.queue.push(item);
|
|
112
|
+
// Wake up one receiver if waiting (just signal, don't remove item)
|
|
113
|
+
const receiver = this.receiveWaiters.shift();
|
|
114
|
+
if (receiver) {
|
|
115
|
+
receiver(); // Signal that item is available
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Receives an item from the queue.
|
|
120
|
+
*
|
|
121
|
+
* If the queue is empty and not closed, this method blocks (awaits) until an item is available.
|
|
122
|
+
* If the queue is closed and empty, returns null.
|
|
123
|
+
* If the queue was closed with an error, throws that error.
|
|
124
|
+
*
|
|
125
|
+
* @returns Next item from queue, or null if closed and empty
|
|
126
|
+
*
|
|
127
|
+
* @throws {Error} If the queue was closed with an error via closeWithError()
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```typescript
|
|
131
|
+
* const item = await queue.receive();
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
async receive() {
|
|
135
|
+
// Loop until we get an item or queue is closed
|
|
136
|
+
while (true) {
|
|
137
|
+
// If queue has items, return immediately
|
|
138
|
+
if (this.queue.length > 0) {
|
|
139
|
+
const item = this.queue.shift();
|
|
140
|
+
// Wake up one sender if waiting
|
|
141
|
+
const sender = this.sendWaiters.shift();
|
|
142
|
+
if (sender) {
|
|
143
|
+
sender();
|
|
144
|
+
}
|
|
145
|
+
return item;
|
|
146
|
+
}
|
|
147
|
+
// If closed with error, throw it
|
|
148
|
+
if (this.error) {
|
|
149
|
+
throw this.error;
|
|
150
|
+
}
|
|
151
|
+
// If closed and empty, return null
|
|
152
|
+
if (this.closed) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
// Block until signaled
|
|
156
|
+
await new Promise((resolve) => {
|
|
157
|
+
this.receiveWaiters.push(resolve);
|
|
158
|
+
});
|
|
159
|
+
// After waking up, loop back to check queue again
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Closes the queue, rejecting any pending sends and resolving pending receives with null.
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```typescript
|
|
167
|
+
* queue.close();
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
close() {
|
|
171
|
+
if (this.closed) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
this.closed = true;
|
|
175
|
+
// Wake up all waiting senders
|
|
176
|
+
const senders = this.sendWaiters.splice(0);
|
|
177
|
+
for (const sender of senders) {
|
|
178
|
+
sender();
|
|
179
|
+
}
|
|
180
|
+
// Wake up all waiting receivers (they will get null from empty queue check)
|
|
181
|
+
const receivers = this.receiveWaiters.splice(0);
|
|
182
|
+
for (const receiver of receivers) {
|
|
183
|
+
receiver();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Closes the queue with an error.
|
|
188
|
+
*
|
|
189
|
+
* All pending and future receive() calls will throw this error.
|
|
190
|
+
* Use this to propagate errors through the pipeline.
|
|
191
|
+
*
|
|
192
|
+
* @param error - Error to propagate to consumers
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```typescript
|
|
196
|
+
* try {
|
|
197
|
+
* await processItem(item);
|
|
198
|
+
* } catch (error) {
|
|
199
|
+
* queue.closeWithError(error);
|
|
200
|
+
* }
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
closeWithError(error) {
|
|
204
|
+
if (this.closed) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
this.error = error;
|
|
208
|
+
this.close();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=async-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-queue.js","sourceRoot":"","sources":["../../../src/api/utilities/async-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type { AVSampleFormat } from '../../constants/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Audio sample allocation result.
|
|
4
|
+
*/
|
|
5
|
+
export interface AudioSampleAllocation {
|
|
6
|
+
/** Allocated data buffers (one per channel for planar formats) */
|
|
7
|
+
data: Buffer[];
|
|
8
|
+
/** Line size (bytes per channel) */
|
|
9
|
+
linesize: number;
|
|
10
|
+
/** Total allocated size */
|
|
11
|
+
size: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Audio sample buffer size result.
|
|
15
|
+
*/
|
|
16
|
+
export interface AudioSampleBufferSize {
|
|
17
|
+
/** Total size in bytes */
|
|
18
|
+
size: number;
|
|
19
|
+
/** Line size (bytes per channel) */
|
|
20
|
+
linesize: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Audio sample buffer utilities.
|
|
24
|
+
*
|
|
25
|
+
* Provides static methods for allocating and managing audio sample buffers.
|
|
26
|
+
* These utilities handle the memory layout for various sample formats,
|
|
27
|
+
* including planar formats where each channel has its own buffer.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { AudioSampleUtils } from 'node-av';
|
|
32
|
+
* import { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_S16 } from 'node-av/constants';
|
|
33
|
+
*
|
|
34
|
+
* // Allocate audio buffers for stereo float planar
|
|
35
|
+
* const audio = AudioSampleUtils.alloc(2, 1024, AV_SAMPLE_FMT_FLTP, 0);
|
|
36
|
+
* console.log(`Allocated ${audio.size} bytes`);
|
|
37
|
+
* console.log(`${audio.data.length} buffers (one per channel)`);
|
|
38
|
+
*
|
|
39
|
+
* // Get buffer size for packed format
|
|
40
|
+
* const size = AudioSampleUtils.getBufferSize(2, 1024, AV_SAMPLE_FMT_S16, 0);
|
|
41
|
+
* console.log(`S16 stereo needs ${size.size} bytes`);
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare class AudioSampleUtils {
|
|
45
|
+
private constructor();
|
|
46
|
+
/**
|
|
47
|
+
* Allocate audio sample buffers.
|
|
48
|
+
*
|
|
49
|
+
* Allocates buffers for audio samples. For planar formats, allocates
|
|
50
|
+
* separate buffers for each channel. For packed formats, allocates
|
|
51
|
+
* a single interleaved buffer.
|
|
52
|
+
* Direct mapping to av_samples_alloc()
|
|
53
|
+
*
|
|
54
|
+
* @param nbChannels - Number of audio channels
|
|
55
|
+
*
|
|
56
|
+
* @param nbSamples - Number of samples per channel
|
|
57
|
+
*
|
|
58
|
+
* @param sampleFmt - Audio sample format
|
|
59
|
+
*
|
|
60
|
+
* @param align - Buffer alignment (0 for default)
|
|
61
|
+
*
|
|
62
|
+
* @returns Allocation result with buffers and size information
|
|
63
|
+
*
|
|
64
|
+
* @throws {FFmpegError} On allocation failure
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* import { AudioSampleUtils } from 'node-av';
|
|
69
|
+
* import { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_S16 } from 'node-av/constants';
|
|
70
|
+
*
|
|
71
|
+
* // Allocate for planar format (separate buffer per channel)
|
|
72
|
+
* const planar = AudioSampleUtils.alloc(2, 1024, AV_SAMPLE_FMT_FLTP, 0);
|
|
73
|
+
* console.log(`Planar: ${planar.data.length} buffers`); // 2 buffers
|
|
74
|
+
*
|
|
75
|
+
* // Allocate for packed format (single interleaved buffer)
|
|
76
|
+
* const packed = AudioSampleUtils.alloc(2, 1024, AV_SAMPLE_FMT_S16, 0);
|
|
77
|
+
* console.log(`Packed: ${packed.data.length} buffer`); // 1 buffer
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
static alloc(nbChannels: number, nbSamples: number, sampleFmt: AVSampleFormat, align: number): AudioSampleAllocation;
|
|
81
|
+
/**
|
|
82
|
+
* Get required buffer size for audio samples.
|
|
83
|
+
*
|
|
84
|
+
* Calculates the buffer size needed to store audio samples with the
|
|
85
|
+
* given parameters. Does not allocate any memory.
|
|
86
|
+
* Direct mapping to av_samples_get_buffer_size()
|
|
87
|
+
*
|
|
88
|
+
* @param nbChannels - Number of audio channels
|
|
89
|
+
*
|
|
90
|
+
* @param nbSamples - Number of samples per channel
|
|
91
|
+
*
|
|
92
|
+
* @param sampleFmt - Audio sample format
|
|
93
|
+
*
|
|
94
|
+
* @param align - Buffer alignment (0 for default)
|
|
95
|
+
*
|
|
96
|
+
* @returns Buffer size and line size information
|
|
97
|
+
*
|
|
98
|
+
* @throws {FFmpegError} On invalid parameters
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* import { AudioSampleUtils } from 'node-av';
|
|
103
|
+
* import { AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16P } from 'node-av/constants';
|
|
104
|
+
*
|
|
105
|
+
* // Calculate size for packed float (32-bit) stereo
|
|
106
|
+
* const floatSize = AudioSampleUtils.getBufferSize(2, 1024, AV_SAMPLE_FMT_FLT, 0);
|
|
107
|
+
* console.log(`Float stereo: ${floatSize.size} bytes total`);
|
|
108
|
+
* console.log(`Line size: ${floatSize.linesize} bytes`);
|
|
109
|
+
*
|
|
110
|
+
* // Calculate size for planar 16-bit stereo
|
|
111
|
+
* const planarSize = AudioSampleUtils.getBufferSize(2, 1024, AV_SAMPLE_FMT_S16P, 0);
|
|
112
|
+
* console.log(`S16 planar: ${planarSize.size} bytes total`);
|
|
113
|
+
* console.log(`Per channel: ${planarSize.linesize} bytes`);
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
static getBufferSize(nbChannels: number, nbSamples: number, sampleFmt: AVSampleFormat, align: number): AudioSampleBufferSize;
|
|
117
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { bindings } from '../../lib/binding.js';
|
|
2
|
+
import { FFmpegError } from '../../lib/error.js';
|
|
3
|
+
/**
|
|
4
|
+
* Audio sample buffer utilities.
|
|
5
|
+
*
|
|
6
|
+
* Provides static methods for allocating and managing audio sample buffers.
|
|
7
|
+
* These utilities handle the memory layout for various sample formats,
|
|
8
|
+
* including planar formats where each channel has its own buffer.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { AudioSampleUtils } from 'node-av';
|
|
13
|
+
* import { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_S16 } from 'node-av/constants';
|
|
14
|
+
*
|
|
15
|
+
* // Allocate audio buffers for stereo float planar
|
|
16
|
+
* const audio = AudioSampleUtils.alloc(2, 1024, AV_SAMPLE_FMT_FLTP, 0);
|
|
17
|
+
* console.log(`Allocated ${audio.size} bytes`);
|
|
18
|
+
* console.log(`${audio.data.length} buffers (one per channel)`);
|
|
19
|
+
*
|
|
20
|
+
* // Get buffer size for packed format
|
|
21
|
+
* const size = AudioSampleUtils.getBufferSize(2, 1024, AV_SAMPLE_FMT_S16, 0);
|
|
22
|
+
* console.log(`S16 stereo needs ${size.size} bytes`);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export class AudioSampleUtils {
|
|
26
|
+
// Private constructor to prevent instantiation
|
|
27
|
+
constructor() { }
|
|
28
|
+
/**
|
|
29
|
+
* Allocate audio sample buffers.
|
|
30
|
+
*
|
|
31
|
+
* Allocates buffers for audio samples. For planar formats, allocates
|
|
32
|
+
* separate buffers for each channel. For packed formats, allocates
|
|
33
|
+
* a single interleaved buffer.
|
|
34
|
+
* Direct mapping to av_samples_alloc()
|
|
35
|
+
*
|
|
36
|
+
* @param nbChannels - Number of audio channels
|
|
37
|
+
*
|
|
38
|
+
* @param nbSamples - Number of samples per channel
|
|
39
|
+
*
|
|
40
|
+
* @param sampleFmt - Audio sample format
|
|
41
|
+
*
|
|
42
|
+
* @param align - Buffer alignment (0 for default)
|
|
43
|
+
*
|
|
44
|
+
* @returns Allocation result with buffers and size information
|
|
45
|
+
*
|
|
46
|
+
* @throws {FFmpegError} On allocation failure
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* import { AudioSampleUtils } from 'node-av';
|
|
51
|
+
* import { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_S16 } from 'node-av/constants';
|
|
52
|
+
*
|
|
53
|
+
* // Allocate for planar format (separate buffer per channel)
|
|
54
|
+
* const planar = AudioSampleUtils.alloc(2, 1024, AV_SAMPLE_FMT_FLTP, 0);
|
|
55
|
+
* console.log(`Planar: ${planar.data.length} buffers`); // 2 buffers
|
|
56
|
+
*
|
|
57
|
+
* // Allocate for packed format (single interleaved buffer)
|
|
58
|
+
* const packed = AudioSampleUtils.alloc(2, 1024, AV_SAMPLE_FMT_S16, 0);
|
|
59
|
+
* console.log(`Packed: ${packed.data.length} buffer`); // 1 buffer
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
static alloc(nbChannels, nbSamples, sampleFmt, align) {
|
|
63
|
+
const result = bindings.avSamplesAlloc(nbChannels, nbSamples, sampleFmt, align);
|
|
64
|
+
if (typeof result === 'number') {
|
|
65
|
+
FFmpegError.throwIfError(result, 'Failed to allocate audio samples');
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get required buffer size for audio samples.
|
|
71
|
+
*
|
|
72
|
+
* Calculates the buffer size needed to store audio samples with the
|
|
73
|
+
* given parameters. Does not allocate any memory.
|
|
74
|
+
* Direct mapping to av_samples_get_buffer_size()
|
|
75
|
+
*
|
|
76
|
+
* @param nbChannels - Number of audio channels
|
|
77
|
+
*
|
|
78
|
+
* @param nbSamples - Number of samples per channel
|
|
79
|
+
*
|
|
80
|
+
* @param sampleFmt - Audio sample format
|
|
81
|
+
*
|
|
82
|
+
* @param align - Buffer alignment (0 for default)
|
|
83
|
+
*
|
|
84
|
+
* @returns Buffer size and line size information
|
|
85
|
+
*
|
|
86
|
+
* @throws {FFmpegError} On invalid parameters
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* import { AudioSampleUtils } from 'node-av';
|
|
91
|
+
* import { AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16P } from 'node-av/constants';
|
|
92
|
+
*
|
|
93
|
+
* // Calculate size for packed float (32-bit) stereo
|
|
94
|
+
* const floatSize = AudioSampleUtils.getBufferSize(2, 1024, AV_SAMPLE_FMT_FLT, 0);
|
|
95
|
+
* console.log(`Float stereo: ${floatSize.size} bytes total`);
|
|
96
|
+
* console.log(`Line size: ${floatSize.linesize} bytes`);
|
|
97
|
+
*
|
|
98
|
+
* // Calculate size for planar 16-bit stereo
|
|
99
|
+
* const planarSize = AudioSampleUtils.getBufferSize(2, 1024, AV_SAMPLE_FMT_S16P, 0);
|
|
100
|
+
* console.log(`S16 planar: ${planarSize.size} bytes total`);
|
|
101
|
+
* console.log(`Per channel: ${planarSize.linesize} bytes`);
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
static getBufferSize(nbChannels, nbSamples, sampleFmt, align) {
|
|
105
|
+
const result = bindings.avSamplesGetBufferSize(nbChannels, nbSamples, sampleFmt, align);
|
|
106
|
+
if (typeof result === 'number') {
|
|
107
|
+
FFmpegError.throwIfError(result, 'Failed to get audio buffer size');
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=audio-sample.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-sample.js","sourceRoot":"","sources":["../../../src/api/utilities/audio-sample.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA0BjD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,gBAAgB;IAC3B,+CAA+C;IAC/C,gBAAuB,CAAC;IAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,MAAM,CAAC,KAAK,CAAC,UAAkB,EAAE,SAAiB,EAAE,SAAyB,EAAE,KAAa;QAC1F,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAChF,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,MAA+B,CAAC;IACzC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,MAAM,CAAC,aAAa,CAAC,UAAkB,EAAE,SAAiB,EAAE,SAAyB,EAAE,KAAa;QAClG,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACxF,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,MAA+B,CAAC;IACzC,CAAC;CACF"}
|