webcodecs-node 0.2.2 → 0.5.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 +4 -0
- package/dist/__tests__/AudioData.test.js +2 -1
- package/dist/__tests__/AudioData.test.js.map +1 -1
- package/dist/__tests__/AudioDecoder.test.js +8 -8
- package/dist/__tests__/AudioDecoder.test.js.map +1 -1
- package/dist/__tests__/AudioEncoder.test.js +3 -3
- package/dist/__tests__/AudioEncoder.test.js.map +1 -1
- package/dist/__tests__/EncodedChunks.test.js +3 -2
- package/dist/__tests__/EncodedChunks.test.js.map +1 -1
- package/dist/__tests__/HardwareAcceleration.test.js +2 -1
- package/dist/__tests__/HardwareAcceleration.test.js.map +1 -1
- package/dist/__tests__/ImageDecoder.test.js +16 -45
- package/dist/__tests__/ImageDecoder.test.js.map +1 -1
- package/dist/__tests__/ImageDecoder.wpt.test.d.ts +8 -0
- package/dist/__tests__/ImageDecoder.wpt.test.d.ts.map +1 -0
- package/dist/__tests__/ImageDecoder.wpt.test.js +135 -0
- package/dist/__tests__/ImageDecoder.wpt.test.js.map +1 -0
- package/dist/__tests__/NodeAvDecoder.test.d.ts +2 -0
- package/dist/__tests__/NodeAvDecoder.test.d.ts.map +1 -0
- package/dist/__tests__/NodeAvDecoder.test.js +206 -0
- package/dist/__tests__/NodeAvDecoder.test.js.map +1 -0
- package/dist/__tests__/NodeAvEncoder.test.d.ts +2 -0
- package/dist/__tests__/NodeAvEncoder.test.d.ts.map +1 -0
- package/dist/__tests__/NodeAvEncoder.test.js +176 -0
- package/dist/__tests__/NodeAvEncoder.test.js.map +1 -0
- package/dist/__tests__/VideoDecoder.test.js +5 -5
- package/dist/__tests__/VideoDecoder.test.js.map +1 -1
- package/dist/__tests__/VideoEncoder.test.js +3 -3
- package/dist/__tests__/VideoEncoder.test.js.map +1 -1
- package/dist/__tests__/VideoFrame.test.js +4 -1
- package/dist/__tests__/VideoFrame.test.js.map +1 -1
- package/dist/backends/index.d.ts +3 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +2 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/types.d.ts +168 -0
- package/dist/backends/types.d.ts.map +1 -0
- package/dist/backends/types.js +25 -0
- package/dist/backends/types.js.map +1 -0
- package/dist/codec-utils/audio-codecs.d.ts +60 -0
- package/dist/codec-utils/audio-codecs.d.ts.map +1 -0
- package/dist/codec-utils/audio-codecs.js +117 -0
- package/dist/codec-utils/audio-codecs.js.map +1 -0
- package/dist/codec-utils/formats.d.ts +42 -0
- package/dist/codec-utils/formats.d.ts.map +1 -0
- package/dist/codec-utils/formats.js +147 -0
- package/dist/codec-utils/formats.js.map +1 -0
- package/dist/codec-utils/index.d.ts +9 -0
- package/dist/codec-utils/index.d.ts.map +1 -0
- package/dist/codec-utils/index.js +12 -0
- package/dist/codec-utils/index.js.map +1 -0
- package/dist/codec-utils/types.d.ts +87 -0
- package/dist/codec-utils/types.d.ts.map +1 -0
- package/dist/codec-utils/types.js +10 -0
- package/dist/codec-utils/types.js.map +1 -0
- package/dist/containers/Demuxer.d.ts +114 -0
- package/dist/containers/Demuxer.d.ts.map +1 -0
- package/dist/containers/Demuxer.js +256 -0
- package/dist/containers/Demuxer.js.map +1 -0
- package/dist/containers/Muxer.d.ts +142 -0
- package/dist/containers/Muxer.d.ts.map +1 -0
- package/dist/containers/Muxer.js +295 -0
- package/dist/containers/Muxer.js.map +1 -0
- package/dist/containers/extract.d.ts +25 -0
- package/dist/containers/extract.d.ts.map +1 -0
- package/dist/containers/extract.js +64 -0
- package/dist/containers/extract.js.map +1 -0
- package/dist/containers/index.d.ts +40 -0
- package/dist/containers/index.d.ts.map +1 -0
- package/dist/containers/index.js +41 -0
- package/dist/containers/index.js.map +1 -0
- package/dist/containers/transcode.d.ts +138 -0
- package/dist/containers/transcode.d.ts.map +1 -0
- package/dist/containers/transcode.js +536 -0
- package/dist/containers/transcode.js.map +1 -0
- package/dist/core/AudioData.d.ts +5 -1
- package/dist/core/AudioData.d.ts.map +1 -1
- package/dist/core/AudioData.js +69 -13
- package/dist/core/AudioData.js.map +1 -1
- package/dist/core/EncodedAudioChunk.d.ts +1 -1
- package/dist/core/EncodedAudioChunk.d.ts.map +1 -1
- package/dist/core/EncodedAudioChunk.js +1 -1
- package/dist/core/EncodedAudioChunk.js.map +1 -1
- package/dist/core/EncodedVideoChunk.d.ts.map +1 -1
- package/dist/core/EncodedVideoChunk.js +3 -19
- package/dist/core/EncodedVideoChunk.js.map +1 -1
- package/dist/core/VideoFrame.d.ts +31 -11
- package/dist/core/VideoFrame.d.ts.map +1 -1
- package/dist/core/VideoFrame.js +244 -81
- package/dist/core/VideoFrame.js.map +1 -1
- package/dist/decoders/AudioDecoder.d.ts +14 -12
- package/dist/decoders/AudioDecoder.d.ts.map +1 -1
- package/dist/decoders/AudioDecoder.js +113 -173
- package/dist/decoders/AudioDecoder.js.map +1 -1
- package/dist/decoders/ImageDecoder.d.ts +1 -3
- package/dist/decoders/ImageDecoder.d.ts.map +1 -1
- package/dist/decoders/ImageDecoder.js +39 -192
- package/dist/decoders/ImageDecoder.js.map +1 -1
- package/dist/decoders/VideoDecoder.d.ts +14 -13
- package/dist/decoders/VideoDecoder.d.ts.map +1 -1
- package/dist/decoders/VideoDecoder.js +115 -166
- package/dist/decoders/VideoDecoder.js.map +1 -1
- package/dist/demos/demo-1080p-transcode.d.ts +8 -0
- package/dist/demos/demo-1080p-transcode.d.ts.map +1 -0
- package/dist/demos/demo-1080p-transcode.js +188 -0
- package/dist/demos/demo-1080p-transcode.js.map +1 -0
- package/dist/demos/demo-containers.d.ts +7 -0
- package/dist/demos/demo-containers.d.ts.map +1 -0
- package/dist/demos/demo-containers.js +140 -0
- package/dist/demos/demo-containers.js.map +1 -0
- package/dist/demos/demo-conversion.js +2 -2
- package/dist/demos/demo-conversion.js.map +1 -1
- package/dist/demos/demo-four-corners.d.ts +6 -0
- package/dist/demos/demo-four-corners.d.ts.map +1 -0
- package/dist/demos/demo-four-corners.js +218 -0
- package/dist/demos/demo-four-corners.js.map +1 -0
- package/dist/demos/demo-hwaccel-conversion.js +1 -1
- package/dist/demos/demo-hwaccel-conversion.js.map +1 -1
- package/dist/demos/demo-hwaccel.js +1 -1
- package/dist/demos/demo-hwaccel.js.map +1 -1
- package/dist/demos/demo-samples.js +232 -68
- package/dist/demos/demo-samples.js.map +1 -1
- package/dist/demos/demo-streaming.js +6 -6
- package/dist/demos/demo-streaming.js.map +1 -1
- package/dist/encoders/AudioEncoder.d.ts +14 -13
- package/dist/encoders/AudioEncoder.d.ts.map +1 -1
- package/dist/encoders/AudioEncoder.js +138 -228
- package/dist/encoders/AudioEncoder.js.map +1 -1
- package/dist/encoders/VideoEncoder.d.ts +13 -14
- package/dist/encoders/VideoEncoder.d.ts.map +1 -1
- package/dist/encoders/VideoEncoder.js +92 -161
- package/dist/encoders/VideoEncoder.js.map +1 -1
- package/dist/ffmpeg/index.d.ts +3 -2
- package/dist/ffmpeg/index.d.ts.map +1 -1
- package/dist/ffmpeg/index.js +3 -3
- package/dist/ffmpeg/index.js.map +1 -1
- package/dist/formats/conversions/batch-converter.d.ts +61 -0
- package/dist/formats/conversions/batch-converter.d.ts.map +1 -0
- package/dist/formats/conversions/batch-converter.js +274 -0
- package/dist/formats/conversions/batch-converter.js.map +1 -0
- package/dist/formats/conversions/frame-converter.d.ts +17 -0
- package/dist/formats/conversions/frame-converter.d.ts.map +1 -1
- package/dist/formats/conversions/frame-converter.js +144 -10
- package/dist/formats/conversions/frame-converter.js.map +1 -1
- package/dist/formats/conversions/index.d.ts +2 -0
- package/dist/formats/conversions/index.d.ts.map +1 -1
- package/dist/formats/conversions/index.js +4 -0
- package/dist/formats/conversions/index.js.map +1 -1
- package/dist/hardware/decoder-args.d.ts +2 -7
- package/dist/hardware/decoder-args.d.ts.map +1 -1
- package/dist/hardware/decoder-args.js +2 -32
- package/dist/hardware/decoder-args.js.map +1 -1
- package/dist/hardware/detection.d.ts +1 -1
- package/dist/hardware/detection.d.ts.map +1 -1
- package/dist/hardware/detection.js +54 -27
- package/dist/hardware/detection.js.map +1 -1
- package/dist/hardware/encoder-args.d.ts +2 -11
- package/dist/hardware/encoder-args.d.ts.map +1 -1
- package/dist/hardware/encoder-args.js +2 -71
- package/dist/hardware/encoder-args.js.map +1 -1
- package/dist/hardware/index.d.ts +2 -2
- package/dist/hardware/index.d.ts.map +1 -1
- package/dist/hardware/index.js +2 -2
- package/dist/hardware/index.js.map +1 -1
- package/dist/index.d.ts +5 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -6
- package/dist/index.js.map +1 -1
- package/dist/mediabunny/FFmpegAudioDecoder.d.ts +4 -17
- package/dist/mediabunny/FFmpegAudioDecoder.d.ts.map +1 -1
- package/dist/mediabunny/FFmpegAudioDecoder.js +57 -185
- package/dist/mediabunny/FFmpegAudioDecoder.js.map +1 -1
- package/dist/mediabunny/FFmpegAudioEncoder.d.ts +6 -39
- package/dist/mediabunny/FFmpegAudioEncoder.d.ts.map +1 -1
- package/dist/mediabunny/FFmpegAudioEncoder.js +66 -329
- package/dist/mediabunny/FFmpegAudioEncoder.js.map +1 -1
- package/dist/mediabunny/FFmpegVideoDecoder.d.ts +5 -38
- package/dist/mediabunny/FFmpegVideoDecoder.d.ts.map +1 -1
- package/dist/mediabunny/FFmpegVideoDecoder.js +39 -283
- package/dist/mediabunny/FFmpegVideoDecoder.js.map +1 -1
- package/dist/mediabunny/FFmpegVideoEncoder.d.ts +9 -37
- package/dist/mediabunny/FFmpegVideoEncoder.d.ts.map +1 -1
- package/dist/mediabunny/FFmpegVideoEncoder.js +49 -336
- package/dist/mediabunny/FFmpegVideoEncoder.js.map +1 -1
- package/dist/node-av/HardwarePipeline.d.ts +36 -0
- package/dist/node-av/HardwarePipeline.d.ts.map +1 -0
- package/dist/node-av/HardwarePipeline.js +243 -0
- package/dist/node-av/HardwarePipeline.js.map +1 -0
- package/dist/node-av/NodeAvAudioDecoder.d.ts +46 -0
- package/dist/node-av/NodeAvAudioDecoder.d.ts.map +1 -0
- package/dist/node-av/NodeAvAudioDecoder.js +350 -0
- package/dist/node-av/NodeAvAudioDecoder.js.map +1 -0
- package/dist/node-av/NodeAvAudioEncoder.d.ts +50 -0
- package/dist/node-av/NodeAvAudioEncoder.d.ts.map +1 -0
- package/dist/node-av/NodeAvAudioEncoder.js +506 -0
- package/dist/node-av/NodeAvAudioEncoder.js.map +1 -0
- package/dist/node-av/NodeAvImageDecoder.d.ts +114 -0
- package/dist/node-av/NodeAvImageDecoder.d.ts.map +1 -0
- package/dist/node-av/NodeAvImageDecoder.js +406 -0
- package/dist/node-av/NodeAvImageDecoder.js.map +1 -0
- package/dist/node-av/NodeAvVideoDecoder.d.ts +43 -0
- package/dist/node-av/NodeAvVideoDecoder.d.ts.map +1 -0
- package/dist/node-av/NodeAvVideoDecoder.js +365 -0
- package/dist/node-av/NodeAvVideoDecoder.js.map +1 -0
- package/dist/node-av/NodeAvVideoEncoder.d.ts +56 -0
- package/dist/node-av/NodeAvVideoEncoder.d.ts.map +1 -0
- package/dist/node-av/NodeAvVideoEncoder.js +509 -0
- package/dist/node-av/NodeAvVideoEncoder.js.map +1 -0
- package/dist/polyfill.d.ts.map +1 -1
- package/dist/polyfill.js +11 -9
- package/dist/polyfill.js.map +1 -1
- package/dist/utils/aac.d.ts.map +1 -1
- package/dist/utils/aac.js +6 -0
- package/dist/utils/aac.js.map +1 -1
- package/dist/utils/buffer-pool.d.ts +109 -0
- package/dist/utils/buffer-pool.d.ts.map +1 -0
- package/dist/utils/buffer-pool.js +278 -0
- package/dist/utils/buffer-pool.js.map +1 -0
- package/dist/utils/codec-cache.d.ts +65 -0
- package/dist/utils/codec-cache.d.ts.map +1 -0
- package/dist/utils/codec-cache.js +116 -0
- package/dist/utils/codec-cache.js.map +1 -0
- package/dist/utils/errors.d.ts +62 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +84 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/event-target.d.ts +42 -0
- package/dist/utils/event-target.d.ts.map +1 -0
- package/dist/utils/event-target.js +96 -0
- package/dist/utils/event-target.js.map +1 -0
- package/dist/utils/hardware-pool.d.ts +88 -0
- package/dist/utils/hardware-pool.d.ts.map +1 -0
- package/dist/utils/hardware-pool.js +266 -0
- package/dist/utils/hardware-pool.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +12 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/timeout.d.ts +44 -0
- package/dist/utils/timeout.d.ts.map +1 -0
- package/dist/utils/timeout.js +73 -0
- package/dist/utils/timeout.js.map +1 -0
- package/dist/utils/type-guards.d.ts +11 -1
- package/dist/utils/type-guards.d.ts.map +1 -1
- package/dist/utils/type-guards.js.map +1 -1
- package/package.json +20 -34
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeout utilities for async operations
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Default timeout values in milliseconds
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_TIMEOUTS: {
|
|
8
|
+
/** Timeout for encoder/decoder configuration */
|
|
9
|
+
readonly configure: 10000;
|
|
10
|
+
/** Timeout for flush operations */
|
|
11
|
+
readonly flush: 30000;
|
|
12
|
+
/** Timeout for muxer/demuxer open operations */
|
|
13
|
+
readonly open: 15000;
|
|
14
|
+
/** Timeout for close operations */
|
|
15
|
+
readonly close: 10000;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Wrap a promise with a timeout
|
|
19
|
+
*
|
|
20
|
+
* @param promise - The promise to wrap
|
|
21
|
+
* @param timeoutMs - Timeout in milliseconds
|
|
22
|
+
* @param operationName - Name of the operation for error messages
|
|
23
|
+
* @returns The result of the promise
|
|
24
|
+
* @throws DOMException with TimeoutError if timeout is exceeded
|
|
25
|
+
*/
|
|
26
|
+
export declare function withTimeout<T>(promise: Promise<T>, timeoutMs: number, operationName?: string): Promise<T>;
|
|
27
|
+
/**
|
|
28
|
+
* Create a timeout-wrapped version of an async function
|
|
29
|
+
*
|
|
30
|
+
* @param fn - The async function to wrap
|
|
31
|
+
* @param timeoutMs - Timeout in milliseconds
|
|
32
|
+
* @param operationName - Name of the operation for error messages
|
|
33
|
+
* @returns A wrapped function that will timeout
|
|
34
|
+
*/
|
|
35
|
+
export declare function createTimeoutWrapper<T extends (...args: any[]) => Promise<any>>(fn: T, timeoutMs: number, operationName: string): T;
|
|
36
|
+
/**
|
|
37
|
+
* Abort controller with timeout
|
|
38
|
+
* Useful for operations that support AbortSignal
|
|
39
|
+
*/
|
|
40
|
+
export declare function createTimeoutAbortController(timeoutMs: number): {
|
|
41
|
+
controller: AbortController;
|
|
42
|
+
cleanup: () => void;
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=timeout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout.d.ts","sourceRoot":"","sources":["../../src/utils/timeout.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B,gDAAgD;;IAEhD,mCAAmC;;IAEnC,gDAAgD;;IAEhD,mCAAmC;;CAE3B,CAAC;AAEX;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,GAAE,MAAoB,GAClC,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAC7E,EAAE,EAAE,CAAC,EACL,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,CAAC,CAIH;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG;IAC/D,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAUA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeout utilities for async operations
|
|
3
|
+
*/
|
|
4
|
+
import { DOMException } from '../types/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Default timeout values in milliseconds
|
|
7
|
+
*/
|
|
8
|
+
export const DEFAULT_TIMEOUTS = {
|
|
9
|
+
/** Timeout for encoder/decoder configuration */
|
|
10
|
+
configure: 10_000,
|
|
11
|
+
/** Timeout for flush operations */
|
|
12
|
+
flush: 30_000,
|
|
13
|
+
/** Timeout for muxer/demuxer open operations */
|
|
14
|
+
open: 15_000,
|
|
15
|
+
/** Timeout for close operations */
|
|
16
|
+
close: 10_000,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Wrap a promise with a timeout
|
|
20
|
+
*
|
|
21
|
+
* @param promise - The promise to wrap
|
|
22
|
+
* @param timeoutMs - Timeout in milliseconds
|
|
23
|
+
* @param operationName - Name of the operation for error messages
|
|
24
|
+
* @returns The result of the promise
|
|
25
|
+
* @throws DOMException with TimeoutError if timeout is exceeded
|
|
26
|
+
*/
|
|
27
|
+
export async function withTimeout(promise, timeoutMs, operationName = 'Operation') {
|
|
28
|
+
let timeoutId = null;
|
|
29
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
30
|
+
timeoutId = setTimeout(() => {
|
|
31
|
+
reject(new DOMException(`${operationName} timed out after ${timeoutMs}ms`, 'TimeoutError'));
|
|
32
|
+
}, timeoutMs);
|
|
33
|
+
});
|
|
34
|
+
try {
|
|
35
|
+
const result = await Promise.race([promise, timeoutPromise]);
|
|
36
|
+
if (timeoutId)
|
|
37
|
+
clearTimeout(timeoutId);
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (timeoutId)
|
|
42
|
+
clearTimeout(timeoutId);
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create a timeout-wrapped version of an async function
|
|
48
|
+
*
|
|
49
|
+
* @param fn - The async function to wrap
|
|
50
|
+
* @param timeoutMs - Timeout in milliseconds
|
|
51
|
+
* @param operationName - Name of the operation for error messages
|
|
52
|
+
* @returns A wrapped function that will timeout
|
|
53
|
+
*/
|
|
54
|
+
export function createTimeoutWrapper(fn, timeoutMs, operationName) {
|
|
55
|
+
return (async (...args) => {
|
|
56
|
+
return withTimeout(fn(...args), timeoutMs, operationName);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Abort controller with timeout
|
|
61
|
+
* Useful for operations that support AbortSignal
|
|
62
|
+
*/
|
|
63
|
+
export function createTimeoutAbortController(timeoutMs) {
|
|
64
|
+
const controller = new AbortController();
|
|
65
|
+
const timeoutId = setTimeout(() => {
|
|
66
|
+
controller.abort(new DOMException('Operation timed out', 'TimeoutError'));
|
|
67
|
+
}, timeoutMs);
|
|
68
|
+
return {
|
|
69
|
+
controller,
|
|
70
|
+
cleanup: () => clearTimeout(timeoutId),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=timeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/utils/timeout.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gDAAgD;IAChD,SAAS,EAAE,MAAM;IACjB,mCAAmC;IACnC,KAAK,EAAE,MAAM;IACb,gDAAgD;IAChD,IAAI,EAAE,MAAM;IACZ,mCAAmC;IACnC,KAAK,EAAE,MAAM;CACL,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAmB,EACnB,SAAiB,EACjB,gBAAwB,WAAW;IAEnC,IAAI,SAAS,GAA0B,IAAI,CAAC;IAE5C,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACtD,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,MAAM,CAAC,IAAI,YAAY,CACrB,GAAG,aAAa,oBAAoB,SAAS,IAAI,EACjD,cAAc,CACf,CAAC,CAAC;QACL,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;QAC7D,IAAI,SAAS;YAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS;YAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,EAAK,EACL,SAAiB,EACjB,aAAqB;IAErB,OAAO,CAAC,KAAK,EAAE,GAAG,IAAmB,EAA0B,EAAE;QAC/D,OAAO,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC,CAAM,CAAC;AACV,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,SAAiB;IAI5D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;QAChC,UAAU,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC,CAAC;IAC5E,CAAC,EAAE,SAAS,CAAC,CAAC;IAEd,OAAO;QACL,UAAU;QACV,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -24,9 +24,19 @@ export interface CanvasLike {
|
|
|
24
24
|
export interface VideoFrameLike {
|
|
25
25
|
codedWidth: number;
|
|
26
26
|
codedHeight: number;
|
|
27
|
-
format: string;
|
|
27
|
+
format: string | null;
|
|
28
28
|
timestamp: number;
|
|
29
29
|
duration?: number | null;
|
|
30
|
+
displayWidth: number;
|
|
31
|
+
displayHeight: number;
|
|
32
|
+
visibleRect?: {
|
|
33
|
+
x: number;
|
|
34
|
+
y: number;
|
|
35
|
+
width: number;
|
|
36
|
+
height: number;
|
|
37
|
+
} | null;
|
|
38
|
+
allocationSize?: (options?: unknown) => number;
|
|
39
|
+
copyTo?: (dest: Uint8Array, options?: unknown) => void;
|
|
30
40
|
_buffer?: Uint8Array;
|
|
31
41
|
_rawData?: Uint8Array;
|
|
32
42
|
_data?: Uint8Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,GAAG,UAAU,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IACzD,aAAa,CAAC,EAAE,MAAM,iBAAiB,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,GAAG,UAAU,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IACzD,aAAa,CAAC,EAAE,MAAM,iBAAiB,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7E,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IAC/C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,aAAa,CAQlE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAQ5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,cAAc,CASpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAQzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwCH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,OAAO,CACL,CAAC,CAAC,CAAC,IAAI,YAAY,iBAAiB,IAAI,CAAC,CAAC,IAAI,YAAY,UAAU,CAAC;QACrE,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAC3B,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAC7B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,OAAO,CACL,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAC3B,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAC5B,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,CACnC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,OAAO,CACL,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;QAChC,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;QACjC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAC5B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,OAAO,CACL,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;QAC7D,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC;QACvE,eAAe,CAAC,GAAG,CAAC,CACrB,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webcodecs-node",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "WebCodecs API implementation for Node.js using FFmpeg",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -10,25 +10,13 @@
|
|
|
10
10
|
"types": "./dist/index.d.ts",
|
|
11
11
|
"import": "./dist/index.js"
|
|
12
12
|
},
|
|
13
|
-
"./mediabunny/FFmpegVideoEncoder": {
|
|
14
|
-
"types": "./dist/mediabunny/FFmpegVideoEncoder.d.ts",
|
|
15
|
-
"import": "./dist/mediabunny/FFmpegVideoEncoder.js"
|
|
16
|
-
},
|
|
17
|
-
"./mediabunny/FFmpegVideoDecoder": {
|
|
18
|
-
"types": "./dist/mediabunny/FFmpegVideoDecoder.d.ts",
|
|
19
|
-
"import": "./dist/mediabunny/FFmpegVideoDecoder.js"
|
|
20
|
-
},
|
|
21
|
-
"./mediabunny/FFmpegAudioEncoder": {
|
|
22
|
-
"types": "./dist/mediabunny/FFmpegAudioEncoder.d.ts",
|
|
23
|
-
"import": "./dist/mediabunny/FFmpegAudioEncoder.js"
|
|
24
|
-
},
|
|
25
|
-
"./mediabunny/FFmpegAudioDecoder": {
|
|
26
|
-
"types": "./dist/mediabunny/FFmpegAudioDecoder.d.ts",
|
|
27
|
-
"import": "./dist/mediabunny/FFmpegAudioDecoder.js"
|
|
28
|
-
},
|
|
29
13
|
"./polyfill": {
|
|
30
14
|
"types": "./dist/polyfill.d.ts",
|
|
31
15
|
"import": "./dist/polyfill.js"
|
|
16
|
+
},
|
|
17
|
+
"./containers": {
|
|
18
|
+
"types": "./dist/containers/index.d.ts",
|
|
19
|
+
"import": "./dist/containers/index.js"
|
|
32
20
|
}
|
|
33
21
|
},
|
|
34
22
|
"files": [
|
|
@@ -41,15 +29,16 @@
|
|
|
41
29
|
"scripts": {
|
|
42
30
|
"build": "tsc",
|
|
43
31
|
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
32
|
+
"capabilities:generate": "npm run build && node dist/tools/generate-capabilities-profile.js",
|
|
44
33
|
"demo": "node dist/demos/demo.js",
|
|
45
|
-
"demo:mediabunny": "node dist/demos/demo-mediabunny.js",
|
|
46
34
|
"demo:image": "node dist/demos/demo-image.js",
|
|
47
|
-
"demo:conversion": "node dist/demos/demo-conversion.js",
|
|
48
35
|
"demo:webcodecs": "node dist/demos/demo-webcodecs.js",
|
|
49
36
|
"demo:hwaccel": "node dist/demos/demo-hwaccel.js",
|
|
50
|
-
"demo:hwaccel-conversion": "node dist/demos/demo-hwaccel-conversion.js",
|
|
51
37
|
"demo:streaming": "node dist/demos/demo-streaming.js",
|
|
52
|
-
"demo:samples": "node dist/demos/demo-samples.js"
|
|
38
|
+
"demo:samples": "node dist/demos/demo-samples.js",
|
|
39
|
+
"demo:fourcorners": "node dist/demos/demo-four-corners.js",
|
|
40
|
+
"demo:containers": "node dist/demos/demo-containers.js",
|
|
41
|
+
"demo:1080p": "node dist/demos/demo-1080p-transcode.js"
|
|
53
42
|
},
|
|
54
43
|
"keywords": [
|
|
55
44
|
"webcodecs",
|
|
@@ -58,7 +47,6 @@
|
|
|
58
47
|
"encoder",
|
|
59
48
|
"decoder",
|
|
60
49
|
"ffmpeg",
|
|
61
|
-
"mediabunny",
|
|
62
50
|
"node",
|
|
63
51
|
"h264",
|
|
64
52
|
"hevc",
|
|
@@ -68,30 +56,25 @@
|
|
|
68
56
|
"aac",
|
|
69
57
|
"hardware-acceleration",
|
|
70
58
|
"vaapi",
|
|
71
|
-
"nvenc"
|
|
59
|
+
"nvenc",
|
|
60
|
+
"transcode",
|
|
61
|
+
"demux",
|
|
62
|
+
"mux"
|
|
72
63
|
],
|
|
73
64
|
"author": "Mohamed Ikbel Boulabiar boulabiar@gmail.com",
|
|
74
|
-
"license": "AGPL-3.0-
|
|
65
|
+
"license": "AGPL-3.0-only",
|
|
75
66
|
"repository": {
|
|
76
67
|
"type": "git",
|
|
77
|
-
"url": "
|
|
68
|
+
"url": ""
|
|
78
69
|
},
|
|
79
70
|
"bugs": {
|
|
80
71
|
"url": ""
|
|
81
72
|
},
|
|
82
73
|
"homepage": "",
|
|
83
74
|
"dependencies": {
|
|
84
|
-
"
|
|
75
|
+
"node-av": "^5.0.2",
|
|
85
76
|
"sharp": "^0.32.6"
|
|
86
77
|
},
|
|
87
|
-
"peerDependencies": {
|
|
88
|
-
"mediabunny": ">=1.25.0"
|
|
89
|
-
},
|
|
90
|
-
"peerDependenciesMeta": {
|
|
91
|
-
"mediabunny": {
|
|
92
|
-
"optional": true
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
78
|
"devDependencies": {
|
|
96
79
|
"@types/jest": "^30.0.0",
|
|
97
80
|
"@types/node": "^20.10.0",
|
|
@@ -101,5 +84,8 @@
|
|
|
101
84
|
},
|
|
102
85
|
"engines": {
|
|
103
86
|
"node": ">=18.0.0"
|
|
87
|
+
},
|
|
88
|
+
"overrides": {
|
|
89
|
+
"connect": "^3.7.0"
|
|
104
90
|
}
|
|
105
91
|
}
|