@photivra/engine 1.5.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1078) hide show
  1. package/CHANGELOG.md +393 -6
  2. package/CITATION.cff +1 -1
  3. package/NODE_SUPPORT.md +64 -12
  4. package/README.md +301 -182
  5. package/SECURITY.md +37 -28
  6. package/THIRD_PARTY.md +148 -4
  7. package/dist/camera/equivalent-focal-length.d.ts +13 -14
  8. package/dist/camera/equivalent-focal-length.js +15 -13
  9. package/dist/camera/equivalent-focal-length.js.map +1 -1
  10. package/dist/camera/field-of-view.d.ts +30 -19
  11. package/dist/camera/field-of-view.js +67 -18
  12. package/dist/camera/field-of-view.js.map +1 -1
  13. package/dist/camera/lens-projection.d.ts +170 -0
  14. package/dist/camera/lens-projection.js +444 -0
  15. package/dist/camera/lens-projection.js.map +1 -0
  16. package/dist/camera/projected-object-size.d.ts +10 -11
  17. package/dist/camera/projected-object-size.js +12 -10
  18. package/dist/camera/projected-object-size.js.map +1 -1
  19. package/dist/capture/capture-export-metadata.d.ts +9 -10
  20. package/dist/capture/capture-export-metadata.js +8 -5
  21. package/dist/capture/capture-export-metadata.js.map +1 -1
  22. package/dist/capture/dng-import.d.ts +91 -0
  23. package/dist/capture/dng-import.js +343 -0
  24. package/dist/capture/dng-import.js.map +1 -0
  25. package/dist/capture/environment-raw-producer.d.ts +37 -17
  26. package/dist/capture/environment-raw-producer.js +43 -19
  27. package/dist/capture/environment-raw-producer.js.map +1 -1
  28. package/dist/capture/export-jpeg.d.ts +35 -4
  29. package/dist/capture/export-jpeg.js +133 -47
  30. package/dist/capture/export-jpeg.js.map +1 -1
  31. package/dist/capture/export-tiff.d.ts +48 -24
  32. package/dist/capture/export-tiff.js +91 -31
  33. package/dist/capture/export-tiff.js.map +1 -1
  34. package/dist/capture/focus-control.d.ts +42 -65
  35. package/dist/capture/focus-control.js +56 -75
  36. package/dist/capture/focus-control.js.map +1 -1
  37. package/dist/capture/host-yield-cadence.d.ts +25 -0
  38. package/dist/capture/host-yield-cadence.js +25 -0
  39. package/dist/capture/host-yield-cadence.js.map +1 -0
  40. package/dist/capture/linear-encoding.d.ts +14 -12
  41. package/dist/capture/linear-encoding.js +14 -13
  42. package/dist/capture/linear-encoding.js.map +1 -1
  43. package/dist/capture/lossless-jpeg.d.ts +27 -0
  44. package/dist/capture/lossless-jpeg.js +237 -0
  45. package/dist/capture/lossless-jpeg.js.map +1 -0
  46. package/dist/capture/native-environment-lean.d.ts +227 -0
  47. package/dist/capture/native-environment-lean.js +974 -0
  48. package/dist/capture/native-environment-lean.js.map +1 -0
  49. package/dist/capture/native-environment-optical-stage.d.ts +97 -0
  50. package/dist/capture/native-environment-optical-stage.js +340 -0
  51. package/dist/capture/native-environment-optical-stage.js.map +1 -0
  52. package/dist/capture/native-environment-raw.d.ts +140 -6
  53. package/dist/capture/native-environment-raw.js +435 -34
  54. package/dist/capture/native-environment-raw.js.map +1 -1
  55. package/dist/capture/native-raw-development.d.ts +116 -9
  56. package/dist/capture/native-raw-development.js +221 -62
  57. package/dist/capture/native-raw-development.js.map +1 -1
  58. package/dist/capture/native-raw-dng.d.ts +60 -0
  59. package/dist/capture/native-raw-dng.js +167 -0
  60. package/dist/capture/native-raw-dng.js.map +1 -0
  61. package/dist/capture/native-raw.d.ts +65 -12
  62. package/dist/capture/native-raw.js +81 -19
  63. package/dist/capture/native-raw.js.map +1 -1
  64. package/dist/capture/packed-sensor-raw.d.ts +160 -0
  65. package/dist/capture/packed-sensor-raw.js +221 -0
  66. package/dist/capture/packed-sensor-raw.js.map +1 -0
  67. package/dist/capture/photographic-export.d.ts +58 -35
  68. package/dist/capture/photographic-export.js +177 -70
  69. package/dist/capture/photographic-export.js.map +1 -1
  70. package/dist/capture/raw-development-kernel.d.ts +52 -0
  71. package/dist/capture/raw-development-kernel.js +88 -0
  72. package/dist/capture/raw-development-kernel.js.map +1 -0
  73. package/dist/capture/raw-frame-limits.d.ts +7 -7
  74. package/dist/capture/raw-frame-limits.js +7 -6
  75. package/dist/capture/raw-frame-limits.js.map +1 -1
  76. package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
  77. package/dist/capture/raw-frame-reconstruction.js +9 -8
  78. package/dist/capture/raw-frame-reconstruction.js.map +1 -1
  79. package/dist/capture/raw-white-level.d.ts +55 -0
  80. package/dist/capture/raw-white-level.js +165 -0
  81. package/dist/capture/raw-white-level.js.map +1 -0
  82. package/dist/capture/release-sequence.d.ts +5 -7
  83. package/dist/capture/release-sequence.js +15 -13
  84. package/dist/capture/release-sequence.js.map +1 -1
  85. package/dist/capture/sensor-raw-frame.d.ts +5 -6
  86. package/dist/capture/sensor-raw-frame.js +26 -9
  87. package/dist/capture/sensor-raw-frame.js.map +1 -1
  88. package/dist/capture/sensor-raw-producer.d.ts +21 -13
  89. package/dist/capture/sensor-raw-producer.js +86 -25
  90. package/dist/capture/sensor-raw-producer.js.map +1 -1
  91. package/dist/capture/simulated-capture.d.ts +15 -16
  92. package/dist/capture/simulated-capture.js +22 -12
  93. package/dist/capture/simulated-capture.js.map +1 -1
  94. package/dist/color/camera-color-matrix.d.ts +69 -0
  95. package/dist/color/camera-color-matrix.js +132 -0
  96. package/dist/color/camera-color-matrix.js.map +1 -0
  97. package/dist/color/capture-color.d.ts +17 -10
  98. package/dist/color/capture-color.js +50 -17
  99. package/dist/color/capture-color.js.map +1 -1
  100. package/dist/color/chromatic-adaptation.d.ts +63 -0
  101. package/dist/color/chromatic-adaptation.js +91 -0
  102. package/dist/color/chromatic-adaptation.js.map +1 -0
  103. package/dist/color/color-difference.d.ts +104 -0
  104. package/dist/color/color-difference.js +205 -0
  105. package/dist/color/color-difference.js.map +1 -0
  106. package/dist/color/color-matching-functions.d.ts +168 -0
  107. package/dist/color/color-matching-functions.js +309 -0
  108. package/dist/color/color-matching-functions.js.map +1 -0
  109. package/dist/color/colorimetry-math.d.ts +52 -0
  110. package/dist/color/colorimetry-math.js +144 -0
  111. package/dist/color/colorimetry-math.js.map +1 -0
  112. package/dist/color/gamut-mapping.d.ts +54 -0
  113. package/dist/color/gamut-mapping.js +107 -0
  114. package/dist/color/gamut-mapping.js.map +1 -0
  115. package/dist/color/illuminants.d.ts +182 -0
  116. package/dist/color/illuminants.js +434 -0
  117. package/dist/color/illuminants.js.map +1 -0
  118. package/dist/color/rgb-color-spaces.d.ts +79 -0
  119. package/dist/color/rgb-color-spaces.js +115 -0
  120. package/dist/color/rgb-color-spaces.js.map +1 -0
  121. package/dist/color/sensor-color-development.d.ts +33 -11
  122. package/dist/color/sensor-color-development.js +104 -30
  123. package/dist/color/sensor-color-development.js.map +1 -1
  124. package/dist/color/srgb-icc.d.ts +9 -2
  125. package/dist/color/srgb-icc.js +16 -5
  126. package/dist/color/srgb-icc.js.map +1 -1
  127. package/dist/color/srgb-transfer.d.ts +1 -2
  128. package/dist/color/srgb-transfer.js +1 -1
  129. package/dist/color/srgb-transfer.js.map +1 -1
  130. package/dist/color/white-balance.d.ts +68 -19
  131. package/dist/color/white-balance.js +168 -35
  132. package/dist/color/white-balance.js.map +1 -1
  133. package/dist/composition/image-formation-plan.d.ts +152 -128
  134. package/dist/composition/image-formation-plan.js +292 -138
  135. package/dist/composition/image-formation-plan.js.map +1 -1
  136. package/dist/composition/plan-consumer.d.ts +6 -7
  137. package/dist/composition/plan-consumer.js +14 -11
  138. package/dist/composition/plan-consumer.js.map +1 -1
  139. package/dist/core/calculation-result.d.ts +21 -14
  140. package/dist/core/calculation-result.js +209 -11
  141. package/dist/core/calculation-result.js.map +1 -1
  142. package/dist/core/canonical-json.d.ts +13 -8
  143. package/dist/core/canonical-json.js +34 -15
  144. package/dist/core/canonical-json.js.map +1 -1
  145. package/dist/core/configuration-error.d.ts +5 -4
  146. package/dist/core/configuration-error.js +5 -3
  147. package/dist/core/configuration-error.js.map +1 -1
  148. package/dist/core/evidence-provenance.d.ts +12 -12
  149. package/dist/core/evidence-provenance.js +10 -9
  150. package/dist/core/evidence-provenance.js.map +1 -1
  151. package/dist/core/image-formation.d.ts +11 -10
  152. package/dist/core/image-formation.js +11 -9
  153. package/dist/core/image-formation.js.map +1 -1
  154. package/dist/core/owned-data.d.ts +9 -17
  155. package/dist/core/owned-data.js +9 -16
  156. package/dist/core/owned-data.js.map +1 -1
  157. package/dist/core/portable-math.d.ts +15 -0
  158. package/dist/core/portable-math.js +56 -0
  159. package/dist/core/portable-math.js.map +1 -0
  160. package/dist/core/record-validation.d.ts +48 -9
  161. package/dist/core/record-validation.js +93 -19
  162. package/dist/core/record-validation.js.map +1 -1
  163. package/dist/core/scientific-assurance.d.ts +16 -14
  164. package/dist/core/scientific-assurance.js +22 -18
  165. package/dist/core/scientific-assurance.js.map +1 -1
  166. package/dist/core/spectral-composition.d.ts +13 -14
  167. package/dist/core/spectral-composition.js +30 -27
  168. package/dist/core/spectral-composition.js.map +1 -1
  169. package/dist/core/spectral.d.ts +5 -6
  170. package/dist/core/spectral.js +9 -7
  171. package/dist/core/spectral.js.map +1 -1
  172. package/dist/core/validation.d.ts +3 -6
  173. package/dist/core/validation.js +3 -5
  174. package/dist/core/validation.js.map +1 -1
  175. package/dist/core/version.d.ts +6 -6
  176. package/dist/core/version.js +6 -5
  177. package/dist/core/version.js.map +1 -1
  178. package/dist/equipment/exposure-capabilities.d.ts +10 -10
  179. package/dist/equipment/exposure-capabilities.js +40 -30
  180. package/dist/equipment/exposure-capabilities.js.map +1 -1
  181. package/dist/equipment/generic-tier-assets.d.ts +13 -6
  182. package/dist/equipment/generic-tier-assets.js +34 -15
  183. package/dist/equipment/generic-tier-assets.js.map +1 -1
  184. package/dist/equipment/generic-tier-presets.d.ts +5 -6
  185. package/dist/equipment/generic-tier-presets.js +15 -13
  186. package/dist/equipment/generic-tier-presets.js.map +1 -1
  187. package/dist/equipment/iso-capabilities.d.ts +21 -22
  188. package/dist/equipment/iso-capabilities.js +49 -44
  189. package/dist/equipment/iso-capabilities.js.map +1 -1
  190. package/dist/equipment/metering-capabilities.d.ts +5 -6
  191. package/dist/equipment/metering-capabilities.js +22 -19
  192. package/dist/equipment/metering-capabilities.js.map +1 -1
  193. package/dist/equipment/release-capabilities.d.ts +3 -4
  194. package/dist/equipment/release-capabilities.js +18 -14
  195. package/dist/equipment/release-capabilities.js.map +1 -1
  196. package/dist/exposure/exposure-duration-control.d.ts +19 -17
  197. package/dist/exposure/exposure-duration-control.js +27 -23
  198. package/dist/exposure/exposure-duration-control.js.map +1 -1
  199. package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
  200. package/dist/exposure/exposure-mode-resolver.js +127 -82
  201. package/dist/exposure/exposure-mode-resolver.js.map +1 -1
  202. package/dist/exposure/exposure.d.ts +17 -16
  203. package/dist/exposure/exposure.js +22 -15
  204. package/dist/exposure/exposure.js.map +1 -1
  205. package/dist/exposure/flash-ttl.d.ts +135 -0
  206. package/dist/exposure/flash-ttl.js +193 -0
  207. package/dist/exposure/flash-ttl.js.map +1 -0
  208. package/dist/exposure/flash.d.ts +144 -36
  209. package/dist/exposure/flash.js +259 -59
  210. package/dist/exposure/flash.js.map +1 -1
  211. package/dist/exposure/metering-scene-radiance.d.ts +10 -10
  212. package/dist/exposure/metering-scene-radiance.js +42 -23
  213. package/dist/exposure/metering-scene-radiance.js.map +1 -1
  214. package/dist/exposure/metering-target.d.ts +8 -8
  215. package/dist/exposure/metering-target.js +30 -20
  216. package/dist/exposure/metering-target.js.map +1 -1
  217. package/dist/exposure/metering-temporal.d.ts +16 -15
  218. package/dist/exposure/metering-temporal.js +41 -19
  219. package/dist/exposure/metering-temporal.js.map +1 -1
  220. package/dist/exposure/metering.d.ts +64 -17
  221. package/dist/exposure/metering.js +159 -30
  222. package/dist/exposure/metering.js.map +1 -1
  223. package/dist/exposure/program-line.d.ts +5 -5
  224. package/dist/exposure/program-line.js +20 -13
  225. package/dist/exposure/program-line.js.map +1 -1
  226. package/dist/facade/camera-preset.d.ts +8 -0
  227. package/dist/facade/camera-preset.js +102 -0
  228. package/dist/facade/camera-preset.js.map +1 -0
  229. package/dist/facade/chart-radiance-batch.d.ts +57 -0
  230. package/dist/facade/chart-radiance-batch.js +121 -0
  231. package/dist/facade/chart-radiance-batch.js.map +1 -0
  232. package/dist/facade/chart-scenes.d.ts +177 -0
  233. package/dist/facade/chart-scenes.js +232 -0
  234. package/dist/facade/chart-scenes.js.map +1 -0
  235. package/dist/facade/host-yield.d.ts +7 -0
  236. package/dist/facade/host-yield.js +23 -0
  237. package/dist/facade/host-yield.js.map +1 -0
  238. package/dist/facade/scene-radiance.d.ts +117 -0
  239. package/dist/facade/scene-radiance.js +205 -0
  240. package/dist/facade/scene-radiance.js.map +1 -0
  241. package/dist/facade/simulate-capture.d.ts +284 -0
  242. package/dist/facade/simulate-capture.js +1026 -0
  243. package/dist/facade/simulate-capture.js.map +1 -0
  244. package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
  245. package/dist/gpu/chart-radiance-gpu.js +176 -0
  246. package/dist/gpu/chart-radiance-gpu.js.map +1 -0
  247. package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
  248. package/dist/gpu/image-kernel-accelerator.js +720 -0
  249. package/dist/gpu/image-kernel-accelerator.js.map +1 -0
  250. package/dist/gpu/image-kernel-execution.d.ts +92 -0
  251. package/dist/gpu/image-kernel-execution.js +84 -0
  252. package/dist/gpu/image-kernel-execution.js.map +1 -0
  253. package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
  254. package/dist/gpu/sensor-stage-gpu.js +317 -0
  255. package/dist/gpu/sensor-stage-gpu.js.map +1 -0
  256. package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
  257. package/dist/gpu/temporal-sum-gpu.js +150 -0
  258. package/dist/gpu/temporal-sum-gpu.js.map +1 -0
  259. package/dist/gpu/webgpu-runtime.d.ts +63 -0
  260. package/dist/gpu/webgpu-runtime.js +215 -0
  261. package/dist/gpu/webgpu-runtime.js.map +1 -0
  262. package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
  263. package/dist/gpu/wgsl-chart-kernel.js +165 -0
  264. package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
  265. package/dist/gpu/wgsl-kernels.d.ts +53 -0
  266. package/dist/gpu/wgsl-kernels.js +365 -0
  267. package/dist/gpu/wgsl-kernels.js.map +1 -0
  268. package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
  269. package/dist/gpu/wgsl-sensor-kernel.js +409 -0
  270. package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
  271. package/dist/index.d.ts +89 -25
  272. package/dist/index.js +59 -15
  273. package/dist/index.js.map +1 -1
  274. package/dist/motion/camera-rotation.d.ts +92 -40
  275. package/dist/motion/camera-rotation.js +84 -47
  276. package/dist/motion/camera-rotation.js.map +1 -1
  277. package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
  278. package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
  279. package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
  280. package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
  281. package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
  282. package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
  283. package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
  284. package/dist/motion/capture-rotation-trajectory.js +36 -26
  285. package/dist/motion/capture-rotation-trajectory.js.map +1 -1
  286. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
  287. package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
  288. package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
  289. package/dist/motion/extended-object-projection.d.ts +19 -16
  290. package/dist/motion/extended-object-projection.js +38 -18
  291. package/dist/motion/extended-object-projection.js.map +1 -1
  292. package/dist/motion/projected-motion.d.ts +18 -17
  293. package/dist/motion/projected-motion.js +25 -17
  294. package/dist/motion/projected-motion.js.map +1 -1
  295. package/dist/motion/temporal-exposure-sum.d.ts +55 -0
  296. package/dist/motion/temporal-exposure-sum.js +141 -0
  297. package/dist/motion/temporal-exposure-sum.js.map +1 -0
  298. package/dist/motion/video-sequence.d.ts +111 -0
  299. package/dist/motion/video-sequence.js +179 -0
  300. package/dist/motion/video-sequence.js.map +1 -0
  301. package/dist/optics/aperture.d.ts +14 -15
  302. package/dist/optics/aperture.js +13 -11
  303. package/dist/optics/aperture.js.map +1 -1
  304. package/dist/optics/atmospheric-haze.d.ts +83 -0
  305. package/dist/optics/atmospheric-haze.js +113 -0
  306. package/dist/optics/atmospheric-haze.js.map +1 -0
  307. package/dist/optics/brown-conrady-distortion.d.ts +116 -0
  308. package/dist/optics/brown-conrady-distortion.js +291 -0
  309. package/dist/optics/brown-conrady-distortion.js.map +1 -0
  310. package/dist/optics/circle-of-confusion.d.ts +10 -10
  311. package/dist/optics/circle-of-confusion.js +15 -11
  312. package/dist/optics/circle-of-confusion.js.map +1 -1
  313. package/dist/optics/complex-pupil-psf.d.ts +64 -33
  314. package/dist/optics/complex-pupil-psf.js +190 -98
  315. package/dist/optics/complex-pupil-psf.js.map +1 -1
  316. package/dist/optics/depth-of-field.d.ts +25 -15
  317. package/dist/optics/depth-of-field.js +67 -27
  318. package/dist/optics/depth-of-field.js.map +1 -1
  319. package/dist/optics/diffraction.d.ts +14 -13
  320. package/dist/optics/diffraction.js +14 -10
  321. package/dist/optics/diffraction.js.map +1 -1
  322. package/dist/optics/focus-breathing.d.ts +88 -27
  323. package/dist/optics/focus-breathing.js +114 -23
  324. package/dist/optics/focus-breathing.js.map +1 -1
  325. package/dist/optics/focus-state.d.ts +18 -18
  326. package/dist/optics/focus-state.js +21 -15
  327. package/dist/optics/focus-state.js.map +1 -1
  328. package/dist/optics/front-of-lens-filter.d.ts +45 -14
  329. package/dist/optics/front-of-lens-filter.js +259 -88
  330. package/dist/optics/front-of-lens-filter.js.map +1 -1
  331. package/dist/optics/illumination-vignetting.d.ts +16 -17
  332. package/dist/optics/illumination-vignetting.js +40 -17
  333. package/dist/optics/illumination-vignetting.js.map +1 -1
  334. package/dist/optics/irradiance-convolution.d.ts +59 -0
  335. package/dist/optics/irradiance-convolution.js +138 -0
  336. package/dist/optics/irradiance-convolution.js.map +1 -0
  337. package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
  338. package/dist/optics/lateral-chromatic-aberration.js +33 -23
  339. package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
  340. package/dist/optics/lens-psf-kernels.d.ts +89 -0
  341. package/dist/optics/lens-psf-kernels.js +175 -0
  342. package/dist/optics/lens-psf-kernels.js.map +1 -0
  343. package/dist/optics/lens-psf-profile.d.ts +78 -46
  344. package/dist/optics/lens-psf-profile.js +335 -124
  345. package/dist/optics/lens-psf-profile.js.map +1 -1
  346. package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
  347. package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
  348. package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
  349. package/dist/optics/polygon-diffraction.d.ts +80 -23
  350. package/dist/optics/polygon-diffraction.js +130 -25
  351. package/dist/optics/polygon-diffraction.js.map +1 -1
  352. package/dist/optics/profile-contract.d.ts +5 -6
  353. package/dist/optics/profile-contract.js +14 -11
  354. package/dist/optics/profile-contract.js.map +1 -1
  355. package/dist/optics/psf-foundation.d.ts +23 -23
  356. package/dist/optics/psf-foundation.js +24 -21
  357. package/dist/optics/psf-foundation.js.map +1 -1
  358. package/dist/optics/pupil-vignetting.d.ts +118 -0
  359. package/dist/optics/pupil-vignetting.js +264 -0
  360. package/dist/optics/pupil-vignetting.js.map +1 -0
  361. package/dist/optics/radial-distortion.d.ts +34 -33
  362. package/dist/optics/radial-distortion.js +37 -30
  363. package/dist/optics/radial-distortion.js.map +1 -1
  364. package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
  365. package/dist/optics/scene-to-sensor-irradiance.js +73 -45
  366. package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
  367. package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
  368. package/dist/optics/scene-to-sensor-quadrature.js +16 -11
  369. package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
  370. package/dist/optics/sensor-aperture-rays.d.ts +20 -4
  371. package/dist/optics/sensor-aperture-rays.js +32 -14
  372. package/dist/optics/sensor-aperture-rays.js.map +1 -1
  373. package/dist/optics/sensor-environment-query.d.ts +81 -16
  374. package/dist/optics/sensor-environment-query.js +145 -12
  375. package/dist/optics/sensor-environment-query.js.map +1 -1
  376. package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
  377. package/dist/optics/sensor-psf-quadrature.js +18 -11
  378. package/dist/optics/sensor-psf-quadrature.js.map +1 -1
  379. package/dist/optics/sensor-psf-support.d.ts +8 -6
  380. package/dist/optics/sensor-psf-support.js +8 -5
  381. package/dist/optics/sensor-psf-support.js.map +1 -1
  382. package/dist/optics/stray-light.d.ts +22 -19
  383. package/dist/optics/stray-light.js +18 -12
  384. package/dist/optics/stray-light.js.map +1 -1
  385. package/dist/optics/thin-lens.d.ts +10 -9
  386. package/dist/optics/thin-lens.js +12 -8
  387. package/dist/optics/thin-lens.js.map +1 -1
  388. package/dist/optics/zernike-wavefront.d.ts +154 -0
  389. package/dist/optics/zernike-wavefront.js +352 -0
  390. package/dist/optics/zernike-wavefront.js.map +1 -0
  391. package/dist/output/capture-corrected-sdr.d.ts +16 -8
  392. package/dist/output/capture-corrected-sdr.js +16 -8
  393. package/dist/output/capture-corrected-sdr.js.map +1 -1
  394. package/dist/output/capture-geometry.d.ts +34 -36
  395. package/dist/output/capture-geometry.js +52 -32
  396. package/dist/output/capture-geometry.js.map +1 -1
  397. package/dist/output/capture-sdr.d.ts +7 -6
  398. package/dist/output/capture-sdr.js +11 -8
  399. package/dist/output/capture-sdr.js.map +1 -1
  400. package/dist/output/crop.d.ts +22 -6
  401. package/dist/output/crop.js +40 -6
  402. package/dist/output/crop.js.map +1 -1
  403. package/dist/output/geometric-transforms.d.ts +60 -23
  404. package/dist/output/geometric-transforms.js +111 -24
  405. package/dist/output/geometric-transforms.js.map +1 -1
  406. package/dist/output/lens-corrections.d.ts +27 -19
  407. package/dist/output/lens-corrections.js +29 -13
  408. package/dist/output/lens-corrections.js.map +1 -1
  409. package/dist/output/native-capture-sdr.d.ts +71 -16
  410. package/dist/output/native-capture-sdr.js +190 -33
  411. package/dist/output/native-capture-sdr.js.map +1 -1
  412. package/dist/output/png-encoder.d.ts +65 -0
  413. package/dist/output/png-encoder.js +461 -0
  414. package/dist/output/png-encoder.js.map +1 -0
  415. package/dist/output/print-contrast-reference.d.ts +10 -9
  416. package/dist/output/print-contrast-reference.js +10 -8
  417. package/dist/output/print-contrast-reference.js.map +1 -1
  418. package/dist/output/print-detail.d.ts +18 -17
  419. package/dist/output/print-detail.js +12 -10
  420. package/dist/output/print-detail.js.map +1 -1
  421. package/dist/output/print-jpeg.d.ts +26 -5
  422. package/dist/output/print-jpeg.js +117 -50
  423. package/dist/output/print-jpeg.js.map +1 -1
  424. package/dist/output/print-plan.d.ts +19 -19
  425. package/dist/output/print-plan.js +11 -10
  426. package/dist/output/print-plan.js.map +1 -1
  427. package/dist/output/print-region-statistics.d.ts +14 -15
  428. package/dist/output/print-region-statistics.js +11 -11
  429. package/dist/output/print-region-statistics.js.map +1 -1
  430. package/dist/output/sdr-rendering.d.ts +48 -10
  431. package/dist/output/sdr-rendering.js +114 -25
  432. package/dist/output/sdr-rendering.js.map +1 -1
  433. package/dist/output/subject-framing-crop.d.ts +6 -10
  434. package/dist/output/subject-framing-crop.js +23 -13
  435. package/dist/output/subject-framing-crop.js.map +1 -1
  436. package/dist/processing/demosaic.d.ts +90 -0
  437. package/dist/processing/demosaic.js +275 -0
  438. package/dist/processing/demosaic.js.map +1 -0
  439. package/dist/processing/denoise.d.ts +68 -0
  440. package/dist/processing/denoise.js +214 -0
  441. package/dist/processing/denoise.js.map +1 -0
  442. package/dist/processing/focus-stacking.d.ts +17 -0
  443. package/dist/processing/focus-stacking.js +80 -0
  444. package/dist/processing/focus-stacking.js.map +1 -0
  445. package/dist/processing/hdr.d.ts +54 -0
  446. package/dist/processing/hdr.js +172 -0
  447. package/dist/processing/hdr.js.map +1 -0
  448. package/dist/processing/image-ops.d.ts +66 -0
  449. package/dist/processing/image-ops.js +192 -0
  450. package/dist/processing/image-ops.js.map +1 -0
  451. package/dist/processing/panorama.d.ts +51 -0
  452. package/dist/processing/panorama.js +305 -0
  453. package/dist/processing/panorama.js.map +1 -0
  454. package/dist/processing/processing-task.d.ts +85 -0
  455. package/dist/processing/processing-task.js +164 -0
  456. package/dist/processing/processing-task.js.map +1 -0
  457. package/dist/processing/tone-mapping.d.ts +69 -0
  458. package/dist/processing/tone-mapping.js +310 -0
  459. package/dist/processing/tone-mapping.js.map +1 -0
  460. package/dist/schema/camera.d.ts +5 -4
  461. package/dist/schema/illumination-spectral.d.ts +13 -19
  462. package/dist/schema/illumination-spectral.js +23 -19
  463. package/dist/schema/illumination-spectral.js.map +1 -1
  464. package/dist/schema/illumination-temporal.d.ts +12 -15
  465. package/dist/schema/illumination-temporal.js +43 -28
  466. package/dist/schema/illumination-temporal.js.map +1 -1
  467. package/dist/schema/illumination.d.ts +5 -4
  468. package/dist/schema/illumination.js +55 -20
  469. package/dist/schema/illumination.js.map +1 -1
  470. package/dist/schema/scene-radiance-temporal.d.ts +9 -11
  471. package/dist/schema/scene-radiance-temporal.js +26 -23
  472. package/dist/schema/scene-radiance-temporal.js.map +1 -1
  473. package/dist/schema/scene-radiance.d.ts +17 -17
  474. package/dist/schema/scene-radiance.js +56 -34
  475. package/dist/schema/scene-radiance.js.map +1 -1
  476. package/dist/schema/scene.d.ts +14 -13
  477. package/dist/schema/validation.d.ts +0 -1
  478. package/dist/schema/validation.js +17 -15
  479. package/dist/schema/validation.js.map +1 -1
  480. package/dist/sensor/accumulated-charge.d.ts +45 -64
  481. package/dist/sensor/accumulated-charge.js +41 -47
  482. package/dist/sensor/accumulated-charge.js.map +1 -1
  483. package/dist/sensor/architecture.d.ts +22 -25
  484. package/dist/sensor/architecture.js +17 -16
  485. package/dist/sensor/architecture.js.map +1 -1
  486. package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
  487. package/dist/sensor/camera-saturation-capacity.js +36 -34
  488. package/dist/sensor/camera-saturation-capacity.js.map +1 -1
  489. package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
  490. package/dist/sensor/capture-color-sampling-binding.js +39 -41
  491. package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
  492. package/dist/sensor/capture-mode-timing.d.ts +8 -9
  493. package/dist/sensor/capture-mode-timing.js +24 -21
  494. package/dist/sensor/capture-mode-timing.js.map +1 -1
  495. package/dist/sensor/capture-mode.d.ts +28 -30
  496. package/dist/sensor/capture-mode.js +33 -31
  497. package/dist/sensor/capture-mode.js.map +1 -1
  498. package/dist/sensor/color-sampling.d.ts +30 -33
  499. package/dist/sensor/color-sampling.js +32 -37
  500. package/dist/sensor/color-sampling.js.map +1 -1
  501. package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
  502. package/dist/sensor/constant-rate-temporal-integration.js +28 -26
  503. package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
  504. package/dist/sensor/dark-current.d.ts +53 -49
  505. package/dist/sensor/dark-current.js +87 -46
  506. package/dist/sensor/dark-current.js.map +1 -1
  507. package/dist/sensor/environment-photo-signal.d.ts +71 -30
  508. package/dist/sensor/environment-photo-signal.js +127 -46
  509. package/dist/sensor/environment-photo-signal.js.map +1 -1
  510. package/dist/sensor/eqe-electron-rate.d.ts +14 -13
  511. package/dist/sensor/eqe-electron-rate.js +34 -14
  512. package/dist/sensor/eqe-electron-rate.js.map +1 -1
  513. package/dist/sensor/eqe-local-exposure.d.ts +24 -24
  514. package/dist/sensor/eqe-local-exposure.js +15 -11
  515. package/dist/sensor/eqe-local-exposure.js.map +1 -1
  516. package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
  517. package/dist/sensor/eqe-temporal-exposure.js +15 -10
  518. package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
  519. package/dist/sensor/exposure-window.d.ts +48 -34
  520. package/dist/sensor/exposure-window.js +77 -36
  521. package/dist/sensor/exposure-window.js.map +1 -1
  522. package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
  523. package/dist/sensor/fixed-pattern-noise.js +166 -0
  524. package/dist/sensor/fixed-pattern-noise.js.map +1 -0
  525. package/dist/sensor/iso-gain.d.ts +44 -0
  526. package/dist/sensor/iso-gain.js +119 -0
  527. package/dist/sensor/iso-gain.js.map +1 -0
  528. package/dist/sensor/iso-signal-chain.d.ts +25 -48
  529. package/dist/sensor/iso-signal-chain.js +52 -66
  530. package/dist/sensor/iso-signal-chain.js.map +1 -1
  531. package/dist/sensor/local-exposure-binding.d.ts +21 -21
  532. package/dist/sensor/local-exposure-binding.js +22 -18
  533. package/dist/sensor/local-exposure-binding.js.map +1 -1
  534. package/dist/sensor/optical-stack.d.ts +36 -40
  535. package/dist/sensor/optical-stack.js +34 -37
  536. package/dist/sensor/optical-stack.js.map +1 -1
  537. package/dist/sensor/photon-energy.d.ts +22 -28
  538. package/dist/sensor/photon-energy.js +42 -34
  539. package/dist/sensor/photon-energy.js.map +1 -1
  540. package/dist/sensor/physical-charge-capacity.d.ts +20 -30
  541. package/dist/sensor/physical-charge-capacity.js +35 -36
  542. package/dist/sensor/physical-charge-capacity.js.map +1 -1
  543. package/dist/sensor/pixel-pitch.d.ts +2 -3
  544. package/dist/sensor/pixel-pitch.js +4 -2
  545. package/dist/sensor/pixel-pitch.js.map +1 -1
  546. package/dist/sensor/radiometry-readiness.d.ts +13 -15
  547. package/dist/sensor/radiometry-readiness.js +20 -17
  548. package/dist/sensor/radiometry-readiness.js.map +1 -1
  549. package/dist/sensor/raw-readout.d.ts +173 -83
  550. package/dist/sensor/raw-readout.js +425 -160
  551. package/dist/sensor/raw-readout.js.map +1 -1
  552. package/dist/sensor/raw-reconstruction.d.ts +112 -44
  553. package/dist/sensor/raw-reconstruction.js +200 -47
  554. package/dist/sensor/raw-reconstruction.js.map +1 -1
  555. package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
  556. package/dist/sensor/readout-exposure-linkage.js +125 -27
  557. package/dist/sensor/readout-exposure-linkage.js.map +1 -1
  558. package/dist/sensor/readout-timing.d.ts +43 -44
  559. package/dist/sensor/readout-timing.js +38 -30
  560. package/dist/sensor/readout-timing.js.map +1 -1
  561. package/dist/sensor/response-application-compatibility.d.ts +21 -28
  562. package/dist/sensor/response-application-compatibility.js +35 -34
  563. package/dist/sensor/response-application-compatibility.js.map +1 -1
  564. package/dist/sensor/response-operating-range.d.ts +26 -35
  565. package/dist/sensor/response-operating-range.js +40 -39
  566. package/dist/sensor/response-operating-range.js.map +1 -1
  567. package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
  568. package/dist/sensor/responsivity-photocurrent.js +57 -40
  569. package/dist/sensor/responsivity-photocurrent.js.map +1 -1
  570. package/dist/sensor/sampling-aperture.d.ts +21 -25
  571. package/dist/sensor/sampling-aperture.js +29 -28
  572. package/dist/sensor/sampling-aperture.js.map +1 -1
  573. package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
  574. package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
  575. package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
  576. package/dist/sensor/sensor-geometry.d.ts +28 -32
  577. package/dist/sensor/sensor-geometry.js +35 -20
  578. package/dist/sensor/sensor-geometry.js.map +1 -1
  579. package/dist/sensor/signal-noise.d.ts +14 -16
  580. package/dist/sensor/signal-noise.js +15 -13
  581. package/dist/sensor/signal-noise.js.map +1 -1
  582. package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
  583. package/dist/sensor/spatial-sample-reduction.js +39 -48
  584. package/dist/sensor/spatial-sample-reduction.js.map +1 -1
  585. package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
  586. package/dist/sensor/spatial-sampling-quadrature.js +31 -36
  587. package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
  588. package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
  589. package/dist/sensor/spatio-spectral-reduction.js +24 -29
  590. package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
  591. package/dist/sensor/spectral-coverage.d.ts +6 -9
  592. package/dist/sensor/spectral-coverage.js +9 -6
  593. package/dist/sensor/spectral-coverage.js.map +1 -1
  594. package/dist/sensor/spectral-quadrature.d.ts +46 -60
  595. package/dist/sensor/spectral-quadrature.js +38 -48
  596. package/dist/sensor/spectral-quadrature.js.map +1 -1
  597. package/dist/sensor/spectral-response.d.ts +53 -41
  598. package/dist/sensor/spectral-response.js +80 -47
  599. package/dist/sensor/spectral-response.js.map +1 -1
  600. package/dist/sensor/stochastic-seed.d.ts +50 -0
  601. package/dist/sensor/stochastic-seed.js +123 -0
  602. package/dist/sensor/stochastic-seed.js.map +1 -0
  603. package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
  604. package/dist/sensor/temporal-eqe-sum.js +5 -6
  605. package/dist/sensor/temporal-eqe-sum.js.map +1 -1
  606. package/dist/sensor/temporal-photo-signal.d.ts +5 -6
  607. package/dist/sensor/temporal-photo-signal.js +11 -10
  608. package/dist/sensor/temporal-photo-signal.js.map +1 -1
  609. package/dist/sensor/temporal-sample-binding.d.ts +1 -2
  610. package/dist/sensor/temporal-sample-binding.js +3 -3
  611. package/dist/sensor/temporal-sample-binding.js.map +1 -1
  612. package/dist/simulation/poc-simulation.d.ts +16 -16
  613. package/dist/simulation/poc-simulation.js +20 -15
  614. package/dist/simulation/poc-simulation.js.map +1 -1
  615. package/dist/stabilization/camera-shake.d.ts +42 -18
  616. package/dist/stabilization/camera-shake.js +43 -20
  617. package/dist/stabilization/camera-shake.js.map +1 -1
  618. package/dist/stabilization/system.d.ts +44 -41
  619. package/dist/stabilization/system.js +196 -108
  620. package/dist/stabilization/system.js.map +1 -1
  621. package/docs/AGENT_GUIDE.md +183 -0
  622. package/docs/API_REFERENCE.md +761 -2
  623. package/docs/QUICK_START.md +495 -0
  624. package/docs/USAGE.md +1719 -714
  625. package/docs/api/camera-equivalent-focal-length.md +6 -7
  626. package/docs/api/camera-field-of-view.md +16 -8
  627. package/docs/api/camera-lens-projection.md +246 -0
  628. package/docs/api/camera-projected-object-size.md +6 -5
  629. package/docs/api/capture-capture-export-metadata.md +10 -10
  630. package/docs/api/capture-dng-import.md +134 -0
  631. package/docs/api/capture-environment-raw-producer.md +17 -11
  632. package/docs/api/capture-export-jpeg.md +16 -0
  633. package/docs/api/capture-focus-control.md +25 -47
  634. package/docs/api/capture-linear-encoding.md +21 -12
  635. package/docs/api/capture-lossless-jpeg.md +49 -0
  636. package/docs/api/capture-native-environment-optical-stage.md +75 -0
  637. package/docs/api/capture-native-environment-raw.md +161 -4
  638. package/docs/api/capture-native-raw-development.md +69 -8
  639. package/docs/api/capture-native-raw-dng.md +84 -0
  640. package/docs/api/capture-native-raw.md +21 -10
  641. package/docs/api/capture-packed-sensor-raw.md +156 -0
  642. package/docs/api/capture-photographic-export.md +69 -31
  643. package/docs/api/capture-raw-frame-reconstruction.md +8 -8
  644. package/docs/api/capture-raw-white-level.md +37 -0
  645. package/docs/api/capture-release-sequence.md +6 -7
  646. package/docs/api/capture-sensor-raw-frame.md +6 -6
  647. package/docs/api/capture-sensor-raw-producer.md +17 -11
  648. package/docs/api/capture-simulated-capture.md +15 -15
  649. package/docs/api/color-camera-color-matrix.md +103 -0
  650. package/docs/api/color-capture-color.md +22 -11
  651. package/docs/api/color-chromatic-adaptation.md +82 -0
  652. package/docs/api/color-color-difference.md +134 -0
  653. package/docs/api/color-color-matching-functions.md +259 -0
  654. package/docs/api/color-colorimetry-math.md +54 -0
  655. package/docs/api/color-gamut-mapping.md +72 -0
  656. package/docs/api/color-illuminants.md +280 -0
  657. package/docs/api/color-rgb-color-spaces.md +151 -0
  658. package/docs/api/color-sensor-color-development.md +27 -0
  659. package/docs/api/color-srgb-icc.md +2 -4
  660. package/docs/api/color-white-balance.md +95 -19
  661. package/docs/api/composition-image-formation-plan.md +124 -95
  662. package/docs/api/composition-plan-consumer.md +7 -7
  663. package/docs/api/core-calculation-result.md +18 -14
  664. package/docs/api/core-configuration-error.md +1 -1
  665. package/docs/api/core-image-formation.md +7 -7
  666. package/docs/api/core-scientific-assurance.md +12 -10
  667. package/docs/api/core-spectral-composition.md +14 -14
  668. package/docs/api/core-spectral.md +6 -6
  669. package/docs/api/core-validation.md +3 -3
  670. package/docs/api/core-version.md +7 -6
  671. package/docs/api/equipment-exposure-capabilities.md +11 -10
  672. package/docs/api/equipment-generic-tier-assets.md +7 -2
  673. package/docs/api/equipment-generic-tier-presets.md +6 -6
  674. package/docs/api/equipment-iso-capabilities.md +18 -18
  675. package/docs/api/equipment-metering-capabilities.md +6 -6
  676. package/docs/api/equipment-release-capabilities.md +4 -4
  677. package/docs/api/exports.json +2213 -8
  678. package/docs/api/exposure-exposure-duration-control.md +9 -9
  679. package/docs/api/exposure-exposure-mode-resolver.md +35 -31
  680. package/docs/api/exposure-exposure.md +10 -10
  681. package/docs/api/exposure-flash-ttl.md +182 -0
  682. package/docs/api/exposure-flash.md +183 -28
  683. package/docs/api/exposure-metering-scene-radiance.md +11 -10
  684. package/docs/api/exposure-metering-target.md +9 -8
  685. package/docs/api/exposure-metering-temporal.md +8 -8
  686. package/docs/api/exposure-metering.md +69 -9
  687. package/docs/api/exposure-program-line.md +6 -5
  688. package/docs/api/facade-chart-radiance-batch.md +96 -0
  689. package/docs/api/facade-chart-scenes.md +240 -0
  690. package/docs/api/facade-scene-radiance.md +122 -0
  691. package/docs/api/facade-simulate-capture.md +324 -0
  692. package/docs/api/gpu-image-kernel-accelerator.md +157 -0
  693. package/docs/api/gpu-image-kernel-execution.md +152 -0
  694. package/docs/api/motion-camera-rotation.md +43 -26
  695. package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
  696. package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
  697. package/docs/api/motion-capture-rotation-trajectory.md +15 -15
  698. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
  699. package/docs/api/motion-extended-object-projection.md +10 -8
  700. package/docs/api/motion-projected-motion.md +8 -8
  701. package/docs/api/motion-temporal-exposure-sum.md +98 -0
  702. package/docs/api/motion-video-sequence.md +159 -0
  703. package/docs/api/optics-aperture.md +8 -8
  704. package/docs/api/optics-atmospheric-haze.md +104 -0
  705. package/docs/api/optics-brown-conrady-distortion.md +123 -0
  706. package/docs/api/optics-circle-of-confusion.md +5 -4
  707. package/docs/api/optics-complex-pupil-psf.md +57 -16
  708. package/docs/api/optics-depth-of-field.md +12 -6
  709. package/docs/api/optics-diffraction.md +8 -7
  710. package/docs/api/optics-focus-breathing.md +104 -16
  711. package/docs/api/optics-focus-state.md +9 -10
  712. package/docs/api/optics-front-of-lens-filter.md +72 -14
  713. package/docs/api/optics-illumination-vignetting.md +10 -10
  714. package/docs/api/optics-irradiance-convolution.md +95 -0
  715. package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
  716. package/docs/api/optics-lens-psf-kernels.md +72 -0
  717. package/docs/api/optics-lens-psf-profile.md +48 -26
  718. package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
  719. package/docs/api/optics-polygon-diffraction.md +78 -13
  720. package/docs/api/optics-profile-contract.md +4 -4
  721. package/docs/api/optics-psf-foundation.md +12 -12
  722. package/docs/api/optics-pupil-vignetting.md +132 -0
  723. package/docs/api/optics-radial-distortion.md +12 -12
  724. package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
  725. package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
  726. package/docs/api/optics-sensor-aperture-rays.md +3 -2
  727. package/docs/api/optics-sensor-environment-query.md +52 -9
  728. package/docs/api/optics-sensor-psf-quadrature.md +13 -10
  729. package/docs/api/optics-stray-light.md +12 -11
  730. package/docs/api/optics-thin-lens.md +4 -3
  731. package/docs/api/optics-zernike-wavefront.md +229 -0
  732. package/docs/api/output-capture-corrected-sdr.md +10 -7
  733. package/docs/api/output-capture-geometry.md +35 -36
  734. package/docs/api/output-capture-sdr.md +4 -4
  735. package/docs/api/output-crop.md +7 -4
  736. package/docs/api/output-geometric-transforms.md +65 -19
  737. package/docs/api/output-lens-corrections.md +17 -15
  738. package/docs/api/output-native-capture-sdr.md +26 -13
  739. package/docs/api/output-png-encoder.md +105 -0
  740. package/docs/api/output-print-contrast-reference.md +8 -8
  741. package/docs/api/output-print-detail.md +14 -14
  742. package/docs/api/output-print-jpeg.md +22 -5
  743. package/docs/api/output-print-plan.md +18 -18
  744. package/docs/api/output-print-region-statistics.md +14 -14
  745. package/docs/api/output-sdr-rendering.md +52 -10
  746. package/docs/api/output-subject-framing-crop.md +5 -6
  747. package/docs/api/processing-demosaic.md +120 -0
  748. package/docs/api/processing-denoise.md +148 -0
  749. package/docs/api/processing-focus-stacking.md +41 -0
  750. package/docs/api/processing-hdr.md +113 -0
  751. package/docs/api/processing-panorama.md +82 -0
  752. package/docs/api/processing-processing-task.md +107 -0
  753. package/docs/api/processing-tone-mapping.md +142 -0
  754. package/docs/api/schema-camera.md +6 -4
  755. package/docs/api/schema-illumination-spectral.md +10 -11
  756. package/docs/api/schema-illumination-temporal.md +13 -15
  757. package/docs/api/schema-illumination.md +4 -4
  758. package/docs/api/schema-scene-radiance-temporal.md +10 -11
  759. package/docs/api/schema-scene-radiance.md +18 -17
  760. package/docs/api/schema-scene.md +9 -9
  761. package/docs/api/schema-validation.md +1 -1
  762. package/docs/api/sensor-accumulated-charge.md +12 -20
  763. package/docs/api/sensor-architecture.md +15 -16
  764. package/docs/api/sensor-camera-saturation-capacity.md +9 -11
  765. package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
  766. package/docs/api/sensor-capture-mode-timing.md +9 -9
  767. package/docs/api/sensor-capture-mode.md +29 -30
  768. package/docs/api/sensor-color-sampling.md +31 -33
  769. package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
  770. package/docs/api/sensor-dark-current.md +30 -14
  771. package/docs/api/sensor-environment-photo-signal.md +13 -6
  772. package/docs/api/sensor-eqe-electron-rate.md +9 -8
  773. package/docs/api/sensor-eqe-local-exposure.md +18 -17
  774. package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
  775. package/docs/api/sensor-exposure-window.md +24 -24
  776. package/docs/api/sensor-fixed-pattern-noise.md +104 -0
  777. package/docs/api/sensor-iso-gain.md +63 -0
  778. package/docs/api/sensor-iso-signal-chain.md +13 -22
  779. package/docs/api/sensor-local-exposure-binding.md +12 -13
  780. package/docs/api/sensor-optical-stack.md +37 -40
  781. package/docs/api/sensor-photon-energy.md +10 -11
  782. package/docs/api/sensor-physical-charge-capacity.md +8 -13
  783. package/docs/api/sensor-pixel-pitch.md +1 -1
  784. package/docs/api/sensor-radiometry-readiness.md +9 -9
  785. package/docs/api/sensor-raw-readout.md +118 -52
  786. package/docs/api/sensor-raw-reconstruction.md +97 -20
  787. package/docs/api/sensor-readout-exposure-linkage.md +120 -24
  788. package/docs/api/sensor-readout-timing.md +33 -35
  789. package/docs/api/sensor-response-application-compatibility.md +9 -11
  790. package/docs/api/sensor-response-operating-range.md +14 -18
  791. package/docs/api/sensor-responsivity-photocurrent.md +9 -12
  792. package/docs/api/sensor-sampling-aperture.md +22 -25
  793. package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
  794. package/docs/api/sensor-sensor-geometry.md +23 -24
  795. package/docs/api/sensor-signal-noise.md +10 -10
  796. package/docs/api/sensor-spatial-sample-reduction.md +27 -30
  797. package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
  798. package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
  799. package/docs/api/sensor-spectral-coverage.md +5 -5
  800. package/docs/api/sensor-spectral-quadrature.md +33 -35
  801. package/docs/api/sensor-spectral-response.md +28 -16
  802. package/docs/api/sensor-temporal-photo-signal.md +6 -6
  803. package/docs/api/simulation-poc-simulation.md +17 -16
  804. package/docs/api/stabilization-camera-shake.md +29 -10
  805. package/docs/api/stabilization-system.md +25 -21
  806. package/docs/examples/production-request.json +3821 -2157
  807. package/docs/examples/simulate-capture.mjs +14 -0
  808. package/llms.txt +35 -0
  809. package/package.json +32 -12
  810. package/AGENTS.md +0 -674
  811. package/CONTRIBUTING.md +0 -76
  812. package/DCO +0 -33
  813. package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
  814. package/dist/camera/field-of-view.d.ts.map +0 -1
  815. package/dist/camera/projected-object-size.d.ts.map +0 -1
  816. package/dist/capture/capture-export-metadata.d.ts.map +0 -1
  817. package/dist/capture/environment-raw-producer.d.ts.map +0 -1
  818. package/dist/capture/export-jpeg.d.ts.map +0 -1
  819. package/dist/capture/export-tiff.d.ts.map +0 -1
  820. package/dist/capture/focus-control.d.ts.map +0 -1
  821. package/dist/capture/linear-encoding.d.ts.map +0 -1
  822. package/dist/capture/native-environment-raw.d.ts.map +0 -1
  823. package/dist/capture/native-raw-development.d.ts.map +0 -1
  824. package/dist/capture/native-raw.d.ts.map +0 -1
  825. package/dist/capture/photographic-export.d.ts.map +0 -1
  826. package/dist/capture/raw-frame-limits.d.ts.map +0 -1
  827. package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
  828. package/dist/capture/release-sequence.d.ts.map +0 -1
  829. package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
  830. package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
  831. package/dist/capture/simulated-capture.d.ts.map +0 -1
  832. package/dist/color/capture-color.d.ts.map +0 -1
  833. package/dist/color/sensor-color-development.d.ts.map +0 -1
  834. package/dist/color/srgb-icc.d.ts.map +0 -1
  835. package/dist/color/srgb-transfer.d.ts.map +0 -1
  836. package/dist/color/white-balance.d.ts.map +0 -1
  837. package/dist/composition/image-formation-plan.d.ts.map +0 -1
  838. package/dist/composition/plan-consumer.d.ts.map +0 -1
  839. package/dist/core/calculation-result.d.ts.map +0 -1
  840. package/dist/core/canonical-json.d.ts.map +0 -1
  841. package/dist/core/configuration-error.d.ts.map +0 -1
  842. package/dist/core/evidence-provenance.d.ts.map +0 -1
  843. package/dist/core/image-formation.d.ts.map +0 -1
  844. package/dist/core/owned-data.d.ts.map +0 -1
  845. package/dist/core/record-validation.d.ts.map +0 -1
  846. package/dist/core/scientific-assurance.d.ts.map +0 -1
  847. package/dist/core/spectral-composition.d.ts.map +0 -1
  848. package/dist/core/spectral.d.ts.map +0 -1
  849. package/dist/core/validation.d.ts.map +0 -1
  850. package/dist/core/version.d.ts.map +0 -1
  851. package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
  852. package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
  853. package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
  854. package/dist/equipment/iso-capabilities.d.ts.map +0 -1
  855. package/dist/equipment/metering-capabilities.d.ts.map +0 -1
  856. package/dist/equipment/release-capabilities.d.ts.map +0 -1
  857. package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
  858. package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
  859. package/dist/exposure/exposure.d.ts.map +0 -1
  860. package/dist/exposure/flash.d.ts.map +0 -1
  861. package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
  862. package/dist/exposure/metering-target.d.ts.map +0 -1
  863. package/dist/exposure/metering-temporal.d.ts.map +0 -1
  864. package/dist/exposure/metering.d.ts.map +0 -1
  865. package/dist/exposure/program-line.d.ts.map +0 -1
  866. package/dist/index.d.ts.map +0 -1
  867. package/dist/motion/camera-rotation.d.ts.map +0 -1
  868. package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
  869. package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
  870. package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
  871. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
  872. package/dist/motion/extended-object-projection.d.ts.map +0 -1
  873. package/dist/motion/projected-motion.d.ts.map +0 -1
  874. package/dist/optics/aperture.d.ts.map +0 -1
  875. package/dist/optics/circle-of-confusion.d.ts.map +0 -1
  876. package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
  877. package/dist/optics/depth-of-field.d.ts.map +0 -1
  878. package/dist/optics/diffraction.d.ts.map +0 -1
  879. package/dist/optics/focus-breathing.d.ts.map +0 -1
  880. package/dist/optics/focus-state.d.ts.map +0 -1
  881. package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
  882. package/dist/optics/illumination-vignetting.d.ts.map +0 -1
  883. package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
  884. package/dist/optics/lens-psf-profile.d.ts.map +0 -1
  885. package/dist/optics/polygon-diffraction.d.ts.map +0 -1
  886. package/dist/optics/profile-contract.d.ts.map +0 -1
  887. package/dist/optics/psf-foundation.d.ts.map +0 -1
  888. package/dist/optics/radial-distortion.d.ts.map +0 -1
  889. package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
  890. package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
  891. package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
  892. package/dist/optics/sensor-environment-query.d.ts.map +0 -1
  893. package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
  894. package/dist/optics/sensor-psf-support.d.ts.map +0 -1
  895. package/dist/optics/stray-light.d.ts.map +0 -1
  896. package/dist/optics/thin-lens.d.ts.map +0 -1
  897. package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
  898. package/dist/output/capture-geometry.d.ts.map +0 -1
  899. package/dist/output/capture-sdr.d.ts.map +0 -1
  900. package/dist/output/crop.d.ts.map +0 -1
  901. package/dist/output/geometric-transforms.d.ts.map +0 -1
  902. package/dist/output/lens-corrections.d.ts.map +0 -1
  903. package/dist/output/native-capture-sdr.d.ts.map +0 -1
  904. package/dist/output/print-contrast-reference.d.ts.map +0 -1
  905. package/dist/output/print-detail.d.ts.map +0 -1
  906. package/dist/output/print-jpeg.d.ts.map +0 -1
  907. package/dist/output/print-plan.d.ts.map +0 -1
  908. package/dist/output/print-region-statistics.d.ts.map +0 -1
  909. package/dist/output/sdr-rendering.d.ts.map +0 -1
  910. package/dist/output/subject-framing-crop.d.ts.map +0 -1
  911. package/dist/schema/camera.d.ts.map +0 -1
  912. package/dist/schema/camera.js +0 -3
  913. package/dist/schema/camera.js.map +0 -1
  914. package/dist/schema/illumination-spectral.d.ts.map +0 -1
  915. package/dist/schema/illumination-temporal.d.ts.map +0 -1
  916. package/dist/schema/illumination.d.ts.map +0 -1
  917. package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
  918. package/dist/schema/scene-radiance.d.ts.map +0 -1
  919. package/dist/schema/scene.d.ts.map +0 -1
  920. package/dist/schema/scene.js +0 -3
  921. package/dist/schema/scene.js.map +0 -1
  922. package/dist/schema/validation.d.ts.map +0 -1
  923. package/dist/sensor/accumulated-charge.d.ts.map +0 -1
  924. package/dist/sensor/architecture.d.ts.map +0 -1
  925. package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
  926. package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
  927. package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
  928. package/dist/sensor/capture-mode.d.ts.map +0 -1
  929. package/dist/sensor/color-sampling.d.ts.map +0 -1
  930. package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
  931. package/dist/sensor/dark-current.d.ts.map +0 -1
  932. package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
  933. package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
  934. package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
  935. package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
  936. package/dist/sensor/exposure-window.d.ts.map +0 -1
  937. package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
  938. package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
  939. package/dist/sensor/optical-stack.d.ts.map +0 -1
  940. package/dist/sensor/photon-energy.d.ts.map +0 -1
  941. package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
  942. package/dist/sensor/pixel-pitch.d.ts.map +0 -1
  943. package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
  944. package/dist/sensor/raw-readout.d.ts.map +0 -1
  945. package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
  946. package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
  947. package/dist/sensor/readout-timing.d.ts.map +0 -1
  948. package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
  949. package/dist/sensor/response-operating-range.d.ts.map +0 -1
  950. package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
  951. package/dist/sensor/sampling-aperture.d.ts.map +0 -1
  952. package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
  953. package/dist/sensor/sensor-geometry.d.ts.map +0 -1
  954. package/dist/sensor/signal-noise.d.ts.map +0 -1
  955. package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
  956. package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
  957. package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
  958. package/dist/sensor/spectral-coverage.d.ts.map +0 -1
  959. package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
  960. package/dist/sensor/spectral-response.d.ts.map +0 -1
  961. package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
  962. package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
  963. package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
  964. package/dist/simulation/poc-simulation.d.ts.map +0 -1
  965. package/dist/stabilization/camera-shake.d.ts.map +0 -1
  966. package/dist/stabilization/system.d.ts.map +0 -1
  967. package/docs/API_STYLE.md +0 -235
  968. package/docs/ARCHITECTURE.md +0 -356
  969. package/docs/AUTOMATION_COORDINATION.md +0 -190
  970. package/docs/CAPTURE_COLOR.md +0 -25
  971. package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
  972. package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
  973. package/docs/CAPTURE_SDR.md +0 -22
  974. package/docs/DENSE_PUPIL_QUALIFICATION.md +0 -121
  975. package/docs/DEVELOPERS.md +0 -68
  976. package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
  977. package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
  978. package/docs/EXPORT_ACCEPTANCE.md +0 -133
  979. package/docs/GENERIC_TIER_PRESETS.md +0 -269
  980. package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
  981. package/docs/IMAGE_FORMATION.md +0 -247
  982. package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
  983. package/docs/MOTION_AND_SIGNAL.md +0 -250
  984. package/docs/NATIVE_CAPTURE_SDR.md +0 -70
  985. package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
  986. package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
  987. package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
  988. package/docs/NUMERICAL_CORRECTNESS.md +0 -191
  989. package/docs/PERFORMANCE_BASELINE.md +0 -56
  990. package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
  991. package/docs/PHYSICS_FOUNDATION.md +0 -426
  992. package/docs/POC_API.md +0 -278
  993. package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
  994. package/docs/POC_PROJECTION_REUSE.md +0 -124
  995. package/docs/PRINT_195_196_REVIEW.md +0 -93
  996. package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
  997. package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
  998. package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
  999. package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
  1000. package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
  1001. package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
  1002. package/docs/PRINT_PLANNING.md +0 -75
  1003. package/docs/PRINT_REGION_STATISTICS.md +0 -38
  1004. package/docs/PROCESSED_OUTPUT.md +0 -157
  1005. package/docs/PRODUCTION_COMPOSITION.md +0 -373
  1006. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
  1007. package/docs/PROVENANCE.md +0 -115
  1008. package/docs/PSF_FOUNDATION.md +0 -165
  1009. package/docs/RAW_FRAME_ENVELOPE.md +0 -56
  1010. package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
  1011. package/docs/RELEASE_1_0.md +0 -66
  1012. package/docs/RELEASE_1_0_1.md +0 -61
  1013. package/docs/RELEASE_1_1_0.md +0 -25
  1014. package/docs/RELEASE_1_2_0.md +0 -51
  1015. package/docs/RELEASE_1_3_0.md +0 -15
  1016. package/docs/RELEASE_1_4_0.md +0 -23
  1017. package/docs/RELEASE_1_5_0.md +0 -105
  1018. package/docs/RELEASE_AUDIT.md +0 -39
  1019. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
  1020. package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
  1021. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
  1022. package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
  1023. package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
  1024. package/docs/SDR_RENDERING.md +0 -33
  1025. package/docs/SENSOR_APERTURE_RAYS.md +0 -23
  1026. package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
  1027. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
  1028. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
  1029. package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
  1030. package/docs/SENSOR_RAW_FRAME.md +0 -20
  1031. package/docs/SENSOR_RAW_PRODUCER.md +0 -77
  1032. package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
  1033. package/docs/SIGNAL_CONFORMANCE.md +0 -23
  1034. package/docs/SIMULATED_CAPTURE.md +0 -65
  1035. package/docs/STABILIZATION.md +0 -234
  1036. package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
  1037. package/docs/TIER_ACCEPTANCE.md +0 -129
  1038. package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
  1039. package/docs/V1_COMPOSITION_MAP.md +0 -123
  1040. package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
  1041. package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
  1042. package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
  1043. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
  1044. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
  1045. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
  1046. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
  1047. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
  1048. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
  1049. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
  1050. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
  1051. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
  1052. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
  1053. package/docs/licenses/castleCSF-MIT.txt +0 -21
  1054. package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
  1055. package/docs/validation/documentation-fragments.json +0 -212
  1056. package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
  1057. package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
  1058. package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
  1059. package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
  1060. package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
  1061. package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
  1062. package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
  1063. package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
  1064. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
  1065. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
  1066. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
  1067. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
  1068. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
  1069. package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
  1070. package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
  1071. package/docs/validation/print-196-candidate-capabilities.json +0 -28
  1072. package/docs/validation/print-196-candidate-evidence.json +0 -356
  1073. package/docs/validation/print-196-engine-acceptance.json +0 -81
  1074. package/docs/validation/print-detail-capabilities.json +0 -103
  1075. package/docs/validation/print-detail-jpeg-evidence.json +0 -116
  1076. package/docs/validation/print-detail-sdr-evidence.json +0 -81
  1077. package/docs/validation/release-audit-inventory.json +0 -1306
  1078. package/docs/validation/tier-acceptance-report-v1.json +0 -2538
