webcodecs-node 0.2.2
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/LICENSE +656 -0
- package/README.md +607 -0
- package/dist/AudioData.d.ts +6 -0
- package/dist/AudioData.d.ts.map +1 -0
- package/dist/AudioData.js +6 -0
- package/dist/AudioData.js.map +1 -0
- package/dist/AudioDecoder.d.ts +6 -0
- package/dist/AudioDecoder.d.ts.map +1 -0
- package/dist/AudioDecoder.js +6 -0
- package/dist/AudioDecoder.js.map +1 -0
- package/dist/AudioEncoder.d.ts +6 -0
- package/dist/AudioEncoder.d.ts.map +1 -0
- package/dist/AudioEncoder.js +6 -0
- package/dist/AudioEncoder.js.map +1 -0
- package/dist/EncodedAudioChunk.d.ts +6 -0
- package/dist/EncodedAudioChunk.d.ts.map +1 -0
- package/dist/EncodedAudioChunk.js +6 -0
- package/dist/EncodedAudioChunk.js.map +1 -0
- package/dist/EncodedVideoChunk.d.ts +6 -0
- package/dist/EncodedVideoChunk.d.ts.map +1 -0
- package/dist/EncodedVideoChunk.js +6 -0
- package/dist/EncodedVideoChunk.js.map +1 -0
- package/dist/FFmpegProcess.d.ts +6 -0
- package/dist/FFmpegProcess.d.ts.map +1 -0
- package/dist/FFmpegProcess.js +6 -0
- package/dist/FFmpegProcess.js.map +1 -0
- package/dist/HardwareAcceleration.d.ts +6 -0
- package/dist/HardwareAcceleration.d.ts.map +1 -0
- package/dist/HardwareAcceleration.js +6 -0
- package/dist/HardwareAcceleration.js.map +1 -0
- package/dist/ImageDecoder.d.ts +6 -0
- package/dist/ImageDecoder.d.ts.map +1 -0
- package/dist/ImageDecoder.js +6 -0
- package/dist/ImageDecoder.js.map +1 -0
- package/dist/Logger.d.ts +6 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/Logger.js +6 -0
- package/dist/Logger.js.map +1 -0
- package/dist/MediaCapabilities.d.ts +9 -0
- package/dist/MediaCapabilities.d.ts.map +1 -0
- package/dist/MediaCapabilities.js +8 -0
- package/dist/MediaCapabilities.js.map +1 -0
- package/dist/VideoDecoder.d.ts +6 -0
- package/dist/VideoDecoder.d.ts.map +1 -0
- package/dist/VideoDecoder.js +6 -0
- package/dist/VideoDecoder.js.map +1 -0
- package/dist/VideoEncoder.d.ts +6 -0
- package/dist/VideoEncoder.d.ts.map +1 -0
- package/dist/VideoEncoder.js +6 -0
- package/dist/VideoEncoder.js.map +1 -0
- package/dist/VideoFrame.d.ts +10 -0
- package/dist/VideoFrame.d.ts.map +1 -0
- package/dist/VideoFrame.js +9 -0
- package/dist/VideoFrame.js.map +1 -0
- package/dist/__tests__/AudioData.test.d.ts +5 -0
- package/dist/__tests__/AudioData.test.d.ts.map +1 -0
- package/dist/__tests__/AudioData.test.js +179 -0
- package/dist/__tests__/AudioData.test.js.map +1 -0
- package/dist/__tests__/AudioDecoder.test.d.ts +5 -0
- package/dist/__tests__/AudioDecoder.test.d.ts.map +1 -0
- package/dist/__tests__/AudioDecoder.test.js +733 -0
- package/dist/__tests__/AudioDecoder.test.js.map +1 -0
- package/dist/__tests__/AudioEncoder.test.d.ts +5 -0
- package/dist/__tests__/AudioEncoder.test.d.ts.map +1 -0
- package/dist/__tests__/AudioEncoder.test.js +247 -0
- package/dist/__tests__/AudioEncoder.test.js.map +1 -0
- package/dist/__tests__/EncodedChunks.test.d.ts +5 -0
- package/dist/__tests__/EncodedChunks.test.d.ts.map +1 -0
- package/dist/__tests__/EncodedChunks.test.js +99 -0
- package/dist/__tests__/EncodedChunks.test.js.map +1 -0
- package/dist/__tests__/HardwareAcceleration.test.d.ts +5 -0
- package/dist/__tests__/HardwareAcceleration.test.d.ts.map +1 -0
- package/dist/__tests__/HardwareAcceleration.test.js +84 -0
- package/dist/__tests__/HardwareAcceleration.test.js.map +1 -0
- package/dist/__tests__/ImageDecoder.test.d.ts +5 -0
- package/dist/__tests__/ImageDecoder.test.d.ts.map +1 -0
- package/dist/__tests__/ImageDecoder.test.js +587 -0
- package/dist/__tests__/ImageDecoder.test.js.map +1 -0
- package/dist/__tests__/MediaCapabilities.test.d.ts +5 -0
- package/dist/__tests__/MediaCapabilities.test.d.ts.map +1 -0
- package/dist/__tests__/MediaCapabilities.test.js +346 -0
- package/dist/__tests__/MediaCapabilities.test.js.map +1 -0
- package/dist/__tests__/VideoDecoder.test.d.ts +5 -0
- package/dist/__tests__/VideoDecoder.test.d.ts.map +1 -0
- package/dist/__tests__/VideoDecoder.test.js +675 -0
- package/dist/__tests__/VideoDecoder.test.js.map +1 -0
- package/dist/__tests__/VideoEncoder.test.d.ts +5 -0
- package/dist/__tests__/VideoEncoder.test.d.ts.map +1 -0
- package/dist/__tests__/VideoEncoder.test.js +468 -0
- package/dist/__tests__/VideoEncoder.test.js.map +1 -0
- package/dist/__tests__/VideoFrame.test.d.ts +5 -0
- package/dist/__tests__/VideoFrame.test.d.ts.map +1 -0
- package/dist/__tests__/VideoFrame.test.js +243 -0
- package/dist/__tests__/VideoFrame.test.js.map +1 -0
- package/dist/__tests__/aac-utils.test.d.ts +2 -0
- package/dist/__tests__/aac-utils.test.d.ts.map +1 -0
- package/dist/__tests__/aac-utils.test.js +37 -0
- package/dist/__tests__/aac-utils.test.js.map +1 -0
- package/dist/__tests__/avc-utils.test.d.ts +2 -0
- package/dist/__tests__/avc-utils.test.d.ts.map +1 -0
- package/dist/__tests__/avc-utils.test.js +63 -0
- package/dist/__tests__/avc-utils.test.js.map +1 -0
- package/dist/__tests__/hevc-utils.test.d.ts +2 -0
- package/dist/__tests__/hevc-utils.test.d.ts.map +1 -0
- package/dist/__tests__/hevc-utils.test.js +78 -0
- package/dist/__tests__/hevc-utils.test.js.map +1 -0
- package/dist/capabilities/MediaCapabilities.d.ts +78 -0
- package/dist/capabilities/MediaCapabilities.d.ts.map +1 -0
- package/dist/capabilities/MediaCapabilities.js +276 -0
- package/dist/capabilities/MediaCapabilities.js.map +1 -0
- package/dist/capabilities/codecs.d.ts +72 -0
- package/dist/capabilities/codecs.d.ts.map +1 -0
- package/dist/capabilities/codecs.js +153 -0
- package/dist/capabilities/codecs.js.map +1 -0
- package/dist/capabilities/index.d.ts +7 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +8 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/types.d.ts +77 -0
- package/dist/capabilities/types.d.ts.map +1 -0
- package/dist/capabilities/types.js +5 -0
- package/dist/capabilities/types.js.map +1 -0
- package/dist/core/AudioData.d.ts +36 -0
- package/dist/core/AudioData.d.ts.map +1 -0
- package/dist/core/AudioData.js +229 -0
- package/dist/core/AudioData.js.map +1 -0
- package/dist/core/EncodedAudioChunk.d.ts +26 -0
- package/dist/core/EncodedAudioChunk.d.ts.map +1 -0
- package/dist/core/EncodedAudioChunk.js +58 -0
- package/dist/core/EncodedAudioChunk.js.map +1 -0
- package/dist/core/EncodedVideoChunk.d.ts +23 -0
- package/dist/core/EncodedVideoChunk.d.ts.map +1 -0
- package/dist/core/EncodedVideoChunk.js +55 -0
- package/dist/core/EncodedVideoChunk.js.map +1 -0
- package/dist/core/VideoFrame.d.ts +61 -0
- package/dist/core/VideoFrame.d.ts.map +1 -0
- package/dist/core/VideoFrame.js +385 -0
- package/dist/core/VideoFrame.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -0
- package/dist/debug-h264.d.ts +5 -0
- package/dist/debug-h264.d.ts.map +1 -0
- package/dist/debug-h264.js +103 -0
- package/dist/debug-h264.js.map +1 -0
- package/dist/decoders/AudioDecoder.d.ts +57 -0
- package/dist/decoders/AudioDecoder.d.ts.map +1 -0
- package/dist/decoders/AudioDecoder.js +333 -0
- package/dist/decoders/AudioDecoder.js.map +1 -0
- package/dist/decoders/ImageDecoder.d.ts +111 -0
- package/dist/decoders/ImageDecoder.d.ts.map +1 -0
- package/dist/decoders/ImageDecoder.js +686 -0
- package/dist/decoders/ImageDecoder.js.map +1 -0
- package/dist/decoders/VideoDecoder.d.ts +70 -0
- package/dist/decoders/VideoDecoder.d.ts.map +1 -0
- package/dist/decoders/VideoDecoder.js +410 -0
- package/dist/decoders/VideoDecoder.js.map +1 -0
- package/dist/decoders/index.d.ts +8 -0
- package/dist/decoders/index.d.ts.map +1 -0
- package/dist/decoders/index.js +7 -0
- package/dist/decoders/index.js.map +1 -0
- package/dist/demos/demo-audio-opus.d.ts +5 -0
- package/dist/demos/demo-audio-opus.d.ts.map +1 -0
- package/dist/demos/demo-audio-opus.js +107 -0
- package/dist/demos/demo-audio-opus.js.map +1 -0
- package/dist/demos/demo-audio.d.ts +10 -0
- package/dist/demos/demo-audio.d.ts.map +1 -0
- package/dist/demos/demo-audio.js +135 -0
- package/dist/demos/demo-audio.js.map +1 -0
- package/dist/demos/demo-conversion.d.ts +13 -0
- package/dist/demos/demo-conversion.d.ts.map +1 -0
- package/dist/demos/demo-conversion.js +301 -0
- package/dist/demos/demo-conversion.js.map +1 -0
- package/dist/demos/demo-h264.d.ts +7 -0
- package/dist/demos/demo-h264.d.ts.map +1 -0
- package/dist/demos/demo-h264.js +134 -0
- package/dist/demos/demo-h264.js.map +1 -0
- package/dist/demos/demo-hwaccel-conversion.d.ts +8 -0
- package/dist/demos/demo-hwaccel-conversion.d.ts.map +1 -0
- package/dist/demos/demo-hwaccel-conversion.js +161 -0
- package/dist/demos/demo-hwaccel-conversion.js.map +1 -0
- package/dist/demos/demo-hwaccel.d.ts +7 -0
- package/dist/demos/demo-hwaccel.d.ts.map +1 -0
- package/dist/demos/demo-hwaccel.js +51 -0
- package/dist/demos/demo-hwaccel.js.map +1 -0
- package/dist/demos/demo-image.d.ts +12 -0
- package/dist/demos/demo-image.d.ts.map +1 -0
- package/dist/demos/demo-image.js +178 -0
- package/dist/demos/demo-image.js.map +1 -0
- package/dist/demos/demo-mediabunny.d.ts +7 -0
- package/dist/demos/demo-mediabunny.d.ts.map +1 -0
- package/dist/demos/demo-mediabunny.js +78 -0
- package/dist/demos/demo-mediabunny.js.map +1 -0
- package/dist/demos/demo-pipeline.d.ts +8 -0
- package/dist/demos/demo-pipeline.d.ts.map +1 -0
- package/dist/demos/demo-pipeline.js +83 -0
- package/dist/demos/demo-pipeline.js.map +1 -0
- package/dist/demos/demo-samples.d.ts +9 -0
- package/dist/demos/demo-samples.d.ts.map +1 -0
- package/dist/demos/demo-samples.js +413 -0
- package/dist/demos/demo-samples.js.map +1 -0
- package/dist/demos/demo-streaming.d.ts +8 -0
- package/dist/demos/demo-streaming.d.ts.map +1 -0
- package/dist/demos/demo-streaming.js +299 -0
- package/dist/demos/demo-streaming.js.map +1 -0
- package/dist/demos/demo-webcodecs.d.ts +8 -0
- package/dist/demos/demo-webcodecs.d.ts.map +1 -0
- package/dist/demos/demo-webcodecs.js +316 -0
- package/dist/demos/demo-webcodecs.js.map +1 -0
- package/dist/demos/demo.d.ts +10 -0
- package/dist/demos/demo.d.ts.map +1 -0
- package/dist/demos/demo.js +123 -0
- package/dist/demos/demo.js.map +1 -0
- package/dist/encoders/AudioEncoder.d.ts +69 -0
- package/dist/encoders/AudioEncoder.d.ts.map +1 -0
- package/dist/encoders/AudioEncoder.js +425 -0
- package/dist/encoders/AudioEncoder.js.map +1 -0
- package/dist/encoders/VideoEncoder.d.ts +80 -0
- package/dist/encoders/VideoEncoder.d.ts.map +1 -0
- package/dist/encoders/VideoEncoder.js +386 -0
- package/dist/encoders/VideoEncoder.js.map +1 -0
- package/dist/encoders/codecs/av1.d.ts +31 -0
- package/dist/encoders/codecs/av1.d.ts.map +1 -0
- package/dist/encoders/codecs/av1.js +66 -0
- package/dist/encoders/codecs/av1.js.map +1 -0
- package/dist/encoders/codecs/h264.d.ts +28 -0
- package/dist/encoders/codecs/h264.d.ts.map +1 -0
- package/dist/encoders/codecs/h264.js +95 -0
- package/dist/encoders/codecs/h264.js.map +1 -0
- package/dist/encoders/codecs/hevc.d.ts +28 -0
- package/dist/encoders/codecs/hevc.d.ts.map +1 -0
- package/dist/encoders/codecs/hevc.js +73 -0
- package/dist/encoders/codecs/hevc.js.map +1 -0
- package/dist/encoders/codecs/index.d.ts +19 -0
- package/dist/encoders/codecs/index.d.ts.map +1 -0
- package/dist/encoders/codecs/index.js +60 -0
- package/dist/encoders/codecs/index.js.map +1 -0
- package/dist/encoders/codecs/vp9.d.ts +29 -0
- package/dist/encoders/codecs/vp9.d.ts.map +1 -0
- package/dist/encoders/codecs/vp9.js +58 -0
- package/dist/encoders/codecs/vp9.js.map +1 -0
- package/dist/encoders/index.d.ts +8 -0
- package/dist/encoders/index.d.ts.map +1 -0
- package/dist/encoders/index.js +8 -0
- package/dist/encoders/index.js.map +1 -0
- package/dist/ffmpeg/FFmpegProcess.d.ts +111 -0
- package/dist/ffmpeg/FFmpegProcess.d.ts.map +1 -0
- package/dist/ffmpeg/FFmpegProcess.js +543 -0
- package/dist/ffmpeg/FFmpegProcess.js.map +1 -0
- package/dist/ffmpeg/audio-codecs.d.ts +59 -0
- package/dist/ffmpeg/audio-codecs.d.ts.map +1 -0
- package/dist/ffmpeg/audio-codecs.js +99 -0
- package/dist/ffmpeg/audio-codecs.js.map +1 -0
- package/dist/ffmpeg/formats.d.ts +42 -0
- package/dist/ffmpeg/formats.d.ts.map +1 -0
- package/dist/ffmpeg/formats.js +147 -0
- package/dist/ffmpeg/formats.js.map +1 -0
- package/dist/ffmpeg/index.d.ts +9 -0
- package/dist/ffmpeg/index.d.ts.map +1 -0
- package/dist/ffmpeg/index.js +13 -0
- package/dist/ffmpeg/index.js.map +1 -0
- package/dist/ffmpeg/parsers/annexb.d.ts +88 -0
- package/dist/ffmpeg/parsers/annexb.d.ts.map +1 -0
- package/dist/ffmpeg/parsers/annexb.js +201 -0
- package/dist/ffmpeg/parsers/annexb.js.map +1 -0
- package/dist/ffmpeg/parsers/index.d.ts +6 -0
- package/dist/ffmpeg/parsers/index.d.ts.map +1 -0
- package/dist/ffmpeg/parsers/index.js +8 -0
- package/dist/ffmpeg/parsers/index.js.map +1 -0
- package/dist/ffmpeg/parsers/ivf.d.ts +54 -0
- package/dist/ffmpeg/parsers/ivf.d.ts.map +1 -0
- package/dist/ffmpeg/parsers/ivf.js +109 -0
- package/dist/ffmpeg/parsers/ivf.js.map +1 -0
- package/dist/ffmpeg/types.d.ts +85 -0
- package/dist/ffmpeg/types.d.ts.map +1 -0
- package/dist/ffmpeg/types.js +8 -0
- package/dist/ffmpeg/types.js.map +1 -0
- package/dist/formats/audio-formats.d.ts +61 -0
- package/dist/formats/audio-formats.d.ts.map +1 -0
- package/dist/formats/audio-formats.js +113 -0
- package/dist/formats/audio-formats.js.map +1 -0
- package/dist/formats/color-space.d.ts +35 -0
- package/dist/formats/color-space.d.ts.map +1 -0
- package/dist/formats/color-space.js +62 -0
- package/dist/formats/color-space.js.map +1 -0
- package/dist/formats/conversions/frame-converter.d.ts +42 -0
- package/dist/formats/conversions/frame-converter.d.ts.map +1 -0
- package/dist/formats/conversions/frame-converter.js +244 -0
- package/dist/formats/conversions/frame-converter.js.map +1 -0
- package/dist/formats/conversions/index.d.ts +8 -0
- package/dist/formats/conversions/index.d.ts.map +1 -0
- package/dist/formats/conversions/index.js +10 -0
- package/dist/formats/conversions/index.js.map +1 -0
- package/dist/formats/index.d.ts +9 -0
- package/dist/formats/index.d.ts.map +1 -0
- package/dist/formats/index.js +14 -0
- package/dist/formats/index.js.map +1 -0
- package/dist/formats/parsers/index.d.ts +5 -0
- package/dist/formats/parsers/index.d.ts.map +1 -0
- package/dist/formats/parsers/index.js +5 -0
- package/dist/formats/parsers/index.js.map +1 -0
- package/dist/formats/parsers/webp.d.ts +16 -0
- package/dist/formats/parsers/webp.d.ts.map +1 -0
- package/dist/formats/parsers/webp.js +116 -0
- package/dist/formats/parsers/webp.js.map +1 -0
- package/dist/formats/pixel-formats.d.ts +41 -0
- package/dist/formats/pixel-formats.d.ts.map +1 -0
- package/dist/formats/pixel-formats.js +113 -0
- package/dist/formats/pixel-formats.js.map +1 -0
- package/dist/hardware/HardwareAcceleration.d.ts +6 -0
- package/dist/hardware/HardwareAcceleration.d.ts.map +1 -0
- package/dist/hardware/HardwareAcceleration.js +6 -0
- package/dist/hardware/HardwareAcceleration.js.map +1 -0
- package/dist/hardware/decoder-args.d.ts +25 -0
- package/dist/hardware/decoder-args.d.ts.map +1 -0
- package/dist/hardware/decoder-args.js +84 -0
- package/dist/hardware/decoder-args.js.map +1 -0
- package/dist/hardware/detection.d.ts +39 -0
- package/dist/hardware/detection.d.ts.map +1 -0
- package/dist/hardware/detection.js +178 -0
- package/dist/hardware/detection.js.map +1 -0
- package/dist/hardware/encoder-args.d.ts +38 -0
- package/dist/hardware/encoder-args.d.ts.map +1 -0
- package/dist/hardware/encoder-args.js +177 -0
- package/dist/hardware/encoder-args.js.map +1 -0
- package/dist/hardware/index.d.ts +12 -0
- package/dist/hardware/index.d.ts.map +1 -0
- package/dist/hardware/index.js +14 -0
- package/dist/hardware/index.js.map +1 -0
- package/dist/hardware/types.d.ts +29 -0
- package/dist/hardware/types.d.ts.map +1 -0
- package/dist/hardware/types.js +58 -0
- package/dist/hardware/types.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/mediabunny/FFmpegAudioDecoder.d.ts +37 -0
- package/dist/mediabunny/FFmpegAudioDecoder.d.ts.map +1 -0
- package/dist/mediabunny/FFmpegAudioDecoder.js +254 -0
- package/dist/mediabunny/FFmpegAudioDecoder.js.map +1 -0
- package/dist/mediabunny/FFmpegAudioEncoder.d.ts +77 -0
- package/dist/mediabunny/FFmpegAudioEncoder.d.ts.map +1 -0
- package/dist/mediabunny/FFmpegAudioEncoder.js +484 -0
- package/dist/mediabunny/FFmpegAudioEncoder.js.map +1 -0
- package/dist/mediabunny/FFmpegVideoDecoder.d.ts +58 -0
- package/dist/mediabunny/FFmpegVideoDecoder.d.ts.map +1 -0
- package/dist/mediabunny/FFmpegVideoDecoder.js +366 -0
- package/dist/mediabunny/FFmpegVideoDecoder.js.map +1 -0
- package/dist/mediabunny/FFmpegVideoEncoder.d.ts +77 -0
- package/dist/mediabunny/FFmpegVideoEncoder.d.ts.map +1 -0
- package/dist/mediabunny/FFmpegVideoEncoder.js +551 -0
- package/dist/mediabunny/FFmpegVideoEncoder.js.map +1 -0
- package/dist/mediabunny/index.d.ts +21 -0
- package/dist/mediabunny/index.d.ts.map +1 -0
- package/dist/mediabunny/index.js +33 -0
- package/dist/mediabunny/index.js.map +1 -0
- package/dist/polyfill.d.ts +27 -0
- package/dist/polyfill.d.ts.map +1 -0
- package/dist/polyfill.js +78 -0
- package/dist/polyfill.js.map +1 -0
- package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts +72 -0
- package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts.map +1 -0
- package/dist/polyfills/CanvasRenderingContext2DPolyfill.js +293 -0
- package/dist/polyfills/CanvasRenderingContext2DPolyfill.js.map +1 -0
- package/dist/polyfills/ImageDataPolyfill.d.ts +12 -0
- package/dist/polyfills/ImageDataPolyfill.d.ts.map +1 -0
- package/dist/polyfills/ImageDataPolyfill.js +22 -0
- package/dist/polyfills/ImageDataPolyfill.js.map +1 -0
- package/dist/polyfills/OffscreenCanvas.d.ts +15 -0
- package/dist/polyfills/OffscreenCanvas.d.ts.map +1 -0
- package/dist/polyfills/OffscreenCanvas.js +35 -0
- package/dist/polyfills/OffscreenCanvas.js.map +1 -0
- package/dist/polyfills/OffscreenCanvasPolyfill.d.ts +16 -0
- package/dist/polyfills/OffscreenCanvasPolyfill.d.ts.map +1 -0
- package/dist/polyfills/OffscreenCanvasPolyfill.js +46 -0
- package/dist/polyfills/OffscreenCanvasPolyfill.js.map +1 -0
- package/dist/polyfills/VideoFramePolyfill.d.ts +44 -0
- package/dist/polyfills/VideoFramePolyfill.d.ts.map +1 -0
- package/dist/polyfills/VideoFramePolyfill.js +98 -0
- package/dist/polyfills/VideoFramePolyfill.js.map +1 -0
- package/dist/tools/generate-capabilities-profile.d.ts +2 -0
- package/dist/tools/generate-capabilities-profile.d.ts.map +1 -0
- package/dist/tools/generate-capabilities-profile.js +63 -0
- package/dist/tools/generate-capabilities-profile.js.map +1 -0
- package/dist/types/audio.d.ts +26 -0
- package/dist/types/audio.d.ts.map +1 -0
- package/dist/types/audio.js +5 -0
- package/dist/types/audio.js.map +1 -0
- package/dist/types/common.d.ts +68 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +70 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/geometry.d.ts +35 -0
- package/dist/types/geometry.d.ts.map +1 -0
- package/dist/types/geometry.js +34 -0
- package/dist/types/geometry.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/video.d.ts +43 -0
- package/dist/types/video.d.ts.map +1 -0
- package/dist/types/video.js +5 -0
- package/dist/types/video.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/aac.d.ts +26 -0
- package/dist/utils/aac.d.ts.map +1 -0
- package/dist/utils/aac.js +129 -0
- package/dist/utils/aac.js.map +1 -0
- package/dist/utils/avc.d.ts +39 -0
- package/dist/utils/avc.d.ts.map +1 -0
- package/dist/utils/avc.js +225 -0
- package/dist/utils/avc.js.map +1 -0
- package/dist/utils/buffer.d.ts +25 -0
- package/dist/utils/buffer.d.ts.map +1 -0
- package/dist/utils/buffer.js +73 -0
- package/dist/utils/buffer.js.map +1 -0
- package/dist/utils/hevc.d.ts +27 -0
- package/dist/utils/hevc.d.ts.map +1 -0
- package/dist/utils/hevc.js +239 -0
- package/dist/utils/hevc.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +16 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +55 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +110 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/type-guards.d.ts +50 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +49 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/dist/utils/validation.d.ts +32 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +66 -0
- package/dist/utils/validation.js.map +1 -0
- package/docs/api.md +506 -0
- package/docs/codecs.md +382 -0
- package/docs/configuration.md +442 -0
- package/examples/README.md +100 -0
- package/examples/audio-encoding.ts +85 -0
- package/examples/hardware-decoding.ts +245 -0
- package/examples/hardware-encoding.ts +231 -0
- package/examples/image-decoding.ts +145 -0
- package/examples/streaming.ts +151 -0
- package/examples/transparent-video.ts +162 -0
- package/examples/video-decoding.ts +107 -0
- package/examples/video-encoding.ts +93 -0
- package/package.json +105 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frame format conversion utilities
|
|
3
|
+
*
|
|
4
|
+
* Standalone functions for converting video frame data between pixel formats.
|
|
5
|
+
* These functions operate on raw pixel buffers without requiring a VideoFrame instance.
|
|
6
|
+
*/
|
|
7
|
+
import { rgbaToYuv, yuvToRgba } from '../color-space.js';
|
|
8
|
+
import { isRgbFormat, isBgrFormat } from '../pixel-formats.js';
|
|
9
|
+
/**
|
|
10
|
+
* Get UV values at a specific position in a YUV frame
|
|
11
|
+
*/
|
|
12
|
+
export function getUvAt(data, format, width, height, x, y) {
|
|
13
|
+
if (format === 'I420' || format === 'I420A') {
|
|
14
|
+
const chromaW = Math.ceil(width / 2);
|
|
15
|
+
const chromaH = Math.ceil(height / 2);
|
|
16
|
+
const ySize = width * height;
|
|
17
|
+
const uvSize = chromaW * chromaH;
|
|
18
|
+
const cx = Math.floor(x / 2);
|
|
19
|
+
const cy = Math.floor(y / 2);
|
|
20
|
+
const u = data[ySize + cy * chromaW + cx];
|
|
21
|
+
const v = data[ySize + uvSize + cy * chromaW + cx];
|
|
22
|
+
return [u, v];
|
|
23
|
+
}
|
|
24
|
+
else if (format === 'NV12') {
|
|
25
|
+
const ySize = width * height;
|
|
26
|
+
const cx = Math.floor(x / 2) * 2;
|
|
27
|
+
const cy = Math.floor(y / 2);
|
|
28
|
+
const u = data[ySize + cy * width + cx];
|
|
29
|
+
const v = data[ySize + cy * width + cx + 1];
|
|
30
|
+
return [u, v];
|
|
31
|
+
}
|
|
32
|
+
else if (format === 'I422') {
|
|
33
|
+
const chromaW = Math.ceil(width / 2);
|
|
34
|
+
const ySize = width * height;
|
|
35
|
+
const uvSize = chromaW * height;
|
|
36
|
+
const cx = Math.floor(x / 2);
|
|
37
|
+
const u = data[ySize + y * chromaW + cx];
|
|
38
|
+
const v = data[ySize + uvSize + y * chromaW + cx];
|
|
39
|
+
return [u, v];
|
|
40
|
+
}
|
|
41
|
+
else if (format === 'I444') {
|
|
42
|
+
const ySize = width * height;
|
|
43
|
+
const u = data[ySize + y * width + x];
|
|
44
|
+
const v = data[2 * ySize + y * width + x];
|
|
45
|
+
return [u, v];
|
|
46
|
+
}
|
|
47
|
+
return [128, 128];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get the byte offset for a plane in a frame buffer
|
|
51
|
+
*/
|
|
52
|
+
export function getPlaneOffset(format, width, height, planeIndex) {
|
|
53
|
+
const chromaW = Math.ceil(width / 2);
|
|
54
|
+
const chromaH = Math.ceil(height / 2);
|
|
55
|
+
switch (format) {
|
|
56
|
+
case 'I420':
|
|
57
|
+
case 'I420A': {
|
|
58
|
+
const ySize = width * height;
|
|
59
|
+
const uvSize = chromaW * chromaH;
|
|
60
|
+
if (planeIndex === 0)
|
|
61
|
+
return 0;
|
|
62
|
+
if (planeIndex === 1)
|
|
63
|
+
return ySize;
|
|
64
|
+
if (planeIndex === 2)
|
|
65
|
+
return ySize + uvSize;
|
|
66
|
+
if (planeIndex === 3)
|
|
67
|
+
return ySize + 2 * uvSize;
|
|
68
|
+
return 0;
|
|
69
|
+
}
|
|
70
|
+
case 'I422': {
|
|
71
|
+
const ySize = width * height;
|
|
72
|
+
const uvSize = chromaW * height;
|
|
73
|
+
if (planeIndex === 0)
|
|
74
|
+
return 0;
|
|
75
|
+
if (planeIndex === 1)
|
|
76
|
+
return ySize;
|
|
77
|
+
if (planeIndex === 2)
|
|
78
|
+
return ySize + uvSize;
|
|
79
|
+
return 0;
|
|
80
|
+
}
|
|
81
|
+
case 'I444': {
|
|
82
|
+
const planeSize = width * height;
|
|
83
|
+
return planeIndex * planeSize;
|
|
84
|
+
}
|
|
85
|
+
case 'NV12': {
|
|
86
|
+
if (planeIndex === 0)
|
|
87
|
+
return 0;
|
|
88
|
+
return width * height;
|
|
89
|
+
}
|
|
90
|
+
default:
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Convert RGB to RGB with potential channel swap (RGBA <-> BGRA)
|
|
96
|
+
*/
|
|
97
|
+
export function convertRgbToRgb(src, dest, destFormat, srcX, srcY, srcW, srcH) {
|
|
98
|
+
const srcStride = src.width * 4;
|
|
99
|
+
const swapRB = isBgrFormat(src.format) !== isBgrFormat(destFormat);
|
|
100
|
+
let destOffset = 0;
|
|
101
|
+
for (let y = 0; y < srcH; y++) {
|
|
102
|
+
for (let x = 0; x < srcW; x++) {
|
|
103
|
+
const srcOffset = (srcY + y) * srcStride + (srcX + x) * 4;
|
|
104
|
+
if (swapRB) {
|
|
105
|
+
dest[destOffset++] = src.data[srcOffset + 2];
|
|
106
|
+
dest[destOffset++] = src.data[srcOffset + 1];
|
|
107
|
+
dest[destOffset++] = src.data[srcOffset];
|
|
108
|
+
dest[destOffset++] = src.data[srcOffset + 3];
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
dest[destOffset++] = src.data[srcOffset];
|
|
112
|
+
dest[destOffset++] = src.data[srcOffset + 1];
|
|
113
|
+
dest[destOffset++] = src.data[srcOffset + 2];
|
|
114
|
+
dest[destOffset++] = src.data[srcOffset + 3];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Convert YUV to RGB format
|
|
121
|
+
*/
|
|
122
|
+
export function convertYuvToRgb(src, dest, destFormat, srcX, srcY, srcW, srcH) {
|
|
123
|
+
const isBgr = isBgrFormat(destFormat);
|
|
124
|
+
const yOffset = getPlaneOffset(src.format, src.width, src.height, 0);
|
|
125
|
+
const yStride = src.width;
|
|
126
|
+
let destOffset = 0;
|
|
127
|
+
for (let y = 0; y < srcH; y++) {
|
|
128
|
+
for (let x = 0; x < srcW; x++) {
|
|
129
|
+
const absX = srcX + x;
|
|
130
|
+
const absY = srcY + y;
|
|
131
|
+
const yVal = src.data[yOffset + absY * yStride + absX];
|
|
132
|
+
const [uVal, vVal] = getUvAt(src.data, src.format, src.width, src.height, absX, absY);
|
|
133
|
+
const [r, g, b, a] = yuvToRgba(yVal, uVal, vVal);
|
|
134
|
+
if (isBgr) {
|
|
135
|
+
dest[destOffset++] = b;
|
|
136
|
+
dest[destOffset++] = g;
|
|
137
|
+
dest[destOffset++] = r;
|
|
138
|
+
dest[destOffset++] = a;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
dest[destOffset++] = r;
|
|
142
|
+
dest[destOffset++] = g;
|
|
143
|
+
dest[destOffset++] = b;
|
|
144
|
+
dest[destOffset++] = a;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Convert RGB to YUV format
|
|
151
|
+
*/
|
|
152
|
+
export function convertRgbToYuv(src, dest, destFormat, srcX, srcY, srcW, srcH) {
|
|
153
|
+
const isBgr = isBgrFormat(src.format);
|
|
154
|
+
const srcStride = src.width * 4;
|
|
155
|
+
const yPlaneSize = srcW * srcH;
|
|
156
|
+
const chromaW = Math.ceil(srcW / 2);
|
|
157
|
+
const chromaH = Math.ceil(srcH / 2);
|
|
158
|
+
// Fill Y plane
|
|
159
|
+
for (let y = 0; y < srcH; y++) {
|
|
160
|
+
for (let x = 0; x < srcW; x++) {
|
|
161
|
+
const srcOffset = (srcY + y) * srcStride + (srcX + x) * 4;
|
|
162
|
+
const r = isBgr ? src.data[srcOffset + 2] : src.data[srcOffset];
|
|
163
|
+
const g = src.data[srcOffset + 1];
|
|
164
|
+
const b = isBgr ? src.data[srcOffset] : src.data[srcOffset + 2];
|
|
165
|
+
const [yVal] = rgbaToYuv(r, g, b);
|
|
166
|
+
dest[y * srcW + x] = yVal;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Fill U, V planes
|
|
170
|
+
if (destFormat === 'I420' || destFormat === 'I420A') {
|
|
171
|
+
const uOffset = yPlaneSize;
|
|
172
|
+
const vOffset = yPlaneSize + chromaW * chromaH;
|
|
173
|
+
for (let y = 0; y < chromaH; y++) {
|
|
174
|
+
for (let x = 0; x < chromaW; x++) {
|
|
175
|
+
const srcPx = Math.min((srcX + x * 2), src.width - 1);
|
|
176
|
+
const srcPy = Math.min((srcY + y * 2), src.height - 1);
|
|
177
|
+
const srcOffset = srcPy * srcStride + srcPx * 4;
|
|
178
|
+
const r = isBgr ? src.data[srcOffset + 2] : src.data[srcOffset];
|
|
179
|
+
const g = src.data[srcOffset + 1];
|
|
180
|
+
const b = isBgr ? src.data[srcOffset] : src.data[srcOffset + 2];
|
|
181
|
+
const [, uVal, vVal] = rgbaToYuv(r, g, b);
|
|
182
|
+
dest[uOffset + y * chromaW + x] = uVal;
|
|
183
|
+
dest[vOffset + y * chromaW + x] = vVal;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (destFormat === 'I420A') {
|
|
187
|
+
const aOffset = yPlaneSize + 2 * chromaW * chromaH;
|
|
188
|
+
for (let y = 0; y < srcH; y++) {
|
|
189
|
+
for (let x = 0; x < srcW; x++) {
|
|
190
|
+
const srcOffset = (srcY + y) * srcStride + (srcX + x) * 4;
|
|
191
|
+
dest[aOffset + y * srcW + x] = src.data[srcOffset + 3];
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else if (destFormat === 'NV12') {
|
|
197
|
+
const uvOffset = yPlaneSize;
|
|
198
|
+
for (let y = 0; y < chromaH; y++) {
|
|
199
|
+
for (let x = 0; x < chromaW; x++) {
|
|
200
|
+
const srcPx = Math.min((srcX + x * 2), src.width - 1);
|
|
201
|
+
const srcPy = Math.min((srcY + y * 2), src.height - 1);
|
|
202
|
+
const srcOffset = srcPy * srcStride + srcPx * 4;
|
|
203
|
+
const r = isBgr ? src.data[srcOffset + 2] : src.data[srcOffset];
|
|
204
|
+
const g = src.data[srcOffset + 1];
|
|
205
|
+
const b = isBgr ? src.data[srcOffset] : src.data[srcOffset + 2];
|
|
206
|
+
const [, uVal, vVal] = rgbaToYuv(r, g, b);
|
|
207
|
+
dest[uvOffset + y * srcW + x * 2] = uVal;
|
|
208
|
+
dest[uvOffset + y * srcW + x * 2 + 1] = vVal;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Convert between any two pixel formats
|
|
215
|
+
*/
|
|
216
|
+
export function convertFrameFormat(src, dest, destFormat, srcX = 0, srcY = 0, srcW, srcH) {
|
|
217
|
+
const width = srcW ?? src.width;
|
|
218
|
+
const height = srcH ?? src.height;
|
|
219
|
+
const srcIsRgb = isRgbFormat(src.format);
|
|
220
|
+
const destIsRgb = isRgbFormat(destFormat);
|
|
221
|
+
if (srcIsRgb && destIsRgb) {
|
|
222
|
+
convertRgbToRgb(src, dest, destFormat, srcX, srcY, width, height);
|
|
223
|
+
}
|
|
224
|
+
else if (!srcIsRgb && destIsRgb) {
|
|
225
|
+
convertYuvToRgb(src, dest, destFormat, srcX, srcY, width, height);
|
|
226
|
+
}
|
|
227
|
+
else if (srcIsRgb && !destIsRgb) {
|
|
228
|
+
convertRgbToYuv(src, dest, destFormat, srcX, srcY, width, height);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
// YUV to YUV - convert via RGB
|
|
232
|
+
const rgbaSize = width * height * 4;
|
|
233
|
+
const rgbaBuffer = new Uint8Array(rgbaSize);
|
|
234
|
+
convertYuvToRgb(src, rgbaBuffer, 'RGBA', srcX, srcY, width, height);
|
|
235
|
+
const tempSrc = {
|
|
236
|
+
data: rgbaBuffer,
|
|
237
|
+
format: 'RGBA',
|
|
238
|
+
width,
|
|
239
|
+
height,
|
|
240
|
+
};
|
|
241
|
+
convertRgbToYuv(tempSrc, dest, destFormat, 0, 0, width, height);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=frame-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-converter.js","sourceRoot":"","sources":["../../../src/formats/conversions/frame-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format conversions
|
|
3
|
+
*
|
|
4
|
+
* Provides pixel-level and frame-level format conversions.
|
|
5
|
+
*/
|
|
6
|
+
export { rgbaToYuv, yuvToRgba } from '../color-space.js';
|
|
7
|
+
export { getUvAt, getPlaneOffset, convertRgbToRgb, convertYuvToRgb, convertRgbToYuv, convertFrameFormat, type FrameBuffer, } from './frame-converter.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/formats/conversions/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EACL,OAAO,EACP,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,KAAK,WAAW,GACjB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format conversions
|
|
3
|
+
*
|
|
4
|
+
* Provides pixel-level and frame-level format conversions.
|
|
5
|
+
*/
|
|
6
|
+
// Pixel-level conversions
|
|
7
|
+
export { rgbaToYuv, yuvToRgba } from '../color-space.js';
|
|
8
|
+
// Frame-level conversions
|
|
9
|
+
export { getUvAt, getPlaneOffset, convertRgbToRgb, convertYuvToRgb, convertRgbToYuv, convertFrameFormat, } from './frame-converter.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formats/conversions/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0BAA0B;AAC1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEzD,0BAA0B;AAC1B,OAAO,EACL,OAAO,EACP,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format utilities - pixel formats, color spaces, and parsers
|
|
3
|
+
*/
|
|
4
|
+
export * from './pixel-formats.js';
|
|
5
|
+
export * from './color-space.js';
|
|
6
|
+
export * from './parsers/index.js';
|
|
7
|
+
export * from './conversions/index.js';
|
|
8
|
+
export * from './audio-formats.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formats/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,oBAAoB,CAAC;AAGnC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format utilities - pixel formats, color spaces, and parsers
|
|
3
|
+
*/
|
|
4
|
+
// Pixel format utilities - re-export all
|
|
5
|
+
export * from './pixel-formats.js';
|
|
6
|
+
// Color space utilities - re-export all
|
|
7
|
+
export * from './color-space.js';
|
|
8
|
+
// Format parsers
|
|
9
|
+
export * from './parsers/index.js';
|
|
10
|
+
// Format conversions
|
|
11
|
+
export * from './conversions/index.js';
|
|
12
|
+
// Audio formats
|
|
13
|
+
export * from './audio-formats.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formats/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,yCAAyC;AACzC,cAAc,oBAAoB,CAAC;AAEnC,wCAAwC;AACxC,cAAc,kBAAkB,CAAC;AAEjC,iBAAiB;AACjB,cAAc,oBAAoB,CAAC;AAEnC,qBAAqB;AACrB,cAAc,wBAAwB,CAAC;AAEvC,gBAAgB;AAChB,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/formats/parsers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formats/parsers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAiB,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebP format header parser
|
|
3
|
+
* Parses RIFF/WEBP container to extract dimensions and detect animation
|
|
4
|
+
*/
|
|
5
|
+
export interface WebPInfo {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
isAnimated: boolean;
|
|
9
|
+
frameCount: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Parse WebP header to extract dimensions and detect animation
|
|
13
|
+
* Returns null if parsing fails
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseWebPHeader(data: Uint8Array): WebPInfo | null;
|
|
16
|
+
//# sourceMappingURL=webp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webp.d.ts","sourceRoot":"","sources":["../../../src/formats/parsers/webp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CAyBjE"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebP format header parser
|
|
3
|
+
* Parses RIFF/WEBP container to extract dimensions and detect animation
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Parse WebP header to extract dimensions and detect animation
|
|
7
|
+
* Returns null if parsing fails
|
|
8
|
+
*/
|
|
9
|
+
export function parseWebPHeader(data) {
|
|
10
|
+
if (data.length < 12)
|
|
11
|
+
return null;
|
|
12
|
+
// Check RIFF header
|
|
13
|
+
const riff = String.fromCharCode(data[0], data[1], data[2], data[3]);
|
|
14
|
+
const webp = String.fromCharCode(data[8], data[9], data[10], data[11]);
|
|
15
|
+
if (riff !== 'RIFF' || webp !== 'WEBP')
|
|
16
|
+
return null;
|
|
17
|
+
let offset = 12;
|
|
18
|
+
// Read first chunk
|
|
19
|
+
if (offset + 8 > data.length)
|
|
20
|
+
return null;
|
|
21
|
+
const chunkFourCC = String.fromCharCode(data[offset], data[offset + 1], data[offset + 2], data[offset + 3]);
|
|
22
|
+
const chunkSize = data[offset + 4] | (data[offset + 5] << 8) | (data[offset + 6] << 16) | (data[offset + 7] << 24);
|
|
23
|
+
if (chunkFourCC === 'VP8X') {
|
|
24
|
+
return parseVP8XChunk(data, offset, chunkSize);
|
|
25
|
+
}
|
|
26
|
+
else if (chunkFourCC === 'VP8 ') {
|
|
27
|
+
return parseVP8Chunk(data, offset);
|
|
28
|
+
}
|
|
29
|
+
else if (chunkFourCC === 'VP8L') {
|
|
30
|
+
return parseVP8LChunk(data, offset);
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Parse VP8X (extended) chunk - can contain animation
|
|
36
|
+
*/
|
|
37
|
+
function parseVP8XChunk(data, offset, chunkSize) {
|
|
38
|
+
if (offset + 8 + 10 > data.length)
|
|
39
|
+
return null;
|
|
40
|
+
const flags = data[offset + 8];
|
|
41
|
+
const hasAnimation = (flags & 0x02) !== 0;
|
|
42
|
+
// Read canvas width (24-bit little-endian at offset+12) - value is width-1
|
|
43
|
+
const canvasWidth = (data[offset + 12] | (data[offset + 13] << 8) | (data[offset + 14] << 16)) + 1;
|
|
44
|
+
// Read canvas height (24-bit little-endian at offset+15) - value is height-1
|
|
45
|
+
const canvasHeight = (data[offset + 15] | (data[offset + 16] << 8) | (data[offset + 17] << 16)) + 1;
|
|
46
|
+
// Count ANMF frames if animated
|
|
47
|
+
let frameCount = 1;
|
|
48
|
+
if (hasAnimation) {
|
|
49
|
+
frameCount = countAnimationFrames(data, offset + 8 + chunkSize + (chunkSize & 1));
|
|
50
|
+
// If we found 0 frames but it has animation flag, assume at least 1
|
|
51
|
+
if (frameCount === 0)
|
|
52
|
+
frameCount = 1;
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
width: canvasWidth,
|
|
56
|
+
height: canvasHeight,
|
|
57
|
+
isAnimated: hasAnimation,
|
|
58
|
+
frameCount: hasAnimation ? frameCount : 1,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Count ANMF (animation frame) chunks in WebP data
|
|
63
|
+
*/
|
|
64
|
+
function countAnimationFrames(data, startPos) {
|
|
65
|
+
let frameCount = 0;
|
|
66
|
+
let pos = startPos;
|
|
67
|
+
while (pos + 8 <= data.length) {
|
|
68
|
+
const fc = String.fromCharCode(data[pos], data[pos + 1], data[pos + 2], data[pos + 3]);
|
|
69
|
+
const size = data[pos + 4] | (data[pos + 5] << 8) | (data[pos + 6] << 16) | (data[pos + 7] << 24);
|
|
70
|
+
if (fc === 'ANMF') {
|
|
71
|
+
frameCount++;
|
|
72
|
+
}
|
|
73
|
+
// Move to next chunk (size + padding for alignment)
|
|
74
|
+
pos += 8 + size + (size & 1);
|
|
75
|
+
}
|
|
76
|
+
return frameCount;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Parse VP8 (lossy) chunk - read dimensions from VP8 bitstream
|
|
80
|
+
*/
|
|
81
|
+
function parseVP8Chunk(data, offset) {
|
|
82
|
+
if (offset + 8 + 10 > data.length)
|
|
83
|
+
return null;
|
|
84
|
+
// VP8 frame header starts with 3-byte frame tag
|
|
85
|
+
const frameTag = data[offset + 8] | (data[offset + 9] << 8) | (data[offset + 10] << 16);
|
|
86
|
+
const keyFrame = (frameTag & 1) === 0;
|
|
87
|
+
if (keyFrame) {
|
|
88
|
+
// Skip frame tag (3 bytes) + signature (3 bytes)
|
|
89
|
+
const widthCode = data[offset + 14] | (data[offset + 15] << 8);
|
|
90
|
+
const heightCode = data[offset + 16] | (data[offset + 17] << 8);
|
|
91
|
+
const width = widthCode & 0x3fff;
|
|
92
|
+
const height = heightCode & 0x3fff;
|
|
93
|
+
return { width, height, isAnimated: false, frameCount: 1 };
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Parse VP8L (lossless) chunk - read dimensions from VP8L header
|
|
99
|
+
*/
|
|
100
|
+
function parseVP8LChunk(data, offset) {
|
|
101
|
+
if (offset + 8 + 5 > data.length)
|
|
102
|
+
return null;
|
|
103
|
+
// Check signature byte (should be 0x2f)
|
|
104
|
+
if (data[offset + 8] !== 0x2f)
|
|
105
|
+
return null;
|
|
106
|
+
// Read 4 bytes containing width and height (14 bits each)
|
|
107
|
+
const b0 = data[offset + 9];
|
|
108
|
+
const b1 = data[offset + 10];
|
|
109
|
+
const b2 = data[offset + 11];
|
|
110
|
+
const b3 = data[offset + 12];
|
|
111
|
+
const bits = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24);
|
|
112
|
+
const width = (bits & 0x3fff) + 1;
|
|
113
|
+
const height = ((bits >> 14) & 0x3fff) + 1;
|
|
114
|
+
return { width, height, isAnimated: false, frameCount: 1 };
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=webp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webp.js","sourceRoot":"","sources":["../../../src/formats/parsers/webp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAgB;IAC9C,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAElC,oBAAoB;IACpB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAEpD,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,mBAAmB;IACnB,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE1C,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5G,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEnH,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAClC,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAClC,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,IAAgB,EAAE,MAAc,EAAE,SAAiB;IACzE,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE/C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAE1C,2EAA2E;IAC3E,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACnG,6EAA6E;IAC7E,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAEpG,gCAAgC;IAChC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,YAAY,EAAE,CAAC;QACjB,UAAU,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;QAClF,oEAAoE;QACpE,IAAI,UAAU,KAAK,CAAC;YAAE,UAAU,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAgB,EAAE,QAAgB;IAC9D,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,GAAG,GAAG,QAAQ,CAAC;IAEnB,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAElG,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAClB,UAAU,EAAE,CAAC;QACf,CAAC;QAED,oDAAoD;QACpD,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAAgB,EAAE,MAAc;IACrD,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE/C,gDAAgD;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAEtC,IAAI,QAAQ,EAAE,CAAC;QACb,iDAAiD;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhE,MAAM,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;QACjC,MAAM,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;QAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAC7D,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,IAAgB,EAAE,MAAc;IACtD,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE9C,wCAAwC;IACxC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE3C,0DAA0D;IAC1D,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAE7B,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pixel format definitions and utilities
|
|
3
|
+
*/
|
|
4
|
+
export type VideoPixelFormat = 'I420' | 'I420A' | 'I422' | 'I444' | 'NV12' | 'RGBA' | 'RGBX' | 'BGRA' | 'BGRX';
|
|
5
|
+
/**
|
|
6
|
+
* Information about a single plane in a pixel format
|
|
7
|
+
*/
|
|
8
|
+
export interface PlaneInfo {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
bytesPerPixel: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Calculate total allocation size for a frame
|
|
15
|
+
*/
|
|
16
|
+
export declare function getFrameAllocationSize(format: VideoPixelFormat, width: number, height: number): number;
|
|
17
|
+
/**
|
|
18
|
+
* Get number of planes for a pixel format
|
|
19
|
+
*/
|
|
20
|
+
export declare function getPlaneCount(format: VideoPixelFormat): number;
|
|
21
|
+
/**
|
|
22
|
+
* Get plane info for a format at a specific plane index
|
|
23
|
+
*/
|
|
24
|
+
export declare function getPlaneInfo(format: VideoPixelFormat, width: number, height: number, planeIndex: number): PlaneInfo;
|
|
25
|
+
/**
|
|
26
|
+
* Check if a format is RGB-based (as opposed to YUV)
|
|
27
|
+
*/
|
|
28
|
+
export declare function isRgbFormat(format: VideoPixelFormat): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a format is YUV-based
|
|
31
|
+
*/
|
|
32
|
+
export declare function isYuvFormat(format: VideoPixelFormat): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Check if a format uses BGR channel order
|
|
35
|
+
*/
|
|
36
|
+
export declare function isBgrFormat(format: VideoPixelFormat): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Check if a format has an alpha channel
|
|
39
|
+
*/
|
|
40
|
+
export declare function hasAlphaChannel(format: VideoPixelFormat): boolean;
|
|
41
|
+
//# sourceMappingURL=pixel-formats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pixel-formats.d.ts","sourceRoot":"","sources":["../../src/formats/pixel-formats.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAyBtG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAkB9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,SAAS,CA2BX;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAEjE"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pixel format definitions and utilities
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Calculate total allocation size for a frame
|
|
6
|
+
*/
|
|
7
|
+
export function getFrameAllocationSize(format, width, height) {
|
|
8
|
+
switch (format) {
|
|
9
|
+
case 'I420':
|
|
10
|
+
// Y: width * height, U: (width/2) * (height/2), V: (width/2) * (height/2)
|
|
11
|
+
return width * height + 2 * Math.ceil(width / 2) * Math.ceil(height / 2);
|
|
12
|
+
case 'I420A':
|
|
13
|
+
// I420 + Alpha plane (width * height)
|
|
14
|
+
return width * height * 2 + 2 * Math.ceil(width / 2) * Math.ceil(height / 2);
|
|
15
|
+
case 'I422':
|
|
16
|
+
// Y: width * height, U: (width/2) * height, V: (width/2) * height
|
|
17
|
+
return width * height + 2 * Math.ceil(width / 2) * height;
|
|
18
|
+
case 'I444':
|
|
19
|
+
// Y: width * height, U: width * height, V: width * height
|
|
20
|
+
return width * height * 3;
|
|
21
|
+
case 'NV12':
|
|
22
|
+
// Y: width * height, UV interleaved: width * (height/2)
|
|
23
|
+
return width * height + width * Math.ceil(height / 2);
|
|
24
|
+
case 'RGBA':
|
|
25
|
+
case 'RGBX':
|
|
26
|
+
case 'BGRA':
|
|
27
|
+
case 'BGRX':
|
|
28
|
+
return width * height * 4;
|
|
29
|
+
default:
|
|
30
|
+
return width * height * 4; // Assume RGBA as fallback
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get number of planes for a pixel format
|
|
35
|
+
*/
|
|
36
|
+
export function getPlaneCount(format) {
|
|
37
|
+
switch (format) {
|
|
38
|
+
case 'I420':
|
|
39
|
+
case 'I422':
|
|
40
|
+
case 'I444':
|
|
41
|
+
return 3; // Y, U, V
|
|
42
|
+
case 'I420A':
|
|
43
|
+
return 4; // Y, U, V, A
|
|
44
|
+
case 'NV12':
|
|
45
|
+
return 2; // Y, UV interleaved
|
|
46
|
+
case 'RGBA':
|
|
47
|
+
case 'RGBX':
|
|
48
|
+
case 'BGRA':
|
|
49
|
+
case 'BGRX':
|
|
50
|
+
return 1; // Single plane
|
|
51
|
+
default:
|
|
52
|
+
return 1;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get plane info for a format at a specific plane index
|
|
57
|
+
*/
|
|
58
|
+
export function getPlaneInfo(format, width, height, planeIndex) {
|
|
59
|
+
const chromaW = Math.ceil(width / 2);
|
|
60
|
+
const chromaH = Math.ceil(height / 2);
|
|
61
|
+
switch (format) {
|
|
62
|
+
case 'I420':
|
|
63
|
+
if (planeIndex === 0)
|
|
64
|
+
return { width, height, bytesPerPixel: 1 };
|
|
65
|
+
return { width: chromaW, height: chromaH, bytesPerPixel: 1 };
|
|
66
|
+
case 'I420A':
|
|
67
|
+
if (planeIndex === 0 || planeIndex === 3)
|
|
68
|
+
return { width, height, bytesPerPixel: 1 };
|
|
69
|
+
return { width: chromaW, height: chromaH, bytesPerPixel: 1 };
|
|
70
|
+
case 'I422':
|
|
71
|
+
if (planeIndex === 0)
|
|
72
|
+
return { width, height, bytesPerPixel: 1 };
|
|
73
|
+
return { width: chromaW, height, bytesPerPixel: 1 };
|
|
74
|
+
case 'I444':
|
|
75
|
+
return { width, height, bytesPerPixel: 1 };
|
|
76
|
+
case 'NV12':
|
|
77
|
+
if (planeIndex === 0)
|
|
78
|
+
return { width, height, bytesPerPixel: 1 };
|
|
79
|
+
return { width, height: chromaH, bytesPerPixel: 2 }; // UV interleaved
|
|
80
|
+
case 'RGBA':
|
|
81
|
+
case 'RGBX':
|
|
82
|
+
case 'BGRA':
|
|
83
|
+
case 'BGRX':
|
|
84
|
+
return { width, height, bytesPerPixel: 4 };
|
|
85
|
+
default:
|
|
86
|
+
return { width, height, bytesPerPixel: 4 };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Check if a format is RGB-based (as opposed to YUV)
|
|
91
|
+
*/
|
|
92
|
+
export function isRgbFormat(format) {
|
|
93
|
+
return format === 'RGBA' || format === 'RGBX' || format === 'BGRA' || format === 'BGRX';
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Check if a format is YUV-based
|
|
97
|
+
*/
|
|
98
|
+
export function isYuvFormat(format) {
|
|
99
|
+
return !isRgbFormat(format);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check if a format uses BGR channel order
|
|
103
|
+
*/
|
|
104
|
+
export function isBgrFormat(format) {
|
|
105
|
+
return format === 'BGRA' || format === 'BGRX';
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Check if a format has an alpha channel
|
|
109
|
+
*/
|
|
110
|
+
export function hasAlphaChannel(format) {
|
|
111
|
+
return format === 'RGBA' || format === 'BGRA' || format === 'I420A';
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=pixel-formats.js.map
|