webcodecs-node 0.7.2 → 0.8.5
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 +106 -16
- package/dist/backends/node-av/HardwarePipeline.d.ts +36 -0
- package/dist/backends/node-av/HardwarePipeline.d.ts.map +1 -0
- package/dist/backends/node-av/HardwarePipeline.js +203 -0
- package/dist/backends/node-av/HardwarePipeline.js.map +1 -0
- package/dist/backends/node-av/audio/NodeAvAudioDecoder.d.ts +46 -0
- package/dist/backends/node-av/audio/NodeAvAudioDecoder.d.ts.map +1 -0
- package/dist/backends/node-av/audio/NodeAvAudioDecoder.js +277 -0
- package/dist/backends/node-av/audio/NodeAvAudioDecoder.js.map +1 -0
- package/dist/backends/node-av/audio/NodeAvAudioEncoder.d.ts +47 -0
- package/dist/backends/node-av/audio/NodeAvAudioEncoder.d.ts.map +1 -0
- package/dist/backends/node-av/audio/NodeAvAudioEncoder.js +363 -0
- package/dist/backends/node-av/audio/NodeAvAudioEncoder.js.map +1 -0
- package/dist/backends/node-av/audio/decoder/channel-layout.d.ts +12 -0
- package/dist/backends/node-av/audio/decoder/channel-layout.d.ts.map +1 -0
- package/dist/backends/node-av/audio/decoder/channel-layout.js +24 -0
- package/dist/backends/node-av/audio/decoder/channel-layout.js.map +1 -0
- package/dist/backends/node-av/audio/decoder/codec-mapping.d.ts +9 -0
- package/dist/backends/node-av/audio/decoder/codec-mapping.d.ts.map +1 -0
- package/dist/backends/node-av/audio/decoder/codec-mapping.js +40 -0
- package/dist/backends/node-av/audio/decoder/codec-mapping.js.map +1 -0
- package/dist/backends/node-av/audio/decoder/constants.d.ts +6 -0
- package/dist/backends/node-av/audio/decoder/constants.d.ts.map +1 -0
- package/dist/backends/node-av/audio/decoder/constants.js +6 -0
- package/dist/backends/node-av/audio/decoder/constants.js.map +1 -0
- package/dist/backends/node-av/audio/decoder/index.d.ts +8 -0
- package/dist/backends/node-av/audio/decoder/index.d.ts.map +1 -0
- package/dist/backends/node-av/audio/decoder/index.js +8 -0
- package/dist/backends/node-av/audio/decoder/index.js.map +1 -0
- package/dist/backends/node-av/audio/decoder/sample-format.d.ts +14 -0
- package/dist/backends/node-av/audio/decoder/sample-format.d.ts.map +1 -0
- package/dist/backends/node-av/audio/decoder/sample-format.js +54 -0
- package/dist/backends/node-av/audio/decoder/sample-format.js.map +1 -0
- package/dist/backends/node-av/audio/encoder/channel-layout.d.ts +12 -0
- package/dist/backends/node-av/audio/encoder/channel-layout.d.ts.map +1 -0
- package/dist/backends/node-av/audio/encoder/channel-layout.js +24 -0
- package/dist/backends/node-av/audio/encoder/channel-layout.js.map +1 -0
- package/dist/backends/node-av/audio/encoder/codec-description.d.ts +33 -0
- package/dist/backends/node-av/audio/encoder/codec-description.d.ts.map +1 -0
- package/dist/backends/node-av/audio/encoder/codec-description.js +137 -0
- package/dist/backends/node-av/audio/encoder/codec-description.js.map +1 -0
- package/dist/backends/node-av/audio/encoder/codec-mapping.d.ts +12 -0
- package/dist/backends/node-av/audio/encoder/codec-mapping.d.ts.map +1 -0
- package/dist/backends/node-av/audio/encoder/codec-mapping.js +61 -0
- package/dist/backends/node-av/audio/encoder/codec-mapping.js.map +1 -0
- package/dist/backends/node-av/audio/encoder/constants.d.ts +6 -0
- package/dist/backends/node-av/audio/encoder/constants.d.ts.map +1 -0
- package/dist/backends/node-av/audio/encoder/constants.js +6 -0
- package/dist/backends/node-av/audio/encoder/constants.js.map +1 -0
- package/dist/backends/node-av/audio/encoder/drain.d.ts +32 -0
- package/dist/backends/node-av/audio/encoder/drain.d.ts.map +1 -0
- package/dist/backends/node-av/audio/encoder/drain.js +51 -0
- package/dist/backends/node-av/audio/encoder/drain.js.map +1 -0
- package/dist/backends/node-av/audio/encoder/index.d.ts +20 -0
- package/dist/backends/node-av/audio/encoder/index.d.ts.map +1 -0
- package/dist/backends/node-av/audio/encoder/index.js +20 -0
- package/dist/backends/node-av/audio/encoder/index.js.map +1 -0
- package/dist/backends/node-av/audio/encoder/options.d.ts +40 -0
- package/dist/backends/node-av/audio/encoder/options.d.ts.map +1 -0
- package/dist/backends/node-av/audio/encoder/options.js +127 -0
- package/dist/backends/node-av/audio/encoder/options.js.map +1 -0
- package/dist/backends/node-av/audio/encoder/sample-format-convert.d.ts +40 -0
- package/dist/backends/node-av/audio/encoder/sample-format-convert.d.ts.map +1 -0
- package/dist/backends/node-av/audio/encoder/sample-format-convert.js +152 -0
- package/dist/backends/node-av/audio/encoder/sample-format-convert.js.map +1 -0
- package/dist/backends/node-av/hardware-pipeline/capabilities.d.ts +10 -0
- package/dist/backends/node-av/hardware-pipeline/capabilities.d.ts.map +1 -0
- package/dist/backends/node-av/hardware-pipeline/capabilities.js +45 -0
- package/dist/backends/node-av/hardware-pipeline/capabilities.js.map +1 -0
- package/dist/backends/node-av/hardware-pipeline/index.d.ts +6 -0
- package/dist/backends/node-av/hardware-pipeline/index.d.ts.map +1 -0
- package/dist/backends/node-av/hardware-pipeline/index.js +5 -0
- package/dist/backends/node-av/hardware-pipeline/index.js.map +1 -0
- package/dist/backends/node-av/hardware-pipeline/types.d.ts +13 -0
- package/dist/backends/node-av/hardware-pipeline/types.d.ts.map +1 -0
- package/dist/backends/node-av/hardware-pipeline/types.js +5 -0
- package/dist/backends/node-av/hardware-pipeline/types.js.map +1 -0
- package/dist/backends/node-av/image/NodeAvImageDecoder.d.ts +95 -0
- package/dist/backends/node-av/image/NodeAvImageDecoder.d.ts.map +1 -0
- package/dist/backends/node-av/image/NodeAvImageDecoder.js +383 -0
- package/dist/backends/node-av/image/NodeAvImageDecoder.js.map +1 -0
- package/dist/backends/node-av/image/WebPImageDecoder.d.ts +57 -0
- package/dist/backends/node-av/image/WebPImageDecoder.d.ts.map +1 -0
- package/dist/backends/node-av/image/WebPImageDecoder.js +178 -0
- package/dist/backends/node-av/image/WebPImageDecoder.js.map +1 -0
- package/dist/backends/node-av/image/decoder/constants.d.ts +14 -0
- package/dist/backends/node-av/image/decoder/constants.d.ts.map +1 -0
- package/dist/backends/node-av/image/decoder/constants.js +24 -0
- package/dist/backends/node-av/image/decoder/constants.js.map +1 -0
- package/dist/backends/node-av/image/decoder/index.d.ts +7 -0
- package/dist/backends/node-av/image/decoder/index.d.ts.map +1 -0
- package/dist/backends/node-av/image/decoder/index.js +6 -0
- package/dist/backends/node-av/image/decoder/index.js.map +1 -0
- package/dist/backends/node-av/image/decoder/probe.d.ts +12 -0
- package/dist/backends/node-av/image/decoder/probe.d.ts.map +1 -0
- package/dist/backends/node-av/image/decoder/probe.js +57 -0
- package/dist/backends/node-av/image/decoder/probe.js.map +1 -0
- package/dist/backends/node-av/image/decoder/types.d.ts +25 -0
- package/dist/backends/node-av/image/decoder/types.d.ts.map +1 -0
- package/dist/backends/node-av/image/decoder/types.js +5 -0
- package/dist/backends/node-av/image/decoder/types.js.map +1 -0
- package/dist/backends/node-av/video/NodeAvVideoDecoder.d.ts +44 -0
- package/dist/backends/node-av/video/NodeAvVideoDecoder.d.ts.map +1 -0
- package/dist/backends/node-av/video/NodeAvVideoDecoder.js +326 -0
- package/dist/backends/node-av/video/NodeAvVideoDecoder.js.map +1 -0
- package/dist/backends/node-av/video/NodeAvVideoEncoder.d.ts +49 -0
- package/dist/backends/node-av/video/NodeAvVideoEncoder.d.ts.map +1 -0
- package/dist/backends/node-av/video/NodeAvVideoEncoder.js +317 -0
- package/dist/backends/node-av/video/NodeAvVideoEncoder.js.map +1 -0
- package/dist/backends/node-av/video/decoder/codec-mapping.d.ts +9 -0
- package/dist/backends/node-av/video/decoder/codec-mapping.d.ts.map +1 -0
- package/dist/backends/node-av/video/decoder/codec-mapping.js +25 -0
- package/dist/backends/node-av/video/decoder/codec-mapping.js.map +1 -0
- package/dist/backends/node-av/video/decoder/constants.d.ts +13 -0
- package/dist/backends/node-av/video/decoder/constants.d.ts.map +1 -0
- package/dist/backends/node-av/video/decoder/constants.js +13 -0
- package/dist/backends/node-av/video/decoder/constants.js.map +1 -0
- package/dist/backends/node-av/video/decoder/index.d.ts +7 -0
- package/dist/backends/node-av/video/decoder/index.d.ts.map +1 -0
- package/dist/backends/node-av/video/decoder/index.js +7 -0
- package/dist/backends/node-av/video/decoder/index.js.map +1 -0
- package/dist/backends/node-av/video/decoder/pixel-format.d.ts +13 -0
- package/dist/backends/node-av/video/decoder/pixel-format.d.ts.map +1 -0
- package/dist/backends/node-av/video/decoder/pixel-format.js +88 -0
- package/dist/backends/node-av/video/decoder/pixel-format.js.map +1 -0
- package/dist/backends/node-av/video/encoder/codec-description.d.ts +26 -0
- package/dist/backends/node-av/video/encoder/codec-description.d.ts.map +1 -0
- package/dist/backends/node-av/video/encoder/codec-description.js +86 -0
- package/dist/backends/node-av/video/encoder/codec-description.js.map +1 -0
- package/dist/backends/node-av/video/encoder/drain.d.ts +34 -0
- package/dist/backends/node-av/video/encoder/drain.d.ts.map +1 -0
- package/dist/backends/node-av/video/encoder/drain.js +51 -0
- package/dist/backends/node-av/video/encoder/drain.js.map +1 -0
- package/dist/backends/node-av/video/encoder/filters.d.ts +37 -0
- package/dist/backends/node-av/video/encoder/filters.d.ts.map +1 -0
- package/dist/backends/node-av/video/encoder/filters.js +71 -0
- package/dist/backends/node-av/video/encoder/filters.js.map +1 -0
- package/dist/backends/node-av/video/encoder/gpu-filters.d.ts +9 -0
- package/dist/backends/node-av/video/encoder/gpu-filters.d.ts.map +1 -0
- package/dist/backends/node-av/video/encoder/gpu-filters.js +26 -0
- package/dist/backends/node-av/video/encoder/gpu-filters.js.map +1 -0
- package/dist/backends/node-av/video/encoder/hardware-constraints.d.ts +12 -0
- package/dist/backends/node-av/video/encoder/hardware-constraints.d.ts.map +1 -0
- package/dist/backends/node-av/video/encoder/hardware-constraints.js +31 -0
- package/dist/backends/node-av/video/encoder/hardware-constraints.js.map +1 -0
- package/dist/backends/node-av/video/encoder/index.d.ts +28 -0
- package/dist/backends/node-av/video/encoder/index.d.ts.map +1 -0
- package/dist/backends/node-av/video/encoder/index.js +28 -0
- package/dist/backends/node-av/video/encoder/index.js.map +1 -0
- package/dist/backends/node-av/video/encoder/options.d.ts +39 -0
- package/dist/backends/node-av/video/encoder/options.d.ts.map +1 -0
- package/dist/backends/node-av/video/encoder/options.js +195 -0
- package/dist/backends/node-av/video/encoder/options.js.map +1 -0
- package/dist/backends/node-av/video/encoder/pixel-format-config.d.ts +42 -0
- package/dist/backends/node-av/video/encoder/pixel-format-config.d.ts.map +1 -0
- package/dist/backends/node-av/video/encoder/pixel-format-config.js +122 -0
- package/dist/backends/node-av/video/encoder/pixel-format-config.js.map +1 -0
- package/dist/backends/node-av/video/encoder/pixel-format.d.ts +13 -0
- package/dist/backends/node-av/video/encoder/pixel-format.d.ts.map +1 -0
- package/dist/backends/node-av/video/encoder/pixel-format.js +68 -0
- package/dist/backends/node-av/video/encoder/pixel-format.js.map +1 -0
- package/dist/backends/node-av/video/encoder/setup.d.ts +33 -0
- package/dist/backends/node-av/video/encoder/setup.d.ts.map +1 -0
- package/dist/backends/node-av/video/encoder/setup.js +62 -0
- package/dist/backends/node-av/video/encoder/setup.js.map +1 -0
- package/dist/backends/node-av/video/encoder/software-encoders.d.ts +8 -0
- package/dist/backends/node-av/video/encoder/software-encoders.d.ts.map +1 -0
- package/dist/backends/node-av/video/encoder/software-encoders.js +17 -0
- package/dist/backends/node-av/video/encoder/software-encoders.js.map +1 -0
- package/dist/backends/node-av/video/encoder/timestamp.d.ts +34 -0
- package/dist/backends/node-av/video/encoder/timestamp.d.ts.map +1 -0
- package/dist/backends/node-av/video/encoder/timestamp.js +39 -0
- package/dist/backends/node-av/video/encoder/timestamp.js.map +1 -0
- package/dist/backends/types.d.ts +44 -0
- package/dist/backends/types.d.ts.map +1 -1
- package/dist/backends/types.js.map +1 -1
- package/dist/codec-utils/formats.d.ts.map +1 -1
- package/dist/codec-utils/formats.js +78 -0
- package/dist/codec-utils/formats.js.map +1 -1
- package/dist/codec-utils/types.d.ts +1 -1
- package/dist/codecs/aac.d.ts +10 -0
- package/dist/codecs/aac.d.ts.map +1 -0
- package/dist/codecs/aac.js +10 -0
- package/dist/codecs/aac.js.map +1 -0
- package/dist/codecs/avc.d.ts +11 -0
- package/dist/codecs/avc.d.ts.map +1 -0
- package/dist/codecs/avc.js +11 -0
- package/dist/codecs/avc.js.map +1 -0
- package/dist/codecs/hevc.d.ts +11 -0
- package/dist/codecs/hevc.d.ts.map +1 -0
- package/dist/codecs/hevc.js +11 -0
- package/dist/codecs/hevc.js.map +1 -0
- package/dist/codecs/index.d.ts +10 -0
- package/dist/codecs/index.d.ts.map +1 -0
- package/dist/codecs/index.js +14 -0
- package/dist/codecs/index.js.map +1 -0
- package/dist/codecs/validation/audio.d.ts +19 -0
- package/dist/codecs/validation/audio.d.ts.map +1 -0
- package/dist/codecs/validation/audio.js +111 -0
- package/dist/codecs/validation/audio.js.map +1 -0
- package/dist/codecs/validation/config.d.ts +27 -0
- package/dist/codecs/validation/config.d.ts.map +1 -0
- package/dist/codecs/validation/config.js +154 -0
- package/dist/codecs/validation/config.js.map +1 -0
- package/dist/codecs/validation/index.d.ts +9 -0
- package/dist/codecs/validation/index.d.ts.map +1 -0
- package/dist/codecs/validation/index.js +12 -0
- package/dist/codecs/validation/index.js.map +1 -0
- package/dist/codecs/validation/video.d.ts +24 -0
- package/dist/codecs/validation/video.d.ts.map +1 -0
- package/dist/codecs/validation/video.js +196 -0
- package/dist/codecs/validation/video.js.map +1 -0
- package/dist/config/webcodecs-config.d.ts +58 -0
- package/dist/config/webcodecs-config.d.ts.map +1 -0
- package/dist/config/webcodecs-config.js +187 -0
- package/dist/config/webcodecs-config.js.map +1 -0
- package/dist/containers/Demuxer.d.ts +3 -1
- package/dist/containers/Demuxer.d.ts.map +1 -1
- package/dist/containers/Demuxer.js +26 -19
- package/dist/containers/Demuxer.js.map +1 -1
- package/dist/containers/FFmpegMuxer.d.ts +42 -0
- package/dist/containers/FFmpegMuxer.d.ts.map +1 -0
- package/dist/containers/FFmpegMuxer.js +311 -0
- package/dist/containers/FFmpegMuxer.js.map +1 -0
- package/dist/containers/Muxer.d.ts +75 -107
- package/dist/containers/Muxer.d.ts.map +1 -1
- package/dist/containers/Muxer.js +184 -243
- package/dist/containers/Muxer.js.map +1 -1
- package/dist/containers/NodeAvMuxer.d.ts +125 -0
- package/dist/containers/NodeAvMuxer.d.ts.map +1 -0
- package/dist/containers/NodeAvMuxer.js +458 -0
- package/dist/containers/NodeAvMuxer.js.map +1 -0
- package/dist/containers/extract.d.ts.map +1 -1
- package/dist/containers/extract.js +3 -1
- package/dist/containers/extract.js.map +1 -1
- package/dist/containers/index.d.ts +20 -14
- package/dist/containers/index.d.ts.map +1 -1
- package/dist/containers/index.js +21 -14
- package/dist/containers/index.js.map +1 -1
- package/dist/containers/muxer-types.d.ts +117 -0
- package/dist/containers/muxer-types.d.ts.map +1 -0
- package/dist/containers/muxer-types.js +45 -0
- package/dist/containers/muxer-types.js.map +1 -0
- package/dist/containers/transcode.d.ts.map +1 -1
- package/dist/containers/transcode.js +171 -150
- package/dist/containers/transcode.js.map +1 -1
- package/dist/core/AudioData.d.ts.map +1 -1
- package/dist/core/AudioData.js +54 -12
- package/dist/core/AudioData.js.map +1 -1
- package/dist/core/EncodedAudioChunk.d.ts.map +1 -1
- package/dist/core/EncodedAudioChunk.js +74 -6
- package/dist/core/EncodedAudioChunk.js.map +1 -1
- package/dist/core/EncodedVideoChunk.d.ts +2 -0
- package/dist/core/EncodedVideoChunk.d.ts.map +1 -1
- package/dist/core/EncodedVideoChunk.js +70 -2
- package/dist/core/EncodedVideoChunk.js.map +1 -1
- package/dist/core/VideoFrame.d.ts +27 -2
- package/dist/core/VideoFrame.d.ts.map +1 -1
- package/dist/core/VideoFrame.js +245 -125
- package/dist/core/VideoFrame.js.map +1 -1
- package/dist/core/video-frame/layout.d.ts +10 -0
- package/dist/core/video-frame/layout.d.ts.map +1 -0
- package/dist/core/video-frame/layout.js +97 -0
- package/dist/core/video-frame/layout.js.map +1 -0
- package/dist/core/video-frame/orientation.d.ts +23 -0
- package/dist/core/video-frame/orientation.d.ts.map +1 -0
- package/dist/core/video-frame/orientation.js +49 -0
- package/dist/core/video-frame/orientation.js.map +1 -0
- package/dist/core/video-frame/transfer.d.ts +19 -0
- package/dist/core/video-frame/transfer.d.ts.map +1 -0
- package/dist/core/video-frame/transfer.js +78 -0
- package/dist/core/video-frame/transfer.js.map +1 -0
- package/dist/core/video-frame/validation.d.ts +28 -0
- package/dist/core/video-frame/validation.d.ts.map +1 -0
- package/dist/core/video-frame/validation.js +76 -0
- package/dist/core/video-frame/validation.js.map +1 -0
- package/dist/decoders/AudioDecoder.d.ts +2 -19
- package/dist/decoders/AudioDecoder.d.ts.map +1 -1
- package/dist/decoders/AudioDecoder.js +27 -11
- package/dist/decoders/AudioDecoder.js.map +1 -1
- package/dist/decoders/ImageDecoder.d.ts +34 -41
- package/dist/decoders/ImageDecoder.d.ts.map +1 -1
- package/dist/decoders/ImageDecoder.js +158 -266
- package/dist/decoders/ImageDecoder.js.map +1 -1
- package/dist/decoders/VideoDecoder.d.ts +3 -38
- package/dist/decoders/VideoDecoder.d.ts.map +1 -1
- package/dist/decoders/VideoDecoder.js +126 -124
- package/dist/decoders/VideoDecoder.js.map +1 -1
- package/dist/decoders/audio/config.d.ts +23 -0
- package/dist/decoders/audio/config.d.ts.map +1 -0
- package/dist/decoders/audio/config.js +112 -0
- package/dist/decoders/audio/config.js.map +1 -0
- package/dist/decoders/audio/constants.d.ts +6 -0
- package/dist/decoders/audio/constants.d.ts.map +1 -0
- package/dist/decoders/audio/constants.js +6 -0
- package/dist/decoders/audio/constants.js.map +1 -0
- package/dist/decoders/audio/types.d.ts +21 -0
- package/dist/decoders/audio/types.d.ts.map +1 -0
- package/dist/decoders/audio/types.js +5 -0
- package/dist/decoders/audio/types.js.map +1 -0
- package/dist/decoders/image/orientation.d.ts +16 -0
- package/dist/decoders/image/orientation.d.ts.map +1 -0
- package/dist/decoders/image/orientation.js +170 -0
- package/dist/decoders/image/orientation.js.map +1 -0
- package/dist/decoders/image/stream.d.ts +12 -0
- package/dist/decoders/image/stream.d.ts.map +1 -0
- package/dist/decoders/image/stream.js +41 -0
- package/dist/decoders/image/stream.js.map +1 -0
- package/dist/decoders/image/tracks.d.ts +76 -0
- package/dist/decoders/image/tracks.d.ts.map +1 -0
- package/dist/decoders/image/tracks.js +136 -0
- package/dist/decoders/image/tracks.js.map +1 -0
- package/dist/decoders/image/types.d.ts +36 -0
- package/dist/decoders/image/types.d.ts.map +1 -0
- package/dist/decoders/image/types.js +5 -0
- package/dist/decoders/image/types.js.map +1 -0
- package/dist/decoders/video/codec-specific.d.ts +19 -0
- package/dist/decoders/video/codec-specific.d.ts.map +1 -0
- package/dist/decoders/video/codec-specific.js +62 -0
- package/dist/decoders/video/codec-specific.js.map +1 -0
- package/dist/decoders/video/config.d.ts +17 -0
- package/dist/decoders/video/config.d.ts.map +1 -0
- package/dist/decoders/video/config.js +91 -0
- package/dist/decoders/video/config.js.map +1 -0
- package/dist/decoders/video/constants.d.ts +8 -0
- package/dist/decoders/video/constants.d.ts.map +1 -0
- package/dist/decoders/video/constants.js +13 -0
- package/dist/decoders/video/constants.js.map +1 -0
- package/dist/decoders/video/queue.d.ts +9 -0
- package/dist/decoders/video/queue.d.ts.map +1 -0
- package/dist/decoders/video/queue.js +17 -0
- package/dist/decoders/video/queue.js.map +1 -0
- package/dist/decoders/video/types.d.ts +41 -0
- package/dist/decoders/video/types.d.ts.map +1 -0
- package/dist/decoders/video/types.js +5 -0
- package/dist/decoders/video/types.js.map +1 -0
- package/dist/demos/demo-audio-visualizer.js +74 -48
- package/dist/demos/demo-audio-visualizer.js.map +1 -1
- package/dist/demos/demo-dvd-logo.js +26 -23
- package/dist/demos/demo-dvd-logo.js.map +1 -1
- package/dist/demos/demo-flow-field.d.ts +11 -0
- package/dist/demos/demo-flow-field.d.ts.map +1 -0
- package/dist/demos/demo-flow-field.js +305 -0
- package/dist/demos/demo-flow-field.js.map +1 -0
- package/dist/demos/demo-four-corners.js +56 -120
- package/dist/demos/demo-four-corners.js.map +1 -1
- package/dist/demos/demo-image.js +24 -19
- package/dist/demos/demo-image.js.map +1 -1
- package/dist/demos/demo-matrix-rain.d.ts +11 -0
- package/dist/demos/demo-matrix-rain.d.ts.map +1 -0
- package/dist/demos/demo-matrix-rain.js +246 -0
- package/dist/demos/demo-matrix-rain.js.map +1 -0
- package/dist/demos/demo-pipeline.js +56 -51
- package/dist/demos/demo-pipeline.js.map +1 -1
- package/dist/demos/demo-samples.js +56 -402
- package/dist/demos/demo-samples.js.map +1 -1
- package/dist/encoders/AudioEncoder.d.ts +4 -28
- package/dist/encoders/AudioEncoder.d.ts.map +1 -1
- package/dist/encoders/AudioEncoder.js +83 -20
- package/dist/encoders/AudioEncoder.js.map +1 -1
- package/dist/encoders/VideoEncoder.d.ts +25 -46
- package/dist/encoders/VideoEncoder.d.ts.map +1 -1
- package/dist/encoders/VideoEncoder.js +180 -88
- package/dist/encoders/VideoEncoder.js.map +1 -1
- package/dist/encoders/audio/config.d.ts +30 -0
- package/dist/encoders/audio/config.d.ts.map +1 -0
- package/dist/encoders/audio/config.js +169 -0
- package/dist/encoders/audio/config.js.map +1 -0
- package/dist/encoders/audio/constants.d.ts +8 -0
- package/dist/encoders/audio/constants.d.ts.map +1 -0
- package/dist/encoders/audio/constants.js +8 -0
- package/dist/encoders/audio/constants.js.map +1 -0
- package/dist/encoders/audio/types.d.ts +70 -0
- package/dist/encoders/audio/types.d.ts.map +1 -0
- package/dist/encoders/audio/types.js +5 -0
- package/dist/encoders/audio/types.js.map +1 -0
- package/dist/encoders/video/config.d.ts +25 -0
- package/dist/encoders/video/config.d.ts.map +1 -0
- package/dist/encoders/video/config.js +132 -0
- package/dist/encoders/video/config.js.map +1 -0
- package/dist/encoders/video/constants.d.ts +8 -0
- package/dist/encoders/video/constants.d.ts.map +1 -0
- package/dist/encoders/video/constants.js +8 -0
- package/dist/encoders/video/constants.js.map +1 -0
- package/dist/encoders/video/queue.d.ts +9 -0
- package/dist/encoders/video/queue.d.ts.map +1 -0
- package/dist/encoders/video/queue.js +17 -0
- package/dist/encoders/video/queue.js.map +1 -0
- package/dist/encoders/video/types.d.ts +104 -0
- package/dist/encoders/video/types.d.ts.map +1 -0
- package/dist/encoders/video/types.js +5 -0
- package/dist/encoders/video/types.js.map +1 -0
- package/dist/formats/color-space/convert.d.ts +27 -0
- package/dist/formats/color-space/convert.d.ts.map +1 -0
- package/dist/formats/color-space/convert.js +91 -0
- package/dist/formats/color-space/convert.js.map +1 -0
- package/dist/formats/color-space/extract.d.ts +32 -0
- package/dist/formats/color-space/extract.d.ts.map +1 -0
- package/dist/formats/color-space/extract.js +116 -0
- package/dist/formats/color-space/extract.js.map +1 -0
- package/dist/formats/color-space/index.d.ts +10 -0
- package/dist/formats/color-space/index.d.ts.map +1 -0
- package/dist/formats/color-space/index.js +14 -0
- package/dist/formats/color-space/index.js.map +1 -0
- package/dist/formats/color-space/maps.d.ts +70 -0
- package/dist/formats/color-space/maps.d.ts.map +1 -0
- package/dist/formats/color-space/maps.js +70 -0
- package/dist/formats/color-space/maps.js.map +1 -0
- package/dist/formats/color-space/types.d.ts +68 -0
- package/dist/formats/color-space/types.d.ts.map +1 -0
- package/dist/formats/color-space/types.js +49 -0
- package/dist/formats/color-space/types.js.map +1 -0
- package/dist/formats/color-space.d.ts +4 -124
- package/dist/formats/color-space.d.ts.map +1 -1
- package/dist/formats/color-space.js +5 -108
- package/dist/formats/color-space.js.map +1 -1
- package/dist/formats/conversions/frame-converter.d.ts +8 -3
- package/dist/formats/conversions/frame-converter.d.ts.map +1 -1
- package/dist/formats/conversions/frame-converter.js +16 -12
- package/dist/formats/conversions/frame-converter.js.map +1 -1
- package/dist/formats/pixel-format/helpers.d.ts +49 -0
- package/dist/formats/pixel-format/helpers.d.ts.map +1 -0
- package/dist/formats/pixel-format/helpers.js +117 -0
- package/dist/formats/pixel-format/helpers.js.map +1 -0
- package/dist/formats/pixel-format/index.d.ts +9 -0
- package/dist/formats/pixel-format/index.d.ts.map +1 -0
- package/dist/formats/pixel-format/index.js +10 -0
- package/dist/formats/pixel-format/index.js.map +1 -0
- package/dist/formats/pixel-format/sizes.d.ts +17 -0
- package/dist/formats/pixel-format/sizes.d.ts.map +1 -0
- package/dist/formats/pixel-format/sizes.js +159 -0
- package/dist/formats/pixel-format/sizes.js.map +1 -0
- package/dist/formats/pixel-format/types.d.ts +13 -0
- package/dist/formats/pixel-format/types.d.ts.map +1 -0
- package/dist/formats/pixel-format/types.js +5 -0
- package/dist/formats/pixel-format/types.js.map +1 -0
- package/dist/formats/pixel-formats.d.ts +4 -53
- package/dist/formats/pixel-formats.d.ts.map +1 -1
- package/dist/formats/pixel-formats.js +5 -179
- package/dist/formats/pixel-formats.js.map +1 -1
- package/dist/hardware/decoder-args.d.ts.map +1 -1
- package/dist/hardware/decoder-args.js +35 -14
- package/dist/hardware/decoder-args.js.map +1 -1
- package/dist/hardware/detection.d.ts.map +1 -1
- package/dist/hardware/detection.js +39 -0
- package/dist/hardware/detection.js.map +1 -1
- package/dist/hardware/encoder-args.d.ts.map +1 -1
- package/dist/hardware/encoder-args.js +43 -5
- package/dist/hardware/encoder-args.js.map +1 -1
- package/dist/hardware/types.d.ts.map +1 -1
- package/dist/hardware/types.js +36 -28
- package/dist/hardware/types.js.map +1 -1
- package/dist/node-av/NodeAvVideoEncoder.d.ts +5 -0
- package/dist/node-av/NodeAvVideoEncoder.d.ts.map +1 -1
- package/dist/node-av/NodeAvVideoEncoder.js +76 -23
- package/dist/node-av/NodeAvVideoEncoder.js.map +1 -1
- package/dist/transfer/detach.d.ts +42 -0
- package/dist/transfer/detach.d.ts.map +1 -0
- package/dist/transfer/detach.js +93 -0
- package/dist/transfer/detach.js.map +1 -0
- package/dist/transfer/index.d.ts +9 -0
- package/dist/transfer/index.d.ts.map +1 -0
- package/dist/transfer/index.js +11 -0
- package/dist/transfer/index.js.map +1 -0
- package/dist/transfer/validate.d.ts +45 -0
- package/dist/transfer/validate.d.ts.map +1 -0
- package/dist/transfer/validate.js +98 -0
- package/dist/transfer/validate.js.map +1 -0
- package/dist/types/video.d.ts +16 -0
- package/dist/types/video.d.ts.map +1 -1
- package/dist/utils/avc.d.ts +2 -0
- package/dist/utils/avc.d.ts.map +1 -1
- package/dist/utils/avc.js +36 -8
- package/dist/utils/avc.js.map +1 -1
- package/dist/utils/codec-validation.d.ts +3 -28
- package/dist/utils/codec-validation.d.ts.map +1 -1
- package/dist/utils/codec-validation.js +4 -238
- package/dist/utils/codec-validation.js.map +1 -1
- package/dist/utils/hevc.d.ts +2 -0
- package/dist/utils/hevc.d.ts.map +1 -1
- package/dist/utils/hevc.js +42 -8
- package/dist/utils/hevc.js.map +1 -1
- package/docs/api.md +24 -4
- package/docs/architecture-refactor-plan.md +149 -0
- package/docs/architecture.md +258 -0
- package/docs/configuration.md +10 -7
- package/package.json +6 -4
- package/dist/config/ffmpeg-quality.d.ts +0 -14
- package/dist/config/ffmpeg-quality.d.ts.map +0 -1
- package/dist/config/ffmpeg-quality.js +0 -41
- package/dist/config/ffmpeg-quality.js.map +0 -1
- package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts +0 -72
- package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts.map +0 -1
- package/dist/polyfills/CanvasRenderingContext2DPolyfill.js +0 -293
- package/dist/polyfills/CanvasRenderingContext2DPolyfill.js.map +0 -1
- package/dist/polyfills/ImageDataPolyfill.d.ts +0 -12
- package/dist/polyfills/ImageDataPolyfill.d.ts.map +0 -1
- package/dist/polyfills/ImageDataPolyfill.js +0 -22
- package/dist/polyfills/ImageDataPolyfill.js.map +0 -1
- package/dist/polyfills/OffscreenCanvasPolyfill.d.ts +0 -16
- package/dist/polyfills/OffscreenCanvasPolyfill.d.ts.map +0 -1
- package/dist/polyfills/OffscreenCanvasPolyfill.js +0 -46
- package/dist/polyfills/OffscreenCanvasPolyfill.js.map +0 -1
- package/dist/polyfills/VideoFramePolyfill.d.ts +0 -44
- package/dist/polyfills/VideoFramePolyfill.d.ts.map +0 -1
- package/dist/polyfills/VideoFramePolyfill.js +0 -98
- package/dist/polyfills/VideoFramePolyfill.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec-validation.d.ts","sourceRoot":"","sources":["../../src/utils/codec-validation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"codec-validation.d.ts","sourceRoot":"","sources":["../../src/utils/codec-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,+BAA+B,CAAC"}
|
|
@@ -1,243 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Codec string validation according to WebCodecs specification
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* - Fully qualified codec strings (no ambiguous "vp9", must be "vp09.xx.xx.xx")
|
|
7
|
-
* - Valid profile/level parameters
|
|
8
|
-
*
|
|
9
|
-
* @see https://www.w3.org/TR/webcodecs-codec-registry/
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* Validate a video codec string according to WebCodecs spec
|
|
13
|
-
*
|
|
14
|
-
* Returns { valid: true, supported: true } for valid, supported codecs
|
|
15
|
-
* Returns { valid: true, supported: false } for valid but unsupported codecs
|
|
16
|
-
* Returns { valid: false, supported: false } for invalid codec strings
|
|
17
|
-
*/
|
|
18
|
-
export function validateVideoCodec(codec) {
|
|
19
|
-
// Check for whitespace (invalid)
|
|
20
|
-
if (codec !== codec.trim()) {
|
|
21
|
-
return { valid: true, supported: false, error: 'Codec string contains whitespace' };
|
|
22
|
-
}
|
|
23
|
-
// Check for MIME type format (invalid for WebCodecs)
|
|
24
|
-
if (codec.includes('/') || codec.includes(';')) {
|
|
25
|
-
return { valid: true, supported: false, error: 'MIME type format not accepted' };
|
|
26
|
-
}
|
|
27
|
-
// AVC/H.264: avc1.PPCCLL or avc3.PPCCLL
|
|
28
|
-
if (codec.startsWith('avc1.') || codec.startsWith('avc3.')) {
|
|
29
|
-
return validateAvcCodec(codec);
|
|
30
|
-
}
|
|
31
|
-
// HEVC/H.265: hvc1.P.T.Lxx or hev1.P.T.Lxx
|
|
32
|
-
if (codec.startsWith('hvc1.') || codec.startsWith('hev1.')) {
|
|
33
|
-
return validateHevcCodec(codec);
|
|
34
|
-
}
|
|
35
|
-
// VP8: exactly "vp8"
|
|
36
|
-
if (codec === 'vp8') {
|
|
37
|
-
return { valid: true, supported: true };
|
|
38
|
-
}
|
|
39
|
-
// VP8 with wrong casing
|
|
40
|
-
if (codec.toLowerCase() === 'vp8' && codec !== 'vp8') {
|
|
41
|
-
return { valid: true, supported: false, error: 'VP8 codec must be lowercase "vp8"' };
|
|
42
|
-
}
|
|
43
|
-
// VP9: must be fully qualified vp09.PP.LL.DD
|
|
44
|
-
if (codec.startsWith('vp09.')) {
|
|
45
|
-
return validateVp9Codec(codec);
|
|
46
|
-
}
|
|
47
|
-
// Ambiguous "vp9" without profile - not accepted per WebCodecs spec
|
|
48
|
-
if (codec.toLowerCase() === 'vp9') {
|
|
49
|
-
return { valid: true, supported: false, error: 'Ambiguous VP9 codec, use vp09.PP.LL.DD format' };
|
|
50
|
-
}
|
|
51
|
-
// AV1: av01.P.LLT.DD
|
|
52
|
-
if (codec.startsWith('av01.')) {
|
|
53
|
-
return validateAv1Codec(codec);
|
|
54
|
-
}
|
|
55
|
-
// Ambiguous "av1" without profile is not accepted
|
|
56
|
-
if (codec === 'av1' || codec.toLowerCase() === 'av1') {
|
|
57
|
-
return { valid: true, supported: false, error: 'Ambiguous AV1 codec, use av01.P.LLT.DD format' };
|
|
58
|
-
}
|
|
59
|
-
// Unknown codec
|
|
60
|
-
return { valid: true, supported: false, error: `Unrecognized codec: ${codec}` };
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Validate AVC/H.264 codec string
|
|
64
|
-
* Format: avc1.PPCCLL or avc3.PPCCLL
|
|
65
|
-
* PP = Profile (hex), CC = Constraints (hex), LL = Level (hex)
|
|
66
|
-
*/
|
|
67
|
-
function validateAvcCodec(codec) {
|
|
68
|
-
// avc1.XXXXXX or avc3.XXXXXX (6 hex digits)
|
|
69
|
-
const match = codec.match(/^(avc[13])\.([0-9A-Fa-f]{6})$/);
|
|
70
|
-
if (!match) {
|
|
71
|
-
return { valid: true, supported: false, error: 'Invalid AVC codec format' };
|
|
72
|
-
}
|
|
73
|
-
const [, prefix, params] = match;
|
|
74
|
-
// Check case sensitivity of prefix
|
|
75
|
-
if (prefix !== prefix.toLowerCase()) {
|
|
76
|
-
return { valid: true, supported: false, error: 'AVC codec prefix must be lowercase' };
|
|
77
|
-
}
|
|
78
|
-
// Parse profile, constraints, level
|
|
79
|
-
const profile = parseInt(params.substring(0, 2), 16);
|
|
80
|
-
const constraints = parseInt(params.substring(2, 4), 16);
|
|
81
|
-
const level = parseInt(params.substring(4, 6), 16);
|
|
82
|
-
// Valid profiles: 66 (Baseline), 77 (Main), 88 (Extended), 100 (High), etc.
|
|
83
|
-
const validProfiles = [66, 77, 88, 100, 110, 122, 244, 44, 83, 86, 118, 128, 138, 139, 134];
|
|
84
|
-
if (!validProfiles.includes(profile)) {
|
|
85
|
-
// Future/unknown profile - mark as unsupported
|
|
86
|
-
return { valid: true, supported: false, error: `Unknown AVC profile: ${profile}` };
|
|
87
|
-
}
|
|
88
|
-
// Valid levels: 10, 11, 12, 13, 20, 21, 22, 30, 31, 32, 40, 41, 42, 50, 51, 52, 60, 61, 62
|
|
89
|
-
const validLevels = [10, 11, 12, 13, 20, 21, 22, 30, 31, 32, 40, 41, 42, 50, 51, 52, 60, 61, 62];
|
|
90
|
-
if (!validLevels.includes(level)) {
|
|
91
|
-
// Note: level 29 (0x1D) is not a valid H.264 level
|
|
92
|
-
return { valid: true, supported: false, error: `Unknown AVC level: ${level}` };
|
|
93
|
-
}
|
|
94
|
-
return { valid: true, supported: true };
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Validate HEVC/H.265 codec string
|
|
98
|
-
* Format: hvc1.P.C.Lxx[.XX] or hev1.P.C.Lxx[.XX]
|
|
99
|
-
* Where P = profile, C = compatibility, Lxx = level, XX = optional constraints
|
|
100
|
-
* Example: hev1.1.6.L93.B0
|
|
101
|
-
*/
|
|
102
|
-
function validateHevcCodec(codec) {
|
|
103
|
-
// HEVC codec format: prefix.profile.compatibility.level[.constraints]
|
|
104
|
-
// Examples: hev1.1.6.L93.B0, hvc1.1.6.L120, hev1.2.4.L153.90
|
|
105
|
-
const match = codec.match(/^(hvc1|hev1)\.(\d+)\.([0-9A-Fa-f]+)\.L(\d+)(?:\.([A-Za-z0-9]+))?$/);
|
|
106
|
-
if (!match) {
|
|
107
|
-
return { valid: true, supported: false, error: 'Invalid HEVC codec format' };
|
|
108
|
-
}
|
|
109
|
-
const [, prefix, profileStr, , levelStr] = match;
|
|
110
|
-
// Check case sensitivity of prefix
|
|
111
|
-
if (prefix !== prefix.toLowerCase()) {
|
|
112
|
-
return { valid: true, supported: false, error: 'HEVC codec prefix must be lowercase' };
|
|
113
|
-
}
|
|
114
|
-
const profile = parseInt(profileStr, 10);
|
|
115
|
-
const level = parseInt(levelStr, 10);
|
|
116
|
-
// Valid HEVC profiles: 1 (Main), 2 (Main 10), 3 (Main Still Picture), etc.
|
|
117
|
-
if (profile < 1 || profile > 11) {
|
|
118
|
-
return { valid: true, supported: false, error: `Unknown HEVC profile: ${profile}` };
|
|
119
|
-
}
|
|
120
|
-
// Valid HEVC levels (level * 30): 30, 60, 63, 90, 93, 120, 123, 150, 153, 156, 180, 183, 186
|
|
121
|
-
const validLevels = [30, 60, 63, 90, 93, 120, 123, 150, 153, 156, 180, 183, 186];
|
|
122
|
-
if (!validLevels.includes(level)) {
|
|
123
|
-
return { valid: true, supported: false, error: `Unknown HEVC level: ${level}` };
|
|
124
|
-
}
|
|
125
|
-
return { valid: true, supported: true };
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Validate VP9 codec string
|
|
129
|
-
* Format: vp09.PP.LL.DD
|
|
130
|
-
* PP = Profile (00-03), LL = Level (10-62), DD = Bit depth (08, 10, 12)
|
|
131
|
-
*/
|
|
132
|
-
function validateVp9Codec(codec) {
|
|
133
|
-
const match = codec.match(/^vp09\.(\d{2})\.(\d{2})\.(\d{2})$/);
|
|
134
|
-
if (!match) {
|
|
135
|
-
return { valid: true, supported: false, error: 'Invalid VP9 codec format, expected vp09.PP.LL.DD' };
|
|
136
|
-
}
|
|
137
|
-
const [, profileStr, levelStr, bitDepthStr] = match;
|
|
138
|
-
const profile = parseInt(profileStr, 10);
|
|
139
|
-
const level = parseInt(levelStr, 10);
|
|
140
|
-
const bitDepth = parseInt(bitDepthStr, 10);
|
|
141
|
-
// Valid profiles: 0, 1, 2, 3
|
|
142
|
-
if (profile < 0 || profile > 3) {
|
|
143
|
-
return { valid: true, supported: false, error: `Unknown VP9 profile: ${profile}` };
|
|
144
|
-
}
|
|
145
|
-
// Valid levels: 10, 11, 20, 21, 30, 31, 40, 41, 50, 51, 52, 60, 61, 62
|
|
146
|
-
const validLevels = [10, 11, 20, 21, 30, 31, 40, 41, 50, 51, 52, 60, 61, 62];
|
|
147
|
-
if (!validLevels.includes(level)) {
|
|
148
|
-
return { valid: true, supported: false, error: `Unknown VP9 level: ${level}` };
|
|
149
|
-
}
|
|
150
|
-
// Valid bit depths: 8, 10, 12
|
|
151
|
-
if (bitDepth !== 8 && bitDepth !== 10 && bitDepth !== 12) {
|
|
152
|
-
return { valid: true, supported: false, error: `Unknown VP9 bit depth: ${bitDepth}` };
|
|
153
|
-
}
|
|
154
|
-
return { valid: true, supported: true };
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Validate AV1 codec string
|
|
158
|
-
* Format: av01.P.LLT.DD
|
|
159
|
-
* P = Profile (0=Main, 1=High, 2=Professional)
|
|
160
|
-
* LL = Level (00-23)
|
|
161
|
-
* T = Tier (M=Main, H=High)
|
|
162
|
-
* DD = Bit depth (08, 10, 12)
|
|
163
|
-
*/
|
|
164
|
-
function validateAv1Codec(codec) {
|
|
165
|
-
const match = codec.match(/^av01\.(\d)\.(\d{2})([MH])\.(\d{2})$/);
|
|
166
|
-
if (!match) {
|
|
167
|
-
return { valid: true, supported: false, error: 'Invalid AV1 codec format, expected av01.P.LLT.DD' };
|
|
168
|
-
}
|
|
169
|
-
const [, profileStr, levelStr, tier, bitDepthStr] = match;
|
|
170
|
-
const profile = parseInt(profileStr, 10);
|
|
171
|
-
const level = parseInt(levelStr, 10);
|
|
172
|
-
const bitDepth = parseInt(bitDepthStr, 10);
|
|
173
|
-
// Valid profiles: 0 (Main), 1 (High), 2 (Professional)
|
|
174
|
-
if (profile < 0 || profile > 2) {
|
|
175
|
-
return { valid: true, supported: false, error: `Unknown AV1 profile: ${profile}` };
|
|
176
|
-
}
|
|
177
|
-
// Valid levels: 0-23 (0=2.0, 1=2.1, ..., 23=7.3)
|
|
178
|
-
if (level < 0 || level > 23) {
|
|
179
|
-
return { valid: true, supported: false, error: `Unknown AV1 level: ${level}` };
|
|
180
|
-
}
|
|
181
|
-
// Valid bit depths: 8, 10, 12
|
|
182
|
-
if (bitDepth !== 8 && bitDepth !== 10 && bitDepth !== 12) {
|
|
183
|
-
return { valid: true, supported: false, error: `Unknown AV1 bit depth: ${bitDepth}` };
|
|
184
|
-
}
|
|
185
|
-
return { valid: true, supported: true };
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Check if a codec config is valid (should throw TypeError if invalid)
|
|
189
|
-
* This checks for missing/empty required fields
|
|
190
|
-
*/
|
|
191
|
-
export function validateVideoDecoderConfig(config) {
|
|
192
|
-
if (!config || typeof config !== 'object') {
|
|
193
|
-
throw new TypeError('config must be an object');
|
|
194
|
-
}
|
|
195
|
-
const cfg = config;
|
|
196
|
-
if (cfg.codec === undefined || cfg.codec === null) {
|
|
197
|
-
throw new TypeError('codec is required');
|
|
198
|
-
}
|
|
199
|
-
if (typeof cfg.codec !== 'string' || cfg.codec === '') {
|
|
200
|
-
throw new TypeError('codec must be a non-empty string');
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Check if an encoder config is valid (should throw TypeError if invalid)
|
|
4
|
+
* @deprecated Import from '../codecs/validation' instead for new code.
|
|
5
|
+
* This file re-exports from the new modular structure for backward compatibility.
|
|
205
6
|
*/
|
|
206
|
-
export
|
|
207
|
-
|
|
208
|
-
throw new TypeError('config must be an object');
|
|
209
|
-
}
|
|
210
|
-
const cfg = config;
|
|
211
|
-
if (cfg.codec === undefined || cfg.codec === null) {
|
|
212
|
-
throw new TypeError('codec is required');
|
|
213
|
-
}
|
|
214
|
-
if (typeof cfg.codec !== 'string' || cfg.codec === '') {
|
|
215
|
-
throw new TypeError('codec must be a non-empty string');
|
|
216
|
-
}
|
|
217
|
-
if (cfg.width === undefined || cfg.width === null) {
|
|
218
|
-
throw new TypeError('width is required');
|
|
219
|
-
}
|
|
220
|
-
if (typeof cfg.width !== 'number' || cfg.width <= 0 || !Number.isFinite(cfg.width)) {
|
|
221
|
-
throw new TypeError('width must be a positive number');
|
|
222
|
-
}
|
|
223
|
-
if (cfg.height === undefined || cfg.height === null) {
|
|
224
|
-
throw new TypeError('height is required');
|
|
225
|
-
}
|
|
226
|
-
if (typeof cfg.height !== 'number' || cfg.height <= 0 || !Number.isFinite(cfg.height)) {
|
|
227
|
-
throw new TypeError('height must be a positive number');
|
|
228
|
-
}
|
|
229
|
-
// Optional field validations
|
|
230
|
-
if (cfg.displayWidth !== undefined && (typeof cfg.displayWidth !== 'number' || cfg.displayWidth <= 0)) {
|
|
231
|
-
throw new TypeError('displayWidth must be a positive number');
|
|
232
|
-
}
|
|
233
|
-
if (cfg.displayHeight !== undefined && (typeof cfg.displayHeight !== 'number' || cfg.displayHeight <= 0)) {
|
|
234
|
-
throw new TypeError('displayHeight must be a positive number');
|
|
235
|
-
}
|
|
236
|
-
if (cfg.bitrate !== undefined && (typeof cfg.bitrate !== 'number' || cfg.bitrate <= 0)) {
|
|
237
|
-
throw new TypeError('bitrate must be a positive number');
|
|
238
|
-
}
|
|
239
|
-
if (cfg.framerate !== undefined && (typeof cfg.framerate !== 'number' || cfg.framerate <= 0)) {
|
|
240
|
-
throw new TypeError('framerate must be a positive number');
|
|
241
|
-
}
|
|
242
|
-
}
|
|
7
|
+
// Re-export everything from the new modular structure
|
|
8
|
+
export * from '../codecs/validation/index.js';
|
|
243
9
|
//# sourceMappingURL=codec-validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec-validation.js","sourceRoot":"","sources":["../../src/utils/codec-validation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"codec-validation.js","sourceRoot":"","sources":["../../src/utils/codec-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sDAAsD;AACtD,cAAc,+BAA+B,CAAC"}
|
package/dist/utils/hevc.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export interface HvccConfig {
|
|
|
14
14
|
export declare function parseHvccDecoderConfig(data: Uint8Array): HvccConfig;
|
|
15
15
|
/**
|
|
16
16
|
* Convert HVCC (length-prefixed) samples to Annex B and optionally add VPS/SPS/PPS.
|
|
17
|
+
*
|
|
18
|
+
* Optimized to pre-calculate total size and use single buffer allocation.
|
|
17
19
|
*/
|
|
18
20
|
export declare function convertHvccToAnnexB(chunk: Uint8Array, config: HvccConfig, includeParameterSets: boolean): Buffer;
|
|
19
21
|
export declare function splitHevcAnnexBNals(data: Uint8Array): Uint8Array[];
|
package/dist/utils/hevc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hevc.d.ts","sourceRoot":"","sources":["../../src/utils/hevc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,UAAU,EAAE,CAAC;IAClB,GAAG,EAAE,UAAU,EAAE,CAAC;IAClB,GAAG,EAAE,UAAU,EAAE,CAAC;CACnB;AAID;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAsDnE;AAED
|
|
1
|
+
{"version":3,"file":"hevc.d.ts","sourceRoot":"","sources":["../../src/utils/hevc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,UAAU,EAAE,CAAC;IAClB,GAAG,EAAE,UAAU,EAAE,CAAC;IAClB,GAAG,EAAE,UAAU,EAAE,CAAC;CACnB;AAID;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAsDnE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,EAClB,oBAAoB,EAAE,OAAO,GAC5B,MAAM,CAwER;AAmBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,CA0BlE;AAED,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,UAAU,GACf;IAAE,GAAG,EAAE,UAAU,EAAE,CAAC;IAAC,GAAG,EAAE,UAAU,EAAE,CAAC;IAAC,GAAG,EAAE,UAAU,EAAE,CAAA;CAAE,CAwB7D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,GAAE,MAAU,GAAG,MAAM,CAqBpF;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,EAAE,UAAU,EAAE,EACrB,UAAU,GAAE,MAAU,GACrB,UAAU,CAqEZ"}
|
package/dist/utils/hevc.js
CHANGED
|
@@ -54,20 +54,25 @@ export function parseHvccDecoderConfig(data) {
|
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* Convert HVCC (length-prefixed) samples to Annex B and optionally add VPS/SPS/PPS.
|
|
57
|
+
*
|
|
58
|
+
* Optimized to pre-calculate total size and use single buffer allocation.
|
|
57
59
|
*/
|
|
58
60
|
export function convertHvccToAnnexB(chunk, config, includeParameterSets) {
|
|
59
|
-
|
|
61
|
+
// First pass: calculate total size needed
|
|
62
|
+
let totalSize = 0;
|
|
60
63
|
if (includeParameterSets) {
|
|
61
64
|
for (const nal of config.vps) {
|
|
62
|
-
|
|
65
|
+
totalSize += 4 + nal.length; // START_CODE (4 bytes) + NAL data
|
|
63
66
|
}
|
|
64
67
|
for (const nal of config.sps) {
|
|
65
|
-
|
|
68
|
+
totalSize += 4 + nal.length;
|
|
66
69
|
}
|
|
67
70
|
for (const nal of config.pps) {
|
|
68
|
-
|
|
71
|
+
totalSize += 4 + nal.length;
|
|
69
72
|
}
|
|
70
73
|
}
|
|
74
|
+
// Collect NAL unit offsets and sizes for the chunk
|
|
75
|
+
const nalUnits = [];
|
|
71
76
|
let offset = 0;
|
|
72
77
|
while (offset + config.lengthSize <= chunk.length) {
|
|
73
78
|
let nalSize = 0;
|
|
@@ -78,14 +83,43 @@ export function convertHvccToAnnexB(chunk, config, includeParameterSets) {
|
|
|
78
83
|
if (nalSize <= 0 || offset + nalSize > chunk.length) {
|
|
79
84
|
break;
|
|
80
85
|
}
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
nalUnits.push({ offset, size: nalSize });
|
|
87
|
+
totalSize += 4 + nalSize; // START_CODE + NAL data
|
|
83
88
|
offset += nalSize;
|
|
84
89
|
}
|
|
85
|
-
if (
|
|
90
|
+
if (totalSize === 0) {
|
|
86
91
|
return Buffer.from(chunk);
|
|
87
92
|
}
|
|
88
|
-
|
|
93
|
+
// Second pass: allocate single buffer and copy data
|
|
94
|
+
const result = Buffer.allocUnsafe(totalSize);
|
|
95
|
+
let writeOffset = 0;
|
|
96
|
+
if (includeParameterSets) {
|
|
97
|
+
for (const nal of config.vps) {
|
|
98
|
+
result.set(START_CODE, writeOffset);
|
|
99
|
+
writeOffset += 4;
|
|
100
|
+
result.set(nal, writeOffset);
|
|
101
|
+
writeOffset += nal.length;
|
|
102
|
+
}
|
|
103
|
+
for (const nal of config.sps) {
|
|
104
|
+
result.set(START_CODE, writeOffset);
|
|
105
|
+
writeOffset += 4;
|
|
106
|
+
result.set(nal, writeOffset);
|
|
107
|
+
writeOffset += nal.length;
|
|
108
|
+
}
|
|
109
|
+
for (const nal of config.pps) {
|
|
110
|
+
result.set(START_CODE, writeOffset);
|
|
111
|
+
writeOffset += 4;
|
|
112
|
+
result.set(nal, writeOffset);
|
|
113
|
+
writeOffset += nal.length;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
for (const unit of nalUnits) {
|
|
117
|
+
result.set(START_CODE, writeOffset);
|
|
118
|
+
writeOffset += 4;
|
|
119
|
+
result.set(chunk.subarray(unit.offset, unit.offset + unit.size), writeOffset);
|
|
120
|
+
writeOffset += unit.size;
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
89
123
|
}
|
|
90
124
|
function getStartCodeLength(data, offset) {
|
|
91
125
|
if (offset + 3 > data.length) {
|
package/dist/utils/hevc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hevc.js","sourceRoot":"","sources":["../../src/utils/hevc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hevc.js","sourceRoot":"","sources":["../../src/utils/hevc.ts"],"names":[],"mappings":"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"}
|
package/docs/api.md
CHANGED
|
@@ -57,15 +57,19 @@ Configure the encoder. Must be called before encoding.
|
|
|
57
57
|
**VideoEncoderConfig:**
|
|
58
58
|
| Property | Type | Required | Description |
|
|
59
59
|
|----------|------|----------|-------------|
|
|
60
|
-
| `codec` | string | Yes | Codec string (e.g., 'avc1.42001E', 'vp9') |
|
|
60
|
+
| `codec` | string | Yes | Codec string (e.g., 'avc1.42001E', 'vp9', 'av1') |
|
|
61
61
|
| `width` | number | Yes | Frame width in pixels |
|
|
62
62
|
| `height` | number | Yes | Frame height in pixels |
|
|
63
|
+
| `displayWidth` | number | No | Display width (for non-square pixels) |
|
|
64
|
+
| `displayHeight` | number | No | Display height (for non-square pixels) |
|
|
63
65
|
| `bitrate` | number | No | Target bitrate in bits/second |
|
|
64
66
|
| `framerate` | number | No | Target framerate |
|
|
65
67
|
| `bitrateMode` | 'constant' \| 'variable' \| 'quantizer' | No | Bitrate control mode |
|
|
66
68
|
| `alpha` | 'discard' \| 'keep' | No | Alpha channel handling |
|
|
67
69
|
| `latencyMode` | 'quality' \| 'realtime' | No | Latency vs quality tradeoff |
|
|
68
70
|
| `hardwareAcceleration` | 'no-preference' \| 'prefer-hardware' \| 'prefer-software' | No | Hardware acceleration preference |
|
|
71
|
+
| `scalabilityMode` | string | No | SVC scalability mode (e.g., 'L1T2') |
|
|
72
|
+
| `format` | 'mp4' \| 'annexb' | No | Output format: 'mp4' (default) for length-prefixed, 'annexb' for raw bitstreams |
|
|
69
73
|
| `maxQueueSize` | number | No | Max pending frames before QuotaExceededError. Auto-calculated from resolution if not set (~300MB target memory). |
|
|
70
74
|
|
|
71
75
|
#### `encode(frame: VideoFrame, options?: VideoEncoderEncodeOptions): void`
|
|
@@ -124,7 +128,13 @@ Check if a configuration is supported.
|
|
|
124
128
|
| `codec` | string | Yes | Codec string |
|
|
125
129
|
| `codedWidth` | number | No | Coded frame width |
|
|
126
130
|
| `codedHeight` | number | No | Coded frame height |
|
|
131
|
+
| `displayAspectWidth` | number | No | Display aspect ratio width |
|
|
132
|
+
| `displayAspectHeight` | number | No | Display aspect ratio height |
|
|
127
133
|
| `description` | BufferSource | No | Codec-specific data (e.g., SPS/PPS for H.264) |
|
|
134
|
+
| `colorSpace` | VideoColorSpaceInit | No | Color space configuration |
|
|
135
|
+
| `hardwareAcceleration` | 'no-preference' \| 'prefer-hardware' \| 'prefer-software' | No | Hardware acceleration preference |
|
|
136
|
+
| `optimizeForLatency` | boolean | No | Optimize for low latency decoding |
|
|
137
|
+
| `outputFormat` | VideoPixelFormat | No | Preferred output pixel format |
|
|
128
138
|
| `maxQueueSize` | number | No | Max pending chunks before QuotaExceededError. Auto-calculated from resolution if dimensions provided (~300MB target memory). |
|
|
129
139
|
|
|
130
140
|
#### `decode(chunk: EncodedVideoChunk): void`
|
|
@@ -174,7 +184,10 @@ new AudioEncoder(init: AudioEncoderInit)
|
|
|
174
184
|
| `codec` | string | Yes | Codec string (e.g., 'opus', 'mp4a.40.2') |
|
|
175
185
|
| `sampleRate` | number | Yes | Sample rate in Hz |
|
|
176
186
|
| `numberOfChannels` | number | Yes | Number of audio channels |
|
|
177
|
-
| `bitrate` | number | No | Target bitrate |
|
|
187
|
+
| `bitrate` | number | No | Target bitrate in bits/second |
|
|
188
|
+
| `bitrateMode` | 'constant' \| 'variable' | No | Bitrate control mode |
|
|
189
|
+
| `latencyMode` | 'quality' \| 'realtime' | No | Latency vs quality tradeoff |
|
|
190
|
+
| `format` | 'adts' \| 'aac' | No | Output format: 'adts' (default) for ADTS headers, 'aac' for raw AAC frames |
|
|
178
191
|
|
|
179
192
|
#### `encode(data: AudioData): void`
|
|
180
193
|
|
|
@@ -209,6 +222,7 @@ new AudioDecoder(init: AudioDecoderInit)
|
|
|
209
222
|
| `sampleRate` | number | Yes | Sample rate in Hz |
|
|
210
223
|
| `numberOfChannels` | number | Yes | Number of channels |
|
|
211
224
|
| `description` | BufferSource | No | Codec-specific data |
|
|
225
|
+
| `outputFormat` | AudioSampleFormat | No | Preferred output sample format (default: 'f32') |
|
|
212
226
|
|
|
213
227
|
#### `decode(chunk: EncodedAudioChunk): void`
|
|
214
228
|
|
|
@@ -386,16 +400,22 @@ new VideoFrame(data: BufferSource, init: VideoFrameBufferInit)
|
|
|
386
400
|
|
|
387
401
|
*10-bit formats (HDR):*
|
|
388
402
|
- `'I420P10'` - YUV 4:2:0 planar, 10-bit (16-bit container)
|
|
389
|
-
- `'I422P10'` - YUV 4:2:2 planar, 10-bit (16-bit container)
|
|
390
|
-
- `'I444P10'` - YUV 4:4:4 planar, 10-bit (16-bit container)
|
|
403
|
+
- `'I422P10'` - YUV 4:2:2 planar, 10-bit (16-bit container) - downconverted to 4:2:0 during encoding
|
|
404
|
+
- `'I444P10'` - YUV 4:4:4 planar, 10-bit (16-bit container) - downconverted to 4:2:0 during encoding
|
|
391
405
|
- `'P010'` - YUV 4:2:0 semi-planar, 10-bit (16-bit container)
|
|
392
406
|
|
|
407
|
+
> **Note:** 10-bit encoding requires HEVC, VP9, or AV1 codec. H.264 will downconvert to 8-bit. I422P10/I444P10 are decoded correctly but downconverted to I420P10 during encoding.
|
|
408
|
+
|
|
393
409
|
### Instance Methods
|
|
394
410
|
|
|
395
411
|
#### `allocationSize(options?: VideoFrameCopyToOptions): number`
|
|
396
412
|
|
|
397
413
|
Get buffer size needed for copyTo.
|
|
398
414
|
|
|
415
|
+
#### `metadata(): VideoFrameMetadata`
|
|
416
|
+
|
|
417
|
+
Returns metadata associated with this VideoFrame. Currently returns an empty object as metadata fields (like `rtpTimestamp` for WebRTC) will be added as needed per W3C spec.
|
|
418
|
+
|
|
399
419
|
#### `copyTo(destination: BufferSource, options?: VideoFrameCopyToOptions): Promise<PlaneLayout[]>`
|
|
400
420
|
|
|
401
421
|
Copy frame data to a buffer.
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Architecture Refactor Plan (No Behavior Changes)
|
|
2
|
+
|
|
3
|
+
This document proposes a structural refactor to make the project more human-manageable by reducing large files and creating self-contained modules. It does **not** change runtime behavior; it only reorganizes code and responsibilities.
|
|
4
|
+
|
|
5
|
+
## Goals
|
|
6
|
+
- Reduce large multi-responsibility files into focused modules.
|
|
7
|
+
- Make each module easy to read, test, and modify in isolation.
|
|
8
|
+
- Keep public API surface and exports stable.
|
|
9
|
+
- Enable incremental migration without breaking tests.
|
|
10
|
+
|
|
11
|
+
## Target Layout (Proposed)
|
|
12
|
+
```
|
|
13
|
+
src/
|
|
14
|
+
api/
|
|
15
|
+
index.ts
|
|
16
|
+
core/
|
|
17
|
+
audio-data/
|
|
18
|
+
AudioData.ts
|
|
19
|
+
index.ts
|
|
20
|
+
encoded-chunk/
|
|
21
|
+
EncodedAudioChunk.ts
|
|
22
|
+
EncodedVideoChunk.ts
|
|
23
|
+
index.ts
|
|
24
|
+
video-frame/
|
|
25
|
+
VideoFrame.ts
|
|
26
|
+
canvas-source.ts
|
|
27
|
+
copy.ts
|
|
28
|
+
layout.ts
|
|
29
|
+
metadata.ts
|
|
30
|
+
orientation.ts
|
|
31
|
+
transfer.ts
|
|
32
|
+
validation.ts
|
|
33
|
+
index.ts
|
|
34
|
+
decoders/
|
|
35
|
+
audio/
|
|
36
|
+
AudioDecoder.ts
|
|
37
|
+
config.ts
|
|
38
|
+
output.ts
|
|
39
|
+
queue.ts
|
|
40
|
+
index.ts
|
|
41
|
+
video/
|
|
42
|
+
VideoDecoder.ts
|
|
43
|
+
codec-specific.ts
|
|
44
|
+
config.ts
|
|
45
|
+
output.ts
|
|
46
|
+
queue.ts
|
|
47
|
+
timestamps.ts
|
|
48
|
+
index.ts
|
|
49
|
+
image/
|
|
50
|
+
ImageDecoder.ts
|
|
51
|
+
orientation.ts
|
|
52
|
+
stream.ts
|
|
53
|
+
tracks.ts
|
|
54
|
+
index.ts
|
|
55
|
+
encoders/
|
|
56
|
+
audio/
|
|
57
|
+
AudioEncoder.ts
|
|
58
|
+
config.ts
|
|
59
|
+
output.ts
|
|
60
|
+
queue.ts
|
|
61
|
+
index.ts
|
|
62
|
+
video/
|
|
63
|
+
VideoEncoder.ts
|
|
64
|
+
config.ts
|
|
65
|
+
metadata.ts
|
|
66
|
+
orientation.ts
|
|
67
|
+
queue.ts
|
|
68
|
+
timestamps.ts
|
|
69
|
+
index.ts
|
|
70
|
+
backends/
|
|
71
|
+
node-av/
|
|
72
|
+
audio/
|
|
73
|
+
decoder.ts
|
|
74
|
+
encoder.ts
|
|
75
|
+
video/
|
|
76
|
+
decoder.ts
|
|
77
|
+
encoder.ts
|
|
78
|
+
filters.ts
|
|
79
|
+
mappings.ts
|
|
80
|
+
timestamps.ts
|
|
81
|
+
image/
|
|
82
|
+
decoder.ts
|
|
83
|
+
index.ts
|
|
84
|
+
formats/
|
|
85
|
+
pixel-format/
|
|
86
|
+
helpers.ts
|
|
87
|
+
layout.ts
|
|
88
|
+
sizes.ts
|
|
89
|
+
types.ts
|
|
90
|
+
index.ts
|
|
91
|
+
color-space/
|
|
92
|
+
convert.ts
|
|
93
|
+
extract.ts
|
|
94
|
+
maps.ts
|
|
95
|
+
types.ts
|
|
96
|
+
index.ts
|
|
97
|
+
conversions/
|
|
98
|
+
frame-converter.ts
|
|
99
|
+
codecs/
|
|
100
|
+
avc.ts
|
|
101
|
+
hevc.ts
|
|
102
|
+
aac.ts
|
|
103
|
+
transfer/
|
|
104
|
+
detach.ts
|
|
105
|
+
validate.ts
|
|
106
|
+
index.ts
|
|
107
|
+
validation/
|
|
108
|
+
audio-decoder.ts
|
|
109
|
+
audio-encoder.ts
|
|
110
|
+
video-decoder.ts
|
|
111
|
+
video-encoder.ts
|
|
112
|
+
index.ts
|
|
113
|
+
utils/
|
|
114
|
+
buffer.ts
|
|
115
|
+
buffer-pool.ts
|
|
116
|
+
errors.ts
|
|
117
|
+
event-target.ts
|
|
118
|
+
logger.ts
|
|
119
|
+
timeout.ts
|
|
120
|
+
type-guards.ts
|
|
121
|
+
index.ts
|
|
122
|
+
types/
|
|
123
|
+
index.ts
|
|
124
|
+
index.ts
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Mapping Highlights (Move / Split)
|
|
128
|
+
- `src/core/VideoFrame.ts` → `src/core/video-frame/VideoFrame.ts` + `validation.ts` + `layout.ts` + `copy.ts` + `orientation.ts` + `transfer.ts` + `canvas-source.ts`.
|
|
129
|
+
- `src/decoders/ImageDecoder.ts` → `src/decoders/image/ImageDecoder.ts` + `tracks.ts` + `stream.ts` + `orientation.ts`.
|
|
130
|
+
- `src/decoders/VideoDecoder.ts` → `src/decoders/video/VideoDecoder.ts` + `config.ts` + `codec-specific.ts` + `queue.ts` + `output.ts`.
|
|
131
|
+
- `src/encoders/VideoEncoder.ts` → `src/encoders/video/VideoEncoder.ts` + `config.ts` + `metadata.ts` + `queue.ts`.
|
|
132
|
+
- `src/node-av/NodeAvVideoDecoder.ts` → `src/backends/node-av/video/decoder.ts` + `filters.ts` + `mappings.ts` + `timestamps.ts`.
|
|
133
|
+
- `src/formats/color-space.ts` → `src/formats/color-space/{maps,extract,convert}.ts`.
|
|
134
|
+
- `src/formats/pixel-formats.ts` → `src/formats/pixel-format/{types,sizes,layout,helpers}.ts`.
|
|
135
|
+
- `src/codec-utils/*` + `src/utils/{avc,hevc,aac}.ts` → `src/codecs/` and `src/backends/node-av/*/mappings.ts`.
|
|
136
|
+
|
|
137
|
+
## Migration Checklist (Incremental, No Behavior Change)
|
|
138
|
+
1) Create new folders and `index.ts` barrels that re-export existing symbols.
|
|
139
|
+
2) Extract pure helpers first (validation, layout, mapping, transfer), leaving public classes untouched.
|
|
140
|
+
3) Move backend-specific logic into `src/backends/node-av/`, keeping thin adapters in old paths.
|
|
141
|
+
4) Convert large classes into orchestrators that delegate to the new modules.
|
|
142
|
+
5) Update internal imports incrementally; keep public exports stable from `src/index.ts`.
|
|
143
|
+
6) Add `docs/architecture.md` with module boundaries and ownership rules.
|
|
144
|
+
7) Enforce file size/complexity thresholds in lint/CI to prevent future bloat.
|
|
145
|
+
|
|
146
|
+
## Optional Guardrails
|
|
147
|
+
- Add a maximum file size or function length lint rule for `core/`, `decoders/`, `encoders/`, and `node-av/`.
|
|
148
|
+
- Require new helper functions to live outside public classes unless they are public API.
|
|
149
|
+
- Prefer one responsibility per module (validation, mapping, conversion, orchestration).
|