@photivra/engine 1.3.0 → 1.5.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/CHANGELOG.md +17 -1
- package/CITATION.cff +1 -1
- package/dist/capture/environment-raw-producer.d.ts +6 -3
- package/dist/capture/environment-raw-producer.d.ts.map +1 -1
- package/dist/capture/environment-raw-producer.js +26 -15
- package/dist/capture/environment-raw-producer.js.map +1 -1
- package/dist/capture/export-jpeg.d.ts +9 -0
- package/dist/capture/export-jpeg.d.ts.map +1 -1
- package/dist/capture/export-jpeg.js +51 -12
- package/dist/capture/export-jpeg.js.map +1 -1
- package/dist/capture/native-environment-raw.d.ts +43 -0
- package/dist/capture/native-environment-raw.d.ts.map +1 -0
- package/dist/capture/native-environment-raw.js +81 -0
- package/dist/capture/native-environment-raw.js.map +1 -0
- package/dist/capture/native-raw-development.d.ts +45 -0
- package/dist/capture/native-raw-development.d.ts.map +1 -0
- package/dist/capture/native-raw-development.js +159 -0
- package/dist/capture/native-raw-development.js.map +1 -0
- package/dist/capture/native-raw.d.ts +83 -0
- package/dist/capture/native-raw.d.ts.map +1 -0
- package/dist/capture/native-raw.js +146 -0
- package/dist/capture/native-raw.js.map +1 -0
- package/dist/capture/raw-frame-reconstruction.d.ts +2 -0
- package/dist/capture/raw-frame-reconstruction.d.ts.map +1 -1
- package/dist/capture/raw-frame-reconstruction.js +18 -13
- package/dist/capture/raw-frame-reconstruction.js.map +1 -1
- package/dist/capture/sensor-raw-producer.d.ts +8 -0
- package/dist/capture/sensor-raw-producer.d.ts.map +1 -1
- package/dist/capture/sensor-raw-producer.js +43 -38
- package/dist/capture/sensor-raw-producer.js.map +1 -1
- package/dist/capture/simulated-capture.d.ts +8 -0
- package/dist/capture/simulated-capture.d.ts.map +1 -1
- package/dist/capture/simulated-capture.js +24 -13
- package/dist/capture/simulated-capture.js.map +1 -1
- package/dist/color/srgb-icc.d.ts +8 -0
- package/dist/color/srgb-icc.d.ts.map +1 -0
- package/dist/color/srgb-icc.js +67 -0
- package/dist/color/srgb-icc.js.map +1 -0
- package/dist/color/srgb-transfer.d.ts +4 -0
- package/dist/color/srgb-transfer.d.ts.map +1 -0
- package/dist/color/srgb-transfer.js +9 -0
- package/dist/color/srgb-transfer.js.map +1 -0
- package/dist/composition/image-formation-plan.d.ts.map +1 -1
- package/dist/composition/image-formation-plan.js +4 -1
- package/dist/composition/image-formation-plan.js.map +1 -1
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.js +1 -1
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +8 -0
- package/dist/motion/camera-rotation.d.ts.map +1 -1
- package/dist/motion/camera-rotation.js +2 -1
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/optics/sensor-aperture-rays.d.ts +56 -0
- package/dist/optics/sensor-aperture-rays.d.ts.map +1 -0
- package/dist/optics/sensor-aperture-rays.js +55 -0
- package/dist/optics/sensor-aperture-rays.js.map +1 -0
- package/dist/output/print-jpeg.d.ts +63 -0
- package/dist/output/print-jpeg.d.ts.map +1 -0
- package/dist/output/print-jpeg.js +141 -0
- package/dist/output/print-jpeg.js.map +1 -0
- package/dist/output/sdr-rendering.d.ts.map +1 -1
- package/dist/output/sdr-rendering.js +2 -1
- package/dist/output/sdr-rendering.js.map +1 -1
- package/dist/sensor/environment-photo-signal.d.ts +15 -4
- package/dist/sensor/environment-photo-signal.d.ts.map +1 -1
- package/dist/sensor/environment-photo-signal.js +39 -15
- package/dist/sensor/environment-photo-signal.js.map +1 -1
- package/dist/sensor/raw-reconstruction.d.ts +5 -0
- package/dist/sensor/raw-reconstruction.d.ts.map +1 -1
- package/dist/sensor/raw-reconstruction.js +21 -47
- package/dist/sensor/raw-reconstruction.js.map +1 -1
- package/docs/API_REFERENCE.md +87 -1
- package/docs/DENSE_PUPIL_QUALIFICATION.md +121 -0
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +2 -0
- package/docs/NATIVE_RAW_AND_PRINT.md +54 -0
- package/docs/RELEASE_1_4_0.md +23 -0
- package/docs/RELEASE_1_5_0.md +105 -0
- package/docs/SENSOR_APERTURE_RAYS.md +23 -0
- package/docs/SEPARABLE_EMISSION_DRAFT.md +103 -0
- package/docs/api/camera-equivalent-focal-length.md +1 -1
- package/docs/api/camera-field-of-view.md +1 -1
- package/docs/api/camera-projected-object-size.md +1 -1
- package/docs/api/capture-capture-export-metadata.md +1 -1
- package/docs/api/capture-environment-raw-producer.md +3 -2
- package/docs/api/capture-focus-control.md +1 -1
- package/docs/api/capture-linear-encoding.md +1 -1
- package/docs/api/capture-native-environment-raw.md +88 -0
- package/docs/api/capture-native-raw-development.md +70 -0
- package/docs/api/capture-native-raw.md +161 -0
- package/docs/api/capture-photographic-export.md +1 -1
- package/docs/api/capture-raw-frame-reconstruction.md +1 -1
- package/docs/api/capture-release-sequence.md +1 -1
- package/docs/api/capture-sensor-raw-frame.md +1 -1
- package/docs/api/capture-sensor-raw-producer.md +1 -1
- package/docs/api/capture-simulated-capture.md +9 -1
- package/docs/api/color-capture-color.md +1 -1
- package/docs/api/color-srgb-icc.md +23 -0
- package/docs/api/color-white-balance.md +1 -1
- package/docs/api/composition-image-formation-plan.md +1 -1
- package/docs/api/composition-plan-consumer.md +1 -1
- package/docs/api/core-calculation-result.md +1 -1
- package/docs/api/core-configuration-error.md +1 -1
- package/docs/api/core-image-formation.md +1 -1
- package/docs/api/core-scientific-assurance.md +1 -1
- package/docs/api/core-spectral-composition.md +1 -1
- package/docs/api/core-spectral.md +1 -1
- package/docs/api/core-validation.md +1 -1
- package/docs/api/core-version.md +2 -2
- package/docs/api/equipment-exposure-capabilities.md +1 -1
- package/docs/api/equipment-generic-tier-assets.md +1 -1
- package/docs/api/equipment-generic-tier-presets.md +1 -1
- package/docs/api/equipment-iso-capabilities.md +1 -1
- package/docs/api/equipment-metering-capabilities.md +1 -1
- package/docs/api/equipment-release-capabilities.md +1 -1
- package/docs/api/exports.json +222 -2
- package/docs/api/exposure-exposure-duration-control.md +1 -1
- package/docs/api/exposure-exposure-mode-resolver.md +1 -1
- package/docs/api/exposure-exposure.md +1 -1
- package/docs/api/exposure-flash.md +1 -1
- package/docs/api/exposure-metering-scene-radiance.md +1 -1
- package/docs/api/exposure-metering-target.md +1 -1
- package/docs/api/exposure-metering-temporal.md +1 -1
- package/docs/api/exposure-metering.md +1 -1
- package/docs/api/exposure-program-line.md +1 -1
- package/docs/api/motion-camera-rotation.md +1 -1
- package/docs/api/motion-capture-rotation-inverse-mapping.md +1 -1
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +1 -1
- package/docs/api/motion-capture-rotation-trajectory.md +1 -1
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +1 -1
- package/docs/api/motion-extended-object-projection.md +1 -1
- package/docs/api/motion-projected-motion.md +1 -1
- package/docs/api/optics-aperture.md +1 -1
- package/docs/api/optics-circle-of-confusion.md +1 -1
- package/docs/api/optics-complex-pupil-psf.md +1 -1
- package/docs/api/optics-depth-of-field.md +1 -1
- package/docs/api/optics-diffraction.md +1 -1
- package/docs/api/optics-focus-breathing.md +1 -1
- package/docs/api/optics-focus-state.md +1 -1
- package/docs/api/optics-front-of-lens-filter.md +1 -1
- package/docs/api/optics-illumination-vignetting.md +1 -1
- package/docs/api/optics-lateral-chromatic-aberration.md +1 -1
- package/docs/api/optics-lens-psf-profile.md +1 -1
- package/docs/api/optics-polygon-diffraction.md +1 -1
- package/docs/api/optics-profile-contract.md +1 -1
- package/docs/api/optics-psf-foundation.md +1 -1
- package/docs/api/optics-radial-distortion.md +1 -1
- package/docs/api/optics-scene-to-sensor-irradiance.md +1 -1
- package/docs/api/optics-scene-to-sensor-quadrature.md +1 -1
- package/docs/api/optics-sensor-aperture-rays.md +75 -0
- package/docs/api/optics-sensor-environment-query.md +1 -1
- package/docs/api/optics-sensor-psf-quadrature.md +1 -1
- package/docs/api/optics-stray-light.md +1 -1
- package/docs/api/optics-thin-lens.md +1 -1
- package/docs/api/output-capture-corrected-sdr.md +1 -1
- package/docs/api/output-capture-geometry.md +1 -1
- package/docs/api/output-capture-sdr.md +1 -1
- package/docs/api/output-crop.md +1 -1
- package/docs/api/output-geometric-transforms.md +1 -1
- package/docs/api/output-lens-corrections.md +1 -1
- package/docs/api/output-native-capture-sdr.md +1 -1
- package/docs/api/output-print-contrast-reference.md +1 -1
- package/docs/api/output-print-detail.md +1 -1
- package/docs/api/output-print-jpeg.md +117 -0
- package/docs/api/output-print-plan.md +1 -1
- package/docs/api/output-print-region-statistics.md +1 -1
- package/docs/api/output-sdr-rendering.md +1 -1
- package/docs/api/output-subject-framing-crop.md +1 -1
- package/docs/api/schema-camera.md +1 -1
- package/docs/api/schema-illumination-spectral.md +1 -1
- package/docs/api/schema-illumination-temporal.md +1 -1
- package/docs/api/schema-illumination.md +1 -1
- package/docs/api/schema-scene-radiance-temporal.md +1 -1
- package/docs/api/schema-scene-radiance.md +1 -1
- package/docs/api/schema-scene.md +1 -1
- package/docs/api/schema-validation.md +1 -1
- package/docs/api/sensor-accumulated-charge.md +1 -1
- package/docs/api/sensor-architecture.md +1 -1
- package/docs/api/sensor-camera-saturation-capacity.md +1 -1
- package/docs/api/sensor-capture-color-sampling-binding.md +1 -1
- package/docs/api/sensor-capture-mode-timing.md +1 -1
- package/docs/api/sensor-capture-mode.md +1 -1
- package/docs/api/sensor-color-sampling.md +1 -1
- package/docs/api/sensor-constant-rate-temporal-integration.md +1 -1
- package/docs/api/sensor-dark-current.md +1 -1
- package/docs/api/sensor-environment-photo-signal.md +17 -1
- package/docs/api/sensor-eqe-electron-rate.md +1 -1
- package/docs/api/sensor-eqe-local-exposure.md +1 -1
- package/docs/api/sensor-eqe-temporal-exposure.md +1 -1
- package/docs/api/sensor-exposure-window.md +1 -1
- package/docs/api/sensor-iso-signal-chain.md +1 -1
- package/docs/api/sensor-local-exposure-binding.md +1 -1
- package/docs/api/sensor-optical-stack.md +1 -1
- package/docs/api/sensor-photon-energy.md +1 -1
- package/docs/api/sensor-physical-charge-capacity.md +1 -1
- package/docs/api/sensor-pixel-pitch.md +1 -1
- package/docs/api/sensor-radiometry-readiness.md +1 -1
- package/docs/api/sensor-raw-readout.md +1 -1
- package/docs/api/sensor-raw-reconstruction.md +1 -1
- package/docs/api/sensor-readout-exposure-linkage.md +1 -1
- package/docs/api/sensor-readout-timing.md +1 -1
- package/docs/api/sensor-response-application-compatibility.md +1 -1
- package/docs/api/sensor-response-operating-range.md +1 -1
- package/docs/api/sensor-responsivity-photocurrent.md +1 -1
- package/docs/api/sensor-sampling-aperture.md +1 -1
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +1 -1
- package/docs/api/sensor-sensor-geometry.md +1 -1
- package/docs/api/sensor-signal-noise.md +1 -1
- package/docs/api/sensor-spatial-sample-reduction.md +1 -1
- package/docs/api/sensor-spatial-sampling-quadrature.md +1 -1
- package/docs/api/sensor-spatio-spectral-reduction.md +1 -1
- package/docs/api/sensor-spectral-coverage.md +1 -1
- package/docs/api/sensor-spectral-quadrature.md +1 -1
- package/docs/api/sensor-spectral-response.md +1 -1
- package/docs/api/sensor-temporal-photo-signal.md +1 -1
- package/docs/api/simulation-poc-simulation.md +1 -1
- package/docs/api/stabilization-camera-shake.md +1 -1
- package/docs/api/stabilization-system.md +1 -1
- package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +6 -0
- package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/manifest.json +218 -0
- package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +9 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +29 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
- package/docs/validation/native-raw-print-2026-10-04/validation.json +41 -0
- package/package.json +1 -1
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/** Exact packed RAW reconstruction and shared color/SDR development, with bounded pixel tiles. */
|
|
3
|
+
import { calculateNativeRawPlan } from "./native-raw.js";
|
|
4
|
+
import { parseRawReconstructionPhaseProfiles } from "./raw-frame-reconstruction.js";
|
|
5
|
+
import { calculateRawReconstructionChannel } from "../sensor/raw-reconstruction.js";
|
|
6
|
+
import { resolveColorSamplingSite } from "../sensor/color-sampling.js";
|
|
7
|
+
import { parseExportSensorColorProfile } from "./photographic-export.js";
|
|
8
|
+
import { prepareSensorColorDevelopment, invertSensorColorMatrix, sensorColorReferenceWhite } from "../color/sensor-color-development.js";
|
|
9
|
+
import { calculateSdrRendering, parseSdrRenderingProfile } from "../output/sdr-rendering.js";
|
|
10
|
+
import { transformOrientedRasterPointToNative } from "../output/capture-geometry.js";
|
|
11
|
+
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
12
|
+
import { requireAllowlistedRecord } from "../core/record-validation.js";
|
|
13
|
+
import { stringifyCanonicalJson } from "../core/canonical-json.js";
|
|
14
|
+
import { freezeOwnedData } from "../core/owned-data.js";
|
|
15
|
+
function canonical(value) {
|
|
16
|
+
return stringifyCanonicalJson(value, { undefinedObjectProperties: "reject", nonFiniteNumberMessage: "Invalid RAW metadata.", unsupportedValueMessage: "Invalid RAW metadata." });
|
|
17
|
+
}
|
|
18
|
+
function validateRaw(raw) {
|
|
19
|
+
requireAllowlistedRecord(raw, ["plan", "codes", "blackLevels", "digitalSaturationCodes", "saturationFlags"], "Invalid packed RAW output.");
|
|
20
|
+
const p = raw.plan;
|
|
21
|
+
if (!p?.exposure || !p.frame)
|
|
22
|
+
throw new InvalidConfigurationError("Packed RAW requires complete exposure and frame metadata.");
|
|
23
|
+
const { engineApiVersion, resolvedGeometry, equivalentFocalLength35Mm, ...exposure } = p.exposure;
|
|
24
|
+
void engineApiVersion;
|
|
25
|
+
void resolvedGeometry;
|
|
26
|
+
void equivalentFocalLength35Mm;
|
|
27
|
+
const { capture, containerBitDepth, ...frame } = p.frame;
|
|
28
|
+
void capture;
|
|
29
|
+
void containerBitDepth;
|
|
30
|
+
const input = { exposure, ...frame, maximumOutputBytes: p.outputBytes, ...(p.tileWidth === undefined ? {} : { tileWidth: p.tileWidth }), ...(p.exposureWindow ? { exposureWindow: p.exposureWindow } : {}) };
|
|
31
|
+
const plan = calculateNativeRawPlan(input);
|
|
32
|
+
if (canonical(p) !== canonical(plan))
|
|
33
|
+
throw new InvalidConfigurationError("Packed RAW metadata is stale or inconsistent.");
|
|
34
|
+
for (const [a, type] of [[raw.codes, Uint16Array], [raw.blackLevels, Uint16Array], [raw.digitalSaturationCodes, Uint16Array], [raw.saturationFlags, Uint8Array]])
|
|
35
|
+
if (!(a instanceof type) || !(a.buffer instanceof ArrayBuffer) || a.length !== plan.pixelCount || a.buffer.byteLength !== a.byteLength)
|
|
36
|
+
throw new InvalidConfigurationError("Packed RAW storage must be exact owned native arrays.");
|
|
37
|
+
return plan;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Validates complete phase/halo support, snapshots RAW once, and yields between 256-pixel output tiles.
|
|
41
|
+
* Retains explicit acquisition tile width when reconstructing the exact packed plan. Omitted width
|
|
42
|
+
* preserves legacy plan shape; inconsistent tile counts or unsupported widths fail validation.
|
|
43
|
+
* Acquisition chunk width changes neither CFA/seed coordinates nor development pixels, and does
|
|
44
|
+
* not establish transport or device-resource qualification.
|
|
45
|
+
*/
|
|
46
|
+
export function createNativeRawDevelopmentTask(input, yieldControl) {
|
|
47
|
+
const r = requireAllowlistedRecord(input, ["raw", "phaseProfiles", "colorProfile", "whiteBalance", "rendering", "maximumRetainedPayloadBytes"], "Invalid native RAW development input.");
|
|
48
|
+
if (typeof yieldControl !== "function")
|
|
49
|
+
throw new InvalidConfigurationError("Development requires a host event-loop yield.");
|
|
50
|
+
const plan = validateRaw(input.raw), g = plan.exposure.resolvedGeometry, native = plan.exposure.geometry.nativeRaster;
|
|
51
|
+
const phases = freezeOwnedData(parseRawReconstructionPhaseProfiles(r.phaseProfiles, plan.frame.modeId, plan.frame.colorSamplingProfile));
|
|
52
|
+
const color = freezeOwnedData(parseExportSensorColorProfile(r.colorProfile)), profile = freezeOwnedData(parseSdrRenderingProfile(r.rendering));
|
|
53
|
+
const crop = g.output.cropRect, raster = g.output.raster, active = g.activeCapture.nativeRect, intent = plan.exposure.whiteBalanceIntent;
|
|
54
|
+
if (color.colorSamplingProfileId !== plan.frame.colorSamplingProfile.profileId || phases.some(p => canonical(p.profile.kernels.map(k => k.outputChannelId)) !== canonical(color.channelIds)) ||
|
|
55
|
+
(r.whiteBalance !== "not-required" && r.whiteBalance !== "apply-resolved-sensor-gains") || (intent !== null) !== (r.whiteBalance === "apply-resolved-sensor-gains") ||
|
|
56
|
+
raster.pixelWidth !== crop.width || raster.pixelHeight !== crop.height)
|
|
57
|
+
throw new InvalidConfigurationError("Development requires bound sensor RGB, explicit one-time WB and 1:1 output crop.");
|
|
58
|
+
const whiteBalance = r.whiteBalance;
|
|
59
|
+
const bytes = plan.outputBytes + raster.pixelWidth * raster.pixelHeight * 3 * profile.bitDepth / 8;
|
|
60
|
+
if (typeof r.maximumRetainedPayloadBytes !== "number" || !Number.isSafeInteger(r.maximumRetainedPayloadBytes) || r.maximumRetainedPayloadBytes < bytes)
|
|
61
|
+
throw new InvalidConfigurationError("Development exceeds retained output budget.");
|
|
62
|
+
const gains = intent ? [intent.channelGains.red, intent.channelGains.green, intent.channelGains.blue] : [1, 1, 1];
|
|
63
|
+
if (sensorColorReferenceWhite(invertSensorColorMatrix(color.normalizedCameraChannelsToXyz)).some(x => x <= 0 || !Number.isFinite(x)))
|
|
64
|
+
throw new InvalidConfigurationError("Reference white requires positive camera coordinates.");
|
|
65
|
+
const development = prepareSensorColorDevelopment(color.normalizedCameraChannelsToXyz, gains), layout = plan.frame.colorSamplingProfile.layout;
|
|
66
|
+
if (layout.kind !== "periodic-mosaic")
|
|
67
|
+
throw new InvalidConfigurationError("Development requires periodic CFA.");
|
|
68
|
+
const nativeCorners = [{ x: crop.x + .5, y: crop.y + .5 }, { x: crop.x + crop.width - .5, y: crop.y + crop.height - .5 }].map(point => {
|
|
69
|
+
const p = transformOrientedRasterPointToNative({ point, nativeRaster: g.activeCapture.raster, orientation: plan.exposure.geometry.orientation });
|
|
70
|
+
return { x: Math.floor(p.x) + active.x, y: Math.floor(p.y) + active.y };
|
|
71
|
+
});
|
|
72
|
+
const minX = Math.min(...nativeCorners.map(p => p.x)), maxX = Math.max(...nativeCorners.map(p => p.x)), minY = Math.min(...nativeCorners.map(p => p.y)), maxY = Math.max(...nativeCorners.map(p => p.y));
|
|
73
|
+
for (const phase of phases) {
|
|
74
|
+
const firstX = minX + (phase.phaseX - minX % layout.repeatWidthSites + layout.repeatWidthSites) % layout.repeatWidthSites;
|
|
75
|
+
const firstY = minY + (phase.phaseY - minY % layout.repeatHeightSites + layout.repeatHeightSites) % layout.repeatHeightSites;
|
|
76
|
+
if (firstX > maxX || firstY > maxY)
|
|
77
|
+
continue;
|
|
78
|
+
const lastX = maxX - (maxX - phase.phaseX + layout.repeatWidthSites) % layout.repeatWidthSites, lastY = maxY - (maxY - phase.phaseY + layout.repeatHeightSites) % layout.repeatHeightSites;
|
|
79
|
+
for (const kernel of phase.profile.kernels)
|
|
80
|
+
for (const c of kernel.contributions) {
|
|
81
|
+
if (firstX + c.offsetX < 0 || firstY + c.offsetY < 0 || lastX + c.offsetX >= native.pixelWidth || lastY + c.offsetY >= native.pixelHeight)
|
|
82
|
+
throw new InvalidConfigurationError("Reconstruction halo leaves native RAW; no padding or renormalization.");
|
|
83
|
+
const channel = resolveColorSamplingSite({ profile: plan.frame.colorSamplingProfile, site: { x: firstX + c.offsetX, y: firstY + c.offsetY } }).mapping.channelId;
|
|
84
|
+
if (channel !== c.sourceChannelId)
|
|
85
|
+
throw new InvalidConfigurationError("Reconstruction source channel disagrees with absolute CFA phase.");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Numeric integrity before execution; signed values below black are preserved.
|
|
89
|
+
for (let i = 0; i < plan.pixelCount; i++)
|
|
90
|
+
if (input.raw.blackLevels[i] >= input.raw.digitalSaturationCodes[i] || input.raw.codes[i] > input.raw.digitalSaturationCodes[i] || input.raw.saturationFlags[i] > 7)
|
|
91
|
+
throw new InvalidConfigurationError("Invalid packed RAW code span or saturation flags.");
|
|
92
|
+
const raw = { plan, codes: input.raw.codes.slice(), blackLevels: input.raw.blackLevels.slice(), digitalSaturationCodes: input.raw.digitalSaturationCodes.slice(), saturationFlags: input.raw.saturationFlags.slice() };
|
|
93
|
+
const abort = new AbortController();
|
|
94
|
+
let state = "ready", output = null, codes = null;
|
|
95
|
+
function release() { raw.codes.fill(0); raw.blackLevels.fill(0); raw.digitalSaturationCodes.fill(0); raw.saturationFlags.fill(0); codes?.fill(0); codes = null; output = null; }
|
|
96
|
+
function check() { if (abort.signal.aborted)
|
|
97
|
+
throw new InvalidConfigurationError("Native RAW development aborted."); }
|
|
98
|
+
return { get state() { return state; },
|
|
99
|
+
async run() {
|
|
100
|
+
if (state !== "ready")
|
|
101
|
+
throw new InvalidConfigurationError("Development task is single-use.");
|
|
102
|
+
state = "running";
|
|
103
|
+
try {
|
|
104
|
+
codes = profile.bitDepth === 8 ? new Uint8Array(raster.pixelWidth * raster.pixelHeight * 3) : new Uint16Array(raster.pixelWidth * raster.pixelHeight * 3);
|
|
105
|
+
const diagnostics = { renderingNegativeSampleCount: 0, renderingAboveReferenceSampleCount: 0, toneChangedSampleCount: 0, gamutClippedLowSampleCount: 0, gamutClippedHighSampleCount: 0, captureSaturation: "not-consumed" };
|
|
106
|
+
let encoding, adaptation;
|
|
107
|
+
for (let y = 0; y < raster.pixelHeight; y++)
|
|
108
|
+
for (let x = 0; x < raster.pixelWidth; x += 256) {
|
|
109
|
+
check();
|
|
110
|
+
const width = Math.min(256, raster.pixelWidth - x);
|
|
111
|
+
{
|
|
112
|
+
const rgb = [];
|
|
113
|
+
for (let j = 0; j < width; j++) {
|
|
114
|
+
const q = transformOrientedRasterPointToNative({ point: { x: crop.x + x + j + .5, y: crop.y + y + .5 }, nativeRaster: g.activeCapture.raster, orientation: plan.exposure.geometry.orientation });
|
|
115
|
+
const point = { x: Math.floor(q.x) + active.x, y: Math.floor(q.y) + active.y };
|
|
116
|
+
const phase = phases[(point.y % layout.repeatHeightSites) * layout.repeatWidthSites + point.x % layout.repeatWidthSites];
|
|
117
|
+
const values = phase.profile.kernels.map(kernel => calculateRawReconstructionChannel(kernel, point, (sx, sy) => {
|
|
118
|
+
const i = sy * native.pixelWidth + sx;
|
|
119
|
+
return (raw.codes[i] - raw.blackLevels[i]) / (raw.digitalSaturationCodes[i] - raw.blackLevels[i]);
|
|
120
|
+
}).linearBlackSubtractedNormalizedValue);
|
|
121
|
+
rgb.push(...development.develop(values));
|
|
122
|
+
}
|
|
123
|
+
const rendered = calculateSdrRendering({ sourceImageStateId: plan.frame.frameId + ":developed", inputImageState: "color-transformed-linear-rgb", inputColorSpace: "linear-srgb-d65", whiteBalanceHandling: intent ? "already-applied-upstream" : "not-required", pixelWidth: width, pixelHeight: 1, referenceWhiteValue: 1, samples: rgb, profile }).value;
|
|
124
|
+
codes.set(rendered.integerSamples, (y * raster.pixelWidth + x) * 3);
|
|
125
|
+
for (const key of ["renderingNegativeSampleCount", "renderingAboveReferenceSampleCount", "toneChangedSampleCount", "gamutClippedLowSampleCount", "gamutClippedHighSampleCount"])
|
|
126
|
+
diagnostics[key] += rendered.diagnostics[key];
|
|
127
|
+
encoding = rendered.outputEncoding;
|
|
128
|
+
adaptation = rendered.displayAdaptation;
|
|
129
|
+
}
|
|
130
|
+
await yieldControl(abort.signal);
|
|
131
|
+
check();
|
|
132
|
+
}
|
|
133
|
+
output = { raw, phaseProfiles: phases, colorProfile: color, whiteBalance, width: raster.pixelWidth, height: raster.pixelHeight, integerSamples: codes, diagnostics, rendering: profile, displayAdaptation: adaptation, outputEncoding: encoding, imageDataPairing: "derived-from-exact-packed-native-raw", producerOriginVerified: false };
|
|
134
|
+
state = "completed";
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
release();
|
|
138
|
+
if (!abort.signal.aborted) {
|
|
139
|
+
state = "failed";
|
|
140
|
+
abort.abort();
|
|
141
|
+
}
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
cancel() { if (state === "ready" || state === "running" || state === "completed") {
|
|
146
|
+
state = "cancelled";
|
|
147
|
+
abort.abort();
|
|
148
|
+
release();
|
|
149
|
+
} },
|
|
150
|
+
dispose() { if (state !== "transferred") {
|
|
151
|
+
state = "disposed";
|
|
152
|
+
abort.abort();
|
|
153
|
+
release();
|
|
154
|
+
} },
|
|
155
|
+
takeOutput() { if (state !== "completed" || !output)
|
|
156
|
+
throw new InvalidConfigurationError("Development output unavailable."); const value = output; output = null; codes = null; state = "transferred"; return value; }
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=native-raw-development.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-raw-development.js","sourceRoot":"","sources":["../../src/capture/native-raw-development.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/** Metadata-only admission and bounded execution of the existing native scalar RAW model. */
|
|
2
|
+
import { type SimulatedCaptureInput, type SimulatedCapture, type CaptureExposureSource } from "./simulated-capture.js";
|
|
3
|
+
import { type NativeRawProducerFrameContext, type SensorRawProducerSiteInput, type SensorRawProducerExposureWindowInput } from "./sensor-raw-producer.js";
|
|
4
|
+
export declare const NATIVE_RAW_SCHEMA_VERSION: "0.1.0";
|
|
5
|
+
export declare const NATIVE_RAW_LIMITS: Readonly<{
|
|
6
|
+
maximumPixels: 24000000;
|
|
7
|
+
maximumDimension: 16384;
|
|
8
|
+
tileWidth: 256;
|
|
9
|
+
tileHeight: 1;
|
|
10
|
+
outputBytesPerPixel: 7;
|
|
11
|
+
}>;
|
|
12
|
+
/** A shooting event and source provenance, not a produced float master or committed RAW frame. */
|
|
13
|
+
export type NativeRawExposureInput = Omit<SimulatedCaptureInput, "planes" | "source"> & {
|
|
14
|
+
source: CaptureExposureSource;
|
|
15
|
+
};
|
|
16
|
+
export type NativeRawExposure = Omit<SimulatedCapture, "schemaVersion" | "planes" | "source"> & {
|
|
17
|
+
source: CaptureExposureSource;
|
|
18
|
+
};
|
|
19
|
+
export interface NativeRawInput {
|
|
20
|
+
exposure: NativeRawExposureInput;
|
|
21
|
+
frameId: string;
|
|
22
|
+
modeId: string;
|
|
23
|
+
captureModeProfile: NativeRawProducerFrameContext["captureModeProfile"];
|
|
24
|
+
colorSamplingProfile: NativeRawProducerFrameContext["colorSamplingProfile"];
|
|
25
|
+
bindingProfile: NativeRawProducerFrameContext["bindingProfile"];
|
|
26
|
+
exposureWindow?: SensorRawProducerExposureWindowInput;
|
|
27
|
+
maximumOutputBytes: number;
|
|
28
|
+
/** Optional execution chunk width in native sites, 1–256; omission preserves 256. Not a sampling control. */
|
|
29
|
+
tileWidth?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface NativeRawPlan {
|
|
32
|
+
schemaVersion: typeof NATIVE_RAW_SCHEMA_VERSION;
|
|
33
|
+
exposure: NativeRawExposure;
|
|
34
|
+
frame: NativeRawProducerFrameContext;
|
|
35
|
+
exposureWindow?: SensorRawProducerExposureWindowInput;
|
|
36
|
+
pixelCount: number;
|
|
37
|
+
outputBytes: number;
|
|
38
|
+
tileCount: number;
|
|
39
|
+
/** Present only for an explicit execution chunk width. Omission preserves legacy plan shape. */
|
|
40
|
+
tileWidth?: number;
|
|
41
|
+
upstreamRadiometryVerified: false;
|
|
42
|
+
seedSchedule: "capture-seed-plus-two-native-index-modulo-2-to-32-v1";
|
|
43
|
+
}
|
|
44
|
+
/** Rectangle is absolute full-native CFA space, before orientation, active crop or output scaling. */
|
|
45
|
+
export interface NativeRawTileRequest {
|
|
46
|
+
captureId: string;
|
|
47
|
+
frameId: string;
|
|
48
|
+
x: number;
|
|
49
|
+
y: number;
|
|
50
|
+
width: number;
|
|
51
|
+
height: number;
|
|
52
|
+
}
|
|
53
|
+
export interface NativeRawTile extends NativeRawTileRequest {
|
|
54
|
+
sites: readonly SensorRawProducerSiteInput[];
|
|
55
|
+
}
|
|
56
|
+
export interface NativeRawProvider {
|
|
57
|
+
readTile(request: Readonly<NativeRawTileRequest>, signal: AbortSignal): Promise<NativeRawTile>;
|
|
58
|
+
yieldControl(signal: AbortSignal): Promise<void>;
|
|
59
|
+
}
|
|
60
|
+
/** Sole-owner row-major arrays. They are not attachable to the bounded SensorRawFrame contract. */
|
|
61
|
+
export interface NativeRawOutput {
|
|
62
|
+
plan: NativeRawPlan;
|
|
63
|
+
codes: Uint16Array;
|
|
64
|
+
blackLevels: Uint16Array;
|
|
65
|
+
digitalSaturationCodes: Uint16Array;
|
|
66
|
+
/** Bits 0,1,2: physical scalar clamp, pre-ADC clamp, digital saturation respectively. */
|
|
67
|
+
saturationFlags: Uint8Array;
|
|
68
|
+
}
|
|
69
|
+
export type NativeRawTaskState = "ready" | "running" | "completed" | "cancelled" | "failed" | "disposed" | "transferred";
|
|
70
|
+
export interface NativeRawTask {
|
|
71
|
+
readonly plan: NativeRawPlan;
|
|
72
|
+
readonly state: NativeRawTaskState;
|
|
73
|
+
readonly completedTileCount: number;
|
|
74
|
+
run(): Promise<void>;
|
|
75
|
+
cancel(): void;
|
|
76
|
+
dispose(): void;
|
|
77
|
+
takeOutput(): NativeRawOutput;
|
|
78
|
+
}
|
|
79
|
+
/** Full raster/resource/profile admission before callbacks or output allocation; no placeholder plane. */
|
|
80
|
+
export declare function calculateNativeRawPlan(input: NativeRawInput): NativeRawPlan;
|
|
81
|
+
/** Executes validated EQE/dark/completeness events through the shared reference scalar physics. */
|
|
82
|
+
export declare function createNativeRawTask(input: NativeRawInput, provider: NativeRawProvider): NativeRawTask;
|
|
83
|
+
//# sourceMappingURL=native-raw.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-raw.d.ts","sourceRoot":"","sources":["../../src/capture/native-raw.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/** Metadata-only admission and bounded execution of the existing native scalar RAW model. */
|
|
3
|
+
import { normalizeCaptureExposureMetadata } from "./simulated-capture.js";
|
|
4
|
+
import { ENGINE_API_VERSION } from "../core/version.js";
|
|
5
|
+
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
6
|
+
import { requireAllowlistedRecord, requirePublicOpaqueId } from "../core/record-validation.js";
|
|
7
|
+
import { freezeOwnedData } from "../core/owned-data.js";
|
|
8
|
+
import { parseCaptureModeProfile } from "../sensor/capture-mode.js";
|
|
9
|
+
import { parseSensorColorSamplingProfile } from "../sensor/color-sampling.js";
|
|
10
|
+
import { parseNativeEffectiveRasterColorSamplingBindingProfile, resolveCaptureModeColorSamplingContributors } from "../sensor/capture-color-sampling-binding.js";
|
|
11
|
+
import { calculateCaptureExposureWindows } from "../sensor/exposure-window.js";
|
|
12
|
+
import { SENSOR_RAW_PRODUCER_NOISE_MODEL, calculateNativeRawSite, parseNativeRawProducerSite, validateNativeRawReadoutIdentity } from "./sensor-raw-producer.js";
|
|
13
|
+
export const NATIVE_RAW_SCHEMA_VERSION = "0.1.0";
|
|
14
|
+
export const NATIVE_RAW_LIMITS = Object.freeze({ maximumPixels: 24_000_000, maximumDimension: 16_384,
|
|
15
|
+
tileWidth: 256, tileHeight: 1, outputBytesPerPixel: 7 });
|
|
16
|
+
function windows(exposure, schedule, points) {
|
|
17
|
+
const r = requireAllowlistedRecord(schedule, ["shutterMechanism", "nominalExposureDurationSeconds", "opening", "closing"], "Invalid RAW exposure schedule.");
|
|
18
|
+
requireAllowlistedRecord(r.nominalExposureDurationSeconds, ["value", "unit", "evidence"], "Invalid RAW nominal exposure.");
|
|
19
|
+
for (const boundary of [r.opening, r.closing]) {
|
|
20
|
+
const b = requireAllowlistedRecord(boundary, ["kind", "directionNative", "traversalDurationSeconds"], "Invalid RAW exposure boundary.");
|
|
21
|
+
if (b.directionNative !== undefined)
|
|
22
|
+
requireAllowlistedRecord(b.directionNative, ["value", "evidence"], "Invalid RAW scan direction.");
|
|
23
|
+
if (b.traversalDurationSeconds !== undefined)
|
|
24
|
+
requireAllowlistedRecord(b.traversalDurationSeconds, ["value", "unit", "evidence"], "Invalid RAW scan duration.");
|
|
25
|
+
}
|
|
26
|
+
const result = calculateCaptureExposureWindows({ ...schedule, nativeRaster: exposure.geometry.nativeRaster, samplePointsNative: points });
|
|
27
|
+
if (result.value.nominalExposureDurationSeconds.value !== exposure.exposure.shutterSeconds)
|
|
28
|
+
throw new InvalidConfigurationError("RAW schedule differs from exposure duration.");
|
|
29
|
+
return result.value;
|
|
30
|
+
}
|
|
31
|
+
/** Full raster/resource/profile admission before callbacks or output allocation; no placeholder plane. */
|
|
32
|
+
export function calculateNativeRawPlan(input) {
|
|
33
|
+
const r = requireAllowlistedRecord(input, ["exposure", "frameId", "modeId", "captureModeProfile", "colorSamplingProfile", "bindingProfile", "exposureWindow", "maximumOutputBytes", "tileWidth"], "Invalid native RAW input.");
|
|
34
|
+
if (r.tileWidth !== undefined && (typeof r.tileWidth !== "number" || !Number.isSafeInteger(r.tileWidth) || r.tileWidth < 1 || r.tileWidth > NATIVE_RAW_LIMITS.tileWidth))
|
|
35
|
+
throw new InvalidConfigurationError("Native RAW tile width must be an integer from 1 to 256.");
|
|
36
|
+
const tileWidth = r.tileWidth ?? NATIVE_RAW_LIMITS.tileWidth;
|
|
37
|
+
const exposure = normalizeCaptureExposureMetadata(r.exposure, ENGINE_API_VERSION, true), native = exposure.geometry.nativeRaster;
|
|
38
|
+
const pixelCount = native.pixelWidth * native.pixelHeight, outputBytes = pixelCount * NATIVE_RAW_LIMITS.outputBytesPerPixel;
|
|
39
|
+
if (pixelCount > NATIVE_RAW_LIMITS.maximumPixels || native.pixelWidth > NATIVE_RAW_LIMITS.maximumDimension || native.pixelHeight > NATIVE_RAW_LIMITS.maximumDimension ||
|
|
40
|
+
!Number.isSafeInteger(r.maximumOutputBytes) || typeof r.maximumOutputBytes !== "number" || r.maximumOutputBytes < outputBytes)
|
|
41
|
+
throw new InvalidConfigurationError("Native RAW raster exceeds output admission budget.");
|
|
42
|
+
const frame = { frameId: requirePublicOpaqueId(r.frameId, "Invalid RAW frame ID."), capture: exposure,
|
|
43
|
+
modeId: requirePublicOpaqueId(r.modeId, "Invalid RAW mode ID."), containerBitDepth: 16,
|
|
44
|
+
captureModeProfile: parseCaptureModeProfile(r.captureModeProfile), colorSamplingProfile: parseSensorColorSamplingProfile(r.colorSamplingProfile),
|
|
45
|
+
bindingProfile: parseNativeEffectiveRasterColorSamplingBindingProfile(r.bindingProfile) };
|
|
46
|
+
const mode = frame.captureModeProfile.modes.find(m => m.modeId === frame.modeId);
|
|
47
|
+
if (exposure.noise.model.id !== SENSOR_RAW_PRODUCER_NOISE_MODEL.id || exposure.noise.model.version !== SENSOR_RAW_PRODUCER_NOISE_MODEL.version ||
|
|
48
|
+
frame.colorSamplingProfile.layout.kind !== "periodic-mosaic" || mode?.acquisition.kind !== "single-frame" || mode.perFrameSampling.kind !== "native-effective-raster" || (mode.reconstructionStages?.length ?? 0) !== 0)
|
|
49
|
+
throw new InvalidConfigurationError("Native RAW requires exact noise identity and single-frame native periodic CFA.");
|
|
50
|
+
// Binding is global and affine; validate both corners before any provider work.
|
|
51
|
+
for (const p of [{ x: 0, y: 0 }, { x: native.pixelWidth - 1, y: native.pixelHeight - 1 }]) {
|
|
52
|
+
const c = resolveCaptureModeColorSamplingContributors({ nativeRaster: native, captureModeProfile: frame.captureModeProfile, modeId: frame.modeId, colorSamplingProfile: frame.colorSamplingProfile, bindingProfile: frame.bindingProfile, modeSampleIndexFullFrame: p });
|
|
53
|
+
if (c.totalContributorSites !== 1 || c.channelComposition.kind !== "single-channel")
|
|
54
|
+
throw new InvalidConfigurationError("Native RAW must preserve one native CFA site per sample.");
|
|
55
|
+
}
|
|
56
|
+
const schedule = r.exposureWindow === undefined ? undefined : structuredClone(r.exposureWindow);
|
|
57
|
+
// Supported linear scan extrema occur at raster corners. Check them before acquisition.
|
|
58
|
+
if (schedule)
|
|
59
|
+
windows(exposure, schedule, [{ x: .5, y: .5 }, { x: native.pixelWidth - .5, y: .5 }, { x: .5, y: native.pixelHeight - .5 }, { x: native.pixelWidth - .5, y: native.pixelHeight - .5 }]);
|
|
60
|
+
return freezeOwnedData({ schemaVersion: NATIVE_RAW_SCHEMA_VERSION, exposure, frame, pixelCount, outputBytes,
|
|
61
|
+
tileCount: Math.ceil(native.pixelWidth / tileWidth) * native.pixelHeight,
|
|
62
|
+
...(r.tileWidth === undefined ? {} : { tileWidth }),
|
|
63
|
+
...(schedule ? { exposureWindow: schedule } : {}), upstreamRadiometryVerified: false,
|
|
64
|
+
seedSchedule: "capture-seed-plus-two-native-index-modulo-2-to-32-v1" });
|
|
65
|
+
}
|
|
66
|
+
/** Executes validated EQE/dark/completeness events through the shared reference scalar physics. */
|
|
67
|
+
export function createNativeRawTask(input, provider) {
|
|
68
|
+
const plan = calculateNativeRawPlan(input);
|
|
69
|
+
if (!provider || typeof provider.readTile !== "function" || typeof provider.yieldControl !== "function")
|
|
70
|
+
throw new InvalidConfigurationError("Native RAW requires reader and host event-loop yield.");
|
|
71
|
+
const read = provider.readTile.bind(provider), yieldControl = provider.yieldControl.bind(provider), abort = new AbortController();
|
|
72
|
+
const native = plan.exposure.geometry.nativeRaster, tileWidth = plan.tileWidth ?? NATIVE_RAW_LIMITS.tileWidth;
|
|
73
|
+
let state = "ready", count = 0, output = null, first;
|
|
74
|
+
function release() { if (output) {
|
|
75
|
+
output.codes.fill(0);
|
|
76
|
+
output.blackLevels.fill(0);
|
|
77
|
+
output.digitalSaturationCodes.fill(0);
|
|
78
|
+
output.saturationFlags.fill(0);
|
|
79
|
+
} output = null; first = undefined; }
|
|
80
|
+
function active() { if (abort.signal.aborted)
|
|
81
|
+
throw new InvalidConfigurationError("Native RAW execution aborted."); }
|
|
82
|
+
return { plan, get state() { return state; }, get completedTileCount() { return count; },
|
|
83
|
+
async run() {
|
|
84
|
+
if (state !== "ready")
|
|
85
|
+
throw new InvalidConfigurationError("Native RAW task is single-use.");
|
|
86
|
+
state = "running";
|
|
87
|
+
try {
|
|
88
|
+
output = { plan, codes: new Uint16Array(plan.pixelCount), blackLevels: new Uint16Array(plan.pixelCount), digitalSaturationCodes: new Uint16Array(plan.pixelCount), saturationFlags: new Uint8Array(plan.pixelCount) };
|
|
89
|
+
for (let y = 0; y < native.pixelHeight; y++)
|
|
90
|
+
for (let x = 0; x < native.pixelWidth; x += tileWidth) {
|
|
91
|
+
active();
|
|
92
|
+
const request = Object.freeze({ captureId: plan.exposure.captureId, frameId: plan.frame.frameId, x, y, width: Math.min(tileWidth, native.pixelWidth - x), height: 1 });
|
|
93
|
+
{
|
|
94
|
+
const supplied = await read(request, abort.signal);
|
|
95
|
+
active();
|
|
96
|
+
const tile = requireAllowlistedRecord(supplied, ["captureId", "frameId", "x", "y", "width", "height", "sites"], "Invalid native RAW tile.");
|
|
97
|
+
for (const key of Object.keys(request))
|
|
98
|
+
if (tile[key] !== request[key])
|
|
99
|
+
throw new InvalidConfigurationError("Native RAW tile identity mismatch.");
|
|
100
|
+
if (!Array.isArray(tile.sites) || tile.sites.length !== request.width || Array.from({ length: request.width }, (_, i) => i in tile.sites).includes(false))
|
|
101
|
+
throw new InvalidConfigurationError("Native RAW tile needs exact dense coverage.");
|
|
102
|
+
const timing = plan.exposureWindow ? windows(plan.exposure, plan.exposureWindow, Array.from({ length: request.width }, (_, i) => ({ x: x + i + .5, y: y + .5 }))) : undefined;
|
|
103
|
+
const sites = tile.sites.map((site, j) => parseNativeRawProducerSite(site, y * native.pixelWidth + x + j, plan.frame, timing?.samples[j]));
|
|
104
|
+
first ??= sites[0];
|
|
105
|
+
for (const s of sites)
|
|
106
|
+
validateNativeRawReadoutIdentity(s, first);
|
|
107
|
+
// Every site in this tile is validated before writing owned output. Failures never publish partial output.
|
|
108
|
+
for (let j = 0; j < sites.length; j++) {
|
|
109
|
+
const index = y * native.pixelWidth + x + j, r = calculateNativeRawSite(sites[j], plan.exposure.noise.seedUint32, index).readout.value;
|
|
110
|
+
output.codes[index] = r.rawCode;
|
|
111
|
+
output.blackLevels[index] = r.blackLevelCode;
|
|
112
|
+
output.digitalSaturationCodes[index] = r.digitalSaturationCode;
|
|
113
|
+
output.saturationFlags[index] = Number(r.physicalScalarSaturationApplied) | Number(r.preAdcSaturationApplied) << 1 | Number(r.digitalSaturationApplied) << 2;
|
|
114
|
+
}
|
|
115
|
+
count++;
|
|
116
|
+
}
|
|
117
|
+
await yieldControl(abort.signal);
|
|
118
|
+
active();
|
|
119
|
+
}
|
|
120
|
+
first = undefined;
|
|
121
|
+
state = "completed";
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
release();
|
|
125
|
+
if (!abort.signal.aborted) {
|
|
126
|
+
state = "failed";
|
|
127
|
+
abort.abort();
|
|
128
|
+
}
|
|
129
|
+
throw error;
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
cancel() { if (state === "ready" || state === "running" || state === "completed") {
|
|
133
|
+
state = "cancelled";
|
|
134
|
+
abort.abort();
|
|
135
|
+
release();
|
|
136
|
+
} },
|
|
137
|
+
dispose() { if (state !== "transferred") {
|
|
138
|
+
state = "disposed";
|
|
139
|
+
abort.abort();
|
|
140
|
+
release();
|
|
141
|
+
} },
|
|
142
|
+
takeOutput() { if (state !== "completed" || !output)
|
|
143
|
+
throw new InvalidConfigurationError("Native RAW output unavailable."); const result = output; output = null; first = undefined; state = "transferred"; return result; }
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=native-raw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-raw.js","sourceRoot":"","sources":["../../src/capture/native-raw.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,8 @@ export interface RawFrameReconstruction {
|
|
|
41
41
|
sharpeningApplied: false;
|
|
42
42
|
denoisingApplied: false;
|
|
43
43
|
}
|
|
44
|
+
/** Internal phase dispatch parser shared with packed native reconstruction. */
|
|
45
|
+
export declare function parseRawReconstructionPhaseProfiles(value: unknown, modeId: string, colorSamplingProfile: SensorRawFrame["colorSamplingProfile"]): RawFrameReconstructionPhaseProfile[];
|
|
44
46
|
/** Revalidates committed RAW codes/geometry and complete phase dispatch; no external plane may supply output values. */
|
|
45
47
|
export declare function parseRawFrameReconstructionInput(value: unknown): RawFrameReconstructionInput;
|
|
46
48
|
/** Delegates each pixel to #14's explicit linear reconstruction using only the attached native RAW samples. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw-frame-reconstruction.d.ts","sourceRoot":"","sources":["../../src/capture/raw-frame-reconstruction.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAE5F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACL,KAAK,8BAA8B,EAAE,KAAK,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACjH,OAAO,EAAwB,KAAK,cAAc,EAA4B,MAAM,uBAAuB,CAAC;AAE5G,eAAO,MAAM,uCAAuC,EAAG,OAAgB,CAAC;AACxE,yGAAyG;AACzG,MAAM,WAAW,kCAAkC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,8BAA8B,CAAC;CACzC;AACD,0FAA0F;AAC1F,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,EAAE,SAAS,kCAAkC,EAAE,CAAC;CAC9D;AACD,8FAA8F;AAC9F,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,OAAO,uCAAuC,CAAC;IAC9D,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,SAAS,kCAAkC,EAAE,CAAC;IAC7D,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE;QACX,UAAU,EAAE,yBAAyB,CAAC;QACtC,aAAa,EAAE,8BAA8B,CAAC;QAC9C,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;QAC9B,0FAA0F;QAC1F,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;KAC5B,CAAC;IACF,uGAAuG;IACvG,MAAM,EAAE,SAAS,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,CAAC;IAClE,OAAO,EAAE,wCAAwC,CAAC;IAClD,sBAAsB,EAAE,KAAK,CAAC;IAC9B,mBAAmB,EAAE,KAAK,CAAC;IAC3B,qBAAqB,EAAE,KAAK,CAAC;IAC7B,0BAA0B,EAAE,KAAK,CAAC;IAClC,iBAAiB,EAAE,KAAK,CAAC;IACzB,iBAAiB,EAAE,KAAK,CAAC;IACzB,gBAAgB,EAAE,KAAK,CAAC;CACzB;AA6CD,wHAAwH;AACxH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,
|
|
1
|
+
{"version":3,"file":"raw-frame-reconstruction.d.ts","sourceRoot":"","sources":["../../src/capture/raw-frame-reconstruction.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAE5F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACL,KAAK,8BAA8B,EAAE,KAAK,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACjH,OAAO,EAAwB,KAAK,cAAc,EAA4B,MAAM,uBAAuB,CAAC;AAE5G,eAAO,MAAM,uCAAuC,EAAG,OAAgB,CAAC;AACxE,yGAAyG;AACzG,MAAM,WAAW,kCAAkC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,8BAA8B,CAAC;CACzC;AACD,0FAA0F;AAC1F,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,EAAE,SAAS,kCAAkC,EAAE,CAAC;CAC9D;AACD,8FAA8F;AAC9F,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,OAAO,uCAAuC,CAAC;IAC9D,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,SAAS,kCAAkC,EAAE,CAAC;IAC7D,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE;QACX,UAAU,EAAE,yBAAyB,CAAC;QACtC,aAAa,EAAE,8BAA8B,CAAC;QAC9C,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;QAC9B,0FAA0F;QAC1F,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;KAC5B,CAAC;IACF,uGAAuG;IACvG,MAAM,EAAE,SAAS,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,CAAC;IAClE,OAAO,EAAE,wCAAwC,CAAC;IAClD,sBAAsB,EAAE,KAAK,CAAC;IAC9B,mBAAmB,EAAE,KAAK,CAAC;IAC3B,qBAAqB,EAAE,KAAK,CAAC;IAC7B,0BAA0B,EAAE,KAAK,CAAC;IAClC,iBAAiB,EAAE,KAAK,CAAC;IACzB,iBAAiB,EAAE,KAAK,CAAC;IACzB,gBAAgB,EAAE,KAAK,CAAC;CACzB;AA6CD,+EAA+E;AAC/E,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAChF,oBAAoB,EAAE,cAAc,CAAC,sBAAsB,CAAC,GAAG,kCAAkC,EAAE,CAsBpG;AACD,wHAAwH;AACxH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,CAS5F;AACD,+GAA+G;AAC/G,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,2BAA2B,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,CAwC3H"}
|
|
@@ -67,29 +67,23 @@ function profile(value) {
|
|
|
67
67
|
}
|
|
68
68
|
return parseSensorRawReconstructionProfile(r);
|
|
69
69
|
}
|
|
70
|
-
/**
|
|
71
|
-
export function
|
|
72
|
-
const
|
|
73
|
-
const rect = object(r.region, ["x", "y", "width", "height"]);
|
|
74
|
-
const region = { x: integer(rect.x), y: integer(rect.y), width: integer(rect.width, true), height: integer(rect.height, true) };
|
|
75
|
-
if (region.x + region.width > rawFrame.nativePixelWidth || region.y + region.height > rawFrame.nativePixelHeight) {
|
|
76
|
-
throw new InvalidConfigurationError("Reconstruction region must lie within the full native RAW frame.");
|
|
77
|
-
}
|
|
78
|
-
const layout = rawFrame.colorSamplingProfile.layout;
|
|
70
|
+
/** Internal phase dispatch parser shared with packed native reconstruction. */
|
|
71
|
+
export function parseRawReconstructionPhaseProfiles(value, modeId, colorSamplingProfile) {
|
|
72
|
+
const layout = colorSamplingProfile.layout;
|
|
79
73
|
if (layout.kind !== "periodic-mosaic")
|
|
80
74
|
throw new InvalidConfigurationError("Reconstruction requires periodic native CFA.");
|
|
81
75
|
const phaseCount = layout.repeatWidthSites * layout.repeatHeightSites;
|
|
82
|
-
if (phaseCount > 64 || !Array.isArray(
|
|
76
|
+
if (phaseCount > 64 || !Array.isArray(value) || value.length !== phaseCount) {
|
|
83
77
|
throw new InvalidConfigurationError("Every CFA phase requires one profile, with a maximum of 64 phases.");
|
|
84
78
|
}
|
|
85
79
|
const phaseProfiles = [];
|
|
86
80
|
const phases = new Set();
|
|
87
81
|
let channels;
|
|
88
|
-
for (const
|
|
89
|
-
const p = object(
|
|
82
|
+
for (const entry of value) {
|
|
83
|
+
const p = object(entry, ["phaseX", "phaseY", "profile"]), phaseX = integer(p.phaseX), phaseY = integer(p.phaseY), parsed = profile(p.profile);
|
|
90
84
|
const key = phaseX + ":" + phaseY, ids = parsed.kernels.map((k) => k.outputChannelId);
|
|
91
85
|
if (phaseX >= layout.repeatWidthSites || phaseY >= layout.repeatHeightSites || phases.has(key) ||
|
|
92
|
-
parsed.captureModeId !==
|
|
86
|
+
parsed.captureModeId !== modeId || parsed.colorSamplingProfileId !== colorSamplingProfile.profileId ||
|
|
93
87
|
(channels && JSON.stringify(ids) !== JSON.stringify(channels))) {
|
|
94
88
|
throw new InvalidConfigurationError("CFA phase/profile identity or output-channel order is inconsistent.");
|
|
95
89
|
}
|
|
@@ -98,6 +92,17 @@ export function parseRawFrameReconstructionInput(value) {
|
|
|
98
92
|
phaseProfiles.push({ phaseX, phaseY, profile: parsed });
|
|
99
93
|
}
|
|
100
94
|
phaseProfiles.sort((a, b) => a.phaseY - b.phaseY || a.phaseX - b.phaseX);
|
|
95
|
+
return phaseProfiles;
|
|
96
|
+
}
|
|
97
|
+
/** Revalidates committed RAW codes/geometry and complete phase dispatch; no external plane may supply output values. */
|
|
98
|
+
export function parseRawFrameReconstructionInput(value) {
|
|
99
|
+
const r = object(value, ["rawFrame", "region", "phaseProfiles"]), rawFrame = frame(r.rawFrame);
|
|
100
|
+
const rect = object(r.region, ["x", "y", "width", "height"]);
|
|
101
|
+
const region = { x: integer(rect.x), y: integer(rect.y), width: integer(rect.width, true), height: integer(rect.height, true) };
|
|
102
|
+
if (region.x + region.width > rawFrame.nativePixelWidth || region.y + region.height > rawFrame.nativePixelHeight) {
|
|
103
|
+
throw new InvalidConfigurationError("Reconstruction region must lie within the full native RAW frame.");
|
|
104
|
+
}
|
|
105
|
+
const phaseProfiles = parseRawReconstructionPhaseProfiles(r.phaseProfiles, rawFrame.modeId, rawFrame.colorSamplingProfile);
|
|
101
106
|
return { rawFrame, region, phaseProfiles };
|
|
102
107
|
}
|
|
103
108
|
/** Delegates each pixel to #14's explicit linear reconstruction using only the attached native RAW samples. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw-frame-reconstruction.js","sourceRoot":"","sources":["../../src/capture/raw-frame-reconstruction.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"raw-frame-reconstruction.js","sourceRoot":"","sources":["../../src/capture/raw-frame-reconstruction.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,14 @@ export interface SensorRawProducerResult {
|
|
|
44
44
|
readout: ReturnType<typeof simulateSensorRawCode>;
|
|
45
45
|
}[];
|
|
46
46
|
}
|
|
47
|
+
/** Internal scalar validation shared by reference and bounded packed execution. */
|
|
48
|
+
export type NativeRawProducerFrameContext = Omit<SensorRawProducerInput["frame"], "capture"> & {
|
|
49
|
+
capture: Pick<SensorRawProducerInput["frame"]["capture"], "geometry" | "exposure" | "noise" | "focus" | "sceneStateId" | "sceneTimeSeconds">;
|
|
50
|
+
};
|
|
51
|
+
export declare function parseNativeRawProducerSite(site: unknown, i: number, frame: NativeRawProducerFrameContext, window?: CaptureExposureWindows["samples"][number]): SensorRawProducerSiteInput;
|
|
52
|
+
export declare function validateNativeRawReadoutIdentity(s: SensorRawProducerSiteInput, first: SensorRawProducerSiteInput): void;
|
|
53
|
+
/** The shared scalar pipeline owns all charge, capacity, stochastic and ADC equations. */
|
|
54
|
+
export declare function calculateNativeRawSite(s: SensorRawProducerSiteInput, seed: number, i: number): SensorRawProducerResult["sites"][number];
|
|
47
55
|
/** Validates complete native exposure inputs; no charge/noise/RAW code is accepted as a shortcut. */
|
|
48
56
|
export declare function parseSensorRawProducerInput(value: unknown): SensorRawProducerInput;
|
|
49
57
|
/** Composes existing accumulated-charge → capacity → Poisson → read noise/ADC → native sample → immutable frame contracts. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sensor-raw-producer.d.ts","sourceRoot":"","sources":["../../src/capture/sensor-raw-producer.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAI5F,OAAO,EAAwB,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EAAE,8BAA8B,EACrC,KAAK,wCAAwC,IAAI,mCAAmC,EAAE,MAAM,iCAAiC,CAAC;AAChI,OAAO,EAAE,kCAAkC,EACzC,KAAK,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,EAAE,+BAA+B,EAAE,qBAAqB,EACI,KAAK,2BAA2B,EAAE,KAAK,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAK3K,OAAO,EAAmC,KAAK,oCAAoC,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEvJ,eAAO,MAAM,kCAAkC,EAAG,OAAgB,CAAC;AACnE,mGAAmG;AACnG,eAAO,MAAM,+BAA+B;;;EAAgF,CAAC;AAC7H,2FAA2F;AAC3F,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,mCAAmC,CAAC;IAC5C,eAAe,EAAE,2BAA2B,CAAC;IAC7C,eAAe,EAAE,mCAAmC,CAAC;IACrD,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,8BAA8B,CAAC;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,kFAAkF;AAClF,MAAM,MAAM,oCAAoC,GAAG,IAAI,CAAC,oCAAoC,EAC1F,cAAc,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,CAAC;AAC/D,oFAAoF;AACpF,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAC5C,KAAK,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAC7C,+EAA+E;IAC/E,cAAc,CAAC,EAAE,oCAAoC,CAAC;CACvD;AACD,sGAAsG;AACtG,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,OAAO,kCAAkC,CAAC;IACzD,YAAY,EAAE,kCAAkC,CAAC;IACjD,cAAc,EAAE,wCAAwC,CAAC;IACzD,0BAA0B,EAAE,KAAK,CAAC;IAClC,YAAY,EAAE,sDAAsD,CAAC;IACrE,KAAK,EAAE,cAAc,CAAC;IACtB,oBAAoB,CAAC,EAAE,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;IACjE,KAAK,EAAE,SAAS;QACd,iBAAiB,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC;QACrE,QAAQ,EAAE,UAAU,CAAC,OAAO,kCAAkC,CAAC,CAAC;QAChE,WAAW,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC;QAChE,OAAO,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;KACnD,EAAE,CAAC;CACL;AAoHD,qGAAqG;AACrG,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,
|
|
1
|
+
{"version":3,"file":"sensor-raw-producer.d.ts","sourceRoot":"","sources":["../../src/capture/sensor-raw-producer.ts"],"names":[],"mappings":"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"}
|