@carbonenginejs/runtime-resource 0.9.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +3 -2
- package/README.md +47 -6
- package/dist/CjsMotherLode.js +88 -88
- package/dist/CjsMotherLode.js.map +1 -1
- package/dist/CjsResMan.js +718 -229
- package/dist/CjsResMan.js.map +1 -1
- package/dist/CjsResManFetchProvider.js +94 -0
- package/dist/CjsResManFetchProvider.js.map +1 -0
- package/dist/{CjsResManQueue.js → CjsResManWorkQueue.js} +112 -25
- package/dist/CjsResManWorkQueue.js.map +1 -0
- package/dist/format/CjsBlueReader.js +91 -2
- package/dist/format/CjsBlueReader.js.map +1 -1
- package/dist/format/CjsFormat.js +47 -21
- package/dist/format/CjsFormat.js.map +1 -1
- package/dist/format/CjsReader.js +4 -0
- package/dist/format/CjsReader.js.map +1 -1
- package/dist/format/CjsResourceProbe.js +4 -2
- package/dist/format/CjsResourceProbe.js.map +1 -1
- package/dist/format/payloadContract.js +20 -0
- package/dist/format/payloadContract.js.map +1 -1
- package/dist/formats/black/CjsBlackFormat.js +15 -1
- package/dist/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/formats/black/core/CjsBlackBinaryReader.js +103 -0
- package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +62 -1
- package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
- package/dist/formats/black/core/CjsBlackReader.js +127 -2
- package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +103 -0
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
- package/dist/formats/black/core/helpers.js +17 -0
- package/dist/formats/black/core/helpers.js.map +1 -1
- package/dist/formats/bnk/CjsBnkFormat.js +8 -0
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/helpers.js +20 -0
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/musicNodes.js +40 -3
- package/dist/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/formats/bnk/core/soundbanksInfo.js +2 -0
- package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
- package/dist/formats/cmf/core/binary.js +71 -0
- package/dist/formats/cmf/core/binary.js.map +1 -1
- package/dist/formats/cmf/core/buffers.js +4 -0
- package/dist/formats/cmf/core/buffers.js.map +1 -1
- package/dist/formats/cmf/core/helpers.js +31 -0
- package/dist/formats/cmf/core/helpers.js.map +1 -1
- package/dist/formats/cmf/core/schema.js +10 -0
- package/dist/formats/cmf/core/schema.js.map +1 -1
- package/dist/formats/cmf/core/shared.js +9 -0
- package/dist/formats/cmf/core/shared.js.map +1 -1
- package/dist/formats/cmf/core/writer.js +54 -0
- package/dist/formats/cmf/core/writer.js.map +1 -1
- package/dist/formats/dds/core/bc6h.js +10 -0
- package/dist/formats/dds/core/bc6h.js.map +1 -1
- package/dist/formats/dds/core/bc7.js +16 -0
- package/dist/formats/dds/core/bc7.js.map +1 -1
- package/dist/formats/dds/core/helpers.js +47 -0
- package/dist/formats/dds/core/helpers.js.map +1 -1
- package/dist/formats/fbx/core/helpers.js +22 -1
- package/dist/formats/fbx/core/helpers.js.map +1 -1
- package/dist/formats/flac/CjsFlacFormat.js +49 -0
- package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/formats/flac/core/helpers.js +20 -0
- package/dist/formats/flac/core/helpers.js.map +1 -1
- package/dist/formats/gif/CjsGifFormat.js +49 -0
- package/dist/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/formats/gif/core/helpers.js +20 -0
- package/dist/formats/gif/core/helpers.js.map +1 -1
- package/dist/formats/gltf/core/helpers.js +18 -3
- package/dist/formats/gltf/core/helpers.js.map +1 -1
- package/dist/formats/gltf/core/parser.js +13 -0
- package/dist/formats/gltf/core/parser.js.map +1 -1
- package/dist/formats/gltf/core/targets.js +10 -0
- package/dist/formats/gltf/core/targets.js.map +1 -1
- package/dist/formats/gr2/core/bitknit2.js +2 -0
- package/dist/formats/gr2/core/bitknit2.js.map +1 -1
- package/dist/formats/gr2/core/helpers.js +20 -0
- package/dist/formats/gr2/core/helpers.js.map +1 -1
- package/dist/formats/gr2/core/tangents.js +9 -9
- package/dist/formats/gr2/core/tangents.js.map +1 -1
- package/dist/formats/gr2/core/targets.js +10 -0
- package/dist/formats/gr2/core/targets.js.map +1 -1
- package/dist/formats/index.js +4 -4
- package/dist/formats/jpeg/core/helpers.js +52 -0
- package/dist/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/formats/jpeg/core/jpeg.js +93 -0
- package/dist/formats/jpeg/core/jpeg.js.map +1 -1
- package/dist/formats/mp3/core/helpers.js +37 -0
- package/dist/formats/mp3/core/helpers.js.map +1 -1
- package/dist/formats/mp4/core/helpers.js +35 -0
- package/dist/formats/mp4/core/helpers.js.map +1 -1
- package/dist/formats/obj/core/helpers.js +2 -2
- package/dist/formats/obj/core/helpers.js.map +1 -1
- package/dist/formats/ogg/CjsOggFormat.js +49 -0
- package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/formats/ogg/core/helpers.js +23 -0
- package/dist/formats/ogg/core/helpers.js.map +1 -1
- package/dist/formats/ogg/core/vorbis.js +13 -0
- package/dist/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/formats/png/core/helpers.js +52 -0
- package/dist/formats/png/core/helpers.js.map +1 -1
- package/dist/formats/red/CjsRedFormat.js +3 -1
- package/dist/formats/red/CjsRedFormat.js.map +1 -1
- package/dist/formats/red/core/CjsRedReader.js +52 -0
- package/dist/formats/red/core/CjsRedReader.js.map +1 -1
- package/dist/formats/red/core/helpers.js +19 -0
- package/dist/formats/red/core/helpers.js.map +1 -1
- package/dist/formats/stl/core/stl.js +10 -2
- package/dist/formats/stl/core/stl.js.map +1 -1
- package/dist/formats/stl/core/targets.js +10 -0
- package/dist/formats/stl/core/targets.js.map +1 -1
- package/dist/formats/tga/core/helpers.js +47 -0
- package/dist/formats/tga/core/helpers.js.map +1 -1
- package/dist/formats/wav/core/helpers.js +37 -0
- package/dist/formats/wav/core/helpers.js.map +1 -1
- package/dist/formats/webm/core/helpers.js +35 -0
- package/dist/formats/webm/core/helpers.js.map +1 -1
- package/dist/formats/webp/CjsWebpFormat.js +49 -0
- package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/formats/webp/core/helpers.js +23 -0
- package/dist/formats/webp/core/helpers.js.map +1 -1
- package/dist/formats/wem/CjsWemFormat.js +8 -0
- package/dist/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/formats/wem/core/bitStream.js +2 -0
- package/dist/formats/wem/core/bitStream.js.map +1 -1
- package/dist/formats/wem/core/helpers.js +20 -0
- package/dist/formats/wem/core/helpers.js.map +1 -1
- package/dist/formats/yaml/CjsYamlFormat.js +45 -0
- package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/formats/yaml/core/CjsYamlReader.js +91 -0
- package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
- package/dist/formats/yaml/core/helpers.js +10 -0
- package/dist/formats/yaml/core/helpers.js.map +1 -1
- package/dist/index.js +57 -44
- package/dist/index.js.map +1 -1
- package/dist/{CjsResource.js → resource/CjsResource.js} +234 -19
- package/dist/resource/CjsResource.js.map +1 -0
- package/dist/{resources → resource}/Tr2LightProfileRes.js +5 -4
- package/dist/resource/Tr2LightProfileRes.js.map +1 -0
- package/dist/{resources → resource/audio}/AudioGeometryResData.js +4 -4
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -0
- package/dist/resource/audio/CjsAudioBufferRes.js +86 -0
- package/dist/resource/audio/CjsAudioBufferRes.js.map +1 -0
- package/dist/resource/audio/CjsAudioRes.js +213 -0
- package/dist/resource/audio/CjsAudioRes.js.map +1 -0
- package/dist/resource/audio/index.js +4 -0
- package/dist/resource/audio/index.js.map +1 -0
- package/dist/{resources → resource/geometry}/MeshDecalData.js +3 -3
- package/dist/resource/geometry/MeshDecalData.js.map +1 -0
- package/dist/{resources → resource/geometry}/MeshDecalLodData.js +3 -3
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -0
- package/dist/resource/geometry/TriGeometryRes.js +656 -0
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResAreaData.js +4 -4
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResJointData.js +4 -4
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResLodData.js +3 -3
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResMeshData.js +5 -5
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResSkeletonData.js +3 -3
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriJointBinding.js +4 -4
- package/dist/resource/geometry/TriJointBinding.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriMorphTargetGeometryConstants.js +3 -3
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriRtGeometryConstants.js +3 -3
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/GStateBindingCallbackData.js +3 -3
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/Tr2GrannyIntersectionResult.js +5 -5
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/Tr2GrannyStateRes.js +7 -6
- package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/TriGrannyRes.js +7 -6
- package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/enums.js +1 -9
- package/dist/resource/geometry/granny/enums.js.map +1 -0
- package/dist/resource/geometry/granny/index.js +6 -0
- package/dist/resource/geometry/granny/index.js.map +1 -0
- package/dist/resource/geometry/index.js +17 -0
- package/dist/resource/geometry/index.js.map +1 -0
- package/dist/resource/index.js +52 -0
- package/dist/resource/index.js.map +1 -0
- package/dist/resource/resourceBoundary.js +64 -0
- package/dist/resource/resourceBoundary.js.map +1 -0
- package/dist/resource/shader/Tr2EffectRes.js +420 -0
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -0
- package/dist/{resources → resource/shader}/Tr2MaterialArea.js +11 -6
- package/dist/resource/shader/Tr2MaterialArea.js.map +1 -0
- package/dist/{resources → resource/shader}/Tr2MaterialMesh.js +10 -5
- package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -0
- package/dist/{resources → resource/shader}/Tr2MaterialRes.js +12 -6
- package/dist/resource/shader/Tr2MaterialRes.js.map +1 -0
- package/dist/resource/shader/Tr2Shader.js +250 -0
- package/dist/resource/shader/Tr2Shader.js.map +1 -0
- package/dist/{resources → resource/shader}/Tr2ShaderPermutation.js +15 -9
- package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -0
- package/dist/resource/shader/index.js +17 -0
- package/dist/resource/shader/index.js.map +1 -0
- package/dist/resource/shader/portable.js +33 -0
- package/dist/resource/shader/portable.js.map +1 -0
- package/dist/resource/shader/portableValidation.js +461 -0
- package/dist/resource/shader/portableValidation.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +100 -0
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +34 -0
- package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +113 -0
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +141 -0
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +107 -0
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectResource.js +90 -0
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +235 -0
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +71 -0
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2Pass.js +111 -0
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +80 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -0
- package/dist/{texture → resource/texture}/CjsTextureArrayRes.js +84 -7
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -0
- package/dist/{texture/CjsTextureParameterProxy.js → resource/texture/CjsTextureArrayResParameterProxy.js} +57 -11
- package/dist/resource/texture/CjsTextureArrayResParameterProxy.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2ImageRes.js +7 -5
- package/dist/resource/texture/Tr2ImageRes.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TextureLodManager.js +5 -3
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TextureLodUpdateRequest.js +3 -3
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePackChannel.js +3 -3
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipeline.js +8 -6
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineParams.js +3 -3
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepCompress.js +3 -3
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepGenerateMips.js +3 -3
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLimitSize.js +3 -3
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLoad.js +3 -3
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepPack.js +3 -3
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -0
- package/dist/{resources → resource/texture}/TriTextureRes.js +43 -27
- package/dist/resource/texture/TriTextureRes.js.map +1 -0
- package/dist/resource/texture/index.js +15 -0
- package/dist/resource/texture/index.js.map +1 -0
- package/dist/{resources → resource/texture}/texturePipelineBehavior.js +61 -61
- package/dist/resource/texture/texturePipelineBehavior.js.map +1 -0
- package/dist/worker/CjsResManMainThreadLoader.js +87 -0
- package/dist/worker/CjsResManMainThreadLoader.js.map +1 -0
- package/dist/worker/CjsResManWorker.js +217 -0
- package/dist/worker/CjsResManWorker.js.map +1 -0
- package/dist/worker/CjsResManWorkerLoader.js +434 -0
- package/dist/worker/CjsResManWorkerLoader.js.map +1 -0
- package/dist/worker/protocol.js +12 -0
- package/dist/worker/protocol.js.map +1 -0
- package/docs/README.md +18 -5
- package/docs/architecture.md +40 -17
- package/docs/concepts/resource-lifecycle.md +2 -1
- package/docs/formats/README.md +4 -0
- package/docs/reference/classes/README.md +6 -4
- package/docs/reference/classes/audio.md +30 -0
- package/docs/reference/classes/core.md +31 -11
- package/docs/reference/classes/formats.md +1 -1
- package/docs/reference/classes/resources.md +151 -41
- package/docs/reference/classes/texture.md +7 -7
- package/docs/reference/events.md +1 -1
- package/docs/reference/motherlode-cache.md +17 -0
- package/docs/reference/queues.md +9 -1
- package/docs/reference/workers.md +135 -0
- package/docs/roadmap.md +27 -1
- package/format-notices/black/NOTICE +1 -1
- package/package.json +9 -4
- package/dist/CjsResManQueue.js.map +0 -1
- package/dist/CjsResource.js.map +0 -1
- package/dist/CjsResourceSource.js +0 -68
- package/dist/CjsResourceSource.js.map +0 -1
- package/dist/resourcePath.js +0 -18
- package/dist/resourcePath.js.map +0 -1
- package/dist/resourceStates.js +0 -9
- package/dist/resourceStates.js.map +0 -1
- package/dist/resources/AudioGeometryResData.js.map +0 -1
- package/dist/resources/GStateBindingCallbackData.js.map +0 -1
- package/dist/resources/MeshDecalData.js.map +0 -1
- package/dist/resources/MeshDecalLodData.js.map +0 -1
- package/dist/resources/Tr2EffectRes.js +0 -71
- package/dist/resources/Tr2EffectRes.js.map +0 -1
- package/dist/resources/Tr2GrannyIntersectionResult.js.map +0 -1
- package/dist/resources/Tr2GrannyStateRes.js.map +0 -1
- package/dist/resources/Tr2ImageRes.js.map +0 -1
- package/dist/resources/Tr2LightProfileRes.js.map +0 -1
- package/dist/resources/Tr2MaterialArea.js.map +0 -1
- package/dist/resources/Tr2MaterialMesh.js.map +0 -1
- package/dist/resources/Tr2MaterialRes.js.map +0 -1
- package/dist/resources/Tr2ShaderPermutation.js.map +0 -1
- package/dist/resources/Tr2TextureLodManager.js.map +0 -1
- package/dist/resources/Tr2TextureLodUpdateRequest.js.map +0 -1
- package/dist/resources/Tr2TexturePackChannel.js.map +0 -1
- package/dist/resources/Tr2TexturePipeline.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineParams.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepCompress.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepLoad.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepPack.js.map +0 -1
- package/dist/resources/TriGeometryRes.js +0 -239
- package/dist/resources/TriGeometryRes.js.map +0 -1
- package/dist/resources/TriGeometryResAreaData.js.map +0 -1
- package/dist/resources/TriGeometryResJointData.js.map +0 -1
- package/dist/resources/TriGeometryResLodData.js.map +0 -1
- package/dist/resources/TriGeometryResMeshData.js.map +0 -1
- package/dist/resources/TriGeometryResSkeletonData.js.map +0 -1
- package/dist/resources/TriGrannyRes.js.map +0 -1
- package/dist/resources/TriJointBinding.js.map +0 -1
- package/dist/resources/TriMorphTargetGeometryConstants.js.map +0 -1
- package/dist/resources/TriRtGeometryConstants.js.map +0 -1
- package/dist/resources/TriTextureRes.js.map +0 -1
- package/dist/resources/enums.js.map +0 -1
- package/dist/resources/resourceBoundary.js +0 -47
- package/dist/resources/resourceBoundary.js.map +0 -1
- package/dist/resources/texturePipelineBehavior.js.map +0 -1
- package/dist/texture/CjsTextureArrayRes.js.map +0 -1
- package/dist/texture/CjsTextureParameterProxy.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../../../src/formats/jpeg/core/helpers.js"],"sourcesContent":["export const OUTPUT_IMAGE = \"image\";\nexport const OUTPUT_TEXTURE = \"texture\";\nexport const OUTPUT_RGBA = \"rgba\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nimport { canDecodeJpeg, decodeJpegToRgba } from \"./jpeg.js\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n png: \"pngJson\",\n jpeg: \"jpegJson\",\n jpg: \"jpegJson\",\n tga: \"tgaJson\",\n dds: \"ddsJson\"\n});\n\nconst IMAGE_MIME_TYPES = Object.freeze({\n png: \"image/png\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n tga: \"image/x-tga\",\n dds: \"image/vnd-ms.dds\"\n});\n\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsImageFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = normalizeInputType(values.inputType);\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\nexport function normalizeInputType(inputType)\n{\n if (!inputType) return \"\";\n const value = String(inputType).replace(/^\\./u, \"\").toLowerCase();\n return value === \"jpg\" ? \"jpeg\" : value;\n}\n\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;\n if ([ OUTPUT_IMAGE, OUTPUT_RGBA, OUTPUT_RAW, OUTPUT_JSON ].includes(emit)) return emit;\n if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\nexport function toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (input instanceof ArrayBuffer) return new Uint8Array(input);\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n throw new TypeError(\"Image input must be Uint8Array, ArrayBuffer, or DataView\");\n}\n\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const detected = inspectBytes(bytes);\n const sourceFormat = expectedType || values.inputType || detected.sourceFormat;\n\n if (expectedType && detected.sourceFormat && detected.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsFormat${capitalize(expectedType)}: expected ${expectedType}, got ${detected.sourceFormat}`);\n }\n\n return {\n payloadType: sourceFormat === \"dds\" ? \"texture\" : \"image\",\n mediaTypes: sourceFormat === \"dds\" ? [ \"texture\", \"image\" ] : [ \"image\" ],\n sourceFormat,\n byteLength: bytes.byteLength,\n ...detected\n };\n}\n\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const canDecode = metadata.sourceFormat === \"jpeg\" && canDecodeJpeg(metadata);\n const variants = [\n { kind: \"rgba\", payloadType: \"rgba\", codec: \"rgba8unorm\", supported: canDecode, reason: canDecode ? \"\" : jpegDecodeReason(metadata), containerOnly: false, isDecoded: canDecode, rgbaDecodeSupported: canDecode },\n rawVariant(metadata, canDecode)\n ];\n\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? (variants.some(variant => variant.supported && variant.kind === \"rgba\") ? \"full\" : \"partial\") : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferred: variants.find(v => v.supported)?.codec || \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized image format.\",\n metadata,\n variants,\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: expectedType || values.inputType || \"\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values, expectedType);\n\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.sourceFormat === \"jpeg\" && canDecodeJpeg(metadata),\n metadata,\n bytes\n };\n }\n\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat])\n {\n return metadata;\n }\n\n if ((values.emit === OUTPUT_RGBA || values.emit === OUTPUT_IMAGE) && metadata.sourceFormat === \"jpeg\")\n {\n if (!canDecodeJpeg(metadata))\n {\n const error = new Error(`jpeg: ${jpegDecodeReason(metadata)}`);\n error.code = \"CJS_FORMAT_OUTPUT_UNSUPPORTED\";\n throw error;\n }\n return decodeJpegToRgba(bytes, metadata);\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\nfunction rawVariant(metadata, canDecode)\n{\n return {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n supported: true,\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.sourceFormat === \"jpeg\" && canDecode === true\n };\n}\n\nfunction imageMimeType(sourceFormat)\n{\n return IMAGE_MIME_TYPES[sourceFormat] || \"application/octet-stream\";\n}\n\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array)\n {\n return { byteLength: value.byteLength };\n }\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value)) output[key] = toJsonValue(entry);\n return output;\n }\n return value;\n}\n\nexport function inspectBytes(bytes)\n{\n if (isPNG(bytes)) return inspectPNG(bytes);\n if (isJPEG(bytes)) return inspectJPEG(bytes);\n if (isDDS(bytes)) return inspectDDS(bytes);\n if (isTGA(bytes)) return inspectTGA(bytes);\n return { sourceFormat: \"\", width: 0, height: 0 };\n}\n\nexport function isPNG(bytes)\n{\n return bytes.byteLength >= 24 &&\n bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47 &&\n bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a;\n}\n\nexport function isJPEG(bytes)\n{\n return bytes.byteLength >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8;\n}\n\nexport function isJPG(bytes)\n{\n return isJPEG(bytes);\n}\n\nexport function isDDS(bytes)\n{\n return bytes.byteLength >= 128 && bytes[0] === 0x44 && bytes[1] === 0x44 && bytes[2] === 0x53 && bytes[3] === 0x20;\n}\n\nexport function isTGA(bytes)\n{\n if (bytes.byteLength < 18) return false;\n const imageType = bytes[2], width = readU16LE(bytes, 12), height = readU16LE(bytes, 14), bpp = bytes[16];\n return width > 0 && height > 0 && [ 1, 2, 3, 9, 10, 11 ].includes(imageType) && [ 8, 16, 24, 32 ].includes(bpp);\n}\n\nfunction inspectPNG(bytes)\n{\n const colorType = bytes[25], bitDepth = bytes[24];\n return {\n sourceFormat: \"png\",\n width: readU32BE(bytes, 16),\n height: readU32BE(bytes, 20),\n bitDepth,\n colorType,\n channels: pngChannels(colorType),\n pixelFormat: `png-${bitDepth}-${colorType}`,\n isCompressed: false\n };\n}\n\nfunction inspectJPEG(bytes)\n{\n let offset = 2;\n let frame = null;\n const summary = {\n appMarkerCount: 0,\n commentCount: 0,\n hasExif: false,\n hasIccProfile: false\n };\n while (offset + 9 < bytes.byteLength)\n {\n if (bytes[offset] !== 0xff)\n {\n offset++;\n continue;\n }\n const marker = bytes[offset + 1], length = readU16BE(bytes, offset + 2);\n const dataStart = offset + 4;\n const dataEnd = offset + 2 + length;\n if (marker >= 0xe0 && marker <= 0xef)\n {\n summary.appMarkerCount++;\n if (marker === 0xe1 && ascii(bytes, dataStart, Math.min(6, dataEnd - dataStart)) === \"Exif\\0\\0\") summary.hasExif = true;\n if (marker === 0xe2 && ascii(bytes, dataStart, Math.min(12, dataEnd - dataStart)) === \"ICC_PROFILE\\0\") summary.hasIccProfile = true;\n }\n else if (marker === 0xfe)\n {\n summary.commentCount++;\n }\n if ([ 0xc0, 0xc1, 0xc2, 0xc3 ].includes(marker))\n {\n frame = {\n sourceFormat: \"jpeg\",\n width: readU16BE(bytes, offset + 7),\n height: readU16BE(bytes, offset + 5),\n channels: bytes[offset + 9],\n components: bytes[offset + 9],\n precision: bytes[offset + 4],\n marker,\n progressive: marker === 0xc2 || marker === 0xc3,\n pixelFormat: \"jpeg-ycbcr\",\n isCompressed: true\n };\n }\n if (marker === 0xda && frame)\n {\n const scanStart = offset + 4;\n const scanComponents = bytes[scanStart];\n const spectralStart = bytes[scanStart + 1 + scanComponents * 2];\n const spectralEnd = bytes[scanStart + 2 + scanComponents * 2];\n const successive = bytes[scanStart + 3 + scanComponents * 2];\n return {\n ...frame,\n ...summary,\n scanComponents,\n spectralStart,\n spectralEnd,\n successive,\n progressive: frame.progressive || spectralStart !== 0 || spectralEnd !== 63 || successive !== 0\n };\n }\n offset += Math.max(length + 2, 2);\n }\n return frame ? { ...frame, ...summary } : { sourceFormat: \"jpeg\", width: 0, height: 0, channels: 0, pixelFormat: \"jpeg\", isCompressed: true, ...summary };\n}\n\nfunction jpegDecodeReason(metadata)\n{\n if (metadata.sourceFormat !== \"jpeg\") return `${metadata.sourceFormat.toUpperCase()} RGBA decode is not implemented yet.`;\n if (metadata.progressive) return \"Progressive JPEG software decode is not implemented yet.\";\n if (metadata.marker !== undefined && metadata.marker !== 0xc0 && metadata.marker !== 0xc1)\n {\n return \"Only sequential baseline JPEG frames are supported by the software decoder.\";\n }\n if (metadata.precision !== undefined && metadata.precision !== 8)\n {\n return `JPEG sample precision ${metadata.precision} is not supported by the software decoder.`;\n }\n if (metadata.components > 3) return \"CMYK/YCCK JPEG software decode is not implemented yet.\";\n return \"JPEG baseline frame metadata is incomplete or unsupported.\";\n}\n\nfunction inspectDDS(bytes)\n{\n const fourCc = String.fromCharCode(bytes[84], bytes[85], bytes[86], bytes[87]).replace(/\\0+$/u, \"\");\n return {\n sourceFormat: \"dds\",\n width: readU32LE(bytes, 16),\n height: readU32LE(bytes, 12),\n mipCount: Math.max(readU32LE(bytes, 28), 1),\n fourCc,\n textureFormat: fourCc || \"dds-legacy\",\n isCompressed: !!fourCc,\n hasMipMaps: readU32LE(bytes, 28) > 1\n };\n}\n\nfunction inspectTGA(bytes)\n{\n return {\n sourceFormat: \"tga\",\n width: readU16LE(bytes, 12),\n height: readU16LE(bytes, 14),\n channels: Math.max(bytes[16] / 8, 1),\n imageType: bytes[2],\n pixelFormat: `tga-${bytes[16]}`,\n isCompressed: [ 9, 10, 11 ].includes(bytes[2])\n };\n}\n\nfunction pngChannels(colorType)\n{\n if (colorType === 0) return 1;\n if (colorType === 2) return 3;\n if (colorType === 3) return 1;\n if (colorType === 4) return 2;\n if (colorType === 6) return 4;\n return 0;\n}\n\nfunction readU16BE(bytes, offset)\n{\n return (bytes[offset] << 8) | bytes[offset + 1];\n}\n\nfunction readU16LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8);\n}\n\nfunction readU32BE(bytes, offset)\n{\n return ((bytes[offset] * 0x1000000) + ((bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3])) >>> 0;\n}\n\nfunction readU32LE(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nfunction ascii(bytes, offset, length)\n{\n return String.fromCharCode(...bytes.subarray(offset, offset + length));\n}\n\nfunction capitalize(value)\n{\n return value ? value[0].toUpperCase() + value.slice(1) : \"Image\";\n}\n"],"names":["OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","png","jpeg","jpg","tga","dds","IMAGE_MIME_TYPES","normalizeValues","base","options","readerName","values","normalizeInputType","normalizeEmit","value","String","replace","toLowerCase","undefined","includes","TypeError","JSON","stringify","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","inspectWithValues","expectedType","bytes","detected","inspectBytes","sourceFormat","capitalize","payloadType","mediaTypes","isSupportedWithValues","metadata","canDecode","canDecodeJpeg","variants","kind","codec","supported","reason","jpegDecodeReason","containerOnly","isDecoded","rgbaDecodeSupported","rawVariant","format","some","variant","confidence","preferred","find","v","warnings","errors","error","message","readWithValues","mimeType","imageMimeType","Error","code","decodeJpegToRgba","toJsonValue","Array","isArray","map","output","key","entry","entries","isPNG","inspectPNG","isJPEG","inspectJPEG","isDDS","inspectDDS","isTGA","inspectTGA","width","height","isJPG","imageType","readU16LE","bpp","colorType","bitDepth","readU32BE","channels","pngChannels","pixelFormat","isCompressed","offset","frame","summary","appMarkerCount","commentCount","hasExif","hasIccProfile","marker","length","readU16BE","dataStart","dataEnd","ascii","Math","min","components","precision","progressive","scanStart","scanComponents","spectralStart","spectralEnd","successive","max","toUpperCase","fourCc","fromCharCode","readU32LE","mipCount","textureFormat","hasMipMaps","subarray","slice"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../src/formats/jpeg/core/helpers.js"],"sourcesContent":["export const OUTPUT_IMAGE = \"image\";\nexport const OUTPUT_TEXTURE = \"texture\";\nexport const OUTPUT_RGBA = \"rgba\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nimport { canDecodeJpeg, decodeJpegToRgba } from \"./jpeg.js\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n png: \"pngJson\",\n jpeg: \"jpegJson\",\n jpg: \"jpegJson\",\n tga: \"tgaJson\",\n dds: \"ddsJson\"\n});\n\nconst IMAGE_MIME_TYPES = Object.freeze({\n png: \"image/png\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n tga: \"image/x-tga\",\n dds: \"image/vnd-ms.dds\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the JPEG format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsImageFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = normalizeInputType(values.inputType);\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\n/** Normalizes the requested input representation for the JPEG format reader. */\nexport function normalizeInputType(inputType)\n{\n if (!inputType) return \"\";\n const value = String(inputType).replace(/^\\./u, \"\").toLowerCase();\n return value === \"jpg\" ? \"jpeg\" : value;\n}\n\n/** Normalizes the requested output representation for the JPEG format reader. */\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;\n if ([ OUTPUT_IMAGE, OUTPUT_RGBA, OUTPUT_RAW, OUTPUT_JSON ].includes(emit)) return emit;\n if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/** Returns a byte view over the supplied binary input for the JPEG format reader. */\nexport function toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (input instanceof ArrayBuffer) return new Uint8Array(input);\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n throw new TypeError(\"Image input must be Uint8Array, ArrayBuffer, or DataView\");\n}\n\n/** Inspects input using normalized format options for the JPEG format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const detected = inspectBytes(bytes);\n const sourceFormat = expectedType || values.inputType || detected.sourceFormat;\n\n if (expectedType && detected.sourceFormat && detected.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsFormat${capitalize(expectedType)}: expected ${expectedType}, got ${detected.sourceFormat}`);\n }\n\n return {\n payloadType: sourceFormat === \"dds\" ? \"texture\" : \"image\",\n mediaTypes: sourceFormat === \"dds\" ? [ \"texture\", \"image\" ] : [ \"image\" ],\n sourceFormat,\n byteLength: bytes.byteLength,\n ...detected\n };\n}\n\n/**\n * Reports whether input is supported under normalized format options for the\n * JPEG format reader.\n */\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const canDecode = metadata.sourceFormat === \"jpeg\" && canDecodeJpeg(metadata);\n const variants = [\n { kind: \"rgba\", payloadType: \"rgba\", codec: \"rgba8unorm\", supported: canDecode, reason: canDecode ? \"\" : jpegDecodeReason(metadata), containerOnly: false, isDecoded: canDecode, rgbaDecodeSupported: canDecode },\n rawVariant(metadata, canDecode)\n ];\n\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? (variants.some(variant => variant.supported && variant.kind === \"rgba\") ? \"full\" : \"partial\") : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferred: variants.find(v => v.supported)?.codec || \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized image format.\",\n metadata,\n variants,\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: expectedType || values.inputType || \"\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\n/** Reads input using normalized format options for the JPEG format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values, expectedType);\n\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.sourceFormat === \"jpeg\" && canDecodeJpeg(metadata),\n metadata,\n bytes\n };\n }\n\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat])\n {\n return metadata;\n }\n\n if ((values.emit === OUTPUT_RGBA || values.emit === OUTPUT_IMAGE) && metadata.sourceFormat === \"jpeg\")\n {\n if (!canDecodeJpeg(metadata))\n {\n const error = new Error(`jpeg: ${jpegDecodeReason(metadata)}`);\n error.code = \"CJS_FORMAT_OUTPUT_UNSUPPORTED\";\n throw error;\n }\n return decodeJpegToRgba(bytes, metadata);\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\nfunction rawVariant(metadata, canDecode)\n{\n return {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n supported: true,\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.sourceFormat === \"jpeg\" && canDecode === true\n };\n}\n\nfunction imageMimeType(sourceFormat)\n{\n return IMAGE_MIME_TYPES[sourceFormat] || \"application/octet-stream\";\n}\n\n/** Converts a parsed payload into a JSON-safe value for the JPEG format reader. */\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array)\n {\n return { byteLength: value.byteLength };\n }\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value)) output[key] = toJsonValue(entry);\n return output;\n }\n return value;\n}\n\n/**\n * Inspects the supplied bytes without decoding their payload for the JPEG format\n * reader.\n */\nexport function inspectBytes(bytes)\n{\n if (isPNG(bytes)) return inspectPNG(bytes);\n if (isJPEG(bytes)) return inspectJPEG(bytes);\n if (isDDS(bytes)) return inspectDDS(bytes);\n if (isTGA(bytes)) return inspectTGA(bytes);\n return { sourceFormat: \"\", width: 0, height: 0 };\n}\n\n/**\n * Reports whether the supplied bytes begin with a PNG signature for the JPEG\n * format reader.\n */\nexport function isPNG(bytes)\n{\n return bytes.byteLength >= 24 &&\n bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47 &&\n bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a;\n}\n\n/**\n * Reports whether the supplied bytes begin with a JPEG signature for the JPEG\n * format reader.\n */\nexport function isJPEG(bytes)\n{\n return bytes.byteLength >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8;\n}\n\n/**\n * Reports whether the supplied bytes begin with a JPEG signature accepted as JPG\n * for the JPEG format reader.\n */\nexport function isJPG(bytes)\n{\n return isJPEG(bytes);\n}\n\n/**\n * Reports whether the supplied bytes begin with a DDS signature for the JPEG\n * format reader.\n */\nexport function isDDS(bytes)\n{\n return bytes.byteLength >= 128 && bytes[0] === 0x44 && bytes[1] === 0x44 && bytes[2] === 0x53 && bytes[3] === 0x20;\n}\n\n/**\n * Reports whether the supplied bytes have a supported TGA header for the JPEG\n * format reader.\n */\nexport function isTGA(bytes)\n{\n if (bytes.byteLength < 18) return false;\n const imageType = bytes[2], width = readU16LE(bytes, 12), height = readU16LE(bytes, 14), bpp = bytes[16];\n return width > 0 && height > 0 && [ 1, 2, 3, 9, 10, 11 ].includes(imageType) && [ 8, 16, 24, 32 ].includes(bpp);\n}\n\nfunction inspectPNG(bytes)\n{\n const colorType = bytes[25], bitDepth = bytes[24];\n return {\n sourceFormat: \"png\",\n width: readU32BE(bytes, 16),\n height: readU32BE(bytes, 20),\n bitDepth,\n colorType,\n channels: pngChannels(colorType),\n pixelFormat: `png-${bitDepth}-${colorType}`,\n isCompressed: false\n };\n}\n\nfunction inspectJPEG(bytes)\n{\n let offset = 2;\n let frame = null;\n const summary = {\n appMarkerCount: 0,\n commentCount: 0,\n hasExif: false,\n hasIccProfile: false\n };\n while (offset + 9 < bytes.byteLength)\n {\n if (bytes[offset] !== 0xff)\n {\n offset++;\n continue;\n }\n const marker = bytes[offset + 1], length = readU16BE(bytes, offset + 2);\n const dataStart = offset + 4;\n const dataEnd = offset + 2 + length;\n if (marker >= 0xe0 && marker <= 0xef)\n {\n summary.appMarkerCount++;\n if (marker === 0xe1 && ascii(bytes, dataStart, Math.min(6, dataEnd - dataStart)) === \"Exif\\0\\0\") summary.hasExif = true;\n if (marker === 0xe2 && ascii(bytes, dataStart, Math.min(12, dataEnd - dataStart)) === \"ICC_PROFILE\\0\") summary.hasIccProfile = true;\n }\n else if (marker === 0xfe)\n {\n summary.commentCount++;\n }\n if ([ 0xc0, 0xc1, 0xc2, 0xc3 ].includes(marker))\n {\n frame = {\n sourceFormat: \"jpeg\",\n width: readU16BE(bytes, offset + 7),\n height: readU16BE(bytes, offset + 5),\n channels: bytes[offset + 9],\n components: bytes[offset + 9],\n precision: bytes[offset + 4],\n marker,\n progressive: marker === 0xc2 || marker === 0xc3,\n pixelFormat: \"jpeg-ycbcr\",\n isCompressed: true\n };\n }\n if (marker === 0xda && frame)\n {\n const scanStart = offset + 4;\n const scanComponents = bytes[scanStart];\n const spectralStart = bytes[scanStart + 1 + scanComponents * 2];\n const spectralEnd = bytes[scanStart + 2 + scanComponents * 2];\n const successive = bytes[scanStart + 3 + scanComponents * 2];\n return {\n ...frame,\n ...summary,\n scanComponents,\n spectralStart,\n spectralEnd,\n successive,\n progressive: frame.progressive || spectralStart !== 0 || spectralEnd !== 63 || successive !== 0\n };\n }\n offset += Math.max(length + 2, 2);\n }\n return frame ? { ...frame, ...summary } : { sourceFormat: \"jpeg\", width: 0, height: 0, channels: 0, pixelFormat: \"jpeg\", isCompressed: true, ...summary };\n}\n\nfunction jpegDecodeReason(metadata)\n{\n if (metadata.sourceFormat !== \"jpeg\") return `${metadata.sourceFormat.toUpperCase()} RGBA decode is not implemented yet.`;\n if (metadata.progressive) return \"Progressive JPEG software decode is not implemented yet.\";\n if (metadata.marker !== undefined && metadata.marker !== 0xc0 && metadata.marker !== 0xc1)\n {\n return \"Only sequential baseline JPEG frames are supported by the software decoder.\";\n }\n if (metadata.precision !== undefined && metadata.precision !== 8)\n {\n return `JPEG sample precision ${metadata.precision} is not supported by the software decoder.`;\n }\n if (metadata.components > 3) return \"CMYK/YCCK JPEG software decode is not implemented yet.\";\n return \"JPEG baseline frame metadata is incomplete or unsupported.\";\n}\n\nfunction inspectDDS(bytes)\n{\n const fourCc = String.fromCharCode(bytes[84], bytes[85], bytes[86], bytes[87]).replace(/\\0+$/u, \"\");\n return {\n sourceFormat: \"dds\",\n width: readU32LE(bytes, 16),\n height: readU32LE(bytes, 12),\n mipCount: Math.max(readU32LE(bytes, 28), 1),\n fourCc,\n textureFormat: fourCc || \"dds-legacy\",\n isCompressed: !!fourCc,\n hasMipMaps: readU32LE(bytes, 28) > 1\n };\n}\n\nfunction inspectTGA(bytes)\n{\n return {\n sourceFormat: \"tga\",\n width: readU16LE(bytes, 12),\n height: readU16LE(bytes, 14),\n channels: Math.max(bytes[16] / 8, 1),\n imageType: bytes[2],\n pixelFormat: `tga-${bytes[16]}`,\n isCompressed: [ 9, 10, 11 ].includes(bytes[2])\n };\n}\n\nfunction pngChannels(colorType)\n{\n if (colorType === 0) return 1;\n if (colorType === 2) return 3;\n if (colorType === 3) return 1;\n if (colorType === 4) return 2;\n if (colorType === 6) return 4;\n return 0;\n}\n\nfunction readU16BE(bytes, offset)\n{\n return (bytes[offset] << 8) | bytes[offset + 1];\n}\n\nfunction readU16LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8);\n}\n\nfunction readU32BE(bytes, offset)\n{\n return ((bytes[offset] * 0x1000000) + ((bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3])) >>> 0;\n}\n\nfunction readU32LE(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nfunction ascii(bytes, offset, length)\n{\n return String.fromCharCode(...bytes.subarray(offset, offset + length));\n}\n\nfunction capitalize(value)\n{\n return value ? value[0].toUpperCase() + value.slice(1) : \"Image\";\n}\n"],"names":["OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","png","jpeg","jpg","tga","dds","IMAGE_MIME_TYPES","normalizeValues","base","options","readerName","values","normalizeInputType","normalizeEmit","value","String","replace","toLowerCase","undefined","includes","TypeError","JSON","stringify","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","inspectWithValues","expectedType","bytes","detected","inspectBytes","sourceFormat","capitalize","payloadType","mediaTypes","isSupportedWithValues","metadata","canDecode","canDecodeJpeg","variants","kind","codec","supported","reason","jpegDecodeReason","containerOnly","isDecoded","rgbaDecodeSupported","rawVariant","format","some","variant","confidence","preferred","find","v","warnings","errors","error","message","readWithValues","mimeType","imageMimeType","Error","code","decodeJpegToRgba","toJsonValue","Array","isArray","map","output","key","entry","entries","isPNG","inspectPNG","isJPEG","inspectJPEG","isDDS","inspectDDS","isTGA","inspectTGA","width","height","isJPG","imageType","readU16LE","bpp","colorType","bitDepth","readU32BE","channels","pngChannels","pixelFormat","isCompressed","offset","frame","summary","appMarkerCount","commentCount","hasExif","hasIccProfile","marker","length","readU16BE","dataStart","dataEnd","ascii","Math","min","components","precision","progressive","scanStart","scanComponents","spectralStart","spectralEnd","successive","max","toUpperCase","fourCc","fromCharCode","readU32LE","mipCount","textureFormat","hasMipMaps","subarray","slice"],"mappings":"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"}
|
|
@@ -7,6 +7,11 @@ const COSINE = Array.from({
|
|
|
7
7
|
const SCALE = Array.from({
|
|
8
8
|
length: 8
|
|
9
9
|
}, (_, value) => value === 0 ? 1 / Math.sqrt(2) : 1);
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Decodes baseline JPEG bytes into a normalized RGBA payload for the JPEG format
|
|
13
|
+
* reader.
|
|
14
|
+
*/
|
|
10
15
|
function decodeJpegToRgba(bytes, metadata = {}) {
|
|
11
16
|
const decoder = new BaselineJpegDecoder(bytes);
|
|
12
17
|
const image = decoder.decode();
|
|
@@ -31,6 +36,11 @@ function decodeJpegToRgba(bytes, metadata = {}) {
|
|
|
31
36
|
}
|
|
32
37
|
};
|
|
33
38
|
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Reports whether JPEG metadata is supported by the software decoder for the
|
|
42
|
+
* JPEG format reader.
|
|
43
|
+
*/
|
|
34
44
|
function canDecodeJpeg(metadata = {}) {
|
|
35
45
|
return metadata.sourceFormat === "jpeg" && metadata.precision === 8 && metadata.components >= 1 && metadata.components <= 3 && (metadata.marker === 0xc0 || metadata.marker === 0xc1) && metadata.progressive !== true;
|
|
36
46
|
}
|
|
@@ -47,9 +57,16 @@ class BaselineJpegDecoder {
|
|
|
47
57
|
#frame = null;
|
|
48
58
|
#scan = null;
|
|
49
59
|
#restartInterval = 0;
|
|
60
|
+
|
|
61
|
+
/** Creates a BaselineJpegDecoder with caller-provided initial state. */
|
|
50
62
|
constructor(bytes) {
|
|
51
63
|
this.#bytes = bytes;
|
|
52
64
|
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Decodes the current baseline JPEG stream into RGBA pixels for the JPEG
|
|
68
|
+
* decoder.
|
|
69
|
+
*/
|
|
53
70
|
decode() {
|
|
54
71
|
this.readMarker(0xd8);
|
|
55
72
|
while (this.#offset < this.#bytes.length) {
|
|
@@ -63,6 +80,11 @@ class BaselineJpegDecoder {
|
|
|
63
80
|
}
|
|
64
81
|
throw new Error("jpeg: no baseline scan found");
|
|
65
82
|
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Reads JPEG frame dimensions, sampling, and component metadata for the JPEG
|
|
86
|
+
* decoder.
|
|
87
|
+
*/
|
|
66
88
|
readFrame(marker) {
|
|
67
89
|
const length = this.readU16();
|
|
68
90
|
const precision = this.readU8();
|
|
@@ -108,6 +130,11 @@ class BaselineJpegDecoder {
|
|
|
108
130
|
maxV
|
|
109
131
|
};
|
|
110
132
|
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Reads JPEG quantization tables into natural coefficient order for the JPEG
|
|
136
|
+
* decoder.
|
|
137
|
+
*/
|
|
111
138
|
readQuantizationTables() {
|
|
112
139
|
const end = this.#offset + this.readU16() - 2;
|
|
113
140
|
while (this.#offset < end) {
|
|
@@ -121,6 +148,11 @@ class BaselineJpegDecoder {
|
|
|
121
148
|
}
|
|
122
149
|
this.#offset = end;
|
|
123
150
|
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Builds JPEG Huffman lookup tables from their canonical definitions for the
|
|
154
|
+
* JPEG decoder.
|
|
155
|
+
*/
|
|
124
156
|
readHuffmanTables() {
|
|
125
157
|
const end = this.#offset + this.readU16() - 2;
|
|
126
158
|
while (this.#offset < end) {
|
|
@@ -146,11 +178,21 @@ class BaselineJpegDecoder {
|
|
|
146
178
|
}
|
|
147
179
|
this.#offset = end;
|
|
148
180
|
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Reads the JPEG restart interval declared by a DRI segment for the JPEG
|
|
184
|
+
* decoder.
|
|
185
|
+
*/
|
|
149
186
|
readRestartInterval() {
|
|
150
187
|
const length = this.readU16();
|
|
151
188
|
if (length !== 4) throw new Error("jpeg: invalid restart interval segment");
|
|
152
189
|
this.#restartInterval = this.readU16();
|
|
153
190
|
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Reads JPEG scan component and spectral-selection metadata for the JPEG
|
|
194
|
+
* decoder.
|
|
195
|
+
*/
|
|
154
196
|
readScanHeader() {
|
|
155
197
|
const length = this.readU16();
|
|
156
198
|
const count = this.readU8();
|
|
@@ -176,6 +218,11 @@ class BaselineJpegDecoder {
|
|
|
176
218
|
byId
|
|
177
219
|
};
|
|
178
220
|
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Decodes the current JPEG entropy scan into component planes and RGBA
|
|
224
|
+
* pixels for the JPEG decoder.
|
|
225
|
+
*/
|
|
179
226
|
decodeScan() {
|
|
180
227
|
const frame = this.#frame;
|
|
181
228
|
const mcuWidth = 8 * frame.maxH;
|
|
@@ -235,6 +282,11 @@ class BaselineJpegDecoder {
|
|
|
235
282
|
data
|
|
236
283
|
};
|
|
237
284
|
}
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Decodes one JPEG coefficient block through inverse quantization and IDCT
|
|
288
|
+
* for the JPEG decoder.
|
|
289
|
+
*/
|
|
238
290
|
decodeBlock(reader, component) {
|
|
239
291
|
const quantization = this.#quantization.get(component.quantizationId);
|
|
240
292
|
const dcTable = this.#huffman.get(`0:${component.dc}`);
|
|
@@ -261,18 +313,32 @@ class BaselineJpegDecoder {
|
|
|
261
313
|
for (let i = 0; i < 64; i++) coefficients[i] *= quantization[i];
|
|
262
314
|
return inverseDct(coefficients);
|
|
263
315
|
}
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Reads an unsigned 8-bit value from the JPEG byte cursor for the JPEG
|
|
319
|
+
* decoder.
|
|
320
|
+
*/
|
|
264
321
|
readU8() {
|
|
265
322
|
if (this.#offset >= this.#bytes.length) throw new Error("jpeg: unexpected end of input");
|
|
266
323
|
return this.#bytes[this.#offset++];
|
|
267
324
|
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Reads an unsigned 16-bit big-endian value from the JPEG byte cursor for
|
|
328
|
+
* the JPEG decoder.
|
|
329
|
+
*/
|
|
268
330
|
readU16() {
|
|
269
331
|
return this.readU8() << 8 | this.readU8();
|
|
270
332
|
}
|
|
333
|
+
|
|
334
|
+
/** Consumes and validates an expected JPEG marker for the JPEG decoder. */
|
|
271
335
|
readMarker(expected = null) {
|
|
272
336
|
const marker = this.nextMarker();
|
|
273
337
|
if (expected !== null && marker !== expected) throw new Error("jpeg: missing SOI marker");
|
|
274
338
|
return marker;
|
|
275
339
|
}
|
|
340
|
+
|
|
341
|
+
/** Scans forward to the next valid JPEG marker byte for the JPEG decoder. */
|
|
276
342
|
nextMarker() {
|
|
277
343
|
while (this.#offset < this.#bytes.length && this.#bytes[this.#offset++] !== 0xff) {
|
|
278
344
|
// Scan forward to the next marker prefix.
|
|
@@ -281,6 +347,11 @@ class BaselineJpegDecoder {
|
|
|
281
347
|
if (this.#offset >= this.#bytes.length) throw new Error("jpeg: unexpected end while reading marker");
|
|
282
348
|
return this.#bytes[this.#offset++];
|
|
283
349
|
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Advances past the payload of an unhandled JPEG segment for the JPEG
|
|
353
|
+
* decoder.
|
|
354
|
+
*/
|
|
284
355
|
skipSegment() {
|
|
285
356
|
const length = this.readU16();
|
|
286
357
|
if (length < 2 || this.#offset + length - 2 > this.#bytes.length) throw new Error("jpeg: invalid segment length");
|
|
@@ -298,10 +369,17 @@ class EntropyReader {
|
|
|
298
369
|
#buffer = 0;
|
|
299
370
|
#bits = 0;
|
|
300
371
|
#marker = null;
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Creates a EntropyReader over caller-provided JPEG bytes and reader
|
|
375
|
+
* options.
|
|
376
|
+
*/
|
|
301
377
|
constructor(bytes, offset) {
|
|
302
378
|
this.#bytes = bytes;
|
|
303
379
|
this.#offset = offset;
|
|
304
380
|
}
|
|
381
|
+
|
|
382
|
+
/** Reads one entropy-coded bit for the JPEG binary reader. */
|
|
305
383
|
readBit() {
|
|
306
384
|
if (!this.#bits) {
|
|
307
385
|
let value = this.#bytes[this.#offset++];
|
|
@@ -320,14 +398,29 @@ class EntropyReader {
|
|
|
320
398
|
}
|
|
321
399
|
return this.#buffer >>> --this.#bits & 1;
|
|
322
400
|
}
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* Reads the requested number of entropy-coded bits for the JPEG binary
|
|
404
|
+
* reader.
|
|
405
|
+
*/
|
|
323
406
|
readBits(count) {
|
|
324
407
|
let value = 0;
|
|
325
408
|
for (let i = 0; i < count; i++) value = value << 1 | this.readBit();
|
|
326
409
|
return value;
|
|
327
410
|
}
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Aligns the entropy cursor to the next byte boundary for the JPEG binary
|
|
414
|
+
* reader.
|
|
415
|
+
*/
|
|
328
416
|
align() {
|
|
329
417
|
this.#bits = 0;
|
|
330
418
|
}
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Consumes and validates the next JPEG restart marker for the JPEG binary
|
|
422
|
+
* reader.
|
|
423
|
+
*/
|
|
331
424
|
consumeRestart() {
|
|
332
425
|
while (this.#bytes[this.#offset] === 0xff) this.#offset++;
|
|
333
426
|
const marker = this.#bytes[this.#offset++];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jpeg.js","sources":["../../../../../src/formats/jpeg/core/jpeg.js"],"sourcesContent":["const ZIGZAG = [\n 0, 1, 5, 6, 14, 15, 27, 28,\n 2, 4, 7, 13, 16, 26, 29, 42,\n 3, 8, 12, 17, 25, 30, 41, 43,\n 9, 11, 18, 24, 31, 40, 44, 53,\n 10, 19, 23, 32, 39, 45, 52, 54,\n 20, 22, 33, 38, 46, 51, 55, 60,\n 21, 34, 37, 47, 50, 56, 59, 61,\n 35, 36, 48, 49, 57, 58, 62, 63\n];\n\nconst COSINE = Array.from({ length: 8 }, (_, x) =>\n Array.from({ length: 8 }, (_, u) => Math.cos(((2 * x + 1) * u * Math.PI) / 16)));\n\nconst SCALE = Array.from({ length: 8 }, (_, value) => value === 0 ? 1 / Math.sqrt(2) : 1);\n\nexport function decodeJpegToRgba(bytes, metadata = {})\n{\n const decoder = new BaselineJpegDecoder(bytes);\n const image = decoder.decode();\n return {\n payloadType: \"rgba\",\n sourceFormat: \"jpeg\",\n mimeType: \"image/jpeg\",\n containerOnly: false,\n isDecoded: true,\n rgbaDecodeSupported: true,\n width: image.width,\n height: image.height,\n pixelFormat: \"rgba8unorm\",\n data: image.data,\n strideBytes: image.width * 4,\n origin: \"top-left\",\n colorSpace: \"srgb\",\n alphaMode: \"opaque\",\n metadata: { ...metadata, decoder: \"software-baseline\" }\n };\n}\n\nexport function canDecodeJpeg(metadata = {})\n{\n return metadata.sourceFormat === \"jpeg\" &&\n metadata.precision === 8 &&\n metadata.components >= 1 && metadata.components <= 3 &&\n (metadata.marker === 0xc0 || metadata.marker === 0xc1) &&\n metadata.progressive !== true;\n}\n\n/**\n * Pure-JS baseline sequential JPEG decoder that parses markers, quantization\n * and Huffman tables, and entropy-coded scans into RGBA pixels.\n */\nclass BaselineJpegDecoder\n{\n #bytes;\n #offset = 0;\n #quantization = new Map();\n #huffman = new Map();\n #frame = null;\n #scan = null;\n #restartInterval = 0;\n\n constructor(bytes)\n {\n this.#bytes = bytes;\n }\n\n decode()\n {\n this.readMarker(0xd8);\n while (this.#offset < this.#bytes.length)\n {\n const marker = this.nextMarker();\n if (marker === 0xd9) break;\n if (marker === 0xda)\n {\n this.readScanHeader();\n return this.decodeScan();\n }\n if (marker === 0xdb) this.readQuantizationTables();\n else if (marker === 0xc0 || marker === 0xc1 || marker === 0xc2) this.readFrame(marker);\n else if (marker === 0xc4) this.readHuffmanTables();\n else if (marker === 0xdd) this.readRestartInterval();\n else if (marker >= 0xe0 && marker <= 0xef || marker === 0xfe) this.skipSegment();\n else if (marker === 0xd8 || marker === 0x01 || marker >= 0xd0 && marker <= 0xd7) continue;\n else this.skipSegment();\n }\n throw new Error(\"jpeg: no baseline scan found\");\n }\n\n readFrame(marker)\n {\n const length = this.readU16();\n const precision = this.readU8();\n const height = this.readU16();\n const width = this.readU16();\n const components = this.readU8();\n if (precision !== 8) throw new Error(`jpeg: unsupported sample precision ${precision}`);\n if (!width || !height || !components || components > 3) throw new Error(\"jpeg: unsupported frame layout\");\n\n const list = [];\n let maxH = 0, maxV = 0;\n for (let i = 0; i < components; i++)\n {\n const id = this.readU8();\n const sampling = this.readU8();\n const component = {\n id,\n h: sampling >>> 4,\n v: sampling & 0x0f,\n quantizationId: this.readU8(),\n dc: 0,\n ac: 0,\n previousDc: 0,\n plane: null,\n planeWidth: 0,\n planeHeight: 0\n };\n if (!component.h || !component.v || component.h > 4 || component.v > 4)\n {\n throw new Error(\"jpeg: unsupported component sampling\");\n }\n maxH = Math.max(maxH, component.h);\n maxV = Math.max(maxV, component.v);\n list.push(component);\n }\n const consumed = 8 + components * 3;\n if (length !== consumed) this.#offset += Math.max(0, length - consumed);\n if (marker === 0xc2) throw new Error(\"jpeg: progressive scans are not supported by the software decoder\");\n this.#frame = { width, height, precision, components: list, maxH, maxV };\n }\n\n readQuantizationTables()\n {\n const end = this.#offset + this.readU16() - 2;\n while (this.#offset < end)\n {\n const info = this.readU8();\n const precision = info >>> 4;\n const id = info & 0x0f;\n if (precision > 1) throw new Error(\"jpeg: unsupported 16-bit quantization table\");\n const table = new Uint16Array(64);\n for (let i = 0; i < 64; i++) table[ZIGZAG[i]] = precision ? this.readU16() : this.readU8();\n this.#quantization.set(id, table);\n }\n this.#offset = end;\n }\n\n readHuffmanTables()\n {\n const end = this.#offset + this.readU16() - 2;\n while (this.#offset < end)\n {\n const info = this.readU8();\n const table = new Array(17).fill(null).map(() => []);\n const counts = [];\n for (let length = 1; length <= 16; length++) counts.push(this.readU8());\n let code = 0;\n let valueIndex = 0;\n for (let length = 1; length <= 16; length++)\n {\n for (let i = 0; i < counts[length - 1]; i++)\n {\n table[length].push({ code, value: this.#bytes[this.#offset + valueIndex] });\n valueIndex++;\n code++;\n }\n code <<= 1;\n }\n this.#offset += valueIndex;\n this.#huffman.set(`${info >>> 4}:${info & 0x0f}`, table);\n }\n this.#offset = end;\n }\n\n readRestartInterval()\n {\n const length = this.readU16();\n if (length !== 4) throw new Error(\"jpeg: invalid restart interval segment\");\n this.#restartInterval = this.readU16();\n }\n\n readScanHeader()\n {\n const length = this.readU16();\n const count = this.readU8();\n if (!this.#frame || count !== this.#frame.components.length) throw new Error(\"jpeg: unsupported scan component count\");\n const byId = new Map(this.#frame.components.map(component => [ component.id, component ]));\n for (let i = 0; i < count; i++)\n {\n const id = this.readU8();\n const tables = this.readU8();\n const component = byId.get(id);\n if (!component) throw new Error(`jpeg: scan references unknown component ${id}`);\n component.dc = tables >>> 4;\n component.ac = tables & 0x0f;\n }\n const spectralStart = this.readU8();\n const spectralEnd = this.readU8();\n const successive = this.readU8();\n if (spectralStart !== 0 || spectralEnd !== 63 || successive !== 0)\n {\n throw new Error(\"jpeg: progressive or non-sequential scan is not supported\");\n }\n const consumed = 6 + count * 2;\n if (length !== consumed) this.#offset += Math.max(0, length - consumed);\n this.#scan = { byId };\n }\n\n decodeScan()\n {\n const frame = this.#frame;\n const mcuWidth = 8 * frame.maxH;\n const mcuHeight = 8 * frame.maxV;\n const mcuColumns = Math.ceil(frame.width / mcuWidth);\n const mcuRows = Math.ceil(frame.height / mcuHeight);\n for (const component of frame.components)\n {\n component.planeWidth = mcuColumns * component.h * 8;\n component.planeHeight = mcuRows * component.v * 8;\n component.plane = new Uint8Array(component.planeWidth * component.planeHeight);\n }\n\n const reader = new EntropyReader(this.#bytes, this.#offset);\n let mcuIndex = 0;\n for (let row = 0; row < mcuRows; row++)\n {\n for (let column = 0; column < mcuColumns; column++)\n {\n for (const component of frame.components)\n {\n for (let y = 0; y < component.v; y++)\n {\n for (let x = 0; x < component.h; x++)\n {\n const block = this.decodeBlock(reader, component);\n const originX = (column * component.h + x) * 8;\n const originY = (row * component.v + y) * 8;\n writeBlock(component.plane, component.planeWidth, originX, originY, block);\n }\n }\n }\n mcuIndex++;\n if (this.#restartInterval && mcuIndex % this.#restartInterval === 0 && mcuIndex < mcuColumns * mcuRows)\n {\n reader.align();\n reader.consumeRestart();\n for (const component of frame.components) component.previousDc = 0;\n }\n }\n }\n const data = new Uint8Array(frame.width * frame.height * 4);\n for (let y = 0; y < frame.height; y++)\n {\n for (let x = 0; x < frame.width; x++)\n {\n const offset = (y * frame.width + x) * 4;\n if (frame.components.length === 1)\n {\n const value = frame.components[0].plane[y * frame.components[0].planeWidth + x];\n data[offset] = value; data[offset + 1] = value; data[offset + 2] = value;\n }\n else\n {\n const yValue = sampleComponent(frame.components[0], x, y, frame.width, frame.height);\n const cb = sampleComponent(frame.components[1], x, y, frame.width, frame.height) - 128;\n const cr = sampleComponent(frame.components[2], x, y, frame.width, frame.height) - 128;\n data[offset] = clampByte(yValue + 1.402 * cr);\n data[offset + 1] = clampByte(yValue - 0.344136 * cb - 0.714136 * cr);\n data[offset + 2] = clampByte(yValue + 1.772 * cb);\n }\n data[offset + 3] = 255;\n }\n }\n return { width: frame.width, height: frame.height, data };\n }\n\n decodeBlock(reader, component)\n {\n const quantization = this.#quantization.get(component.quantizationId);\n const dcTable = this.#huffman.get(`0:${component.dc}`);\n const acTable = this.#huffman.get(`1:${component.ac}`);\n if (!quantization || !dcTable || !acTable) throw new Error(\"jpeg: missing quantization or Huffman table\");\n const coefficients = new Int32Array(64);\n const category = decodeHuffman(reader, dcTable);\n const delta = receiveExtend(reader, category);\n component.previousDc += delta;\n coefficients[0] = component.previousDc;\n let index = 1;\n while (index < 64)\n {\n const value = decodeHuffman(reader, acTable);\n if (value === 0) break;\n if (value === 0xf0) { index += 16; continue; }\n index += value >>> 4;\n if (index >= 64) throw new Error(\"jpeg: invalid AC coefficient run\");\n coefficients[ZIGZAG[index]] = receiveExtend(reader, value & 0x0f);\n index++;\n }\n for (let i = 0; i < 64; i++) coefficients[i] *= quantization[i];\n return inverseDct(coefficients);\n }\n\n readU8()\n {\n if (this.#offset >= this.#bytes.length) throw new Error(\"jpeg: unexpected end of input\");\n return this.#bytes[this.#offset++];\n }\n\n readU16()\n {\n return (this.readU8() << 8) | this.readU8();\n }\n\n readMarker(expected = null)\n {\n const marker = this.nextMarker();\n if (expected !== null && marker !== expected) throw new Error(\"jpeg: missing SOI marker\");\n return marker;\n }\n\n nextMarker()\n {\n while (this.#offset < this.#bytes.length && this.#bytes[this.#offset++] !== 0xff)\n {\n // Scan forward to the next marker prefix.\n }\n while (this.#offset < this.#bytes.length && this.#bytes[this.#offset] === 0xff) this.#offset++;\n if (this.#offset >= this.#bytes.length) throw new Error(\"jpeg: unexpected end while reading marker\");\n return this.#bytes[this.#offset++];\n }\n\n skipSegment()\n {\n const length = this.readU16();\n if (length < 2 || this.#offset + length - 2 > this.#bytes.length) throw new Error(\"jpeg: invalid segment length\");\n this.#offset += length - 2;\n }\n}\n\n/**\n * Bit-level reader over JPEG entropy-coded data that handles byte stuffing\n * and restart markers for the baseline decoder.\n */\nclass EntropyReader\n{\n #bytes;\n #offset;\n #buffer = 0;\n #bits = 0;\n #marker = null;\n\n constructor(bytes, offset)\n {\n this.#bytes = bytes;\n this.#offset = offset;\n }\n\n readBit()\n {\n if (!this.#bits)\n {\n let value = this.#bytes[this.#offset++];\n if (value === 0xff)\n {\n while (this.#bytes[this.#offset] === 0xff) this.#offset++;\n const marker = this.#bytes[this.#offset++];\n if (marker !== 0x00) { this.#marker = marker; throw new Error(\"jpeg: unexpected marker in entropy data\"); }\n value = 0xff;\n }\n if (value === undefined) throw new Error(\"jpeg: unexpected end in entropy data\");\n this.#buffer = value;\n this.#bits = 8;\n }\n return (this.#buffer >>> --this.#bits) & 1;\n }\n\n readBits(count)\n {\n let value = 0;\n for (let i = 0; i < count; i++) value = (value << 1) | this.readBit();\n return value;\n }\n\n align()\n {\n this.#bits = 0;\n }\n\n consumeRestart()\n {\n while (this.#bytes[this.#offset] === 0xff) this.#offset++;\n const marker = this.#bytes[this.#offset++];\n if (marker < 0xd0 || marker > 0xd7) throw new Error(\"jpeg: missing restart marker\");\n }\n}\n\nfunction decodeHuffman(reader, table)\n{\n let code = 0;\n for (let length = 1; length <= 16; length++)\n {\n code = (code << 1) | reader.readBit();\n const entry = table[length].find(item => item.code === code);\n if (entry) return entry.value;\n }\n throw new Error(\"jpeg: invalid Huffman code\");\n}\n\nfunction receiveExtend(reader, size)\n{\n if (!size) return 0;\n const value = reader.readBits(size);\n const threshold = 1 << (size - 1);\n return value < threshold ? value - ((1 << size) - 1) : value;\n}\n\nfunction inverseDct(coefficients)\n{\n const output = new Uint8Array(64);\n for (let y = 0; y < 8; y++)\n {\n for (let x = 0; x < 8; x++)\n {\n let sum = 0;\n for (let v = 0; v < 8; v++)\n {\n for (let u = 0; u < 8; u++)\n {\n sum += SCALE[u] * SCALE[v] * coefficients[v * 8 + u] * COSINE[x][u] * COSINE[y][v];\n }\n }\n output[y * 8 + x] = clampByte(128 + sum / 4);\n }\n }\n return output;\n}\n\nfunction writeBlock(plane, planeWidth, originX, originY, block)\n{\n for (let y = 0; y < 8; y++)\n {\n const targetY = originY + y;\n if (targetY >= plane.length / planeWidth) continue;\n for (let x = 0; x < 8; x++)\n {\n const targetX = originX + x;\n if (targetX < planeWidth) plane[targetY * planeWidth + targetX] = block[y * 8 + x];\n }\n }\n}\n\nfunction sampleComponent(component, x, y, width, height)\n{\n const sampleX = Math.min(component.planeWidth - 1, Math.floor(x * component.planeWidth / width));\n const sampleY = Math.min(component.planeHeight - 1, Math.floor(y * component.planeHeight / height));\n return component.plane[sampleY * component.planeWidth + sampleX];\n}\n\nfunction clampByte(value)\n{\n return Math.max(0, Math.min(255, Math.round(value)));\n}\n"],"names":["ZIGZAG","COSINE","Array","from","length","_","x","u","Math","cos","PI","SCALE","value","sqrt","decodeJpegToRgba","bytes","metadata","decoder","BaselineJpegDecoder","image","decode","payloadType","sourceFormat","mimeType","containerOnly","isDecoded","rgbaDecodeSupported","width","height","pixelFormat","data","strideBytes","origin","colorSpace","alphaMode","canDecodeJpeg","precision","components","marker","progressive","Map","constructor","readMarker","nextMarker","readScanHeader","decodeScan","readQuantizationTables","readFrame","readHuffmanTables","readRestartInterval","skipSegment","Error","readU16","readU8","list","maxH","maxV","i","id","sampling","component","h","v","quantizationId","dc","ac","previousDc","plane","planeWidth","planeHeight","max","push","consumed","end","info","table","Uint16Array","set","fill","map","counts","code","valueIndex","count","byId","tables","get","spectralStart","spectralEnd","successive","frame","mcuWidth","mcuHeight","mcuColumns","ceil","mcuRows","Uint8Array","reader","EntropyReader","mcuIndex","row","column","y","block","decodeBlock","originX","originY","writeBlock","align","consumeRestart","offset","yValue","sampleComponent","cb","cr","clampByte","quantization","dcTable","acTable","coefficients","Int32Array","category","decodeHuffman","delta","receiveExtend","index","inverseDct","expected","readBit","undefined","readBits","entry","find","item","size","threshold","output","sum","targetY","targetX","sampleX","min","floor","sampleY","round"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jpeg.js","sources":["../../../../../src/formats/jpeg/core/jpeg.js"],"sourcesContent":["const ZIGZAG = [\n 0, 1, 5, 6, 14, 15, 27, 28,\n 2, 4, 7, 13, 16, 26, 29, 42,\n 3, 8, 12, 17, 25, 30, 41, 43,\n 9, 11, 18, 24, 31, 40, 44, 53,\n 10, 19, 23, 32, 39, 45, 52, 54,\n 20, 22, 33, 38, 46, 51, 55, 60,\n 21, 34, 37, 47, 50, 56, 59, 61,\n 35, 36, 48, 49, 57, 58, 62, 63\n];\n\nconst COSINE = Array.from({ length: 8 }, (_, x) =>\n Array.from({ length: 8 }, (_, u) => Math.cos(((2 * x + 1) * u * Math.PI) / 16)));\n\nconst SCALE = Array.from({ length: 8 }, (_, value) => value === 0 ? 1 / Math.sqrt(2) : 1);\n\n/**\n * Decodes baseline JPEG bytes into a normalized RGBA payload for the JPEG format\n * reader.\n */\nexport function decodeJpegToRgba(bytes, metadata = {})\n{\n const decoder = new BaselineJpegDecoder(bytes);\n const image = decoder.decode();\n return {\n payloadType: \"rgba\",\n sourceFormat: \"jpeg\",\n mimeType: \"image/jpeg\",\n containerOnly: false,\n isDecoded: true,\n rgbaDecodeSupported: true,\n width: image.width,\n height: image.height,\n pixelFormat: \"rgba8unorm\",\n data: image.data,\n strideBytes: image.width * 4,\n origin: \"top-left\",\n colorSpace: \"srgb\",\n alphaMode: \"opaque\",\n metadata: { ...metadata, decoder: \"software-baseline\" }\n };\n}\n\n/**\n * Reports whether JPEG metadata is supported by the software decoder for the\n * JPEG format reader.\n */\nexport function canDecodeJpeg(metadata = {})\n{\n return metadata.sourceFormat === \"jpeg\" &&\n metadata.precision === 8 &&\n metadata.components >= 1 && metadata.components <= 3 &&\n (metadata.marker === 0xc0 || metadata.marker === 0xc1) &&\n metadata.progressive !== true;\n}\n\n/**\n * Pure-JS baseline sequential JPEG decoder that parses markers, quantization\n * and Huffman tables, and entropy-coded scans into RGBA pixels.\n */\nclass BaselineJpegDecoder\n{\n #bytes;\n #offset = 0;\n #quantization = new Map();\n #huffman = new Map();\n #frame = null;\n #scan = null;\n #restartInterval = 0;\n\n /** Creates a BaselineJpegDecoder with caller-provided initial state. */\n constructor(bytes)\n {\n this.#bytes = bytes;\n }\n\n /**\n * Decodes the current baseline JPEG stream into RGBA pixels for the JPEG\n * decoder.\n */\n decode()\n {\n this.readMarker(0xd8);\n while (this.#offset < this.#bytes.length)\n {\n const marker = this.nextMarker();\n if (marker === 0xd9) break;\n if (marker === 0xda)\n {\n this.readScanHeader();\n return this.decodeScan();\n }\n if (marker === 0xdb) this.readQuantizationTables();\n else if (marker === 0xc0 || marker === 0xc1 || marker === 0xc2) this.readFrame(marker);\n else if (marker === 0xc4) this.readHuffmanTables();\n else if (marker === 0xdd) this.readRestartInterval();\n else if (marker >= 0xe0 && marker <= 0xef || marker === 0xfe) this.skipSegment();\n else if (marker === 0xd8 || marker === 0x01 || marker >= 0xd0 && marker <= 0xd7) continue;\n else this.skipSegment();\n }\n throw new Error(\"jpeg: no baseline scan found\");\n }\n\n /**\n * Reads JPEG frame dimensions, sampling, and component metadata for the JPEG\n * decoder.\n */\n readFrame(marker)\n {\n const length = this.readU16();\n const precision = this.readU8();\n const height = this.readU16();\n const width = this.readU16();\n const components = this.readU8();\n if (precision !== 8) throw new Error(`jpeg: unsupported sample precision ${precision}`);\n if (!width || !height || !components || components > 3) throw new Error(\"jpeg: unsupported frame layout\");\n\n const list = [];\n let maxH = 0, maxV = 0;\n for (let i = 0; i < components; i++)\n {\n const id = this.readU8();\n const sampling = this.readU8();\n const component = {\n id,\n h: sampling >>> 4,\n v: sampling & 0x0f,\n quantizationId: this.readU8(),\n dc: 0,\n ac: 0,\n previousDc: 0,\n plane: null,\n planeWidth: 0,\n planeHeight: 0\n };\n if (!component.h || !component.v || component.h > 4 || component.v > 4)\n {\n throw new Error(\"jpeg: unsupported component sampling\");\n }\n maxH = Math.max(maxH, component.h);\n maxV = Math.max(maxV, component.v);\n list.push(component);\n }\n const consumed = 8 + components * 3;\n if (length !== consumed) this.#offset += Math.max(0, length - consumed);\n if (marker === 0xc2) throw new Error(\"jpeg: progressive scans are not supported by the software decoder\");\n this.#frame = { width, height, precision, components: list, maxH, maxV };\n }\n\n /**\n * Reads JPEG quantization tables into natural coefficient order for the JPEG\n * decoder.\n */\n readQuantizationTables()\n {\n const end = this.#offset + this.readU16() - 2;\n while (this.#offset < end)\n {\n const info = this.readU8();\n const precision = info >>> 4;\n const id = info & 0x0f;\n if (precision > 1) throw new Error(\"jpeg: unsupported 16-bit quantization table\");\n const table = new Uint16Array(64);\n for (let i = 0; i < 64; i++) table[ZIGZAG[i]] = precision ? this.readU16() : this.readU8();\n this.#quantization.set(id, table);\n }\n this.#offset = end;\n }\n\n /**\n * Builds JPEG Huffman lookup tables from their canonical definitions for the\n * JPEG decoder.\n */\n readHuffmanTables()\n {\n const end = this.#offset + this.readU16() - 2;\n while (this.#offset < end)\n {\n const info = this.readU8();\n const table = new Array(17).fill(null).map(() => []);\n const counts = [];\n for (let length = 1; length <= 16; length++) counts.push(this.readU8());\n let code = 0;\n let valueIndex = 0;\n for (let length = 1; length <= 16; length++)\n {\n for (let i = 0; i < counts[length - 1]; i++)\n {\n table[length].push({ code, value: this.#bytes[this.#offset + valueIndex] });\n valueIndex++;\n code++;\n }\n code <<= 1;\n }\n this.#offset += valueIndex;\n this.#huffman.set(`${info >>> 4}:${info & 0x0f}`, table);\n }\n this.#offset = end;\n }\n\n /**\n * Reads the JPEG restart interval declared by a DRI segment for the JPEG\n * decoder.\n */\n readRestartInterval()\n {\n const length = this.readU16();\n if (length !== 4) throw new Error(\"jpeg: invalid restart interval segment\");\n this.#restartInterval = this.readU16();\n }\n\n /**\n * Reads JPEG scan component and spectral-selection metadata for the JPEG\n * decoder.\n */\n readScanHeader()\n {\n const length = this.readU16();\n const count = this.readU8();\n if (!this.#frame || count !== this.#frame.components.length) throw new Error(\"jpeg: unsupported scan component count\");\n const byId = new Map(this.#frame.components.map(component => [ component.id, component ]));\n for (let i = 0; i < count; i++)\n {\n const id = this.readU8();\n const tables = this.readU8();\n const component = byId.get(id);\n if (!component) throw new Error(`jpeg: scan references unknown component ${id}`);\n component.dc = tables >>> 4;\n component.ac = tables & 0x0f;\n }\n const spectralStart = this.readU8();\n const spectralEnd = this.readU8();\n const successive = this.readU8();\n if (spectralStart !== 0 || spectralEnd !== 63 || successive !== 0)\n {\n throw new Error(\"jpeg: progressive or non-sequential scan is not supported\");\n }\n const consumed = 6 + count * 2;\n if (length !== consumed) this.#offset += Math.max(0, length - consumed);\n this.#scan = { byId };\n }\n\n /**\n * Decodes the current JPEG entropy scan into component planes and RGBA\n * pixels for the JPEG decoder.\n */\n decodeScan()\n {\n const frame = this.#frame;\n const mcuWidth = 8 * frame.maxH;\n const mcuHeight = 8 * frame.maxV;\n const mcuColumns = Math.ceil(frame.width / mcuWidth);\n const mcuRows = Math.ceil(frame.height / mcuHeight);\n for (const component of frame.components)\n {\n component.planeWidth = mcuColumns * component.h * 8;\n component.planeHeight = mcuRows * component.v * 8;\n component.plane = new Uint8Array(component.planeWidth * component.planeHeight);\n }\n\n const reader = new EntropyReader(this.#bytes, this.#offset);\n let mcuIndex = 0;\n for (let row = 0; row < mcuRows; row++)\n {\n for (let column = 0; column < mcuColumns; column++)\n {\n for (const component of frame.components)\n {\n for (let y = 0; y < component.v; y++)\n {\n for (let x = 0; x < component.h; x++)\n {\n const block = this.decodeBlock(reader, component);\n const originX = (column * component.h + x) * 8;\n const originY = (row * component.v + y) * 8;\n writeBlock(component.plane, component.planeWidth, originX, originY, block);\n }\n }\n }\n mcuIndex++;\n if (this.#restartInterval && mcuIndex % this.#restartInterval === 0 && mcuIndex < mcuColumns * mcuRows)\n {\n reader.align();\n reader.consumeRestart();\n for (const component of frame.components) component.previousDc = 0;\n }\n }\n }\n const data = new Uint8Array(frame.width * frame.height * 4);\n for (let y = 0; y < frame.height; y++)\n {\n for (let x = 0; x < frame.width; x++)\n {\n const offset = (y * frame.width + x) * 4;\n if (frame.components.length === 1)\n {\n const value = frame.components[0].plane[y * frame.components[0].planeWidth + x];\n data[offset] = value; data[offset + 1] = value; data[offset + 2] = value;\n }\n else\n {\n const yValue = sampleComponent(frame.components[0], x, y, frame.width, frame.height);\n const cb = sampleComponent(frame.components[1], x, y, frame.width, frame.height) - 128;\n const cr = sampleComponent(frame.components[2], x, y, frame.width, frame.height) - 128;\n data[offset] = clampByte(yValue + 1.402 * cr);\n data[offset + 1] = clampByte(yValue - 0.344136 * cb - 0.714136 * cr);\n data[offset + 2] = clampByte(yValue + 1.772 * cb);\n }\n data[offset + 3] = 255;\n }\n }\n return { width: frame.width, height: frame.height, data };\n }\n\n /**\n * Decodes one JPEG coefficient block through inverse quantization and IDCT\n * for the JPEG decoder.\n */\n decodeBlock(reader, component)\n {\n const quantization = this.#quantization.get(component.quantizationId);\n const dcTable = this.#huffman.get(`0:${component.dc}`);\n const acTable = this.#huffman.get(`1:${component.ac}`);\n if (!quantization || !dcTable || !acTable) throw new Error(\"jpeg: missing quantization or Huffman table\");\n const coefficients = new Int32Array(64);\n const category = decodeHuffman(reader, dcTable);\n const delta = receiveExtend(reader, category);\n component.previousDc += delta;\n coefficients[0] = component.previousDc;\n let index = 1;\n while (index < 64)\n {\n const value = decodeHuffman(reader, acTable);\n if (value === 0) break;\n if (value === 0xf0) { index += 16; continue; }\n index += value >>> 4;\n if (index >= 64) throw new Error(\"jpeg: invalid AC coefficient run\");\n coefficients[ZIGZAG[index]] = receiveExtend(reader, value & 0x0f);\n index++;\n }\n for (let i = 0; i < 64; i++) coefficients[i] *= quantization[i];\n return inverseDct(coefficients);\n }\n\n /**\n * Reads an unsigned 8-bit value from the JPEG byte cursor for the JPEG\n * decoder.\n */\n readU8()\n {\n if (this.#offset >= this.#bytes.length) throw new Error(\"jpeg: unexpected end of input\");\n return this.#bytes[this.#offset++];\n }\n\n /**\n * Reads an unsigned 16-bit big-endian value from the JPEG byte cursor for\n * the JPEG decoder.\n */\n readU16()\n {\n return (this.readU8() << 8) | this.readU8();\n }\n\n /** Consumes and validates an expected JPEG marker for the JPEG decoder. */\n readMarker(expected = null)\n {\n const marker = this.nextMarker();\n if (expected !== null && marker !== expected) throw new Error(\"jpeg: missing SOI marker\");\n return marker;\n }\n\n /** Scans forward to the next valid JPEG marker byte for the JPEG decoder. */\n nextMarker()\n {\n while (this.#offset < this.#bytes.length && this.#bytes[this.#offset++] !== 0xff)\n {\n // Scan forward to the next marker prefix.\n }\n while (this.#offset < this.#bytes.length && this.#bytes[this.#offset] === 0xff) this.#offset++;\n if (this.#offset >= this.#bytes.length) throw new Error(\"jpeg: unexpected end while reading marker\");\n return this.#bytes[this.#offset++];\n }\n\n /**\n * Advances past the payload of an unhandled JPEG segment for the JPEG\n * decoder.\n */\n skipSegment()\n {\n const length = this.readU16();\n if (length < 2 || this.#offset + length - 2 > this.#bytes.length) throw new Error(\"jpeg: invalid segment length\");\n this.#offset += length - 2;\n }\n}\n\n/**\n * Bit-level reader over JPEG entropy-coded data that handles byte stuffing\n * and restart markers for the baseline decoder.\n */\nclass EntropyReader\n{\n #bytes;\n #offset;\n #buffer = 0;\n #bits = 0;\n #marker = null;\n\n /**\n * Creates a EntropyReader over caller-provided JPEG bytes and reader\n * options.\n */\n constructor(bytes, offset)\n {\n this.#bytes = bytes;\n this.#offset = offset;\n }\n\n /** Reads one entropy-coded bit for the JPEG binary reader. */\n readBit()\n {\n if (!this.#bits)\n {\n let value = this.#bytes[this.#offset++];\n if (value === 0xff)\n {\n while (this.#bytes[this.#offset] === 0xff) this.#offset++;\n const marker = this.#bytes[this.#offset++];\n if (marker !== 0x00) { this.#marker = marker; throw new Error(\"jpeg: unexpected marker in entropy data\"); }\n value = 0xff;\n }\n if (value === undefined) throw new Error(\"jpeg: unexpected end in entropy data\");\n this.#buffer = value;\n this.#bits = 8;\n }\n return (this.#buffer >>> --this.#bits) & 1;\n }\n\n /**\n * Reads the requested number of entropy-coded bits for the JPEG binary\n * reader.\n */\n readBits(count)\n {\n let value = 0;\n for (let i = 0; i < count; i++) value = (value << 1) | this.readBit();\n return value;\n }\n\n /**\n * Aligns the entropy cursor to the next byte boundary for the JPEG binary\n * reader.\n */\n align()\n {\n this.#bits = 0;\n }\n\n /**\n * Consumes and validates the next JPEG restart marker for the JPEG binary\n * reader.\n */\n consumeRestart()\n {\n while (this.#bytes[this.#offset] === 0xff) this.#offset++;\n const marker = this.#bytes[this.#offset++];\n if (marker < 0xd0 || marker > 0xd7) throw new Error(\"jpeg: missing restart marker\");\n }\n}\n\nfunction decodeHuffman(reader, table)\n{\n let code = 0;\n for (let length = 1; length <= 16; length++)\n {\n code = (code << 1) | reader.readBit();\n const entry = table[length].find(item => item.code === code);\n if (entry) return entry.value;\n }\n throw new Error(\"jpeg: invalid Huffman code\");\n}\n\nfunction receiveExtend(reader, size)\n{\n if (!size) return 0;\n const value = reader.readBits(size);\n const threshold = 1 << (size - 1);\n return value < threshold ? value - ((1 << size) - 1) : value;\n}\n\nfunction inverseDct(coefficients)\n{\n const output = new Uint8Array(64);\n for (let y = 0; y < 8; y++)\n {\n for (let x = 0; x < 8; x++)\n {\n let sum = 0;\n for (let v = 0; v < 8; v++)\n {\n for (let u = 0; u < 8; u++)\n {\n sum += SCALE[u] * SCALE[v] * coefficients[v * 8 + u] * COSINE[x][u] * COSINE[y][v];\n }\n }\n output[y * 8 + x] = clampByte(128 + sum / 4);\n }\n }\n return output;\n}\n\nfunction writeBlock(plane, planeWidth, originX, originY, block)\n{\n for (let y = 0; y < 8; y++)\n {\n const targetY = originY + y;\n if (targetY >= plane.length / planeWidth) continue;\n for (let x = 0; x < 8; x++)\n {\n const targetX = originX + x;\n if (targetX < planeWidth) plane[targetY * planeWidth + targetX] = block[y * 8 + x];\n }\n }\n}\n\nfunction sampleComponent(component, x, y, width, height)\n{\n const sampleX = Math.min(component.planeWidth - 1, Math.floor(x * component.planeWidth / width));\n const sampleY = Math.min(component.planeHeight - 1, Math.floor(y * component.planeHeight / height));\n return component.plane[sampleY * component.planeWidth + sampleX];\n}\n\nfunction clampByte(value)\n{\n return Math.max(0, Math.min(255, Math.round(value)));\n}\n"],"names":["ZIGZAG","COSINE","Array","from","length","_","x","u","Math","cos","PI","SCALE","value","sqrt","decodeJpegToRgba","bytes","metadata","decoder","BaselineJpegDecoder","image","decode","payloadType","sourceFormat","mimeType","containerOnly","isDecoded","rgbaDecodeSupported","width","height","pixelFormat","data","strideBytes","origin","colorSpace","alphaMode","canDecodeJpeg","precision","components","marker","progressive","Map","constructor","readMarker","nextMarker","readScanHeader","decodeScan","readQuantizationTables","readFrame","readHuffmanTables","readRestartInterval","skipSegment","Error","readU16","readU8","list","maxH","maxV","i","id","sampling","component","h","v","quantizationId","dc","ac","previousDc","plane","planeWidth","planeHeight","max","push","consumed","end","info","table","Uint16Array","set","fill","map","counts","code","valueIndex","count","byId","tables","get","spectralStart","spectralEnd","successive","frame","mcuWidth","mcuHeight","mcuColumns","ceil","mcuRows","Uint8Array","reader","EntropyReader","mcuIndex","row","column","y","block","decodeBlock","originX","originY","writeBlock","align","consumeRestart","offset","yValue","sampleComponent","cb","cr","clampByte","quantization","dcTable","acTable","coefficients","Int32Array","category","decodeHuffman","delta","receiveExtend","index","inverseDct","expected","readBit","undefined","readBits","entry","find","item","size","threshold","output","sum","targetY","targetX","sampleX","min","floor","sampleY","round"],"mappings":"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"}
|