@photivra/engine 0.5.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +674 -0
- package/CHANGELOG.md +218 -0
- package/CITATION.cff +1 -1
- package/CONTRIBUTING.md +76 -0
- package/DCO +33 -0
- package/NODE_SUPPORT.md +37 -0
- package/NOTICE +2 -0
- package/README.md +157 -56
- package/SECURITY.md +55 -0
- package/THIRD_PARTY.md +63 -0
- package/dist/camera/equivalent-focal-length.d.ts +9 -0
- package/dist/camera/equivalent-focal-length.d.ts.map +1 -1
- package/dist/camera/equivalent-focal-length.js +9 -0
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +13 -0
- package/dist/camera/field-of-view.d.ts.map +1 -1
- package/dist/camera/field-of-view.js +13 -0
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/projected-object-size.d.ts +8 -0
- package/dist/camera/projected-object-size.d.ts.map +1 -1
- package/dist/camera/projected-object-size.js +8 -0
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +60 -0
- package/dist/capture/capture-export-metadata.d.ts.map +1 -0
- package/dist/capture/capture-export-metadata.js +62 -0
- package/dist/capture/capture-export-metadata.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +55 -0
- package/dist/capture/environment-raw-producer.d.ts.map +1 -0
- package/dist/capture/environment-raw-producer.js +88 -0
- package/dist/capture/environment-raw-producer.js.map +1 -0
- package/dist/capture/export-jpeg.d.ts +12 -0
- package/dist/capture/export-jpeg.d.ts.map +1 -0
- package/dist/capture/export-jpeg.js +126 -0
- package/dist/capture/export-jpeg.js.map +1 -0
- package/dist/capture/export-tiff.d.ts +45 -0
- package/dist/capture/export-tiff.d.ts.map +1 -0
- package/dist/capture/export-tiff.js +129 -0
- package/dist/capture/export-tiff.js.map +1 -0
- package/dist/capture/focus-control.d.ts +210 -0
- package/dist/capture/focus-control.d.ts.map +1 -0
- package/dist/capture/focus-control.js +664 -0
- package/dist/capture/focus-control.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +59 -0
- package/dist/capture/linear-encoding.d.ts.map +1 -0
- package/dist/capture/linear-encoding.js +98 -0
- package/dist/capture/linear-encoding.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +135 -0
- package/dist/capture/photographic-export.d.ts.map +1 -0
- package/dist/capture/photographic-export.js +273 -0
- package/dist/capture/photographic-export.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +12 -0
- package/dist/capture/raw-frame-limits.d.ts.map +1 -0
- package/dist/capture/raw-frame-limits.js +13 -0
- package/dist/capture/raw-frame-limits.js.map +1 -0
- package/dist/capture/raw-frame-reconstruction.d.ts +48 -0
- package/dist/capture/raw-frame-reconstruction.d.ts.map +1 -0
- package/dist/capture/raw-frame-reconstruction.js +146 -0
- package/dist/capture/raw-frame-reconstruction.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +120 -0
- package/dist/capture/release-sequence.d.ts.map +1 -0
- package/dist/capture/release-sequence.js +446 -0
- package/dist/capture/release-sequence.js.map +1 -0
- package/dist/capture/sensor-raw-frame.d.ts +34 -0
- package/dist/capture/sensor-raw-frame.d.ts.map +1 -0
- package/dist/capture/sensor-raw-frame.js +106 -0
- package/dist/capture/sensor-raw-frame.js.map +1 -0
- package/dist/capture/sensor-raw-producer.d.ts +51 -0
- package/dist/capture/sensor-raw-producer.d.ts.map +1 -0
- package/dist/capture/sensor-raw-producer.js +235 -0
- package/dist/capture/sensor-raw-producer.js.map +1 -0
- package/dist/capture/simulated-capture.d.ts +125 -0
- package/dist/capture/simulated-capture.d.ts.map +1 -0
- package/dist/capture/simulated-capture.js +248 -0
- package/dist/capture/simulated-capture.js.map +1 -0
- package/dist/color/capture-color.d.ts +73 -0
- package/dist/color/capture-color.d.ts.map +1 -0
- package/dist/color/capture-color.js +145 -0
- package/dist/color/capture-color.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +23 -0
- package/dist/color/sensor-color-development.d.ts.map +1 -0
- package/dist/color/sensor-color-development.js +56 -0
- package/dist/color/sensor-color-development.js.map +1 -0
- package/dist/color/white-balance.d.ts +175 -0
- package/dist/color/white-balance.d.ts.map +1 -0
- package/dist/color/white-balance.js +606 -0
- package/dist/color/white-balance.js.map +1 -0
- package/dist/composition/image-formation-plan.d.ts +481 -0
- package/dist/composition/image-formation-plan.d.ts.map +1 -0
- package/dist/composition/image-formation-plan.js +2499 -0
- package/dist/composition/image-formation-plan.js.map +1 -0
- package/dist/composition/plan-consumer.d.ts +53 -0
- package/dist/composition/plan-consumer.d.ts.map +1 -0
- package/dist/composition/plan-consumer.js +119 -0
- package/dist/composition/plan-consumer.js.map +1 -0
- package/dist/core/calculation-result.d.ts.map +1 -1
- package/dist/core/calculation-result.js +6 -0
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +18 -0
- package/dist/core/canonical-json.d.ts.map +1 -0
- package/dist/core/canonical-json.js +44 -0
- package/dist/core/canonical-json.js.map +1 -0
- package/dist/core/configuration-error.d.ts +6 -0
- package/dist/core/configuration-error.d.ts.map +1 -1
- package/dist/core/configuration-error.js +6 -0
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +6 -0
- package/dist/core/evidence-provenance.d.ts.map +1 -1
- package/dist/core/evidence-provenance.js +7 -0
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +9 -3
- package/dist/core/image-formation.d.ts.map +1 -1
- package/dist/core/image-formation.js +29 -5
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +25 -0
- package/dist/core/owned-data.d.ts.map +1 -0
- package/dist/core/owned-data.js +34 -0
- package/dist/core/owned-data.js.map +1 -0
- package/dist/core/record-validation.d.ts +17 -0
- package/dist/core/record-validation.d.ts.map +1 -0
- package/dist/core/record-validation.js +44 -0
- package/dist/core/record-validation.js.map +1 -0
- package/dist/core/scientific-assurance.d.ts +101 -0
- package/dist/core/scientific-assurance.d.ts.map +1 -0
- package/dist/core/scientific-assurance.js +301 -0
- package/dist/core/scientific-assurance.js.map +1 -0
- package/dist/core/spectral-composition.d.ts +106 -0
- package/dist/core/spectral-composition.d.ts.map +1 -0
- package/dist/core/spectral-composition.js +334 -0
- package/dist/core/spectral-composition.js.map +1 -0
- package/dist/core/spectral.d.ts +34 -0
- package/dist/core/spectral.d.ts.map +1 -0
- package/dist/core/spectral.js +57 -0
- package/dist/core/spectral.js.map +1 -0
- package/dist/core/validation.d.ts +6 -0
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +6 -0
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +14 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +15 -0
- package/dist/core/version.js.map +1 -0
- package/dist/equipment/exposure-capabilities.d.ts +125 -0
- package/dist/equipment/exposure-capabilities.d.ts.map +1 -0
- package/dist/equipment/exposure-capabilities.js +391 -0
- package/dist/equipment/exposure-capabilities.js.map +1 -0
- package/dist/equipment/generic-tier-assets.d.ts +82 -0
- package/dist/equipment/generic-tier-assets.d.ts.map +1 -0
- package/dist/equipment/generic-tier-assets.js +119 -0
- package/dist/equipment/generic-tier-assets.js.map +1 -0
- package/dist/equipment/generic-tier-presets.d.ts +57 -0
- package/dist/equipment/generic-tier-presets.d.ts.map +1 -0
- package/dist/equipment/generic-tier-presets.js +122 -0
- package/dist/equipment/generic-tier-presets.js.map +1 -0
- package/dist/equipment/iso-capabilities.d.ts +143 -0
- package/dist/equipment/iso-capabilities.d.ts.map +1 -0
- package/dist/equipment/iso-capabilities.js +578 -0
- package/dist/equipment/iso-capabilities.js.map +1 -0
- package/dist/equipment/metering-capabilities.d.ts +58 -0
- package/dist/equipment/metering-capabilities.d.ts.map +1 -0
- package/dist/equipment/metering-capabilities.js +151 -0
- package/dist/equipment/metering-capabilities.js.map +1 -0
- package/dist/equipment/release-capabilities.d.ts +33 -0
- package/dist/equipment/release-capabilities.d.ts.map +1 -0
- package/dist/equipment/release-capabilities.js +176 -0
- package/dist/equipment/release-capabilities.js.map +1 -0
- package/dist/exposure/exposure-duration-control.d.ts +72 -0
- package/dist/exposure/exposure-duration-control.d.ts.map +1 -0
- package/dist/exposure/exposure-duration-control.js +161 -0
- package/dist/exposure/exposure-duration-control.js.map +1 -0
- package/dist/exposure/exposure-mode-resolver.d.ts +637 -0
- package/dist/exposure/exposure-mode-resolver.d.ts.map +1 -0
- package/dist/exposure/exposure-mode-resolver.js +1905 -0
- package/dist/exposure/exposure-mode-resolver.js.map +1 -0
- package/dist/exposure/exposure.d.ts +8 -0
- package/dist/exposure/exposure.d.ts.map +1 -1
- package/dist/exposure/exposure.js +8 -0
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash.d.ts +179 -0
- package/dist/exposure/flash.d.ts.map +1 -0
- package/dist/exposure/flash.js +644 -0
- package/dist/exposure/flash.js.map +1 -0
- package/dist/exposure/metering-scene-radiance.d.ts +72 -0
- package/dist/exposure/metering-scene-radiance.d.ts.map +1 -0
- package/dist/exposure/metering-scene-radiance.js +222 -0
- package/dist/exposure/metering-scene-radiance.js.map +1 -0
- package/dist/exposure/metering-target.d.ts +67 -0
- package/dist/exposure/metering-target.d.ts.map +1 -0
- package/dist/exposure/metering-target.js +265 -0
- package/dist/exposure/metering-target.js.map +1 -0
- package/dist/exposure/metering-temporal.d.ts +76 -0
- package/dist/exposure/metering-temporal.d.ts.map +1 -0
- package/dist/exposure/metering-temporal.js +210 -0
- package/dist/exposure/metering-temporal.js.map +1 -0
- package/dist/exposure/metering.d.ts +124 -0
- package/dist/exposure/metering.d.ts.map +1 -0
- package/dist/exposure/metering.js +422 -0
- package/dist/exposure/metering.js.map +1 -0
- package/dist/exposure/program-line.d.ts +29 -0
- package/dist/exposure/program-line.d.ts.map +1 -0
- package/dist/exposure/program-line.js +126 -0
- package/dist/exposure/program-line.js.map +1 -0
- package/dist/index.d.ts +101 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +99 -7
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +76 -0
- package/dist/motion/camera-rotation.d.ts.map +1 -1
- package/dist/motion/camera-rotation.js +111 -0
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +113 -0
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +1 -0
- package/dist/motion/capture-rotation-inverse-mapping.js +184 -0
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -0
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +104 -0
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +1 -0
- package/dist/motion/capture-rotation-temporal-quadrature.js +131 -0
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -0
- package/dist/motion/capture-rotation-trajectory.d.ts +113 -0
- package/dist/motion/capture-rotation-trajectory.d.ts.map +1 -0
- package/dist/motion/capture-rotation-trajectory.js +168 -0
- package/dist/motion/capture-rotation-trajectory.js.map +1 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +119 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +1 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +263 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -0
- package/dist/motion/extended-object-projection.d.ts +175 -0
- package/dist/motion/extended-object-projection.d.ts.map +1 -0
- package/dist/motion/extended-object-projection.js +402 -0
- package/dist/motion/extended-object-projection.js.map +1 -0
- package/dist/motion/projected-motion.d.ts +11 -0
- package/dist/motion/projected-motion.d.ts.map +1 -1
- package/dist/motion/projected-motion.js +11 -0
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/optics/aperture.d.ts +9 -0
- package/dist/optics/aperture.d.ts.map +1 -1
- package/dist/optics/aperture.js +9 -0
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/circle-of-confusion.d.ts +8 -0
- package/dist/optics/circle-of-confusion.d.ts.map +1 -1
- package/dist/optics/circle-of-confusion.js +8 -0
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +128 -0
- package/dist/optics/complex-pupil-psf.d.ts.map +1 -0
- package/dist/optics/complex-pupil-psf.js +462 -0
- package/dist/optics/complex-pupil-psf.js.map +1 -0
- package/dist/optics/depth-of-field.d.ts +18 -0
- package/dist/optics/depth-of-field.d.ts.map +1 -1
- package/dist/optics/depth-of-field.js +29 -4
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction.d.ts +8 -0
- package/dist/optics/diffraction.d.ts.map +1 -1
- package/dist/optics/diffraction.js +8 -0
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +13 -0
- package/dist/optics/focus-breathing.d.ts.map +1 -1
- package/dist/optics/focus-breathing.js +13 -0
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +47 -0
- package/dist/optics/focus-state.d.ts.map +1 -0
- package/dist/optics/focus-state.js +78 -0
- package/dist/optics/focus-state.js.map +1 -0
- package/dist/optics/front-of-lens-filter.d.ts +114 -0
- package/dist/optics/front-of-lens-filter.d.ts.map +1 -0
- package/dist/optics/front-of-lens-filter.js +468 -0
- package/dist/optics/front-of-lens-filter.js.map +1 -0
- package/dist/optics/illumination-vignetting.d.ts +9 -0
- package/dist/optics/illumination-vignetting.d.ts.map +1 -1
- package/dist/optics/illumination-vignetting.js +9 -0
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts +11 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +1 -1
- package/dist/optics/lateral-chromatic-aberration.js +23 -4
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-profile.d.ts +217 -0
- package/dist/optics/lens-psf-profile.d.ts.map +1 -0
- package/dist/optics/lens-psf-profile.js +823 -0
- package/dist/optics/lens-psf-profile.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +67 -0
- package/dist/optics/polygon-diffraction.d.ts.map +1 -0
- package/dist/optics/polygon-diffraction.js +145 -0
- package/dist/optics/polygon-diffraction.js.map +1 -0
- package/dist/optics/profile-contract.d.ts +42 -0
- package/dist/optics/profile-contract.d.ts.map +1 -0
- package/dist/optics/profile-contract.js +92 -0
- package/dist/optics/profile-contract.js.map +1 -0
- package/dist/optics/psf-foundation.d.ts +16 -3
- package/dist/optics/psf-foundation.d.ts.map +1 -1
- package/dist/optics/psf-foundation.js +28 -15
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/radial-distortion.d.ts +22 -2
- package/dist/optics/radial-distortion.d.ts.map +1 -1
- package/dist/optics/radial-distortion.js +101 -23
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +213 -0
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +1 -0
- package/dist/optics/scene-to-sensor-irradiance.js +662 -0
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -0
- package/dist/optics/scene-to-sensor-quadrature.d.ts +63 -0
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +1 -0
- package/dist/optics/scene-to-sensor-quadrature.js +82 -0
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -0
- package/dist/optics/sensor-environment-query.d.ts +60 -0
- package/dist/optics/sensor-environment-query.d.ts.map +1 -0
- package/dist/optics/sensor-environment-query.js +50 -0
- package/dist/optics/sensor-environment-query.js.map +1 -0
- package/dist/optics/sensor-psf-quadrature.d.ts +70 -0
- package/dist/optics/sensor-psf-quadrature.d.ts.map +1 -0
- package/dist/optics/sensor-psf-quadrature.js +101 -0
- package/dist/optics/sensor-psf-quadrature.js.map +1 -0
- package/dist/optics/sensor-psf-support.d.ts +20 -0
- package/dist/optics/sensor-psf-support.d.ts.map +1 -0
- package/dist/optics/sensor-psf-support.js +13 -0
- package/dist/optics/sensor-psf-support.js.map +1 -0
- package/dist/optics/stray-light.d.ts +91 -0
- package/dist/optics/stray-light.d.ts.map +1 -0
- package/dist/optics/stray-light.js +110 -0
- package/dist/optics/stray-light.js.map +1 -0
- package/dist/optics/thin-lens.d.ts +8 -0
- package/dist/optics/thin-lens.d.ts.map +1 -1
- package/dist/optics/thin-lens.js +8 -0
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/output/capture-corrected-sdr.d.ts +49 -0
- package/dist/output/capture-corrected-sdr.d.ts.map +1 -0
- package/dist/output/capture-corrected-sdr.js +149 -0
- package/dist/output/capture-corrected-sdr.js.map +1 -0
- package/dist/output/capture-geometry.d.ts.map +1 -1
- package/dist/output/capture-geometry.js +32 -11
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +49 -0
- package/dist/output/capture-sdr.d.ts.map +1 -0
- package/dist/output/capture-sdr.js +90 -0
- package/dist/output/capture-sdr.js.map +1 -0
- package/dist/output/crop.d.ts +6 -0
- package/dist/output/crop.d.ts.map +1 -1
- package/dist/output/crop.js +6 -0
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +137 -0
- package/dist/output/geometric-transforms.d.ts.map +1 -0
- package/dist/output/geometric-transforms.js +225 -0
- package/dist/output/geometric-transforms.js.map +1 -0
- package/dist/output/lens-corrections.d.ts +121 -0
- package/dist/output/lens-corrections.d.ts.map +1 -0
- package/dist/output/lens-corrections.js +210 -0
- package/dist/output/lens-corrections.js.map +1 -0
- package/dist/output/sdr-rendering.d.ts +81 -0
- package/dist/output/sdr-rendering.d.ts.map +1 -0
- package/dist/output/sdr-rendering.js +106 -0
- package/dist/output/sdr-rendering.js.map +1 -0
- package/dist/output/subject-framing-crop.d.ts +8 -0
- package/dist/output/subject-framing-crop.d.ts.map +1 -1
- package/dist/output/subject-framing-crop.js +8 -0
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/schema/camera.d.ts +6 -0
- package/dist/schema/camera.d.ts.map +1 -1
- package/dist/schema/illumination-spectral.d.ts +51 -0
- package/dist/schema/illumination-spectral.d.ts.map +1 -0
- package/dist/schema/illumination-spectral.js +132 -0
- package/dist/schema/illumination-spectral.js.map +1 -0
- package/dist/schema/illumination-temporal.d.ts +156 -0
- package/dist/schema/illumination-temporal.d.ts.map +1 -0
- package/dist/schema/illumination-temporal.js +554 -0
- package/dist/schema/illumination-temporal.js.map +1 -0
- package/dist/schema/illumination.d.ts +138 -0
- package/dist/schema/illumination.d.ts.map +1 -0
- package/dist/schema/illumination.js +483 -0
- package/dist/schema/illumination.js.map +1 -0
- package/dist/schema/scene-radiance-temporal.d.ts +107 -0
- package/dist/schema/scene-radiance-temporal.d.ts.map +1 -0
- package/dist/schema/scene-radiance-temporal.js +259 -0
- package/dist/schema/scene-radiance-temporal.js.map +1 -0
- package/dist/schema/scene-radiance.d.ts +185 -0
- package/dist/schema/scene-radiance.d.ts.map +1 -0
- package/dist/schema/scene-radiance.js +535 -0
- package/dist/schema/scene-radiance.js.map +1 -0
- package/dist/schema/scene.d.ts +7 -0
- package/dist/schema/scene.d.ts.map +1 -1
- package/dist/schema/validation.d.ts.map +1 -1
- package/dist/schema/validation.js +7 -0
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +199 -0
- package/dist/sensor/accumulated-charge.d.ts.map +1 -0
- package/dist/sensor/accumulated-charge.js +450 -0
- package/dist/sensor/accumulated-charge.js.map +1 -0
- package/dist/sensor/architecture.d.ts +48 -13
- package/dist/sensor/architecture.d.ts.map +1 -1
- package/dist/sensor/architecture.js +58 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +138 -0
- package/dist/sensor/camera-saturation-capacity.d.ts.map +1 -0
- package/dist/sensor/camera-saturation-capacity.js +356 -0
- package/dist/sensor/camera-saturation-capacity.js.map +1 -0
- package/dist/sensor/capture-color-sampling-binding.d.ts +212 -0
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +1 -0
- package/dist/sensor/capture-color-sampling-binding.js +437 -0
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -0
- package/dist/sensor/capture-mode-timing.d.ts +63 -0
- package/dist/sensor/capture-mode-timing.d.ts.map +1 -0
- package/dist/sensor/capture-mode-timing.js +270 -0
- package/dist/sensor/capture-mode-timing.js.map +1 -0
- package/dist/sensor/capture-mode.d.ts +157 -0
- package/dist/sensor/capture-mode.d.ts.map +1 -0
- package/dist/sensor/capture-mode.js +447 -0
- package/dist/sensor/capture-mode.js.map +1 -0
- package/dist/sensor/color-sampling.d.ts +133 -0
- package/dist/sensor/color-sampling.d.ts.map +1 -0
- package/dist/sensor/color-sampling.js +245 -0
- package/dist/sensor/color-sampling.js.map +1 -0
- package/dist/sensor/constant-rate-temporal-integration.d.ts +126 -0
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +1 -0
- package/dist/sensor/constant-rate-temporal-integration.js +382 -0
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -0
- package/dist/sensor/dark-current.d.ts +169 -0
- package/dist/sensor/dark-current.d.ts.map +1 -0
- package/dist/sensor/dark-current.js +427 -0
- package/dist/sensor/dark-current.js.map +1 -0
- package/dist/sensor/environment-photo-signal.d.ts +123 -0
- package/dist/sensor/environment-photo-signal.d.ts.map +1 -0
- package/dist/sensor/environment-photo-signal.js +186 -0
- package/dist/sensor/environment-photo-signal.js.map +1 -0
- package/dist/sensor/eqe-electron-rate.d.ts +107 -0
- package/dist/sensor/eqe-electron-rate.d.ts.map +1 -0
- package/dist/sensor/eqe-electron-rate.js +561 -0
- package/dist/sensor/eqe-electron-rate.js.map +1 -0
- package/dist/sensor/eqe-local-exposure.d.ts +65 -0
- package/dist/sensor/eqe-local-exposure.d.ts.map +1 -0
- package/dist/sensor/eqe-local-exposure.js +84 -0
- package/dist/sensor/eqe-local-exposure.js.map +1 -0
- package/dist/sensor/eqe-temporal-exposure.d.ts +55 -0
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +1 -0
- package/dist/sensor/eqe-temporal-exposure.js +62 -0
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -0
- package/dist/sensor/exposure-window.d.ts +117 -0
- package/dist/sensor/exposure-window.d.ts.map +1 -0
- package/dist/sensor/exposure-window.js +305 -0
- package/dist/sensor/exposure-window.js.map +1 -0
- package/dist/sensor/iso-signal-chain.d.ts +148 -0
- package/dist/sensor/iso-signal-chain.d.ts.map +1 -0
- package/dist/sensor/iso-signal-chain.js +411 -0
- package/dist/sensor/iso-signal-chain.js.map +1 -0
- package/dist/sensor/local-exposure-binding.d.ts +87 -0
- package/dist/sensor/local-exposure-binding.d.ts.map +1 -0
- package/dist/sensor/local-exposure-binding.js +214 -0
- package/dist/sensor/local-exposure-binding.js.map +1 -0
- package/dist/sensor/optical-stack.d.ts +132 -0
- package/dist/sensor/optical-stack.d.ts.map +1 -0
- package/dist/sensor/optical-stack.js +303 -0
- package/dist/sensor/optical-stack.js.map +1 -0
- package/dist/sensor/photon-energy.d.ts +97 -0
- package/dist/sensor/photon-energy.d.ts.map +1 -0
- package/dist/sensor/photon-energy.js +390 -0
- package/dist/sensor/photon-energy.js.map +1 -0
- package/dist/sensor/physical-charge-capacity.d.ts +130 -0
- package/dist/sensor/physical-charge-capacity.d.ts.map +1 -0
- package/dist/sensor/physical-charge-capacity.js +345 -0
- package/dist/sensor/physical-charge-capacity.js.map +1 -0
- package/dist/sensor/pixel-pitch.d.ts +6 -0
- package/dist/sensor/pixel-pitch.d.ts.map +1 -1
- package/dist/sensor/pixel-pitch.js +6 -0
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +10 -0
- package/dist/sensor/radiometry-readiness.d.ts.map +1 -1
- package/dist/sensor/radiometry-readiness.js +10 -0
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +314 -0
- package/dist/sensor/raw-readout.d.ts.map +1 -0
- package/dist/sensor/raw-readout.js +914 -0
- package/dist/sensor/raw-readout.js.map +1 -0
- package/dist/sensor/raw-reconstruction.d.ts +170 -0
- package/dist/sensor/raw-reconstruction.d.ts.map +1 -0
- package/dist/sensor/raw-reconstruction.js +424 -0
- package/dist/sensor/raw-reconstruction.js.map +1 -0
- package/dist/sensor/readout-exposure-linkage.d.ts +123 -0
- package/dist/sensor/readout-exposure-linkage.d.ts.map +1 -0
- package/dist/sensor/readout-exposure-linkage.js +222 -0
- package/dist/sensor/readout-exposure-linkage.js.map +1 -0
- package/dist/sensor/readout-timing.d.ts +137 -0
- package/dist/sensor/readout-timing.d.ts.map +1 -0
- package/dist/sensor/readout-timing.js +243 -0
- package/dist/sensor/readout-timing.js.map +1 -0
- package/dist/sensor/response-application-compatibility.d.ts +136 -0
- package/dist/sensor/response-application-compatibility.d.ts.map +1 -0
- package/dist/sensor/response-application-compatibility.js +408 -0
- package/dist/sensor/response-application-compatibility.js.map +1 -0
- package/dist/sensor/response-operating-range.d.ts +173 -0
- package/dist/sensor/response-operating-range.d.ts.map +1 -0
- package/dist/sensor/response-operating-range.js +672 -0
- package/dist/sensor/response-operating-range.js.map +1 -0
- package/dist/sensor/responsivity-photocurrent.d.ts +158 -0
- package/dist/sensor/responsivity-photocurrent.d.ts.map +1 -0
- package/dist/sensor/responsivity-photocurrent.js +644 -0
- package/dist/sensor/responsivity-photocurrent.js.map +1 -0
- package/dist/sensor/sampling-aperture.d.ts +154 -0
- package/dist/sensor/sampling-aperture.d.ts.map +1 -0
- package/dist/sensor/sampling-aperture.js +388 -0
- package/dist/sensor/sampling-aperture.js.map +1 -0
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +45 -0
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +1 -0
- package/dist/sensor/scene-eqe-temporal-exposure.js +64 -0
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -0
- package/dist/sensor/sensor-geometry.d.ts +12 -0
- package/dist/sensor/sensor-geometry.d.ts.map +1 -1
- package/dist/sensor/sensor-geometry.js +12 -0
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +10 -0
- package/dist/sensor/signal-noise.d.ts.map +1 -1
- package/dist/sensor/signal-noise.js +10 -0
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +171 -0
- package/dist/sensor/spatial-sample-reduction.d.ts.map +1 -0
- package/dist/sensor/spatial-sample-reduction.js +345 -0
- package/dist/sensor/spatial-sample-reduction.js.map +1 -0
- package/dist/sensor/spatial-sampling-quadrature.d.ts +179 -0
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +1 -0
- package/dist/sensor/spatial-sampling-quadrature.js +224 -0
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -0
- package/dist/sensor/spatio-spectral-reduction.d.ts +187 -0
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +1 -0
- package/dist/sensor/spatio-spectral-reduction.js +373 -0
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -0
- package/dist/sensor/spectral-coverage.d.ts +24 -0
- package/dist/sensor/spectral-coverage.d.ts.map +1 -0
- package/dist/sensor/spectral-coverage.js +86 -0
- package/dist/sensor/spectral-coverage.js.map +1 -0
- package/dist/sensor/spectral-quadrature.d.ts +169 -0
- package/dist/sensor/spectral-quadrature.d.ts.map +1 -0
- package/dist/sensor/spectral-quadrature.js +542 -0
- package/dist/sensor/spectral-quadrature.js.map +1 -0
- package/dist/sensor/spectral-response.d.ts +192 -0
- package/dist/sensor/spectral-response.d.ts.map +1 -0
- package/dist/sensor/spectral-response.js +664 -0
- package/dist/sensor/spectral-response.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +15 -0
- package/dist/sensor/temporal-eqe-sum.d.ts.map +1 -0
- package/dist/sensor/temporal-eqe-sum.js +30 -0
- package/dist/sensor/temporal-eqe-sum.js.map +1 -0
- package/dist/sensor/temporal-photo-signal.d.ts +38 -0
- package/dist/sensor/temporal-photo-signal.d.ts.map +1 -0
- package/dist/sensor/temporal-photo-signal.js +110 -0
- package/dist/sensor/temporal-photo-signal.js.map +1 -0
- package/dist/sensor/temporal-sample-binding.d.ts +6 -0
- package/dist/sensor/temporal-sample-binding.d.ts.map +1 -0
- package/dist/sensor/temporal-sample-binding.js +32 -0
- package/dist/sensor/temporal-sample-binding.js.map +1 -0
- package/dist/simulation/poc-simulation.d.ts.map +1 -1
- package/dist/simulation/poc-simulation.js +34 -11
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +11 -0
- package/dist/stabilization/camera-shake.d.ts.map +1 -1
- package/dist/stabilization/camera-shake.js +11 -0
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +218 -0
- package/dist/stabilization/system.d.ts.map +1 -0
- package/dist/stabilization/system.js +695 -0
- package/dist/stabilization/system.js.map +1 -0
- package/docs/API_REFERENCE.md +2017 -0
- package/docs/API_STYLE.md +132 -0
- package/docs/ARCHITECTURE.md +150 -23
- package/docs/AUTOMATION_COORDINATION.md +190 -0
- package/docs/CAPTURE_COLOR.md +25 -0
- package/docs/CAPTURE_CORRECTED_SDR.md +25 -0
- package/docs/CAPTURE_EXPORT_METADATA.md +27 -0
- package/docs/CAPTURE_SDR.md +20 -0
- package/docs/DEVELOPERS.md +60 -0
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +69 -0
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +187 -0
- package/docs/EXPORT_ACCEPTANCE.md +133 -0
- package/docs/GENERIC_TIER_PRESETS.md +269 -0
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +141 -0
- package/docs/IMAGE_FORMATION.md +105 -9
- package/docs/LINEAR_CAPTURE_ENCODING.md +25 -0
- package/docs/MOTION_AND_SIGNAL.md +145 -1
- package/docs/NUMERICAL_CORRECTNESS.md +191 -0
- package/docs/PERFORMANCE_BASELINE.md +56 -0
- package/docs/PHOTOGRAPHIC_EXPORT.md +206 -0
- package/docs/PHYSICS_FOUNDATION.md +152 -5
- package/docs/POC_API.md +2 -0
- package/docs/POC_PROJECTION_REUSE.md +124 -0
- package/docs/PROCESSED_OUTPUT.md +157 -0
- package/docs/PRODUCTION_COMPOSITION.md +373 -0
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +131 -0
- package/docs/PROVENANCE.md +4 -0
- package/docs/PSF_FOUNDATION.md +110 -88
- package/docs/RAW_FRAME_ENVELOPE.md +56 -0
- package/docs/RAW_FRAME_RECONSTRUCTION.md +30 -0
- package/docs/RELEASE_1_0.md +65 -0
- package/docs/RELEASE_AUDIT.md +38 -0
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +298 -0
- package/docs/SCENE_SENSOR_QUADRATURE.md +98 -0
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +86 -0
- package/docs/SCIENTIFIC_ASSURANCE.md +280 -0
- package/docs/SCIENTIFIC_CONFORMANCE.md +83 -0
- package/docs/SDR_RENDERING.md +33 -0
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +86 -0
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +104 -0
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +74 -0
- package/docs/SENSOR_PSF_QUADRATURE.md +90 -0
- package/docs/SENSOR_RAW_FRAME.md +20 -0
- package/docs/SENSOR_RAW_PRODUCER.md +77 -0
- package/docs/SIGNAL_CONFORMANCE.md +23 -0
- package/docs/SIMULATED_CAPTURE.md +65 -0
- package/docs/STABILIZATION.md +160 -17
- package/docs/TEMPORAL_PHOTO_RAW.md +83 -0
- package/docs/TIER_ACCEPTANCE.md +129 -0
- package/docs/TIER_PRESET_ACCEPTANCE.md +59 -0
- package/docs/USAGE.md +5604 -331
- package/docs/V1_COMPOSITION_MAP.md +123 -0
- package/docs/V1_HELPER_REUSE_REVIEW.md +60 -0
- package/docs/V1_PERFORMANCE_DISPOSITION.md +88 -0
- package/docs/api/camera-equivalent-focal-length.md +53 -0
- package/docs/api/camera-field-of-view.md +119 -0
- package/docs/api/camera-projected-object-size.md +54 -0
- package/docs/api/capture-capture-export-metadata.md +107 -0
- package/docs/api/capture-environment-raw-producer.md +56 -0
- package/docs/api/capture-focus-control.md +419 -0
- package/docs/api/capture-linear-encoding.md +99 -0
- package/docs/api/capture-photographic-export.md +172 -0
- package/docs/api/capture-raw-frame-reconstruction.md +87 -0
- package/docs/api/capture-release-sequence.md +252 -0
- package/docs/api/capture-sensor-raw-frame.md +66 -0
- package/docs/api/capture-sensor-raw-producer.md +98 -0
- package/docs/api/capture-simulated-capture.md +179 -0
- package/docs/api/color-capture-color.md +122 -0
- package/docs/api/color-white-balance.md +386 -0
- package/docs/api/composition-image-formation-plan.md +825 -0
- package/docs/api/composition-plan-consumer.md +98 -0
- package/docs/api/core-calculation-result.md +220 -0
- package/docs/api/core-configuration-error.md +19 -0
- package/docs/api/core-image-formation.md +204 -0
- package/docs/api/core-scientific-assurance.md +214 -0
- package/docs/api/core-spectral-composition.md +268 -0
- package/docs/api/core-spectral.md +78 -0
- package/docs/api/core-validation.md +34 -0
- package/docs/api/core-version.md +14 -0
- package/docs/api/equipment-exposure-capabilities.md +270 -0
- package/docs/api/equipment-generic-tier-assets.md +82 -0
- package/docs/api/equipment-generic-tier-presets.md +103 -0
- package/docs/api/equipment-iso-capabilities.md +295 -0
- package/docs/api/equipment-metering-capabilities.md +126 -0
- package/docs/api/equipment-release-capabilities.md +91 -0
- package/docs/api/exports.json +5656 -0
- package/docs/api/exposure-exposure-duration-control.md +115 -0
- package/docs/api/exposure-exposure-mode-resolver.md +966 -0
- package/docs/api/exposure-exposure.md +150 -0
- package/docs/api/exposure-flash.md +327 -0
- package/docs/api/exposure-metering-scene-radiance.md +154 -0
- package/docs/api/exposure-metering-target.md +134 -0
- package/docs/api/exposure-metering-temporal.md +77 -0
- package/docs/api/exposure-metering.md +172 -0
- package/docs/api/exposure-program-line.md +64 -0
- package/docs/api/motion-camera-rotation.md +215 -0
- package/docs/api/motion-capture-rotation-inverse-mapping.md +128 -0
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +127 -0
- package/docs/api/motion-capture-rotation-trajectory.md +132 -0
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +171 -0
- package/docs/api/motion-extended-object-projection.md +312 -0
- package/docs/api/motion-projected-motion.md +60 -0
- package/docs/api/optics-aperture.md +69 -0
- package/docs/api/optics-circle-of-confusion.md +46 -0
- package/docs/api/optics-complex-pupil-psf.md +193 -0
- package/docs/api/optics-depth-of-field.md +92 -0
- package/docs/api/optics-diffraction.md +46 -0
- package/docs/api/optics-focus-breathing.md +119 -0
- package/docs/api/optics-focus-state.md +64 -0
- package/docs/api/optics-front-of-lens-filter.md +263 -0
- package/docs/api/optics-illumination-vignetting.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +225 -0
- package/docs/api/optics-lens-psf-profile.md +380 -0
- package/docs/api/optics-polygon-diffraction.md +68 -0
- package/docs/api/optics-profile-contract.md +47 -0
- package/docs/api/optics-psf-foundation.md +181 -0
- package/docs/api/optics-radial-distortion.md +194 -0
- package/docs/api/optics-scene-to-sensor-irradiance.md +371 -0
- package/docs/api/optics-scene-to-sensor-quadrature.md +78 -0
- package/docs/api/optics-sensor-environment-query.md +58 -0
- package/docs/api/optics-sensor-psf-quadrature.md +81 -0
- package/docs/api/optics-stray-light.md +109 -0
- package/docs/api/optics-thin-lens.md +53 -0
- package/docs/api/output-capture-corrected-sdr.md +71 -0
- package/docs/api/output-capture-geometry.md +500 -0
- package/docs/api/output-capture-sdr.md +69 -0
- package/docs/api/output-crop.md +47 -0
- package/docs/api/output-geometric-transforms.md +199 -0
- package/docs/api/output-lens-corrections.md +162 -0
- package/docs/api/output-sdr-rendering.md +122 -0
- package/docs/api/output-subject-framing-crop.md +59 -0
- package/docs/api/schema-camera.md +84 -0
- package/docs/api/schema-illumination-spectral.md +77 -0
- package/docs/api/schema-illumination-temporal.md +289 -0
- package/docs/api/schema-illumination.md +246 -0
- package/docs/api/schema-scene-radiance-temporal.md +215 -0
- package/docs/api/schema-scene-radiance.md +415 -0
- package/docs/api/schema-scene.md +105 -0
- package/docs/api/schema-validation.md +25 -0
- package/docs/api/sensor-accumulated-charge.md +273 -0
- package/docs/api/sensor-architecture.md +155 -0
- package/docs/api/sensor-camera-saturation-capacity.md +215 -0
- package/docs/api/sensor-capture-color-sampling-binding.md +323 -0
- package/docs/api/sensor-capture-mode-timing.md +123 -0
- package/docs/api/sensor-capture-mode.md +321 -0
- package/docs/api/sensor-color-sampling.md +228 -0
- package/docs/api/sensor-constant-rate-temporal-integration.md +152 -0
- package/docs/api/sensor-dark-current.md +227 -0
- package/docs/api/sensor-environment-photo-signal.md +77 -0
- package/docs/api/sensor-eqe-electron-rate.md +166 -0
- package/docs/api/sensor-eqe-local-exposure.md +68 -0
- package/docs/api/sensor-eqe-temporal-exposure.md +73 -0
- package/docs/api/sensor-exposure-window.md +183 -0
- package/docs/api/sensor-iso-signal-chain.md +264 -0
- package/docs/api/sensor-local-exposure-binding.md +126 -0
- package/docs/api/sensor-optical-stack.md +211 -0
- package/docs/api/sensor-photon-energy.md +149 -0
- package/docs/api/sensor-physical-charge-capacity.md +196 -0
- package/docs/api/sensor-pixel-pitch.md +41 -0
- package/docs/api/sensor-radiometry-readiness.md +240 -0
- package/docs/api/sensor-raw-readout.md +499 -0
- package/docs/api/sensor-raw-reconstruction.md +260 -0
- package/docs/api/sensor-readout-exposure-linkage.md +172 -0
- package/docs/api/sensor-readout-timing.md +209 -0
- package/docs/api/sensor-response-application-compatibility.md +256 -0
- package/docs/api/sensor-response-operating-range.md +293 -0
- package/docs/api/sensor-responsivity-photocurrent.md +245 -0
- package/docs/api/sensor-sampling-aperture.md +221 -0
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +56 -0
- package/docs/api/sensor-sensor-geometry.md +143 -0
- package/docs/api/sensor-signal-noise.md +75 -0
- package/docs/api/sensor-spatial-sample-reduction.md +186 -0
- package/docs/api/sensor-spatial-sampling-quadrature.md +188 -0
- package/docs/api/sensor-spatio-spectral-reduction.md +217 -0
- package/docs/api/sensor-spectral-coverage.md +33 -0
- package/docs/api/sensor-spectral-quadrature.md +183 -0
- package/docs/api/sensor-spectral-response.md +291 -0
- package/docs/api/sensor-temporal-photo-signal.md +62 -0
- package/docs/api/simulation-poc-simulation.md +364 -0
- package/docs/api/stabilization-camera-shake.md +71 -0
- package/docs/api/stabilization-system.md +442 -0
- package/docs/benchmarks/2026-10-01-main-baseline.json +694 -0
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +2190 -0
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +2423 -0
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +210 -0
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +187 -0
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +756 -0
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +711 -0
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +711 -0
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +885 -0
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +868 -0
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +868 -0
- package/docs/examples/production-capture.mjs +34 -0
- package/docs/examples/production-request.json +4613 -0
- package/docs/examples/quick-start.mjs +12 -0
- package/docs/validation/documentation-fragments.json +212 -0
- package/docs/validation/release-audit-inventory.json +1306 -0
- package/docs/validation/tier-acceptance-report-v1.json +2538 -0
- package/package.json +18 -4
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { parseGenericBodyExposureCapabilityProfile, parseGenericLensExposureCapabilityProfile } from "./exposure-capabilities.js";
|
|
3
|
+
import { parseIsoCapabilityProfile } from "./iso-capabilities.js";
|
|
4
|
+
import { parseGenericReleaseCapabilityProfile } from "./release-capabilities.js";
|
|
5
|
+
import { parseFocusControlProfile } from "../capture/focus-control.js";
|
|
6
|
+
import { parseWhiteBalanceProfile } from "../color/white-balance.js";
|
|
7
|
+
import { parseStabilizationSystemProfile } from "../stabilization/system.js";
|
|
8
|
+
import { parseSensorReadoutConversionProfile } from "../sensor/raw-readout.js";
|
|
9
|
+
import { parseGenericIsoSignalChainProfile } from "../sensor/iso-signal-chain.js";
|
|
10
|
+
import { parseExposureMeteringProfile } from "../exposure/metering.js";
|
|
11
|
+
import { parseGenericBodyMeteringCapabilityProfile } from "./metering-capabilities.js";
|
|
12
|
+
import { parseFlashSyncCapabilityProfile } from "../exposure/flash.js";
|
|
13
|
+
const evidence = [{ sourceOrigin: "photivra", sourceReference: "photivra:generic-tier-assets-v1",
|
|
14
|
+
reuseStatus: "photivra-owned" }];
|
|
15
|
+
const limitations = ["Synthetic educational design values; no named camera/lens calibration or population ranking."];
|
|
16
|
+
const fact = (value) => ({ value, evidence });
|
|
17
|
+
const version = "1.0.0";
|
|
18
|
+
const disk = [0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0];
|
|
19
|
+
const clipped = [0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0];
|
|
20
|
+
const clippedMore = [0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0];
|
|
21
|
+
const near = [0, 0, .12, 0, 0, 0, .06, 0, .06, 0, .12, 0, -.04, 0, .12, 0, .06, 0, .06, 0, 0, 0, .12, 0, 0];
|
|
22
|
+
const flat = Array(25).fill(0);
|
|
23
|
+
const far = near.map((v) => -v);
|
|
24
|
+
/** Data construction only: tier labels never enter downstream scientific equations. */
|
|
25
|
+
function bodyAssets(id, isoMax, cadence, frames, readNoise, dataReadoutSeconds, gain, maxAngle, continuousAf, advancedPolicies) {
|
|
26
|
+
const isoValues = [100, 200, 400, 800, 1600, 3200, 6400, 12800, 25600].filter((v) => v <= isoMax);
|
|
27
|
+
const exposure = parseGenericBodyExposureCapabilityProfile({ schemaVersion: "0.1.0", profileId: id + ":exposure", profileVersion: version,
|
|
28
|
+
scientificStatus: "approximation", evidence, shutter: { durationSecondsRange: fact({ minimum: 1 / 8000, maximum: 30 }), settingGrid: { kind: "continuous-within-range" } },
|
|
29
|
+
iso: { range: fact({ minimum: 100, maximum: isoMax }), settingGrid: { kind: "discrete-values", values: fact(isoValues) }, autoIso: fact("supported") } });
|
|
30
|
+
const iso = parseIsoCapabilityProfile({ schemaVersion: "0.1.0", profileId: id + ":iso", profileVersion: version,
|
|
31
|
+
capabilityMeaning: "reported-exposure-index-capability-not-physical-gain", standard: { exposureIndexRange: { minimum: 100, maximum: isoMax },
|
|
32
|
+
settingGrid: { kind: "discrete-values", values: isoValues } }, expandedSettings: [], autoIso: { availability: "supported", standardExposureIndexRange: { minimum: 100, maximum: isoMax }, evidence },
|
|
33
|
+
captureModePolicies: [], evidence });
|
|
34
|
+
const readout = ["red", "green", "blue"].map((channelId) => ({ assetId: id + ":readout:" + channelId, assetVersion: version,
|
|
35
|
+
profile: parseSensorReadoutConversionProfile({ schemaVersion: "0.1.0", profileId: id + ":readout", colorSamplingProfileId: "photivra-generic-bayer", channelId,
|
|
36
|
+
regimeSelectionOwnedBy: "explicit-upstream-camera-state-not-inferred-from-iso", evidence,
|
|
37
|
+
regimes: [{ regimeId: "base", scientificStatus: "approximation", systemConversionGainElectronsPerCode: fact(1),
|
|
38
|
+
preAdcSaturationElectronEquivalent: fact(20000), readNoiseComponents: [{ componentId: "electronic", rmsElectrons: fact(readNoise), evidence }],
|
|
39
|
+
adc: { bitDepth: 16, blackLevelCode: 512, digitalSaturationCode: 65535, transfer: "uniform-round-half-up" }, evidence, limitations },
|
|
40
|
+
{ regimeId: "high", scientificStatus: "approximation", systemConversionGainElectronsPerCode: fact(.25),
|
|
41
|
+
preAdcSaturationElectronEquivalent: fact(12000), readNoiseComponents: [{ componentId: "electronic", rmsElectrons: fact(readNoise * .75), evidence }],
|
|
42
|
+
adc: { bitDepth: 16, blackLevelCode: 512, digitalSaturationCode: 65535, transfer: "uniform-round-half-up" }, evidence, limitations }] }) }));
|
|
43
|
+
const signalChain = parseGenericIsoSignalChainProfile({ schemaVersion: "0.1.0", profileId: id + ":signal-chain", profileVersion: version,
|
|
44
|
+
scientificStatus: "approximation", isoCapabilityProfileId: iso.profileId, readoutProfileId: id + ":readout",
|
|
45
|
+
behaviorMeaning: "iso-state-selects-explicit-readout-regime-not-noise-equation", captureModeBindings: [{ captureModeId: "native-still",
|
|
46
|
+
standardRegimeBands: [{ minimumExposureIndex: 100, maximumExposureIndex: 400, readoutRegimeId: "base" },
|
|
47
|
+
{ minimumExposureIndex: 800, maximumExposureIndex: isoMax, readoutRegimeId: "high" }], expandedRegimeBindings: [], evidence }],
|
|
48
|
+
photonShotNoiseOwnedUpstream: true, processedImageBehaviorIncluded: false, fixedPatternNoiseModeled: false, lowSignalColorDegradationModeled: false,
|
|
49
|
+
evidence, limitations });
|
|
50
|
+
const release = parseGenericReleaseCapabilityProfile({ schemaVersion: "0.1.0", profileId: id + ":release", profileVersion: version,
|
|
51
|
+
scientificStatus: "approximation", evidence, supportedDriveModes: fact(["single", "burst", "self-timer"]), maximumLogicalFramesPerSequence: fact(frames),
|
|
52
|
+
maximumCadenceFps: fact(cadence), minimumInterFrameGapSeconds: fact(0), overlappingOrdinaryStillExposures: false,
|
|
53
|
+
exposureBracketing: { availability: fact("supported"), supportedAxes: ["shutter", "iso"] }, focusBracketing: { availability: fact("unsupported") } });
|
|
54
|
+
const focus = parseFocusControlProfile({ schemaVersion: "0.1.0", profileId: id + ":focus", profileVersion: version, scientificStatus: "approximation",
|
|
55
|
+
supportedModes: continuousAf ? ["manual", "single-af", "continuous-af"] : ["manual", "single-af"], actuator: { kind: "ideal-instantaneous", evidence },
|
|
56
|
+
continuousTargetLossPolicy: "hold-last-focus-require-explicit-reacquisition", supportedReleasePriorities: ["focus-priority", "release-priority", "balanced"],
|
|
57
|
+
evidence, limitations: [...limitations, "AF actuator speed and subject recognition are not tier performance claims."] });
|
|
58
|
+
const stabilization = parseStabilizationSystemProfile({ schemaVersion: "0.1.0", profileId: id + ":stabilization", profileVersion: version,
|
|
59
|
+
profileKind: "generic-synthetic", scientificStatus: "approximation", architecture: "sensor-shift", captureKind: "still",
|
|
60
|
+
axisResponses: ["pitch", "yaw", "roll"].map((axis) => ({ axis, correctionGain: fact(gain), latencySeconds: fact(.001), maximumCorrectionAngleRad: fact(maxAngle) })),
|
|
61
|
+
panningPolicy: { kind: "none" }, controlTransientModeled: false, spontaneousDriftModeled: false, cameraTranslationCorrectionModeled: false,
|
|
62
|
+
digitalStabilizationIncluded: false, supportPolicyIncluded: false, stopRatingUsedAsDynamicResponse: false, evidence, limitations });
|
|
63
|
+
const whiteBalance = parseWhiteBalanceProfile({ schemaVersion: "0.1.0", profileId: id + ":white-balance", profileVersion: version,
|
|
64
|
+
scientificStatus: "approximation", inputDomain: "relative-pre-wb-camera-linear-rgb", presets: [{ presetId: "neutral", label: "Neutral reference",
|
|
65
|
+
channelGains: fact({ red: 1, green: 1, blue: 1 }) }], awbPolicies: [
|
|
66
|
+
{ policyId: "neutral-priority", intent: "neutral-priority", correctionStrength: fact(1) },
|
|
67
|
+
...(advancedPolicies ? [{ policyId: "ambience", intent: "ambience-preserving", correctionStrength: fact(.5) }] : [])
|
|
68
|
+
], evidence, limitations });
|
|
69
|
+
const metering = [{ kind: "multi-zone-uniform" }, ...(advancedPolicies ? [{ kind: "highlight-weighted", minimumWeightFraction: .2, exponent: 2 }] : [])]
|
|
70
|
+
.map((policy) => ({ assetId: id + ":meter:" + policy.kind, assetVersion: version,
|
|
71
|
+
profile: parseExposureMeteringProfile({ schemaVersion: "0.1.0", profileId: id + ":meter:" + policy.kind, scientificStatus: "approximation",
|
|
72
|
+
inputDomain: "relative-pre-exposure-linear-signal", captureRegion: "oriented-active-capture", policy,
|
|
73
|
+
target: { kind: "relative-signal-reference", targetRelativeSignal: .18, evidence }, evidence,
|
|
74
|
+
limitations: [...limitations, "0.18 is a declared target policy, not universal scene/camera truth."] }) }));
|
|
75
|
+
const meteringCapabilities = parseGenericBodyMeteringCapabilityProfile({ schemaVersion: "0.1.0", profileId: id + ":metering-capabilities", profileVersion: version,
|
|
76
|
+
scientificStatus: "approximation", evidence, supportedMeteringProfiles: metering.map((m) => ({ meteringProfileId: m.profile.profileId, policyKind: m.profile.policy.kind, evidence })),
|
|
77
|
+
spotFocusPointLinkage: { availability: "unsupported", evidence } });
|
|
78
|
+
const timingId = id + ":data-readout";
|
|
79
|
+
return { exposure, iso, signalChain, readout, release, focus, stabilization, whiteBalance, metering, meteringCapabilities,
|
|
80
|
+
readoutTiming: { assetId: timingId, assetVersion: version, profile: { readoutMode: "global", captureReadoutDurationSeconds: {
|
|
81
|
+
value: dataReadoutSeconds, unit: "s", evidence
|
|
82
|
+
} } },
|
|
83
|
+
flashSync: parseFlashSyncCapabilityProfile({ schemaVersion: "0.1.0", profileId: id + ":flash-sync", profileVersion: version,
|
|
84
|
+
captureModeId: "native-still", timingProfileId: timingId, supportedOrdinarySyncModes: ["front-curtain", "rear-curtain"],
|
|
85
|
+
highSpeedSyncSupported: false, ordinarySyncRequiresWholeActiveFrameSimultaneouslyExposed: true, evidence, limitations }) };
|
|
86
|
+
}
|
|
87
|
+
function lensAssets(id, r) {
|
|
88
|
+
return { form: "prime", exposure: parseGenericLensExposureCapabilityProfile({ schemaVersion: "0.1.0", profileId: id + ":exposure", profileVersion: version,
|
|
89
|
+
scientificStatus: "approximation", evidence, focalLengthMmRange: fact({ minimum: 50, maximum: 50 }), aperture: { widestAvailableFNumber: {
|
|
90
|
+
kind: "constant", fNumber: fact(4)
|
|
91
|
+
}, narrowestAvailableFNumber: fact(16), settingGrid: { kind: "continuous-within-range" } } }),
|
|
92
|
+
matchedReference: r, profileReferences: ["radial", "lateral-ca", "vignetting", "breathing", "transmission", "pupil", "stray", "correction"]
|
|
93
|
+
.map((role) => ({ profileId: id + ":" + role, profileVersion: version })),
|
|
94
|
+
limitations: [...limitations, "Optical reference response is limited to 50 mm, f/4, focus 5 m and explicit field/defocus/wavelength slices; capabilities do not authorize extrapolation.",
|
|
95
|
+
"The initial prime has no OIS; body stabilization is separate."] };
|
|
96
|
+
}
|
|
97
|
+
const common = { focalLengthMm: 50, aperture: 4, focusDistanceM: 5, wavelengthNm: 550,
|
|
98
|
+
normalizationRadiusMm: Math.hypot(18, 12), correctionCaFraction: .8 };
|
|
99
|
+
export const GENERIC_TIER_ASSETS = [
|
|
100
|
+
{ tier: "consumer", label: "Consumer", presetId: "photivra-consumer", presetVersion: version, scientificStatus: "approximation", evidence,
|
|
101
|
+
body: bodyAssets("photivra-consumer-body", 6400, 4, 8, 6, .03, .35, .005, false, false),
|
|
102
|
+
lens: lensAssets("photivra-consumer-prime", { ...common, distortionK1: -.06, lateralCaK1Offset: .008, vignettingR2: -.5,
|
|
103
|
+
breathingProjectionScale: 1.03, transmission: .75, correctionGainStrength: .8, ghostPowerFraction: .006, veilPowerFraction: .012,
|
|
104
|
+
pupilAmplitudeByField: [disk, clipped, clippedMore], pupilOpdMicrometersByDefocus: [near, flat, far], pupilThroughputByField: [1, .85, .65] }),
|
|
105
|
+
tradeoffs: ["Limited continuous AF; heavier digital correction and edge pupil clipping in matched reference."] },
|
|
106
|
+
{ tier: "prosumer", label: "Prosumer", presetId: "photivra-prosumer", presetVersion: version, scientificStatus: "approximation", evidence,
|
|
107
|
+
body: bodyAssets("photivra-prosumer-body", 12800, 8, 16, 3, .015, .65, .01, true, true),
|
|
108
|
+
lens: lensAssets("photivra-prosumer-prime", { ...common, distortionK1: -.025, lateralCaK1Offset: .004, vignettingR2: -.25,
|
|
109
|
+
breathingProjectionScale: 1.015, transmission: .85, correctionGainStrength: .6, ghostPowerFraction: .003, veilPowerFraction: .006,
|
|
110
|
+
pupilAmplitudeByField: [disk, disk, clipped], pupilOpdMicrometersByDefocus: [near.map((v) => v * .7), flat, far.map((v) => v * .7)], pupilThroughputByField: [1, .95, .85] }),
|
|
111
|
+
tradeoffs: ["Lower matched-reference peripheral gain/noise amplification than Professional; not universally inferior."] },
|
|
112
|
+
{ tier: "professional", label: "Professional", presetId: "photivra-professional", presetVersion: version, scientificStatus: "approximation", evidence,
|
|
113
|
+
body: bodyAssets("photivra-professional-body", 25600, 12, 24, 2, .008, .85, .02, true, true),
|
|
114
|
+
lens: lensAssets("photivra-professional-prime", { ...common, distortionK1: -.01, lateralCaK1Offset: .002, vignettingR2: -.35,
|
|
115
|
+
breathingProjectionScale: 1.005, transmission: .9, correctionGainStrength: .8, ghostPowerFraction: .001, veilPowerFraction: .002,
|
|
116
|
+
pupilAmplitudeByField: [disk, disk, disk], pupilOpdMicrometersByDefocus: [near.map((v) => v * .9), flat, far.map((v) => v * .6)], pupilThroughputByField: [1, .98, .95] }),
|
|
117
|
+
tradeoffs: ["Less edge clipping/stray light, with greater f/4 falloff/gain cost than Prosumer and asymmetric near/far wavefront character."] }
|
|
118
|
+
];
|
|
119
|
+
//# sourceMappingURL=generic-tier-assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-tier-assets.js","sourceRoot":"","sources":["../../src/equipment/generic-tier-assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type OpticalProfileState } from "../optics/profile-contract.js";
|
|
2
|
+
import { type GenericEquipmentTier, type GenericEquipmentTierPreset } from "./generic-tier-assets.js";
|
|
3
|
+
import { type GenericLensCorrectionProfile } from "../output/lens-corrections.js";
|
|
4
|
+
import { type LensStrayLightProfile } from "../optics/stray-light.js";
|
|
5
|
+
import { type LensComplexPupilProfile } from "../optics/complex-pupil-psf.js";
|
|
6
|
+
import { type SceneToSensorIrradianceProfile } from "../optics/scene-to-sensor-irradiance.js";
|
|
7
|
+
import type { RadialDistortionProfile } from "../optics/radial-distortion.js";
|
|
8
|
+
import type { LateralChromaticAberrationProfile } from "../optics/lateral-chromatic-aberration.js";
|
|
9
|
+
import type { IlluminationVignettingProfile } from "../optics/illumination-vignetting.js";
|
|
10
|
+
export declare const GENERIC_EQUIPMENT_TIER_PRESET_VERSION: "1.0.0";
|
|
11
|
+
export declare const GENERIC_EQUIPMENT_TIERS: readonly ["consumer", "prosumer", "professional"];
|
|
12
|
+
export interface GenericEquipmentTierProfileReference {
|
|
13
|
+
profileId: string;
|
|
14
|
+
profileVersion: string;
|
|
15
|
+
}
|
|
16
|
+
export interface GenericEquipmentTierSelection {
|
|
17
|
+
schemaVersion: "0.1.0";
|
|
18
|
+
presetVersion: typeof GENERIC_EQUIPMENT_TIER_PRESET_VERSION;
|
|
19
|
+
bodyTier: GenericEquipmentTier;
|
|
20
|
+
lensTier: GenericEquipmentTier;
|
|
21
|
+
bodyPresetId: string;
|
|
22
|
+
lensPresetId: string;
|
|
23
|
+
profileReferences: readonly GenericEquipmentTierProfileReference[];
|
|
24
|
+
sensorFormatSelectedByTier: false;
|
|
25
|
+
scientificTierMultiplierApplied: false;
|
|
26
|
+
}
|
|
27
|
+
export interface ResolvedGenericTierLensProfiles {
|
|
28
|
+
selection: GenericEquipmentTierSelection;
|
|
29
|
+
state: OpticalProfileState;
|
|
30
|
+
radial: RadialDistortionProfile;
|
|
31
|
+
lateralCa: LateralChromaticAberrationProfile;
|
|
32
|
+
vignetting: IlluminationVignettingProfile;
|
|
33
|
+
breathingProjectionScale: number;
|
|
34
|
+
transmission: SceneToSensorIrradianceProfile;
|
|
35
|
+
pupils: readonly LensComplexPupilProfile[];
|
|
36
|
+
stray: LensStrayLightProfile;
|
|
37
|
+
correction: GenericLensCorrectionProfile;
|
|
38
|
+
scientificStatus: "approximation";
|
|
39
|
+
}
|
|
40
|
+
/** Exact-version catalog; no hidden latest alias and no sensor-size default. */
|
|
41
|
+
export declare function resolveGenericEquipmentTierCatalog(input: {
|
|
42
|
+
presetVersion: string;
|
|
43
|
+
}): readonly GenericEquipmentTierPreset[];
|
|
44
|
+
/** Match lens tier by default; cross-tier combinations remain normal supported selections. */
|
|
45
|
+
export declare function createGenericEquipmentTierSelection(input: {
|
|
46
|
+
presetVersion: string;
|
|
47
|
+
bodyTier: GenericEquipmentTier;
|
|
48
|
+
lensTier?: GenericEquipmentTier;
|
|
49
|
+
}): GenericEquipmentTierSelection;
|
|
50
|
+
/** Reject stale/missing/retuned profile versions on saved simulations rather than selecting today's defaults. */
|
|
51
|
+
export declare function parseGenericEquipmentTierSelection(value: unknown): GenericEquipmentTierSelection;
|
|
52
|
+
/** Bind the finite matched-reference optical slice to one exact generic selected state, without extrapolation. */
|
|
53
|
+
export declare function resolveGenericEquipmentTierLensProfiles(input: {
|
|
54
|
+
selection: GenericEquipmentTierSelection;
|
|
55
|
+
state: OpticalProfileState;
|
|
56
|
+
}): ResolvedGenericTierLensProfiles;
|
|
57
|
+
//# sourceMappingURL=generic-tier-presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-tier-presets.d.ts","sourceRoot":"","sources":["../../src/equipment/generic-tier-presets.ts"],"names":[],"mappings":"AAYA,OAAO,EAA4C,KAAK,mBAAmB,EAA+B,MAAM,+BAA+B,CAAC;AAChJ,OAAO,EAAuB,KAAK,oBAAoB,EAAE,KAAK,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAE3H,OAAO,EAAqC,KAAK,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AACrH,OAAO,EAA8B,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAClG,OAAO,EAAgC,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC5G,OAAO,EAAuC,KAAK,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACnI,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAE1F,eAAO,MAAM,qCAAqC,EAAG,OAAgB,CAAC;AACtE,eAAO,MAAM,uBAAuB,mDAAmE,CAAC;AACxG,MAAM,WAAW,oCAAoC;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE;AACnG,MAAM,WAAW,6BAA6B;IAC5C,aAAa,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,qCAAqC,CAAC;IACpF,QAAQ,EAAE,oBAAoB,CAAC;IAAC,QAAQ,EAAE,oBAAoB,CAAC;IAC/D,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAC3C,iBAAiB,EAAE,SAAS,oCAAoC,EAAE,CAAC;IACnE,0BAA0B,EAAE,KAAK,CAAC;IAAC,+BAA+B,EAAE,KAAK,CAAC;CAC3E;AACD,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,6BAA6B,CAAC;IACzC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAS,EAAE,iCAAiC,CAAC;IAC7C,UAAU,EAAE,6BAA6B,CAAC;IAC1C,wBAAwB,EAAE,MAAM,CAAC;IACjC,YAAY,EAAE,8BAA8B,CAAC;IAC7C,MAAM,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC3C,KAAK,EAAE,qBAAqB,CAAC;IAC7B,UAAU,EAAE,4BAA4B,CAAC;IACzC,gBAAgB,EAAE,eAAe,CAAC;CACnC;AAKD,gFAAgF;AAChF,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,0BAA0B,EAAE,CAI1H;AAOD,8FAA8F;AAC9F,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACxF,GAAG,6BAA6B,CAShC;AACD,iHAAiH;AACjH,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,OAAO,GAAG,6BAA6B,CAahG;AACD,kHAAkH;AAClH,wBAAgB,uCAAuC,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,6BAA6B,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,GAAG,+BAA+B,CAoDxK"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Module boundary and integration notes.
|
|
4
|
+
* Exact-version catalog; no hidden latest alias and no sensor-size default.
|
|
5
|
+
* Match lens tier by default; cross-tier combinations remain normal supported selections.
|
|
6
|
+
* @see docs/GENERIC_TIER_PRESETS.md for equations, coordinate/unit conventions, blockers and support
|
|
7
|
+
* limits.
|
|
8
|
+
*/
|
|
9
|
+
import { freezeOwnedData } from "../core/owned-data.js";
|
|
10
|
+
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
11
|
+
import { choice, record, parseOpticalProfileState } from "../optics/profile-contract.js";
|
|
12
|
+
import { GENERIC_TIER_ASSETS } from "./generic-tier-assets.js";
|
|
13
|
+
import { resolveGenericEquipmentExposureCapabilities } from "./exposure-capabilities.js";
|
|
14
|
+
import { parseGenericLensCorrectionProfile } from "../output/lens-corrections.js";
|
|
15
|
+
import { parseLensStrayLightProfile } from "../optics/stray-light.js";
|
|
16
|
+
import { parseLensComplexPupilProfile } from "../optics/complex-pupil-psf.js";
|
|
17
|
+
import { parseSceneToSensorIrradianceProfile } from "../optics/scene-to-sensor-irradiance.js";
|
|
18
|
+
export const GENERIC_EQUIPMENT_TIER_PRESET_VERSION = "1.0.0";
|
|
19
|
+
export const GENERIC_EQUIPMENT_TIERS = Object.freeze(["consumer", "prosumer", "professional"]);
|
|
20
|
+
const catalog = freezeOwnedData(GENERIC_TIER_ASSETS);
|
|
21
|
+
function preset(tier) {
|
|
22
|
+
return catalog.find((p) => p.tier === tier);
|
|
23
|
+
}
|
|
24
|
+
/** Exact-version catalog; no hidden latest alias and no sensor-size default. */
|
|
25
|
+
export function resolveGenericEquipmentTierCatalog(input) {
|
|
26
|
+
const r = record(input, ["presetVersion"]);
|
|
27
|
+
if (r.presetVersion !== GENERIC_EQUIPMENT_TIER_PRESET_VERSION)
|
|
28
|
+
throw new InvalidConfigurationError("Unknown equipment preset version; historical definitions may not silently fall back.");
|
|
29
|
+
return catalog;
|
|
30
|
+
}
|
|
31
|
+
function bodyReferences(p) {
|
|
32
|
+
const b = p.body;
|
|
33
|
+
return [b.exposure, b.iso, b.signalChain, b.release, b.focus, b.stabilization, b.whiteBalance, b.meteringCapabilities, b.flashSync]
|
|
34
|
+
.map((profile) => ({ profileId: profile.profileId, profileVersion: profile.profileVersion }))
|
|
35
|
+
.concat([...b.readout, b.readoutTiming, ...b.metering].map((a) => ({ profileId: a.assetId, profileVersion: a.assetVersion })));
|
|
36
|
+
}
|
|
37
|
+
/** Match lens tier by default; cross-tier combinations remain normal supported selections. */
|
|
38
|
+
export function createGenericEquipmentTierSelection(input) {
|
|
39
|
+
const r = record(input, ["presetVersion", "bodyTier", "lensTier"]);
|
|
40
|
+
resolveGenericEquipmentTierCatalog({ presetVersion: r.presetVersion });
|
|
41
|
+
const bodyTier = choice(r.bodyTier, GENERIC_EQUIPMENT_TIERS), lensTier = choice(r.lensTier === undefined ? bodyTier : r.lensTier, GENERIC_EQUIPMENT_TIERS);
|
|
42
|
+
const body = preset(bodyTier), lens = preset(lensTier);
|
|
43
|
+
return freezeOwnedData({ schemaVersion: "0.1.0", presetVersion: GENERIC_EQUIPMENT_TIER_PRESET_VERSION, bodyTier, lensTier,
|
|
44
|
+
bodyPresetId: body.presetId + ":body", lensPresetId: lens.presetId + ":lens",
|
|
45
|
+
profileReferences: [...bodyReferences(body), { profileId: lens.lens.exposure.profileId, profileVersion: lens.lens.exposure.profileVersion }, ...lens.lens.profileReferences],
|
|
46
|
+
sensorFormatSelectedByTier: false, scientificTierMultiplierApplied: false });
|
|
47
|
+
}
|
|
48
|
+
/** Reject stale/missing/retuned profile versions on saved simulations rather than selecting today's defaults. */
|
|
49
|
+
export function parseGenericEquipmentTierSelection(value) {
|
|
50
|
+
const r = record(value, ["schemaVersion", "presetVersion", "bodyTier", "lensTier", "bodyPresetId", "lensPresetId", "profileReferences",
|
|
51
|
+
"sensorFormatSelectedByTier", "scientificTierMultiplierApplied"]);
|
|
52
|
+
const expected = createGenericEquipmentTierSelection({ presetVersion: r.presetVersion,
|
|
53
|
+
bodyTier: r.bodyTier, lensTier: choice(r.lensTier, GENERIC_EQUIPMENT_TIERS) });
|
|
54
|
+
if (r.schemaVersion !== expected.schemaVersion || r.bodyPresetId !== expected.bodyPresetId || r.lensPresetId !== expected.lensPresetId ||
|
|
55
|
+
r.sensorFormatSelectedByTier !== false || r.scientificTierMultiplierApplied !== false || !Array.isArray(r.profileReferences) ||
|
|
56
|
+
r.profileReferences.length !== expected.profileReferences.length)
|
|
57
|
+
throw new InvalidConfigurationError("Saved equipment selection differs from its exact preset manifest.");
|
|
58
|
+
for (let i = 0; i < expected.profileReferences.length; i++) {
|
|
59
|
+
const ref = record(r.profileReferences[i], ["profileId", "profileVersion"]), actual = expected.profileReferences[i];
|
|
60
|
+
if (ref.profileId !== actual.profileId || ref.profileVersion !== actual.profileVersion)
|
|
61
|
+
throw new InvalidConfigurationError("Saved equipment profile reference drift.");
|
|
62
|
+
}
|
|
63
|
+
return expected;
|
|
64
|
+
}
|
|
65
|
+
/** Bind the finite matched-reference optical slice to one exact generic selected state, without extrapolation. */
|
|
66
|
+
export function resolveGenericEquipmentTierLensProfiles(input) {
|
|
67
|
+
const request = record(input, ["selection", "state"]), selection = parseGenericEquipmentTierSelection(request.selection), state = parseOpticalProfileState(request.state);
|
|
68
|
+
const b = preset(selection.bodyTier), l = preset(selection.lensTier), a = l.lens.matchedReference;
|
|
69
|
+
if (state.bodyId !== b.body.exposure.profileId.replace(/:exposure$/, "") || state.bodyVersion !== selection.presetVersion ||
|
|
70
|
+
state.lensId !== l.lens.exposure.profileId.replace(/:exposure$/, "") || state.lensVersion !== selection.presetVersion ||
|
|
71
|
+
state.focalLengthMm !== a.focalLengthMm || state.aperture !== a.aperture || state.focusDistanceM !== a.focusDistanceM ||
|
|
72
|
+
state.captureMode !== "still" || state.stabilizationMode !== "off")
|
|
73
|
+
throw new InvalidConfigurationError("No optical reference slice for this exact generic system/acquisition state.");
|
|
74
|
+
resolveGenericEquipmentExposureCapabilities({ bodyProfile: b.body.exposure, lensProfile: l.lens.exposure, selectedFocalLengthMm: state.focalLengthMm });
|
|
75
|
+
const id = state.lensId, version = state.lensVersion, evidence = l.evidence;
|
|
76
|
+
const opticalEvidence = { kind: "generic-parametric", basis: "Photivra-owned educational tier design values, not measured calibration.",
|
|
77
|
+
residualNote: "Finite matched-reference approximation; no branded signature or aggregate physical error bound.", sources: evidence };
|
|
78
|
+
const coeff = (k1) => ({ normalizationRadiusMm: a.normalizationRadiusMm, maximumNormalizedRadius: 1.1,
|
|
79
|
+
coefficients: { k1, k2: 0, k3: 0 } });
|
|
80
|
+
const radial = coeff(a.distortionK1), lateralCa = { normalizationRadiusMm: a.normalizationRadiusMm,
|
|
81
|
+
maximumNormalizedRadius: 1.1, baseDistortionCoefficients: radial.coefficients,
|
|
82
|
+
redCoefficientOffset: { k1: a.lateralCaK1Offset, k2: 0, k3: 0 }, blueCoefficientOffset: { k1: -a.lateralCaK1Offset, k2: 0, k3: 0 } };
|
|
83
|
+
const vignetting = { normalizationRadiusMm: a.normalizationRadiusMm, maximumNormalizedRadius: 1.1,
|
|
84
|
+
coefficients: { r2: a.vignettingR2, r4: 0, r6: 0 } };
|
|
85
|
+
const identity = { version, domain: "reconstructed-linear", availability: "toggle", defaultEnabled: true,
|
|
86
|
+
dependencies: [], requiredByStabilizationModes: [], residualNote: opticalEvidence.residualNote };
|
|
87
|
+
const correction = parseGenericLensCorrectionProfile({ schemaVersion: "0.1.0", id: id + ":correction", version, state, evidence: opticalEvidence,
|
|
88
|
+
components: [{ ...identity, id: "geometry", kind: "geometry", transform: { id: id + ":radial-map", version,
|
|
89
|
+
domain: "reconstructed-linear", purpose: "distortion", kind: "radial", profile: radial } },
|
|
90
|
+
{ ...identity, id: "lateral-ca", kind: "lateral-ca", transforms: Object.fromEntries(["red", "green", "blue"].map((channel, i) => [channel, {
|
|
91
|
+
id: id + ":ca-map:" + channel, version, domain: "reconstructed-linear", purpose: "lateral-ca", kind: "radial",
|
|
92
|
+
profile: coeff([a.lateralCaK1Offset * a.correctionCaFraction, 0, -a.lateralCaK1Offset * a.correctionCaFraction][i])
|
|
93
|
+
}])) },
|
|
94
|
+
{ ...identity, id: "gain", kind: "peripheral-illumination", profile: vignetting, strength: a.correctionGainStrength }] });
|
|
95
|
+
const stray = parseLensStrayLightProfile({ schemaVersion: "0.1.0", id: id + ":stray", version, state, evidence: opticalEvidence,
|
|
96
|
+
interaction: "lens-reflections", wavelengthNm: a.wavelengthNm, wavelengthBasis: "vacuum", maximumSourceAngleDegrees: 60,
|
|
97
|
+
referenceEntranceAreaMm2: Math.PI * (50 / 4 / 2) ** 2, responses: [
|
|
98
|
+
{ id: "ghost", kind: "ghost", centroidMmPerDegree: [-.02, 0, 0, -.02], offsetMm: { x: 1, y: 0 }, sigmaMm: .5, axisPowerFraction: a.ghostPowerFraction, angularSlope: 1 },
|
|
99
|
+
{ id: "veil", kind: "veil", centroidMmPerDegree: [0, 0, 0, 0], offsetMm: { x: 0, y: 0 }, sigmaMm: 10, axisPowerFraction: a.veilPowerFraction, angularSlope: 0 }
|
|
100
|
+
] });
|
|
101
|
+
const transmission = parseSceneToSensorIrradianceProfile({ schemaVersion: "0.1.0", profileId: id + ":transmission", profileVersion: version, lensProfileId: id,
|
|
102
|
+
scientificStatus: "approximation", applicability: { focalLengthMm: { minimum: 50, maximum: 50 }, nominalFNumber: { minimum: 4, maximum: 4 },
|
|
103
|
+
focus: { kind: "finite-distance-range", objectDistanceM: { minimum: 5, maximum: 5 } } }, transmission: { kind: "spectral-transmission", scientificStatus: "approximation",
|
|
104
|
+
wavelengthBasis: "vacuum", samples: { value: [{ wavelengthNanometers: 540, linearTransmissionFactor: a.transmission },
|
|
105
|
+
{ wavelengthNanometers: 560, linearTransmissionFactor: a.transmission }], evidence }, uncertainty: { kind: "not-quantified", limitation: "Synthetic flat narrow-band reference." } },
|
|
106
|
+
distortionAreaMappingOwnership: "not-applied-by-bridge", psfRedistributionOwnership: "downstream-normalized-energy-redistribution", sensorOpticalStackIncluded: false,
|
|
107
|
+
strayLightIncluded: false, polarizationModeled: false, wavelengthChangingBehaviorModeled: false, volumetricScatteringModeled: false, evidence, limitations: l.lens.limitations });
|
|
108
|
+
const pupils = [0, 1, 2].flatMap((field) => [-20, 0, 20].map((defocus, index) => parseLensComplexPupilProfile({ schemaVersion: "0.1.0",
|
|
109
|
+
profileId: id + ":pupil:" + field + ":" + index, profileVersion: version, scientificStatus: "approximation", opticalDomain: "lens-primary-optical-path-only",
|
|
110
|
+
representation: "complex-pupil-amplitude-plus-opd", pupilCoordinateSystem: "pupil-plane-metric-aligned-to-image-plane", imageFieldAxes: "+X right, +Y up",
|
|
111
|
+
amplitudeMeaning: "relative-complex-pupil-amplitude-shape", wavefrontMeaning: "optical-path-difference-micrometers",
|
|
112
|
+
throughputOwnership: "separate-relative-pupil-throughput-factor", kernelEnergyNormalization: "unit-energy-shape", propagationModel: "scalar-fraunhofer-discrete-reference",
|
|
113
|
+
context: { focalLengthMm: 50, focus: { kind: "finite", distanceM: 5 }, apertureFNumber: 4, fieldPointMm: [{ x: 0, y: 0 }, { x: 10, y: 6 }, { x: 18, y: 12 }][field],
|
|
114
|
+
wavelengthNm: 550, signedDefocusImagePlaneMicrometers: defocus }, responseIncludes: { diffraction: true, aberration: true, defocus: true, pupilClippingShape: true },
|
|
115
|
+
relativePupilThroughputFactor: a.pupilThroughputByField[field], grid: { widthSamples: 5, heightSamples: 5, pupilSamplePitchMmX: 3.125, pupilSamplePitchMmY: 3.125,
|
|
116
|
+
centerSampleX: 2, centerSampleY: 2, relativeAmplitude: a.pupilAmplitudeByField[field], opticalPathDifferenceMicrometers: a.pupilOpdMicrometersByDefocus[index] },
|
|
117
|
+
sensorOpticalStackIncluded: false, sensorSamplingIncluded: false, reconstructionIncluded: false, strayLightIncluded: false, evidence,
|
|
118
|
+
uncertainty: { kind: "not-quantified", limitation: "Coarse independently designed pupil-grid reference only." }, limitations: l.lens.limitations })));
|
|
119
|
+
return freezeOwnedData({ selection, state, radial, lateralCa, vignetting, breathingProjectionScale: a.breathingProjectionScale, transmission, pupils, stray, correction,
|
|
120
|
+
scientificStatus: "approximation" });
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=generic-tier-presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-tier-presets.js","sourceRoot":"","sources":["../../src/equipment/generic-tier-presets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { type EvidenceProvenance } from "../core/evidence-provenance.js";
|
|
2
|
+
import type { ResolvedGenericEquipmentExposureCapabilities } from "./exposure-capabilities.js";
|
|
3
|
+
export declare const ISO_CAPABILITY_PROFILE_SCHEMA_VERSION: "0.1.0";
|
|
4
|
+
export type IsoCapabilityAvailability = "supported" | "unsupported" | "unknown";
|
|
5
|
+
export interface IsoExposureIndexRange {
|
|
6
|
+
minimum: number;
|
|
7
|
+
maximum: number;
|
|
8
|
+
}
|
|
9
|
+
export type IsoStandardSettingGrid = {
|
|
10
|
+
kind: "continuous-within-range";
|
|
11
|
+
} | {
|
|
12
|
+
kind: "discrete-values";
|
|
13
|
+
values: readonly number[];
|
|
14
|
+
};
|
|
15
|
+
export interface IsoExpandedSetting {
|
|
16
|
+
settingId: string;
|
|
17
|
+
label: string;
|
|
18
|
+
direction: "low" | "high";
|
|
19
|
+
exposureIndexEquivalent: number;
|
|
20
|
+
autoIsoEligible: boolean;
|
|
21
|
+
evidence: readonly EvidenceProvenance[];
|
|
22
|
+
}
|
|
23
|
+
export type IsoAutoIsoCapability = {
|
|
24
|
+
availability: "supported";
|
|
25
|
+
standardExposureIndexRange: IsoExposureIndexRange;
|
|
26
|
+
evidence: readonly EvidenceProvenance[];
|
|
27
|
+
} | {
|
|
28
|
+
availability: "unsupported" | "unknown";
|
|
29
|
+
evidence: readonly EvidenceProvenance[];
|
|
30
|
+
};
|
|
31
|
+
export interface IsoCaptureModePolicy {
|
|
32
|
+
captureModeId: string;
|
|
33
|
+
standardExposureIndexRange: IsoExposureIndexRange;
|
|
34
|
+
expandedSettingIds: readonly string[];
|
|
35
|
+
autoIso: IsoAutoIsoCapability;
|
|
36
|
+
evidence: readonly EvidenceProvenance[];
|
|
37
|
+
}
|
|
38
|
+
export interface IsoCapabilityProfile {
|
|
39
|
+
schemaVersion: typeof ISO_CAPABILITY_PROFILE_SCHEMA_VERSION;
|
|
40
|
+
profileId: string;
|
|
41
|
+
profileVersion: string;
|
|
42
|
+
capabilityMeaning: "reported-exposure-index-capability-not-physical-gain";
|
|
43
|
+
standard: {
|
|
44
|
+
exposureIndexRange: IsoExposureIndexRange;
|
|
45
|
+
settingGrid: IsoStandardSettingGrid;
|
|
46
|
+
};
|
|
47
|
+
expandedSettings: readonly IsoExpandedSetting[];
|
|
48
|
+
autoIso: IsoAutoIsoCapability;
|
|
49
|
+
captureModePolicies: readonly IsoCaptureModePolicy[];
|
|
50
|
+
evidence: readonly EvidenceProvenance[];
|
|
51
|
+
}
|
|
52
|
+
export type RequestedIsoSetting = {
|
|
53
|
+
kind: "standard";
|
|
54
|
+
exposureIndex: number;
|
|
55
|
+
} | {
|
|
56
|
+
kind: "expanded";
|
|
57
|
+
settingId: string;
|
|
58
|
+
};
|
|
59
|
+
export interface ResolveIsoCapabilityInput {
|
|
60
|
+
profile: IsoCapabilityProfile;
|
|
61
|
+
setting: RequestedIsoSetting;
|
|
62
|
+
captureModeId?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface ResolvedIsoCapability {
|
|
65
|
+
profileId: string;
|
|
66
|
+
profileVersion: string;
|
|
67
|
+
captureModeId: string | null;
|
|
68
|
+
setting: {
|
|
69
|
+
kind: "standard";
|
|
70
|
+
exposureIndex: number;
|
|
71
|
+
} | {
|
|
72
|
+
kind: "expanded";
|
|
73
|
+
settingId: string;
|
|
74
|
+
label: string;
|
|
75
|
+
direction: "low" | "high";
|
|
76
|
+
exposureIndexEquivalent: number;
|
|
77
|
+
};
|
|
78
|
+
reportedExposureIndex: number;
|
|
79
|
+
expandedSetting: boolean;
|
|
80
|
+
autoIsoEligible: boolean;
|
|
81
|
+
standardExposureIndexRange: IsoExposureIndexRange;
|
|
82
|
+
standardSettingGrid: IsoStandardSettingGrid;
|
|
83
|
+
autoIso: IsoAutoIsoCapability;
|
|
84
|
+
capturedPhotonExpectationModified: false;
|
|
85
|
+
photonShotNoiseStatisticsModified: false;
|
|
86
|
+
physicalGainInferred: false;
|
|
87
|
+
conversionGainInferred: false;
|
|
88
|
+
readNoiseInferred: false;
|
|
89
|
+
saturationInferred: false;
|
|
90
|
+
exactCommercialCameraBehaviorClaimed: false;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
94
|
+
* missing required fields and incompatible scientific data fail at this boundary.
|
|
95
|
+
*
|
|
96
|
+
* ISO is an exposure-index/control capability, not a source of photons or evidence of read noise.
|
|
97
|
+
* Standard/expanded settings, capture-mode restrictions and Auto ISO availability are explicit;
|
|
98
|
+
* unknown availability cannot authorize automatic control.
|
|
99
|
+
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
100
|
+
* @returns IsoCapabilityProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
101
|
+
*
|
|
102
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
103
|
+
*/
|
|
104
|
+
export declare function parseIsoCapabilityProfile(value: unknown): IsoCapabilityProfile;
|
|
105
|
+
/**
|
|
106
|
+
* Resolve one standard/expanded/Auto ISO request under declared profile/capture-mode availability and
|
|
107
|
+
* report explicit unavailable/unknown state.
|
|
108
|
+
*
|
|
109
|
+
* ISO is an exposure-index/control capability, not a source of photons or evidence of read noise.
|
|
110
|
+
* Standard/expanded settings, capture-mode restrictions and Auto ISO availability are explicit;
|
|
111
|
+
* unknown availability cannot authorize automatic control.
|
|
112
|
+
* @param input - ResolveIsoCapabilityInput. See the linked contract for coordinate, unit and profile binding semantics.
|
|
113
|
+
* @returns ResolvedIsoCapability. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
114
|
+
*
|
|
115
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
116
|
+
*/
|
|
117
|
+
export declare function resolveIsoCapability(input: ResolveIsoCapabilityInput): ResolvedIsoCapability;
|
|
118
|
+
export interface BindIsoCapabilityToExposureCapabilitiesInput {
|
|
119
|
+
isoCapabilityProfile: IsoCapabilityProfile;
|
|
120
|
+
equipmentCapabilities: ResolvedGenericEquipmentExposureCapabilities;
|
|
121
|
+
captureModeId?: string;
|
|
122
|
+
}
|
|
123
|
+
export interface BoundIsoExposureCapabilities {
|
|
124
|
+
isoCapabilityProfileId: string;
|
|
125
|
+
isoCapabilityProfileVersion: string;
|
|
126
|
+
captureModeId: string | null;
|
|
127
|
+
capabilities: ResolvedGenericEquipmentExposureCapabilities;
|
|
128
|
+
expandedSettingsExcludedFromNumericExposureGrid: true;
|
|
129
|
+
physicalGainInferred: false;
|
|
130
|
+
readNoiseInferred: false;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Binds the detailed #7 ISO/EI capability contract into the numeric capability
|
|
134
|
+
* envelope consumed by #99.
|
|
135
|
+
*
|
|
136
|
+
* The existing equipment capability must agree exactly with the profile's
|
|
137
|
+
* global standard ISO range/grid. An evidenced capture-mode policy may narrow
|
|
138
|
+
* the standard manual envelope for that mode. Auto ISO may then be narrower
|
|
139
|
+
* still. Expanded L/H-style settings remain outside #99's ordinary numeric
|
|
140
|
+
* ISO grid and are resolved through resolveIsoCapability().
|
|
141
|
+
*/
|
|
142
|
+
export declare function bindIsoCapabilityToExposureCapabilities(input: BindIsoCapabilityToExposureCapabilitiesInput): BoundIsoExposureCapabilities;
|
|
143
|
+
//# sourceMappingURL=iso-capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iso-capabilities.d.ts","sourceRoot":"","sources":["../../src/equipment/iso-capabilities.ts"],"names":[],"mappings":"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"}
|