@@ -1,68 +1,96 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- /** Exact packed RAW reconstruction and shared color/SDR development, with bounded pixel tiles. */
2
+ /**
3
+ * Native RAW development: turns packed RAW codes into an SDR image. It reconstructs full colour from
4
+ * the CFA (colour filter array) mosaic exactly, then applies the shared colour, white-balance and SDR
5
+ * steps, in bounded pixel tiles.
6
+ */
3
7
  import { calculateNativeRawPlan } from "./native-raw.js";
4
8
  import { parseRawReconstructionPhaseProfiles } from "./raw-frame-reconstruction.js";
5
- import { calculateRawReconstructionChannel } from "../sensor/raw-reconstruction.js";
9
+ import { calculateRawReconstructionChannel, rawReconstructionKernelReach, validateMirrorBorderCfaConsistency } from "../sensor/raw-reconstruction.js";
10
+ import { equalWithinUlps } from "../core/portable-math.js";
6
11
  import { resolveColorSamplingSite } from "../sensor/color-sampling.js";
7
12
  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";
13
+ import { prepareSensorColorDevelopment } from "../color/sensor-color-development.js";
14
+ import { calculateSdrRendering, parseSdrRenderingProfile, prepareSdrPixelTone } from "../output/sdr-rendering.js";
15
+ import { renderSdrRunInto } from "../output/native-capture-sdr.js";
10
16
  import { transformOrientedRasterPointToNative } from "../output/capture-geometry.js";
