@photivra/engine 1.2.0 → 1.4.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.
Files changed (235) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/CITATION.cff +1 -1
  3. package/README.md +6 -6
  4. package/dist/capture/environment-raw-producer.d.ts +6 -3
  5. package/dist/capture/environment-raw-producer.d.ts.map +1 -1
  6. package/dist/capture/environment-raw-producer.js +26 -15
  7. package/dist/capture/environment-raw-producer.js.map +1 -1
  8. package/dist/capture/export-jpeg.d.ts +9 -0
  9. package/dist/capture/export-jpeg.d.ts.map +1 -1
  10. package/dist/capture/export-jpeg.js +51 -12
  11. package/dist/capture/export-jpeg.js.map +1 -1
  12. package/dist/capture/native-environment-raw.d.ts +43 -0
  13. package/dist/capture/native-environment-raw.d.ts.map +1 -0
  14. package/dist/capture/native-environment-raw.js +81 -0
  15. package/dist/capture/native-environment-raw.js.map +1 -0
  16. package/dist/capture/native-raw-development.d.ts +39 -0
  17. package/dist/capture/native-raw-development.d.ts.map +1 -0
  18. package/dist/capture/native-raw-development.js +153 -0
  19. package/dist/capture/native-raw-development.js.map +1 -0
  20. package/dist/capture/native-raw.d.ts +79 -0
  21. package/dist/capture/native-raw.d.ts.map +1 -0
  22. package/dist/capture/native-raw.js +142 -0
  23. package/dist/capture/native-raw.js.map +1 -0
  24. package/dist/capture/raw-frame-reconstruction.d.ts +2 -0
  25. package/dist/capture/raw-frame-reconstruction.d.ts.map +1 -1
  26. package/dist/capture/raw-frame-reconstruction.js +18 -13
  27. package/dist/capture/raw-frame-reconstruction.js.map +1 -1
  28. package/dist/capture/sensor-raw-producer.d.ts +8 -0
  29. package/dist/capture/sensor-raw-producer.d.ts.map +1 -1
  30. package/dist/capture/sensor-raw-producer.js +43 -38
  31. package/dist/capture/sensor-raw-producer.js.map +1 -1
  32. package/dist/capture/simulated-capture.d.ts +8 -0
  33. package/dist/capture/simulated-capture.d.ts.map +1 -1
  34. package/dist/capture/simulated-capture.js +24 -13
  35. package/dist/capture/simulated-capture.js.map +1 -1
  36. package/dist/color/srgb-icc.d.ts +8 -0
  37. package/dist/color/srgb-icc.d.ts.map +1 -0
  38. package/dist/color/srgb-icc.js +67 -0
  39. package/dist/color/srgb-icc.js.map +1 -0
  40. package/dist/color/srgb-transfer.d.ts +4 -0
  41. package/dist/color/srgb-transfer.d.ts.map +1 -0
  42. package/dist/color/srgb-transfer.js +9 -0
  43. package/dist/color/srgb-transfer.js.map +1 -0
  44. package/dist/composition/image-formation-plan.d.ts.map +1 -1
  45. package/dist/composition/image-formation-plan.js +21 -9
  46. package/dist/composition/image-formation-plan.js.map +1 -1
  47. package/dist/core/version.d.ts +1 -1
  48. package/dist/core/version.js +1 -1
  49. package/dist/index.d.ts +12 -2
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +6 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/motion/camera-rotation.d.ts +8 -0
  54. package/dist/motion/camera-rotation.d.ts.map +1 -1
  55. package/dist/motion/camera-rotation.js +2 -1
  56. package/dist/motion/camera-rotation.js.map +1 -1
  57. package/dist/optics/sensor-aperture-rays.d.ts +56 -0
  58. package/dist/optics/sensor-aperture-rays.d.ts.map +1 -0
  59. package/dist/optics/sensor-aperture-rays.js +55 -0
  60. package/dist/optics/sensor-aperture-rays.js.map +1 -0
  61. package/dist/output/print-jpeg.d.ts +63 -0
  62. package/dist/output/print-jpeg.d.ts.map +1 -0
  63. package/dist/output/print-jpeg.js +141 -0
  64. package/dist/output/print-jpeg.js.map +1 -0
  65. package/dist/output/sdr-rendering.d.ts.map +1 -1
  66. package/dist/output/sdr-rendering.js +2 -1
  67. package/dist/output/sdr-rendering.js.map +1 -1
  68. package/dist/sensor/environment-photo-signal.d.ts +23 -5
  69. package/dist/sensor/environment-photo-signal.d.ts.map +1 -1
  70. package/dist/sensor/environment-photo-signal.js +53 -19
  71. package/dist/sensor/environment-photo-signal.js.map +1 -1
  72. package/dist/sensor/raw-reconstruction.d.ts +5 -0
  73. package/dist/sensor/raw-reconstruction.d.ts.map +1 -1
  74. package/dist/sensor/raw-reconstruction.js +21 -47
  75. package/dist/sensor/raw-reconstruction.js.map +1 -1
  76. package/docs/API_REFERENCE.md +87 -1
  77. package/docs/API_STYLE.md +1 -1
  78. package/docs/DEVELOPERS.md +5 -5
  79. package/docs/ENVIRONMENT_RAW_CAPTURE.md +24 -3
  80. package/docs/NATIVE_RAW_AND_PRINT.md +47 -0
  81. package/docs/RELEASE_1_3_0.md +15 -0
  82. package/docs/RELEASE_1_4_0.md +23 -0
  83. package/docs/SENSOR_APERTURE_RAYS.md +23 -0
  84. package/docs/api/camera-equivalent-focal-length.md +1 -1
  85. package/docs/api/camera-field-of-view.md +1 -1
  86. package/docs/api/camera-projected-object-size.md +1 -1
  87. package/docs/api/capture-capture-export-metadata.md +1 -1
  88. package/docs/api/capture-environment-raw-producer.md +3 -2
  89. package/docs/api/capture-focus-control.md +1 -1
  90. package/docs/api/capture-linear-encoding.md +1 -1
  91. package/docs/api/capture-native-environment-raw.md +88 -0
  92. package/docs/api/capture-native-raw-development.md +66 -0
  93. package/docs/api/capture-native-raw.md +157 -0
  94. package/docs/api/capture-photographic-export.md +1 -1
  95. package/docs/api/capture-raw-frame-reconstruction.md +1 -1
  96. package/docs/api/capture-release-sequence.md +1 -1
  97. package/docs/api/capture-sensor-raw-frame.md +1 -1
  98. package/docs/api/capture-sensor-raw-producer.md +1 -1
  99. package/docs/api/capture-simulated-capture.md +9 -1
  100. package/docs/api/color-capture-color.md +1 -1
  101. package/docs/api/color-srgb-icc.md +23 -0
  102. package/docs/api/color-white-balance.md +1 -1
  103. package/docs/api/composition-image-formation-plan.md +1 -1
  104. package/docs/api/composition-plan-consumer.md +1 -1
  105. package/docs/api/core-calculation-result.md +1 -1
  106. package/docs/api/core-configuration-error.md +1 -1
  107. package/docs/api/core-image-formation.md +1 -1
  108. package/docs/api/core-scientific-assurance.md +1 -1
  109. package/docs/api/core-spectral-composition.md +1 -1
  110. package/docs/api/core-spectral.md +1 -1
  111. package/docs/api/core-validation.md +1 -1
  112. package/docs/api/core-version.md +2 -2
  113. package/docs/api/equipment-exposure-capabilities.md +1 -1
  114. package/docs/api/equipment-generic-tier-assets.md +1 -1
  115. package/docs/api/equipment-generic-tier-presets.md +1 -1
  116. package/docs/api/equipment-iso-capabilities.md +1 -1
  117. package/docs/api/equipment-metering-capabilities.md +1 -1
  118. package/docs/api/equipment-release-capabilities.md +1 -1
  119. package/docs/api/exports.json +222 -2
  120. package/docs/api/exposure-exposure-duration-control.md +1 -1
  121. package/docs/api/exposure-exposure-mode-resolver.md +1 -1
  122. package/docs/api/exposure-exposure.md +1 -1
  123. package/docs/api/exposure-flash.md +1 -1
  124. package/docs/api/exposure-metering-scene-radiance.md +1 -1
  125. package/docs/api/exposure-metering-target.md +1 -1
  126. package/docs/api/exposure-metering-temporal.md +1 -1
  127. package/docs/api/exposure-metering.md +1 -1
  128. package/docs/api/exposure-program-line.md +1 -1
  129. package/docs/api/motion-camera-rotation.md +1 -1
  130. package/docs/api/motion-capture-rotation-inverse-mapping.md +1 -1
  131. package/docs/api/motion-capture-rotation-temporal-quadrature.md +1 -1
  132. package/docs/api/motion-capture-rotation-trajectory.md +1 -1
  133. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +1 -1
  134. package/docs/api/motion-extended-object-projection.md +1 -1
  135. package/docs/api/motion-projected-motion.md +1 -1
  136. package/docs/api/optics-aperture.md +1 -1
  137. package/docs/api/optics-circle-of-confusion.md +1 -1
  138. package/docs/api/optics-complex-pupil-psf.md +1 -1
  139. package/docs/api/optics-depth-of-field.md +1 -1
  140. package/docs/api/optics-diffraction.md +1 -1
  141. package/docs/api/optics-focus-breathing.md +1 -1
  142. package/docs/api/optics-focus-state.md +1 -1
  143. package/docs/api/optics-front-of-lens-filter.md +1 -1
  144. package/docs/api/optics-illumination-vignetting.md +1 -1
  145. package/docs/api/optics-lateral-chromatic-aberration.md +1 -1
  146. package/docs/api/optics-lens-psf-profile.md +1 -1
  147. package/docs/api/optics-polygon-diffraction.md +1 -1
  148. package/docs/api/optics-profile-contract.md +1 -1
  149. package/docs/api/optics-psf-foundation.md +1 -1
  150. package/docs/api/optics-radial-distortion.md +1 -1
  151. package/docs/api/optics-scene-to-sensor-irradiance.md +1 -1
  152. package/docs/api/optics-scene-to-sensor-quadrature.md +1 -1
  153. package/docs/api/optics-sensor-aperture-rays.md +75 -0
  154. package/docs/api/optics-sensor-environment-query.md +1 -1
  155. package/docs/api/optics-sensor-psf-quadrature.md +1 -1
  156. package/docs/api/optics-stray-light.md +1 -1
  157. package/docs/api/optics-thin-lens.md +1 -1
  158. package/docs/api/output-capture-corrected-sdr.md +1 -1
  159. package/docs/api/output-capture-geometry.md +1 -1
  160. package/docs/api/output-capture-sdr.md +1 -1
  161. package/docs/api/output-crop.md +1 -1
  162. package/docs/api/output-geometric-transforms.md +1 -1
  163. package/docs/api/output-lens-corrections.md +1 -1
  164. package/docs/api/output-native-capture-sdr.md +1 -1
  165. package/docs/api/output-print-contrast-reference.md +1 -1
  166. package/docs/api/output-print-detail.md +1 -1
  167. package/docs/api/output-print-jpeg.md +117 -0
  168. package/docs/api/output-print-plan.md +1 -1
  169. package/docs/api/output-print-region-statistics.md +1 -1
  170. package/docs/api/output-sdr-rendering.md +1 -1
  171. package/docs/api/output-subject-framing-crop.md +1 -1
  172. package/docs/api/schema-camera.md +1 -1
  173. package/docs/api/schema-illumination-spectral.md +1 -1
  174. package/docs/api/schema-illumination-temporal.md +1 -1
  175. package/docs/api/schema-illumination.md +1 -1
  176. package/docs/api/schema-scene-radiance-temporal.md +1 -1
  177. package/docs/api/schema-scene-radiance.md +1 -1
  178. package/docs/api/schema-scene.md +1 -1
  179. package/docs/api/schema-validation.md +1 -1
  180. package/docs/api/sensor-accumulated-charge.md +1 -1
  181. package/docs/api/sensor-architecture.md +1 -1
  182. package/docs/api/sensor-camera-saturation-capacity.md +1 -1
  183. package/docs/api/sensor-capture-color-sampling-binding.md +1 -1
  184. package/docs/api/sensor-capture-mode-timing.md +1 -1
  185. package/docs/api/sensor-capture-mode.md +1 -1
  186. package/docs/api/sensor-color-sampling.md +1 -1
  187. package/docs/api/sensor-constant-rate-temporal-integration.md +1 -1
  188. package/docs/api/sensor-dark-current.md +1 -1
  189. package/docs/api/sensor-environment-photo-signal.md +22 -3
  190. package/docs/api/sensor-eqe-electron-rate.md +1 -1
  191. package/docs/api/sensor-eqe-local-exposure.md +1 -1
  192. package/docs/api/sensor-eqe-temporal-exposure.md +1 -1
  193. package/docs/api/sensor-exposure-window.md +1 -1
  194. package/docs/api/sensor-iso-signal-chain.md +1 -1
  195. package/docs/api/sensor-local-exposure-binding.md +1 -1
  196. package/docs/api/sensor-optical-stack.md +1 -1
  197. package/docs/api/sensor-photon-energy.md +1 -1
  198. package/docs/api/sensor-physical-charge-capacity.md +1 -1
  199. package/docs/api/sensor-pixel-pitch.md +1 -1
  200. package/docs/api/sensor-radiometry-readiness.md +1 -1
  201. package/docs/api/sensor-raw-readout.md +1 -1
  202. package/docs/api/sensor-raw-reconstruction.md +1 -1
  203. package/docs/api/sensor-readout-exposure-linkage.md +1 -1
  204. package/docs/api/sensor-readout-timing.md +1 -1
  205. package/docs/api/sensor-response-application-compatibility.md +1 -1
  206. package/docs/api/sensor-response-operating-range.md +1 -1
  207. package/docs/api/sensor-responsivity-photocurrent.md +1 -1
  208. package/docs/api/sensor-sampling-aperture.md +1 -1
  209. package/docs/api/sensor-scene-eqe-temporal-exposure.md +1 -1
  210. package/docs/api/sensor-sensor-geometry.md +1 -1
  211. package/docs/api/sensor-signal-noise.md +1 -1
  212. package/docs/api/sensor-spatial-sample-reduction.md +1 -1
  213. package/docs/api/sensor-spatial-sampling-quadrature.md +1 -1
  214. package/docs/api/sensor-spatio-spectral-reduction.md +1 -1
  215. package/docs/api/sensor-spectral-coverage.md +1 -1
  216. package/docs/api/sensor-spectral-quadrature.md +1 -1
  217. package/docs/api/sensor-spectral-response.md +1 -1
  218. package/docs/api/sensor-temporal-photo-signal.md +1 -1
  219. package/docs/api/simulation-poc-simulation.md +1 -1
  220. package/docs/api/stabilization-camera-shake.md +1 -1
  221. package/docs/api/stabilization-system.md +1 -1
  222. package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
  223. package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
  224. package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
  225. package/docs/validation/native-raw-print-2026-10-04/manifest.json +218 -0
  226. package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
  227. package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
  228. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +9 -0
  229. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +29 -0
  230. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
  231. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
  232. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
  233. package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
  234. package/docs/validation/native-raw-print-2026-10-04/validation.json +41 -0
  235. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  # Changelog
