feat: import Lightroom XMP sidecars - #1465
Conversation
|
Calibration and validation update: Further testing led to an image-aware conversion strategy rather than applying one mapping to every source. RAW imports retain the conservative XMP mappings, while rendered JPEGs now use measured nonlinear mappings for Lightroom PV2012 and legacy PV5 controls. The calibrated JPEG mappings cover exposure, brightness, contrast, blacks, clarity, saturation, vibrance, hue, and relevant control interactions.
The implementation was manually validated with representative JPEG, ARW, CR2, and DNG images covering landscapes, people, high dynamic range, indoor color, and low light. The automated Rust suite now contains 41 passing tests, and recursive import was also tested on approximately 1,733 matching sidecars. |
Description
Improve Lightroom and Camera Raw XMP migration into RapidRAW's non-destructive
.rrdataworkflow, including image-aware conversion for rendered JPEGs and corrected crop/white-balance handling for RAW files.This supersedes #1280 and is rebuilt on current
main. Thank you to @StephenMasseur for the original implementation and for agreeing to continue the work in a new PR.The original image and XMP sidecar remain unchanged.
Type of Change
Changes Made
.xmpsidecar next to the image, with a file-picker fallback.AlreadyAppliedmetadata so baked rendered-image adjustments are not imported twice.Screenshots/Videos
Folder context-menu import action
Import-in-progress indicator
Completed import and unchanged/failed-file report
Testing
Test Configuration:
Validation:
cargo test --manifest-path src-tauri/Cargo.toml --lib: 41 passedcargo check --manifest-path src-tauri/Cargo.toml: passedcargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warnings: passedcargo fmt --manifest-path src-tauri/Cargo.toml -- --check: passednpm run build: passedgit diff --check: passedmain; no new frontend files are changed by the calibration update.Checklist
Additional Notes
Lightroom and RapidRAW use different camera profiles, control scales, tone curves, processing order, and tone-mapping algorithms. The calibrated conversion improves the initial imported appearance for measured rendered-JPEG cases without claiming pixel-identical rendering.
AI Disclaimer:
Please state the involvement of AI in this PR: