@photivra/engine 2.21.0 → 2.23.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 (172) hide show
  1. package/CHANGELOG.md +150 -1
  2. package/CITATION.cff +1 -1
  3. package/README.md +6 -6
  4. package/SECURITY.md +1 -1
  5. package/THIRD_PARTY.md +11 -0
  6. package/dist/capture/c2pa-embed.d.ts +116 -0
  7. package/dist/capture/c2pa-embed.js +493 -0
  8. package/dist/capture/c2pa-embed.js.map +1 -0
  9. package/dist/capture/dng-import.d.ts +73 -8
  10. package/dist/capture/dng-import.js +315 -80
  11. package/dist/capture/dng-import.js.map +1 -1
  12. package/dist/capture/dng-opcodes.d.ts +96 -0
  13. package/dist/capture/dng-opcodes.js +391 -0
  14. package/dist/capture/dng-opcodes.js.map +1 -0
  15. package/dist/capture/dng-profile-maps.d.ts +99 -0
  16. package/dist/capture/dng-profile-maps.js +381 -0
  17. package/dist/capture/dng-profile-maps.js.map +1 -0
  18. package/dist/capture/dng-stage-image.d.ts +23 -0
  19. package/dist/capture/dng-stage-image.js +65 -0
  20. package/dist/capture/dng-stage-image.js.map +1 -0
  21. package/dist/capture/jpeg-xl-tiles.d.ts +22 -0
  22. package/dist/capture/jpeg-xl-tiles.js +151 -0
  23. package/dist/capture/jpeg-xl-tiles.js.map +1 -0
  24. package/dist/capture/lossy-jpeg.d.ts +17 -0
  25. package/dist/capture/lossy-jpeg.js +369 -0
  26. package/dist/capture/lossy-jpeg.js.map +1 -0
  27. package/dist/capture/native-raw-development.d.ts +2 -1
  28. package/dist/capture/native-raw-development.js.map +1 -1
  29. package/dist/color/neighbor-highlight-reconstruction.d.ts +76 -0
  30. package/dist/color/neighbor-highlight-reconstruction.js +257 -0
  31. package/dist/color/neighbor-highlight-reconstruction.js.map +1 -0
  32. package/dist/color/sensor-color-development.d.ts +5 -0
  33. package/dist/color/sensor-color-development.js +7 -1
  34. package/dist/color/sensor-color-development.js.map +1 -1
  35. package/dist/color/spectral-spikiness.d.ts +11 -0
  36. package/dist/color/spectral-spikiness.js +23 -0
  37. package/dist/color/spectral-spikiness.js.map +1 -0
  38. package/dist/core/execution-error.d.ts +21 -0
  39. package/dist/core/execution-error.js +12 -0
  40. package/dist/core/execution-error.js.map +1 -0
  41. package/dist/core/version.d.ts +1 -1
  42. package/dist/core/version.js +1 -1
  43. package/dist/core/version.js.map +1 -1
  44. package/dist/facade/catalogue-lens-signal.d.ts +26 -1
  45. package/dist/facade/catalogue-lens-signal.js +25 -7
  46. package/dist/facade/catalogue-lens-signal.js.map +1 -1
  47. package/dist/facade/diffraction-provider.d.ts +1 -1
  48. package/dist/facade/diffraction-provider.js +4 -4
  49. package/dist/facade/diffraction-provider.js.map +1 -1
  50. package/dist/facade/display-view-gpu-session.js +38 -6
  51. package/dist/facade/display-view-gpu-session.js.map +1 -1
  52. package/dist/facade/display-view-gpu.d.ts +13 -5
  53. package/dist/facade/display-view-gpu.js.map +1 -1
  54. package/dist/facade/display-view-normal.d.ts +15 -0
  55. package/dist/facade/display-view-normal.js +44 -0
  56. package/dist/facade/display-view-normal.js.map +1 -0
  57. package/dist/facade/display-view-rendering.d.ts +102 -0
  58. package/dist/facade/display-view-rendering.js +633 -0
  59. package/dist/facade/display-view-rendering.js.map +1 -0
  60. package/dist/facade/display-view.d.ts +37 -65
  61. package/dist/facade/display-view.js +147 -476
  62. package/dist/facade/display-view.js.map +1 -1
  63. package/dist/facade/expected-signal-setup.js +2 -2
  64. package/dist/facade/expected-signal-setup.js.map +1 -1
  65. package/dist/facade/fast-methods.d.ts +1 -1
  66. package/dist/facade/fast-methods.js +37 -8
  67. package/dist/facade/fast-methods.js.map +1 -1
  68. package/dist/facade/generic-lens-capture.d.ts +1 -1
  69. package/dist/facade/generic-lens-capture.js +1 -1
  70. package/dist/facade/generic-lens-capture.js.map +1 -1
  71. package/dist/facade/image-plane.js +41 -10
  72. package/dist/facade/image-plane.js.map +1 -1
  73. package/dist/facade/on-demand-kits.d.ts +14 -0
  74. package/dist/facade/on-demand-kits.js +36 -0
  75. package/dist/facade/on-demand-kits.js.map +1 -0
  76. package/dist/facade/opt-in-kit.d.ts +9 -0
  77. package/dist/facade/opt-in-kit.js +11 -0
  78. package/dist/facade/opt-in-kit.js.map +1 -0
  79. package/dist/facade/quality-kit.d.ts +21 -0
  80. package/dist/facade/quality-kit.js +23 -0
  81. package/dist/facade/quality-kit.js.map +1 -0
  82. package/dist/facade/quality-paths.d.ts +22 -0
  83. package/dist/facade/quality-paths.js +44 -0
  84. package/dist/facade/quality-paths.js.map +1 -0
  85. package/dist/facade/scene-radiance.d.ts +18 -2
  86. package/dist/facade/scene-radiance.js +6 -4
  87. package/dist/facade/scene-radiance.js.map +1 -1
  88. package/dist/facade/simulate-capture.d.ts +32 -13
  89. package/dist/facade/simulate-capture.js +162 -69
  90. package/dist/facade/simulate-capture.js.map +1 -1
  91. package/dist/facade/simulate-display-view.d.ts +10 -12
  92. package/dist/facade/simulate-display-view.js +57 -48
  93. package/dist/facade/simulate-display-view.js.map +1 -1
  94. package/dist/gpu/display-view-gpu-renderer.d.ts +43 -0
  95. package/dist/gpu/display-view-gpu-renderer.js +134 -0
  96. package/dist/gpu/display-view-gpu-renderer.js.map +1 -0
  97. package/dist/gpu/display-view-image-material-module.d.ts +3 -2
  98. package/dist/gpu/display-view-image-material-module.js +25 -3
  99. package/dist/gpu/display-view-image-material-module.js.map +1 -1
  100. package/dist/gpu/display-view-image-quality.d.ts +43 -1
  101. package/dist/gpu/display-view-image-quality.js +256 -11
  102. package/dist/gpu/display-view-image-quality.js.map +1 -1
  103. package/dist/gpu/display-view-quality-gpu.d.ts +13 -64
  104. package/dist/gpu/display-view-quality-gpu.js +55 -240
  105. package/dist/gpu/display-view-quality-gpu.js.map +1 -1
  106. package/dist/gpu/display-view-speed-gpu.d.ts +16 -16
  107. package/dist/gpu/display-view-speed-gpu.js +62 -19
  108. package/dist/gpu/display-view-speed-gpu.js.map +1 -1
  109. package/dist/gpu/image-kernel-accelerator.js +3 -0
  110. package/dist/gpu/image-kernel-accelerator.js.map +1 -1
  111. package/dist/gpu/image-kernel-execution.d.ts +2 -13
  112. package/dist/gpu/image-kernel-execution.js +2 -10
  113. package/dist/gpu/image-kernel-execution.js.map +1 -1
  114. package/dist/gpu/wgsl-display-view-coupled-stub.d.ts +13 -0
  115. package/dist/gpu/wgsl-display-view-coupled-stub.js +29 -0
  116. package/dist/gpu/wgsl-display-view-coupled-stub.js.map +1 -0
  117. package/dist/gpu/wgsl-display-view-coupled.d.ts +91 -0
  118. package/dist/gpu/wgsl-display-view-coupled.js +365 -0
  119. package/dist/gpu/wgsl-display-view-coupled.js.map +1 -0
  120. package/dist/gpu/wgsl-display-view-neighbors.d.ts +46 -0
  121. package/dist/gpu/wgsl-display-view-neighbors.js +114 -0
  122. package/dist/gpu/wgsl-display-view-neighbors.js.map +1 -0
  123. package/dist/gpu/wgsl-display-view-quality-kernel.d.ts +6 -9
  124. package/dist/gpu/wgsl-display-view-quality-kernel.js +113 -113
  125. package/dist/gpu/wgsl-display-view-quality-kernel.js.map +1 -1
  126. package/dist/gpu/wgsl-display-view-speed-kernel.d.ts +1 -41
  127. package/dist/gpu/wgsl-display-view-speed-kernel.js +73 -10
  128. package/dist/gpu/wgsl-display-view-speed-kernel.js.map +1 -1
  129. package/dist/index.d.ts +11 -3
  130. package/dist/index.js +9 -1
  131. package/dist/index.js.map +1 -1
  132. package/dist/output/camera-channel-response.d.ts +50 -0
  133. package/dist/output/camera-channel-response.js +69 -0
  134. package/dist/output/camera-channel-response.js.map +1 -0
  135. package/dist/output/native-capture-sdr.js +5 -2
  136. package/dist/output/native-capture-sdr.js.map +1 -1
  137. package/dist/output/sdr-rendering.d.ts +18 -1
  138. package/dist/output/sdr-rendering.js +39 -2
  139. package/dist/output/sdr-rendering.js.map +1 -1
  140. package/dist/sensor/native-sensor-report.d.ts +10 -0
  141. package/dist/sensor/native-sensor-report.js +16 -0
  142. package/dist/sensor/native-sensor-report.js.map +1 -0
  143. package/dist/sensor/sensor-characteristics.d.ts +81 -13
  144. package/dist/sensor/sensor-characteristics.js +10 -6
  145. package/dist/sensor/sensor-characteristics.js.map +1 -1
  146. package/docs/API_REFERENCE.md +117 -4
  147. package/docs/QUICK_START.md +37 -8
  148. package/docs/USAGE.md +105 -22
  149. package/docs/api/capture-c2pa-embed.md +177 -0
  150. package/docs/api/capture-dng-import.md +86 -10
  151. package/docs/api/capture-dng-opcodes.md +93 -0
  152. package/docs/api/capture-dng-profile-maps.md +141 -0
  153. package/docs/api/capture-dng-stage-image.md +43 -0
  154. package/docs/api/capture-jpeg-xl-tiles.md +33 -0
  155. package/docs/api/capture-lossy-jpeg.md +41 -0
  156. package/docs/api/capture-native-raw-development.md +2 -1
  157. package/docs/api/core-execution-error.md +43 -0
  158. package/docs/api/core-version.md +1 -1
  159. package/docs/api/exports.json +255 -5
  160. package/docs/api/facade-display-view-gpu.md +5 -2
  161. package/docs/api/facade-display-view.md +11 -15
  162. package/docs/api/facade-fast-methods.md +38 -9
  163. package/docs/api/facade-quality-paths.md +24 -0
  164. package/docs/api/facade-scene-radiance.md +1 -1
  165. package/docs/api/facade-simulate-capture.md +24 -7
  166. package/docs/api/facade-simulate-display-view.md +10 -12
  167. package/docs/api/gpu-image-kernel-execution.md +0 -36
  168. package/docs/api/output-camera-channel-response.md +55 -0
  169. package/docs/api/output-sdr-rendering.md +6 -1
  170. package/docs/api/sensor-sensor-characteristics.md +54 -2
  171. package/llms.txt +1 -0
  172. package/package.json +6 -5
