@carbonenginejs/runtime 0.1.0-alpha.4 → 0.1.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/global/blue/BlueClasses.js +200 -0
- package/dist/global/blue/BlueClasses.js.map +1 -0
- package/dist/global/blue/IBlueClasses.js +79 -0
- package/dist/global/blue/IBlueClasses.js.map +1 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js +16 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -1
- package/dist/global/blue/blue.js +8 -2
- package/dist/global/blue/blue.js.map +1 -1
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -1
- package/dist/global/consts/index.js +0 -1
- package/dist/global/consts/index.js.map +1 -1
- package/dist/global/consts/renderContext/formats.js +26 -25
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/{trinityal/Tr2BitmapDimensions.js → global/imageio/BitmapDimensions.js} +19 -15
- package/dist/global/imageio/BitmapDimensions.js.map +1 -0
- package/dist/global/imageio/Cutout.js +28 -0
- package/dist/global/imageio/Cutout.js.map +1 -0
- package/dist/global/imageio/HostBitmap.js +1106 -0
- package/dist/global/imageio/HostBitmap.js.map +1 -0
- package/dist/global/imageio/ImageIOResult.js +99 -0
- package/dist/global/imageio/ImageIOResult.js.map +1 -0
- package/dist/global/imageio/ImageUtility.js +205 -0
- package/dist/global/imageio/ImageUtility.js.map +1 -0
- package/dist/global/imageio/LoadParameters.js +86 -0
- package/dist/global/imageio/LoadParameters.js.map +1 -0
- package/dist/global/imageio/Metadata.js +22 -0
- package/dist/global/imageio/Metadata.js.map +1 -0
- package/dist/global/imageio/index.js +8 -0
- package/dist/global/{consts/webgpu → imageio}/index.js.map +1 -1
- package/dist/global/index.js +2 -1
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/color.js +1 -1
- package/dist/global/math/color.js.map +1 -1
- package/dist/global/schema/CjsSchema.js +8 -0
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/resource/CjsResMan.js +47 -7
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/Tr2LightProfileRes.js +37 -0
- package/dist/resource/Tr2LightProfileRes.js.map +1 -1
- package/dist/resource/format/CjsByteWriter.js +46 -46
- package/dist/resource/format/CjsByteWriter.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +7 -8
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatStore.js +8 -8
- package/dist/resource/format/CjsFormatStore.js.map +1 -1
- package/dist/resource/format/CjsGeometryFormat.js +114 -0
- package/dist/resource/format/CjsGeometryFormat.js.map +1 -0
- package/dist/resource/format/CjsImageFormat.js +282 -0
- package/dist/resource/format/CjsImageFormat.js.map +1 -0
- package/dist/resource/format/CjsResourceProbe.js +12 -48
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/CjsStringTable.js +37 -37
- package/dist/resource/format/CjsStringTable.js.map +1 -1
- package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js +10 -10
- package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
- package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js +37 -37
- package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js.map +1 -1
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +35 -7
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/resource/format/index.js +3 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/formats/black/CjsBlackFormat.js +130 -137
- package/dist/resource/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +12 -19
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +1 -3
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +19 -82
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/constants.js +1 -2
- package/dist/resource/formats/cmf/core/constants.js.map +1 -1
- package/dist/resource/formats/{stl/core/targets.js → cmf/core/flatShared.js} +9 -8
- package/dist/resource/formats/cmf/core/flatShared.js.map +1 -0
- package/dist/resource/formats/cmf/core/helpers.js +13 -13
- package/dist/resource/formats/cmf/core/helpers.js.map +1 -1
- package/dist/resource/formats/cmf/core/writer.js +24 -24
- package/dist/resource/formats/cmf/core/writer.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +134 -17
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +125 -40
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +14 -16
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/{container.js → DxbcContainer.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcContainer.js.map +1 -0
- package/dist/resource/formats/dxbc/core/{errors.js → DxbcReadError.js} +1 -1
- package/dist/resource/formats/dxbc/core/DxbcReadError.js.map +1 -0
- package/dist/resource/formats/dxbc/core/DxbcReader.js +1 -1
- package/dist/resource/formats/dxbc/core/DxbcReader.js.map +1 -1
- package/dist/resource/formats/dxbc/core/{program.js → DxbcShaderProgram.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcShaderProgram.js.map +1 -0
- package/dist/resource/formats/dxbc/core/{signature.js → DxbcSignatureChunk.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcSignatureChunk.js.map +1 -0
- package/dist/resource/formats/dxbc/core/decoder.js +2 -2
- package/dist/resource/formats/dxbc/core/decoder.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +3 -3
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +18 -20
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +7 -13
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/fsd/32/CjsFsd32Format.js +29 -29
- package/dist/resource/formats/fsd/32/CjsFsd32Format.js.map +1 -1
- package/dist/resource/formats/fsd/64/CjsFsd64Format.js +3 -3
- package/dist/resource/formats/fsd/64/CjsFsd64Format.js.map +1 -1
- package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js +23 -23
- package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -1
- package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js +8 -8
- package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -1
- package/dist/resource/formats/fsd/CjsFsdFormat.js +23 -23
- package/dist/resource/formats/fsd/CjsFsdFormat.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +24 -15
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +33 -98
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -12
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +27 -91
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +22 -25
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js +1 -1
- package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
- package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +3 -3
- package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -1
- package/dist/resource/formats/ies/CjsIESFormat.js +29 -29
- package/dist/resource/formats/ies/CjsIESFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +24 -15
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +3 -5
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/core/jpeg.js +58 -58
- package/dist/resource/formats/jpeg/core/jpeg.js.map +1 -1
- package/dist/resource/formats/jsonl/CjsJsonlFormat.js +3 -3
- package/dist/resource/formats/jsonl/CjsJsonlFormat.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +7 -14
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +3 -5
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +7 -13
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +3 -5
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +92 -157
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +5 -113
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +7 -14
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +7 -12
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +7 -7
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +7 -7
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +40 -15
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +4 -6
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/red/CjsRedFormat.js +22 -28
- package/dist/resource/formats/red/CjsRedFormat.js.map +1 -1
- package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js +3 -7
- package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
- package/dist/resource/formats/schemabound/core/schemaBoundValues.js +5 -0
- package/dist/resource/formats/schemabound/core/schemaBoundValues.js.map +1 -1
- package/dist/resource/formats/sqlite/CjsSqliteFormat.js +4 -9
- package/dist/resource/formats/sqlite/CjsSqliteFormat.js.map +1 -1
- package/dist/resource/formats/static/CjsStaticFormat.js +4 -4
- package/dist/resource/formats/static/CjsStaticFormat.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +39 -104
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +5 -19
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +26 -15
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +3 -5
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +8 -15
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +7 -14
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +3 -5
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +103 -105
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/{errors.js → WebglReadError.js} +1 -1
- package/dist/resource/formats/webgl/core/WebglReadError.js.map +1 -0
- package/dist/resource/formats/webgl/core/effectPackage.js +1 -1
- package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +3 -3
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/{DxbcGlslHelpers.js → DxbcGlslHelperRegistry.js} +2 -2
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelperRegistry.js.map +1 -0
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBlock.js +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBlock.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +28 -29
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/{errors.js → WebgpuReadError.js} +1 -1
- package/dist/resource/formats/webgpu/core/WebgpuReadError.js.map +1 -0
- package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js +1 -1
- package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js +1 -1
- package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js +18 -6
- package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +39 -13
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +16 -14
- package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +8 -13
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +3 -5
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +8 -12
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +9 -17
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +35 -35
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -3
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/yaml/CjsYamlFormat.js +28 -37
- package/dist/resource/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/resource/imageio/ImageIO.js +142 -0
- package/dist/resource/imageio/ImageIO.js.map +1 -0
- package/dist/resource/imageio/index.js +17 -0
- package/dist/resource/imageio/index.js.map +1 -0
- package/dist/resource/index.js +7 -0
- package/dist/resource/index.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +24 -2
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +76 -5
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayConstructor.js +97 -0
- package/dist/resource/texture/CjsTextureArrayConstructor.js.map +1 -0
- package/dist/resource/texture/CjsTexturePackConstructor.js +160 -0
- package/dist/resource/texture/CjsTexturePackConstructor.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepArray.js +72 -0
- package/dist/resource/texture/CjsTexturePipelineStepArray.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepConvert.js +73 -0
- package/dist/resource/texture/CjsTexturePipelineStepConvert.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepPack.js +71 -0
- package/dist/resource/texture/CjsTexturePipelineStepPack.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepResize.js +123 -0
- package/dist/resource/texture/CjsTexturePipelineStepResize.js.map +1 -0
- package/dist/resource/texture/SolidColorTextureConstructor.js +11 -1
- package/dist/resource/texture/SolidColorTextureConstructor.js.map +1 -1
- package/dist/resource/texture/Tr2ImageRes.js +100 -68
- package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +45 -25
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +34 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +30 -3
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +81 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +36 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +146 -24
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/texture/TriTextureRes.js +151 -29
- package/dist/resource/texture/TriTextureRes.js.map +1 -1
- package/dist/resource/texture/index.js +7 -0
- package/dist/resource/texture/index.js.map +1 -1
- package/dist/resource/texture/registerTextureResources.js +83 -0
- package/dist/resource/texture/registerTextureResources.js.map +1 -0
- package/dist/resource/texture/solidColorTexture.js +10 -19
- package/dist/resource/texture/solidColorTexture.js.map +1 -1
- package/dist/sof/EveSOF.js +39 -7
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js +2 -2
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -1
- package/dist/trinity/core/Tr2ImageIOHelpers.js +80 -17
- package/dist/trinity/core/Tr2ImageIOHelpers.js.map +1 -1
- package/dist/trinity/core/Tr2RenderUtils.js +1 -1
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js +49 -62
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -1
- package/dist/trinity/core/Tr2TextureReference.js +114 -0
- package/dist/trinity/core/Tr2TextureReference.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +1 -1
- package/dist/trinity/core/index.js +1 -0
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +5 -4
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/procedural/GradientTextureConstructor.js +5 -4
- package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -1
- package/dist/trinity/core/procedural/gradientTexture.js +10 -13
- package/dist/trinity/core/procedural/gradientTexture.js.map +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/eve/EveImpactOverlay.js +102 -50
- package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -18
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +175 -157
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +100 -83
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +26 -20
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +368 -179
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
- package/dist/trinity/eve/child/EveChildMesh.js +242 -234
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +57 -16
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js +28 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
- package/dist/trinity/eve/index.js +2 -2
- package/dist/trinity/eve/overlays/EveDamageOverlay.js +5 -1
- package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceScene.js +234 -233
- package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -0
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +492 -437
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +3 -3
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +10 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/shader/Tr2DataTextureManager.js +152 -66
- package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js +5 -5
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -1
- package/dist/trinityal/index.js +1 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js +2 -2
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +45 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +170 -170
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +234 -164
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +7 -0
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +78 -14
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +94 -0
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +1 -0
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/global/reference/classes/README.md +90 -0
- package/docs/resource/concepts/format-capabilities.md +3 -3
- package/docs/resource/formats/README.md +1 -1
- package/docs/resource/reference/classes/core.md +31 -1
- package/docs/resource/reference/classes/formats.md +7 -7
- package/docs/resource/reference/classes/resources.md +76 -16
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/trinity-core.md +1692 -1682
- package/docs/trinityal/reference/classes/README.md +0 -10
- package/docs/trinityal/webgpu/reference/classes/README.md +276 -266
- package/package.json +4 -3
- package/dist/global/consts/webgpu/index.js +0 -2
- package/dist/global/consts/webgpu/textureFormats.js +0 -180
- package/dist/global/consts/webgpu/textureFormats.js.map +0 -1
- package/dist/resource/formats/dxbc/core/container.js.map +0 -1
- package/dist/resource/formats/dxbc/core/errors.js.map +0 -1
- package/dist/resource/formats/dxbc/core/program.js.map +0 -1
- package/dist/resource/formats/dxbc/core/signature.js.map +0 -1
- package/dist/resource/formats/stl/core/targets.js.map +0 -1
- package/dist/resource/formats/webgl/core/errors.js.map +0 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +0 -1
- package/dist/resource/formats/webgpu/core/errors.js.map +0 -1
- package/dist/resource/texture/texturePipelineBehavior.js +0 -332
- package/dist/resource/texture/texturePipelineBehavior.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2TextureReference.js +0 -40
- package/dist/trinity/generated/trinityCore/Tr2TextureReference.js.map +0 -1
- package/dist/trinityal/Tr2BitmapDimensions.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jpeg.js","sources":["../../../../../../src/resource/formats/jpeg/core/jpeg.js"],"sourcesContent":["/**\r\n * Scan position to natural coefficient index.\r\n *\r\n * This direction, and not its inverse. Both use sites read a value at scan\r\n * position `i` and need to know where in the 8x8 block it belongs -\r\n * `table[ZIGZAG[i]]` for the quantisation table, `coefficients[ZIGZAG[i]]` for\r\n * an AC coefficient - which is what a position-to-natural table answers.\r\n *\r\n * It was the inverse table until 2026-09-10, which permuted every block's\r\n * coefficients into the wrong frequencies. It survived because the permutation\r\n * fixes index 0, so flat colour decoded exactly and only detail was scrambled,\r\n * and because `raw` is this format's default output: the browser decodes in\r\n * production and nothing compared these pixels against a reference. Measured on\r\n * a 512x512 render, mean neighbouring-pixel difference over lit pixels fell\r\n * from 8.25 to 2.91 when this was corrected.\r\n */\r\nconst ZIGZAG = [\r\n 0, 1, 8, 16, 9, 2, 3, 10,\r\n 17, 24, 32, 25, 18, 11, 4, 5,\r\n 12, 19, 26, 33, 40, 48, 41, 34,\r\n 27, 20, 13, 6, 7, 14, 21, 28,\r\n 35, 42, 49, 56, 57, 50, 43, 36,\r\n 29, 22, 15, 23, 30, 37, 44, 51,\r\n 58, 59, 52, 45, 38, 31, 39, 46,\r\n 53, 60, 61, 54, 47, 55, 62, 63\r\n];\r\n\r\nconst COSINE = Array.from({ length: 8 }, (_, x) =>\r\n Array.from({ length: 8 }, (_, u) => Math.cos(((2 * x + 1) * u * Math.PI) / 16)));\r\n\r\nconst SCALE = Array.from({ length: 8 }, (_, value) => value === 0 ? 1 / Math.sqrt(2) : 1);\r\n\r\n/**\r\n * Decodes baseline JPEG bytes into a normalized RGBA payload for the JPEG format\r\n * reader.\r\n */\r\nexport function decodeJpegToRgba(bytes, metadata = {})\r\n{\r\n const decoder = new BaselineJpegDecoder(bytes);\r\n const image = decoder.decode();\r\n return {\r\n payloadType: \"rgba\",\r\n sourceFormat: \"jpeg\",\r\n mimeType: \"image/jpeg\",\r\n width: image.width,\r\n height: image.height,\r\n pixelFormat: \"rgba8unorm\",\r\n data: image.data,\r\n strideBytes: image.width * 4,\r\n origin: \"top-left\",\r\n colorSpace: \"srgb\",\r\n alphaMode: \"opaque\",\r\n metadata: { ...metadata, decoder: \"software-baseline\" }\r\n };\r\n}\r\n\r\n/**\r\n * Reports whether JPEG metadata is supported by the software decoder for the\r\n * JPEG format reader.\r\n */\r\nexport function canDecodeJpeg(metadata = {})\r\n{\r\n return metadata.sourceFormat === \"jpeg\" &&\r\n metadata.precision === 8 &&\r\n metadata.components >= 1 && metadata.components <= 3 &&\r\n (metadata.marker === 0xc0 || metadata.marker === 0xc1) &&\r\n metadata.progressive !== true;\r\n}\r\n\r\n/**\r\n * Pure-JS baseline sequential JPEG decoder that parses markers, quantization\r\n * and Huffman tables, and entropy-coded scans into RGBA pixels.\r\n */\r\nclass BaselineJpegDecoder\r\n{\r\n #bytes;\r\n #offset = 0;\r\n #quantization = new Map();\r\n #huffman = new Map();\r\n #frame = null;\r\n #scan = null;\r\n #restartInterval = 0;\r\n\r\n /** Creates a BaselineJpegDecoder with caller-provided initial state. */\r\n constructor(bytes)\r\n {\r\n this.#bytes = bytes;\r\n }\r\n\r\n /**\r\n * Decodes the current baseline JPEG stream into RGBA pixels for the JPEG\r\n * decoder.\r\n */\r\n decode()\r\n {\r\n this.readMarker(0xd8);\r\n while (this.#offset < this.#bytes.length)\r\n {\r\n const marker = this.nextMarker();\r\n if (marker === 0xd9) break;\r\n if (marker === 0xda)\r\n {\r\n this.readScanHeader();\r\n return this.decodeScan();\r\n }\r\n if (marker === 0xdb) this.readQuantizationTables();\r\n else if (marker === 0xc0 || marker === 0xc1 || marker === 0xc2) this.readFrame(marker);\r\n else if (marker === 0xc4) this.readHuffmanTables();\r\n else if (marker === 0xdd) this.readRestartInterval();\r\n else if (marker >= 0xe0 && marker <= 0xef || marker === 0xfe) this.skipSegment();\r\n else if (marker === 0xd8 || marker === 0x01 || marker >= 0xd0 && marker <= 0xd7) continue;\r\n else this.skipSegment();\r\n }\r\n throw new Error(\"jpeg: no baseline scan found\");\r\n }\r\n\r\n /**\r\n * Reads JPEG frame dimensions, sampling, and component metadata for the JPEG\r\n * decoder.\r\n */\r\n readFrame(marker)\r\n {\r\n const length = this.readU16();\r\n const precision = this.readU8();\r\n const height = this.readU16();\r\n const width = this.readU16();\r\n const components = this.readU8();\r\n if (precision !== 8) throw new Error(`jpeg: unsupported sample precision ${precision}`);\r\n if (!width || !height || !components || components > 3) throw new Error(\"jpeg: unsupported frame layout\");\r\n\r\n const list = [];\r\n let maxH = 0, maxV = 0;\r\n for (let i = 0; i < components; i++)\r\n {\r\n const id = this.readU8();\r\n const sampling = this.readU8();\r\n const component = {\r\n id,\r\n h: sampling >>> 4,\r\n v: sampling & 0x0f,\r\n quantizationId: this.readU8(),\r\n dc: 0,\r\n ac: 0,\r\n previousDc: 0,\r\n plane: null,\r\n planeWidth: 0,\r\n planeHeight: 0\r\n };\r\n if (!component.h || !component.v || component.h > 4 || component.v > 4)\r\n {\r\n throw new Error(\"jpeg: unsupported component sampling\");\r\n }\r\n maxH = Math.max(maxH, component.h);\r\n maxV = Math.max(maxV, component.v);\r\n list.push(component);\r\n }\r\n const consumed = 8 + components * 3;\r\n if (length !== consumed) this.#offset += Math.max(0, length - consumed);\r\n if (marker === 0xc2) throw new Error(\"jpeg: progressive scans are not supported by the software decoder\");\r\n this.#frame = { width, height, precision, components: list, maxH, maxV };\r\n }\r\n\r\n /**\r\n * Reads JPEG quantization tables into natural coefficient order for the JPEG\r\n * decoder.\r\n */\r\n readQuantizationTables()\r\n {\r\n const end = this.#offset + this.readU16() - 2;\r\n while (this.#offset < end)\r\n {\r\n const info = this.readU8();\r\n const precision = info >>> 4;\r\n const id = info & 0x0f;\r\n if (precision > 1) throw new Error(\"jpeg: unsupported 16-bit quantization table\");\r\n const table = new Uint16Array(64);\r\n for (let i = 0; i < 64; i++) table[ZIGZAG[i]] = precision ? this.readU16() : this.readU8();\r\n this.#quantization.set(id, table);\r\n }\r\n this.#offset = end;\r\n }\r\n\r\n /**\r\n * Builds JPEG Huffman lookup tables from their canonical definitions for the\r\n * JPEG decoder.\r\n */\r\n readHuffmanTables()\r\n {\r\n const end = this.#offset + this.readU16() - 2;\r\n while (this.#offset < end)\r\n {\r\n const info = this.readU8();\r\n const table = new Array(17).fill(null).map(() => []);\r\n const counts = [];\r\n for (let length = 1; length <= 16; length++) counts.push(this.readU8());\r\n let code = 0;\r\n let valueIndex = 0;\r\n for (let length = 1; length <= 16; length++)\r\n {\r\n for (let i = 0; i < counts[length - 1]; i++)\r\n {\r\n table[length].push({ code, value: this.#bytes[this.#offset + valueIndex] });\r\n valueIndex++;\r\n code++;\r\n }\r\n code <<= 1;\r\n }\r\n this.#offset += valueIndex;\r\n this.#huffman.set(`${info >>> 4}:${info & 0x0f}`, table);\r\n }\r\n this.#offset = end;\r\n }\r\n\r\n /**\r\n * Reads the JPEG restart interval declared by a DRI segment for the JPEG\r\n * decoder.\r\n */\r\n readRestartInterval()\r\n {\r\n const length = this.readU16();\r\n if (length !== 4) throw new Error(\"jpeg: invalid restart interval segment\");\r\n this.#restartInterval = this.readU16();\r\n }\r\n\r\n /**\r\n * Reads JPEG scan component and spectral-selection metadata for the JPEG\r\n * decoder.\r\n */\r\n readScanHeader()\r\n {\r\n const length = this.readU16();\r\n const count = this.readU8();\r\n if (!this.#frame || count !== this.#frame.components.length) throw new Error(\"jpeg: unsupported scan component count\");\r\n const byId = new Map(this.#frame.components.map(component => [ component.id, component ]));\r\n for (let i = 0; i < count; i++)\r\n {\r\n const id = this.readU8();\r\n const tables = this.readU8();\r\n const component = byId.get(id);\r\n if (!component) throw new Error(`jpeg: scan references unknown component ${id}`);\r\n component.dc = tables >>> 4;\r\n component.ac = tables & 0x0f;\r\n }\r\n const spectralStart = this.readU8();\r\n const spectralEnd = this.readU8();\r\n const successive = this.readU8();\r\n if (spectralStart !== 0 || spectralEnd !== 63 || successive !== 0)\r\n {\r\n throw new Error(\"jpeg: progressive or non-sequential scan is not supported\");\r\n }\r\n const consumed = 6 + count * 2;\r\n if (length !== consumed) this.#offset += Math.max(0, length - consumed);\r\n this.#scan = { byId };\r\n }\r\n\r\n /**\r\n * Decodes the current JPEG entropy scan into component planes and RGBA\r\n * pixels for the JPEG decoder.\r\n */\r\n decodeScan()\r\n {\r\n const frame = this.#frame;\r\n const mcuWidth = 8 * frame.maxH;\r\n const mcuHeight = 8 * frame.maxV;\r\n const mcuColumns = Math.ceil(frame.width / mcuWidth);\r\n const mcuRows = Math.ceil(frame.height / mcuHeight);\r\n for (const component of frame.components)\r\n {\r\n component.planeWidth = mcuColumns * component.h * 8;\r\n component.planeHeight = mcuRows * component.v * 8;\r\n component.plane = new Uint8Array(component.planeWidth * component.planeHeight);\r\n }\r\n\r\n const reader = new EntropyReader(this.#bytes, this.#offset);\r\n let mcuIndex = 0;\r\n for (let row = 0; row < mcuRows; row++)\r\n {\r\n for (let column = 0; column < mcuColumns; column++)\r\n {\r\n for (const component of frame.components)\r\n {\r\n for (let y = 0; y < component.v; y++)\r\n {\r\n for (let x = 0; x < component.h; x++)\r\n {\r\n const block = this.decodeBlock(reader, component);\r\n const originX = (column * component.h + x) * 8;\r\n const originY = (row * component.v + y) * 8;\r\n writeBlock(component.plane, component.planeWidth, originX, originY, block);\r\n }\r\n }\r\n }\r\n mcuIndex++;\r\n if (this.#restartInterval && mcuIndex % this.#restartInterval === 0 && mcuIndex < mcuColumns * mcuRows)\r\n {\r\n reader.align();\r\n reader.consumeRestart();\r\n for (const component of frame.components) component.previousDc = 0;\r\n }\r\n }\r\n }\r\n const data = new Uint8Array(frame.width * frame.height * 4);\r\n for (let y = 0; y < frame.height; y++)\r\n {\r\n for (let x = 0; x < frame.width; x++)\r\n {\r\n const offset = (y * frame.width + x) * 4;\r\n if (frame.components.length === 1)\r\n {\r\n const value = frame.components[0].plane[y * frame.components[0].planeWidth + x];\r\n data[offset] = value; data[offset + 1] = value; data[offset + 2] = value;\r\n }\r\n else\r\n {\r\n const yValue = sampleComponent(frame.components[0], x, y, frame.width, frame.height);\r\n const cb = sampleComponent(frame.components[1], x, y, frame.width, frame.height) - 128;\r\n const cr = sampleComponent(frame.components[2], x, y, frame.width, frame.height) - 128;\r\n data[offset] = clampByte(yValue + 1.402 * cr);\r\n data[offset + 1] = clampByte(yValue - 0.344136 * cb - 0.714136 * cr);\r\n data[offset + 2] = clampByte(yValue + 1.772 * cb);\r\n }\r\n data[offset + 3] = 255;\r\n }\r\n }\r\n return { width: frame.width, height: frame.height, data };\r\n }\r\n\r\n /**\r\n * Decodes one JPEG coefficient block through inverse quantization and IDCT\r\n * for the JPEG decoder.\r\n */\r\n decodeBlock(reader, component)\r\n {\r\n const quantization = this.#quantization.get(component.quantizationId);\r\n const dcTable = this.#huffman.get(`0:${component.dc}`);\r\n const acTable = this.#huffman.get(`1:${component.ac}`);\r\n if (!quantization || !dcTable || !acTable) throw new Error(\"jpeg: missing quantization or Huffman table\");\r\n const coefficients = new Int32Array(64);\r\n const category = decodeHuffman(reader, dcTable);\r\n const delta = receiveExtend(reader, category);\r\n component.previousDc += delta;\r\n coefficients[0] = component.previousDc;\r\n let index = 1;\r\n while (index < 64)\r\n {\r\n const value = decodeHuffman(reader, acTable);\r\n if (value === 0) break;\r\n if (value === 0xf0) { index += 16; continue; }\r\n index += value >>> 4;\r\n if (index >= 64) throw new Error(\"jpeg: invalid AC coefficient run\");\r\n coefficients[ZIGZAG[index]] = receiveExtend(reader, value & 0x0f);\r\n index++;\r\n }\r\n for (let i = 0; i < 64; i++) coefficients[i] *= quantization[i];\r\n return inverseDct(coefficients);\r\n }\r\n\r\n /**\r\n * Reads an unsigned 8-bit value from the JPEG byte cursor for the JPEG\r\n * decoder.\r\n */\r\n readU8()\r\n {\r\n if (this.#offset >= this.#bytes.length) throw new Error(\"jpeg: unexpected end of input\");\r\n return this.#bytes[this.#offset++];\r\n }\r\n\r\n /**\r\n * Reads an unsigned 16-bit big-endian value from the JPEG byte cursor for\r\n * the JPEG decoder.\r\n */\r\n readU16()\r\n {\r\n return (this.readU8() << 8) | this.readU8();\r\n }\r\n\r\n /** Consumes and validates an expected JPEG marker for the JPEG decoder. */\r\n readMarker(expected = null)\r\n {\r\n const marker = this.nextMarker();\r\n if (expected !== null && marker !== expected) throw new Error(\"jpeg: missing SOI marker\");\r\n return marker;\r\n }\r\n\r\n /** Scans forward to the next valid JPEG marker byte for the JPEG decoder. */\r\n nextMarker()\r\n {\r\n while (this.#offset < this.#bytes.length && this.#bytes[this.#offset++] !== 0xff)\r\n {\r\n // Scan forward to the next marker prefix.\r\n }\r\n while (this.#offset < this.#bytes.length && this.#bytes[this.#offset] === 0xff) this.#offset++;\r\n if (this.#offset >= this.#bytes.length) throw new Error(\"jpeg: unexpected end while reading marker\");\r\n return this.#bytes[this.#offset++];\r\n }\r\n\r\n /**\r\n * Advances past the payload of an unhandled JPEG segment for the JPEG\r\n * decoder.\r\n */\r\n skipSegment()\r\n {\r\n const length = this.readU16();\r\n if (length < 2 || this.#offset + length - 2 > this.#bytes.length) throw new Error(\"jpeg: invalid segment length\");\r\n this.#offset += length - 2;\r\n }\r\n}\r\n\r\n/**\r\n * Bit-level reader over JPEG entropy-coded data that handles byte stuffing\r\n * and restart markers for the baseline decoder.\r\n */\r\nclass EntropyReader\r\n{\r\n #bytes;\r\n #offset;\r\n #buffer = 0;\r\n #bits = 0;\r\n #marker = null;\r\n\r\n /**\r\n * Creates a EntropyReader over caller-provided JPEG bytes and reader\r\n * options.\r\n */\r\n constructor(bytes, offset)\r\n {\r\n this.#bytes = bytes;\r\n this.#offset = offset;\r\n }\r\n\r\n /** Reads one entropy-coded bit for the JPEG binary reader. */\r\n readBit()\r\n {\r\n if (!this.#bits)\r\n {\r\n let value = this.#bytes[this.#offset++];\r\n if (value === 0xff)\r\n {\r\n while (this.#bytes[this.#offset] === 0xff) this.#offset++;\r\n const marker = this.#bytes[this.#offset++];\r\n if (marker !== 0x00) { this.#marker = marker; throw new Error(\"jpeg: unexpected marker in entropy data\"); }\r\n value = 0xff;\r\n }\r\n if (value === undefined) throw new Error(\"jpeg: unexpected end in entropy data\");\r\n this.#buffer = value;\r\n this.#bits = 8;\r\n }\r\n return (this.#buffer >>> --this.#bits) & 1;\r\n }\r\n\r\n /**\r\n * Reads the requested number of entropy-coded bits for the JPEG binary\r\n * reader.\r\n */\r\n readBits(count)\r\n {\r\n let value = 0;\r\n for (let i = 0; i < count; i++) value = (value << 1) | this.readBit();\r\n return value;\r\n }\r\n\r\n /**\r\n * Aligns the entropy cursor to the next byte boundary for the JPEG binary\r\n * reader.\r\n */\r\n align()\r\n {\r\n this.#bits = 0;\r\n }\r\n\r\n /**\r\n * Consumes and validates the next JPEG restart marker for the JPEG binary\r\n * reader.\r\n */\r\n consumeRestart()\r\n {\r\n while (this.#bytes[this.#offset] === 0xff) this.#offset++;\r\n const marker = this.#bytes[this.#offset++];\r\n if (marker < 0xd0 || marker > 0xd7) throw new Error(\"jpeg: missing restart marker\");\r\n }\r\n}\r\n\r\nfunction decodeHuffman(reader, table)\r\n{\r\n let code = 0;\r\n for (let length = 1; length <= 16; length++)\r\n {\r\n code = (code << 1) | reader.readBit();\r\n const entry = table[length].find(item => item.code === code);\r\n if (entry) return entry.value;\r\n }\r\n throw new Error(\"jpeg: invalid Huffman code\");\r\n}\r\n\r\nfunction receiveExtend(reader, size)\r\n{\r\n if (!size) return 0;\r\n const value = reader.readBits(size);\r\n const threshold = 1 << (size - 1);\r\n return value < threshold ? value - ((1 << size) - 1) : value;\r\n}\r\n\r\nfunction inverseDct(coefficients)\r\n{\r\n const output = new Uint8Array(64);\r\n for (let y = 0; y < 8; y++)\r\n {\r\n for (let x = 0; x < 8; x++)\r\n {\r\n let sum = 0;\r\n for (let v = 0; v < 8; v++)\r\n {\r\n for (let u = 0; u < 8; u++)\r\n {\r\n sum += SCALE[u] * SCALE[v] * coefficients[v * 8 + u] * COSINE[x][u] * COSINE[y][v];\r\n }\r\n }\r\n output[y * 8 + x] = clampByte(128 + sum / 4);\r\n }\r\n }\r\n return output;\r\n}\r\n\r\nfunction writeBlock(plane, planeWidth, originX, originY, block)\r\n{\r\n for (let y = 0; y < 8; y++)\r\n {\r\n const targetY = originY + y;\r\n if (targetY >= plane.length / planeWidth) continue;\r\n for (let x = 0; x < 8; x++)\r\n {\r\n const targetX = originX + x;\r\n if (targetX < planeWidth) plane[targetY * planeWidth + targetX] = block[y * 8 + x];\r\n }\r\n }\r\n}\r\n\r\nfunction sampleComponent(component, x, y, width, height)\r\n{\r\n const sampleX = Math.min(component.planeWidth - 1, Math.floor(x * component.planeWidth / width));\r\n const sampleY = Math.min(component.planeHeight - 1, Math.floor(y * component.planeHeight / height));\r\n return component.plane[sampleY * component.planeWidth + sampleX];\r\n}\r\n\r\nfunction clampByte(value)\r\n{\r\n return Math.max(0, Math.min(255, Math.round(value)));\r\n}\r\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","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/resource/formats/jpeg/core/jpeg.js"],"sourcesContent":["/**\r\n * Scan position to natural coefficient index.\r\n *\r\n * This direction, and not its inverse. Both use sites read a value at scan\r\n * position `i` and need to know where in the 8x8 block it belongs -\r\n * `table[ZIGZAG[i]]` for the quantisation table, `coefficients[ZIGZAG[i]]` for\r\n * an AC coefficient - which is what a position-to-natural table answers.\r\n *\r\n * It was the inverse table until 2026-09-10, which permuted every block's\r\n * coefficients into the wrong frequencies. It survived because the permutation\r\n * fixes index 0, so flat colour decoded exactly and only detail was scrambled,\r\n * and because `raw` is this format's default output: the browser decodes in\r\n * production and nothing compared these pixels against a reference. Measured on\r\n * a 512x512 render, mean neighbouring-pixel difference over lit pixels fell\r\n * from 8.25 to 2.91 when this was corrected.\r\n */\r\nconst ZIGZAG = [\r\n 0, 1, 8, 16, 9, 2, 3, 10,\r\n 17, 24, 32, 25, 18, 11, 4, 5,\r\n 12, 19, 26, 33, 40, 48, 41, 34,\r\n 27, 20, 13, 6, 7, 14, 21, 28,\r\n 35, 42, 49, 56, 57, 50, 43, 36,\r\n 29, 22, 15, 23, 30, 37, 44, 51,\r\n 58, 59, 52, 45, 38, 31, 39, 46,\r\n 53, 60, 61, 54, 47, 55, 62, 63\r\n];\r\n\r\nconst COSINE = Array.from({ length: 8 }, (_, x) =>\r\n Array.from({ length: 8 }, (_, u) => Math.cos(((2 * x + 1) * u * Math.PI) / 16)));\r\n\r\nconst SCALE = Array.from({ length: 8 }, (_, value) => value === 0 ? 1 / Math.sqrt(2) : 1);\r\n\r\n/**\r\n * Decodes baseline JPEG bytes into a normalized RGBA payload for the JPEG format\r\n * reader.\r\n */\r\nexport function decodeJpegToRgba(bytes, metadata = {})\r\n{\r\n const decoder = new BaselineJpegDecoder(bytes);\r\n const image = decoder.decode();\r\n return {\r\n payloadType: \"rgba\",\r\n sourceFormat: \"jpeg\",\r\n mimeType: \"image/jpeg\",\r\n width: image.width,\r\n height: image.height,\r\n pixelFormat: \"rgba8unorm\",\r\n data: image.data,\r\n strideBytes: image.width * 4,\r\n origin: \"top-left\",\r\n colorSpace: \"srgb\",\r\n alphaMode: \"opaque\",\r\n metadata: { ...metadata, decoder: \"software-baseline\" }\r\n };\r\n}\r\n\r\n/**\r\n * Reports whether JPEG metadata is supported by the software decoder for the\r\n * JPEG format reader.\r\n */\r\nexport function canDecodeJpeg(metadata = {})\r\n{\r\n return metadata.sourceFormat === \"jpeg\" &&\r\n metadata.precision === 8 &&\r\n metadata.components >= 1 && metadata.components <= 3 &&\r\n (metadata.marker === 0xc0 || metadata.marker === 0xc1) &&\r\n metadata.progressive !== true;\r\n}\r\n\r\n/**\r\n * Pure-JS baseline sequential JPEG decoder that parses markers, quantization\r\n * and Huffman tables, and entropy-coded scans into RGBA pixels.\r\n */\r\nclass BaselineJpegDecoder\r\n{\r\n _bytes;\r\n _offset = 0;\r\n _quantization = new Map();\r\n _huffman = new Map();\r\n _frame = null;\r\n _scan = null;\r\n _restartInterval = 0;\r\n\r\n /** Creates a BaselineJpegDecoder with caller-provided initial state. */\r\n constructor(bytes)\r\n {\r\n this._bytes = bytes;\r\n }\r\n\r\n /**\r\n * Decodes the current baseline JPEG stream into RGBA pixels for the JPEG\r\n * decoder.\r\n */\r\n decode()\r\n {\r\n this.readMarker(0xd8);\r\n while (this._offset < this._bytes.length)\r\n {\r\n const marker = this.nextMarker();\r\n if (marker === 0xd9) break;\r\n if (marker === 0xda)\r\n {\r\n this.readScanHeader();\r\n return this.decodeScan();\r\n }\r\n if (marker === 0xdb) this.readQuantizationTables();\r\n else if (marker === 0xc0 || marker === 0xc1 || marker === 0xc2) this.readFrame(marker);\r\n else if (marker === 0xc4) this.readHuffmanTables();\r\n else if (marker === 0xdd) this.readRestartInterval();\r\n else if (marker >= 0xe0 && marker <= 0xef || marker === 0xfe) this.skipSegment();\r\n else if (marker === 0xd8 || marker === 0x01 || marker >= 0xd0 && marker <= 0xd7) continue;\r\n else this.skipSegment();\r\n }\r\n throw new Error(\"jpeg: no baseline scan found\");\r\n }\r\n\r\n /**\r\n * Reads JPEG frame dimensions, sampling, and component metadata for the JPEG\r\n * decoder.\r\n */\r\n readFrame(marker)\r\n {\r\n const length = this.readU16();\r\n const precision = this.readU8();\r\n const height = this.readU16();\r\n const width = this.readU16();\r\n const components = this.readU8();\r\n if (precision !== 8) throw new Error(`jpeg: unsupported sample precision ${precision}`);\r\n if (!width || !height || !components || components > 3) throw new Error(\"jpeg: unsupported frame layout\");\r\n\r\n const list = [];\r\n let maxH = 0, maxV = 0;\r\n for (let i = 0; i < components; i++)\r\n {\r\n const id = this.readU8();\r\n const sampling = this.readU8();\r\n const component = {\r\n id,\r\n h: sampling >>> 4,\r\n v: sampling & 0x0f,\r\n quantizationId: this.readU8(),\r\n dc: 0,\r\n ac: 0,\r\n previousDc: 0,\r\n plane: null,\r\n planeWidth: 0,\r\n planeHeight: 0\r\n };\r\n if (!component.h || !component.v || component.h > 4 || component.v > 4)\r\n {\r\n throw new Error(\"jpeg: unsupported component sampling\");\r\n }\r\n maxH = Math.max(maxH, component.h);\r\n maxV = Math.max(maxV, component.v);\r\n list.push(component);\r\n }\r\n const consumed = 8 + components * 3;\r\n if (length !== consumed) this._offset += Math.max(0, length - consumed);\r\n if (marker === 0xc2) throw new Error(\"jpeg: progressive scans are not supported by the software decoder\");\r\n this._frame = { width, height, precision, components: list, maxH, maxV };\r\n }\r\n\r\n /**\r\n * Reads JPEG quantization tables into natural coefficient order for the JPEG\r\n * decoder.\r\n */\r\n readQuantizationTables()\r\n {\r\n const end = this._offset + this.readU16() - 2;\r\n while (this._offset < end)\r\n {\r\n const info = this.readU8();\r\n const precision = info >>> 4;\r\n const id = info & 0x0f;\r\n if (precision > 1) throw new Error(\"jpeg: unsupported 16-bit quantization table\");\r\n const table = new Uint16Array(64);\r\n for (let i = 0; i < 64; i++) table[ZIGZAG[i]] = precision ? this.readU16() : this.readU8();\r\n this._quantization.set(id, table);\r\n }\r\n this._offset = end;\r\n }\r\n\r\n /**\r\n * Builds JPEG Huffman lookup tables from their canonical definitions for the\r\n * JPEG decoder.\r\n */\r\n readHuffmanTables()\r\n {\r\n const end = this._offset + this.readU16() - 2;\r\n while (this._offset < end)\r\n {\r\n const info = this.readU8();\r\n const table = new Array(17).fill(null).map(() => []);\r\n const counts = [];\r\n for (let length = 1; length <= 16; length++) counts.push(this.readU8());\r\n let code = 0;\r\n let valueIndex = 0;\r\n for (let length = 1; length <= 16; length++)\r\n {\r\n for (let i = 0; i < counts[length - 1]; i++)\r\n {\r\n table[length].push({ code, value: this._bytes[this._offset + valueIndex] });\r\n valueIndex++;\r\n code++;\r\n }\r\n code <<= 1;\r\n }\r\n this._offset += valueIndex;\r\n this._huffman.set(`${info >>> 4}:${info & 0x0f}`, table);\r\n }\r\n this._offset = end;\r\n }\r\n\r\n /**\r\n * Reads the JPEG restart interval declared by a DRI segment for the JPEG\r\n * decoder.\r\n */\r\n readRestartInterval()\r\n {\r\n const length = this.readU16();\r\n if (length !== 4) throw new Error(\"jpeg: invalid restart interval segment\");\r\n this._restartInterval = this.readU16();\r\n }\r\n\r\n /**\r\n * Reads JPEG scan component and spectral-selection metadata for the JPEG\r\n * decoder.\r\n */\r\n readScanHeader()\r\n {\r\n const length = this.readU16();\r\n const count = this.readU8();\r\n if (!this._frame || count !== this._frame.components.length) throw new Error(\"jpeg: unsupported scan component count\");\r\n const byId = new Map(this._frame.components.map(component => [ component.id, component ]));\r\n for (let i = 0; i < count; i++)\r\n {\r\n const id = this.readU8();\r\n const tables = this.readU8();\r\n const component = byId.get(id);\r\n if (!component) throw new Error(`jpeg: scan references unknown component ${id}`);\r\n component.dc = tables >>> 4;\r\n component.ac = tables & 0x0f;\r\n }\r\n const spectralStart = this.readU8();\r\n const spectralEnd = this.readU8();\r\n const successive = this.readU8();\r\n if (spectralStart !== 0 || spectralEnd !== 63 || successive !== 0)\r\n {\r\n throw new Error(\"jpeg: progressive or non-sequential scan is not supported\");\r\n }\r\n const consumed = 6 + count * 2;\r\n if (length !== consumed) this._offset += Math.max(0, length - consumed);\r\n this._scan = { byId };\r\n }\r\n\r\n /**\r\n * Decodes the current JPEG entropy scan into component planes and RGBA\r\n * pixels for the JPEG decoder.\r\n */\r\n decodeScan()\r\n {\r\n const frame = this._frame;\r\n const mcuWidth = 8 * frame.maxH;\r\n const mcuHeight = 8 * frame.maxV;\r\n const mcuColumns = Math.ceil(frame.width / mcuWidth);\r\n const mcuRows = Math.ceil(frame.height / mcuHeight);\r\n for (const component of frame.components)\r\n {\r\n component.planeWidth = mcuColumns * component.h * 8;\r\n component.planeHeight = mcuRows * component.v * 8;\r\n component.plane = new Uint8Array(component.planeWidth * component.planeHeight);\r\n }\r\n\r\n const reader = new EntropyReader(this._bytes, this._offset);\r\n let mcuIndex = 0;\r\n for (let row = 0; row < mcuRows; row++)\r\n {\r\n for (let column = 0; column < mcuColumns; column++)\r\n {\r\n for (const component of frame.components)\r\n {\r\n for (let y = 0; y < component.v; y++)\r\n {\r\n for (let x = 0; x < component.h; x++)\r\n {\r\n const block = this.decodeBlock(reader, component);\r\n const originX = (column * component.h + x) * 8;\r\n const originY = (row * component.v + y) * 8;\r\n writeBlock(component.plane, component.planeWidth, originX, originY, block);\r\n }\r\n }\r\n }\r\n mcuIndex++;\r\n if (this._restartInterval && mcuIndex % this._restartInterval === 0 && mcuIndex < mcuColumns * mcuRows)\r\n {\r\n reader.align();\r\n reader.consumeRestart();\r\n for (const component of frame.components) component.previousDc = 0;\r\n }\r\n }\r\n }\r\n const data = new Uint8Array(frame.width * frame.height * 4);\r\n for (let y = 0; y < frame.height; y++)\r\n {\r\n for (let x = 0; x < frame.width; x++)\r\n {\r\n const offset = (y * frame.width + x) * 4;\r\n if (frame.components.length === 1)\r\n {\r\n const value = frame.components[0].plane[y * frame.components[0].planeWidth + x];\r\n data[offset] = value; data[offset + 1] = value; data[offset + 2] = value;\r\n }\r\n else\r\n {\r\n const yValue = sampleComponent(frame.components[0], x, y, frame.width, frame.height);\r\n const cb = sampleComponent(frame.components[1], x, y, frame.width, frame.height) - 128;\r\n const cr = sampleComponent(frame.components[2], x, y, frame.width, frame.height) - 128;\r\n data[offset] = clampByte(yValue + 1.402 * cr);\r\n data[offset + 1] = clampByte(yValue - 0.344136 * cb - 0.714136 * cr);\r\n data[offset + 2] = clampByte(yValue + 1.772 * cb);\r\n }\r\n data[offset + 3] = 255;\r\n }\r\n }\r\n return { width: frame.width, height: frame.height, data };\r\n }\r\n\r\n /**\r\n * Decodes one JPEG coefficient block through inverse quantization and IDCT\r\n * for the JPEG decoder.\r\n */\r\n decodeBlock(reader, component)\r\n {\r\n const quantization = this._quantization.get(component.quantizationId);\r\n const dcTable = this._huffman.get(`0:${component.dc}`);\r\n const acTable = this._huffman.get(`1:${component.ac}`);\r\n if (!quantization || !dcTable || !acTable) throw new Error(\"jpeg: missing quantization or Huffman table\");\r\n const coefficients = new Int32Array(64);\r\n const category = decodeHuffman(reader, dcTable);\r\n const delta = receiveExtend(reader, category);\r\n component.previousDc += delta;\r\n coefficients[0] = component.previousDc;\r\n let index = 1;\r\n while (index < 64)\r\n {\r\n const value = decodeHuffman(reader, acTable);\r\n if (value === 0) break;\r\n if (value === 0xf0) { index += 16; continue; }\r\n index += value >>> 4;\r\n if (index >= 64) throw new Error(\"jpeg: invalid AC coefficient run\");\r\n coefficients[ZIGZAG[index]] = receiveExtend(reader, value & 0x0f);\r\n index++;\r\n }\r\n for (let i = 0; i < 64; i++) coefficients[i] *= quantization[i];\r\n return inverseDct(coefficients);\r\n }\r\n\r\n /**\r\n * Reads an unsigned 8-bit value from the JPEG byte cursor for the JPEG\r\n * decoder.\r\n */\r\n readU8()\r\n {\r\n if (this._offset >= this._bytes.length) throw new Error(\"jpeg: unexpected end of input\");\r\n return this._bytes[this._offset++];\r\n }\r\n\r\n /**\r\n * Reads an unsigned 16-bit big-endian value from the JPEG byte cursor for\r\n * the JPEG decoder.\r\n */\r\n readU16()\r\n {\r\n return (this.readU8() << 8) | this.readU8();\r\n }\r\n\r\n /** Consumes and validates an expected JPEG marker for the JPEG decoder. */\r\n readMarker(expected = null)\r\n {\r\n const marker = this.nextMarker();\r\n if (expected !== null && marker !== expected) throw new Error(\"jpeg: missing SOI marker\");\r\n return marker;\r\n }\r\n\r\n /** Scans forward to the next valid JPEG marker byte for the JPEG decoder. */\r\n nextMarker()\r\n {\r\n while (this._offset < this._bytes.length && this._bytes[this._offset++] !== 0xff)\r\n {\r\n // Scan forward to the next marker prefix.\r\n }\r\n while (this._offset < this._bytes.length && this._bytes[this._offset] === 0xff) this._offset++;\r\n if (this._offset >= this._bytes.length) throw new Error(\"jpeg: unexpected end while reading marker\");\r\n return this._bytes[this._offset++];\r\n }\r\n\r\n /**\r\n * Advances past the payload of an unhandled JPEG segment for the JPEG\r\n * decoder.\r\n */\r\n skipSegment()\r\n {\r\n const length = this.readU16();\r\n if (length < 2 || this._offset + length - 2 > this._bytes.length) throw new Error(\"jpeg: invalid segment length\");\r\n this._offset += length - 2;\r\n }\r\n}\r\n\r\n/**\r\n * Bit-level reader over JPEG entropy-coded data that handles byte stuffing\r\n * and restart markers for the baseline decoder.\r\n */\r\nclass EntropyReader\r\n{\r\n _bytes;\r\n _offset;\r\n _buffer = 0;\r\n _bits = 0;\r\n _marker = null;\r\n\r\n /**\r\n * Creates a EntropyReader over caller-provided JPEG bytes and reader\r\n * options.\r\n */\r\n constructor(bytes, offset)\r\n {\r\n this._bytes = bytes;\r\n this._offset = offset;\r\n }\r\n\r\n /** Reads one entropy-coded bit for the JPEG binary reader. */\r\n readBit()\r\n {\r\n if (!this._bits)\r\n {\r\n let value = this._bytes[this._offset++];\r\n if (value === 0xff)\r\n {\r\n while (this._bytes[this._offset] === 0xff) this._offset++;\r\n const marker = this._bytes[this._offset++];\r\n if (marker !== 0x00) { this._marker = marker; throw new Error(\"jpeg: unexpected marker in entropy data\"); }\r\n value = 0xff;\r\n }\r\n if (value === undefined) throw new Error(\"jpeg: unexpected end in entropy data\");\r\n this._buffer = value;\r\n this._bits = 8;\r\n }\r\n return (this._buffer >>> --this._bits) & 1;\r\n }\r\n\r\n /**\r\n * Reads the requested number of entropy-coded bits for the JPEG binary\r\n * reader.\r\n */\r\n readBits(count)\r\n {\r\n let value = 0;\r\n for (let i = 0; i < count; i++) value = (value << 1) | this.readBit();\r\n return value;\r\n }\r\n\r\n /**\r\n * Aligns the entropy cursor to the next byte boundary for the JPEG binary\r\n * reader.\r\n */\r\n align()\r\n {\r\n this._bits = 0;\r\n }\r\n\r\n /**\r\n * Consumes and validates the next JPEG restart marker for the JPEG binary\r\n * reader.\r\n */\r\n consumeRestart()\r\n {\r\n while (this._bytes[this._offset] === 0xff) this._offset++;\r\n const marker = this._bytes[this._offset++];\r\n if (marker < 0xd0 || marker > 0xd7) throw new Error(\"jpeg: missing restart marker\");\r\n }\r\n}\r\n\r\nfunction decodeHuffman(reader, table)\r\n{\r\n let code = 0;\r\n for (let length = 1; length <= 16; length++)\r\n {\r\n code = (code << 1) | reader.readBit();\r\n const entry = table[length].find(item => item.code === code);\r\n if (entry) return entry.value;\r\n }\r\n throw new Error(\"jpeg: invalid Huffman code\");\r\n}\r\n\r\nfunction receiveExtend(reader, size)\r\n{\r\n if (!size) return 0;\r\n const value = reader.readBits(size);\r\n const threshold = 1 << (size - 1);\r\n return value < threshold ? value - ((1 << size) - 1) : value;\r\n}\r\n\r\nfunction inverseDct(coefficients)\r\n{\r\n const output = new Uint8Array(64);\r\n for (let y = 0; y < 8; y++)\r\n {\r\n for (let x = 0; x < 8; x++)\r\n {\r\n let sum = 0;\r\n for (let v = 0; v < 8; v++)\r\n {\r\n for (let u = 0; u < 8; u++)\r\n {\r\n sum += SCALE[u] * SCALE[v] * coefficients[v * 8 + u] * COSINE[x][u] * COSINE[y][v];\r\n }\r\n }\r\n output[y * 8 + x] = clampByte(128 + sum / 4);\r\n }\r\n }\r\n return output;\r\n}\r\n\r\nfunction writeBlock(plane, planeWidth, originX, originY, block)\r\n{\r\n for (let y = 0; y < 8; y++)\r\n {\r\n const targetY = originY + y;\r\n if (targetY >= plane.length / planeWidth) continue;\r\n for (let x = 0; x < 8; x++)\r\n {\r\n const targetX = originX + x;\r\n if (targetX < planeWidth) plane[targetY * planeWidth + targetX] = block[y * 8 + x];\r\n }\r\n }\r\n}\r\n\r\nfunction sampleComponent(component, x, y, width, height)\r\n{\r\n const sampleX = Math.min(component.planeWidth - 1, Math.floor(x * component.planeWidth / width));\r\n const sampleY = Math.min(component.planeHeight - 1, Math.floor(y * component.planeHeight / height));\r\n return component.plane[sampleY * component.planeWidth + sampleX];\r\n}\r\n\r\nfunction clampByte(value)\r\n{\r\n return Math.max(0, Math.min(255, Math.round(value)));\r\n}\r\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","width","height","pixelFormat","data","strideBytes","origin","colorSpace","alphaMode","canDecodeJpeg","precision","components","marker","progressive","_bytes","_offset","_quantization","Map","_huffman","_frame","_scan","_restartInterval","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","_buffer","_bits","_marker","readBit","undefined","readBits","entry","find","item","size","threshold","output","sum","targetY","targetX","sampleX","min","floor","sampleY","round"],"mappings":"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"}
|
|
@@ -83,9 +83,9 @@ class CjsJsonlFormat extends CjsFormat {
|
|
|
83
83
|
}
|
|
84
84
|
return lines.join("\n") + (lines.length ? "\n" : "");
|
|
85
85
|
}
|
|
86
|
-
static id = "
|
|
87
|
-
static extensions =
|
|
88
|
-
static mediaTypes =
|
|
86
|
+
static id = "CjsJsonlFormat";
|
|
87
|
+
static extensions = [".jsonl"];
|
|
88
|
+
static mediaTypes = ["data"];
|
|
89
89
|
static outputs = CjsFormat.defineOutputs({
|
|
90
90
|
json: {
|
|
91
91
|
default: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsJsonlFormat.js","sources":["../../../../../src/resource/formats/jsonl/CjsJsonlFormat.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\n\nconst FORMAT_NAME = \"CjsJsonlFormat\";\nconst TEXT_DECODER = new TextDecoder(\"utf-8\", { fatal: true });\n\n/**\n * JSON Lines format profile: one standalone JSON value per non-blank line.\n *\n * Its canonical instances are CCP's official static-data export\n * (`latest.jsonl` and the per-table `.jsonl` files inside its ZIP).\n */\nexport class CjsJsonlFormat extends CjsFormat\n{\n\n /** Creates a CjsJsonlFormat; the reader takes no retained configuration. */\n constructor(options = {})\n {\n super();\n\n if (options === null || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(`${FORMAT_NAME} options must be an object`);\n }\n }\n\n /** Reads every record into one array for the JSON Lines reader. */\n Read(input, options = {})\n {\n return CjsJsonlFormat.read(input, options);\n }\n\n /** Returns structural metadata without parsing every record. */\n Inspect(input, options = {})\n {\n return CjsJsonlFormat.inspect(input, options);\n }\n\n /** Provides the one-shot JSON Lines reader entry point. */\n static read(input, options = {})\n {\n const records = [];\n\n for (const [ value ] of ParseRecords(input, options))\n {\n records.push(value);\n }\n\n return records;\n }\n\n /**\n * Provides the one-shot JSON Lines metadata inspection entry point.\n *\n * The first record is parsed to identify the format; the rest are only\n * counted, so inspection stays cheap on large tables.\n */\n static inspect(input, options = {})\n {\n const lines = NormalizeText(input).split(/\\r?\\n/u);\n let records = 0;\n let firstRecordLine = 0;\n\n for (let index = 0; index < lines.length; index++)\n {\n if (!lines[index].trim())\n {\n continue;\n }\n if (records === 0)\n {\n firstRecordLine = index + 1;\n ParseRecord(lines[index], index + 1, options);\n }\n records += 1;\n }\n\n if (records === 0)\n {\n throw new TypeError(FormatMessage(\n \"contains no JSON Lines records\",\n options,\n ));\n }\n\n return {\n lines: lines.length,\n records,\n firstRecordLine,\n };\n }\n\n /** Serializes an iterable of JSON-compatible values to JSON Lines text. */\n static toText(values)\n {\n if (!values || typeof values[Symbol.iterator] !== \"function\")\n {\n throw new TypeError(`${FORMAT_NAME}.toText requires an iterable`);\n }\n\n const lines = [];\n\n for (const value of values)\n {\n if (value === undefined)\n {\n throw new TypeError(\n `${FORMAT_NAME}.toText cannot serialize undefined records`,\n );\n }\n\n lines.push(JSON.stringify(value));\n }\n\n return lines.join(\"\\n\") + (lines.length ? \"\\n\" : \"\");\n }\n\n static id = \"jsonl\";\n static extensions = Object.freeze([ \".jsonl\" ]);\n static mediaTypes = Object.freeze([ \"data\" ]);\n static outputs = CjsFormat.defineOutputs({\n json: { default: true, decoded: true },\n });\n}\n\n/** Yields [value, lineNumber] for each non-blank line, in order. */\nfunction* ParseRecords(input, options)\n{\n const lines = NormalizeText(input).split(/\\r?\\n/u);\n\n for (let index = 0; index < lines.length; index++)\n {\n if (!lines[index].trim())\n {\n continue;\n }\n\n yield [ ParseRecord(lines[index], index + 1, options), index + 1 ];\n }\n}\n\nfunction ParseRecord(line, lineNumber, options)\n{\n try\n {\n return JSON.parse(line);\n }\n catch (error)\n {\n throw new TypeError(\n FormatMessage(`has an invalid record at line ${lineNumber}`, options)\n + `: ${error.message}`,\n { cause: error },\n );\n }\n}\n\n/** Decodes bytes as strict UTF-8, strips one BOM, and passes strings through. */\nfunction NormalizeText(input)\n{\n if (typeof input === \"string\")\n {\n return input.charCodeAt(0) === 0xFEFF ? input.slice(1) : input;\n }\n\n let bytes;\n\n if (input instanceof ArrayBuffer)\n {\n bytes = new Uint8Array(input);\n }\n else if (ArrayBuffer.isView(input))\n {\n bytes = new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n else\n {\n throw new TypeError(\n `${FORMAT_NAME} input must be a string, ArrayBuffer, or view`,\n );\n }\n\n const text = TEXT_DECODER.decode(bytes);\n return text.charCodeAt(0) === 0xFEFF ? text.slice(1) : text;\n}\n\nfunction FormatMessage(claim, options)\n{\n const source = typeof options?.source === \"string\" && options.source\n ? ` ${options.source}`\n : \" input\";\n\n return `${FORMAT_NAME}${source} ${claim}`;\n}\n\nexport default CjsJsonlFormat;\n"],"names":["FORMAT_NAME","TEXT_DECODER","TextDecoder","fatal","CjsJsonlFormat","CjsFormat","constructor","options","Array","isArray","TypeError","Read","input","read","Inspect","inspect","records","value","ParseRecords","push","lines","NormalizeText","split","firstRecordLine","index","length","trim","ParseRecord","FormatMessage","toText","values","Symbol","iterator","undefined","JSON","stringify","join","id","extensions","Object","freeze","mediaTypes","outputs","defineOutputs","json","default","decoded","line","lineNumber","parse","error","message","cause","charCodeAt","slice","bytes","ArrayBuffer","Uint8Array","isView","buffer","byteOffset","byteLength","text","decode","claim","source"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsJsonlFormat.js","sources":["../../../../../src/resource/formats/jsonl/CjsJsonlFormat.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\n\nconst FORMAT_NAME = \"CjsJsonlFormat\";\nconst TEXT_DECODER = new TextDecoder(\"utf-8\", { fatal: true });\n\n/**\n * JSON Lines format profile: one standalone JSON value per non-blank line.\n *\n * Its canonical instances are CCP's official static-data export\n * (`latest.jsonl` and the per-table `.jsonl` files inside its ZIP).\n */\nexport class CjsJsonlFormat extends CjsFormat\n{\n\n /** Creates a CjsJsonlFormat; the reader takes no retained configuration. */\n constructor(options = {})\n {\n super();\n\n if (options === null || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(`${FORMAT_NAME} options must be an object`);\n }\n }\n\n /** Reads every record into one array for the JSON Lines reader. */\n Read(input, options = {})\n {\n return CjsJsonlFormat.read(input, options);\n }\n\n /** Returns structural metadata without parsing every record. */\n Inspect(input, options = {})\n {\n return CjsJsonlFormat.inspect(input, options);\n }\n\n /** Provides the one-shot JSON Lines reader entry point. */\n static read(input, options = {})\n {\n const records = [];\n\n for (const [ value ] of ParseRecords(input, options))\n {\n records.push(value);\n }\n\n return records;\n }\n\n /**\n * Provides the one-shot JSON Lines metadata inspection entry point.\n *\n * The first record is parsed to identify the format; the rest are only\n * counted, so inspection stays cheap on large tables.\n */\n static inspect(input, options = {})\n {\n const lines = NormalizeText(input).split(/\\r?\\n/u);\n let records = 0;\n let firstRecordLine = 0;\n\n for (let index = 0; index < lines.length; index++)\n {\n if (!lines[index].trim())\n {\n continue;\n }\n if (records === 0)\n {\n firstRecordLine = index + 1;\n ParseRecord(lines[index], index + 1, options);\n }\n records += 1;\n }\n\n if (records === 0)\n {\n throw new TypeError(FormatMessage(\n \"contains no JSON Lines records\",\n options,\n ));\n }\n\n return {\n lines: lines.length,\n records,\n firstRecordLine,\n };\n }\n\n /** Serializes an iterable of JSON-compatible values to JSON Lines text. */\n static toText(values)\n {\n if (!values || typeof values[Symbol.iterator] !== \"function\")\n {\n throw new TypeError(`${FORMAT_NAME}.toText requires an iterable`);\n }\n\n const lines = [];\n\n for (const value of values)\n {\n if (value === undefined)\n {\n throw new TypeError(\n `${FORMAT_NAME}.toText cannot serialize undefined records`,\n );\n }\n\n lines.push(JSON.stringify(value));\n }\n\n return lines.join(\"\\n\") + (lines.length ? \"\\n\" : \"\");\n }\n\n static id = \"CjsJsonlFormat\";\n static extensions = [ \".jsonl\" ];\n static mediaTypes = [ \"data\" ];\n static outputs = CjsFormat.defineOutputs({\n json: { default: true, decoded: true },\n });\n}\n\n/** Yields [value, lineNumber] for each non-blank line, in order. */\nfunction* ParseRecords(input, options)\n{\n const lines = NormalizeText(input).split(/\\r?\\n/u);\n\n for (let index = 0; index < lines.length; index++)\n {\n if (!lines[index].trim())\n {\n continue;\n }\n\n yield [ ParseRecord(lines[index], index + 1, options), index + 1 ];\n }\n}\n\nfunction ParseRecord(line, lineNumber, options)\n{\n try\n {\n return JSON.parse(line);\n }\n catch (error)\n {\n throw new TypeError(\n FormatMessage(`has an invalid record at line ${lineNumber}`, options)\n + `: ${error.message}`,\n { cause: error },\n );\n }\n}\n\n/** Decodes bytes as strict UTF-8, strips one BOM, and passes strings through. */\nfunction NormalizeText(input)\n{\n if (typeof input === \"string\")\n {\n return input.charCodeAt(0) === 0xFEFF ? input.slice(1) : input;\n }\n\n let bytes;\n\n if (input instanceof ArrayBuffer)\n {\n bytes = new Uint8Array(input);\n }\n else if (ArrayBuffer.isView(input))\n {\n bytes = new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n else\n {\n throw new TypeError(\n `${FORMAT_NAME} input must be a string, ArrayBuffer, or view`,\n );\n }\n\n const text = TEXT_DECODER.decode(bytes);\n return text.charCodeAt(0) === 0xFEFF ? text.slice(1) : text;\n}\n\nfunction FormatMessage(claim, options)\n{\n const source = typeof options?.source === \"string\" && options.source\n ? ` ${options.source}`\n : \" input\";\n\n return `${FORMAT_NAME}${source} ${claim}`;\n}\n\nexport default CjsJsonlFormat;\n"],"names":["FORMAT_NAME","TEXT_DECODER","TextDecoder","fatal","CjsJsonlFormat","CjsFormat","constructor","options","Array","isArray","TypeError","Read","input","read","Inspect","inspect","records","value","ParseRecords","push","lines","NormalizeText","split","firstRecordLine","index","length","trim","ParseRecord","FormatMessage","toText","values","Symbol","iterator","undefined","JSON","stringify","join","id","extensions","mediaTypes","outputs","defineOutputs","json","default","decoded","line","lineNumber","parse","error","message","cause","charCodeAt","slice","bytes","ArrayBuffer","Uint8Array","isView","buffer","byteOffset","byteLength","text","decode","claim","source"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { asUint8Array } from '#utils/bytes';
|
|
2
2
|
import { CjsFormat } from '../../format/CjsFormat.js';
|
|
3
|
-
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isMP3
|
|
3
|
+
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isMP3 } from './core/helpers.js';
|
|
4
4
|
import { toJsonWithByteSummary } from '../../format/jsonPolicies.js';
|
|
5
5
|
|
|
6
6
|
const FORMAT_NAME = "CjsMp3Format";
|
|
@@ -10,7 +10,7 @@ const FORMAT_NAME = "CjsMp3Format";
|
|
|
10
10
|
* raw container bytes or debug JSON, with PCM decoding not implemented.
|
|
11
11
|
*/
|
|
12
12
|
class CjsMp3Format extends CjsFormat {
|
|
13
|
-
|
|
13
|
+
_values = DEFAULT_VALUES;
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Create a reusable MP3 format profile.
|
|
@@ -29,7 +29,7 @@ class CjsMp3Format extends CjsFormat {
|
|
|
29
29
|
* @returns {CjsMp3Format} This format profile.
|
|
30
30
|
*/
|
|
31
31
|
SetValues(options = {}) {
|
|
32
|
-
this
|
|
32
|
+
this._values = normalizeValues(this._values, {
|
|
33
33
|
inputType: "mp3",
|
|
34
34
|
...options
|
|
35
35
|
}, FORMAT_NAME);
|
|
@@ -43,7 +43,7 @@ class CjsMp3Format extends CjsFormat {
|
|
|
43
43
|
* @returns {object} Normalized read values.
|
|
44
44
|
*/
|
|
45
45
|
GetValues(options = {}) {
|
|
46
|
-
return normalizeValues(this
|
|
46
|
+
return normalizeValues(this._values, {
|
|
47
47
|
inputType: "mp3",
|
|
48
48
|
...options
|
|
49
49
|
}, FORMAT_NAME);
|
|
@@ -166,15 +166,8 @@ class CjsMp3Format extends CjsFormat {
|
|
|
166
166
|
/**
|
|
167
167
|
* Emit targets for this format (canonical frozen enum).
|
|
168
168
|
*/
|
|
169
|
-
static
|
|
170
|
-
|
|
171
|
-
PCM: OUTPUT_PCM,
|
|
172
|
-
RAW: OUTPUT_RAW,
|
|
173
|
-
JSON: OUTPUT_JSON
|
|
174
|
-
});
|
|
175
|
-
static OUTPUT_MP3_JSON = "mp3Json";
|
|
176
|
-
static id = "mp3";
|
|
177
|
-
static mediaTypes = Object.freeze(["audio"]);
|
|
169
|
+
static id = "CjsMp3Format";
|
|
170
|
+
static mediaTypes = ["audio"];
|
|
178
171
|
static outputs = CjsFormat.defineOutputs({
|
|
179
172
|
mp3Json: {
|
|
180
173
|
role: "debug",
|
|
@@ -186,7 +179,7 @@ class CjsMp3Format extends CjsFormat {
|
|
|
186
179
|
passthrough: true
|
|
187
180
|
}
|
|
188
181
|
});
|
|
189
|
-
static extensions =
|
|
182
|
+
static extensions = [".mp3"];
|
|
190
183
|
}
|
|
191
184
|
|
|
192
185
|
export { CjsMp3Format };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsMp3Format.js","sources":["../../../../../src/resource/formats/mp3/CjsMp3Format.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_AUDIO,\n OUTPUT_JSON,\n OUTPUT_PCM,\n OUTPUT_RAW,\n inspectWithValues,\n isMP3,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsMp3Format\";\n\n/**\n * MP3 audio format profile that inspects frame and tag metadata and emits\n * raw container bytes or debug JSON, with PCM decoding not implemented.\n */\nexport class CjsMp3Format extends CjsFormat\n{\n
|
|
1
|
+
{"version":3,"file":"CjsMp3Format.js","sources":["../../../../../src/resource/formats/mp3/CjsMp3Format.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_AUDIO,\n OUTPUT_JSON,\n OUTPUT_PCM,\n OUTPUT_RAW,\n inspectWithValues,\n isMP3,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsMp3Format\";\n\n/**\n * MP3 audio format profile that inspects frame and tag metadata and emits\n * raw container bytes or debug JSON, with PCM decoding not implemented.\n */\nexport class CjsMp3Format extends CjsFormat\n{\n _values = DEFAULT_VALUES;\n\n /**\n * Create a reusable MP3 format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsMp3Format} This format profile.\n */\n SetValues(options = {})\n {\n this._values = normalizeValues(this._values, { inputType: \"mp3\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this._values, { inputType: \"mp3\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read MP3 bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Read MP3 bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect MP3 bytes without decoding audio frames.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} MP3 header metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot MP3 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * One-shot asynchronous MP3 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsMp3Format.read(input, options);\n }\n\n /**\n * One-shot MP3 inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} MP3 header metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * One-shot MP3 support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like an MP3 file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate MP3 bytes.\n * @returns {boolean} True when ID3 or MPEG frame sync is present.\n */\n static isMP3(input)\n {\n try\n {\n return isMP3(asUint8Array(input, \"Audio input\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static id = \"CjsMp3Format\";\n static mediaTypes = [ \"audio\" ];\n static outputs = CjsFormat.defineOutputs({\n mp3Json: { role: \"debug\", probes: [ \"mp3Json\", \"raw\" ] },\n raw: { role: \"debug\", default: true, passthrough: true }\n });\n static extensions = [ \".mp3\" ];\n}\n\nexport default CjsMp3Format;\n"],"names":["FORMAT_NAME","CjsMp3Format","CjsFormat","_values","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","toJSON","isMP3","asUint8Array","id","mediaTypes","outputs","defineOutputs","mp3Json","role","probes","raw","default","passthrough","extensions"],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@ import { asUint8Array, readFourCc, readU32LE, readU16LE, readU32BE } from '#util
|
|
|
3
3
|
const OUTPUT_AUDIO = "audio";
|
|
4
4
|
const OUTPUT_PCM = "pcm";
|
|
5
5
|
const OUTPUT_RAW = "raw";
|
|
6
|
-
const OUTPUT_JSON = "json";
|
|
7
6
|
const DEFAULT_VALUES = Object.freeze({
|
|
8
7
|
emit: OUTPUT_RAW,
|
|
9
8
|
inputType: "",
|
|
@@ -37,8 +36,7 @@ function normalizeInputType(inputType) {
|
|
|
37
36
|
/** Normalizes the requested output representation for the MP3 format reader. */
|
|
38
37
|
function normalizeEmit(emit, inputType, readerName) {
|
|
39
38
|
if (emit === undefined || emit === null) return OUTPUT_RAW;
|
|
40
|
-
if (
|
|
41
|
-
if ([OUTPUT_AUDIO, OUTPUT_PCM, OUTPUT_RAW, OUTPUT_JSON].includes(emit)) return emit;
|
|
39
|
+
if ([OUTPUT_AUDIO, OUTPUT_PCM, OUTPUT_RAW].includes(emit)) return emit;
|
|
42
40
|
if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;
|
|
43
41
|
throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);
|
|
44
42
|
}
|
|
@@ -73,7 +71,7 @@ function readWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
|
|
|
73
71
|
bytes
|
|
74
72
|
};
|
|
75
73
|
}
|
|
76
|
-
if (values.emit ===
|
|
74
|
+
if (values.emit === DEBUG_OUTPUTS[metadata.sourceFormat]) return metadata;
|
|
77
75
|
const error = new Error(`${metadata.sourceFormat}: emit "${values.emit}" is not implemented yet`);
|
|
78
76
|
error.code = "CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED";
|
|
79
77
|
error.sourceFormat = metadata.sourceFormat;
|
|
@@ -283,5 +281,5 @@ function readMp3FrameHeader(bytes, offset) {
|
|
|
283
281
|
};
|
|
284
282
|
}
|
|
285
283
|
|
|
286
|
-
export { DEFAULT_VALUES, OUTPUT_AUDIO,
|
|
284
|
+
export { DEFAULT_VALUES, OUTPUT_AUDIO, OUTPUT_PCM, OUTPUT_RAW, inspectBytes, inspectWithValues, isMP3, isWAV, normalizeEmit, normalizeInputType, normalizeValues, readWithValues };
|
|
287
285
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/mp3/core/helpers.js"],"sourcesContent":["import { toJsonWithByteSummary as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { asUint8Array, readFourCc, readU16LE, readU32BE, readU32LE } from \"#utils/bytes\";\nexport const OUTPUT_AUDIO = \"audio\";\nexport const OUTPUT_PCM = \"pcm\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n wav: \"wavJson\",\n mp3: \"mp3Json\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the MP3 format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsAudioFormat\")\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 MP3 format reader. */\nexport function normalizeInputType(inputType)\n{\n return inputType ? String(inputType).replace(/^\\./u, \"\").toLowerCase() : \"\";\n}\n\n/** Normalizes the requested output representation for the MP3 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_AUDIO, OUTPUT_PCM, 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 MP3 format reader. */\n/** Inspects input using normalized format options for the MP3 format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Audio input\");\n const metadata = inspectBytes(bytes);\n if (expectedType && metadata.sourceFormat && metadata.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsAudioFormat: expected ${expectedType}, got ${metadata.sourceFormat}`);\n }\n return {\n payloadType: \"audio\",\n mediaTypes: [ \"audio\" ],\n byteLength: bytes.byteLength,\n sourceFormat: expectedType || values.inputType || metadata.sourceFormat,\n ...metadata\n };\n}\n\n/**\n * Reports whether input is supported under normalized format options for the MP3\n * format reader.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const mimeType = getAudioMimeType(metadata);\n const variants = [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.audioFormat || metadata.sourceFormat,\n mimeType,\n supported: true,\n },\n { kind: \"pcm\", payloadType: \"pcm\", codec: \"pcm\", supported: false, reason: \"MP3 PCM decode/output is not implemented yet.\" }\n ];\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? \"partial\" : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferredOutput: variants.find((variant) => variant.supported)?.kind || \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized audio 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 preferredOutput: \"\",\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 MP3 format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Audio input\");\n const metadata = inspectWithValues(bytes, values, expectedType);\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n mimeType: getAudioMimeType(metadata),\n metadata,\n bytes\n };\n }\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat]) return metadata;\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 getAudioMimeType(metadata)\n{\n if (metadata.sourceFormat === \"wav\") return \"audio/wav\";\n return \"audio/mpeg\";\n}\n\n/** Converts a parsed payload into a JSON-safe value for the MP3 format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n\n/**\n * Inspects the supplied bytes without decoding their payload for the MP3 format\n * reader.\n */\nexport function inspectBytes(bytes)\n{\n if (isWAV(bytes)) return inspectWAV(bytes);\n if (isMP3(bytes)) return inspectMP3(bytes);\n return { sourceFormat: \"\", audioFormat: \"\" };\n}\n\n/**\n * Reports whether the supplied bytes have a RIFF/WAVE header for the MP3 format\n * reader.\n */\nexport function isWAV(bytes)\n{\n return bytes.byteLength >= 12 && readFourCc(bytes, 0) === \"RIFF\" && readFourCc(bytes, 8) === \"WAVE\";\n}\n\n/**\n * Reports whether the supplied bytes have a supported MP3 header for the MP3\n * format reader.\n */\nexport function isMP3(bytes)\n{\n return bytes.byteLength >= 3 &&\n (readFourCc(bytes, 0, 3) === \"ID3\" || (bytes[0] === 0xff && (bytes[1] & 0xe0) === 0xe0));\n}\n\nfunction inspectWAV(bytes)\n{\n let offset = 12;\n const info = { sourceFormat: \"wav\", audioFormat: \"wav\", sampleRate: 0, channels: 0, bitsPerSample: 0, dataBytes: 0 };\n while (offset + 8 <= bytes.byteLength)\n {\n const id = readFourCc(bytes, offset), size = readU32LE(bytes, offset + 4), dataOffset = offset + 8;\n if (id === \"fmt \" && dataOffset + 16 <= bytes.byteLength)\n {\n info.formatTag = readU16LE(bytes, dataOffset);\n info.channels = readU16LE(bytes, dataOffset + 2);\n info.sampleRate = readU32LE(bytes, dataOffset + 4);\n info.bitsPerSample = readU16LE(bytes, dataOffset + 14);\n }\n if (id === \"data\") info.dataBytes = size;\n offset = dataOffset + size + (size & 1);\n }\n return info;\n}\n\nfunction inspectMP3(bytes)\n{\n const frame = readMp3FrameHeader(bytes, findMp3FrameOffset(bytes));\n const id3 = readId3Header(bytes);\n const info = {\n sourceFormat: \"mp3\",\n audioFormat: \"mp3\",\n hasId3: !!id3,\n id3Version: id3?.version || 0,\n id3Revision: id3?.revision || 0,\n id3Flags: id3?.flags || 0,\n id3Size: id3?.size || 0,\n firstFrameOffset: frame?.offset || 0,\n version: frame?.version || \"\",\n layer: frame?.layer || \"\",\n bitrateKbps: frame?.bitrateKbps || 0,\n sampleRate: frame?.sampleRate || 0,\n channels: frame?.channels || 0,\n samplesPerFrame: frame?.samplesPerFrame || 0,\n frameLength: frame?.frameLength || 0,\n frameCount: 0,\n durationSeconds: 0,\n declaredFrameCount: 0,\n declaredByteCount: 0,\n vbrHeader: \"\",\n encoderDelay: 0,\n encoderPadding: 0\n };\n\n if (frame)\n {\n const vbr = readVbrHeader(bytes, frame);\n if (vbr)\n {\n info.declaredFrameCount = vbr.frameCount;\n info.declaredByteCount = vbr.byteCount;\n info.vbrHeader = vbr.kind;\n info.encoderDelay = vbr.encoderDelay;\n info.encoderPadding = vbr.encoderPadding;\n }\n let offset = frame.offset;\n while (offset + 4 <= bytes.byteLength && info.frameCount < 1000000)\n {\n const next = readMp3FrameHeader(bytes, offset);\n if (!next || next.frameLength <= 0) break;\n info.frameCount++;\n offset += next.frameLength;\n }\n const frameCount = info.declaredFrameCount || info.frameCount;\n const trimmedSamples = Math.max(0, frameCount * info.samplesPerFrame - info.encoderDelay - info.encoderPadding);\n info.durationSeconds = info.sampleRate ? trimmedSamples / info.sampleRate : 0;\n }\n\n return info;\n}\n\nfunction readId3Header(bytes)\n{\n if (bytes.byteLength < 10 || readFourCc(bytes, 0, 3) !== \"ID3\") return null;\n return {\n version: bytes[3],\n revision: bytes[4],\n flags: bytes[5],\n size: (bytes[6] << 21) | (bytes[7] << 14) | (bytes[8] << 7) | bytes[9]\n };\n}\n\nfunction readVbrHeader(bytes, frame)\n{\n const sideInfoLength = frame.version === \"mpeg1\"\n ? frame.channels === 1 ? 17 : 32\n : frame.channels === 1 ? 9 : 17;\n const xingOffset = frame.offset + 4 + sideInfoLength;\n for (const kind of [ \"Xing\", \"Info\" ])\n {\n if (readFourCc(bytes, xingOffset, 4) !== kind) continue;\n const flags = readU32BE(bytes, xingOffset + 4);\n const frameCount = (flags & 1) !== 0 ? readU32BE(bytes, xingOffset + 8) : 0;\n const byteCount = (flags & 2) !== 0 ? readU32BE(bytes, xingOffset + 12) : 0;\n const gapless = readLameGapless(bytes, xingOffset + 8 + ((flags & 1) !== 0 ? 4 : 0) + ((flags & 2) !== 0 ? 4 : 0) + ((flags & 4) !== 0 ? 100 : 0));\n return { kind, frameCount, byteCount, ...gapless };\n }\n\n const vbriOffset = frame.offset + 36;\n if (readFourCc(bytes, vbriOffset, 4) === \"VBRI\")\n {\n return {\n kind: \"VBRI\",\n frameCount: readU32BE(bytes, vbriOffset + 14),\n byteCount: readU32BE(bytes, vbriOffset + 10),\n encoderDelay: 0,\n encoderPadding: 0\n };\n }\n\n return null;\n}\n\nfunction readLameGapless(bytes, searchStart)\n{\n const end = Math.min(bytes.byteLength - 3, searchStart + 160);\n for (let offset = searchStart; offset < end; offset++)\n {\n if (readFourCc(bytes, offset, 4) !== \"LAME\") continue;\n const value = (bytes[offset + 0x15] << 16) | (bytes[offset + 0x16] << 8) | bytes[offset + 0x17];\n return {\n encoderDelay: (value >>> 12) & 0xfff,\n encoderPadding: value & 0xfff\n };\n }\n return { encoderDelay: 0, encoderPadding: 0 };\n}\n\nfunction findMp3FrameOffset(bytes)\n{\n let offset = 0;\n if (readFourCc(bytes, 0, 3) === \"ID3\" && bytes.byteLength >= 10)\n {\n const size = (bytes[6] << 21) | (bytes[7] << 14) | (bytes[8] << 7) | bytes[9];\n offset = 10 + size + (bytes[5] & 0x10 ? 10 : 0);\n }\n for (; offset + 4 <= bytes.byteLength; offset++)\n {\n if (readMp3FrameHeader(bytes, offset)) return offset;\n }\n return -1;\n}\n\nfunction readMp3FrameHeader(bytes, offset)\n{\n if (offset < 0 || offset + 4 > bytes.byteLength) return null;\n const header = ((bytes[offset] << 24) | (bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3]) >>> 0;\n if (((header & 0xffe00000) >>> 0) !== 0xffe00000) return null;\n\n const versionBits = (header >>> 19) & 3;\n const layerBits = (header >>> 17) & 3;\n const bitrateIndex = (header >>> 12) & 0xf;\n const sampleRateIndex = (header >>> 10) & 3;\n const padding = (header >>> 9) & 1;\n const channelMode = (header >>> 6) & 3;\n if (versionBits === 1 || layerBits !== 1 || bitrateIndex === 0 || bitrateIndex === 15 || sampleRateIndex === 3)\n {\n return null;\n }\n\n const version = versionBits === 3 ? \"mpeg1\" : versionBits === 2 ? \"mpeg2\" : \"mpeg2.5\";\n const bitrateTable = version === \"mpeg1\"\n ? [ 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 ]\n : [ 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 ];\n const sampleRateTable = version === \"mpeg1\"\n ? [ 44100, 48000, 32000 ]\n : version === \"mpeg2\" ? [ 22050, 24000, 16000 ] : [ 11025, 12000, 8000 ];\n const bitrateKbps = bitrateTable[bitrateIndex];\n const sampleRate = sampleRateTable[sampleRateIndex];\n const samplesPerFrame = version === \"mpeg1\" ? 1152 : 576;\n const frameLength = Math.floor((version === \"mpeg1\" ? 144000 : 72000) * bitrateKbps / sampleRate) + padding;\n if (offset + frameLength > bytes.byteLength) return null;\n\n return {\n offset,\n version,\n layer: \"layer3\",\n bitrateKbps,\n sampleRate,\n channels: channelMode === 3 ? 1 : 2,\n samplesPerFrame,\n frameLength\n };\n}\n\n\n\n"],"names":["OUTPUT_AUDIO","OUTPUT_PCM","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","wav","mp3","normalizeValues","base","options","readerName","values","normalizeInputType","normalizeEmit","String","replace","toLowerCase","undefined","includes","TypeError","JSON","stringify","inspectWithValues","input","expectedType","bytes","asUint8Array","metadata","inspectBytes","sourceFormat","payloadType","mediaTypes","byteLength","readWithValues","mimeType","getAudioMimeType","error","Error","code","isWAV","inspectWAV","isMP3","inspectMP3","audioFormat","readFourCc","offset","info","sampleRate","channels","bitsPerSample","dataBytes","id","size","readU32LE","dataOffset","formatTag","readU16LE","frame","readMp3FrameHeader","findMp3FrameOffset","id3","readId3Header","hasId3","id3Version","version","id3Revision","revision","id3Flags","flags","id3Size","firstFrameOffset","layer","bitrateKbps","samplesPerFrame","frameLength","frameCount","durationSeconds","declaredFrameCount","declaredByteCount","vbrHeader","encoderDelay","encoderPadding","vbr","readVbrHeader","byteCount","kind","next","trimmedSamples","Math","max","sideInfoLength","xingOffset","readU32BE","gapless","readLameGapless","vbriOffset","searchStart","end","min","value","header","versionBits","layerBits","bitrateIndex","sampleRateIndex","padding","channelMode","bitrateTable","sampleRateTable","floor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/mp3/core/helpers.js"],"sourcesContent":["import { toJsonWithByteSummary as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { asUint8Array, readFourCc, readU16LE, readU32BE, readU32LE } from \"#utils/bytes\";\nexport const OUTPUT_AUDIO = \"audio\";\nexport const OUTPUT_PCM = \"pcm\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n wav: \"wavJson\",\n mp3: \"mp3Json\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the MP3 format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsAudioFormat\")\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 MP3 format reader. */\nexport function normalizeInputType(inputType)\n{\n return inputType ? String(inputType).replace(/^\\./u, \"\").toLowerCase() : \"\";\n}\n\n/** Normalizes the requested output representation for the MP3 format reader. */\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if ([ OUTPUT_AUDIO, OUTPUT_PCM, OUTPUT_RAW].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 MP3 format reader. */\n/** Inspects input using normalized format options for the MP3 format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Audio input\");\n const metadata = inspectBytes(bytes);\n if (expectedType && metadata.sourceFormat && metadata.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsAudioFormat: expected ${expectedType}, got ${metadata.sourceFormat}`);\n }\n return {\n payloadType: \"audio\",\n mediaTypes: [ \"audio\" ],\n byteLength: bytes.byteLength,\n sourceFormat: expectedType || values.inputType || metadata.sourceFormat,\n ...metadata\n };\n}\n\n/**\n * Reports whether input is supported under normalized format options for the MP3\n * format reader.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const mimeType = getAudioMimeType(metadata);\n const variants = [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.audioFormat || metadata.sourceFormat,\n mimeType,\n supported: true,\n },\n { kind: \"pcm\", payloadType: \"pcm\", codec: \"pcm\", supported: false, reason: \"MP3 PCM decode/output is not implemented yet.\" }\n ];\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? \"partial\" : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferredOutput: variants.find((variant) => variant.supported)?.kind || \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized audio 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 preferredOutput: \"\",\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 MP3 format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Audio input\");\n const metadata = inspectWithValues(bytes, values, expectedType);\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n mimeType: getAudioMimeType(metadata),\n metadata,\n bytes\n };\n }\n if (values.emit === DEBUG_OUTPUTS[metadata.sourceFormat]) return metadata;\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 getAudioMimeType(metadata)\n{\n if (metadata.sourceFormat === \"wav\") return \"audio/wav\";\n return \"audio/mpeg\";\n}\n\n/** Converts a parsed payload into a JSON-safe value for the MP3 format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n\n/**\n * Inspects the supplied bytes without decoding their payload for the MP3 format\n * reader.\n */\nexport function inspectBytes(bytes)\n{\n if (isWAV(bytes)) return inspectWAV(bytes);\n if (isMP3(bytes)) return inspectMP3(bytes);\n return { sourceFormat: \"\", audioFormat: \"\" };\n}\n\n/**\n * Reports whether the supplied bytes have a RIFF/WAVE header for the MP3 format\n * reader.\n */\nexport function isWAV(bytes)\n{\n return bytes.byteLength >= 12 && readFourCc(bytes, 0) === \"RIFF\" && readFourCc(bytes, 8) === \"WAVE\";\n}\n\n/**\n * Reports whether the supplied bytes have a supported MP3 header for the MP3\n * format reader.\n */\nexport function isMP3(bytes)\n{\n return bytes.byteLength >= 3 &&\n (readFourCc(bytes, 0, 3) === \"ID3\" || (bytes[0] === 0xff && (bytes[1] & 0xe0) === 0xe0));\n}\n\nfunction inspectWAV(bytes)\n{\n let offset = 12;\n const info = { sourceFormat: \"wav\", audioFormat: \"wav\", sampleRate: 0, channels: 0, bitsPerSample: 0, dataBytes: 0 };\n while (offset + 8 <= bytes.byteLength)\n {\n const id = readFourCc(bytes, offset), size = readU32LE(bytes, offset + 4), dataOffset = offset + 8;\n if (id === \"fmt \" && dataOffset + 16 <= bytes.byteLength)\n {\n info.formatTag = readU16LE(bytes, dataOffset);\n info.channels = readU16LE(bytes, dataOffset + 2);\n info.sampleRate = readU32LE(bytes, dataOffset + 4);\n info.bitsPerSample = readU16LE(bytes, dataOffset + 14);\n }\n if (id === \"data\") info.dataBytes = size;\n offset = dataOffset + size + (size & 1);\n }\n return info;\n}\n\nfunction inspectMP3(bytes)\n{\n const frame = readMp3FrameHeader(bytes, findMp3FrameOffset(bytes));\n const id3 = readId3Header(bytes);\n const info = {\n sourceFormat: \"mp3\",\n audioFormat: \"mp3\",\n hasId3: !!id3,\n id3Version: id3?.version || 0,\n id3Revision: id3?.revision || 0,\n id3Flags: id3?.flags || 0,\n id3Size: id3?.size || 0,\n firstFrameOffset: frame?.offset || 0,\n version: frame?.version || \"\",\n layer: frame?.layer || \"\",\n bitrateKbps: frame?.bitrateKbps || 0,\n sampleRate: frame?.sampleRate || 0,\n channels: frame?.channels || 0,\n samplesPerFrame: frame?.samplesPerFrame || 0,\n frameLength: frame?.frameLength || 0,\n frameCount: 0,\n durationSeconds: 0,\n declaredFrameCount: 0,\n declaredByteCount: 0,\n vbrHeader: \"\",\n encoderDelay: 0,\n encoderPadding: 0\n };\n\n if (frame)\n {\n const vbr = readVbrHeader(bytes, frame);\n if (vbr)\n {\n info.declaredFrameCount = vbr.frameCount;\n info.declaredByteCount = vbr.byteCount;\n info.vbrHeader = vbr.kind;\n info.encoderDelay = vbr.encoderDelay;\n info.encoderPadding = vbr.encoderPadding;\n }\n let offset = frame.offset;\n while (offset + 4 <= bytes.byteLength && info.frameCount < 1000000)\n {\n const next = readMp3FrameHeader(bytes, offset);\n if (!next || next.frameLength <= 0) break;\n info.frameCount++;\n offset += next.frameLength;\n }\n const frameCount = info.declaredFrameCount || info.frameCount;\n const trimmedSamples = Math.max(0, frameCount * info.samplesPerFrame - info.encoderDelay - info.encoderPadding);\n info.durationSeconds = info.sampleRate ? trimmedSamples / info.sampleRate : 0;\n }\n\n return info;\n}\n\nfunction readId3Header(bytes)\n{\n if (bytes.byteLength < 10 || readFourCc(bytes, 0, 3) !== \"ID3\") return null;\n return {\n version: bytes[3],\n revision: bytes[4],\n flags: bytes[5],\n size: (bytes[6] << 21) | (bytes[7] << 14) | (bytes[8] << 7) | bytes[9]\n };\n}\n\nfunction readVbrHeader(bytes, frame)\n{\n const sideInfoLength = frame.version === \"mpeg1\"\n ? frame.channels === 1 ? 17 : 32\n : frame.channels === 1 ? 9 : 17;\n const xingOffset = frame.offset + 4 + sideInfoLength;\n for (const kind of [ \"Xing\", \"Info\" ])\n {\n if (readFourCc(bytes, xingOffset, 4) !== kind) continue;\n const flags = readU32BE(bytes, xingOffset + 4);\n const frameCount = (flags & 1) !== 0 ? readU32BE(bytes, xingOffset + 8) : 0;\n const byteCount = (flags & 2) !== 0 ? readU32BE(bytes, xingOffset + 12) : 0;\n const gapless = readLameGapless(bytes, xingOffset + 8 + ((flags & 1) !== 0 ? 4 : 0) + ((flags & 2) !== 0 ? 4 : 0) + ((flags & 4) !== 0 ? 100 : 0));\n return { kind, frameCount, byteCount, ...gapless };\n }\n\n const vbriOffset = frame.offset + 36;\n if (readFourCc(bytes, vbriOffset, 4) === \"VBRI\")\n {\n return {\n kind: \"VBRI\",\n frameCount: readU32BE(bytes, vbriOffset + 14),\n byteCount: readU32BE(bytes, vbriOffset + 10),\n encoderDelay: 0,\n encoderPadding: 0\n };\n }\n\n return null;\n}\n\nfunction readLameGapless(bytes, searchStart)\n{\n const end = Math.min(bytes.byteLength - 3, searchStart + 160);\n for (let offset = searchStart; offset < end; offset++)\n {\n if (readFourCc(bytes, offset, 4) !== \"LAME\") continue;\n const value = (bytes[offset + 0x15] << 16) | (bytes[offset + 0x16] << 8) | bytes[offset + 0x17];\n return {\n encoderDelay: (value >>> 12) & 0xfff,\n encoderPadding: value & 0xfff\n };\n }\n return { encoderDelay: 0, encoderPadding: 0 };\n}\n\nfunction findMp3FrameOffset(bytes)\n{\n let offset = 0;\n if (readFourCc(bytes, 0, 3) === \"ID3\" && bytes.byteLength >= 10)\n {\n const size = (bytes[6] << 21) | (bytes[7] << 14) | (bytes[8] << 7) | bytes[9];\n offset = 10 + size + (bytes[5] & 0x10 ? 10 : 0);\n }\n for (; offset + 4 <= bytes.byteLength; offset++)\n {\n if (readMp3FrameHeader(bytes, offset)) return offset;\n }\n return -1;\n}\n\nfunction readMp3FrameHeader(bytes, offset)\n{\n if (offset < 0 || offset + 4 > bytes.byteLength) return null;\n const header = ((bytes[offset] << 24) | (bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3]) >>> 0;\n if (((header & 0xffe00000) >>> 0) !== 0xffe00000) return null;\n\n const versionBits = (header >>> 19) & 3;\n const layerBits = (header >>> 17) & 3;\n const bitrateIndex = (header >>> 12) & 0xf;\n const sampleRateIndex = (header >>> 10) & 3;\n const padding = (header >>> 9) & 1;\n const channelMode = (header >>> 6) & 3;\n if (versionBits === 1 || layerBits !== 1 || bitrateIndex === 0 || bitrateIndex === 15 || sampleRateIndex === 3)\n {\n return null;\n }\n\n const version = versionBits === 3 ? \"mpeg1\" : versionBits === 2 ? \"mpeg2\" : \"mpeg2.5\";\n const bitrateTable = version === \"mpeg1\"\n ? [ 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 ]\n : [ 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 ];\n const sampleRateTable = version === \"mpeg1\"\n ? [ 44100, 48000, 32000 ]\n : version === \"mpeg2\" ? [ 22050, 24000, 16000 ] : [ 11025, 12000, 8000 ];\n const bitrateKbps = bitrateTable[bitrateIndex];\n const sampleRate = sampleRateTable[sampleRateIndex];\n const samplesPerFrame = version === \"mpeg1\" ? 1152 : 576;\n const frameLength = Math.floor((version === \"mpeg1\" ? 144000 : 72000) * bitrateKbps / sampleRate) + padding;\n if (offset + frameLength > bytes.byteLength) return null;\n\n return {\n offset,\n version,\n layer: \"layer3\",\n bitrateKbps,\n sampleRate,\n channels: channelMode === 3 ? 1 : 2,\n samplesPerFrame,\n frameLength\n };\n}\n\n\n\n"],"names":["OUTPUT_AUDIO","OUTPUT_PCM","OUTPUT_RAW","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","wav","mp3","normalizeValues","base","options","readerName","values","normalizeInputType","normalizeEmit","String","replace","toLowerCase","undefined","includes","TypeError","JSON","stringify","inspectWithValues","input","expectedType","bytes","asUint8Array","metadata","inspectBytes","sourceFormat","payloadType","mediaTypes","byteLength","readWithValues","mimeType","getAudioMimeType","error","Error","code","isWAV","inspectWAV","isMP3","inspectMP3","audioFormat","readFourCc","offset","info","sampleRate","channels","bitsPerSample","dataBytes","id","size","readU32LE","dataOffset","formatTag","readU16LE","frame","readMp3FrameHeader","findMp3FrameOffset","id3","readId3Header","hasId3","id3Version","version","id3Revision","revision","id3Flags","flags","id3Size","firstFrameOffset","layer","bitrateKbps","samplesPerFrame","frameLength","frameCount","durationSeconds","declaredFrameCount","declaredByteCount","vbrHeader","encoderDelay","encoderPadding","vbr","readVbrHeader","byteCount","kind","next","trimmedSamples","Math","max","sideInfoLength","xingOffset","readU32BE","gapless","readLameGapless","vbriOffset","searchStart","end","min","value","header","versionBits","layerBits","bitrateIndex","sampleRateIndex","padding","channelMode","bitrateTable","sampleRateTable","floor"],"mappings":"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"}
|