11
17
  import { InvalidConfigurationError } from "../core/configuration-error.js";
18
+ import { DEFAULT_HOST_YIELD_CADENCE, createHostYieldGate } from "./host-yield-cadence.js";
12
19
  import { requireAllowlistedRecord } from "../core/record-validation.js";
13
20
  import { stringifyCanonicalJson } from "../core/canonical-json.js";
14
21
  import { freezeOwnedData } from "../core/owned-data.js";
22
+ import { createRawDevelopmentCounts, createRawPixelDeveloper, normalizedRawSite, rawSiteSaturated } from "./raw-development-kernel.js";
23
+ const TILE_WIDTH = 256;
24
+ /** Sites checked per integrity chunk before checking whether it is time to yield. */
25
+ const INTEGRITY_CHUNK_SITES = 1 << 18;
15
26
  function canonical(value) {
16
27
  return stringifyCanonicalJson(value, { undefinedObjectProperties: "reject", nonFiniteNumberMessage: "Invalid RAW metadata.", unsupportedValueMessage: "Invalid RAW metadata." });
17
28
  }
18
- function validateRaw(raw) {
19
- requireAllowlistedRecord(raw, ["plan", "codes", "blackLevels", "digitalSaturationCodes", "saturationFlags"], "Invalid packed RAW output.");
29
+ /** Validates packed RAW storage and recomputes its plan. Shared with the native DNG writer. Not exported from the package. */
30
+ export function validatePackedNativeRaw(raw) {
31
+ requireAllowlistedRecord(raw, ["plan", "codes", "blackLevels", "digitalSaturationCodes", "saturationFlags", "effectiveSaturationCodes"], "Invalid packed RAW output.");
20
32
  const p = raw.plan;
21
33
  if (!p?.exposure || !p.frame)
22
34
  throw new InvalidConfigurationError("Packed RAW requires complete exposure and frame metadata.");
23
35
  const { engineApiVersion, resolvedGeometry, equivalentFocalLength35Mm, ...exposure } = p.exposure;
24
36
  void engineApiVersion;
25
37
  void resolvedGeometry;
26
- void equivalentFocalLength35Mm;
27
38
  const { capture, containerBitDepth, ...frame } = p.frame;
28
- void capture;
29
39
  void containerBitDepth;
30
40
  const input = { exposure, ...frame, maximumOutputBytes: p.outputBytes, ...(p.tileWidth === undefined ? {} : { tileWidth: p.tileWidth }), ...(p.exposureWindow ? { exposureWindow: p.exposureWindow } : {}) };
31
41
  const plan = calculateNativeRawPlan(input);
32
- if (canonical(p) !== canonical(plan))
42
+ // The recomputed 35 mm-equivalent focal length (also inside frame.capture, the same exposure record) may
43
+ // differ by a few ULPs, so records parse in every JavaScript engine. Every other field must match exactly.
44
+ const eq = plan.exposure.equivalentFocalLength35Mm, archivedFrameEq = capture?.equivalentFocalLength35Mm;
45
+ if (typeof equivalentFocalLength35Mm !== "number" || !equalWithinUlps(equivalentFocalLength35Mm, eq, 8) || typeof archivedFrameEq !== "number" || !equalWithinUlps(archivedFrameEq, eq, 8) ||
46
+ canonical({ ...p, exposure: { ...p.exposure, equivalentFocalLength35Mm: eq }, frame: { ...p.frame, capture: { ...p.frame.capture, equivalentFocalLength35Mm: eq } } }) !== canonical(plan))
33
47
  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)
48
+ const layout = plan.frame.colorSamplingProfile.layout, phaseCount = layout.kind === "periodic-mosaic" ? layout.repeatWidthSites * layout.repeatHeightSites : 0;
49
+ const buffers = new Set();
50
+ for (const [a, type, length] of [[raw.codes, Uint16Array, plan.pixelCount], [raw.blackLevels, Uint16Array, plan.pixelCount], [raw.digitalSaturationCodes, Uint16Array, plan.pixelCount],
51
+ [raw.saturationFlags, Uint8Array, plan.pixelCount], [raw.effectiveSaturationCodes, Uint16Array, phaseCount]]) {
52
+ if (!(a instanceof type) || !(a.buffer instanceof ArrayBuffer) || a.length !== length || a.buffer.byteLength !== a.byteLength || buffers.has(a.buffer))
36
53
  throw new InvalidConfigurationError("Packed RAW storage must be exact owned native arrays.");
54
+ buffers.add(a.buffer);
55
+ }
37
56
  return plan;
38
57
  }