@@ -1,6 +1,6 @@
1
1
  {
2
- "packageVersion": "2.21.0",
3
- "engineApiVersion": "2.21.0",
2
+ "packageVersion": "2.23.0",
3
+ "engineApiVersion": "2.23.0",
4
4
  "exports": [
5
5
  {
6
6
  "name": "AbsoluteUncertaintyEstimate",
@@ -102,6 +102,36 @@
102
102
  "source": "src/optics/aperture.ts",
103
103
  "kind": "type"
104
104
  },
105
+ {
106
+ "name": "applyDngOpcodes",
107
+ "source": "src/capture/dng-opcodes.ts",
108
+ "kind": "runtime"
109
+ },
110
+ {
111
+ "name": "ApplyDngOpcodesOptions",
112
+ "source": "src/capture/dng-opcodes.ts",
113
+ "kind": "type"
114
+ },
115
+ {
116
+ "name": "applyDngProfileGainTableMap",
117
+ "source": "src/capture/dng-profile-maps.ts",
118
+ "kind": "runtime"
119
+ },
120
+ {
121
+ "name": "ApplyDngProfileGainTableMapInput",
122
+ "source": "src/capture/dng-profile-maps.ts",
123
+ "kind": "type"
124
+ },
125
+ {
126
+ "name": "applyDngRgbTables",
127
+ "source": "src/capture/dng-profile-maps.ts",
128
+ "kind": "runtime"
129
+ },
130
+ {
131
+ "name": "ApplyDngRgbTablesInput",
132
+ "source": "src/capture/dng-profile-maps.ts",
133
+ "kind": "type"
134
+ },
105
135
  {
106
136
  "name": "approximationResult",
107
137
  "source": "src/core/calculation-result.ts",
@@ -252,6 +282,16 @@
252
282
  "source": "src/processing/denoise.ts",
253
283
  "kind": "type"
254
284
  },
285
+ {
286
+ "name": "bindC2paManifestStore",
287
+ "source": "src/capture/c2pa-embed.ts",
288
+ "kind": "runtime"
289
+ },
290
+ {
291
+ "name": "BindC2paManifestStoreInput",
292
+ "source": "src/capture/c2pa-embed.ts",
293
+ "kind": "type"
294
+ },
255
295
  {
256
296
  "name": "bindDisplayViewCorrectionStates",
257
297
  "source": "src/facade/display-view.ts",
@@ -347,6 +387,41 @@
347
387
  "source": "src/sensor/raw-reconstruction.ts",
348
388
  "kind": "type"
349
389
  },
390
+ {
391
+ "name": "C2PA_ALGORITHMIC_MEDIA_SOURCE_TYPE",
392
+ "source": "src/capture/c2pa-embed.ts",
393
+ "kind": "runtime"
394
+ },
395
+ {
396
+ "name": "C2PA_MANIFEST_STORE_MAXIMUM_BYTES",
397
+ "source": "src/capture/c2pa-embed.ts",
398
+ "kind": "runtime"
399
+ },
400
+ {
401
+ "name": "C2paBoundFile",
402
+ "source": "src/capture/c2pa-embed.ts",
403
+ "kind": "type"
404
+ },
405
+ {
406
+ "name": "C2paByteRange",
407
+ "source": "src/capture/c2pa-embed.ts",
408
+ "kind": "type"
409
+ },
410
+ {
411
+ "name": "C2paDataHash",
412
+ "source": "src/capture/c2pa-embed.ts",
413
+ "kind": "type"
414
+ },
415
+ {
416
+ "name": "C2paFoundManifestStore",
417
+ "source": "src/capture/c2pa-embed.ts",
418
+ "kind": "type"
419
+ },
420
+ {
421
+ "name": "C2paHardBinding",
422
+ "source": "src/capture/c2pa-embed.ts",
423
+ "kind": "type"
424
+ },
350
425
  {
351
426
  "name": "calculateActiveCaptureFieldOfView",
352
427
  "source": "src/output/capture-geometry.ts",
@@ -412,6 +487,26 @@
412
487
  "source": "src/optics/brown-conrady-distortion.ts",
413
488
  "kind": "type"
414
489
  },
490
+ {
491
+ "name": "calculateC2paDataHash",
492
+ "source": "src/capture/c2pa-embed.ts",
493
+ "kind": "runtime"
494
+ },
495
+ {
496
+ "name": "CalculateC2paDataHashInput",
497
+ "source": "src/capture/c2pa-embed.ts",
498
+ "kind": "type"
499
+ },
500
+ {
501
+ "name": "calculateCameraChannelResponse",
502
+ "source": "src/output/camera-channel-response.ts",
503
+ "kind": "runtime"
504
+ },
505
+ {
506
+ "name": "CalculateCameraChannelResponseInput",
507
+ "source": "src/output/camera-channel-response.ts",
508
+ "kind": "type"
509
+ },
415
510
  {
416
511
  "name": "calculateCameraRotationImageMapping",
417
512
  "source": "src/motion/camera-rotation.ts",
@@ -1602,6 +1697,11 @@
1602
1697
  "source": "src/motion/camera-rotation.ts",
1603
1698
  "kind": "type"
1604
1699
  },
1700
+ {
1701
+ "name": "CameraChannelResponse",
1702
+ "source": "src/output/camera-channel-response.ts",
1703
+ "kind": "type"
1704
+ },
1605
1705
  {
1606
1706
  "name": "CameraColorMatrixFit",
1607
1707
  "source": "src/color/camera-color-matrix.ts",
@@ -2587,6 +2687,11 @@
2587
2687
  "source": "src/sensor/iso-gain.ts",
2588
2688
  "kind": "type"
2589
2689
  },
2690
+ {
2691
+ "name": "createJxlOxideDngDecoder",
2692
+ "source": "src/capture/jpeg-xl-tiles.ts",
2693
+ "kind": "runtime"
2694
+ },
2590
2695
  {
2591
2696
  "name": "createLockedWhiteBalanceState",
2592
2697
  "source": "src/color/white-balance.ts",
@@ -2952,6 +3057,16 @@
2952
3057
  "source": "src/optics/detail-limit.ts",
2953
3058
  "kind": "type"
2954
3059
  },
3060
+ {
3061
+ "name": "developDngStageImage",
3062
+ "source": "src/capture/dng-stage-image.ts",
3063
+ "kind": "runtime"
3064
+ },
3065
+ {
3066
+ "name": "DevelopDngStageImageOptions",
3067
+ "source": "src/capture/dng-stage-image.ts",
3068
+ "kind": "type"
3069
+ },
2955
3070
  {
2956
3071
  "name": "DIFFRACTION_LIMITED_PSF_PROFILE_LIMITS",
2957
3072
  "source": "src/optics/diffraction-psf-profile.ts",
@@ -3057,11 +3172,66 @@
3057
3172
  "source": "src/capture/dng-import.ts",
3058
3173
  "kind": "runtime"
3059
3174
  },
3175
+ {
3176
+ "name": "DngImportAsyncInput",
3177
+ "source": "src/capture/dng-import.ts",
3178
+ "kind": "type"
3179
+ },
3060
3180
  {
3061
3181
  "name": "DngImportInput",
3062
3182
  "source": "src/capture/dng-import.ts",
3063
3183
  "kind": "type"
3064
3184
  },
3185
+ {
3186
+ "name": "DngJpegXlDecoder",
3187
+ "source": "src/capture/jpeg-xl-tiles.ts",
3188
+ "kind": "type"
3189
+ },
3190
+ {
3191
+ "name": "DngOpcode",
3192
+ "source": "src/capture/dng-opcodes.ts",
3193
+ "kind": "type"
3194
+ },
3195
+ {
3196
+ "name": "DngOpcodeArea",
3197
+ "source": "src/capture/dng-opcodes.ts",
3198
+ "kind": "type"
3199
+ },
3200
+ {
3201
+ "name": "DngOpcodeParameters",
3202
+ "source": "src/capture/dng-opcodes.ts",
3203
+ "kind": "type"
3204
+ },
3205
+ {
3206
+ "name": "DngProfileGainTableMap",
3207
+ "source": "src/capture/dng-profile-maps.ts",
3208
+ "kind": "type"
3209
+ },
3210
+ {
3211
+ "name": "DngRgbImage",
3212
+ "source": "src/capture/dng-profile-maps.ts",
3213
+ "kind": "type"
3214
+ },
3215
+ {
3216
+ "name": "DngRgbTable",
3217
+ "source": "src/capture/dng-profile-maps.ts",
3218
+ "kind": "type"
3219
+ },
3220
+ {
3221
+ "name": "DngRgbTables",
3222
+ "source": "src/capture/dng-profile-maps.ts",
3223
+ "kind": "type"
3224
+ },
3225
+ {
3226
+ "name": "DngStageImage",
3227
+ "source": "src/capture/dng-opcodes.ts",
3228
+ "kind": "type"
3229
+ },
3230
+ {
3231
+ "name": "DngStageImageResult",
3232
+ "source": "src/capture/dng-stage-image.ts",
3233
+ "kind": "type"
3234
+ },
3065
3235
  {
3066
3236
  "name": "DurandDorseyToneMappingInput",
3067
3237
  "source": "src/processing/tone-mapping.ts",
@@ -4269,17 +4439,17 @@
4269
4439
  },
4270
4440
  {
4271
4441
  "name": "ImageKernelExecutionError",
4272
- "source": "src/gpu/image-kernel-execution.ts",
4442
+ "source": "src/core/execution-error.ts",
4273
4443
  "kind": "runtime"
4274
4444
  },
4275
4445
  {
4276
4446
  "name": "ImageKernelFailureReason",
4277
- "source": "src/gpu/image-kernel-execution.ts",
4447
+ "source": "src/core/execution-error.ts",
4278
4448
  "kind": "type"
4279
4449
  },
4280
4450
  {
4281
4451
  "name": "ImageKernelFallbackReason",
4282
- "source": "src/gpu/image-kernel-execution.ts",
4452
+ "source": "src/core/execution-error.ts",
4283
4453
  "kind": "type"
4284
4454
  },
4285
4455
  {
@@ -4322,6 +4492,11 @@
4322
4492
  "source": "src/sensor/sensor-geometry.ts",
4323
4493
  "kind": "type"
4324
4494
  },
4495
+ {
4496
+ "name": "importDngRawImage",
4497
+ "source": "src/capture/dng-import.ts",
4498
+ "kind": "runtime"
4499
+ },
4325
4500
  {
4326
4501
  "name": "ImportedDngBlackLevel",
4327
4502
  "source": "src/capture/dng-import.ts",
@@ -4342,6 +4517,11 @@
4342
4517
  "source": "src/capture/dng-import.ts",
4343
4518
  "kind": "type"
4344
4519
  },
4520
+ {
4521
+ "name": "ImportedDngSemanticMask",
4522
+ "source": "src/capture/dng-import.ts",
4523
+ "kind": "type"
4524
+ },
4345
4525
  {
4346
4526
  "name": "IntegratedDiscreteSpectralLineMeasure",
4347
4527
  "source": "src/core/spectral-composition.ts",
@@ -4517,6 +4697,11 @@
4517
4697
  "source": "src/capture/export-jpeg.ts",
4518
4698
  "kind": "type"
4519
4699
  },
4700
+ {
4701
+ "name": "JxlOxideModule",
4702
+ "source": "src/capture/jpeg-xl-tiles.ts",
4703
+ "kind": "type"
4704
+ },
4520
4705
  {
4521
4706
  "name": "LateralCaLensCorrection",
4522
4707
  "source": "src/output/lens-corrections.ts",
@@ -4787,6 +4972,16 @@
4787
4972
  "source": "src/capture/lossless-jpeg.ts",
4788
4973
  "kind": "type"
4789
4974
  },
4975
+ {
4976
+ "name": "LossyJpegImage",
4977
+ "source": "src/capture/lossy-jpeg.ts",
4978
+ "kind": "type"
4979
+ },
4980
+ {
4981
+ "name": "LossyJpegLimits",
4982
+ "source": "src/capture/lossy-jpeg.ts",
4983
+ "kind": "type"
4984
+ },
4790
4985
  {
4791
4986
  "name": "MANUAL_FLASH_PROFILE_SCHEMA_VERSION",
4792
4987
  "source": "src/exposure/flash.ts",
@@ -5387,6 +5582,16 @@
5387
5582
  "source": "src/optics/stray-light.ts",
5388
5583
  "kind": "type"
5389
5584
  },
5585
+ {
5586
+ "name": "parseC2paManifestStore",
5587
+ "source": "src/capture/c2pa-embed.ts",
5588
+ "kind": "runtime"
5589
+ },
5590
+ {
5591
+ "name": "ParseC2paManifestStoreInput",
5592
+ "source": "src/capture/c2pa-embed.ts",
5593
+ "kind": "type"
5594
+ },
5390
5595
  {
5391
5596
  "name": "parseCameraConfiguration",
5392
5597
  "source": "src/schema/validation.ts",
@@ -5432,11 +5637,26 @@
5432
5637
  "source": "src/output/geometric-transforms.ts",
5433
5638
  "kind": "runtime"
5434
5639
  },
5640
+ {
5641
+ "name": "parseDngOpcodeList",
5642
+ "source": "src/capture/dng-opcodes.ts",
5643
+ "kind": "runtime"
5644
+ },
5645
+ {
5646
+ "name": "parseDngProfileGainTableMap",
5647
+ "source": "src/capture/dng-profile-maps.ts",
5648
+ "kind": "runtime"
5649
+ },
5435
5650
  {
5436
5651
  "name": "parseDngRawImage",
5437
5652
  "source": "src/capture/dng-import.ts",
5438
5653
  "kind": "runtime"
5439
5654
  },
5655
+ {
5656
+ "name": "parseDngRgbTables",
5657
+ "source": "src/capture/dng-profile-maps.ts",
5658
+ "kind": "runtime"
5659
+ },
5440
5660
  {
5441
5661
  "name": "parseExportSensorColorProfile",
5442
5662
  "source": "src/capture/photographic-export.ts",
@@ -5557,6 +5777,11 @@
5557
5777
  "source": "src/capture/lossless-jpeg.ts",
5558
5778
  "kind": "runtime"
5559
5779
  },
5780
+ {
5781
+ "name": "parseLossyJpeg",
5782
+ "source": "src/capture/lossy-jpeg.ts",
5783
+ "kind": "runtime"
5784
+ },
5560
5785
  {
5561
5786
  "name": "parseManualFlashProfile",
5562
5787
  "source": "src/exposure/flash.ts",
@@ -6112,6 +6337,11 @@
6112
6337
  "source": "src/facade/image-plane-enable.ts",
6113
6338
  "kind": "runtime"
6114
6339
  },
6340
+ {
6341
+ "name": "prepareQualityPaths",
6342
+ "source": "src/facade/quality-paths.ts",
6343
+ "kind": "runtime"
6344
+ },
6115
6345
  {
6116
6346
  "name": "prepareRgbGamutMapping",
6117
6347
  "source": "src/color/gamut-mapping.ts",
@@ -8737,6 +8967,16 @@
8737
8967
  "source": "src/facade/simulate-capture.ts",
8738
8968
  "kind": "runtime"
8739
8969
  },
8970
+ {
8971
+ "name": "setC2paManifestStore",
8972
+ "source": "src/capture/c2pa-embed.ts",
8973
+ "kind": "runtime"
8974
+ },
8975
+ {
8976
+ "name": "SetC2paManifestStoreInput",
8977
+ "source": "src/capture/c2pa-embed.ts",
8978
+ "kind": "type"
8979
+ },
8740
8980
  {
8741
8981
  "name": "setExposureCompensationOnMeterTarget",
8742
8982
  "source": "src/exposure/metering-target.ts",
@@ -8952,11 +9192,21 @@
8952
9192
  "source": "src/facade/simulate-capture.ts",
8953
9193
  "kind": "type"
8954
9194
  },
9195
+ {
9196
+ "name": "SimulateCaptureMidGreyFigure",
9197
+ "source": "src/sensor/sensor-characteristics.ts",
9198
+ "kind": "type"
9199
+ },
8955
9200
  {
8956
9201
  "name": "SimulateCaptureMotion",
8957
9202
  "source": "src/facade/simulate-capture.ts",
8958
9203
  "kind": "type"
8959
9204
  },
9205
+ {
9206
+ "name": "SimulateCaptureNativeSensorReport",
9207
+ "source": "src/sensor/sensor-characteristics.ts",
9208
+ "kind": "type"
9209
+ },
8960
9210
  {
8961
9211
  "name": "SimulateCaptureNoiseComponents",
8962
9212
  "source": "src/sensor/sensor-characteristics.ts",
@@ -58,10 +58,13 @@ export interface DisplayViewGpuConformance {
58
58
  2.11 (#481): why a display view that asked for the GPU (`gpu: "auto"`) ran the CPU reference. The accelerator's acquisition
59
59
  reasons, plus: `unsupported-on-backend` (no GPU display-view renderer exists in this version, or it does not support the
60
60
  request), `conformance-failed` (the device failed the run-time self-check before the view's first GPU render), `device-lost`
61
- (the device was lost; the rest of the view runs on the CPU) and `disposed` (the prepared view was disposed).
61
+ (the device was lost; the rest of the view runs on the CPU) and `disposed` (the prepared view was disposed). 2.22.0 (#594):
62
+ `quality-code-unavailable` (the on-demand GPU full-quality code could not be loaded; that render runs the CPU reference, and
63
+ the next render that needs the code tries to load it again).
62
64
 
63
65
  ```ts
64
- export type DisplayViewGpuFallbackReason = ImageKernelFallbackReason | "unsupported-on-backend" | "conformance-failed" | "device-lost" | "disposed";
66
+ export type DisplayViewGpuFallbackReason = ImageKernelFallbackReason | "unsupported-on-backend" | "conformance-failed" | "device-lost" | "disposed" |
67
+ "quality-code-unavailable";
65
68
  ```
66
69
 
67
70
  ## DisplayViewGpuMode
@@ -4,14 +4,10 @@ The package and root API versions are recorded once in [Navigation](../API_REFER
4
4
 
5
5
  ## bindDisplayViewCorrectionStates
6
6
 
7
- 2.10 (#447): adds states another realm computed (an export, or `computeCorrectionStates` results) to this realm's cache and
8
- returns the number of states added. For each entry, the grid keys its setup does not hold yet are appended; known ones are
9
- left as they are (a state's values follow from its key, so they are equal). Every entry is checked before the cache is
10
- touched: `key` a non-empty string, `gridKeys` an Int32Array of grid keys, `values` a Float64Array of 3 × `gridKeys.length`
11
- finite numbers; otherwise it fails with an InvalidConfigurationError and the cache is unchanged. The cache's bounds apply as
12
- in a render: an unknown key creates a setup and can evict the least recently used of the four kept, and a setup that
13
- reaches 65 536 states is cleared before the next one is added. Import only keys a prepared view reported
14
- (`correctionKey()`), so states a render here will read.
7
+ 2.10 (#447), deprecated in 2.22.0: added states another realm computed to this realm's cache. The display view keeps no
8
+ correction states since 2.22.0, so this checks `entries` as before (an array of `{ key, gridKeys, values }` with a non-empty
9
+ string key, an Int32Array of grid keys and a Float64Array of 3 finite values per key; otherwise an
10
+ InvalidConfigurationError) and returns 0: nothing is stored and no render reads them. Kept until 3.0.0.
15
11
 
16
12
  ```ts
17
13
  export function bindDisplayViewCorrectionStates(entries: readonly DisplayViewCorrectionStateSet[]): number;
@@ -21,7 +17,7 @@ This call is synchronous; any supplied provider must follow its explicit synchro
21
17
 
22
18
  ## DisplayViewCorrectionStateKeys
23
19
 
24
- 2.10 (#447): the grid keys of the states a region needs (`PreparedDisplayView.collectCorrectionStates`), ascending.
20
+ 2.10 (#447), deprecated in 2.22.0: the grid keys of the states a region needs (`PreparedDisplayView.collectCorrectionStates`).
25
21
 
26
22
  ```ts
27
23
  export interface DisplayViewCorrectionStateKeys { key: string; gridKeys: Int32Array }
@@ -29,9 +25,9 @@ export interface DisplayViewCorrectionStateKeys { key: string; gridKeys: Int32Ar
29
25
 
30
26
  ## DisplayViewCorrectionStateSet
31
27
 
32
- 2.10 (#447): the AHD low-signal correction states of one setup, as a realm sends them to another. `key` is the setup's
33
- correction key (`PreparedDisplayView.correctionKey()`), `gridKeys[i]` a state's grid key and `values[3·i …]` its three
34
- values (28 bytes per state). Both arrays are transferable.
28
+ 2.10 (#447), deprecated in 2.22.0: the AHD low-signal correction states of one setup, as a realm sent them to another. The
29
+ display view keeps no correction states since 2.22.0, so {@link serializeDisplayViewCorrectionStates} returns none.
30
+ Kept until 3.0.0.
35
31
 
36
32
  ```ts
37
33
  export interface DisplayViewCorrectionStateSet { key: string; gridKeys: Int32Array; values: Float64Array }
@@ -39,9 +35,9 @@ export interface DisplayViewCorrectionStateSet { key: string; gridKeys: Int32Arr
39
35
 
40
36
  ## serializeDisplayViewCorrectionStates
41
37
 
42
- 2.10 (#447): the AHD low-signal correction states this JavaScript realm holds (a Web Worker, a page), one entry per cached
43
- setup, least recently used first, each state's grid key and three values copied out. Another realm adds them with
44
- {@link bindDisplayViewCorrectionStates}; a render there then reads them instead of computing them, with the same bytes.
38
+ 2.10 (#447), deprecated in 2.22.0: returned the AHD low-signal correction states this realm held. The display view keeps no
39
+ correction states since 2.22.0 (the correction was removed; docs/DISPLAY_VIEW.md, "AHD at low signal"), so this returns an
40
+ empty array. Kept until 3.0.0.
45
41
 
46
42
  ```ts
47
43
  export function serializeDisplayViewCorrectionStates(): DisplayViewCorrectionStateSet[];
@@ -9,9 +9,13 @@ The package and root API versions are recorded once in [Navigation](../API_REFER
9
9
  ```ts
10
10
  SIMULATE_CAPTURE_FAST_METHODS: readonly SimulateCaptureFastMethod[] = Object.freeze([
11
11
  { id: "lens.catalogue/field-grid", override: "lens.catalogue", methods: "fast-and-exact", runs: ["simulateCapture"],
12
- fast: "#568: the PSF blended over a field grid and tabulated expected electrons, verified per CFA phase against the exact chain",
12
+ fast: "#568: the PSF blended over a field grid, with each site's expected electrons integrated from its taps' material spectra at use, verified per CFA phase against the exact chain",
13
13
  exact: "the environment PSF quadrature with the PSF resolved at each query point", followsFormatDefault: true,
14
14
  resolver: { file: CAPTURE, call: "resolveFast(catalogueFast, fastTop)" }, report: { applied: "lens.catalogue", assumption: "fast.lens.catalogue" } },
15
+ { id: "lens.catalogue/field-grid-cells", override: "fast", methods: "fast-and-exact", runs: ["simulateCapture"],
16
+ fast: "#603: when the field-grid method runs on a fast request, at least 4 grid cells per field interval (2.20.0's grid), except for the measured lenses of CATALOGUE_FAST_GRID_FULL_ON_SCREEN, whose fallbacks made 4 cells slower",
17
+ exact: "at least 10 cells per field interval when the field-grid method runs on an exact request (lens.catalogue fast: true with an export or fast: false)", followsFormatDefault: true,
18
+ resolver: { file: CAPTURE, call: "catalogueFastGridSubdivisions(catalogue!.lensId, fastTop)" }, report: { assumption: "fast.lens.catalogue" } },
15
19
  { id: "lens.catalogue/cats-eye", override: "lens.catalogue", methods: "fast-and-exact", runs: ["simulateCapture", "simulateDisplayView", "prepareDisplayView"],
16
20
  fast: "#567: with lens.defocus, the lens's bokeh without its cat's eye (the axis kernel everywhere)",
17
21
  exact: "the cat's eye shaped at each field point (fast wides and normals)", followsFormatDefault: true,
@@ -28,10 +32,6 @@ SIMULATE_CAPTURE_FAST_METHODS: readonly SimulateCaptureFastMethod[] = Object.fre
28
32
  fast: "#588: under rolling-shutter rotation, each catalogue PSF tap reads the scene at its own source point",
29
33
  exact: "each tap reads the scene at its site-lattice point (ties on chart boundaries resolve as on the lattice)", followsFormatDefault: true,
30
34
  resolver: { file: CAPTURE, call: "resolveFast(catalogueFast, fastTop)" }, report: { applied: "lens.catalogue", assumption: "fast.lens.catalogue" } },
31
- { id: "output.demosaic.ahd/view-low-signal-correction", override: "output.demosaic", methods: "fast-and-exact", runs: ["simulateDisplayView", "prepareDisplayView"],
32
- fast: "(H3) 2048 draws per correction state, applied where a pixel's linear noise exceeds 0.01",
33
- exact: "8192 draws per state, at the same 0.01 threshold", followsFormatDefault: true,
34
- resolver: { file: CAPTURE, call: "resolveFast(demosaicFast, fastTop)" }, report: { applied: "output.demosaic.ahd", assumption: "view.demosaic" } },
35
35
  { id: "view.uniform-pixel-sampling", override: "fast", methods: "fast-and-exact", runs: ["simulateDisplayView", "prepareDisplayView"],
36
36
  fast: "(H2) a quarter of the samples per axis in display pixels whose pilot finds no detail",
37
37
  exact: "the full samples per axis in every display pixel", followsFormatDefault: true,
@@ -41,6 +41,16 @@ SIMULATE_CAPTURE_FAST_METHODS: readonly SimulateCaptureFastMethod[] = Object.fre
41
41
  exact: "gpu \"off\": the CPU reference; an explicit gpu wins", followsFormatDefault: true,
42
42
  resolver: { file: VIEW, call: "parsePrepareDisplayViewOptions(prepareOptions, (options as { fast?: unknown } | null | undefined)?.fast !== false)" },
43
43
  report: { field: "diagnostics.fast.execution" } },
44
+ { id: "illumination/image-plane-gpu", override: "fast", methods: "fast-and-exact", runs: ["prepareDisplayView"],
45
+ fast: "#597: gpu \"auto\": an image-plane print under mixed lighting on WebGPU (float32, a bounded approximation): the print's Quality passes light each lattice " +
46
+ "point per spectral node from the light's spectra and parts (Speed requests too, without site kernels); flagged points resolved on the host",
47
+ exact: "gpu \"off\": the CPU reference integrates each site from the lit radiance per spectral node in float64; an explicit gpu wins", followsFormatDefault: true,
48
+ resolver: { file: VIEW, call: "parsePrepareDisplayViewOptions(prepareOptions, (options as { fast?: unknown } | null | undefined)?.fast !== false)" },
49
+ report: { field: "diagnostics.fast.execution" } },
50
+ { id: "sensor.spectralStepNanometers", override: "fast", methods: "fast-and-exact", runs: ["simulateCapture", "simulateDisplayView", "prepareDisplayView"],
51
+ fast: "#590: the default spectral step is 20 nm under any light; under a spiky one (R(20) > 0.01) sensor.spectralSpikiness notes the possible cast",
52
+ exact: "5 nm under a spiky light, else 20 nm (an explicit sensor.spectralStepNanometers always wins)", followsFormatDefault: true,
53
+ resolver: { file: CAPTURE, call: "fastTop || !spiky" }, report: { applied: "sensor.spectralStepNanometers", assumption: "sensor.spectralSpikiness" } },
44
54
  { id: "sensor.midGrey", override: "fast", methods: "fast-and-exact", runs: ["simulateCapture", "simulateDisplayView", "prepareDisplayView"],
45
55
  fast: "#535: the mid-gray noise figure is not computed (about 0.3 ms)", exact: "result.sensor.midGrey is computed", followsFormatDefault: true,
46
56
  resolver: { file: CAPTURE, call: "fastTop ? undefined : 0" }, report: { field: "sensor.midGrey" } },
@@ -48,6 +58,25 @@ SIMULATE_CAPTURE_FAST_METHODS: readonly SimulateCaptureFastMethod[] = Object.fre
48
58
  fast: "#551: with the default count and a still camera, one temporal midpoint per site of the subject's streak plus one, when that is fewer than 8",
49
59
  exact: "the default 8 temporal midpoints (an explicit sensor.temporalSampleCount always wins)", followsFormatDefault: true,
50
60
  resolver: { file: CAPTURE, call: "resolveFast(subjectFast, fastTop)" }, report: { applied: "motion.subject", assumption: "fast.motion.subject" } },
61
+ { id: "dngImport.warpRectilinear", override: "fast", methods: "fast-and-exact", runs: ["developDngStageImage"],
62
+ fast: "#600: an imported DNG's WarpRectilinear opcode resampled bilinearly", exact: "cubic convolution (Keys, a = −0.75, the DNG SDK's kernel); default fast unless format names an export", followsFormatDefault: true,
63
+ resolver: { file: "src/capture/dng-stage-image.ts", call: "resolveFast(options.fast, fastFormatDefault(format, \"capture\"))" }, report: { field: "fast" } },
64
+ { id: "output.toneCurve/view-luminance-moments", override: "fast", methods: "fast-and-exact", runs: ["simulateDisplayView", "prepareDisplayView"],
65
+ fast: "#593: a luminance tone curve's moments by an 8-point Gauss–Hermite rule in luminance where its range stays clear of L = 0 (else the full rule)",
66
+ exact: "a composite 4 × 16-point Gauss–Legendre rule over the luminance's ±8.5σ, split at L = 0", followsFormatDefault: true,
67
+ resolver: { file: CAPTURE, call: "rendering: fastTop" }, report: { assumption: "view.rendering" } },
68
+ { id: "output.highlightMode.reconstruct/view-moments", override: "fast", methods: "fast-and-exact", runs: ["simulateDisplayView", "prepareDisplayView"],
69
+ fast: "#593, #601: where the reconstruct blend or the desaturation is within reach, the development chain integrated with 6 Gauss–Hermite points per axis (216 nodes)",
70
+ exact: "16 points per axis (4,096 nodes)", followsFormatDefault: true,
71
+ resolver: { file: CAPTURE, call: "rendering: fastTop" }, report: { assumption: "view.rendering" } },
72
+ { id: "prepareDisplayView.gpu/view-coupled-moments", override: "fast", methods: "fast-and-exact", runs: ["prepareDisplayView"],
73
+ fast: "#593, #601: the WebGPU Speed and Quality kernels' coupled steps with the fast rules (8-point Gauss–Hermite in luminance; 6 points per axis for the chain), float32 within the a-priori bound",
74
+ exact: "the same kernels with the full rules (4 × 16 Gauss–Legendre; 16 points per axis), fast: false with an explicit gpu", followsFormatDefault: true,
75
+ resolver: { file: "src/gpu/wgsl-display-view-coupled.ts", call: "out[C.fast] = r.fast ? 1 : 0" }, report: { assumption: "view.rendering" } },
76
+ { id: "output.highlightMode.reconstruct-neighbors/region-ratios", override: "fast", methods: "fast-and-exact", runs: ["simulateCapture", "simulateDisplayView", "prepareDisplayView"],
77
+ fast: "#602: each clipped region takes the mean color ratios of the unclipped pixels within 2 pixels of it; #605: on the WebGPU display view too (the host's ratios, the rebuild in float32 within the a-priori bound)",
78
+ exact: "the ratios' harmonic (Laplace) interpolation inward from the region's unclipped neighbors (successive over-relaxation), on the CPU and the WebGPU display view alike", followsFormatDefault: true,
79
+ resolver: { file: CAPTURE, call: "const neighborFast = fastTop" }, report: { assumption: "output.highlightMode.reconstructNeighbors" } },
51
80
  { id: "lens.diffraction", override: "lens.diffraction", methods: "exact-only", runs: ["simulateCapture", "simulateDisplayView", "prepareDisplayView"],
52
81
  fast: "", exact: "the diffraction kernels (a fast method only under rolling-shutter rotation, above)", followsFormatDefault: true,
53
82
  resolver: { file: CAPTURE, call: "resolveFast(diffractionFast, fastTop)" }, report: { applied: "lens.diffraction" } },
@@ -57,9 +86,9 @@ SIMULATE_CAPTURE_FAST_METHODS: readonly SimulateCaptureFastMethod[] = Object.fre
57
86
  { id: "sensor.pixelAperture.box", override: "sensor.pixelAperture", methods: "exact-only", runs: ["simulateCapture", "simulateDisplayView", "prepareDisplayView"],
58
87
  fast: "", exact: "the N × N midpoint rule", followsFormatDefault: true,
59
88
  resolver: { file: CAPTURE, call: "fastInUse" }, report: { applied: "sensor.pixelAperture.box" } },
60
- { id: "output.demosaic.ahd", override: "output.demosaic", methods: "exact-only", runs: ["simulateCapture"],
61
- fast: "", exact: "the AHD demosaic of the capture (a fast method only in the display view's correction, above)", followsFormatDefault: true,
62
- resolver: { file: CAPTURE, call: "resolveFast(demosaicFast, fastTop)" }, report: { applied: "output.demosaic.ahd" } }
89
+ { id: "output.demosaic.ahd", override: "output.demosaic", methods: "exact-only", runs: ["simulateCapture", "simulateDisplayView", "prepareDisplayView"],
90
+ fast: "", exact: "the AHD demosaic of the capture; in the display view, AHD's two linear candidates and its choice on the noise-free mosaic (2.22.0: no low-signal correction, so no fast method)", followsFormatDefault: true,
91
+ resolver: { file: CAPTURE, call: "[\"output.demosaic.ahd\", ahd, demosaicFast]" }, report: { applied: "output.demosaic.ahd" } }
63
92
  ] as const satisfies readonly SimulateCaptureFastMethod[])
64
93
  ```
65
94
 
@@ -79,7 +108,7 @@ export interface SimulateCaptureFastMethod {
79
108
  /** "fast-and-exact": both methods exist; "exact-only": the record takes `fast`, but there is no fast method yet (reports false). */
80
109
  methods: "fast-and-exact" | "exact-only";
81
110
  /** Where it applies. */
82
- runs: readonly ("simulateCapture" | "simulateDisplayView" | "prepareDisplayView")[];
111
+ runs: readonly ("simulateCapture" | "simulateDisplayView" | "prepareDisplayView" | "developDngStageImage")[];
83
112
  /** The fast method and the exact one, in words (empty for exact-only). */
84
113
  fast: string;
85
114
  exact: string;
@@ -0,0 +1,24 @@
1
+ # facade/quality-paths.ts public contracts
2
+
3
+ The package and root API versions are recorded once in [Navigation](../API_REFERENCE.md) · [Developer guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
4
+
5
+ ## prepareQualityPaths
6
+
7
+ Loads the engine's on-demand full-quality code now instead of at the first request that needs it (#594): the CPU Quality kit
8
+ (diffraction, the capture's AHD demosaic, `lens.defocus` beyond the geometric disc, the image-space provider of lens projection,
9
+ distortion and vignetting, the display view's coupled tone, reconstruct and desaturation steps, the neighbor highlight
10
+ reconstruction), the opt-in kit (`sensor.profile`, `illumination`, `motion.subject`) and the display view's GPU full-quality code
11
+ (the Quality passes behind `prepareDisplayView(…, { gpu: "auto" | "require" })`), together with the GPU session it builds on.
12
+
13
+ Optional: without it, the first request that needs the code loads it. Safe to call at any time and from any number of places:
14
+ concurrent calls share one load, and a call after it loaded resolves at once and loads nothing. It changes no result. If the
15
+ load fails (for example a chunk download error) the promise rejects with `ImageKernelExecutionError` reason
16
+ `quality-code-unavailable`; nothing is remembered, so a later call or request tries again, and a render in the meantime runs
17
+ the CPU reference, labelled with that reason. A bundler that splits dynamic imports keeps this code out of the first load
18
+ whether or not this function is imported.
19
+
20
+ ```ts
21
+ export function prepareQualityPaths(): Promise<void>;
22
+ ```
23
+
24
+ This call is asynchronous; byte hashing uses the caller runtime's Web Crypto.
@@ -187,7 +187,7 @@ export interface PlanarSceneRadianceProvider {
187
187
  * radiance per node and, for the direct path, Σ_n A_c(λ_n)·L(λ_n) integrated from each pixel's reconstructed spectrum
188
188
  * (`ResolvedImagePlaneScene.pixelSignals`, the surround's reflectance times the neutral signal outside the print).
189
189
  */
190
- imageSignalScene?(wavelengths: readonly number[], perNode: readonly Float64Array[]): ImagePlaneSignalScene;
190
+ imageSignalScene?(wavelengths: readonly number[], perNode: readonly Float64Array[]): ImagePlaneSignalScene | ImagePlaneLitScene;
191
191
  }
192
192
  ```
193
193