2
2
 
3
- ## 1.2.0 candidate — review and publication pending
3
+ ## 1.4.0 — candidate, not published
4
+
5
+ - Add standalone evidence-bound ideal circular pupil rays and optional origin-aware bounded photo/RAW evaluation. Reuse shared focus and camera rotation, average normalized pupil irradiances before the existing sensor pipeline, and retain exact-once working-f-number throughput. Reject simultaneous sampled PSF, missing callbacks, invalid geometry and excessive budgets before provider work. Production depth/visibility composition remains unsupported. See `docs/SENSOR_APERTURE_RAYS.md`.
6
+
7
+ - Add separate metadata-only packed native RAW, physical source-to-RAW and same-RAW reconstruction/SDR tasks with explicit 24 MP admission, bounded tiles, absolute CFA/seed identities, cancellation and single-transfer ownership. Preserve the reference RAW caps and scalar mathematics.
8
+ - Add bounded post-SDR Print crop/area downsampling and original baseline JPEG encoding with an original sRGB ICC profile. Explicit source hashes remain caller declarations; platform save/share, printer appearance and physical device acceptance are separate.
9
+ - Record complete one-megapixel constructed RAW → SDR → downsampled JPEG execution and independently decoded JPEG/ICC/area-filter controls. See [native RAW and Print contracts](docs/NATIVE_RAW_AND_PRINT.md).
10
+
11
+ ## 1.3.0 — published
12
+
13
+ - Add evidence-bound radial illumination throughput to bounded environment photo/RAW execution, validating every inverse PSF tap before provider callbacks and applying attenuation once in physical sensor coordinates. Production composition requires explicit vignetting fidelity. Preserve unity arithmetic, resource limits and unverified transport flags.
14
+
15
+ ## 1.2.0 — published October 3, 2026
4
16
 
5
17
  - Add metadata-only external RGB tile execution with explicit 24 MP/resource limits, whole-capture identity, unchanged reference arithmetic, cancellation/disposal and single-transfer output ownership. See `docs/NATIVE_CAPTURE_SDR.md`; review/version/publication and native-producer/device qualification remain separate.
6
18
  - Add bounded paired linear processing differences and repeat-capture temporal statistics, plus a restricted MIT-licensed castleCSF static neutral Gabor contrast reference. Independently test arithmetic and owned public PSF, photocharge, JPEG, depth/defocus and motion paths. Full #196 source/backend/perception/product acceptance remains blocked; see `docs/PRINT_195_196_REVIEW.md`.
package/CITATION.cff CHANGED
@@ -9,7 +9,7 @@ abstract: "An open TypeScript engine for the science and mathematics of photogra
9
9
  repository-code: "https://github.com/photivra/photivra"
10
10
  url: "https://photivra.com"
11
11
  license: "Apache-2.0"
12
- version: "1.2.0"
12
+ version: "1.4.0"
13
13
  keywords:
14
14
  - photography
15
15
  - camera optics