58
+ /** Takes sole ownership: detaches without copying when the runtime supports ArrayBuffer transfer, otherwise copies. */
59
+ function own(array, make) {
60
+ const buffer = array.buffer;
61
+ return typeof buffer.transfer === "function" ? make(buffer.transfer()) : make(buffer.slice(0));
62
+ }
63
+ /** Takes the validated packed RAW's arrays (without copying where supported). Not exported from the package. */
64
+ export function takeNativeRawOwnership(given, plan) {
65
+ return { plan, codes: own(given.codes, b => new Uint16Array(b)), blackLevels: own(given.blackLevels, b => new Uint16Array(b)),
66
+ digitalSaturationCodes: own(given.digitalSaturationCodes, b => new Uint16Array(b)), saturationFlags: own(given.saturationFlags, b => new Uint8Array(b)),
67
+ effectiveSaturationCodes: given.effectiveSaturationCodes.slice() };
68
+ }
39
69
  /**
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.
70
+ * Synchronous checks of metadata, kernel halo (the neighbourhood each pixel reads) and CFA, shared by the
71
+ * task, the reference and the accelerator. No pixel loop. Not exported from the package.
45
72
  */
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;
73
+ export function prepareNativeRawDevelopment(input) {
74
+ const r = requireAllowlistedRecord(input, ["raw", "phaseProfiles", "colorProfile", "whiteBalance", "rendering", "highlightMode", "borderHandling", "maximumRetainedPayloadBytes"], "Invalid native RAW development input.");
75
+ const plan = validatePackedNativeRaw(input.raw), g = plan.exposure.resolvedGeometry, native = plan.exposure.geometry.nativeRaster;
51
76
  const phases = freezeOwnedData(parseRawReconstructionPhaseProfiles(r.phaseProfiles, plan.frame.modeId, plan.frame.colorSamplingProfile));
52
77
  const color = freezeOwnedData(parseExportSensorColorProfile(r.colorProfile)), profile = freezeOwnedData(parseSdrRenderingProfile(r.rendering));
53
78
  const crop = g.output.cropRect, raster = g.output.raster, active = g.activeCapture.nativeRect, intent = plan.exposure.whiteBalanceIntent;
79
+ const highlightMode = r.highlightMode === undefined ? "clip" : r.highlightMode;
80
+ if (highlightMode !== "clip" && highlightMode !== "reconstruct")
81
+ throw new InvalidConfigurationError("Unsupported RAW highlight mode.");
82
+ const border = r.borderHandling === undefined ? "reject" : r.borderHandling;
83
+ if (border !== "reject" && border !== "mirror")
84
+ throw new InvalidConfigurationError("Unsupported RAW border handling.");
54
85
  if (color.colorSamplingProfileId !== plan.frame.colorSamplingProfile.profileId || phases.some(p => canonical(p.profile.kernels.map(k => k.outputChannelId)) !== canonical(color.channelIds)) ||
55
86
  (r.whiteBalance !== "not-required" && r.whiteBalance !== "apply-resolved-sensor-gains") || (intent !== null) !== (r.whiteBalance === "apply-resolved-sensor-gains") ||
56
87
  raster.pixelWidth !== crop.width || raster.pixelHeight !== crop.height)
57
88
  throw new InvalidConfigurationError("Development requires bound sensor RGB, explicit one-time WB and 1:1 output crop.");
58
- const whiteBalance = r.whiteBalance;
59
89
  const bytes = plan.outputBytes + raster.pixelWidth * raster.pixelHeight * 3 * profile.bitDepth / 8;
60
90
  if (typeof r.maximumRetainedPayloadBytes !== "number" || !Number.isSafeInteger(r.maximumRetainedPayloadBytes) || r.maximumRetainedPayloadBytes < bytes)
61
91
  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;
92
+ const gains = intent ? [intent.channelGains.red, intent.channelGains.green, intent.channelGains.blue] : null;
93
+ const development = prepareSensorColorDevelopment(color.normalizedCameraChannelsToXyz, gains, highlightMode), layout = plan.frame.colorSamplingProfile.layout;
66
94
  if (layout.kind !== "periodic-mosaic")
67
95
  throw new InvalidConfigurationError("Development requires periodic CFA.");
68
96
  const nativeCorners = [{ x: crop.x + .5, y: crop.y + .5 }, { x: crop.x + crop.width - .5, y: crop.y + crop.height - .5 }].map(point => {
@@ -78,59 +106,190 @@ export function createNativeRawDevelopmentTask(input, yieldControl) {
78
106
  const lastX = maxX - (maxX - phase.phaseX + layout.repeatWidthSites) % layout.repeatWidthSites, lastY = maxY - (maxY - phase.phaseY + layout.repeatHeightSites) % layout.repeatHeightSites;
79
107
  for (const kernel of phase.profile.kernels)
80
108
  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.");
109
+ if (firstX + c.offsetX < 0 || firstY + c.offsetY < 0 || lastX + c.offsetX >= native.pixelWidth || lastY + c.offsetY >= native.pixelHeight) {
110
+ if (border === "reject")
111
+ throw new InvalidConfigurationError("Reconstruction halo leaves native RAW; no padding or renormalization.");
112
+ // Mirror: check the virtual site from the repeating pattern; validateMirrorBorderCfaConsistency proves mirrored reads agree with it.
113
+ const vx = phase.phaseX + c.offsetX, vy = phase.phaseY + c.offsetY;
114
+ if (layout.siteChannelIds[((vy % layout.repeatHeightSites) + layout.repeatHeightSites) % layout.repeatHeightSites * layout.repeatWidthSites + ((vx % layout.repeatWidthSites) + layout.repeatWidthSites) % layout.repeatWidthSites] !== c.sourceChannelId)
115
+ throw new InvalidConfigurationError("Reconstruction source channel disagrees with absolute CFA phase.");
116
+ continue;
117
+ }
83
118
  const channel = resolveColorSamplingSite({ profile: plan.frame.colorSamplingProfile, site: { x: firstX + c.offsetX, y: firstY + c.offsetY } }).mapping.channelId;
84
119
  if (channel !== c.sourceChannelId)
85
120
  throw new InvalidConfigurationError("Reconstruction source channel disagrees with absolute CFA phase.");
86
121
  }
87
122
  }
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() };
123
+ let mirror;
124
+ if (border === "mirror") {
125
+ const reach = rawReconstructionKernelReach(phases);
126
+ validateMirrorBorderCfaConsistency(layout, native.pixelWidth, native.pixelHeight, reach);
127
+ mirror = { nativeHeight: native.pixelHeight, reach };
128
+ }
129
+ return { plan, phases, color, profile, whiteBalance: r.whiteBalance, highlightMode, development, crop, raster, border, mirror };
130
+ }
131
+ /** Checks the numbers in rows [y0,y1). Values below black stay signed; each white-minus-black span is positive. Not exported from the package. */
132
+ export function checkNativeRawIntegrity(raw, nativeWidth, repeatWidth, repeatHeight, y0, y1) {
133
+ const codes = raw.codes, blacks = raw.blackLevels, digital = raw.digitalSaturationCodes, flags = raw.saturationFlags, white = raw.effectiveSaturationCodes;
134
+ for (let y = y0; y < y1; y++) {
135
+ const row = (y % repeatHeight) * repeatWidth;
136
+ for (let x = 0, i = y * nativeWidth; x < nativeWidth; x++, i++) {
137
+ const d = digital[i], w = white[row + x % repeatWidth], b = blacks[i];
138
+ if (b >= w || w > d || codes[i] > d || flags[i] > 7)
139
+ throw new InvalidConfigurationError("Invalid packed RAW code span, white level or saturation flags.");
140
+ }
141
+ }
142
+ }
143
+ function source(raw, plan) {
144
+ const layout = plan.frame.colorSamplingProfile.layout;
145
+ if (layout.kind !== "periodic-mosaic")
146
+ throw new InvalidConfigurationError("Development requires periodic CFA.");
147
+ return { nativeWidth: plan.exposure.geometry.nativeRaster.pixelWidth, repeatWidth: layout.repeatWidthSites, repeatHeight: layout.repeatHeightSites,
148
+ codes: raw.codes, blackLevels: raw.blackLevels, saturationFlags: raw.saturationFlags, whiteByPhase: raw.effectiveSaturationCodes };
149
+ }
150
+ function emptyDiagnostics() {
151
+ return { renderingNegativeSampleCount: 0, renderingAboveReferenceSampleCount: 0, toneChangedSampleCount: 0, gamutClippedLowSampleCount: 0, gamutClippedHighSampleCount: 0, captureSaturation: "consumed-in-raw-development" };
152
+ }
153
+ function highlightOf(mode, counts) {
154
+ return { mode, saturatedPixelCount: counts.saturatedPixelCount, whiteBalanceClippedSampleCount: counts.whiteBalanceClippedSampleCount, reconstructedPixelCount: counts.reconstructedPixelCount };
155
+ }
156
+ /**
157
+ * Internal, slow reference development using one object per step (not exported from the package). It is
158
+ * kept to prove that the fast typed kernel gives byte-identical output.
159
+ *
160
+ * For each pixel it maps orientation with `transformOrientedRasterPointToNative`, gathers each channel
161
+ * with `calculateRawReconstructionChannel`, develops with the shared colour operator, and renders
162
+ * 256-pixel rows with the reference `calculateSdrRendering`. It does not take ownership of the RAW.
163
+ */
164
+ export function developNativeRawReference(input) {
165
+ const v = prepareNativeRawDevelopment(input), plan = v.plan, g = plan.exposure.resolvedGeometry, active = g.activeCapture.nativeRect, src = source(input.raw, plan);
166
+ checkNativeRawIntegrity(input.raw, src.nativeWidth, src.repeatWidth, src.repeatHeight, 0, plan.exposure.geometry.nativeRaster.pixelHeight);
167
+ const counts = createRawDevelopmentCounts(), diagnostics = emptyDiagnostics(), out = [];
168
+ for (let y = 0; y < v.raster.pixelHeight; y++)
169
+ for (let x = 0; x < v.raster.pixelWidth; x += TILE_WIDTH) {
170
+ const width = Math.min(TILE_WIDTH, v.raster.pixelWidth - x), rgb = [];
171
+ for (let j = 0; j < width; j++) {
172
+ const q = transformOrientedRasterPointToNative({ point: { x: v.crop.x + x + j + .5, y: v.crop.y + y + .5 }, nativeRaster: g.activeCapture.raster, orientation: plan.exposure.geometry.orientation });
173
+ const point = { x: Math.floor(q.x) + active.x, y: Math.floor(q.y) + active.y };
174
+ const phase = v.phases[(point.y % src.repeatHeight) * src.repeatWidth + point.x % src.repeatWidth];
175
+ let saturated = false;
176
+ const values = phase.profile.kernels.map(kernel => calculateRawReconstructionChannel(kernel, point, (sx, sy) => {
177
+ if (rawSiteSaturated(src, sx, sy))
178
+ saturated = true;
179
+ return normalizedRawSite(src, sx, sy);
180
+ }, v.mirror === undefined ? undefined : { width: src.nativeWidth, height: v.mirror.nativeHeight }).linearBlackSubtractedNormalizedValue);
181
+ if (saturated)
182
+ counts.saturatedPixelCount++;
183
+ const developed = [0, 0, 0];
184
+ v.development.developInto(values[0], values[1], values[2], developed, 0, counts);
185
+ rgb.push(...developed);
186
+ }
187
+ const rendered = calculateSdrRendering({ sourceImageStateId: plan.frame.frameId + ":developed", inputImageState: "color-transformed-linear-rgb", inputColorSpace: "linear-srgb-d65", whiteBalanceHandling: plan.exposure.whiteBalanceIntent ? "already-applied-upstream" : "not-required", pixelWidth: width, pixelHeight: 1, referenceWhiteValue: 1, samples: rgb, profile: v.profile }).value;
188
+ out.push(...rendered.integerSamples);
189
+ for (const key of ["renderingNegativeSampleCount", "renderingAboveReferenceSampleCount", "toneChangedSampleCount", "gamutClippedLowSampleCount", "gamutClippedHighSampleCount"])
190
+ diagnostics[key] += rendered.diagnostics[key];
191
+ }
192
+ return { integerSamples: out, diagnostics, highlight: highlightOf(v.highlightMode, counts) };
193
+ }
194
+ function sdrOutputEncoding(maximum) {
195
+ return { imageState: "output-referred-sdr", colorSpace: "srgb", primariesXy: { red: [.64, .33], green: [.30, .60], blue: [.15, .06] }, whitePointXy: [.3127, .3290], referenceWhiteLuminanceCdM2: 80, codeMinimum: 0, codeMaximum: maximum };
196
+ }
197
+ /**
198
+ * Creates a native RAW development task.
199
+ *
200
+ * It checks that every CFA phase has a reconstruction kernel and that every kernel neighbourhood is
201
+ * available, takes ownership of the packed RAW (without copying where supported), and renders 256-pixel
202
+ * output tiles with the fast typed kernel. Development scales each site to its CFA phase's effective white
203
+ * level, clips flagged or white-level sites before white balance, and applies the selected highlight mode
204
+ * (see `prepareSensorColorDevelopment`).
205
+ *
206
+ * The RAW numbers are checked in bounded chunks at the start of `run()`, with host yields, so creating the
207
+ * task costs only as much as reading the metadata. The task yields to the host at chunk and tile boundaries
208
+ * once about 8 ms of work has passed since the last yield, and after the final tile. Yield timing never
209
+ * changes the output.
210
+ *
211
+ * `provider` is `{ yieldControl, onProgress? }`, the same shape as the other native task providers. A bare
212
+ * yield function is still accepted in 2.x but is deprecated.
213
+ *
214
+ * The tile width used at capture is kept when rebuilding the exact packed plan. That width changes neither
215
+ * CFA or noise-seed coordinates nor the developed pixels, and says nothing about transport or what a device
216
+ * can handle.
217
+ */
218
+ export function createNativeRawDevelopmentTask(input, provider) {
219
+ return createNativeRawDevelopmentTaskWithCadence(input, provider, DEFAULT_HOST_YIELD_CADENCE);
220
+ }
221
+ /** Internal: the same task with an explicit host-yield timing. Timing never changes output. Not exported from the package. */
222
+ export function createNativeRawDevelopmentTaskWithCadence(input, provider, cadence) {
223
+ const hooks = typeof provider === "function" ? { yieldControl: provider } : provider;
224
+ if (!hooks || typeof hooks.yieldControl !== "function" || (hooks.onProgress !== undefined && typeof hooks.onProgress !== "function"))
225
+ throw new InvalidConfigurationError("Development requires a host event-loop yield.");
226
+ const yieldControl = hooks.yieldControl.bind(hooks), onProgress = hooks.onProgress?.bind(hooks);
227
+ const v = prepareNativeRawDevelopment(input), plan = v.plan, g = plan.exposure.resolvedGeometry, active = g.activeCapture.nativeRect, raster = v.raster, crop = v.crop;
228
+ const nativeHeight = plan.exposure.geometry.nativeRaster.pixelHeight;
229
+ // Ownership is transferred only after every synchronous check has passed.
230
+ const raw = takeNativeRawOwnership(input.raw, plan);
231
+ const src = source(raw, plan), tilesPerRow = Math.ceil(raster.pixelWidth / TILE_WIDTH), totalTileCount = tilesPerRow * raster.pixelHeight;
93
232
  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; }
