Repository navigation
Conversation
Preserve native geometry and reload full sources for final output. Use HDR source defaults for first-import presets and collection scopes, and reuse the existing CPU worker pool without changing pixel results.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changes
Mac/iOS can import original iPhone gain-map HEIC/JPEG and Android Ultra HDR JPEG, edit immutable HDR/SDR float32 renditions, monitor HDR presentation and save HDR or explicit SDR output. Basic exposure, relative white balance, tone, saturation and geometry are supported. Unsupported looks and advanced operators remain disabled while their stored values are preserved.
development.The review fixes in
630d55e2also:sony2fuji_hdr_geometry_sizequery; reject preview proxies as FINAL input, and reload the complete original for JPEG/DNG export. SDR-only presentation skips the unused HDR histogram scan.sourceDefaultSettingsfor iOS preset and collection capture when no edit record exists. Initialize iOS collection synchronization withhdrCommonand exposehdrSupported, including relative temperature/tint.Validation
Current source:
630d55e2ee5bd921f00784a086095395dfc6c671. Base refreshed and unchanged atd7d5504e905fc325b08589dbf2e40ed96c6d5891. Local hardware: Apple M3 Max, 14 cores, 36 GiB; macOS 27.0.1 and Xcode iOS 27 simulator. Local results are separate from GitHub CI.ctest --test-dir lutools/build-macos --output-on-failurebash scripts/ci/apple-models.sh macosand... ioshdr-history.shandadjustment-history-model.sh <app> <owned simulator>hdr-sdr-preview.shwith a read-only public 12 MP Ultra HDR originalbash lutools/platform/ios/build-framework.shand framework verificationRAWLAB_RUM=0 RAWLAB_DUALDN=0 JOBS=4 RAWLAB_APP_PATH=<task output> bash RawLabMac/build.shxcodebuild ... build-for-testingIOS_SIMULATOR_UDID=<dedicated simulator> bash RawLab/tests/hdr-ui.sh <products> <output>python3 -m unittest discover -s scripts/ci -p 'test_*.py' -vRAWLAB_MCP_CLI=<current CLI> uv run --project tools/mcp --frozen python -m unittest discover -s tools/mcp/tests -vgit diff --checkand public fixture SHA-256 verificationThe preview regression reproduced the original full 4080×3072 iOS buffer and 50,135,040-byte Mac raster retention before the fix. The 48 MP admission/OOM scenario remains a static call-chain finding, not a reproduced device OOM.
Prior-source evidence at
51893dbd: Mac native UI verified public 12 MP import, +1 EV, undo/redo, display monitoring, histogram, full-size HDR JPEG (re-probed as protocol 4, 4080×3072) and batch float inspection. Runtime headroom was 1. The current Mac native preview regression and build passed; repeating the native UI on the new head is blocked by the locked desktop. Prior Mac Master Recipe/HDR history/batch/Agent and LUT adapter checks remain historical evidence, not newly executed checks.The unregistered legacy
test_interface_copy.pyhas known baseline failures (previous comparison: current 4 failures / 2 errors, baseline 5 failures / 2 errors). Its HDR format/window checks pass. Unrelated glossary/punctuation checks were left unchanged.GitHub CI for the current head: Hosted CI #301.
Select affected platformsandContracts and CI policypassed. Platform jobs and the aggregate result job were skipped by the Draft policy. Platform model/build jobs and UI execution are not implied by Draft contract checks.Performance and hardware acceleration
Synthetic pure HDR edit/resize core, three trials per case, median wall time. The pre-change binary was retained before editing the core; old 14-thread capacity still measured CPU/wall about 1. The new 14-worker runs measured CPU/wall 9.60–10.42, confirming real multi-core execution. Both renditions' full pixel hashes match the serial baseline in every trial.
These are core measurements, excluding codec, file I/O, Swift packing, UI and physical iPhone execution. Peak resident memory is essentially unchanged: about 558.6 MiB at 12 MP and 2206.6 MiB (2.16 GiB) at 48 MP. The preview fix bounds its allocation; full-resolution dual-rendition editing still needs substantial memory and may be rejected by admission control.
Hardware acceleration is not complete: Metal handles FP16 presentation; HDR edit/resize uses CPU workers. Apple float decoding explicitly selects the software Core Image renderer; JPEG SIMD and libultrahdr ARM intrinsics are disabled in this pinned configuration. Statistics, pixel packing and geometry also contain CPU work. The display retains its existing 30 fps configuration; idle GPU/power profiling and a safe demand-driven display implementation remain follow-up work. Do not enable codec intrinsics or add a GPU backend without the independent P3/negative/over-range/CPU-reference acceptance matrix.
Remaining issues and acceptance gates
This remains Draft and does not close HDR-05. The user approved proceeding with local verification while retaining unavailable device gates.
Design/contracts:
docs/design/hdr-photos/technical-design.md,docs/integration/hdr-photos/implementation-plan.md,lutools/docs/hdr-color-contract.md,lutools/docs/edit-json.md. Automatic/manual verification followsdocs/process/ci.md.