package/README.md CHANGED
@@ -19,10 +19,10 @@ The standalone [Print planner](https://github.com/Photivra/photivra/blob/main/do
19
19
 
20
20
  ## Quick start
21
21
 
22
- After owner publication, install the ESM package below. During candidate review, use the verified tarball from the [release guide](https://github.com/Photivra/photivra/blob/main/docs/RELEASE_1_2_0.md):
22
+ After owner publication, install the ESM package below. During candidate review, use the verified tarball from the [release guide](https://github.com/Photivra/photivra/blob/main/docs/RELEASE_1_3_0.md):
23
23
 
24
24
  ```sh
25
- npm install @photivra/engine@1.2.0
25
+ npm install @photivra/engine@1.3.0
26
26
  ```
27
27
 
28
28
  Calculate horizontal field of view for a 36 mm sensor dimension and 50 mm focal length:
@@ -39,7 +39,7 @@ console.log(horizontal.value.degrees);
39
39
  console.log(horizontal.provenance);
40
40
  ```
41
41
 
42
- Start with the [Developer Guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md), then use the [Usage Guide](https://github.com/Photivra/photivra/blob/main/docs/USAGE.md) and [export-derived API reference](https://github.com/Photivra/photivra/blob/main/docs/API_REFERENCE.md). These documents describe the unpublished 1.2.0 candidate; use the published 1.1.0 baseline until owner publication.
42
+ Start with the [Developer Guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md), then use the [Usage Guide](https://github.com/Photivra/photivra/blob/main/docs/USAGE.md) and [export-derived API reference](https://github.com/Photivra/photivra/blob/main/docs/API_REFERENCE.md). These documents describe the unpublished 1.3.0 candidate; use the published 1.2.0 baseline until 1.3.0 publication.
43
43
 
44
44
  ## Documentation
45
45
 
@@ -267,13 +267,13 @@ The calling application can then use those results while keeping the underlying
267
267
 
268
268
  ## Status
269
269
 
270
- - Repository package version: `1.2.0` (release candidate; publication is separate)
271
- - Engine API contract: `1.2.0`
270
+ - Repository package version: `1.3.0` (release candidate; publication is separate)
271
+ - Engine API contract: `1.3.0`
272
272
  - Versioned generic tier reference assets: [GENERIC_TIER_PRESETS.md](https://github.com/Photivra/photivra/blob/main/docs/GENERIC_TIER_PRESETS.md).
273
273
  - Composed POC simulation API contract: `0.20.0`
274
274
  - Stability: 1.0 root-package compatibility policy; bounded scientific models and independent POC contract
275
275
 
276
- From 1.0.1, package version and `ENGINE_API_VERSION` are equal. New captures/plans record 1.2.0; existing archives retain their original creator identities. Schema, model and POC contract versions remain independent. Breaking root contracts now require a package major release; additive and corrective changes follow [compatibility and migration](https://github.com/Photivra/photivra/blob/main/docs/RELEASE_1_2_0.md). A 1.0 package is not a claim of calibrated physical accuracy.
276
+ From 1.0.1, package version and `ENGINE_API_VERSION` are equal. New captures/plans record 1.3.0; existing archives retain their original creator identities. Schema, model and POC contract versions remain independent. Breaking root contracts now require a package major release; additive and corrective changes follow [compatibility and migration](https://github.com/Photivra/photivra/blob/main/docs/RELEASE_1_3_0.md). A 1.0 package is not a claim of calibrated physical accuracy.
277
277
 
278
278
  Creating a GitHub release/tag and publishing `@photivra/engine` are separate release actions. The tag-triggered publish workflow verifies that the `vX.Y.Z` tag matches the package version before publishing.
279
279
 
@@ -8,9 +8,9 @@
8
8
  */
9
9
  import { type EvidenceProvenance } from "../core/evidence-provenance.js";
10
10
  import { type CalculationResult } from "../core/calculation-result.js";
11
- import { simulateSensorRawFrame, type SensorRawProducerInput, type SensorRawProducerSiteInput } from "./sensor-raw-producer.js";
11
+ import { simulateSensorRawFrame, type SensorRawProducerInput, type SensorRawProducerSiteInput, type NativeRawProducerFrameContext, type SensorRawProducerExposureWindowInput } from "./sensor-raw-producer.js";
12
12
  import { type SensorDarkCurrentProfile } from "../sensor/dark-current.js";
13
- import { executeEnvironmentSensorPhotoSignal, type CalculateEnvironmentSensorPhotoSignalInput, type EnvironmentRadianceEvaluator } from "../sensor/environment-photo-signal.js";
13
+ import { planEnvironmentSensorPhotoSignal, executeEnvironmentSensorPhotoSignal, type CalculateEnvironmentSensorPhotoSignalInput, type EnvironmentRadianceEvaluator, type EnvironmentApertureRadianceEvaluator } from "../sensor/environment-photo-signal.js";
14
14
  /** Full native site order; generated photo/dark charge cannot be supplied as a shortcut. */
15
15
  export interface SimulateEnvironmentSensorRawFrameInput {
16
16
  frame: SensorRawProducerInput["frame"];
@@ -22,13 +22,14 @@ export interface SimulateEnvironmentSensorRawFrameInput {
22
22
  /** Shared shutter schedule is bound to the committed frame duration. */
23
23
  exposureWindow: NonNullable<SensorRawProducerInput["exposureWindow"]>;
24
24
  sites: readonly {
25
- environment: Omit<CalculateEnvironmentSensorPhotoSignalInput, "evaluateRadiance">;
25
+ environment: Omit<CalculateEnvironmentSensorPhotoSignalInput, "evaluateRadiance" | "evaluateApertureRadiance">;
26
26
  darkCurrentProfile: SensorDarkCurrentProfile;
27
27
  operatingTemperatureC: number;
28
28
  charge: Omit<SensorRawProducerSiteInput["charge"], "photoSignal" | "darkCharge">;
29
29
  readout: Omit<SensorRawProducerSiteInput, "charge">;
30
30
  }[];
31
31
  evaluateRadiance: EnvironmentRadianceEvaluator;
32
+ evaluateApertureRadiance?: EnvironmentApertureRadianceEvaluator;
32
33
  }
33
34
  /**
34
35
  * Approximate executed provider-to-RAW lineage. sites retain per-site optical/EQE
@@ -46,6 +47,8 @@ export interface EnvironmentSensorRawFrame {
46
47
  sites: readonly ReturnType<typeof executeEnvironmentSensorPhotoSignal>[];
47
48
  raw: ReturnType<typeof simulateSensorRawFrame>;
48
49
  }
50
+ /** Internal frame-binding and scalar optical/EQE planning shared with bounded native execution. */
51
+ export declare function planEnvironmentRawSite(site: SimulateEnvironmentSensorRawFrameInput["sites"][number], i: number, frame: NativeRawProducerFrameContext, sceneBinding: SimulateEnvironmentSensorRawFrameInput["sceneBinding"], exposureWindow: SensorRawProducerExposureWindowInput): ReturnType<typeof planEnvironmentSensorPhotoSignal>;
49
52
  /**
50
53
  * Preflight complete native coverage and aggregate support before invoking supplied
51
54
  * provider code, then reuse dark/completeness/capacity/noise/ADC ownership. The
@@ -1 +1 @@
1
- {"version":3,"file":"environment-raw-producer.d.ts","sourceRoot":"","sources":["../../src/capture/environment-raw-producer.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAG5F,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAI5F,OAAO,EAAE,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,KAAK,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAChI,OAAO,EAAoC,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC5G,OAAO,EAAoC,mCAAmC,EAC5E,KAAK,0CAA0C,EAAE,KAAK,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAOpI,4FAA4F;AAC5F,MAAM,WAAW,sCAAsC;IACrD,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACvC,YAAY,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAA;KAAE,CAAC;IACzG,wEAAwE;IACxE,cAAc,EAAE,WAAW,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACtE,KAAK,EAAE,SAAS;QACd,WAAW,EAAE,IAAI,CAAC,0CAA0C,EAAE,kBAAkB,CAAC,CAAC;QAClF,kBAAkB,EAAE,wBAAwB,CAAC;QAC7C,qBAAqB,EAAE,MAAM,CAAC;QAC9B,MAAM,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC,CAAC;QACjF,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;KACrD,EAAE,CAAC;IACJ,gBAAgB,EAAE,4BAA4B,CAAC;CAChD;AACD;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,oDAAoD,CAAC;IACrE,yBAAyB,EAAE,KAAK,CAAC;IACjC,uBAAuB,EAAE,KAAK,CAAC;IAC/B,uBAAuB,EAAE,MAAM,CAAC;IAChC,YAAY,EAAE,sCAAsC,CAAC,cAAc,CAAC,CAAC;IACrE,KAAK,EAAE,SAAS,UAAU,CAAC,OAAO,mCAAmC,CAAC,EAAE,CAAC;IACzE,GAAG,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;CAChD;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,sCAAsC,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,CAoD7I"}
1
+ {"version":3,"file":"environment-raw-producer.d.ts","sourceRoot":"","sources":["../../src/capture/environment-raw-producer.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAG5F,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAI5F,OAAO,EAAE,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,KAAK,0BAA0B,EAAE,KAAK,6BAA6B,EAAE,KAAK,oCAAoC,EAAE,MAAM,0BAA0B,CAAC;AAC/M,OAAO,EAAoC,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC5G,OAAO,EAAE,gCAAgC,EAAE,mCAAmC,EAC5E,KAAK,0CAA0C,EAAE,KAAK,4BAA4B,EAAE,KAAK,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAO/K,4FAA4F;AAC5F,MAAM,WAAW,sCAAsC;IACrD,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACvC,YAAY,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAA;KAAE,CAAC;IACzG,wEAAwE;IACxE,cAAc,EAAE,WAAW,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACtE,KAAK,EAAE,SAAS;QACd,WAAW,EAAE,IAAI,CAAC,0CAA0C,EAAE,kBAAkB,GAAG,0BAA0B,CAAC,CAAC;QAC/G,kBAAkB,EAAE,wBAAwB,CAAC;QAC7C,qBAAqB,EAAE,MAAM,CAAC;QAC9B,MAAM,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC,CAAC;QACjF,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;KACrD,EAAE,CAAC;IACJ,gBAAgB,EAAE,4BAA4B,CAAC;IAC/C,wBAAwB,CAAC,EAAE,oCAAoC,CAAC;CACjE;AACD;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,oDAAoD,CAAC;IACrE,yBAAyB,EAAE,KAAK,CAAC;IACjC,uBAAuB,EAAE,KAAK,CAAC;IAC/B,uBAAuB,EAAE,MAAM,CAAC;IAChC,YAAY,EAAE,sCAAsC,CAAC,cAAc,CAAC,CAAC;IACrE,KAAK,EAAE,SAAS,UAAU,CAAC,OAAO,mCAAmC,CAAC,EAAE,CAAC;IACzE,GAAG,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;CAChD;AAED,mGAAmG;AACnG,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,sCAAsC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAC7G,KAAK,EAAE,6BAA6B,EAAE,YAAY,EAAE,sCAAsC,CAAC,cAAc,CAAC,EAC1G,cAAc,EAAE,oCAAoC,GAAG,UAAU,CAAC,OAAO,gCAAgC,CAAC,CAe3G;AACD;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,sCAAsC,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,CA6C7I"}
@@ -21,13 +21,31 @@ function canonical(value) {
21
21
  return stringifyCanonicalJson(value, { undefinedObjectProperties: "omit",
22
22
  nonFiniteNumberMessage: "Environment capture binding must be finite.", unsupportedValueMessage: "Environment capture binding requires plain data." });
23
23
  }
24
+ /** Internal frame-binding and scalar optical/EQE planning shared with bounded native execution. */
25
+ export function planEnvironmentRawSite(site, i, frame, sceneBinding, exposureWindow) {
26
+ const capture = frame.capture, native = capture.geometry.nativeRaster;
27
+ const e = site.environment, sensor = e.sensor;
28
+ if (sensor.spatialSampling.site.x !== i % native.pixelWidth || sensor.spatialSampling.site.y !== Math.floor(i / native.pixelWidth) ||
29
+ canonical(sensor.spatialSampling.imagingArea) !== canonical(capture.geometry.imagingArea) ||
30
+ canonical(sensor.colorSamplingProfile) !== canonical(frame.colorSamplingProfile) ||
31
+ canonical(sensor.localExposure.bindingProfile) !== canonical(frame.bindingProfile) ||
32
+ canonical(sensor.localExposure.exposureWindowInput) !== canonical({ ...exposureWindow, nativeRaster: native }) ||
33
+ e.optics.focalLengthMm !== capture.exposure.focalLengthMm || e.optics.nominalFNumber !== capture.exposure.aperture) {
34
+ throw new InvalidScientificInputError("Environment site, frame geometry/profiles, optics and exact shutter event must match the committed capture.");
35
+ }
36
+ const plan = planEnvironmentSensorPhotoSignal(e);
37
+ if (canonical(plan.focus) !== canonical(capture.focus) ||
38
+ e.sceneBindings.providerProfile.sceneId !== sceneBinding.providerSceneId)
39
+ throw new InvalidScientificInputError("Environment optical focus and provider scene must match the committed capture binding.");
40
+ return plan;
41
+ }
24
42
  /**
25
43
  * Preflight complete native coverage and aggregate support before invoking supplied
26
44
  * provider code, then reuse dark/completeness/capacity/noise/ADC ownership. The
27
45
  * returned RAW frame feeds the existing reconstruction and paired export APIs.
28
46
  */
29
47
  export function simulateEnvironmentSensorRawFrame(input) {
30
- const { evaluateRadiance, ...data } = input;
48
+ const { evaluateRadiance, evaluateApertureRadiance, ...data } = input;
31
49
  if (typeof evaluateRadiance !== "function")
32
50
  throw new InvalidScientificInputError("Environment RAW requires a synchronous evaluator.");
33
51
  const owned = structuredClone(data);
@@ -44,32 +62,25 @@ export function simulateEnvironmentSensorRawFrame(input) {
44
62
  let evaluations = 0;
45
63
  const ids = new Set();
46
64
  const sharedState = (e) => canonical({
47
- sceneBindings: e.sceneBindings, optics: e.optics, motion: e.motion, psf: e.psf, fieldThroughput: e.fieldThroughput
65
+ sceneBindings: e.sceneBindings, optics: e.optics, motion: e.motion, psf: e.psf, pupil: e.pupil, fieldThroughput: e.fieldThroughput
48
66
  });
49
67
  const plans = Array.from(owned.sites, (site, i) => {
50
68
  if (!site)
51
69
  throw new InvalidScientificInputError("Environment RAW site array must be dense.");
52
- const e = site.environment, sensor = e.sensor;
53
- if (sensor.spatialSampling.site.x !== i % native.pixelWidth || sensor.spatialSampling.site.y !== Math.floor(i / native.pixelWidth) ||
54
- canonical(sensor.spatialSampling.imagingArea) !== canonical(capture.geometry.imagingArea) ||
55
- canonical(sensor.colorSamplingProfile) !== canonical(owned.frame.colorSamplingProfile) ||
56
- canonical(sensor.localExposure.bindingProfile) !== canonical(owned.frame.bindingProfile) ||
57
- canonical(sensor.localExposure.exposureWindowInput) !== canonical({ ...owned.exposureWindow, nativeRaster: native }) ||
58
- e.optics.focalLengthMm !== capture.exposure.focalLengthMm || e.optics.nominalFNumber !== capture.exposure.aperture ||
59
- ids.has(e.temporalIntegrationId) || sharedState(e) !== sharedState(owned.sites[0].environment)) {
70
+ const e = site.environment;
71
+ if (ids.has(e.temporalIntegrationId) || sharedState(e) !== sharedState(owned.sites[0].environment)) {
60
72
  throw new InvalidScientificInputError("Environment site, frame geometry/profiles, optics and exact shutter event must match the committed capture.");
61
73
  }
62
- const plan = planEnvironmentSensorPhotoSignal(e);
63
- if (canonical(plan.focus) !== canonical(capture.focus) ||
64
- e.sceneBindings.providerProfile.sceneId !== owned.sceneBinding.providerSceneId)
65
- throw new InvalidScientificInputError("Environment optical focus and provider scene must match the committed capture binding.");
74
+ const plan = planEnvironmentRawSite(site, i, owned.frame, owned.sceneBinding, owned.exposureWindow);
66
75
  ids.add(e.temporalIntegrationId);
67
76
  evaluations += plan.count;
68
77
  if (evaluations > 100000)
69
78
  throw new InvalidScientificInputError("Environment RAW exceeds the aggregate 100000-provider-evaluation budget.");
70
79
  return plan;
71
80
  });
72
- const sites = plans.map(plan => executeEnvironmentSensorPhotoSignal(plan, evaluateRadiance));
81
+ if (plans.some(plan => plan.owned.pupil !== undefined) && typeof evaluateApertureRadiance !== "function")
82
+ throw new InvalidScientificInputError("Pupil capture requires an origin-aware aperture evaluator before any callback.");
83
+ const sites = plans.map(plan => executeEnvironmentSensorPhotoSignal(plan, evaluateRadiance, evaluateApertureRadiance));
73
84
  const raw = simulateSensorRawFrame({ frame: owned.frame, exposureWindow: owned.exposureWindow,
74
85
  sites: owned.sites.map((s, i) => {
75
86
  const photoSignal = sites[i].value.photo.value.photoSignal;
@@ -1 +1 @@
1
- {"version":3,"file":"environment-raw-producer.js","sourceRoot":"","sources":["../../src/capture/environment-raw-producer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment-raw-producer.js","sourceRoot":"","sources":["../../src/capture/environment-raw-producer.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,13 @@ export interface ExportJpegInput {
9
9
  }
10
10
  /** Independent analytical DCT implementation; no third-party encoder, source, default quantization or Huffman tables. */
11
11
  export declare function encodeExportJpeg(input: ExportJpegInput): Uint8Array;
12
+ /** Internal bounded sink; reference and scalable exports share DCT/entropy equations exactly. */
13
+ export declare function createExportJpegEncoder(input: Omit<ExportJpegInput, "samples"> & {
14
+ maximumOutputBytes: number;
15
+ icc?: Uint8Array;
16
+ }): {
17
+ writeRgbBlock(samples: readonly number[]): void;
18
+ finish(): Uint8Array;
19
+ dispose(): void;
20
+ };
12
21
  //# sourceMappingURL=export-jpeg.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-jpeg.d.ts","sourceRoot":"","sources":["../../src/capture/export-jpeg.ts"],"names":[],"mappings":"AAYA,+HAA+H;AAC/H,MAAM,WAAW,eAAe;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE;AAC3J,yHAAyH;AACzH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CA6EnE"}
1
+ {"version":3,"file":"export-jpeg.d.ts","sourceRoot":"","sources":["../../src/capture/export-jpeg.ts"],"names":[],"mappings":"AAYA,+HAA+H;AAC/H,MAAM,WAAW,eAAe;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE;AAC3J,yHAAyH;AACzH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAgBnE;AACD,iGAAiG;AACjG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAC,SAAS,CAAC,GAAG;IAAC,kBAAkB,EAAC,MAAM,CAAC;IAAA,GAAG,CAAC,EAAC,UAAU,CAAA;CAAC,GAAG;IAC7H,aAAa,CAAC,OAAO,EAAC,SAAS,MAAM,EAAE,GAAE,IAAI,CAAC;IAAC,MAAM,IAAG,UAAU,CAAC;IAAC,OAAO,IAAG,IAAI,CAAC;CACpF,CAyFA"}
@@ -14,15 +14,42 @@ export function encodeExportJpeg(input) {
14
14
  q < 1 || q > 255 || samples.length !== width * height * 3 || Array.from(samples).some((v) => !Number.isInteger(v) || v < 0 || v > 255)) {
15
15
  throw new InvalidConfigurationError("Unsupported baseline JPEG input.");
16
16
  }
17
- const bytes = [255, 216];
17
+ const encoder = createExportJpegEncoder({ ...input, maximumOutputBytes: 1_000_000 });
18
+ for (let by = 0; by < height; by += 8)
19
+ for (let bx = 0; bx < width; bx += 8) {
20
+ const block = [];
21
+ for (let y = 0; y < 8; y++)
22
+ for (let x = 0; x < 8; x++) {
23
+ const p = (Math.min(by + y, height - 1) * width + Math.min(bx + x, width - 1)) * 3;
24
+ block.push(samples[p], samples[p + 1], samples[p + 2]);
25
+ }
26
+ encoder.writeRgbBlock(block);
27
+ }
28
+ return encoder.finish();
29
+ }
30
+ /** Internal bounded sink; reference and scalable exports share DCT/entropy equations exactly. */
31
+ export function createExportJpegEncoder(input) {
32
+ const { width, height, quantizationStep: q } = input;
33
+ if (![width, height, q, input.maximumOutputBytes].every(Number.isSafeInteger) || width < 1 || height < 1 || width > 65535 || height > 65535 || q < 1 || q > 255 || input.maximumOutputBytes < 1 || input.maximumOutputBytes > 256_000_000)
34
+ throw new InvalidConfigurationError("Invalid bounded JPEG encoding plan.");
35
+ const storage = new Uint8Array(input.maximumOutputBytes);
36
+ let offset = 0, disposed = false, blocks = 0;
37
+ const push = (...values) => { if (disposed || offset + values.length > storage.length)
38
+ throw new InvalidConfigurationError("JPEG output exceeds admitted byte budget or is disposed."); storage.set(values, offset); offset += values.length; };
39
+ push(255, 216);
18
40
  const marker = (id, payload) => {
19
41
  if (payload.length > 65533)
20
42
  throw new InvalidConfigurationError("JPEG metadata segment exceeds the standard APP limit.");
21
- bytes.push(255, id, (payload.length + 2) >> 8, (payload.length + 2) & 255, ...payload);
43
+ push(255, id, (payload.length + 2) >> 8, (payload.length + 2) & 255, ...payload);
22
44
  };
23
45
  marker(224, [74, 70, 73, 70, 0, 1, 2, 0, 0, 1, 0, 1, 0, 0]);
24
46
  marker(225, [69, 120, 105, 102, 0, 0, ...input.exif]);
25
47
  marker(225, [...new TextEncoder().encode("http://ns.adobe.com/xap/1.0/\0"), ...input.xmp]);
48
+ if (input.icc) {
49
+ if (input.icc.length > 65519)
50
+ throw new InvalidConfigurationError("ICC profile exceeds the single-segment encoding envelope.");
51
+ marker(226, [...new TextEncoder().encode("ICC_PROFILE\0"), 1, 1, ...input.icc]);
52
+ }
26
53
  marker(219, [0, ...Array(64).fill(q)]);
27
54
  marker(192, [8, height >> 8, height & 255, width >> 8, width & 255, 3, 1, 17, 0, 2, 17, 0, 3, 17, 0]);
28
55
  // DC categories 0..11 use 4-bit codes; AC EOB/ZRL and all baseline run/category pairs use 8-bit codes.
@@ -40,9 +67,9 @@ export function encodeExportJpeg(input) {
40
67
  accumulator = (accumulator << 1) | ((value >> i) & 1);
41
68
  bits++;
42
69
  if (bits === 8) {
43
- bytes.push(accumulator);
70
+ push(accumulator);
44
71
  if (accumulator === 255)
45
- bytes.push(0);
72
+ push(0);
46
73
  accumulator = 0;
47
74
  bits = 0;
48
75
  }
@@ -74,14 +101,16 @@ export function encodeExportJpeg(input) {
74
101
  */
75
102
  const cosine = Array.from({ length: 8 }, (_, u) => Array.from({ length: 8 }, (_, x) => Math.cos((2 * x + 1) * u * Math.PI / 16)));
76
103
  const previous = [0, 0, 0];
77
- for (let by = 0; by < height; by += 8)
78
- for (let bx = 0; bx < width; bx += 8) {
104
+ return {
105
+ writeRgbBlock(samples) {
106
+ if (disposed || blocks >= Math.ceil(width / 8) * Math.ceil(height / 8) || samples.length !== 192 || Array.from(samples).some(v => !Number.isInteger(v) || v < 0 || v > 255))
107
+ throw new InvalidConfigurationError("JPEG requires complete bounded RGB coding blocks.");
79
108
  for (let channel = 0; channel < 3; channel++) {
80
109
  const block = [];
81
110
  for (let y = 0; y < 8; y++)
82
111
  for (let x = 0; x < 8; x++) {
83
112
  // JPEG coding pads partial 8x8 MCUs only; this never changes the declared photograph/crop dimensions.
84
- const p = (Math.min(by + y, height - 1) * width + Math.min(bx + x, width - 1)) * 3;
113
+ const p = (y * 8 + x) * 3;
85
114
  const red = samples[p], green = samples[p + 1], blue = samples[p + 2], luminance = .299 * red + .587 * green + .114 * blue;
86
115
  block.push(channel === 0 ? luminance - 128 : channel === 1 ? (blue - luminance) / (2 * (1 - .114)) : (red - luminance) / (2 * (1 - .299)));
87
116
  }
@@ -117,10 +146,20 @@ export function encodeExportJpeg(input) {
117
146
  if (zeroes)
118
147
  emit(0, 8);
119
148
  }
120
- }
121
- if (bits)
122
- emit((1 << (8 - bits)) - 1, 8 - bits);
123
- bytes.push(255, 217);
124
- return Uint8Array.from(bytes);
149
+ blocks++;
150
+ },
151
+ finish() {
152
+ if (disposed || blocks !== Math.ceil(width / 8) * Math.ceil(height / 8))
153
+ throw new InvalidConfigurationError("JPEG cannot finish incomplete or disposed encoding.");
154
+ if (bits)
155
+ emit((1 << (8 - bits)) - 1, 8 - bits);
156
+ push(255, 217);
157
+ const output = storage.slice(0, offset);
158
+ storage.fill(0);
159
+ disposed = true;
160
+ return output;
161
+ },
162
+ dispose() { storage.fill(0); disposed = true; }
163
+ };
125
164
  }
126
165
  //# sourceMappingURL=export-jpeg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-jpeg.js","sourceRoot":"","sources":["../../src/capture/export-jpeg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export-jpeg.js","sourceRoot":"","sources":["../../src/capture/export-jpeg.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;GAMG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAI3E,yHAAyH;AACzH,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;IAC9D,IAAI,CAAC,CAAC,KAAK,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,GAAC,MAAM,GAAG,IAAI;QAC/F,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,GAAC,MAAM,GAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;QACvI,MAAM,IAAI,yBAAyB,CAAC,kCAAkC,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,OAAO,GAAC,uBAAuB,CAAC,EAAC,GAAG,KAAK,EAAC,kBAAkB,EAAC,SAAS,EAAC,CAAC,CAAC;IAC/E,KAAI,IAAI,EAAE,GAAC,CAAC,EAAC,EAAE,GAAC,MAAM,EAAC,EAAE,IAAE,CAAC;QAAC,KAAI,IAAI,EAAE,GAAC,CAAC,EAAC,EAAE,GAAC,KAAK,EAAC,EAAE,IAAE,CAAC,EAAC,CAAC;YACxD,MAAM,KAAK,GAAU,EAAE,CAAC;YACxB,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,EAAE;gBAAC,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC;oBACvC,MAAM,CAAC,GAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAC,CAAC,EAAC,MAAM,GAAC,CAAC,CAAC,GAAC,KAAK,GAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAC,CAAC,EAAC,KAAK,GAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC;oBACjE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,EAAC,OAAO,CAAC,CAAC,GAAC,CAAC,CAAE,EAAC,OAAO,CAAC,CAAC,GAAC,CAAC,CAAE,CAAC,CAAC;gBACtD,CAAC;YACD,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC1B,CAAC;AACD,iGAAiG;AACjG,MAAM,UAAU,uBAAuB,CAAC,KAAoF;IAG1H,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,gBAAgB,EAAC,CAAC,EAAC,GAAC,KAAK,CAAC;IAC9C,IAAG,CAAC,CAAC,KAAK,EAAC,MAAM,EAAC,CAAC,EAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAE,KAAK,GAAC,CAAC,IAAE,MAAM,GAAC,CAAC,IAAE,KAAK,GAAC,KAAK,IAAE,MAAM,GAAC,KAAK,IAAE,CAAC,GAAC,CAAC,IAAE,CAAC,GAAC,GAAG,IAAE,KAAK,CAAC,kBAAkB,GAAC,CAAC,IAAE,KAAK,CAAC,kBAAkB,GAAC,WAAW;QACnM,MAAM,IAAI,yBAAyB,CAAC,qCAAqC,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAC,IAAI,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAAA,IAAI,MAAM,GAAC,CAAC,EAAC,QAAQ,GAAC,KAAK,EAAC,MAAM,GAAC,CAAC,CAAC;IAC5F,MAAM,IAAI,GAAC,CAAC,GAAG,MAAe,EAAM,EAAE,GAAC,IAAG,QAAQ,IAAE,MAAM,GAAC,MAAM,CAAC,MAAM,GAAC,OAAO,CAAC,MAAM;QAAC,MAAM,IAAI,yBAAyB,CAAC,0DAA0D,CAAC,CAAC,CAAA,OAAO,CAAC,GAAG,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC,CAAA,MAAM,IAAE,MAAM,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC;IAC3O,IAAI,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC;IACd,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,OAA0B,EAAQ,EAAE;QAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK;YAAE,MAAM,IAAI,yBAAyB,CAAC,uDAAuD,CAAC,CAAC;QACzH,IAAI,CAAC,GAAG,EAAC,EAAE,EAAC,CAAC,OAAO,CAAC,MAAM,GAAC,CAAC,CAAC,IAAE,CAAC,EAAC,CAAC,OAAO,CAAC,MAAM,GAAC,CAAC,CAAC,GAAC,GAAG,EAAC,GAAG,OAAO,CAAC,CAAC;IACvE,CAAC,CAAC;IACF,MAAM,CAAC,GAAG,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,GAAG,EAAC,CAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,EAAC,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,gCAAgC,CAAC,EAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACzF,IAAG,KAAK,CAAC,GAAG,EAAC,CAAC;QACZ,IAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAC,KAAK;YAAC,MAAM,IAAI,yBAAyB,CAAC,2DAA2D,CAAC,CAAC;QAC3H,MAAM,CAAC,GAAG,EAAC,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,CAAC,GAAG,EAAC,CAAC,CAAC,EAAC,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,EAAC,CAAC,CAAC,EAAC,MAAM,IAAE,CAAC,EAAC,MAAM,GAAC,GAAG,EAAC,KAAK,IAAE,CAAC,EAAC,KAAK,GAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,uGAAuG;IACvG,6FAA6F;IAC7F,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,EAAE,EAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAC,GAAG,CAAC,CAAC;IAC5D,KAAK,IAAI,GAAG,GAAC,CAAC,EAAC,GAAG,GAAC,EAAE,EAAC,GAAG,EAAE;QAAE,KAAK,IAAI,IAAI,GAAC,CAAC,EAAC,IAAI,IAAE,EAAE,EAAC,IAAI,EAAE;YAAE,EAAE,CAAC,IAAI,CAAC,GAAG,GAAC,EAAE,GAAC,IAAI,CAAC,CAAC;IACnF,MAAM,CAAC,GAAG,EAAC,CAAC,CAAC,EAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,EAAE,EAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAE;QACpE,EAAE,EAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,EAAE,EAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,GAAG,EAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,WAAW,GAAC,CAAC,EAAE,IAAI,GAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,KAAa,EAAQ,EAAE;QAClD,KAAK,IAAI,CAAC,GAAC,KAAK,GAAC,CAAC,EAAC,CAAC,IAAE,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC;YAC5B,WAAW,GAAC,CAAC,WAAW,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,KAAK,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;YAAC,IAAI,EAAE,CAAC;YACpD,IAAI,IAAI,KAAG,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAAC,IAAI,WAAW,KAAG,GAAG;oBAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAC,WAAW,GAAC,CAAC,CAAC;gBAAC,IAAI,GAAC,CAAC,CAAC;YAAC,CAAC;QAC7F,CAAC;IACH,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,GAAW,EAAU,EAAE;QACvD,MAAM,IAAI,GAAC,KAAK,KAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC;QACpE,IAAI,IAAI,GAAC,GAAG;YAAE,MAAM,IAAI,yBAAyB,CAAC,kDAAkD,CAAC,CAAC;QACtG,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,IAAY,EAAQ,EAAE,GAAG,IAAI,IAAI;QAAE,IAAI,CAAC,KAAK,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAC,CAAC,CAAC,IAAE,IAAI,CAAC,GAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1H,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,QAAQ,GAAC,CAAC,EAAC,QAAQ,IAAE,EAAE,EAAC,QAAQ,EAAE,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC;YAAC,MAAM,CAAC,GAAC,QAAQ,GAAC,CAAC,CAAC;YAAC,IAAI,CAAC,IAAE,CAAC,IAAI,CAAC,GAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAC,CAAC,KAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,CAAC;IACH;;;;;OAKG;IACD,MAAM,MAAM,GAAC,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,GAAC,IAAI,CAAC,EAAE,GAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACvB,OAAO;QACL,aAAa,CAAC,OAAyB;YACrC,IAAG,QAAQ,IAAE,MAAM,IAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAC,CAAC,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC,IAAE,OAAO,CAAC,MAAM,KAAG,GAAG,IAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAE,CAAC,GAAC,CAAC,IAAE,CAAC,GAAC,GAAG,CAAC;gBAAC,MAAM,IAAI,yBAAyB,CAAC,mDAAmD,CAAC,CAAC;YAC5O,KAAK,IAAI,OAAO,GAAC,CAAC,EAAC,OAAO,GAAC,CAAC,EAAC,OAAO,EAAE,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,KAAK,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,EAAE;oBAAE,KAAK,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC;wBAC3C,sGAAsG;wBACtG,MAAM,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC;wBAClB,MAAM,GAAG,GAAC,OAAO,CAAC,CAAC,CAAE,EAAE,KAAK,GAAC,OAAO,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,IAAI,GAAC,OAAO,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,SAAS,GAAC,IAAI,GAAC,GAAG,GAAC,IAAI,GAAC,KAAK,GAAC,IAAI,GAAC,IAAI,CAAC;wBACxG,KAAK,CAAC,IAAI,CAAC,OAAO,KAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAC,GAAG,CAAC,CAAC,CAAC,OAAO,KAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAC,SAAS,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC,GAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAC,SAAS,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC,GAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACvH,CAAC;gBACD,MAAM,WAAW,GAAa,EAAE,CAAC;gBACjC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,EAAE;oBAAE,KAAK,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC;wBAC3C,IAAI,GAAG,GAAC,CAAC,CAAC;wBAAC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,EAAE;4BAAE,KAAK,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,EAAE;gCAAE,GAAG,IAAE,KAAK,CAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAE,GAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC;wBACxG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAC,GAAG,GAAC,CAAC,CAAC,KAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,KAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC;oBAChG,CAAC;gBACD,MAAM,UAAU,GAAC,WAAW,CAAC,CAAC,CAAE,GAAC,QAAQ,CAAC,OAAO,CAAE,EAAE,IAAI,GAAC,SAAS,CAAC,UAAU,EAAC,EAAE,CAAC,CAAC;gBAAC,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;gBAAC,WAAW,CAAC,UAAU,EAAC,IAAI,CAAC,CAAC;gBAAC,QAAQ,CAAC,OAAO,CAAC,GAAC,WAAW,CAAC,CAAC,CAAE,CAAC;gBAClK,IAAI,MAAM,GAAC,CAAC,CAAC;gBACb,KAAK,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,EAAE,EAAC,CAAC,EAAE,EAAE,CAAC;oBACtB,MAAM,KAAK,GAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAE,CAAE,CAAC;oBACrC,IAAI,KAAK,KAAG,CAAC,EAAE,CAAC;wBAAC,MAAM,EAAE,CAAC;wBAAC,SAAS;oBAAC,CAAC;oBACtC,OAAO,MAAM,IAAE,EAAE,EAAE,CAAC;wBAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;wBAAC,MAAM,IAAE,EAAE,CAAC;oBAAC,CAAC;oBAC7C,MAAM,MAAM,GAAC,SAAS,CAAC,KAAK,EAAC,EAAE,CAAC,EAAE,MAAM,GAAC,MAAM,GAAC,EAAE,GAAC,MAAM,CAAC;oBAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC,CAAC;oBAAC,WAAW,CAAC,KAAK,EAAC,MAAM,CAAC,CAAC;oBAAC,MAAM,GAAC,CAAC,CAAC;gBAC7H,CAAC;gBACD,IAAI,MAAM;oBAAE,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,EAAE,CAAC;QACT,CAAC;QACD,MAAM;YACJ,IAAG,QAAQ,IAAE,MAAM,KAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAC,CAAC,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC;gBAAC,MAAM,IAAI,yBAAyB,CAAC,qDAAqD,CAAC,CAAC;YACxJ,IAAG,IAAI;gBAAC,IAAI,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,GAAC,IAAI,CAAC,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC;YAAA,MAAM,MAAM,GAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC,MAAM,CAAC,CAAC;YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAA,QAAQ,GAAC,IAAI,CAAC;YAAA,OAAO,MAAM,CAAC;QACjG,CAAC;QACD,OAAO,KAAS,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA,QAAQ,GAAC,IAAI,CAAC,CAAA,CAAC;KAChD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,43 @@
1
+ /** Bounded source-radiance → optical/EQE → native packed RAW execution. */
2
+ import { type NativeRawInput, type NativeRawOutput, type NativeRawTask, type NativeRawTileRequest } from "./native-raw.js";
3
+ import { type SimulateEnvironmentSensorRawFrameInput } from "./environment-raw-producer.js";
4
+ export interface NativeEnvironmentRawInput {
5
+ raw: NativeRawInput;
6
+ sceneBinding: SimulateEnvironmentSensorRawFrameInput["sceneBinding"];
7
+ /** Full-event admission budget; maximum 2 billion calls. No convergence is inferred. */
8
+ maximumProviderEvaluations: number;
9
+ }
10
+ export interface NativeEnvironmentRawTile extends NativeRawTileRequest {
11
+ sites: SimulateEnvironmentSensorRawFrameInput["sites"];
12
+ }
13
+ export interface NativeEnvironmentRawProvider {
14
+ /** Supplies physical site profiles, not photo counts or precomputed RAW codes. */
15
+ readTile(request: Readonly<NativeRawTileRequest>, signal: AbortSignal): Promise<NativeEnvironmentRawTile>;
16
+ evaluateRadiance: SimulateEnvironmentSensorRawFrameInput["evaluateRadiance"];
17
+ evaluateApertureRadiance?: SimulateEnvironmentSensorRawFrameInput["evaluateApertureRadiance"];
18
+ /** Optional bounded diagnostic observer; counts are expectation values before any noise/clamp/ADC. */
19
+ observePhotoTile?(tile: Readonly<NativeEnvironmentPhotoTile>, signal: AbortSignal): void | Promise<void>;
20
+ yieldControl(signal: AbortSignal): Promise<void>;
21
+ }
22
+ export interface NativeEnvironmentPhotoTile extends NativeRawTileRequest {
23
+ sites: readonly {
24
+ nativeIndex: number;
25
+ expectedIncidentPhotonCount: number;
26
+ expectedGeneratedElectronCount: number;
27
+ }[];
28
+ }
29
+ export interface NativeEnvironmentRawOutput {
30
+ raw: NativeRawOutput;
31
+ sceneBinding: NativeEnvironmentRawInput["sceneBinding"];
32
+ providerEvaluationCount: number;
33
+ upstreamOrigin: "executed-environment-query-provider-optics-psf-eqe";
34
+ providerTransportVerified: false;
35
+ productionPlanActivated: false;
36
+ }
37
+ export interface NativeEnvironmentRawTask extends Omit<NativeRawTask, "takeOutput"> {
38
+ readonly providerEvaluationCount: number;
39
+ takeOutput(): NativeEnvironmentRawOutput;
40
+ }
41
+ /** Every tile is planned and admission-checked before its radiance callbacks; no partial output escapes. */
42
+ export declare function createNativeEnvironmentRawTask(input: NativeEnvironmentRawInput, provider: NativeEnvironmentRawProvider): NativeEnvironmentRawTask;
43
+ //# sourceMappingURL=native-environment-raw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-environment-raw.d.ts","sourceRoot":"","sources":["../../src/capture/native-environment-raw.ts"],"names":[],"mappings":"AAEA,2EAA2E;AAC3E,OAAO,EAA+C,KAAK,cAAc,EAAE,KAAK,eAAe,EAC7F,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAA2B,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAA0B,KAAK,sCAAsC,EAAE,MAAM,+BAA+B,CAAC;AASpH,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,cAAc,CAAC;IACpB,YAAY,EAAE,sCAAsC,CAAC,cAAc,CAAC,CAAC;IACrE,wFAAwF;IACxF,0BAA0B,EAAE,MAAM,CAAC;CACpC;AACD,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IACpE,KAAK,EAAE,sCAAsC,CAAC,OAAO,CAAC,CAAC;CACxD;AACD,MAAM,WAAW,4BAA4B;IAC3C,kFAAkF;IAClF,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EAAC,MAAM,EAAC,WAAW,GAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACvG,gBAAgB,EAAE,sCAAsC,CAAC,kBAAkB,CAAC,CAAC;IAC7E,wBAAwB,CAAC,EAAE,sCAAsC,CAAC,0BAA0B,CAAC,CAAC;IAC9F,sGAAsG;IACtG,gBAAgB,CAAC,CAAC,IAAI,EAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAC,MAAM,EAAC,WAAW,GAAE,IAAI,GAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnG,YAAY,CAAC,MAAM,EAAC,WAAW,GAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AACD,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,KAAK,EAAC,SAAS;QAAC,WAAW,EAAC,MAAM,CAAC;QAAA,2BAA2B,EAAC,MAAM,CAAC;QAAA,8BAA8B,EAAC,MAAM,CAAA;KAAC,EAAE,CAAC;CAChH;AACD,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,eAAe,CAAC;IACrB,YAAY,EAAE,yBAAyB,CAAC,cAAc,CAAC,CAAC;IACxD,uBAAuB,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,oDAAoD,CAAC;IACrE,yBAAyB,EAAE,KAAK,CAAC;IACjC,uBAAuB,EAAE,KAAK,CAAC;CAChC;AACD,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,aAAa,EAAC,YAAY,CAAC;IAChF,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,UAAU,IAAI,0BAA0B,CAAC;CAC1C;AAID,4GAA4G;AAC5G,wBAAgB,8BAA8B,CAAC,KAAK,EAAC,yBAAyB,EAAC,QAAQ,EAAC,4BAA4B,GAAE,wBAAwB,CAkD7I"}
@@ -0,0 +1,81 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /** Bounded source-radiance → optical/EQE → native packed RAW execution. */
3
+ import { calculateNativeRawPlan, createNativeRawTask } from "./native-raw.js";
4
+ import { planEnvironmentRawSite } from "./environment-raw-producer.js";
5
+ import { executeEnvironmentSensorPhotoSignal } from "../sensor/environment-photo-signal.js";
6
+ import { calculateSensorDarkCurrentCharge } from "../sensor/dark-current.js";
7
+ import { parseEvidenceList } from "../core/evidence-provenance.js";
8
+ import { requireAllowlistedRecord, requirePublicOpaqueId } from "../core/record-validation.js";
9
+ import { stringifyCanonicalJson } from "../core/canonical-json.js";
10
+ import { freezeOwnedData } from "../core/owned-data.js";
11
+ import { InvalidConfigurationError } from "../core/configuration-error.js";
12
+ function canonical(value) {
13
+ return stringifyCanonicalJson(value, { undefinedObjectProperties: "omit", nonFiniteNumberMessage: "Invalid native scene binding.", unsupportedValueMessage: "Invalid native scene binding." });
14
+ }
15
+ /** Every tile is planned and admission-checked before its radiance callbacks; no partial output escapes. */
16
+ export function createNativeEnvironmentRawTask(input, provider) {
17
+ const r = requireAllowlistedRecord(input, ["raw", "sceneBinding", "maximumProviderEvaluations"], "Invalid native environment input.");
18
+ const plan = calculateNativeRawPlan(input.raw), binding = requireAllowlistedRecord(r.sceneBinding, ["sceneStateId", "providerSceneId", "evidence"], "Invalid native scene binding.");
19
+ const sceneBinding = freezeOwnedData({ sceneStateId: requirePublicOpaqueId(binding.sceneStateId, "Invalid scene-state ID."), providerSceneId: requirePublicOpaqueId(binding.providerSceneId, "Invalid provider-scene ID."), evidence: parseEvidenceList(binding.evidence, "nativeEnvironmentSceneBinding.evidence") });
20
+ if (sceneBinding.sceneStateId !== plan.exposure.sceneStateId || plan.exposure.sceneTimeSeconds !== 0 || !plan.exposureWindow ||
21
+ typeof r.maximumProviderEvaluations !== "number" || !Number.isSafeInteger(r.maximumProviderEvaluations) || r.maximumProviderEvaluations < plan.pixelCount || r.maximumProviderEvaluations > 2_000_000_000)
22
+ throw new InvalidConfigurationError("Native environment requires opening-reference scene binding, an explicit shutter event and bounded full-event query budget.");
23
+ if (!provider || typeof provider.readTile !== "function" || typeof provider.evaluateRadiance !== "function" || typeof provider.yieldControl !== "function" ||
24
+ (provider.evaluateApertureRadiance !== undefined && typeof provider.evaluateApertureRadiance !== "function") ||
25
+ (provider.observePhotoTile !== undefined && typeof provider.observePhotoTile !== "function"))
26
+ throw new InvalidConfigurationError("Native environment requires physical source callbacks and host yields.");
27
+ const read = provider.readTile.bind(provider), evaluate = provider.evaluateRadiance.bind(provider), aperture = provider.evaluateApertureRadiance?.bind(provider), yieldControl = provider.yieldControl.bind(provider);
28
+ const maximum = r.maximumProviderEvaluations, observe = provider.observePhotoTile?.bind(provider);
29
+ let evaluations = 0, shared;
30
+ const task = createNativeRawTask(input.raw, {
31
+ async readTile(request, signal) {
32
+ const supplied = await read(request, signal);
33
+ if (signal.aborted)
34
+ throw new InvalidConfigurationError("Native environment acquisition aborted.");
35
+ const tile = requireAllowlistedRecord(supplied, ["captureId", "frameId", "x", "y", "width", "height", "sites"], "Invalid physical source tile.");
36
+ for (const key of Object.keys(request))
37
+ if (tile[key] !== request[key])
38
+ throw new InvalidConfigurationError("Physical source tile identity mismatch.");
39
+ if (!Array.isArray(tile.sites) || tile.sites.length !== request.width || Array.from({ length: request.width }, (_, i) => i in tile.sites).includes(false))
40
+ throw new InvalidConfigurationError("Physical source tile needs exact native coverage.");
41
+ const sites = structuredClone(tile.sites);
42
+ let tileCount = 0;
43
+ const plans = sites.map((site, j) => {
44
+ requireAllowlistedRecord(site, ["environment", "darkCurrentProfile", "operatingTemperatureC", "charge", "readout"], "Invalid physical site input.");
45
+ const e = site.environment, index = request.y * plan.exposure.geometry.nativeRaster.pixelWidth + request.x + j;
46
+ if (e.temporalIntegrationId !== plan.frame.frameId + ":native:" + index)
47
+ throw new InvalidConfigurationError("Native environment IDs must bind the absolute native index.");
48
+ const state = canonical({ sceneBindings: e.sceneBindings, optics: e.optics, motion: e.motion, psf: e.psf, pupil: e.pupil, fieldThroughput: e.fieldThroughput });
49
+ shared ??= state;
50
+ if (state !== shared)
51
+ throw new InvalidConfigurationError("Native event requires one shared source/optical/motion state.");
52
+ const p = planEnvironmentRawSite(site, request.y * plan.exposure.geometry.nativeRaster.pixelWidth + request.x + j, plan.frame, sceneBinding, plan.exposureWindow);
53
+ if (p.owned.pupil && !aperture)
54
+ throw new InvalidConfigurationError("Pupil capture requires origin-aware source visibility.");
55
+ tileCount += p.count;
56
+ if (tileCount > 100_000 || evaluations + tileCount > maximum)
57
+ throw new InvalidConfigurationError("Native environment exceeds tile or full-event query budget.");
58
+ return p;
59
+ });
60
+ const rawSites = sites.map((site, j) => {
61
+ const result = executeEnvironmentSensorPhotoSignal(plans[j], q => { if (signal.aborted)
62
+ throw new InvalidConfigurationError("Native source evaluation aborted."); evaluations++; return evaluate(q); }, aperture ? (q, ray) => { if (signal.aborted)
63
+ throw new InvalidConfigurationError("Native aperture evaluation aborted."); evaluations++; return aperture(q, ray); } : undefined);
64
+ const photoSignal = result.value.photo.value.photoSignal;
65
+ const darkCharge = calculateSensorDarkCurrentCharge({ exposure: photoSignal, darkCurrentProfile: site.darkCurrentProfile, operatingTemperatureC: site.operatingTemperatureC }).value;
66
+ return { ...site.readout, charge: { ...site.charge, photoSignal, darkCharge } };
67
+ });
68
+ if (signal.aborted)
69
+ throw new InvalidConfigurationError("Native photo observation aborted.");
70
+ if (observe)
71
+ await observe(freezeOwnedData({ ...request, sites: rawSites.map((s, j) => ({ nativeIndex: request.y * plan.exposure.geometry.nativeRaster.pixelWidth + request.x + j,
72
+ expectedIncidentPhotonCount: s.charge.photoSignal.expectedIncidentPhotonCount, expectedGeneratedElectronCount: s.charge.photoSignal.expectedGeneratedElectronCount })) }), signal);
73
+ return { ...request, sites: rawSites };
74
+ }, yieldControl
75
+ });
76
+ return { plan: task.plan, get state() { return task.state; }, get completedTileCount() { return task.completedTileCount; }, get providerEvaluationCount() { return evaluations; },
77
+ run: () => task.run(), cancel: () => task.cancel(), dispose: () => task.dispose(),
78
+ takeOutput() { return { raw: task.takeOutput(), sceneBinding, providerEvaluationCount: evaluations, upstreamOrigin: "executed-environment-query-provider-optics-psf-eqe", providerTransportVerified: false, productionPlanActivated: false }; }
79
+ };
80
+ }
81
+ //# sourceMappingURL=native-environment-raw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-environment-raw.js","sourceRoot":"","sources":["../../src/capture/native-environment-raw.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /** Exact packed RAW reconstruction and shared color/SDR development, with bounded pixel tiles. */
2
+ import { type NativeRawOutput, type NativeRawTaskState } from "./native-raw.js";
3
+ import { type RawFrameReconstructionPhaseProfile } from "./raw-frame-reconstruction.js";
4
+ import { type ExportSensorColorProfile } from "./photographic-export.js";
5
+ import { type SdrRenderingProfile, type SdrRenderingResult } from "../output/sdr-rendering.js";
6
+ export interface NativeRawDevelopmentInput {
7
+ raw: NativeRawOutput;
8
+ phaseProfiles: readonly RawFrameReconstructionPhaseProfile[];
9
+ colorProfile: ExportSensorColorProfile;
10
+ whiteBalance: "not-required" | "apply-resolved-sensor-gains";
11
+ rendering: SdrRenderingProfile;
12
+ /** Includes one owned packed RAW copy plus integer output; not caller buffers, process heap or GPU. */
13
+ maximumRetainedPayloadBytes: number;
14
+ }
15
+ export interface NativeRawDevelopmentOutput {
16
+ raw: NativeRawOutput;
17
+ phaseProfiles: readonly RawFrameReconstructionPhaseProfile[];
18
+ colorProfile: ExportSensorColorProfile;
19
+ whiteBalance: NativeRawDevelopmentInput["whiteBalance"];
20
+ width: number;
21
+ height: number;
22
+ integerSamples: Uint8Array | Uint16Array;
23
+ diagnostics: SdrRenderingResult["diagnostics"];
24
+ outputEncoding: SdrRenderingResult["outputEncoding"];
25
+ rendering: SdrRenderingProfile;
26
+ displayAdaptation: SdrRenderingResult["displayAdaptation"];
27
+ imageDataPairing: "derived-from-exact-packed-native-raw";
28
+ producerOriginVerified: false;
29
+ }
30
+ export interface NativeRawDevelopmentTask {
31
+ readonly state: NativeRawTaskState;
32
+ run(): Promise<void>;
33
+ cancel(): void;
34
+ dispose(): void;
35
+ takeOutput(): NativeRawDevelopmentOutput;
36
+ }
37
+ /** Validates complete phase/halo support, snapshots RAW once, and yields between 256-pixel output tiles. */
38
+ export declare function createNativeRawDevelopmentTask(input: NativeRawDevelopmentInput, yieldControl: (signal: AbortSignal) => Promise<void>): NativeRawDevelopmentTask;
39
+ //# sourceMappingURL=native-raw-development.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-raw-development.d.ts","sourceRoot":"","sources":["../../src/capture/native-raw-development.ts"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,OAAO,EAA+C,KAAK,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC7H,OAAO,EAAuC,KAAK,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAG7H,OAAO,EAAiC,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAExG,OAAO,EAAmD,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAOhJ,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,eAAe,CAAC;IACrB,aAAa,EAAE,SAAS,kCAAkC,EAAE,CAAC;IAC7D,YAAY,EAAE,wBAAwB,CAAC;IACvC,YAAY,EAAE,cAAc,GAAG,6BAA6B,CAAC;IAC7D,SAAS,EAAE,mBAAmB,CAAC;IAC/B,uGAAuG;IACvG,2BAA2B,EAAE,MAAM,CAAC;CACrC;AACD,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,eAAe,CAAC;IACrB,aAAa,EAAE,SAAS,kCAAkC,EAAE,CAAC;IAC7D,YAAY,EAAE,wBAAwB,CAAC;IACvC,YAAY,EAAE,yBAAyB,CAAC,cAAc,CAAC,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,UAAU,GAAG,WAAW,CAAC;IACzC,WAAW,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC/C,cAAc,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACrD,SAAS,EAAE,mBAAmB,CAAC;IAC/B,iBAAiB,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IAC3D,gBAAgB,EAAE,sCAAsC,CAAC;IACzD,sBAAsB,EAAE,KAAK,CAAC;CAC/B;AACD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;IAChB,UAAU,IAAI,0BAA0B,CAAC;CAC1C;AAkBD,4GAA4G;AAC5G,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,yBAAyB,EAC7E,YAAY,EAAE,CAAC,MAAM,EAAC,WAAW,KAAG,OAAO,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAsE7E"}