233
+ let state = "ready", output = null, codes = null, completed = 0;
234
+ function release() { raw.codes.fill(0); raw.blackLevels.fill(0); raw.digitalSaturationCodes.fill(0); raw.saturationFlags.fill(0); raw.effectiveSaturationCodes.fill(0); codes?.fill(0); codes = null; output = null; }
96
235
  function check() { if (abort.signal.aborted)
97
236
  throw new InvalidConfigurationError("Native RAW development aborted."); }
98
- return { get state() { return state; },
237
+ /** Native coordinates of oriented output pixel (x, y) and the step to (x+1, y), both integer. */
238
+ function rowMapping(x, y, width) {
239
+ const at = (j) => { const q = transformOrientedRasterPointToNative({ point: { x: crop.x + x + j + .5, y: crop.y + y + .5 }, nativeRaster: g.activeCapture.raster, orientation: plan.exposure.geometry.orientation }); return { x: Math.floor(q.x) + active.x, y: Math.floor(q.y) + active.y }; };
240
+ const first = at(0), second = width > 1 ? at(1) : first, dx = second.x - first.x, dy = second.y - first.y, last = at(width - 1);
241
+ if (Math.abs(dx) + Math.abs(dy) !== (width > 1 ? 1 : 0) || last.x !== first.x + dx * (width - 1) || last.y !== first.y + dy * (width - 1))
242
+ throw new InvalidConfigurationError("Development orientation mapping is not a unit native step.");
243
+ return { nx: first.x, ny: first.y, dx, dy };
244
+ }
245
+ return { get state() { return state; }, get completedTileCount() { return completed; }, totalTileCount,
99
246
  async run() {
100
247
  if (state !== "ready")
101
248
  throw new InvalidConfigurationError("Development task is single-use.");
102
249
  state = "running";
103
250
  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;
251
+ const gate = createHostYieldGate(cadence);
252
+ const rowsPerChunk = Math.max(1, Math.floor(INTEGRITY_CHUNK_SITES / src.nativeWidth));
253
+ for (let y = 0; y < nativeHeight; y += rowsPerChunk) {
254
+ check();
255
+ checkNativeRawIntegrity(raw, src.nativeWidth, src.repeatWidth, src.repeatHeight, y, Math.min(nativeHeight, y + rowsPerChunk));
256
+ if (gate.due()) {
257
+ await yieldControl(abort.signal);
258
+ check();
259
+ gate.restart();
260
+ }
261
+ }
262
+ codes = v.profile.bitDepth === 8 ? new Uint8Array(raster.pixelWidth * raster.pixelHeight * 3) : new Uint16Array(raster.pixelWidth * raster.pixelHeight * 3);
263
+ const diagnostics = emptyDiagnostics(), developer = createRawPixelDeveloper(src, v.phases, v.development, v.mirror), tone = prepareSdrPixelTone(v.profile);
264
+ const scale = 2 ** v.profile.renderingExposureEv, maximum = 2 ** v.profile.bitDepth - 1, rgb = new Float64Array(TILE_WIDTH * 3), scratch = new Float64Array(3);
265
+ if (!Number.isFinite(scale) || scale <= 0)
266
+ throw new InvalidConfigurationError("Rendering scale is unrepresentable.");
107
267
  for (let y = 0; y < raster.pixelHeight; y++)
108
- for (let x = 0; x < raster.pixelWidth; x += 256) {
268
+ for (let x = 0; x < raster.pixelWidth; x += TILE_WIDTH) {
109
269
  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;
270
+ const width = Math.min(TILE_WIDTH, raster.pixelWidth - x), map = rowMapping(x, y, width);
271
+ const counts = { negative: 0, above: 0, changed: 0, low: 0, high: 0, outOfGamut: false };
272
+ developer.developRun(map.nx, map.ny, map.dx, map.dy, width, rgb);
273
+ renderSdrRunInto(rgb, 0, width, v.profile, tone, scale, maximum, codes, (y * raster.pixelWidth + x) * 3, scratch, counts);
274
+ // Same 256-pixel granularity as the reference rows, so exposure errors come before gamut rejection.
275
+ if (counts.outOfGamut)
276
+ throw new InvalidConfigurationError("Tone output exceeds the declared SDR gamut range.");
277
+ diagnostics.renderingNegativeSampleCount += counts.negative;
278
+ diagnostics.renderingAboveReferenceSampleCount += counts.above;
279
+ diagnostics.toneChangedSampleCount += counts.changed;
280
+ diagnostics.gamutClippedLowSampleCount += counts.low;
281
+ diagnostics.gamutClippedHighSampleCount += counts.high;
282
+ completed++;
283
+ onProgress?.({ completedTileCount: completed, totalTileCount });
284
+ if (gate.due() || (y === raster.pixelHeight - 1 && x + TILE_WIDTH >= raster.pixelWidth)) {
285
+ await yieldControl(abort.signal);
286
+ check();
287
+ gate.restart();
129
288
  }
130
- await yieldControl(abort.signal);
131
- check();
132
289
  }
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 };
290
+ output = { raw, phaseProfiles: v.phases, colorProfile: v.color, whiteBalance: v.whiteBalance, width: raster.pixelWidth, height: raster.pixelHeight, integerSamples: codes, diagnostics,
291
+ highlight: highlightOf(v.highlightMode, developer.counts), borderHandling: v.border, rendering: v.profile, displayAdaptation: { kind: "external-platform", applied: false, displayCapabilities: "unknown" },
292
+ outputEncoding: sdrOutputEncoding(maximum), imageDataPairing: "derived-from-exact-packed-native-raw", producerOriginVerified: false };
134
293
  state = "completed";
135
294
  }
136
295
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"native-raw-development.js","sourceRoot":"","sources":["../../src/capture/native-raw-development.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-raw-development.js","sourceRoot":"","sources":["../../src/capture/native-raw-development.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Native RAW development: turns packed RAW codes into an SDR image. It reconstructs full colour from\n * the CFA (colour filter array) mosaic exactly, then applies the shared colour, white-balance and SDR\n * steps, in bounded pixel tiles.\n */\nimport { calculateNativeRawPlan, type NativeRawInput, type NativeRawOutput, type NativeRawTaskState } from \"./native-raw.js\";\nimport { parseRawReconstructionPhaseProfiles, type RawFrameReconstructionPhaseProfile } from \"./raw-frame-reconstruction.js\";\nimport { calculateRawReconstructionChannel, rawReconstructionKernelReach, validateMirrorBorderCfaConsistency,\n type RawReconstructionBorderHandling } from \"../sensor/raw-reconstruction.js\";\nimport { equalWithinUlps } from \"../core/portable-math.js\";\nimport { resolveColorSamplingSite } from \"../sensor/color-sampling.js\";\nimport { parseExportSensorColorProfile, type ExportSensorColorProfile } from \"./photographic-export.js\";\nimport { prepareSensorColorDevelopment, type RawHighlightMode, type SensorColorDevelopment } from \"../color/sensor-color-development.js\";\nimport { calculateSdrRendering, parseSdrRenderingProfile, prepareSdrPixelTone, type SdrRenderingProfile, type SdrRenderingResult } from \"../output/sdr-rendering.js\";\nimport { renderSdrRunInto, type NativeTaskProgress, type SdrPixelCounts } from \"../output/native-capture-sdr.js\";\nimport { transformOrientedRasterPointToNative } from \"../output/capture-geometry.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport { DEFAULT_HOST_YIELD_CADENCE, createHostYieldGate, type HostYieldCadence } from \"./host-yield-cadence.js\";\nimport { requireAllowlistedRecord } from \"../core/record-validation.js\";\nimport { stringifyCanonicalJson } from \"../core/canonical-json.js\";\nimport { freezeOwnedData } from \"../core/owned-data.js\";\nimport { createRawDevelopmentCounts, createRawPixelDeveloper, normalizedRawSite, rawSiteSaturated,\n type RawDevelopmentCounts, type RawDevelopmentSource } from \"./raw-development-kernel.js\";\n\nexport interface NativeRawDevelopmentInput {\n /**\n * Packed RAW. Ownership passes to the task. On creation its five typed arrays are detached with\n * `ArrayBuffer.prototype.transfer` (no copy; the caller's arrays become length 0), or copied when\n * the runtime has no `transfer`. The developed output hands back the same RAW, now owned by the output.\n */\n raw: NativeRawOutput;\n phaseProfiles: readonly RawFrameReconstructionPhaseProfile[];\n colorProfile: ExportSensorColorProfile;\n whiteBalance: \"not-required\" | \"apply-resolved-sensor-gains\";\n rendering: SdrRenderingProfile;\n /** Highlight handling. `clip` (default): clipped highlights become neutral. `reconstruct`: the documented blend toward neutral. */\n highlightMode?: RawHighlightMode;\n /**\n * Frame-edge handling. `reject` (default): every reconstruction neighbourhood must lie inside the\n * native RAW frame. `mirror`: a site outside the frame is read from its mirror image (reflect-101,\n * edge not repeated). This is allowed only when the mirrored site has the same CFA colour, which is\n * always true for a 2×2 Bayer pattern. Interior pixels are unchanged.\n */\n borderHandling?: RawReconstructionBorderHandling;\n /** Counts the kept packed RAW plus the integer output. It does not count caller buffers, process heap or GPU memory. */\n maximumRetainedPayloadBytes: number;\n}\n/** RAW saturation handled before white balance. Counts are pixels or samples of the developed output. */\nexport interface RawHighlightDiagnostics {\n mode: RawHighlightMode;\n /** Output pixels with at least one contributing site at or above its white level, or flagged as saturated. */\n saturatedPixelCount: number;\n /** `clip`: WB-scaled samples clipped at the smallest gain. Always 0 for `reconstruct`. */\n whiteBalanceClippedSampleCount: number;\n /** `reconstruct`: pixels blended toward neutral. Always 0 for `clip`. */\n reconstructedPixelCount: number;\n}\nexport interface NativeRawDevelopmentOutput {\n raw: NativeRawOutput;\n phaseProfiles: readonly RawFrameReconstructionPhaseProfile[];\n colorProfile: ExportSensorColorProfile;\n whiteBalance: NativeRawDevelopmentInput[\"whiteBalance\"];\n width: number;\n height: number;\n integerSamples: Uint8Array | Uint16Array;\n diagnostics: SdrRenderingResult[\"diagnostics\"];\n highlight: RawHighlightDiagnostics;\n borderHandling: RawReconstructionBorderHandling;\n outputEncoding: SdrRenderingResult[\"outputEncoding\"];\n rendering: SdrRenderingProfile;\n displayAdaptation: SdrRenderingResult[\"displayAdaptation\"];\n imageDataPairing: \"derived-from-exact-packed-native-raw\";\n producerOriginVerified: false;\n}\n/** Host callbacks, the same shape as the other native task providers but without a tile reader. */\nexport interface NativeRawDevelopmentProvider {\n /** Must yield to the host event loop, so cancellation and input events can run between tiles. */\n yieldControl(signal: AbortSignal): Promise<void>;\n /** Optional callback after each committed 256-pixel output tile. It cannot change the output. */\n onProgress?(progress: NativeTaskProgress): void;\n}\nexport interface NativeRawDevelopmentTask {\n readonly state: NativeRawTaskState;\n readonly completedTileCount: number;\n readonly totalTileCount: number;\n run(): Promise<void>;\n cancel(): void;\n dispose(): void;\n takeOutput(): NativeRawDevelopmentOutput;\n}\nconst TILE_WIDTH = 256;\n/** Sites checked per integrity chunk before checking whether it is time to yield. */\nconst INTEGRITY_CHUNK_SITES = 1 << 18;\nfunction canonical(value: unknown): string {\n return stringifyCanonicalJson(value,{undefinedObjectProperties:\"reject\",nonFiniteNumberMessage:\"Invalid RAW metadata.\",unsupportedValueMessage:\"Invalid RAW metadata.\"});\n}\n/** Validates packed RAW storage and recomputes its plan. Shared with the native DNG writer. Not exported from the package. */\nexport function validatePackedNativeRaw(raw: NativeRawOutput): NativeRawOutput[\"plan\"] {\n requireAllowlistedRecord(raw,[\"plan\",\"codes\",\"blackLevels\",\"digitalSaturationCodes\",\"saturationFlags\",\"effectiveSaturationCodes\"],\"Invalid packed RAW output.\");\n const p=raw.plan;\n if(!p?.exposure||!p.frame)throw new InvalidConfigurationError(\"Packed RAW requires complete exposure and frame metadata.\");\n const {engineApiVersion,resolvedGeometry,equivalentFocalLength35Mm,...exposure}=p.exposure;\n void engineApiVersion;void resolvedGeometry;\n const {capture,containerBitDepth,...frame}=p.frame;void containerBitDepth;\n const input: NativeRawInput={exposure,...frame,maximumOutputBytes:p.outputBytes,...(p.tileWidth===undefined?{}:{tileWidth:p.tileWidth}),...(p.exposureWindow?{exposureWindow:p.exposureWindow}:{})};\n const plan=calculateNativeRawPlan(input);\n // The recomputed 35 mm-equivalent focal length (also inside frame.capture, the same exposure record) may\n // differ by a few ULPs, so records parse in every JavaScript engine. Every other field must match exactly.\n const eq=plan.exposure.equivalentFocalLength35Mm,archivedFrameEq=(capture as unknown as Record<string,unknown>|undefined)?.equivalentFocalLength35Mm;\n if(typeof equivalentFocalLength35Mm!==\"number\"||!equalWithinUlps(equivalentFocalLength35Mm,eq,8)||typeof archivedFrameEq!==\"number\"||!equalWithinUlps(archivedFrameEq,eq,8)||\n canonical({...p,exposure:{...p.exposure,equivalentFocalLength35Mm:eq},frame:{...p.frame,capture:{...p.frame.capture,equivalentFocalLength35Mm:eq}}})!==canonical(plan))\n throw new InvalidConfigurationError(\"Packed RAW metadata is stale or inconsistent.\");\n const layout=plan.frame.colorSamplingProfile.layout,phaseCount=layout.kind===\"periodic-mosaic\"?layout.repeatWidthSites*layout.repeatHeightSites:0;\n const buffers=new Set<ArrayBufferLike>();\n for(const [a,type,length] of [[raw.codes,Uint16Array,plan.pixelCount],[raw.blackLevels,Uint16Array,plan.pixelCount],[raw.digitalSaturationCodes,Uint16Array,plan.pixelCount],\n [raw.saturationFlags,Uint8Array,plan.pixelCount],[raw.effectiveSaturationCodes,Uint16Array,phaseCount]] as const){\n if(!(a instanceof type)||!(a.buffer instanceof ArrayBuffer)||a.length!==length||a.buffer.byteLength!==a.byteLength||buffers.has(a.buffer))throw new InvalidConfigurationError(\"Packed RAW storage must be exact owned native arrays.\");\n buffers.add(a.buffer);\n }\n return plan;\n}\n/** Takes sole ownership: detaches without copying when the runtime supports ArrayBuffer transfer, otherwise copies. */\nfunction own<T extends Uint8Array<ArrayBuffer>|Uint16Array<ArrayBuffer>>(array: T, make: (buffer: ArrayBuffer)=>T): T {\n const buffer=array.buffer as ArrayBuffer&{transfer?:()=>ArrayBuffer};\n return typeof buffer.transfer===\"function\"?make(buffer.transfer()):make(buffer.slice(0));\n}\n/** Takes the validated packed RAW's arrays (without copying where supported). Not exported from the package. */\nexport function takeNativeRawOwnership(given: NativeRawOutput, plan: NativeRawOutput[\"plan\"]): NativeRawOutput {\n return {plan,codes:own(given.codes as Uint16Array<ArrayBuffer>,b=>new Uint16Array(b)),blackLevels:own(given.blackLevels as Uint16Array<ArrayBuffer>,b=>new Uint16Array(b)),\n digitalSaturationCodes:own(given.digitalSaturationCodes as Uint16Array<ArrayBuffer>,b=>new Uint16Array(b)),saturationFlags:own(given.saturationFlags as Uint8Array<ArrayBuffer>,b=>new Uint8Array(b)),\n effectiveSaturationCodes:given.effectiveSaturationCodes.slice()};\n}\n/** Validated development metadata (internal; shared with the image-kernel accelerator). Not exported from the package. */\nexport interface PreparedDevelopment {\n plan: NativeRawOutput[\"plan\"]; phases: RawFrameReconstructionPhaseProfile[]; color: ExportSensorColorProfile; profile: SdrRenderingProfile;\n whiteBalance: NativeRawDevelopmentInput[\"whiteBalance\"]; highlightMode: RawHighlightMode; development: SensorColorDevelopment;\n crop: {x:number;y:number;width:number;height:number}; raster: {pixelWidth:number;pixelHeight:number};\n border: RawReconstructionBorderHandling; mirror: {nativeHeight:number;reach:number}|undefined;\n}\n/**\n * Synchronous checks of metadata, kernel halo (the neighbourhood each pixel reads) and CFA, shared by the\n * task, the reference and the accelerator. No pixel loop. Not exported from the package.\n */\nexport function prepareNativeRawDevelopment(input: NativeRawDevelopmentInput): PreparedDevelopment {\n const r=requireAllowlistedRecord(input,[\"raw\",\"phaseProfiles\",\"colorProfile\",\"whiteBalance\",\"rendering\",\"highlightMode\",\"borderHandling\",\"maximumRetainedPayloadBytes\"],\"Invalid native RAW development input.\");\n const plan=validatePackedNativeRaw(input.raw),g=plan.exposure.resolvedGeometry,native=plan.exposure.geometry.nativeRaster;\n const phases=freezeOwnedData(parseRawReconstructionPhaseProfiles(r.phaseProfiles,plan.frame.modeId,plan.frame.colorSamplingProfile));\n const color=freezeOwnedData(parseExportSensorColorProfile(r.colorProfile)),profile=freezeOwnedData(parseSdrRenderingProfile(r.rendering));\n const crop=g.output.cropRect,raster=g.output.raster,active=g.activeCapture.nativeRect,intent=plan.exposure.whiteBalanceIntent;\n const highlightMode=r.highlightMode===undefined?\"clip\":r.highlightMode;\n if(highlightMode!==\"clip\"&&highlightMode!==\"reconstruct\")throw new InvalidConfigurationError(\"Unsupported RAW highlight mode.\");\n const border=r.borderHandling===undefined?\"reject\":r.borderHandling;\n if(border!==\"reject\"&&border!==\"mirror\")throw new InvalidConfigurationError(\"Unsupported RAW border handling.\");\n if(color.colorSamplingProfileId!==plan.frame.colorSamplingProfile.profileId||phases.some(p=>canonical(p.profile.kernels.map(k=>k.outputChannelId))!==canonical(color.channelIds))||\n (r.whiteBalance!==\"not-required\"&&r.whiteBalance!==\"apply-resolved-sensor-gains\")||(intent!==null)!==(r.whiteBalance===\"apply-resolved-sensor-gains\")||\n raster.pixelWidth!==crop.width||raster.pixelHeight!==crop.height)throw new InvalidConfigurationError(\"Development requires bound sensor RGB, explicit one-time WB and 1:1 output crop.\");\n const bytes=plan.outputBytes+raster.pixelWidth*raster.pixelHeight*3*profile.bitDepth/8;\n if(typeof r.maximumRetainedPayloadBytes!==\"number\"||!Number.isSafeInteger(r.maximumRetainedPayloadBytes)||r.maximumRetainedPayloadBytes<bytes)throw new InvalidConfigurationError(\"Development exceeds retained output budget.\");\n const gains=intent?[intent.channelGains.red,intent.channelGains.green,intent.channelGains.blue]:null;\n const development=prepareSensorColorDevelopment(color.normalizedCameraChannelsToXyz,gains,highlightMode),layout=plan.frame.colorSamplingProfile.layout;\n if(layout.kind!==\"periodic-mosaic\")throw new InvalidConfigurationError(\"Development requires periodic CFA.\");\n const nativeCorners=[{x:crop.x+.5,y:crop.y+.5},{x:crop.x+crop.width-.5,y:crop.y+crop.height-.5}].map(point=>{\n const p=transformOrientedRasterPointToNative({point,nativeRaster:g.activeCapture.raster,orientation:plan.exposure.geometry.orientation});return {x:Math.floor(p.x)+active.x,y:Math.floor(p.y)+active.y};\n });\n 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));\n for(const phase of phases){\n const firstX=minX+(phase.phaseX-minX%layout.repeatWidthSites+layout.repeatWidthSites)%layout.repeatWidthSites;\n const firstY=minY+(phase.phaseY-minY%layout.repeatHeightSites+layout.repeatHeightSites)%layout.repeatHeightSites;\n if(firstX>maxX||firstY>maxY)continue;\n const lastX=maxX-(maxX-phase.phaseX+layout.repeatWidthSites)%layout.repeatWidthSites,lastY=maxY-(maxY-phase.phaseY+layout.repeatHeightSites)%layout.repeatHeightSites;\n for(const kernel of phase.profile.kernels)for(const c of kernel.contributions){\n if(firstX+c.offsetX<0||firstY+c.offsetY<0||lastX+c.offsetX>=native.pixelWidth||lastY+c.offsetY>=native.pixelHeight){\n if(border===\"reject\")throw new InvalidConfigurationError(\"Reconstruction halo leaves native RAW; no padding or renormalization.\");\n // Mirror: check the virtual site from the repeating pattern; validateMirrorBorderCfaConsistency proves mirrored reads agree with it.\n const vx=phase.phaseX+c.offsetX,vy=phase.phaseY+c.offsetY;\n if(layout.siteChannelIds[((vy%layout.repeatHeightSites)+layout.repeatHeightSites)%layout.repeatHeightSites*layout.repeatWidthSites+((vx%layout.repeatWidthSites)+layout.repeatWidthSites)%layout.repeatWidthSites]!==c.sourceChannelId)\n throw new InvalidConfigurationError(\"Reconstruction source channel disagrees with absolute CFA phase.\");\n continue;\n }\n const channel=resolveColorSamplingSite({profile:plan.frame.colorSamplingProfile,site:{x:firstX+c.offsetX,y:firstY+c.offsetY}}).mapping.channelId;\n if(channel!==c.sourceChannelId)throw new InvalidConfigurationError(\"Reconstruction source channel disagrees with absolute CFA phase.\");\n }\n }\n let mirror:PreparedDevelopment[\"mirror\"];\n if(border===\"mirror\"){\n const reach=rawReconstructionKernelReach(phases);\n validateMirrorBorderCfaConsistency(layout,native.pixelWidth,native.pixelHeight,reach);\n mirror={nativeHeight:native.pixelHeight,reach};\n }\n return {plan,phases,color,profile,whiteBalance:r.whiteBalance,highlightMode,development,crop,raster,border,mirror};\n}\n/** Checks the numbers in rows [y0,y1). Values below black stay signed; each white-minus-black span is positive. Not exported from the package. */\nexport function checkNativeRawIntegrity(raw: NativeRawOutput, nativeWidth: number, repeatWidth: number, repeatHeight: number, y0: number, y1: number): void {\n const codes=raw.codes,blacks=raw.blackLevels,digital=raw.digitalSaturationCodes,flags=raw.saturationFlags,white=raw.effectiveSaturationCodes;\n for(let y=y0;y<y1;y++){\n const row=(y%repeatHeight)*repeatWidth;\n for(let x=0,i=y*nativeWidth;x<nativeWidth;x++,i++){\n const d=digital[i]!,w=white[row+x%repeatWidth]!,b=blacks[i]!;\n if(b>=w||w>d||codes[i]!>d||flags[i]!>7)throw new InvalidConfigurationError(\"Invalid packed RAW code span, white level or saturation flags.\");\n }\n }\n}\nfunction source(raw: NativeRawOutput, plan: NativeRawOutput[\"plan\"]): RawDevelopmentSource {\n const layout=plan.frame.colorSamplingProfile.layout;\n if(layout.kind!==\"periodic-mosaic\")throw new InvalidConfigurationError(\"Development requires periodic CFA.\");\n return {nativeWidth:plan.exposure.geometry.nativeRaster.pixelWidth,repeatWidth:layout.repeatWidthSites,repeatHeight:layout.repeatHeightSites,\n codes:raw.codes,blackLevels:raw.blackLevels,saturationFlags:raw.saturationFlags,whiteByPhase:raw.effectiveSaturationCodes};\n}\nfunction emptyDiagnostics(): SdrRenderingResult[\"diagnostics\"] {\n return {renderingNegativeSampleCount:0,renderingAboveReferenceSampleCount:0,toneChangedSampleCount:0,gamutClippedLowSampleCount:0,gamutClippedHighSampleCount:0,captureSaturation:\"consumed-in-raw-development\"};\n}\nfunction highlightOf(mode: RawHighlightMode, counts: RawDevelopmentCounts): RawHighlightDiagnostics {\n return {mode,saturatedPixelCount:counts.saturatedPixelCount,whiteBalanceClippedSampleCount:counts.whiteBalanceClippedSampleCount,reconstructedPixelCount:counts.reconstructedPixelCount};\n}\n/**\n * Internal, slow reference development using one object per step (not exported from the package). It is\n * kept to prove that the fast typed kernel gives byte-identical output.\n *\n * For each pixel it maps orientation with `transformOrientedRasterPointToNative`, gathers each channel\n * with `calculateRawReconstructionChannel`, develops with the shared colour operator, and renders\n * 256-pixel rows with the reference `calculateSdrRendering`. It does not take ownership of the RAW.\n */\nexport function developNativeRawReference(input: NativeRawDevelopmentInput): {integerSamples:number[];diagnostics:SdrRenderingResult[\"diagnostics\"];highlight:RawHighlightDiagnostics} {\n const v=prepareNativeRawDevelopment(input),plan=v.plan,g=plan.exposure.resolvedGeometry,active=g.activeCapture.nativeRect,src=source(input.raw,plan);\n checkNativeRawIntegrity(input.raw,src.nativeWidth,src.repeatWidth,src.repeatHeight,0,plan.exposure.geometry.nativeRaster.pixelHeight);\n const counts=createRawDevelopmentCounts(),diagnostics=emptyDiagnostics(),out:number[]=[];\n for(let y=0;y<v.raster.pixelHeight;y++)for(let x=0;x<v.raster.pixelWidth;x+=TILE_WIDTH){\n const width=Math.min(TILE_WIDTH,v.raster.pixelWidth-x),rgb:number[]=[];\n for(let j=0;j<width;j++){\n const q=transformOrientedRasterPointToNative({point:{x:v.crop.x+x+j+.5,y:v.crop.y+y+.5},nativeRaster:g.activeCapture.raster,orientation:plan.exposure.geometry.orientation});\n const point={x:Math.floor(q.x)+active.x,y:Math.floor(q.y)+active.y};\n const phase=v.phases[(point.y%src.repeatHeight)*src.repeatWidth+point.x%src.repeatWidth]!;\n let saturated=false;\n const values=phase.profile.kernels.map(kernel=>calculateRawReconstructionChannel(kernel,point,(sx,sy)=>{\n if(rawSiteSaturated(src,sx,sy))saturated=true;return normalizedRawSite(src,sx,sy);\n },v.mirror===undefined?undefined:{width:src.nativeWidth,height:v.mirror.nativeHeight}).linearBlackSubtractedNormalizedValue);\n if(saturated)counts.saturatedPixelCount++;\n const developed=[0,0,0];v.development.developInto(values[0]!,values[1]!,values[2]!,developed,0,counts);rgb.push(...developed);\n }\n const rendered=calculateSdrRendering({sourceImageStateId:plan.frame.frameId+\":developed\",inputImageState:\"color-transformed-linear-rgb\",inputColorSpace:\"linear-srgb-d65\",whiteBalanceHandling:plan.exposure.whiteBalanceIntent?\"already-applied-upstream\":\"not-required\",pixelWidth:width,pixelHeight:1,referenceWhiteValue:1,samples:rgb,profile:v.profile}).value;\n out.push(...rendered.integerSamples);\n for(const key of [\"renderingNegativeSampleCount\",\"renderingAboveReferenceSampleCount\",\"toneChangedSampleCount\",\"gamutClippedLowSampleCount\",\"gamutClippedHighSampleCount\"] as const)diagnostics[key]+=rendered.diagnostics[key];\n }\n return {integerSamples:out,diagnostics,highlight:highlightOf(v.highlightMode,counts)};\n}\nfunction sdrOutputEncoding(maximum: number): SdrRenderingResult[\"outputEncoding\"] {\n return {imageState:\"output-referred-sdr\",colorSpace:\"srgb\",primariesXy:{red:[.64,.33],green:[.30,.60],blue:[.15,.06]},whitePointXy:[.3127,.3290],referenceWhiteLuminanceCdM2:80,codeMinimum:0,codeMaximum:maximum};\n}\n/**\n * Creates a native RAW development task.\n *\n * It checks that every CFA phase has a reconstruction kernel and that every kernel neighbourhood is\n * available, takes ownership of the packed RAW (without copying where supported), and renders 256-pixel\n * output tiles with the fast typed kernel. Development scales each site to its CFA phase's effective white\n * level, clips flagged or white-level sites before white balance, and applies the selected highlight mode\n * (see `prepareSensorColorDevelopment`).\n *\n * The RAW numbers are checked in bounded chunks at the start of `run()`, with host yields, so creating the\n * task costs only as much as reading the metadata. The task yields to the host at chunk and tile boundaries\n * once about 8 ms of work has passed since the last yield, and after the final tile. Yield timing never\n * changes the output.\n *\n * `provider` is `{ yieldControl, onProgress? }`, the same shape as the other native task providers. A bare\n * yield function is still accepted in 2.x but is deprecated.\n *\n * The tile width used at capture is kept when rebuilding the exact packed plan. That width changes neither\n * CFA or noise-seed coordinates nor the developed pixels, and says nothing about transport or what a device\n * can handle.\n */\nexport function createNativeRawDevelopmentTask(input: NativeRawDevelopmentInput,\n provider: NativeRawDevelopmentProvider | ((signal:AbortSignal)=>Promise<void>)): NativeRawDevelopmentTask {\n return createNativeRawDevelopmentTaskWithCadence(input,provider,DEFAULT_HOST_YIELD_CADENCE);\n}\n/** Internal: the same task with an explicit host-yield timing. Timing never changes output. Not exported from the package. */\nexport function createNativeRawDevelopmentTaskWithCadence(input: NativeRawDevelopmentInput,\n provider: NativeRawDevelopmentProvider | ((signal:AbortSignal)=>Promise<void>),cadence: HostYieldCadence): NativeRawDevelopmentTask {\n const hooks=typeof provider===\"function\"?{yieldControl:provider}:provider;\n if(!hooks||typeof hooks.yieldControl!==\"function\"||(hooks.onProgress!==undefined&&typeof hooks.onProgress!==\"function\"))throw new InvalidConfigurationError(\"Development requires a host event-loop yield.\");\n const yieldControl=hooks.yieldControl.bind(hooks),onProgress=hooks.onProgress?.bind(hooks);\n const v=prepareNativeRawDevelopment(input),plan=v.plan,g=plan.exposure.resolvedGeometry,active=g.activeCapture.nativeRect,raster=v.raster,crop=v.crop;\n const nativeHeight=plan.exposure.geometry.nativeRaster.pixelHeight;\n // Ownership is transferred only after every synchronous check has passed.\n const raw=takeNativeRawOwnership(input.raw,plan);\n const src=source(raw,plan),tilesPerRow=Math.ceil(raster.pixelWidth/TILE_WIDTH),totalTileCount=tilesPerRow*raster.pixelHeight;\n const abort=new AbortController();let state:NativeRawTaskState=\"ready\",output:NativeRawDevelopmentOutput|null=null,codes:Uint8Array|Uint16Array|null=null,completed=0;\n function release(): void {raw.codes.fill(0);raw.blackLevels.fill(0);raw.digitalSaturationCodes.fill(0);raw.saturationFlags.fill(0);raw.effectiveSaturationCodes.fill(0);codes?.fill(0);codes=null;output=null;}\n function check(): void {if(abort.signal.aborted)throw new InvalidConfigurationError(\"Native RAW development aborted.\");}\n /** Native coordinates of oriented output pixel (x, y) and the step to (x+1, y), both integer. */\n function rowMapping(x: number, y: number, width: number): {nx:number;ny:number;dx:number;dy:number} {\n const at=(j:number):{x:number;y:number}=>{const q=transformOrientedRasterPointToNative({point:{x:crop.x+x+j+.5,y:crop.y+y+.5},nativeRaster:g.activeCapture.raster,orientation:plan.exposure.geometry.orientation});return {x:Math.floor(q.x)+active.x,y:Math.floor(q.y)+active.y};};\n const first=at(0),second=width>1?at(1):first,dx=second.x-first.x,dy=second.y-first.y,last=at(width-1);\n if(Math.abs(dx)+Math.abs(dy)!==(width>1?1:0)||last.x!==first.x+dx*(width-1)||last.y!==first.y+dy*(width-1))throw new InvalidConfigurationError(\"Development orientation mapping is not a unit native step.\");\n return {nx:first.x,ny:first.y,dx,dy};\n }\n return {get state():NativeRawTaskState{return state;},get completedTileCount():number{return completed;},totalTileCount,\n async run():Promise<void>{\n if(state!==\"ready\")throw new InvalidConfigurationError(\"Development task is single-use.\");state=\"running\";\n try{\n const gate=createHostYieldGate(cadence);\n const rowsPerChunk=Math.max(1,Math.floor(INTEGRITY_CHUNK_SITES/src.nativeWidth));\n for(let y=0;y<nativeHeight;y+=rowsPerChunk){\n check();checkNativeRawIntegrity(raw,src.nativeWidth,src.repeatWidth,src.repeatHeight,y,Math.min(nativeHeight,y+rowsPerChunk));\n if(gate.due()){await yieldControl(abort.signal);check();gate.restart();}\n }\n codes=v.profile.bitDepth===8?new Uint8Array(raster.pixelWidth*raster.pixelHeight*3):new Uint16Array(raster.pixelWidth*raster.pixelHeight*3);\n const diagnostics=emptyDiagnostics(),developer=createRawPixelDeveloper(src,v.phases,v.development,v.mirror),tone=prepareSdrPixelTone(v.profile);\n const scale=2**v.profile.renderingExposureEv,maximum=2**v.profile.bitDepth-1,rgb=new Float64Array(TILE_WIDTH*3),scratch=new Float64Array(3);\n if(!Number.isFinite(scale)||scale<=0)throw new InvalidConfigurationError(\"Rendering scale is unrepresentable.\");\n for(let y=0;y<raster.pixelHeight;y++)for(let x=0;x<raster.pixelWidth;x+=TILE_WIDTH){\n check();const width=Math.min(TILE_WIDTH,raster.pixelWidth-x),map=rowMapping(x,y,width);\n const counts:SdrPixelCounts={negative:0,above:0,changed:0,low:0,high:0,outOfGamut:false};\n developer.developRun(map.nx,map.ny,map.dx,map.dy,width,rgb);\n renderSdrRunInto(rgb,0,width,v.profile,tone,scale,maximum,codes,(y*raster.pixelWidth+x)*3,scratch,counts);\n // Same 256-pixel granularity as the reference rows, so exposure errors come before gamut rejection.\n if(counts.outOfGamut)throw new InvalidConfigurationError(\"Tone output exceeds the declared SDR gamut range.\");\n diagnostics.renderingNegativeSampleCount+=counts.negative;diagnostics.renderingAboveReferenceSampleCount+=counts.above;diagnostics.toneChangedSampleCount+=counts.changed;\n diagnostics.gamutClippedLowSampleCount+=counts.low;diagnostics.gamutClippedHighSampleCount+=counts.high;\n completed++;onProgress?.({completedTileCount:completed,totalTileCount});\n if(gate.due()||(y===raster.pixelHeight-1&&x+TILE_WIDTH>=raster.pixelWidth)){await yieldControl(abort.signal);check();gate.restart();}\n }\n output={raw,phaseProfiles:v.phases,colorProfile:v.color,whiteBalance:v.whiteBalance,width:raster.pixelWidth,height:raster.pixelHeight,integerSamples:codes,diagnostics,\n highlight:highlightOf(v.highlightMode,developer.counts),borderHandling:v.border,rendering:v.profile,displayAdaptation:{kind:\"external-platform\",applied:false,displayCapabilities:\"unknown\"},\n outputEncoding:sdrOutputEncoding(maximum),imageDataPairing:\"derived-from-exact-packed-native-raw\",producerOriginVerified:false};state=\"completed\";\n }catch(error){release();if(!abort.signal.aborted){state=\"failed\";abort.abort();}throw error;}\n },\n cancel():void{if(state===\"ready\"||state===\"running\"||state===\"completed\"){state=\"cancelled\";abort.abort();release();}},\n dispose():void{if(state!==\"transferred\"){state=\"disposed\";abort.abort();release();}},\n takeOutput():NativeRawDevelopmentOutput{if(state!==\"completed\"||!output)throw new InvalidConfigurationError(\"Development output unavailable.\");const value=output;output=null;codes=null;state=\"transferred\";return value;}\n };\n}\n"]}
@@ -0,0 +1,60 @@
1
+ import type { NativeRawOutput } from "./native-raw.js";
2
+ import { type ExportSensorColorProfile } from "./photographic-export.js";
3
+ export declare const NATIVE_RAW_DNG_SCHEMA_VERSION: "1.0.0";
4
+ /** Output-referred noise parameters of one CFA channel (see the module notes). */
5
+ export interface NativeRawDngChannelNoise {
6
+ /** Electrons per output RAW code (system conversion gain divided by any post-ADC digital gain). */
7
+ conversionGainElectronsPerCode: number;
8
+ /** Combined RMS read noise, electrons. */
9
+ readNoiseRmsElectrons: number;
10
+ }
11
+ export interface SerializeNativeRawDngInput {
12
+ /** Packed native RAW. It is read, never taken over or modified. */
13
+ raw: NativeRawOutput;
14
+ /** Declared camera→XYZ (D65) colour profile for the RAW's CFA. Native development uses the same profile. */
15
+ colorProfile: ExportSensorColorProfile;
16
+ /** Optional NoiseProfile parameters by channel ID. If omitted, no NoiseProfile tag is written. */
17
+ noise?: Readonly<Record<string, NativeRawDngChannelNoise>>;
18
+ /** BaselineExposure in EV (exposure value stops). Default 0: the RAW white level maps to display white, as in native development. */
19
+ baselineExposureEv?: number;
20
+ /** Optional UTC time of the capture, exactly YYYY-MM-DDTHH:mm:ss.sssZ. If omitted, no date tags are written; the engine never makes up a clock time. */
21
+ capturedAtUtc?: string;
22
+ }
23
+ export interface NativeRawDng {
24
+ schemaVersion: typeof NATIVE_RAW_DNG_SCHEMA_VERSION;
25
+ mediaType: "image/dng";
26
+ bytes: Uint8Array;
27
+ sha256: string;
28
+ /** RawDataUniqueID (32 hex digits): the first 128 bits of SHA-256 over a fixed header and the little-endian codes. */
29
+ rawDataUniqueId: string;
30
+ uniqueCameraModel: string;
31
+ /** Stored geometry, levels and colour values exactly as written (rationals as numerator/denominator). */
32
+ activeArea: {
33
+ x: number;
34
+ y: number;
35
+ width: number;
36
+ height: number;
37
+ };
38
+ defaultCrop: {
39
+ x: number;
40
+ y: number;
41
+ width: number;
42
+ height: number;
43
+ };
44
+ orientation: number;
45
+ blackLevels: readonly number[];
46
+ whiteLevel: number;
47
+ cfaPattern: readonly number[];
48
+ colorMatrix1: readonly number[];
49
+ asShotNeutral: readonly number[];
50
+ noiseProfile: readonly number[] | null;
51
+ /** Sites flagged saturated whose code is below WhiteLevel; DNG has no field for them. */
52
+ unrepresentedSaturationFlagCount: number;
53
+ source: "packed-native-raw";
54
+ linearMasterDeclared: false;
55
+ }
56
+ /**
57
+ * Writes packed native RAW codes as a lossless, uncompressed CFA DNG. The module notes list every tag and
58
+ * where its value comes from. The input arrays are copied before the first await.
59
+ */
60
+ export declare function serializeNativeRawDng(input: SerializeNativeRawDngInput): Promise<NativeRawDng>;