@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,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, isMP4
|
|
3
|
+
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isMP4 } from './core/helpers.js';
|
|
4
4
|
import { toJsonWithByteSummary } from '../../format/jsonPolicies.js';
|
|
5
5
|
|
|
6
6
|
const FORMAT_NAME = "CjsMp4Format";
|
|
@@ -11,7 +11,7 @@ const FORMAT_NAME = "CjsMp4Format";
|
|
|
11
11
|
* and duration summaries but no frame decoding.
|
|
12
12
|
*/
|
|
13
13
|
class CjsMp4Format extends CjsFormat {
|
|
14
|
-
|
|
14
|
+
_values = DEFAULT_VALUES;
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Create a reusable MP4 format profile.
|
|
@@ -30,7 +30,7 @@ class CjsMp4Format extends CjsFormat {
|
|
|
30
30
|
* @returns {CjsMp4Format} This format profile.
|
|
31
31
|
*/
|
|
32
32
|
SetValues(options = {}) {
|
|
33
|
-
this
|
|
33
|
+
this._values = normalizeValues(this._values, {
|
|
34
34
|
inputType: "mp4",
|
|
35
35
|
...options
|
|
36
36
|
}, FORMAT_NAME);
|
|
@@ -44,7 +44,7 @@ class CjsMp4Format extends CjsFormat {
|
|
|
44
44
|
* @returns {object} Normalized read values.
|
|
45
45
|
*/
|
|
46
46
|
GetValues(options = {}) {
|
|
47
|
-
return normalizeValues(this
|
|
47
|
+
return normalizeValues(this._values, {
|
|
48
48
|
inputType: "mp4",
|
|
49
49
|
...options
|
|
50
50
|
}, FORMAT_NAME);
|
|
@@ -167,14 +167,8 @@ class CjsMp4Format extends CjsFormat {
|
|
|
167
167
|
/**
|
|
168
168
|
* Emit targets for this format (canonical frozen enum).
|
|
169
169
|
*/
|
|
170
|
-
static
|
|
171
|
-
|
|
172
|
-
RAW: OUTPUT_RAW,
|
|
173
|
-
JSON: OUTPUT_JSON
|
|
174
|
-
});
|
|
175
|
-
static OUTPUT_MP4_JSON = "mp4Json";
|
|
176
|
-
static id = "mp4";
|
|
177
|
-
static mediaTypes = Object.freeze(["audio", "video"]);
|
|
170
|
+
static id = "CjsMp4Format";
|
|
171
|
+
static mediaTypes = ["audio", "video"];
|
|
178
172
|
static outputs = CjsFormat.defineOutputs({
|
|
179
173
|
video: {},
|
|
180
174
|
mp4Json: {
|
|
@@ -187,7 +181,7 @@ class CjsMp4Format extends CjsFormat {
|
|
|
187
181
|
passthrough: true
|
|
188
182
|
}
|
|
189
183
|
});
|
|
190
|
-
static extensions =
|
|
184
|
+
static extensions = [".mp4", ".m4v", ".m4a"];
|
|
191
185
|
}
|
|
192
186
|
|
|
193
187
|
export { CjsMp4Format };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsMp4Format.js","sources":["../../../../../src/resource/formats/mp4/CjsMp4Format.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_VIDEO,\n inspectWithValues,\n isMP4,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsMp4Format\";\n\n/**\n * MP4 container format profile that inspects box and track structure and\n * emits raw bytes, debug JSON, or a container-only video payload with codec\n * and duration summaries but no frame decoding.\n */\nexport class CjsMp4Format extends CjsFormat\n{\n
|
|
1
|
+
{"version":3,"file":"CjsMp4Format.js","sources":["../../../../../src/resource/formats/mp4/CjsMp4Format.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_VIDEO,\n inspectWithValues,\n isMP4,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsMp4Format\";\n\n/**\n * MP4 container format profile that inspects box and track structure and\n * emits raw bytes, debug JSON, or a container-only video payload with codec\n * and duration summaries but no frame decoding.\n */\nexport class CjsMp4Format extends CjsFormat\n{\n _values = DEFAULT_VALUES;\n\n /**\n * Create a reusable MP4 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 {CjsMp4Format} This format profile.\n */\n SetValues(options = {})\n {\n this._values = normalizeValues(this._values, { inputType: \"mp4\", ...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: \"mp4\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read MP4 bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 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), \"mp4\");\n }\n\n /**\n * Read MP4 bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 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 MP4 bytes without decoding media samples.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} MP4 container metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"mp4\");\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 MP4 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 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: \"mp4\", ...options }, FORMAT_NAME), \"mp4\");\n }\n\n /**\n * One-shot asynchronous MP4 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 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 CjsMp4Format.read(input, options);\n }\n\n /**\n * One-shot MP4 inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} MP4 container metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp4\", ...options }, FORMAT_NAME), \"mp4\");\n }\n\n /**\n * One-shot MP4 support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 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 MP4 file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate MP4 bytes.\n * @returns {boolean} True when an MP4-compatible ftyp box is present.\n */\n static isMP4(input)\n {\n try\n {\n return isMP4(asUint8Array(input, \"Video 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 = \"CjsMp4Format\";\n static mediaTypes = [ \"audio\", \"video\" ];\n static outputs = CjsFormat.defineOutputs({\n video: { },\n mp4Json: { role: \"debug\", probes: [ \"mp4Json\", \"raw\" ] },\n raw: { role: \"debug\", default: true, passthrough: true }\n });\n static extensions = [ \".mp4\", \".m4v\", \".m4a\" ];\n}\n\nexport default CjsMp4Format;\n"],"names":["FORMAT_NAME","CjsMp4Format","CjsFormat","_values","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","toJSON","isMP4","asUint8Array","id","mediaTypes","outputs","defineOutputs","video","mp4Json","role","probes","raw","default","passthrough","extensions"],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import { asUint8Array, readFourCc, readU32BE, readU16BE } from '#utils/bytes';
|
|
|
2
2
|
|
|
3
3
|
const OUTPUT_VIDEO = "video";
|
|
4
4
|
const OUTPUT_RAW = "raw";
|
|
5
|
-
const OUTPUT_JSON = "json";
|
|
6
5
|
const DEFAULT_VALUES = Object.freeze({
|
|
7
6
|
emit: OUTPUT_RAW,
|
|
8
7
|
inputType: "",
|
|
@@ -32,8 +31,7 @@ function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsV
|
|
|
32
31
|
/** Normalizes the requested output representation for the MP4 format reader. */
|
|
33
32
|
function normalizeEmit(emit, inputType, readerName) {
|
|
34
33
|
if (emit === undefined || emit === null) return OUTPUT_RAW;
|
|
35
|
-
if (emit
|
|
36
|
-
if ([OUTPUT_VIDEO, OUTPUT_RAW, OUTPUT_JSON].includes(emit)) return emit;
|
|
34
|
+
if ([OUTPUT_VIDEO, OUTPUT_RAW].includes(emit)) return emit;
|
|
37
35
|
if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;
|
|
38
36
|
throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);
|
|
39
37
|
}
|
|
@@ -67,7 +65,7 @@ function readWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
|
|
|
67
65
|
bytes
|
|
68
66
|
};
|
|
69
67
|
}
|
|
70
|
-
if (values.emit ===
|
|
68
|
+
if (values.emit === DEBUG_OUTPUTS[metadata.sourceFormat]) return metadata;
|
|
71
69
|
if (values.emit === OUTPUT_VIDEO && metadata.sourceFormat === "mp4") {
|
|
72
70
|
const codecs = getTrackCodecSummary(metadata);
|
|
73
71
|
const mimeType = getMediaMimeType(metadata);
|
|
@@ -385,5 +383,5 @@ function readU64BE(bytes, offset) {
|
|
|
385
383
|
return readU32BE(bytes, offset) * 0x100000000 + readU32BE(bytes, offset + 4);
|
|
386
384
|
}
|
|
387
385
|
|
|
388
|
-
export { DEFAULT_VALUES,
|
|
386
|
+
export { DEFAULT_VALUES, OUTPUT_RAW, OUTPUT_VIDEO, inspectBytes, inspectWithValues, isMP4, isWebM, normalizeEmit, normalizeValues, readWithValues };
|
|
389
387
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/mp4/core/helpers.js"],"sourcesContent":["import { toJsonWithByteSummary as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { asUint8Array, readFourCc, readU16BE, readU32BE } from \"#utils/bytes\";\nexport const OUTPUT_VIDEO = \"video\";\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 mp4: \"mp4Json\",\n m4a: \"mp4Json\",\n webm: \"webmJson\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the MP4 format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsVideoFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"\";\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\n/** Normalizes the requested output representation for the MP4 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_VIDEO, 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 MP4 format reader. */\n/** Inspects input using normalized format options for the MP4 format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Video input\");\n const metadata = inspectBytes(bytes);\n if (expectedType && metadata.sourceFormat && metadata.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsVideoFormat: expected ${expectedType}, got ${metadata.sourceFormat}`);\n }\n return {\n payloadType: \"video\",\n mediaTypes: [ \"video\" ],\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 MP4\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 codecs = getTrackCodecSummary(metadata);\n const mimeType = getMediaMimeType(metadata);\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: \"video\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized video format.\",\n metadata,\n variants: [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.sourceFormat,\n mimeType,\n supported: true,\n },\n {\n kind: \"container\",\n payloadType: \"video\",\n codec: metadata.sourceFormat,\n mimeType,\n codecs: codecs.codecs,\n videoCodecs: codecs.videoCodecs,\n audioCodecs: codecs.audioCodecs,\n supported: true,\n },\n {\n kind: \"decoded\",\n payloadType: \"video-frame\",\n codec: \"frames\",\n supported: false,\n reason: \"Video decode is not implemented in this package.\"\n }\n ],\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 MP4 format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Video 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 metadata,\n bytes\n };\n }\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat]) return metadata;\n\n if (values.emit === OUTPUT_VIDEO && metadata.sourceFormat === \"mp4\")\n {\n const codecs = getTrackCodecSummary(metadata);\n const mimeType = getMediaMimeType(metadata);\n return {\n payloadType: OUTPUT_VIDEO,\n sourceFormat: \"mp4\",\n container: metadata.container,\n mimeType,\n codecs: codecs.codecs,\n videoCodecs: codecs.videoCodecs,\n audioCodecs: codecs.audioCodecs,\n duration: metadata.duration || 0,\n durationTimescale: metadata.durationTimescale || 1,\n tracks: metadata.tracks || [],\n metadata,\n sourceBytes: bytes\n };\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\nfunction getTrackCodecSummary(metadata)\n{\n const tracks = Array.isArray(metadata.tracks) ? metadata.tracks : [];\n return {\n codecs: uniqueTrackCodecs(tracks),\n videoCodecs: uniqueTrackCodecs(tracks.filter((track) => track.type === \"video\")),\n audioCodecs: uniqueTrackCodecs(tracks.filter((track) => track.type === \"audio\"))\n };\n}\n\nfunction uniqueTrackCodecs(tracks)\n{\n return [ ...new Set(tracks.map((track) => track.codec).filter(Boolean)) ];\n}\n\nfunction getMediaMimeType(metadata)\n{\n const tracks = Array.isArray(metadata.tracks) ? metadata.tracks : [];\n return tracks.some((track) => track.type === \"video\") ? \"video/mp4\" : \"audio/mp4\";\n}\n\n/**\n * Inspects the supplied bytes without decoding their payload for the MP4 format\n * reader.\n */\nexport function inspectBytes(bytes)\n{\n if (isMP4(bytes)) return inspectMP4(bytes);\n if (isWebM(bytes)) return inspectWebM();\n return { sourceFormat: \"\" };\n}\n\n/**\n * Reports whether the supplied bytes have an ISO base-media header for the MP4\n * format reader.\n */\nexport function isMP4(bytes)\n{\n return bytes.byteLength >= 12 && readFourCc(bytes, 4) === \"ftyp\";\n}\n\n/**\n * Reports whether the supplied bytes have a WebM EBML header for the MP4 format\n * reader.\n */\nexport function isWebM(bytes)\n{\n return bytes.byteLength >= 4 && bytes[0] === 0x1a && bytes[1] === 0x45 && bytes[2] === 0xdf && bytes[3] === 0xa3;\n}\n\n/** Converts a parsed payload into a JSON-safe value for the MP4 format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n\nfunction inspectMP4(bytes)\n{\n const boxes = readMp4Boxes(bytes, 0, bytes.byteLength);\n const ftyp = boxes.find((box) => box.type === \"ftyp\");\n const moov = boxes.find((box) => box.type === \"moov\");\n const movie = moov ? inspectMp4Movie(bytes, moov) : { duration: 0, durationTimescale: 1, tracks: [] };\n return {\n sourceFormat: \"mp4\",\n brand: ftyp ? readFourCc(bytes, ftyp.dataStart) : readFourCc(bytes, 8),\n compatibleBrands: ftyp ? readMp4Brands(bytes, ftyp) : [],\n container: \"isobmff\",\n ...movie\n };\n}\n\nfunction inspectMp4Movie(bytes, moov)\n{\n const mvhd = findMp4Child(bytes, moov, \"mvhd\");\n const movieTiming = mvhd ? readMp4Timing(bytes, mvhd) : { duration: 0, durationTimescale: 1 };\n const tracks = findMp4Children(bytes, moov, \"trak\").map((trak) => inspectMp4Track(bytes, trak));\n return { ...movieTiming, tracks };\n}\n\nfunction inspectMp4Track(bytes, trak)\n{\n const tkhd = findMp4Child(bytes, trak, \"tkhd\");\n const mdia = findMp4Child(bytes, trak, \"mdia\");\n const mdhd = mdia ? findMp4Child(bytes, mdia, \"mdhd\") : null;\n const hdlr = mdia ? findMp4Child(bytes, mdia, \"hdlr\") : null;\n const minf = mdia ? findMp4Child(bytes, mdia, \"minf\") : null;\n const stbl = minf ? findMp4Child(bytes, minf, \"stbl\") : null;\n const stsd = stbl ? findMp4Child(bytes, stbl, \"stsd\") : null;\n const sampleTable = stbl ? readMp4SampleTable(bytes, stbl) : null;\n const timing = mdhd ? readMp4Timing(bytes, mdhd) : { duration: 0, durationTimescale: 1 };\n const handler = hdlr && hdlr.dataLength >= 12 ? readFourCc(bytes, hdlr.dataStart + 8) : \"\";\n const sample = stsd ? readMp4SampleEntry(bytes, stsd) : null;\n const track = {\n id: tkhd ? readMp4TrackId(bytes, tkhd) : 0,\n type: handler === \"vide\" ? \"video\" : handler === \"soun\" ? \"audio\" : handler || \"unknown\",\n handler,\n codec: sample?.codec || \"\",\n duration: timing.duration,\n durationTimescale: timing.durationTimescale,\n language: mdhd ? readMp4Language(bytes, mdhd) : \"und\"\n };\n if (sample?.width) track.width = sample.width;\n if (sample?.height) track.height = sample.height;\n if (sample?.channels) track.channels = sample.channels;\n if (sample?.sampleRate) track.sampleRate = sample.sampleRate;\n if (sampleTable) track.sampleTable = sampleTable;\n return track;\n}\n\nfunction readMp4SampleTable(bytes, stbl)\n{\n const stts = findMp4Child(bytes, stbl, \"stts\");\n const stsc = findMp4Child(bytes, stbl, \"stsc\");\n const stsz = findMp4Child(bytes, stbl, \"stsz\");\n const stco = findMp4Child(bytes, stbl, \"stco\");\n const co64 = findMp4Child(bytes, stbl, \"co64\");\n const stss = findMp4Child(bytes, stbl, \"stss\");\n const ctts = findMp4Child(bytes, stbl, \"ctts\");\n if (!stts && !stsc && !stsz && !stco && !co64 && !stss && !ctts) return null;\n\n const timing = stts ? readMp4TimeToSample(bytes, stts) : { entryCount: 0, sampleCount: 0, duration: 0 };\n const composition = ctts ? readMp4CompositionOffsets(bytes, ctts) : { entryCount: 0, sampleCount: 0, minOffset: 0, maxOffset: 0 };\n const sizes = stsz ? readMp4SampleSizes(bytes, stsz) : { sampleCount: 0, bytes: 0, fixedSize: 0 };\n return {\n sampleCount: sizes.sampleCount || timing.sampleCount,\n sampleBytes: sizes.bytes,\n fixedSampleBytes: sizes.fixedSize,\n decodeTimeEntries: timing.entryCount,\n decodeDuration: timing.duration,\n compositionTimeEntries: composition.entryCount,\n compositionSampleCount: composition.sampleCount,\n compositionOffsetMin: composition.minOffset,\n compositionOffsetMax: composition.maxOffset,\n chunkCount: stco ? readMp4Count(bytes, stco, 4) : co64 ? readMp4Count(bytes, co64, 4) : 0,\n chunkOffsetType: stco ? \"stco\" : co64 ? \"co64\" : \"\",\n sampleToChunkEntries: stsc ? readMp4Count(bytes, stsc, 4) : 0,\n keyframeCount: stss ? readMp4Count(bytes, stss, 4) : 0\n };\n}\n\nfunction readMp4TimeToSample(bytes, box)\n{\n const entryCount = readMp4Count(bytes, box, 4);\n let sampleCount = 0;\n let duration = 0;\n for (let index = 0; index < entryCount; index++)\n {\n const offset = box.dataStart + 8 + index * 8;\n if (offset + 8 > box.end) break;\n const count = readU32BE(bytes, offset);\n const delta = readU32BE(bytes, offset + 4);\n sampleCount += count;\n duration += count * delta;\n }\n return { entryCount, sampleCount, duration };\n}\n\nfunction readMp4CompositionOffsets(bytes, box)\n{\n const version = bytes[box.dataStart];\n const entryCount = readMp4Count(bytes, box, 4);\n let sampleCount = 0;\n let minOffset = 0;\n let maxOffset = 0;\n for (let index = 0; index < entryCount; index++)\n {\n const offset = box.dataStart + 8 + index * 8;\n if (offset + 8 > box.end) break;\n const count = readU32BE(bytes, offset);\n const compositionOffset = version === 1 ? readI32BE(bytes, offset + 4) : readU32BE(bytes, offset + 4);\n sampleCount += count;\n minOffset = index === 0 ? compositionOffset : Math.min(minOffset, compositionOffset);\n maxOffset = index === 0 ? compositionOffset : Math.max(maxOffset, compositionOffset);\n }\n return { entryCount, sampleCount, minOffset, maxOffset };\n}\n\nfunction readMp4SampleSizes(bytes, box)\n{\n const fixedSize = readU32BE(bytes, box.dataStart + 4);\n const sampleCount = readU32BE(bytes, box.dataStart + 8);\n if (fixedSize !== 0) return { sampleCount, bytes: fixedSize * sampleCount, fixedSize };\n\n let total = 0;\n for (let index = 0; index < sampleCount; index++)\n {\n const offset = box.dataStart + 12 + index * 4;\n if (offset + 4 > box.end) break;\n total += readU32BE(bytes, offset);\n }\n return { sampleCount, bytes: total, fixedSize: 0 };\n}\n\nfunction readMp4Count(bytes, box, offset)\n{\n return box.dataStart + offset + 4 <= box.end ? readU32BE(bytes, box.dataStart + offset) : 0;\n}\n\nfunction readMp4Timing(bytes, box)\n{\n const version = bytes[box.dataStart];\n const offset = version === 1 ? 20 : 12;\n const durationOffset = version === 1 ? 28 : 16;\n return {\n durationTimescale: readU32BE(bytes, box.dataStart + offset) || 1,\n duration: version === 1 ? readU64BE(bytes, box.dataStart + durationOffset) : readU32BE(bytes, box.dataStart + durationOffset)\n };\n}\n\nfunction readMp4TrackId(bytes, box)\n{\n return readU32BE(bytes, box.dataStart + (bytes[box.dataStart] === 1 ? 20 : 12));\n}\n\nfunction readMp4Language(bytes, box)\n{\n const offset = box.dataStart + (bytes[box.dataStart] === 1 ? 32 : 20);\n const value = readU16BE(bytes, offset) & 0x7fff;\n if (!value) return \"und\";\n return String.fromCharCode(\n ((value >>> 10) & 0x1f) + 0x60,\n ((value >>> 5) & 0x1f) + 0x60,\n (value & 0x1f) + 0x60\n );\n}\n\nfunction readMp4SampleEntry(bytes, stsd)\n{\n if (stsd.dataLength < 16) return null;\n const entryCount = readU32BE(bytes, stsd.dataStart + 4);\n if (!entryCount) return null;\n const entry = readMp4Boxes(bytes, stsd.dataStart + 8, stsd.end)[0];\n if (!entry) return null;\n const result = { codec: readFourCc(bytes, entry.start + 4) };\n if (result.codec === \"avc1\" || result.codec === \"avc3\" || result.codec === \"hvc1\" || result.codec === \"hev1\" || result.codec === \"vp09\" || result.codec === \"av01\")\n {\n result.width = readU16BE(bytes, entry.dataStart + 16);\n result.height = readU16BE(bytes, entry.dataStart + 18);\n }\n else if ([ \"mp4a\", \"ac-3\", \"ec-3\", \"Opus\" ].includes(result.codec))\n {\n result.channels = readU16BE(bytes, entry.dataStart + 8);\n result.sampleRate = readU32BE(bytes, entry.dataStart + 16) >>> 16;\n }\n return result;\n}\n\nfunction readMp4Brands(bytes, ftyp)\n{\n const brands = [];\n for (let offset = ftyp.dataStart + 8; offset + 4 <= ftyp.end; offset += 4)\n {\n brands.push(readFourCc(bytes, offset));\n }\n return brands;\n}\n\nfunction readMp4Boxes(bytes, start, end)\n{\n const boxes = [];\n let offset = start;\n while (offset + 8 <= end)\n {\n let size = readU32BE(bytes, offset);\n const type = readFourCc(bytes, offset + 4);\n let headerSize = 8;\n if (size === 1 && offset + 16 <= end)\n {\n size = readU64BE(bytes, offset + 8);\n headerSize = 16;\n }\n if (size === 0) size = end - offset;\n if (size < headerSize || offset + size > end) break;\n boxes.push({ type, start: offset, dataStart: offset + headerSize, dataLength: size - headerSize, end: offset + size });\n offset += size;\n }\n return boxes;\n}\n\nfunction findMp4Child(bytes, parent, type)\n{\n return readMp4Boxes(bytes, parent.dataStart, parent.end).find((box) => box.type === type) || null;\n}\n\nfunction findMp4Children(bytes, parent, type)\n{\n return readMp4Boxes(bytes, parent.dataStart, parent.end).filter((box) => box.type === type);\n}\n\nfunction inspectWebM()\n{\n return {\n sourceFormat: \"webm\",\n container: \"ebml\"\n };\n}\n\n\nfunction readI32BE(bytes, offset)\n{\n return readU32BE(bytes, offset) | 0;\n}\n\nfunction readU64BE(bytes, offset)\n{\n return readU32BE(bytes, offset) * 0x100000000 + readU32BE(bytes, offset + 4);\n}\n\n"],"names":["OUTPUT_VIDEO","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","mp4","m4a","webm","normalizeValues","base","options","readerName","values","String","replace","toLowerCase","normalizeEmit","undefined","includes","TypeError","JSON","stringify","inspectWithValues","input","expectedType","bytes","asUint8Array","metadata","inspectBytes","sourceFormat","payloadType","mediaTypes","byteLength","readWithValues","codecs","getTrackCodecSummary","mimeType","getMediaMimeType","container","videoCodecs","audioCodecs","duration","durationTimescale","tracks","sourceBytes","error","Error","code","Array","isArray","uniqueTrackCodecs","filter","track","type","Set","map","codec","Boolean","some","isMP4","inspectMP4","isWebM","inspectWebM","readFourCc","boxes","readMp4Boxes","ftyp","find","box","moov","movie","inspectMp4Movie","brand","dataStart","compatibleBrands","readMp4Brands","mvhd","findMp4Child","movieTiming","readMp4Timing","findMp4Children","trak","inspectMp4Track","tkhd","mdia","mdhd","hdlr","minf","stbl","stsd","sampleTable","readMp4SampleTable","timing","handler","dataLength","sample","readMp4SampleEntry","id","readMp4TrackId","language","readMp4Language","width","height","channels","sampleRate","stts","stsc","stsz","stco","co64","stss","ctts","readMp4TimeToSample","entryCount","sampleCount","composition","readMp4CompositionOffsets","minOffset","maxOffset","sizes","readMp4SampleSizes","fixedSize","sampleBytes","fixedSampleBytes","decodeTimeEntries","decodeDuration","compositionTimeEntries","compositionSampleCount","compositionOffsetMin","compositionOffsetMax","chunkCount","readMp4Count","chunkOffsetType","sampleToChunkEntries","keyframeCount","index","offset","end","count","readU32BE","delta","version","compositionOffset","readI32BE","Math","min","max","total","durationOffset","readU64BE","value","readU16BE","fromCharCode","entry","result","start","brands","push","size","headerSize","parent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/mp4/core/helpers.js"],"sourcesContent":["import { toJsonWithByteSummary as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { asUint8Array, readFourCc, readU16BE, readU32BE } from \"#utils/bytes\";\nexport const OUTPUT_VIDEO = \"video\";\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 mp4: \"mp4Json\",\n m4a: \"mp4Json\",\n webm: \"webmJson\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the MP4 format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsVideoFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"\";\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\n/** Normalizes the requested output representation for the MP4 format reader. */\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if ([ OUTPUT_VIDEO, 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 MP4 format reader. */\n/** Inspects input using normalized format options for the MP4 format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Video input\");\n const metadata = inspectBytes(bytes);\n if (expectedType && metadata.sourceFormat && metadata.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsVideoFormat: expected ${expectedType}, got ${metadata.sourceFormat}`);\n }\n return {\n payloadType: \"video\",\n mediaTypes: [ \"video\" ],\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 MP4\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 codecs = getTrackCodecSummary(metadata);\n const mimeType = getMediaMimeType(metadata);\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: \"video\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized video format.\",\n metadata,\n variants: [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.sourceFormat,\n mimeType,\n supported: true,\n },\n {\n kind: \"container\",\n payloadType: \"video\",\n codec: metadata.sourceFormat,\n mimeType,\n codecs: codecs.codecs,\n videoCodecs: codecs.videoCodecs,\n audioCodecs: codecs.audioCodecs,\n supported: true,\n },\n {\n kind: \"decoded\",\n payloadType: \"video-frame\",\n codec: \"frames\",\n supported: false,\n reason: \"Video decode is not implemented in this package.\"\n }\n ],\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 MP4 format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = asUint8Array(input, \"Video 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 metadata,\n bytes\n };\n }\n if (values.emit === DEBUG_OUTPUTS[metadata.sourceFormat]) return metadata;\n\n if (values.emit === OUTPUT_VIDEO && metadata.sourceFormat === \"mp4\")\n {\n const codecs = getTrackCodecSummary(metadata);\n const mimeType = getMediaMimeType(metadata);\n return {\n payloadType: OUTPUT_VIDEO,\n sourceFormat: \"mp4\",\n container: metadata.container,\n mimeType,\n codecs: codecs.codecs,\n videoCodecs: codecs.videoCodecs,\n audioCodecs: codecs.audioCodecs,\n duration: metadata.duration || 0,\n durationTimescale: metadata.durationTimescale || 1,\n tracks: metadata.tracks || [],\n metadata,\n sourceBytes: bytes\n };\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\nfunction getTrackCodecSummary(metadata)\n{\n const tracks = Array.isArray(metadata.tracks) ? metadata.tracks : [];\n return {\n codecs: uniqueTrackCodecs(tracks),\n videoCodecs: uniqueTrackCodecs(tracks.filter((track) => track.type === \"video\")),\n audioCodecs: uniqueTrackCodecs(tracks.filter((track) => track.type === \"audio\"))\n };\n}\n\nfunction uniqueTrackCodecs(tracks)\n{\n return [ ...new Set(tracks.map((track) => track.codec).filter(Boolean)) ];\n}\n\nfunction getMediaMimeType(metadata)\n{\n const tracks = Array.isArray(metadata.tracks) ? metadata.tracks : [];\n return tracks.some((track) => track.type === \"video\") ? \"video/mp4\" : \"audio/mp4\";\n}\n\n/**\n * Inspects the supplied bytes without decoding their payload for the MP4 format\n * reader.\n */\nexport function inspectBytes(bytes)\n{\n if (isMP4(bytes)) return inspectMP4(bytes);\n if (isWebM(bytes)) return inspectWebM();\n return { sourceFormat: \"\" };\n}\n\n/**\n * Reports whether the supplied bytes have an ISO base-media header for the MP4\n * format reader.\n */\nexport function isMP4(bytes)\n{\n return bytes.byteLength >= 12 && readFourCc(bytes, 4) === \"ftyp\";\n}\n\n/**\n * Reports whether the supplied bytes have a WebM EBML header for the MP4 format\n * reader.\n */\nexport function isWebM(bytes)\n{\n return bytes.byteLength >= 4 && bytes[0] === 0x1a && bytes[1] === 0x45 && bytes[2] === 0xdf && bytes[3] === 0xa3;\n}\n\n/** Converts a parsed payload into a JSON-safe value for the MP4 format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n\nfunction inspectMP4(bytes)\n{\n const boxes = readMp4Boxes(bytes, 0, bytes.byteLength);\n const ftyp = boxes.find((box) => box.type === \"ftyp\");\n const moov = boxes.find((box) => box.type === \"moov\");\n const movie = moov ? inspectMp4Movie(bytes, moov) : { duration: 0, durationTimescale: 1, tracks: [] };\n return {\n sourceFormat: \"mp4\",\n brand: ftyp ? readFourCc(bytes, ftyp.dataStart) : readFourCc(bytes, 8),\n compatibleBrands: ftyp ? readMp4Brands(bytes, ftyp) : [],\n container: \"isobmff\",\n ...movie\n };\n}\n\nfunction inspectMp4Movie(bytes, moov)\n{\n const mvhd = findMp4Child(bytes, moov, \"mvhd\");\n const movieTiming = mvhd ? readMp4Timing(bytes, mvhd) : { duration: 0, durationTimescale: 1 };\n const tracks = findMp4Children(bytes, moov, \"trak\").map((trak) => inspectMp4Track(bytes, trak));\n return { ...movieTiming, tracks };\n}\n\nfunction inspectMp4Track(bytes, trak)\n{\n const tkhd = findMp4Child(bytes, trak, \"tkhd\");\n const mdia = findMp4Child(bytes, trak, \"mdia\");\n const mdhd = mdia ? findMp4Child(bytes, mdia, \"mdhd\") : null;\n const hdlr = mdia ? findMp4Child(bytes, mdia, \"hdlr\") : null;\n const minf = mdia ? findMp4Child(bytes, mdia, \"minf\") : null;\n const stbl = minf ? findMp4Child(bytes, minf, \"stbl\") : null;\n const stsd = stbl ? findMp4Child(bytes, stbl, \"stsd\") : null;\n const sampleTable = stbl ? readMp4SampleTable(bytes, stbl) : null;\n const timing = mdhd ? readMp4Timing(bytes, mdhd) : { duration: 0, durationTimescale: 1 };\n const handler = hdlr && hdlr.dataLength >= 12 ? readFourCc(bytes, hdlr.dataStart + 8) : \"\";\n const sample = stsd ? readMp4SampleEntry(bytes, stsd) : null;\n const track = {\n id: tkhd ? readMp4TrackId(bytes, tkhd) : 0,\n type: handler === \"vide\" ? \"video\" : handler === \"soun\" ? \"audio\" : handler || \"unknown\",\n handler,\n codec: sample?.codec || \"\",\n duration: timing.duration,\n durationTimescale: timing.durationTimescale,\n language: mdhd ? readMp4Language(bytes, mdhd) : \"und\"\n };\n if (sample?.width) track.width = sample.width;\n if (sample?.height) track.height = sample.height;\n if (sample?.channels) track.channels = sample.channels;\n if (sample?.sampleRate) track.sampleRate = sample.sampleRate;\n if (sampleTable) track.sampleTable = sampleTable;\n return track;\n}\n\nfunction readMp4SampleTable(bytes, stbl)\n{\n const stts = findMp4Child(bytes, stbl, \"stts\");\n const stsc = findMp4Child(bytes, stbl, \"stsc\");\n const stsz = findMp4Child(bytes, stbl, \"stsz\");\n const stco = findMp4Child(bytes, stbl, \"stco\");\n const co64 = findMp4Child(bytes, stbl, \"co64\");\n const stss = findMp4Child(bytes, stbl, \"stss\");\n const ctts = findMp4Child(bytes, stbl, \"ctts\");\n if (!stts && !stsc && !stsz && !stco && !co64 && !stss && !ctts) return null;\n\n const timing = stts ? readMp4TimeToSample(bytes, stts) : { entryCount: 0, sampleCount: 0, duration: 0 };\n const composition = ctts ? readMp4CompositionOffsets(bytes, ctts) : { entryCount: 0, sampleCount: 0, minOffset: 0, maxOffset: 0 };\n const sizes = stsz ? readMp4SampleSizes(bytes, stsz) : { sampleCount: 0, bytes: 0, fixedSize: 0 };\n return {\n sampleCount: sizes.sampleCount || timing.sampleCount,\n sampleBytes: sizes.bytes,\n fixedSampleBytes: sizes.fixedSize,\n decodeTimeEntries: timing.entryCount,\n decodeDuration: timing.duration,\n compositionTimeEntries: composition.entryCount,\n compositionSampleCount: composition.sampleCount,\n compositionOffsetMin: composition.minOffset,\n compositionOffsetMax: composition.maxOffset,\n chunkCount: stco ? readMp4Count(bytes, stco, 4) : co64 ? readMp4Count(bytes, co64, 4) : 0,\n chunkOffsetType: stco ? \"stco\" : co64 ? \"co64\" : \"\",\n sampleToChunkEntries: stsc ? readMp4Count(bytes, stsc, 4) : 0,\n keyframeCount: stss ? readMp4Count(bytes, stss, 4) : 0\n };\n}\n\nfunction readMp4TimeToSample(bytes, box)\n{\n const entryCount = readMp4Count(bytes, box, 4);\n let sampleCount = 0;\n let duration = 0;\n for (let index = 0; index < entryCount; index++)\n {\n const offset = box.dataStart + 8 + index * 8;\n if (offset + 8 > box.end) break;\n const count = readU32BE(bytes, offset);\n const delta = readU32BE(bytes, offset + 4);\n sampleCount += count;\n duration += count * delta;\n }\n return { entryCount, sampleCount, duration };\n}\n\nfunction readMp4CompositionOffsets(bytes, box)\n{\n const version = bytes[box.dataStart];\n const entryCount = readMp4Count(bytes, box, 4);\n let sampleCount = 0;\n let minOffset = 0;\n let maxOffset = 0;\n for (let index = 0; index < entryCount; index++)\n {\n const offset = box.dataStart + 8 + index * 8;\n if (offset + 8 > box.end) break;\n const count = readU32BE(bytes, offset);\n const compositionOffset = version === 1 ? readI32BE(bytes, offset + 4) : readU32BE(bytes, offset + 4);\n sampleCount += count;\n minOffset = index === 0 ? compositionOffset : Math.min(minOffset, compositionOffset);\n maxOffset = index === 0 ? compositionOffset : Math.max(maxOffset, compositionOffset);\n }\n return { entryCount, sampleCount, minOffset, maxOffset };\n}\n\nfunction readMp4SampleSizes(bytes, box)\n{\n const fixedSize = readU32BE(bytes, box.dataStart + 4);\n const sampleCount = readU32BE(bytes, box.dataStart + 8);\n if (fixedSize !== 0) return { sampleCount, bytes: fixedSize * sampleCount, fixedSize };\n\n let total = 0;\n for (let index = 0; index < sampleCount; index++)\n {\n const offset = box.dataStart + 12 + index * 4;\n if (offset + 4 > box.end) break;\n total += readU32BE(bytes, offset);\n }\n return { sampleCount, bytes: total, fixedSize: 0 };\n}\n\nfunction readMp4Count(bytes, box, offset)\n{\n return box.dataStart + offset + 4 <= box.end ? readU32BE(bytes, box.dataStart + offset) : 0;\n}\n\nfunction readMp4Timing(bytes, box)\n{\n const version = bytes[box.dataStart];\n const offset = version === 1 ? 20 : 12;\n const durationOffset = version === 1 ? 28 : 16;\n return {\n durationTimescale: readU32BE(bytes, box.dataStart + offset) || 1,\n duration: version === 1 ? readU64BE(bytes, box.dataStart + durationOffset) : readU32BE(bytes, box.dataStart + durationOffset)\n };\n}\n\nfunction readMp4TrackId(bytes, box)\n{\n return readU32BE(bytes, box.dataStart + (bytes[box.dataStart] === 1 ? 20 : 12));\n}\n\nfunction readMp4Language(bytes, box)\n{\n const offset = box.dataStart + (bytes[box.dataStart] === 1 ? 32 : 20);\n const value = readU16BE(bytes, offset) & 0x7fff;\n if (!value) return \"und\";\n return String.fromCharCode(\n ((value >>> 10) & 0x1f) + 0x60,\n ((value >>> 5) & 0x1f) + 0x60,\n (value & 0x1f) + 0x60\n );\n}\n\nfunction readMp4SampleEntry(bytes, stsd)\n{\n if (stsd.dataLength < 16) return null;\n const entryCount = readU32BE(bytes, stsd.dataStart + 4);\n if (!entryCount) return null;\n const entry = readMp4Boxes(bytes, stsd.dataStart + 8, stsd.end)[0];\n if (!entry) return null;\n const result = { codec: readFourCc(bytes, entry.start + 4) };\n if (result.codec === \"avc1\" || result.codec === \"avc3\" || result.codec === \"hvc1\" || result.codec === \"hev1\" || result.codec === \"vp09\" || result.codec === \"av01\")\n {\n result.width = readU16BE(bytes, entry.dataStart + 16);\n result.height = readU16BE(bytes, entry.dataStart + 18);\n }\n else if ([ \"mp4a\", \"ac-3\", \"ec-3\", \"Opus\" ].includes(result.codec))\n {\n result.channels = readU16BE(bytes, entry.dataStart + 8);\n result.sampleRate = readU32BE(bytes, entry.dataStart + 16) >>> 16;\n }\n return result;\n}\n\nfunction readMp4Brands(bytes, ftyp)\n{\n const brands = [];\n for (let offset = ftyp.dataStart + 8; offset + 4 <= ftyp.end; offset += 4)\n {\n brands.push(readFourCc(bytes, offset));\n }\n return brands;\n}\n\nfunction readMp4Boxes(bytes, start, end)\n{\n const boxes = [];\n let offset = start;\n while (offset + 8 <= end)\n {\n let size = readU32BE(bytes, offset);\n const type = readFourCc(bytes, offset + 4);\n let headerSize = 8;\n if (size === 1 && offset + 16 <= end)\n {\n size = readU64BE(bytes, offset + 8);\n headerSize = 16;\n }\n if (size === 0) size = end - offset;\n if (size < headerSize || offset + size > end) break;\n boxes.push({ type, start: offset, dataStart: offset + headerSize, dataLength: size - headerSize, end: offset + size });\n offset += size;\n }\n return boxes;\n}\n\nfunction findMp4Child(bytes, parent, type)\n{\n return readMp4Boxes(bytes, parent.dataStart, parent.end).find((box) => box.type === type) || null;\n}\n\nfunction findMp4Children(bytes, parent, type)\n{\n return readMp4Boxes(bytes, parent.dataStart, parent.end).filter((box) => box.type === type);\n}\n\nfunction inspectWebM()\n{\n return {\n sourceFormat: \"webm\",\n container: \"ebml\"\n };\n}\n\n\nfunction readI32BE(bytes, offset)\n{\n return readU32BE(bytes, offset) | 0;\n}\n\nfunction readU64BE(bytes, offset)\n{\n return readU32BE(bytes, offset) * 0x100000000 + readU32BE(bytes, offset + 4);\n}\n\n"],"names":["OUTPUT_VIDEO","OUTPUT_RAW","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","mp4","m4a","webm","normalizeValues","base","options","readerName","values","String","replace","toLowerCase","normalizeEmit","undefined","includes","TypeError","JSON","stringify","inspectWithValues","input","expectedType","bytes","asUint8Array","metadata","inspectBytes","sourceFormat","payloadType","mediaTypes","byteLength","readWithValues","codecs","getTrackCodecSummary","mimeType","getMediaMimeType","container","videoCodecs","audioCodecs","duration","durationTimescale","tracks","sourceBytes","error","Error","code","Array","isArray","uniqueTrackCodecs","filter","track","type","Set","map","codec","Boolean","some","isMP4","inspectMP4","isWebM","inspectWebM","readFourCc","boxes","readMp4Boxes","ftyp","find","box","moov","movie","inspectMp4Movie","brand","dataStart","compatibleBrands","readMp4Brands","mvhd","findMp4Child","movieTiming","readMp4Timing","findMp4Children","trak","inspectMp4Track","tkhd","mdia","mdhd","hdlr","minf","stbl","stsd","sampleTable","readMp4SampleTable","timing","handler","dataLength","sample","readMp4SampleEntry","id","readMp4TrackId","language","readMp4Language","width","height","channels","sampleRate","stts","stsc","stsz","stco","co64","stss","ctts","readMp4TimeToSample","entryCount","sampleCount","composition","readMp4CompositionOffsets","minOffset","maxOffset","sizes","readMp4SampleSizes","fixedSize","sampleBytes","fixedSampleBytes","decodeTimeEntries","decodeDuration","compositionTimeEntries","compositionSampleCount","compositionOffsetMin","compositionOffsetMax","chunkCount","readMp4Count","chunkOffsetType","sampleToChunkEntries","keyframeCount","index","offset","end","count","readU32BE","delta","version","compositionOffset","readI32BE","Math","min","max","total","durationOffset","readU64BE","value","readU16BE","fromCharCode","entry","result","start","brands","push","size","headerSize","parent"],"mappings":"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"}
|