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
|
@@ -5,71 +5,16 @@
|
|
|
5
5
|
import { VideoFrame } from '../core/VideoFrame.js';
|
|
6
6
|
import { DOMException } from '../types/index.js';
|
|
7
7
|
import { createLogger } from '../utils/index.js';
|
|
8
|
-
import { NodeAvImageDecoder } from '../node-av/NodeAvImageDecoder.js';
|
|
9
|
-
import { WebPImageDecoder } from '../node-av/WebPImageDecoder.js';
|
|
8
|
+
import { NodeAvImageDecoder } from '../backends/node-av/image/NodeAvImageDecoder.js';
|
|
9
|
+
import { WebPImageDecoder } from '../backends/node-av/image/WebPImageDecoder.js';
|
|
10
|
+
// Import from submodule
|
|
11
|
+
import { ImageTrack, ImageTrackListClass, createImageTrackList, } from './image/tracks.js';
|
|
12
|
+
import { parseExifOrientation, applyOrientation } from './image/orientation.js';
|
|
13
|
+
import { isReadableStream } from './image/stream.js';
|
|
10
14
|
const logger = createLogger('ImageDecoder');
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export class ImageTrack {
|
|
15
|
-
_animated;
|
|
16
|
-
_frameCount;
|
|
17
|
-
_repetitionCount;
|
|
18
|
-
_selected;
|
|
19
|
-
constructor(options) {
|
|
20
|
-
this._animated = options.animated;
|
|
21
|
-
this._frameCount = options.frameCount;
|
|
22
|
-
this._repetitionCount = options.repetitionCount;
|
|
23
|
-
this._selected = options.selected;
|
|
24
|
-
}
|
|
25
|
-
get animated() { return this._animated; }
|
|
26
|
-
get frameCount() { return this._frameCount; }
|
|
27
|
-
get repetitionCount() { return this._repetitionCount; }
|
|
28
|
-
get selected() { return this._selected; }
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* ImageTrackList - A list of image tracks
|
|
32
|
-
*/
|
|
33
|
-
export class ImageTrackList {
|
|
34
|
-
_tracks = [];
|
|
35
|
-
_selectedIndex = -1;
|
|
36
|
-
_ready;
|
|
37
|
-
_resolveReady;
|
|
38
|
-
constructor() {
|
|
39
|
-
this._ready = new Promise((resolve) => {
|
|
40
|
-
this._resolveReady = resolve;
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
get ready() { return this._ready; }
|
|
44
|
-
get length() { return this._tracks.length; }
|
|
45
|
-
get selectedIndex() { return this._selectedIndex; }
|
|
46
|
-
get selectedTrack() {
|
|
47
|
-
if (this._selectedIndex >= 0 && this._selectedIndex < this._tracks.length) {
|
|
48
|
-
return this._tracks[this._selectedIndex];
|
|
49
|
-
}
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
/** @internal */
|
|
53
|
-
_addTrack(track) {
|
|
54
|
-
const index = this._tracks.length;
|
|
55
|
-
this._tracks.push(track);
|
|
56
|
-
if (track.selected && this._selectedIndex === -1) {
|
|
57
|
-
this._selectedIndex = index;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
/** @internal */
|
|
61
|
-
_markReady() {
|
|
62
|
-
this._resolveReady();
|
|
63
|
-
}
|
|
64
|
-
[Symbol.iterator]() {
|
|
65
|
-
return this._tracks[Symbol.iterator]();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
// Supported image types (delegated to node-av)
|
|
69
|
-
const ANIMATED_FORMATS = ['image/gif', 'image/apng', 'image/webp'];
|
|
70
|
-
function isReadableStream(obj) {
|
|
71
|
-
return typeof obj === 'object' && obj !== null && typeof obj.getReader === 'function';
|
|
72
|
-
}
|
|
15
|
+
// Re-export for backwards compatibility
|
|
16
|
+
export { ImageTrack };
|
|
17
|
+
export { ImageTrackListClass as ImageTrackList };
|
|
73
18
|
export class ImageDecoder {
|
|
74
19
|
_type;
|
|
75
20
|
_data = null;
|
|
@@ -88,11 +33,12 @@ export class ImageDecoder {
|
|
|
88
33
|
_visibleAnimated = false;
|
|
89
34
|
_visibleRepetitionCount = 1;
|
|
90
35
|
_preferredColorSpace;
|
|
36
|
+
_preferredPixelFormat;
|
|
91
37
|
_orientation = 1;
|
|
92
38
|
_orientationEvaluated = false;
|
|
93
39
|
_frames = [];
|
|
94
40
|
_framesParsed = false;
|
|
95
|
-
_repetitionCount =
|
|
41
|
+
_repetitionCount = undefined;
|
|
96
42
|
constructor(init) {
|
|
97
43
|
if (!init || typeof init !== 'object') {
|
|
98
44
|
throw new TypeError('init must be an object');
|
|
@@ -108,59 +54,107 @@ export class ImageDecoder {
|
|
|
108
54
|
this._premultiplyAlpha = init.premultiplyAlpha ?? 'default';
|
|
109
55
|
this._desiredWidth = init.desiredWidth;
|
|
110
56
|
this._desiredHeight = init.desiredHeight;
|
|
111
|
-
this._preferAnimation = init.preferAnimation ??
|
|
57
|
+
this._preferAnimation = init.preferAnimation ?? true;
|
|
58
|
+
this._preferredPixelFormat = init.preferredPixelFormat ?? 'RGBA';
|
|
112
59
|
this._preferredColorSpace = this._colorSpaceConversion === 'default'
|
|
113
60
|
? { primaries: 'bt709', transfer: 'iec61966-2-1', matrix: 'rgb', fullRange: true }
|
|
114
61
|
: undefined;
|
|
115
|
-
this._tracks =
|
|
62
|
+
this._tracks = createImageTrackList();
|
|
116
63
|
this._completed = new Promise((resolve, reject) => {
|
|
117
64
|
this._resolveCompleted = resolve;
|
|
118
65
|
this._rejectCompleted = reject;
|
|
119
66
|
});
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
67
|
+
// Validate transfer list if provided (check for duplicates and detached buffers)
|
|
68
|
+
const transferList = init.transfer || [];
|
|
69
|
+
const transferSet = new Set();
|
|
70
|
+
for (const buffer of transferList) {
|
|
71
|
+
if (!(buffer instanceof ArrayBuffer)) {
|
|
72
|
+
throw new TypeError('transfer list must only contain ArrayBuffer objects');
|
|
124
73
|
}
|
|
125
|
-
|
|
126
|
-
|
|
74
|
+
if (transferSet.has(buffer)) {
|
|
75
|
+
throw new DOMException('Duplicate ArrayBuffer in transfer list', 'DataCloneError');
|
|
127
76
|
}
|
|
77
|
+
// Use the 'detached' property if available (Node.js 20+)
|
|
78
|
+
if ('detached' in buffer && buffer.detached === true) {
|
|
79
|
+
throw new DOMException('Cannot transfer a detached ArrayBuffer', 'DataCloneError');
|
|
80
|
+
}
|
|
81
|
+
// On Node <20, we cannot reliably detect detachment without false positives
|
|
82
|
+
// on new ArrayBuffer(0). Assume NOT detached.
|
|
83
|
+
transferSet.add(buffer);
|
|
84
|
+
}
|
|
85
|
+
if (init.data instanceof ArrayBuffer) {
|
|
86
|
+
// Always copy the data - even when transferred, we need our own copy
|
|
87
|
+
// before detaching the original (transfer means caller loses access, not zero-copy)
|
|
88
|
+
this._data = new Uint8Array(init.data.slice(0));
|
|
128
89
|
this._complete = true;
|
|
90
|
+
this._detachTransferBuffers(transferList);
|
|
129
91
|
this._initializeTracks();
|
|
130
92
|
}
|
|
131
93
|
else if (ArrayBuffer.isView(init.data)) {
|
|
132
94
|
const view = init.data;
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
else {
|
|
137
|
-
this._data = new Uint8Array(view.byteLength);
|
|
138
|
-
this._data.set(new Uint8Array(view.buffer, view.byteOffset, view.byteLength));
|
|
139
|
-
}
|
|
95
|
+
// Always copy the data before potentially detaching the backing buffer
|
|
96
|
+
this._data = new Uint8Array(view.byteLength);
|
|
97
|
+
this._data.set(new Uint8Array(view.buffer, view.byteOffset, view.byteLength));
|
|
140
98
|
this._complete = true;
|
|
99
|
+
this._detachTransferBuffers(transferList);
|
|
141
100
|
this._initializeTracks();
|
|
142
101
|
}
|
|
143
102
|
else if (isReadableStream(init.data)) {
|
|
103
|
+
this._detachTransferBuffers(transferList);
|
|
144
104
|
this._readStream(init.data);
|
|
145
105
|
}
|
|
146
106
|
else {
|
|
147
107
|
throw new TypeError('data must be ArrayBuffer, ArrayBufferView, or ReadableStream');
|
|
148
108
|
}
|
|
149
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Detach ArrayBuffers after data has been copied
|
|
112
|
+
*/
|
|
113
|
+
_detachTransferBuffers(buffers) {
|
|
114
|
+
for (const buffer of buffers) {
|
|
115
|
+
try {
|
|
116
|
+
if (typeof buffer.transfer === 'function') {
|
|
117
|
+
buffer.transfer();
|
|
118
|
+
}
|
|
119
|
+
else if (typeof structuredClone === 'function') {
|
|
120
|
+
structuredClone(buffer, { transfer: [buffer] });
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
// Ignore errors during detachment
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Read data from a ReadableStream
|
|
130
|
+
*
|
|
131
|
+
* Note: Current implementation buffers the entire stream before decoding.
|
|
132
|
+
* This is a limitation of the node-av backend which requires complete data
|
|
133
|
+
* for image decoding. True progressive/streaming decode would require:
|
|
134
|
+
* 1. Format-specific header parsing to determine image dimensions
|
|
135
|
+
* 2. Progressive frame decoding as data arrives
|
|
136
|
+
* 3. Updating track.frameCount as new frames are discovered
|
|
137
|
+
*
|
|
138
|
+
* For animated GIF streaming tests (WPT), this means frames won't be
|
|
139
|
+
* available until the entire stream is received.
|
|
140
|
+
*/
|
|
150
141
|
async _readStream(stream) {
|
|
151
142
|
const reader = stream.getReader();
|
|
152
143
|
const chunks = [];
|
|
144
|
+
let totalReceived = 0;
|
|
153
145
|
try {
|
|
154
146
|
while (true) {
|
|
155
147
|
const { done, value } = await reader.read();
|
|
156
148
|
if (done)
|
|
157
149
|
break;
|
|
158
150
|
if (value) {
|
|
159
|
-
|
|
151
|
+
const chunk = new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
|
|
152
|
+
chunks.push(chunk);
|
|
153
|
+
totalReceived += chunk.length;
|
|
160
154
|
}
|
|
161
155
|
}
|
|
162
|
-
|
|
163
|
-
this._data = new Uint8Array(
|
|
156
|
+
// Concatenate all chunks
|
|
157
|
+
this._data = new Uint8Array(totalReceived);
|
|
164
158
|
let offset = 0;
|
|
165
159
|
for (const chunk of chunks) {
|
|
166
160
|
this._data.set(chunk, offset);
|
|
@@ -190,19 +184,43 @@ export class ImageDecoder {
|
|
|
190
184
|
if (!NodeAvImageDecoder.isTypeSupported(this._type)) {
|
|
191
185
|
throw new DOMException(`Unsupported image type: ${this._type}`, 'NotSupportedError');
|
|
192
186
|
}
|
|
193
|
-
// Set default repetition count
|
|
187
|
+
// Set default repetition count based on format
|
|
188
|
+
// GIF loops forever by default, other animated formats may vary
|
|
194
189
|
const type = this._type.toLowerCase();
|
|
195
|
-
this._repetitionCount = type === 'image/gif' ? Infinity :
|
|
190
|
+
this._repetitionCount = type === 'image/gif' ? Infinity : undefined;
|
|
196
191
|
await this._decodeAllFramesDirect();
|
|
197
192
|
this._framesParsed = true;
|
|
198
193
|
this._updateVisibleTrackInfo();
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
194
|
+
const isAnimated = this._frames.length > 1;
|
|
195
|
+
if (isAnimated) {
|
|
196
|
+
// For animated images, create two tracks:
|
|
197
|
+
// Track 0: Still (first frame only) - selected when preferAnimation=false
|
|
198
|
+
// Track 1: Animated (all frames) - selected when preferAnimation=true
|
|
199
|
+
const stillTrack = new ImageTrack({
|
|
200
|
+
animated: false,
|
|
201
|
+
frameCount: 1,
|
|
202
|
+
repetitionCount: 0, // Still images have repetitionCount=0 per spec
|
|
203
|
+
selected: !this._preferAnimation,
|
|
204
|
+
});
|
|
205
|
+
this._tracks._addTrack(stillTrack);
|
|
206
|
+
const animatedTrack = new ImageTrack({
|
|
207
|
+
animated: true,
|
|
208
|
+
frameCount: this._visibleFrameCount,
|
|
209
|
+
repetitionCount: this._visibleRepetitionCount,
|
|
210
|
+
selected: this._preferAnimation,
|
|
211
|
+
});
|
|
212
|
+
this._tracks._addTrack(animatedTrack);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
// Single frame image - just one track
|
|
216
|
+
const track = new ImageTrack({
|
|
217
|
+
animated: false,
|
|
218
|
+
frameCount: 1,
|
|
219
|
+
repetitionCount: 0,
|
|
220
|
+
selected: true,
|
|
221
|
+
});
|
|
222
|
+
this._tracks._addTrack(track);
|
|
223
|
+
}
|
|
206
224
|
}
|
|
207
225
|
_frameTypeSupportsAlpha() {
|
|
208
226
|
const type = this._type.toLowerCase();
|
|
@@ -220,7 +238,7 @@ export class ImageDecoder {
|
|
|
220
238
|
if (type !== 'image/jpeg' && type !== 'image/jpg') {
|
|
221
239
|
return;
|
|
222
240
|
}
|
|
223
|
-
const orientation =
|
|
241
|
+
const orientation = parseExifOrientation(this._data);
|
|
224
242
|
if (orientation && orientation >= 1 && orientation <= 8) {
|
|
225
243
|
this._orientation = orientation;
|
|
226
244
|
}
|
|
@@ -257,168 +275,22 @@ export class ImageDecoder {
|
|
|
257
275
|
const totalFrames = this._frames.length;
|
|
258
276
|
this._visibleFrameCount = totalFrames;
|
|
259
277
|
this._visibleAnimated = totalFrames > 1;
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
278
|
+
// Per WebCodecs spec:
|
|
279
|
+
// - Still images (single frame): repetitionCount = 0
|
|
280
|
+
// - Animated images: repetitionCount = number of loops, Infinity = loop forever
|
|
281
|
+
// File format convention: 0 in file = loop forever, converted to Infinity
|
|
282
|
+
if (!this._visibleAnimated) {
|
|
283
|
+
// Still image: repetitionCount is 0 per spec
|
|
284
|
+
this._visibleRepetitionCount = 0;
|
|
285
|
+
}
|
|
286
|
+
else if (this._repetitionCount === 0) {
|
|
287
|
+
// File says 0 = loop forever
|
|
288
|
+
this._visibleRepetitionCount = Infinity;
|
|
265
289
|
}
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
}
|
|
270
|
-
return (buffer[offset] << 8) | buffer[offset + 1];
|
|
271
|
-
};
|
|
272
|
-
const readUint32 = (buffer, offset, littleEndian) => {
|
|
273
|
-
if (littleEndian) {
|
|
274
|
-
return (buffer[offset] |
|
|
275
|
-
(buffer[offset + 1] << 8) |
|
|
276
|
-
(buffer[offset + 2] << 16) |
|
|
277
|
-
(buffer[offset + 3] << 24));
|
|
278
|
-
}
|
|
279
|
-
return ((buffer[offset] << 24) |
|
|
280
|
-
(buffer[offset + 1] << 16) |
|
|
281
|
-
(buffer[offset + 2] << 8) |
|
|
282
|
-
buffer[offset + 3]);
|
|
283
|
-
};
|
|
284
|
-
let offset = 2;
|
|
285
|
-
while (offset + 4 < data.length) {
|
|
286
|
-
if (data[offset] !== 0xFF) {
|
|
287
|
-
break;
|
|
288
|
-
}
|
|
289
|
-
const marker = data[offset + 1];
|
|
290
|
-
offset += 2;
|
|
291
|
-
if (marker === 0xD9 || marker === 0xDA) {
|
|
292
|
-
break;
|
|
293
|
-
}
|
|
294
|
-
if (offset + 2 > data.length) {
|
|
295
|
-
break;
|
|
296
|
-
}
|
|
297
|
-
const segmentLength = (data[offset] << 8) | data[offset + 1];
|
|
298
|
-
if (segmentLength < 2) {
|
|
299
|
-
break;
|
|
300
|
-
}
|
|
301
|
-
const segmentStart = offset + 2;
|
|
302
|
-
const segmentEnd = segmentStart + segmentLength - 2;
|
|
303
|
-
if (segmentEnd > data.length) {
|
|
304
|
-
break;
|
|
305
|
-
}
|
|
306
|
-
if (marker === 0xE1 && segmentLength >= 8) {
|
|
307
|
-
const hasExifHeader = data[segmentStart] === 0x45 && // E
|
|
308
|
-
data[segmentStart + 1] === 0x78 && // x
|
|
309
|
-
data[segmentStart + 2] === 0x69 && // i
|
|
310
|
-
data[segmentStart + 3] === 0x66 && // f
|
|
311
|
-
data[segmentStart + 4] === 0x00 &&
|
|
312
|
-
data[segmentStart + 5] === 0x00;
|
|
313
|
-
if (hasExifHeader) {
|
|
314
|
-
const tiffStart = segmentStart + 6;
|
|
315
|
-
if (tiffStart + 8 > data.length) {
|
|
316
|
-
return null;
|
|
317
|
-
}
|
|
318
|
-
const byteOrder = String.fromCharCode(data[tiffStart], data[tiffStart + 1]);
|
|
319
|
-
const littleEndian = byteOrder === 'II';
|
|
320
|
-
const bigEndian = byteOrder === 'MM';
|
|
321
|
-
if (!littleEndian && !bigEndian) {
|
|
322
|
-
return null;
|
|
323
|
-
}
|
|
324
|
-
const isLittleEndian = littleEndian;
|
|
325
|
-
const firstIFDOffset = readUint32(data, tiffStart + 4, isLittleEndian);
|
|
326
|
-
let ifdOffset = tiffStart + firstIFDOffset;
|
|
327
|
-
if (ifdOffset < tiffStart || ifdOffset + 2 > data.length) {
|
|
328
|
-
return null;
|
|
329
|
-
}
|
|
330
|
-
let entryCount = readUint16(data, ifdOffset, isLittleEndian);
|
|
331
|
-
const entrySize = 12;
|
|
332
|
-
const maxEntries = Math.floor((data.length - (ifdOffset + 2)) / entrySize);
|
|
333
|
-
if (entryCount > maxEntries) {
|
|
334
|
-
entryCount = maxEntries;
|
|
335
|
-
}
|
|
336
|
-
for (let i = 0; i < entryCount; i++) {
|
|
337
|
-
const entryOffset = ifdOffset + 2 + i * entrySize;
|
|
338
|
-
if (entryOffset + entrySize > data.length) {
|
|
339
|
-
break;
|
|
340
|
-
}
|
|
341
|
-
const tag = readUint16(data, entryOffset, isLittleEndian);
|
|
342
|
-
if (tag !== 0x0112) {
|
|
343
|
-
continue;
|
|
344
|
-
}
|
|
345
|
-
const type = readUint16(data, entryOffset + 2, isLittleEndian);
|
|
346
|
-
const count = readUint32(data, entryOffset + 4, isLittleEndian);
|
|
347
|
-
if (type !== 3 || count < 1) {
|
|
348
|
-
return null;
|
|
349
|
-
}
|
|
350
|
-
const valueOffset = entryOffset + 8;
|
|
351
|
-
if (valueOffset + 2 > data.length) {
|
|
352
|
-
return null;
|
|
353
|
-
}
|
|
354
|
-
const orientation = readUint16(data, valueOffset, isLittleEndian);
|
|
355
|
-
return orientation;
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
offset = segmentEnd;
|
|
360
|
-
}
|
|
361
|
-
return null;
|
|
362
|
-
}
|
|
363
|
-
_applyOrientation(data, width, height) {
|
|
364
|
-
const orientation = this._orientation;
|
|
365
|
-
if (orientation === 1 || orientation < 1 || orientation > 8) {
|
|
366
|
-
return { data, width, height };
|
|
367
|
-
}
|
|
368
|
-
const shouldSwapDimensions = orientation >= 5 && orientation <= 8;
|
|
369
|
-
const newWidth = shouldSwapDimensions ? height : width;
|
|
370
|
-
const newHeight = shouldSwapDimensions ? width : height;
|
|
371
|
-
const transformed = new Uint8Array(newWidth * newHeight * 4);
|
|
372
|
-
const copyPixel = (destX, destY, srcIndex) => {
|
|
373
|
-
const destIndex = (destY * newWidth + destX) * 4;
|
|
374
|
-
transformed[destIndex] = data[srcIndex];
|
|
375
|
-
transformed[destIndex + 1] = data[srcIndex + 1];
|
|
376
|
-
transformed[destIndex + 2] = data[srcIndex + 2];
|
|
377
|
-
transformed[destIndex + 3] = data[srcIndex + 3];
|
|
378
|
-
};
|
|
379
|
-
for (let y = 0; y < height; y++) {
|
|
380
|
-
for (let x = 0; x < width; x++) {
|
|
381
|
-
const srcIndex = (y * width + x) * 4;
|
|
382
|
-
let destX = x;
|
|
383
|
-
let destY = y;
|
|
384
|
-
switch (orientation) {
|
|
385
|
-
case 2:
|
|
386
|
-
destX = width - 1 - x;
|
|
387
|
-
destY = y;
|
|
388
|
-
break;
|
|
389
|
-
case 3:
|
|
390
|
-
destX = width - 1 - x;
|
|
391
|
-
destY = height - 1 - y;
|
|
392
|
-
break;
|
|
393
|
-
case 4:
|
|
394
|
-
destX = x;
|
|
395
|
-
destY = height - 1 - y;
|
|
396
|
-
break;
|
|
397
|
-
case 5:
|
|
398
|
-
destX = y;
|
|
399
|
-
destY = x;
|
|
400
|
-
break;
|
|
401
|
-
case 6:
|
|
402
|
-
destX = height - 1 - y;
|
|
403
|
-
destY = x;
|
|
404
|
-
break;
|
|
405
|
-
case 7:
|
|
406
|
-
destX = height - 1 - y;
|
|
407
|
-
destY = width - 1 - x;
|
|
408
|
-
break;
|
|
409
|
-
case 8:
|
|
410
|
-
destX = y;
|
|
411
|
-
destY = width - 1 - x;
|
|
412
|
-
break;
|
|
413
|
-
default:
|
|
414
|
-
destX = x;
|
|
415
|
-
destY = y;
|
|
416
|
-
break;
|
|
417
|
-
}
|
|
418
|
-
copyPixel(destX, destY, srcIndex);
|
|
419
|
-
}
|
|
290
|
+
else {
|
|
291
|
+
// Use file value, or Infinity as default for animated
|
|
292
|
+
this._visibleRepetitionCount = this._repetitionCount ?? Infinity;
|
|
420
293
|
}
|
|
421
|
-
return { data: transformed, width: newWidth, height: newHeight };
|
|
422
294
|
}
|
|
423
295
|
async _decodeWithNodeAv() {
|
|
424
296
|
if (!this._data)
|
|
@@ -430,14 +302,19 @@ export class ImageDecoder {
|
|
|
430
302
|
desiredWidth: this._desiredWidth,
|
|
431
303
|
desiredHeight: this._desiredHeight,
|
|
432
304
|
colorSpace: this._preferredColorSpace,
|
|
305
|
+
preferredFormat: this._preferredPixelFormat,
|
|
433
306
|
});
|
|
434
307
|
try {
|
|
435
308
|
const decodedFrames = await nodeAvDecoder.decode();
|
|
436
309
|
for (const frame of decodedFrames) {
|
|
437
|
-
// Apply premultiplication if needed
|
|
438
|
-
const processed =
|
|
439
|
-
|
|
440
|
-
|
|
310
|
+
// Apply premultiplication if needed (only for RGBA)
|
|
311
|
+
const processed = frame.format === 'RGBA'
|
|
312
|
+
? this._processFrameData(frame.data)
|
|
313
|
+
: frame.data;
|
|
314
|
+
// Apply orientation correction for JPEG (only for RGBA)
|
|
315
|
+
const oriented = frame.format === 'RGBA'
|
|
316
|
+
? applyOrientation(processed, frame.width, frame.height, this._orientation)
|
|
317
|
+
: { data: processed, width: frame.width, height: frame.height };
|
|
441
318
|
this._frames.push({
|
|
442
319
|
data: oriented.data,
|
|
443
320
|
width: oriented.width,
|
|
@@ -446,6 +323,7 @@ export class ImageDecoder {
|
|
|
446
323
|
duration: frame.duration,
|
|
447
324
|
complete: frame.complete,
|
|
448
325
|
colorSpace: frame.colorSpace,
|
|
326
|
+
format: frame.format,
|
|
449
327
|
});
|
|
450
328
|
}
|
|
451
329
|
}
|
|
@@ -466,7 +344,7 @@ export class ImageDecoder {
|
|
|
466
344
|
try {
|
|
467
345
|
const decodedFrames = await webpDecoder.decode();
|
|
468
346
|
for (const frame of decodedFrames) {
|
|
469
|
-
// Apply premultiplication if needed
|
|
347
|
+
// Apply premultiplication if needed (WebP always outputs RGBA)
|
|
470
348
|
const processed = this._processFrameData(frame.data);
|
|
471
349
|
this._frames.push({
|
|
472
350
|
data: processed,
|
|
@@ -476,6 +354,7 @@ export class ImageDecoder {
|
|
|
476
354
|
duration: frame.duration,
|
|
477
355
|
complete: frame.complete,
|
|
478
356
|
colorSpace: frame.colorSpace,
|
|
357
|
+
format: frame.format, // Always 'RGBA' for WebP
|
|
479
358
|
});
|
|
480
359
|
}
|
|
481
360
|
}
|
|
@@ -498,6 +377,13 @@ export class ImageDecoder {
|
|
|
498
377
|
if (this._frames.length === 0) {
|
|
499
378
|
throw new Error('No frames decoded');
|
|
500
379
|
}
|
|
380
|
+
// Per WebCodecs spec, preferAnimation affects track selection when an image
|
|
381
|
+
// has multiple representations. For animated images, we create two tracks:
|
|
382
|
+
// - Track 0: Still image (first frame only)
|
|
383
|
+
// - Track 1: Animated (all frames)
|
|
384
|
+
// preferAnimation=true selects the animated track, false selects the still track.
|
|
385
|
+
// This allows applications to choose between playing animation or showing a
|
|
386
|
+
// static preview even for animated image formats.
|
|
501
387
|
}
|
|
502
388
|
get complete() { return this._complete; }
|
|
503
389
|
get completed() { return this._completed; }
|
|
@@ -511,13 +397,19 @@ export class ImageDecoder {
|
|
|
511
397
|
throw new DOMException('ImageDecoder is closed', 'InvalidStateError');
|
|
512
398
|
}
|
|
513
399
|
await this._completed;
|
|
400
|
+
// Per WebCodecs spec, decode() requires a selected track
|
|
401
|
+
const selectedTrack = this._tracks.selectedTrack;
|
|
402
|
+
if (selectedTrack === null) {
|
|
403
|
+
throw new DOMException('No track selected', 'InvalidStateError');
|
|
404
|
+
}
|
|
514
405
|
const frameIndex = options?.frameIndex ?? 0;
|
|
515
|
-
const
|
|
516
|
-
if (
|
|
406
|
+
const trackFrameCount = selectedTrack.frameCount;
|
|
407
|
+
if (this._frames.length === 0) {
|
|
517
408
|
throw new DOMException('No frames available', 'InvalidStateError');
|
|
518
409
|
}
|
|
519
|
-
|
|
520
|
-
|
|
410
|
+
// Validate frameIndex against selected track's frame count
|
|
411
|
+
if (frameIndex < 0 || frameIndex >= trackFrameCount) {
|
|
412
|
+
throw new DOMException(`Frame index ${frameIndex} out of range (0-${trackFrameCount - 1})`, 'InvalidStateError');
|
|
521
413
|
}
|
|
522
414
|
const frame = this._frames[frameIndex];
|
|
523
415
|
const requireComplete = options?.completeFramesOnly ?? true;
|
|
@@ -526,7 +418,7 @@ export class ImageDecoder {
|
|
|
526
418
|
throw new DOMException('Requested frame is not fully decoded', 'InvalidStateError');
|
|
527
419
|
}
|
|
528
420
|
const videoFrame = new VideoFrame(frame.data, {
|
|
529
|
-
format:
|
|
421
|
+
format: frame.format,
|
|
530
422
|
codedWidth: frame.width,
|
|
531
423
|
codedHeight: frame.height,
|
|
532
424
|
timestamp: frame.timestamp,
|
|
@@ -544,11 +436,11 @@ export class ImageDecoder {
|
|
|
544
436
|
}
|
|
545
437
|
this._frames = [];
|
|
546
438
|
this._framesParsed = false;
|
|
547
|
-
this._repetitionCount =
|
|
439
|
+
this._repetitionCount = undefined;
|
|
548
440
|
this._visibleFrameCount = 0;
|
|
549
441
|
this._visibleAnimated = false;
|
|
550
|
-
this._visibleRepetitionCount =
|
|
551
|
-
this._tracks =
|
|
442
|
+
this._visibleRepetitionCount = 0;
|
|
443
|
+
this._tracks = createImageTrackList();
|
|
552
444
|
this._complete = false;
|
|
553
445
|
this._completed = new Promise((resolve, reject) => {
|
|
554
446
|
this._resolveCompleted = resolve;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageDecoder.js","sourceRoot":"","sources":["../../src/decoders/ImageDecoder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ImageDecoder.js","sourceRoot":"","sources":["../../src/decoders/ImageDecoder.ts"],"names":[],"mappings":"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"}
|