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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../../src/codecs/validation/audio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decoder/Encoder configuration validation
|
|
3
|
+
*
|
|
4
|
+
* These functions validate config objects for TypeError conditions
|
|
5
|
+
* (missing/invalid required fields) before checking codec support.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Check if a video decoder config is valid (throws TypeError if invalid)
|
|
9
|
+
* This checks for missing/empty required fields
|
|
10
|
+
*/
|
|
11
|
+
export declare function validateVideoDecoderConfig(config: unknown): void;
|
|
12
|
+
/**
|
|
13
|
+
* Check if a video encoder config is valid (throws TypeError if invalid)
|
|
14
|
+
*
|
|
15
|
+
* This is the single source of truth for VideoEncoderConfig validation.
|
|
16
|
+
* Both isConfigSupported() and configure() use this function.
|
|
17
|
+
*/
|
|
18
|
+
export declare function validateVideoEncoderConfig(config: unknown): void;
|
|
19
|
+
/**
|
|
20
|
+
* Check if an audio decoder config is valid (throws TypeError if invalid)
|
|
21
|
+
*/
|
|
22
|
+
export declare function validateAudioDecoderConfig(config: unknown): void;
|
|
23
|
+
/**
|
|
24
|
+
* Check if an audio encoder config is valid (throws TypeError if invalid)
|
|
25
|
+
*/
|
|
26
|
+
export declare function validateAudioEncoderConfig(config: unknown): void;
|
|
27
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/codecs/validation/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA0ChE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAkDhE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA8BhE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAmChE"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decoder/Encoder configuration validation
|
|
3
|
+
*
|
|
4
|
+
* These functions validate config objects for TypeError conditions
|
|
5
|
+
* (missing/invalid required fields) before checking codec support.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Check if a video decoder config is valid (throws TypeError if invalid)
|
|
9
|
+
* This checks for missing/empty required fields
|
|
10
|
+
*/
|
|
11
|
+
export function validateVideoDecoderConfig(config) {
|
|
12
|
+
if (!config || typeof config !== 'object') {
|
|
13
|
+
throw new TypeError('config must be an object');
|
|
14
|
+
}
|
|
15
|
+
const cfg = config;
|
|
16
|
+
if (cfg.codec === undefined || cfg.codec === null) {
|
|
17
|
+
throw new TypeError('codec is required');
|
|
18
|
+
}
|
|
19
|
+
if (typeof cfg.codec !== 'string' || cfg.codec === '') {
|
|
20
|
+
throw new TypeError('codec must be a non-empty string');
|
|
21
|
+
}
|
|
22
|
+
// Validate codedWidth if provided
|
|
23
|
+
if (cfg.codedWidth !== undefined) {
|
|
24
|
+
if (typeof cfg.codedWidth !== 'number' || !Number.isFinite(cfg.codedWidth) || cfg.codedWidth <= 0 || !Number.isInteger(cfg.codedWidth)) {
|
|
25
|
+
throw new TypeError('codedWidth must be a positive integer');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Validate codedHeight if provided
|
|
29
|
+
if (cfg.codedHeight !== undefined) {
|
|
30
|
+
if (typeof cfg.codedHeight !== 'number' || !Number.isFinite(cfg.codedHeight) || cfg.codedHeight <= 0 || !Number.isInteger(cfg.codedHeight)) {
|
|
31
|
+
throw new TypeError('codedHeight must be a positive integer');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Validate displayAspectWidth if provided
|
|
35
|
+
if (cfg.displayAspectWidth !== undefined) {
|
|
36
|
+
if (typeof cfg.displayAspectWidth !== 'number' || !Number.isFinite(cfg.displayAspectWidth) || cfg.displayAspectWidth <= 0 || !Number.isInteger(cfg.displayAspectWidth)) {
|
|
37
|
+
throw new TypeError('displayAspectWidth must be a positive integer');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Validate displayAspectHeight if provided
|
|
41
|
+
if (cfg.displayAspectHeight !== undefined) {
|
|
42
|
+
if (typeof cfg.displayAspectHeight !== 'number' || !Number.isFinite(cfg.displayAspectHeight) || cfg.displayAspectHeight <= 0 || !Number.isInteger(cfg.displayAspectHeight)) {
|
|
43
|
+
throw new TypeError('displayAspectHeight must be a positive integer');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Check if a video encoder config is valid (throws TypeError if invalid)
|
|
49
|
+
*
|
|
50
|
+
* This is the single source of truth for VideoEncoderConfig validation.
|
|
51
|
+
* Both isConfigSupported() and configure() use this function.
|
|
52
|
+
*/
|
|
53
|
+
export function validateVideoEncoderConfig(config) {
|
|
54
|
+
if (!config || typeof config !== 'object') {
|
|
55
|
+
throw new TypeError('config must be an object');
|
|
56
|
+
}
|
|
57
|
+
const cfg = config;
|
|
58
|
+
// Required: codec (non-empty string)
|
|
59
|
+
if (cfg.codec === undefined || cfg.codec === null) {
|
|
60
|
+
throw new TypeError('codec is required');
|
|
61
|
+
}
|
|
62
|
+
if (typeof cfg.codec !== 'string' || cfg.codec === '') {
|
|
63
|
+
throw new TypeError('codec must be a non-empty string');
|
|
64
|
+
}
|
|
65
|
+
// Required: width (positive integer per WebCodecs spec)
|
|
66
|
+
if (cfg.width === undefined || cfg.width === null) {
|
|
67
|
+
throw new TypeError('width is required');
|
|
68
|
+
}
|
|
69
|
+
if (typeof cfg.width !== 'number' || cfg.width <= 0 || !Number.isInteger(cfg.width)) {
|
|
70
|
+
throw new TypeError('width must be a positive integer');
|
|
71
|
+
}
|
|
72
|
+
// Required: height (positive integer per WebCodecs spec)
|
|
73
|
+
if (cfg.height === undefined || cfg.height === null) {
|
|
74
|
+
throw new TypeError('height is required');
|
|
75
|
+
}
|
|
76
|
+
if (typeof cfg.height !== 'number' || cfg.height <= 0 || !Number.isInteger(cfg.height)) {
|
|
77
|
+
throw new TypeError('height must be a positive integer');
|
|
78
|
+
}
|
|
79
|
+
// Optional: displayWidth (positive number)
|
|
80
|
+
if (cfg.displayWidth !== undefined && (typeof cfg.displayWidth !== 'number' || cfg.displayWidth <= 0)) {
|
|
81
|
+
throw new TypeError('displayWidth must be a positive number');
|
|
82
|
+
}
|
|
83
|
+
// Optional: displayHeight (positive number)
|
|
84
|
+
if (cfg.displayHeight !== undefined && (typeof cfg.displayHeight !== 'number' || cfg.displayHeight <= 0)) {
|
|
85
|
+
throw new TypeError('displayHeight must be a positive number');
|
|
86
|
+
}
|
|
87
|
+
// Optional: bitrate (positive number)
|
|
88
|
+
if (cfg.bitrate !== undefined && (typeof cfg.bitrate !== 'number' || cfg.bitrate <= 0)) {
|
|
89
|
+
throw new TypeError('bitrate must be a positive number');
|
|
90
|
+
}
|
|
91
|
+
// Optional: framerate (positive number)
|
|
92
|
+
if (cfg.framerate !== undefined && (typeof cfg.framerate !== 'number' || cfg.framerate <= 0)) {
|
|
93
|
+
throw new TypeError('framerate must be a positive number');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Check if an audio decoder config is valid (throws TypeError if invalid)
|
|
98
|
+
*/
|
|
99
|
+
export function validateAudioDecoderConfig(config) {
|
|
100
|
+
if (!config || typeof config !== 'object') {
|
|
101
|
+
throw new TypeError('config must be an object');
|
|
102
|
+
}
|
|
103
|
+
const cfg = config;
|
|
104
|
+
if (cfg.codec === undefined || cfg.codec === null) {
|
|
105
|
+
throw new TypeError('codec is required');
|
|
106
|
+
}
|
|
107
|
+
if (typeof cfg.codec !== 'string' || cfg.codec === '') {
|
|
108
|
+
throw new TypeError('codec must be a non-empty string');
|
|
109
|
+
}
|
|
110
|
+
if (cfg.sampleRate === undefined || cfg.sampleRate === null) {
|
|
111
|
+
throw new TypeError('sampleRate is required');
|
|
112
|
+
}
|
|
113
|
+
if (typeof cfg.sampleRate !== 'number' || cfg.sampleRate <= 0 || !Number.isFinite(cfg.sampleRate)) {
|
|
114
|
+
throw new TypeError('sampleRate must be a positive number');
|
|
115
|
+
}
|
|
116
|
+
if (cfg.numberOfChannels === undefined || cfg.numberOfChannels === null) {
|
|
117
|
+
throw new TypeError('numberOfChannels is required');
|
|
118
|
+
}
|
|
119
|
+
if (typeof cfg.numberOfChannels !== 'number' || cfg.numberOfChannels <= 0 || !Number.isInteger(cfg.numberOfChannels)) {
|
|
120
|
+
throw new TypeError('numberOfChannels must be a positive integer');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Check if an audio encoder config is valid (throws TypeError if invalid)
|
|
125
|
+
*/
|
|
126
|
+
export function validateAudioEncoderConfig(config) {
|
|
127
|
+
if (!config || typeof config !== 'object') {
|
|
128
|
+
throw new TypeError('config must be an object');
|
|
129
|
+
}
|
|
130
|
+
const cfg = config;
|
|
131
|
+
if (cfg.codec === undefined || cfg.codec === null) {
|
|
132
|
+
throw new TypeError('codec is required');
|
|
133
|
+
}
|
|
134
|
+
if (typeof cfg.codec !== 'string' || cfg.codec === '') {
|
|
135
|
+
throw new TypeError('codec must be a non-empty string');
|
|
136
|
+
}
|
|
137
|
+
if (cfg.sampleRate === undefined || cfg.sampleRate === null) {
|
|
138
|
+
throw new TypeError('sampleRate is required');
|
|
139
|
+
}
|
|
140
|
+
if (typeof cfg.sampleRate !== 'number' || cfg.sampleRate <= 0 || !Number.isFinite(cfg.sampleRate)) {
|
|
141
|
+
throw new TypeError('sampleRate must be a positive number');
|
|
142
|
+
}
|
|
143
|
+
if (cfg.numberOfChannels === undefined || cfg.numberOfChannels === null) {
|
|
144
|
+
throw new TypeError('numberOfChannels is required');
|
|
145
|
+
}
|
|
146
|
+
if (typeof cfg.numberOfChannels !== 'number' || cfg.numberOfChannels <= 0 || !Number.isInteger(cfg.numberOfChannels)) {
|
|
147
|
+
throw new TypeError('numberOfChannels must be a positive integer');
|
|
148
|
+
}
|
|
149
|
+
// Optional field validations
|
|
150
|
+
if (cfg.bitrate !== undefined && (typeof cfg.bitrate !== 'number' || cfg.bitrate <= 0)) {
|
|
151
|
+
throw new TypeError('bitrate must be a positive number');
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/codecs/validation/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codec validation module
|
|
3
|
+
*
|
|
4
|
+
* Provides WebCodecs-compliant validation for codec strings and configurations.
|
|
5
|
+
*/
|
|
6
|
+
export { validateVideoCodec, type CodecValidationResult, } from './video.js';
|
|
7
|
+
export { validateAudioCodec, type AudioCodecValidationResult, } from './audio.js';
|
|
8
|
+
export { validateVideoDecoderConfig, validateVideoEncoderConfig, validateAudioDecoderConfig, validateAudioEncoderConfig, } from './config.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/codecs/validation/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,kBAAkB,EAClB,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,KAAK,0BAA0B,GAChC,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codec validation module
|
|
3
|
+
*
|
|
4
|
+
* Provides WebCodecs-compliant validation for codec strings and configurations.
|
|
5
|
+
*/
|
|
6
|
+
// Video codec validation
|
|
7
|
+
export { validateVideoCodec, } from './video.js';
|
|
8
|
+
// Audio codec validation
|
|
9
|
+
export { validateAudioCodec, } from './audio.js';
|
|
10
|
+
// Config validation
|
|
11
|
+
export { validateVideoDecoderConfig, validateVideoEncoderConfig, validateAudioDecoderConfig, validateAudioEncoderConfig, } from './config.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codecs/validation/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yBAAyB;AACzB,OAAO,EACL,kBAAkB,GAEnB,MAAM,YAAY,CAAC;AAEpB,yBAAyB;AACzB,OAAO,EACL,kBAAkB,GAEnB,MAAM,YAAY,CAAC;AAEpB,oBAAoB;AACpB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Video codec string validation according to WebCodecs specification
|
|
3
|
+
*
|
|
4
|
+
* The WebCodecs spec requires strict validation of codec strings:
|
|
5
|
+
* - Case-sensitive matching
|
|
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
|
+
export interface CodecValidationResult {
|
|
12
|
+
valid: boolean;
|
|
13
|
+
supported: boolean;
|
|
14
|
+
error?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Validate a video codec string according to WebCodecs spec
|
|
18
|
+
*
|
|
19
|
+
* Returns { valid: true, supported: true } for valid, supported codecs
|
|
20
|
+
* Returns { valid: true, supported: false } for valid but unsupported codecs
|
|
21
|
+
* Returns { valid: false, supported: false } for invalid codec strings
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateVideoCodec(codec: string): CodecValidationResult;
|
|
24
|
+
//# sourceMappingURL=video.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../src/codecs/validation/video.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAiEvE"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Video codec string validation according to WebCodecs specification
|
|
3
|
+
*
|
|
4
|
+
* The WebCodecs spec requires strict validation of codec strings:
|
|
5
|
+
* - Case-sensitive matching
|
|
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: fully qualified vp09.PP.LL.DD or shorthand "vp9"
|
|
44
|
+
if (codec.startsWith('vp09.')) {
|
|
45
|
+
return validateVp9Codec(codec);
|
|
46
|
+
}
|
|
47
|
+
// Accept shorthand "vp9" as alias for vp09.00.10.08 (profile 0, level 1.0, 8-bit)
|
|
48
|
+
// This matches browser behavior for developer convenience
|
|
49
|
+
if (codec === 'vp9') {
|
|
50
|
+
return { valid: true, supported: true };
|
|
51
|
+
}
|
|
52
|
+
// VP9 with wrong casing
|
|
53
|
+
if (codec.toLowerCase() === 'vp9' && codec !== 'vp9') {
|
|
54
|
+
return { valid: true, supported: false, error: 'VP9 codec must be lowercase "vp9"' };
|
|
55
|
+
}
|
|
56
|
+
// AV1: fully qualified av01.P.LLT.DD or shorthand "av1"
|
|
57
|
+
if (codec.startsWith('av01.')) {
|
|
58
|
+
return validateAv1Codec(codec);
|
|
59
|
+
}
|
|
60
|
+
// Accept shorthand "av1" as alias for av01.0.01M.08 (Main profile, level 2.1, Main tier, 8-bit)
|
|
61
|
+
// This matches browser behavior for developer convenience
|
|
62
|
+
if (codec === 'av1') {
|
|
63
|
+
return { valid: true, supported: true };
|
|
64
|
+
}
|
|
65
|
+
// AV1 with wrong casing
|
|
66
|
+
if (codec.toLowerCase() === 'av1' && codec !== 'av1') {
|
|
67
|
+
return { valid: true, supported: false, error: 'AV1 codec must be lowercase "av1"' };
|
|
68
|
+
}
|
|
69
|
+
// Unknown codec
|
|
70
|
+
return { valid: true, supported: false, error: `Unrecognized codec: ${codec}` };
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Validate AVC/H.264 codec string
|
|
74
|
+
* Format: avc1.PPCCLL or avc3.PPCCLL
|
|
75
|
+
* PP = Profile (hex), CC = Constraints (hex), LL = Level (hex)
|
|
76
|
+
*/
|
|
77
|
+
function validateAvcCodec(codec) {
|
|
78
|
+
// avc1.XXXXXX or avc3.XXXXXX (6 hex digits)
|
|
79
|
+
const match = codec.match(/^(avc[13])\.([0-9A-Fa-f]{6})$/);
|
|
80
|
+
if (!match) {
|
|
81
|
+
return { valid: true, supported: false, error: 'Invalid AVC codec format' };
|
|
82
|
+
}
|
|
83
|
+
const [, prefix, params] = match;
|
|
84
|
+
// Check case sensitivity of prefix
|
|
85
|
+
if (prefix !== prefix.toLowerCase()) {
|
|
86
|
+
return { valid: true, supported: false, error: 'AVC codec prefix must be lowercase' };
|
|
87
|
+
}
|
|
88
|
+
// Parse profile, constraints, level
|
|
89
|
+
const profile = parseInt(params.substring(0, 2), 16);
|
|
90
|
+
const level = parseInt(params.substring(4, 6), 16);
|
|
91
|
+
// Valid profiles: 66 (Baseline), 77 (Main), 88 (Extended), 100 (High), etc.
|
|
92
|
+
const validProfiles = [66, 77, 88, 100, 110, 122, 244, 44, 83, 86, 118, 128, 138, 139, 134];
|
|
93
|
+
if (!validProfiles.includes(profile)) {
|
|
94
|
+
// Future/unknown profile - mark as unsupported
|
|
95
|
+
return { valid: true, supported: false, error: `Unknown AVC profile: ${profile}` };
|
|
96
|
+
}
|
|
97
|
+
// Valid levels: 10, 11, 12, 13, 20, 21, 22, 30, 31, 32, 40, 41, 42, 50, 51, 52, 60, 61, 62
|
|
98
|
+
const validLevels = [10, 11, 12, 13, 20, 21, 22, 30, 31, 32, 40, 41, 42, 50, 51, 52, 60, 61, 62];
|
|
99
|
+
if (!validLevels.includes(level)) {
|
|
100
|
+
// Note: level 29 (0x1D) is not a valid H.264 level
|
|
101
|
+
return { valid: true, supported: false, error: `Unknown AVC level: ${level}` };
|
|
102
|
+
}
|
|
103
|
+
return { valid: true, supported: true };
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Validate HEVC/H.265 codec string
|
|
107
|
+
* Format: hvc1.P.C.Lxx[.XX] or hev1.P.C.Lxx[.XX]
|
|
108
|
+
* Where P = profile, C = compatibility, Lxx = level, XX = optional constraints
|
|
109
|
+
* Example: hev1.1.6.L93.B0
|
|
110
|
+
*/
|
|
111
|
+
function validateHevcCodec(codec) {
|
|
112
|
+
// HEVC codec format: prefix.profile.compatibility.level[.constraints]
|
|
113
|
+
// Examples: hev1.1.6.L93.B0, hvc1.1.6.L120, hev1.2.4.L153.90
|
|
114
|
+
const match = codec.match(/^(hvc1|hev1)\.(\d+)\.([0-9A-Fa-f]+)\.L(\d+)(?:\.([A-Za-z0-9]+))?$/);
|
|
115
|
+
if (!match) {
|
|
116
|
+
return { valid: true, supported: false, error: 'Invalid HEVC codec format' };
|
|
117
|
+
}
|
|
118
|
+
const [, prefix, profileStr, , levelStr] = match;
|
|
119
|
+
// Check case sensitivity of prefix
|
|
120
|
+
if (prefix !== prefix.toLowerCase()) {
|
|
121
|
+
return { valid: true, supported: false, error: 'HEVC codec prefix must be lowercase' };
|
|
122
|
+
}
|
|
123
|
+
const profile = parseInt(profileStr, 10);
|
|
124
|
+
const level = parseInt(levelStr, 10);
|
|
125
|
+
// Valid HEVC profiles: 1 (Main), 2 (Main 10), 3 (Main Still Picture), etc.
|
|
126
|
+
if (profile < 1 || profile > 11) {
|
|
127
|
+
return { valid: true, supported: false, error: `Unknown HEVC profile: ${profile}` };
|
|
128
|
+
}
|
|
129
|
+
// Valid HEVC levels (level * 30): 30, 60, 63, 90, 93, 120, 123, 150, 153, 156, 180, 183, 186
|
|
130
|
+
const validLevels = [30, 60, 63, 90, 93, 120, 123, 150, 153, 156, 180, 183, 186];
|
|
131
|
+
if (!validLevels.includes(level)) {
|
|
132
|
+
return { valid: true, supported: false, error: `Unknown HEVC level: ${level}` };
|
|
133
|
+
}
|
|
134
|
+
return { valid: true, supported: true };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Validate VP9 codec string
|
|
138
|
+
* Format: vp09.PP.LL.DD
|
|
139
|
+
* PP = Profile (00-03), LL = Level (10-62), DD = Bit depth (08, 10, 12)
|
|
140
|
+
*/
|
|
141
|
+
function validateVp9Codec(codec) {
|
|
142
|
+
const match = codec.match(/^vp09\.(\d{2})\.(\d{2})\.(\d{2})$/);
|
|
143
|
+
if (!match) {
|
|
144
|
+
return { valid: true, supported: false, error: 'Invalid VP9 codec format, expected vp09.PP.LL.DD' };
|
|
145
|
+
}
|
|
146
|
+
const [, profileStr, levelStr, bitDepthStr] = match;
|
|
147
|
+
const profile = parseInt(profileStr, 10);
|
|
148
|
+
const level = parseInt(levelStr, 10);
|
|
149
|
+
const bitDepth = parseInt(bitDepthStr, 10);
|
|
150
|
+
// Valid profiles: 0, 1, 2, 3
|
|
151
|
+
if (profile < 0 || profile > 3) {
|
|
152
|
+
return { valid: true, supported: false, error: `Unknown VP9 profile: ${profile}` };
|
|
153
|
+
}
|
|
154
|
+
// Valid levels: 10, 11, 20, 21, 30, 31, 40, 41, 50, 51, 52, 60, 61, 62
|
|
155
|
+
const validLevels = [10, 11, 20, 21, 30, 31, 40, 41, 50, 51, 52, 60, 61, 62];
|
|
156
|
+
if (!validLevels.includes(level)) {
|
|
157
|
+
return { valid: true, supported: false, error: `Unknown VP9 level: ${level}` };
|
|
158
|
+
}
|
|
159
|
+
// Valid bit depths: 8, 10, 12
|
|
160
|
+
if (bitDepth !== 8 && bitDepth !== 10 && bitDepth !== 12) {
|
|
161
|
+
return { valid: true, supported: false, error: `Unknown VP9 bit depth: ${bitDepth}` };
|
|
162
|
+
}
|
|
163
|
+
return { valid: true, supported: true };
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Validate AV1 codec string
|
|
167
|
+
* Format: av01.P.LLT.DD
|
|
168
|
+
* P = Profile (0=Main, 1=High, 2=Professional)
|
|
169
|
+
* LL = Level (00-23)
|
|
170
|
+
* T = Tier (M=Main, H=High)
|
|
171
|
+
* DD = Bit depth (08, 10, 12)
|
|
172
|
+
*/
|
|
173
|
+
function validateAv1Codec(codec) {
|
|
174
|
+
const match = codec.match(/^av01\.(\d)\.(\d{2})([MH])\.(\d{2})$/);
|
|
175
|
+
if (!match) {
|
|
176
|
+
return { valid: true, supported: false, error: 'Invalid AV1 codec format, expected av01.P.LLT.DD' };
|
|
177
|
+
}
|
|
178
|
+
const [, profileStr, levelStr, , bitDepthStr] = match;
|
|
179
|
+
const profile = parseInt(profileStr, 10);
|
|
180
|
+
const level = parseInt(levelStr, 10);
|
|
181
|
+
const bitDepth = parseInt(bitDepthStr, 10);
|
|
182
|
+
// Valid profiles: 0 (Main), 1 (High), 2 (Professional)
|
|
183
|
+
if (profile < 0 || profile > 2) {
|
|
184
|
+
return { valid: true, supported: false, error: `Unknown AV1 profile: ${profile}` };
|
|
185
|
+
}
|
|
186
|
+
// Valid levels: 0-23 (0=2.0, 1=2.1, ..., 23=7.3)
|
|
187
|
+
if (level < 0 || level > 23) {
|
|
188
|
+
return { valid: true, supported: false, error: `Unknown AV1 level: ${level}` };
|
|
189
|
+
}
|
|
190
|
+
// Valid bit depths: 8, 10, 12
|
|
191
|
+
if (bitDepth !== 8 && bitDepth !== 10 && bitDepth !== 12) {
|
|
192
|
+
return { valid: true, supported: false, error: `Unknown AV1 bit depth: ${bitDepth}` };
|
|
193
|
+
}
|
|
194
|
+
return { valid: true, supported: true };
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../../src/codecs/validation/video.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified WebCodecs configuration
|
|
3
|
+
*
|
|
4
|
+
* Loads configuration from webcodecs-config.js (or WEBCODECS_CONFIG env var).
|
|
5
|
+
* All settings are optional - omit or comment out to use defaults.
|
|
6
|
+
*/
|
|
7
|
+
import type { HardwareAccelerationMethod } from '../hardware/types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Per-codec configuration overrides
|
|
10
|
+
*/
|
|
11
|
+
export interface CodecConfig {
|
|
12
|
+
/** CRF value for quality-based encoding */
|
|
13
|
+
crf?: number;
|
|
14
|
+
/** Encoder preset (e.g., 'fast', 'medium', 'slow') */
|
|
15
|
+
preset?: string;
|
|
16
|
+
/** Hardware acceleration priority order for this codec */
|
|
17
|
+
hwaccel?: HardwareAccelerationMethod[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* WebCodecs configuration options
|
|
21
|
+
*/
|
|
22
|
+
export interface WebCodecsConfig {
|
|
23
|
+
/** Global CRF value (overridden by perCodec) */
|
|
24
|
+
crf?: number;
|
|
25
|
+
/** Global encoder preset (overridden by perCodec) */
|
|
26
|
+
preset?: string;
|
|
27
|
+
/** Global hardware acceleration priority order (overridden by perCodec) */
|
|
28
|
+
hwaccel?: HardwareAccelerationMethod[];
|
|
29
|
+
/** Per-codec overrides */
|
|
30
|
+
perCodec?: Record<string, CodecConfig>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get the loaded configuration (cached)
|
|
34
|
+
*/
|
|
35
|
+
export declare function getConfig(): Promise<WebCodecsConfig>;
|
|
36
|
+
/**
|
|
37
|
+
* Get configuration synchronously (loads config if not cached)
|
|
38
|
+
*/
|
|
39
|
+
export declare function getConfigSync(): WebCodecsConfig;
|
|
40
|
+
/**
|
|
41
|
+
* Clear cached config (for testing or reloading)
|
|
42
|
+
*/
|
|
43
|
+
export declare function clearConfigCache(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Get quality settings for a specific codec
|
|
46
|
+
*/
|
|
47
|
+
export declare function getQualityConfig(codecName: string): {
|
|
48
|
+
crf?: number;
|
|
49
|
+
preset?: string;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Get hardware acceleration priority order for a specific codec
|
|
53
|
+
* Returns undefined if no override is configured (use default priorities)
|
|
54
|
+
* Returns empty array if explicitly set to [] (force software encoding)
|
|
55
|
+
*/
|
|
56
|
+
export declare function getHwaccelConfig(codecName: string): HardwareAccelerationMethod[] | undefined;
|
|
57
|
+
export declare const webCodecsConfig: WebCodecsConfig;
|
|
58
|
+
//# sourceMappingURL=webcodecs-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webcodecs-config.d.ts","sourceRoot":"","sources":["../../src/config/webcodecs-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAKvE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,0BAA0B,EAAE,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACvC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACxC;AAgGD;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC,CAK1D;AAuCD;;GAEG;AACH,wBAAgB,aAAa,IAAI,eAAe,CAK/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CASrF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,0BAA0B,EAAE,GAAG,SAAS,CAiB5F;AAGD,eAAO,MAAM,eAAe,iBAAqB,CAAC"}
|