diff --git a/apps/darkroom-android/src/lib.rs b/apps/darkroom-android/src/lib.rs index 5dcd620..2835ca4 100644 --- a/apps/darkroom-android/src/lib.rs +++ b/apps/darkroom-android/src/lib.rs @@ -338,7 +338,7 @@ fn unpack_bundled_models(app: &slint::android::AndroidApp) { // sibling when the probe chose that rung and ignores it otherwise. The // segmenter's and XFeat's forms are compiled into the binary instead, // beside their f32 graphs. - const BUNDLED: [(&std::ffi::CStr, &str); 23] = [ + const BUNDLED: [(&std::ffi::CStr, &str); 21] = [ (c"models/scrfd_500m_640.onnx", "scrfd_500m_640.onnx"), ( c"models/scrfd_500m_640.a16w8.onnx", @@ -379,15 +379,10 @@ fn unpack_bundled_models(app: &slint::android::AndroidApp) { c"models/mosaic-fast-1408.a16w16.onnx", "mosaic-fast-1408.a16w16.onnx", ), - (c"models/mosaic-medium-1408.onnx", "mosaic-medium-1408.onnx"), + (c"models/mosaic-hq-1408.onnx", "mosaic-hq-1408.onnx"), ( - c"models/mosaic-medium-1408.a16w16.onnx", - "mosaic-medium-1408.a16w16.onnx", - ), - (c"models/mosaic-best-1408.onnx", "mosaic-best-1408.onnx"), - ( - c"models/mosaic-best-1408.a16w16.onnx", - "mosaic-best-1408.a16w16.onnx", + c"models/mosaic-hq-1408.a16w16.onnx", + "mosaic-hq-1408.a16w16.onnx", ), ]; diff --git a/core/dr-denoise/examples/denoise_raw.rs b/core/dr-denoise/examples/denoise_raw.rs index 3e62164..6718dca 100644 --- a/core/dr-denoise/examples/denoise_raw.rs +++ b/core/dr-denoise/examples/denoise_raw.rs @@ -2,7 +2,7 @@ //! //! ```sh //! DARKROOM_ORT_DIR=~/.local/share/darkroom/runtime \ -//! cargo run --release -p dr-denoise --features native --example denoise_raw -- IMG.CR2 out [fast|medium|best] +//! cargo run --release -p dr-denoise --features native --example denoise_raw -- IMG.CR2 out [fast|best] //! ``` //! //! Decode, the app's hot-pixel pass, the frame's noise from its best source, @@ -11,7 +11,7 @@ //! camera RGB — for comparison with the training repo's own path //! (`tools/compare_rust.py` in darkroom-denoise). `DARKROOM_ORT_DIR` points //! at an ONNX Runtime build; the engine's cache goes to `DR_ENGINE_CACHE` or -//! a temporary directory. The whole-frame network (`mosaic-best.onnx` beside +//! a temporary directory. The whole-frame network (`mosaic-hq.onnx` beside //! the fixed file) runs where the rung takes any size; `DR_PLAN=tiles` keeps //! the 1408² tiles anyway, to compare the two. @@ -25,15 +25,14 @@ fn main() { env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("warn")).init(); let mut args = std::env::args().skip(1); let (Some(input), Some(out)) = (args.next(), args.next()) else { - eprintln!("usage: denoise_raw RAW OUT_PREFIX [fast|medium|best]"); + eprintln!("usage: denoise_raw RAW OUT_PREFIX [fast|best]"); std::process::exit(2); }; let shipped = match args.next().as_deref() { None | Some("best") => dr_denoise::BEST, - Some("medium") => dr_denoise::MEDIUM, Some("fast") => dr_denoise::FAST, Some(other) => { - eprintln!("no network called {other}: fast, medium or best"); + eprintln!("no network called {other}: fast or best"); std::process::exit(2); } }; diff --git a/core/dr-denoise/src/lib.rs b/core/dr-denoise/src/lib.rs index a977826..1b11921 100644 --- a/core/dr-denoise/src/lib.rs +++ b/core/dr-denoise/src/lib.rs @@ -44,19 +44,15 @@ pub const FAST: Shipped = Shipped { whole: "mosaic-fast.onnx", halo: HALO, }; -/// A student of the mixture with the first release's shape: 3.2 M -/// parameters, 48 GMAC a megapixel. -pub const MEDIUM: Shipped = Shipped { - file: "mosaic-medium-1408.onnx", - whole: "mosaic-medium.onnx", - halo: HALO, -}; -/// The mixture: a flat expert, an edge expert and the gate that blends them. -/// It reaches further than either, so it keeps a smaller centre of each tile. +/// One network of the first release's shape, 3.2 M parameters and 48 GMAC a +/// megapixel, taught by the mixture of experts that was Best until 0.24: +/// its edges at a third of its work (denoise.md §15). A new file name, not +/// the old Medium's or Best's: the result cache keys a model by its name +/// and size, and this one is byte for byte the old Medium's size. pub const BEST: Shipped = Shipped { - file: "mosaic-best-1408.onnx", - whole: "mosaic-best.onnx", - halo: 256, + file: "mosaic-hq-1408.onnx", + whole: "mosaic-hq.onnx", + halo: HALO, }; #[derive(Debug, thiserror::Error)] diff --git a/core/dr-denoise/src/onnx.rs b/core/dr-denoise/src/onnx.rs index f7d0e14..7818a96 100644 --- a/core/dr-denoise/src/onnx.rs +++ b/core/dr-denoise/src/onnx.rs @@ -11,11 +11,11 @@ //! with the Bayer packing spelled `SpaceToDepth`, which QNN can hold and the //! 6-D reshape it replaces it cannot. //! -//! Each network also ships with any height and width (`mosaic-best.onnx` -//! beside `mosaic-best-1408.onnx`, darkroom-denoise `tools/export_whole.py`, +//! Each network also ships with any height and width (`mosaic-hq.onnx` +//! beside `mosaic-hq-1408.onnx`, darkroom-denoise `tools/export_whole.py`, //! identical to the fixed file at 1408²). Where the rung takes any size, the -//! frame runs whole instead of in tiles whose borders are thrown away — -//! Best computes 2.47 photosites for every one it keeps in 1408² tiles +//! frame runs whole instead of in tiles whose borders are thrown away — a +//! 1408² tile keeps 1024², 1.89 photosites computed for each one kept //! (denoise.md §14). use crate::tile::{Sizes, TileNet}; diff --git a/core/dr-pipeline/src/graph.rs b/core/dr-pipeline/src/graph.rs index 0cc1b3b..58ded81 100644 --- a/core/dr-pipeline/src/graph.rs +++ b/core/dr-pipeline/src/graph.rs @@ -2216,13 +2216,13 @@ mod tests { g.set_param( learned_denoise::ID, learned_denoise::METHOD, - learned_denoise::Method::Medium.index(), + learned_denoise::Method::Fast.index(), ); let state = g.state(); let mut h = EditGraph::default_chain(); h.set_denoise_available(true); let _ = h.set_state(&state); - assert_eq!(h.denoise_method(), learned_denoise::Method::Medium); + assert_eq!(h.denoise_method(), learned_denoise::Method::Fast); assert!((h.denoise_grain() - 0.4).abs() < 1e-6); } } diff --git a/core/dr-pipeline/src/learned_denoise.rs b/core/dr-pipeline/src/learned_denoise.rs index 19c0f12..32f6cff 100644 --- a/core/dr-pipeline/src/learned_denoise.rs +++ b/core/dr-pipeline/src/learned_denoise.rs @@ -35,23 +35,27 @@ pub const GRAIN: ParamId = ParamId("grain"); /// TRACES: FR-DEV-3g /// The demosaics a photograph can be developed with, in the order the -/// sidecar numbers them. Three networks that trade time for quality — the -/// same training, distilled into smaller students (docs/dev/denoise.md §13) -/// — and the classical demosaic, which is no network at all. +/// sidecar numbers them. Two networks that trade time for quality +/// (docs/dev/denoise.md §15) and the classical demosaic, which is no network +/// at all. +/// +/// Until 0.24 there were four — Bilinear, Fast, Medium, Best — and the +/// sidecar keeps their numbers: 2, which was Medium, is now Best, and 3, +/// which was Best, is past the end and reads as the default, which is +/// Best. Both land on the network that replaced them, with no migration. #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub enum Method { /// The classical demosaic: the noise stays. Bilinear, - /// The smallest student: a quarter of the medium network's work. + /// The smallest student: a quarter of Best's work. Fast, - /// One network the size of the first release's. - Medium, - /// Two experts, one for flat areas and one for edges, and a gate. + /// One network of the first release's size, taught by the mixture of + /// experts it replaced: the mixture's edges at a third of its work. Best, } impl Method { - pub const ALL: [Method; 4] = [Method::Bilinear, Method::Fast, Method::Medium, Method::Best]; + pub const ALL: [Method; 3] = [Method::Bilinear, Method::Fast, Method::Best]; pub const DEFAULT: Method = Method::Best; /// The sidecar's number for it. @@ -92,7 +96,6 @@ pub(crate) static DESCRIPTOR: LazyLock> = LazyLock::new(|| { vec![ LocalizedKey("param.learned_denoise.method.bilinear"), LocalizedKey("param.learned_denoise.method.fast"), - LocalizedKey("param.learned_denoise.method.medium"), LocalizedKey("param.learned_denoise.method.best"), ], ) @@ -117,3 +120,20 @@ pub(crate) static DESCRIPTOR: LazyLock> = LazyLock::new(|| { pub fn descriptor() -> Arc { DESCRIPTOR.clone() } + +#[cfg(test)] +mod tests { + use super::*; + + /// An edit saved before 0.24 stored Medium as 2 and Best as 3. Both + /// now name the network that replaced them, and nothing reads as Fast + /// or Bilinear that did not before. + #[test] + fn the_retired_methods_read_as_best() { + assert_eq!(Method::from_index(0.0), Method::Bilinear); + assert_eq!(Method::from_index(1.0), Method::Fast); + assert_eq!(Method::from_index(2.0), Method::Best, "Medium, before 0.24"); + assert_eq!(Method::from_index(3.0), Method::Best, "Best, before 0.24"); + assert_eq!(Method::Best.index(), 2.0); + } +} diff --git a/docker/android/assemble-apk.sh b/docker/android/assemble-apk.sh index 4da6ec6..2ee6685 100755 --- a/docker/android/assemble-apk.sh +++ b/docker/android/assemble-apk.sh @@ -325,8 +325,8 @@ for _dir in face scene inpaint denoise; do README.md) continue ;; # The denoisers' any-size exports run whole frames on TensorRT # and CUDA (denoise.md §14); the Hexagon takes fixed shapes, and - # 42 MB of graphs it never loads stay out of the APK. - mosaic-fast.onnx | mosaic-medium.onnx | mosaic-best.onnx) continue ;; + # 16 MB of graphs it never loads stay out of the APK. + mosaic-fast.onnx | mosaic-hq.onnx) continue ;; esac cp "${f}" "${OUT}/staging/assets/models/" _bundled="${_bundled} $(basename "${f}")" diff --git a/docs/dev/traceability.md b/docs/dev/traceability.md index 12fa52d..3482f4f 100644 --- a/docs/dev/traceability.md +++ b/docs/dev/traceability.md @@ -73,7 +73,7 @@ _None._ | FR-DEV-19b | [`ui/dr-ui/src/develop/mask_ops.rs:606`](../../ui/dr-ui/src/develop/mask_ops.rs#L606), [`ui/dr-ui/src/develop/masks.rs:595`](../../ui/dr-ui/src/develop/masks.rs#L595), [`ui/dr-ui/src/develop/session.rs:229`](../../ui/dr-ui/src/develop/session.rs#L229), [`ui/dr-ui/src/develop/session.rs:236`](../../ui/dr-ui/src/develop/session.rs#L236), [`ui/dr-ui/src/labels.rs:70`](../../ui/dr-ui/src/labels.rs#L70), [`ui/dr-ui/src/masks_ui.rs:1229`](../../ui/dr-ui/src/masks_ui.rs#L1229), [`ui/dr-ui/src/masks_ui.rs:1448`](../../ui/dr-ui/src/masks_ui.rs#L1448), [`ui/dr-ui/src/masks_ui.rs:1476`](../../ui/dr-ui/src/masks_ui.rs#L1476), [`ui/dr-ui/src/masks_ui.rs:1849`](../../ui/dr-ui/src/masks_ui.rs#L1849), [`ui/dr-ui/src/masks_ui.rs:908`](../../ui/dr-ui/src/masks_ui.rs#L908), [`ui/dr-ui/ui/app.slint:2229`](../../ui/dr-ui/ui/app.slint#L2229), [`ui/dr-ui/ui/app.slint:861`](../../ui/dr-ui/ui/app.slint#L861), [`ui/dr-ui/ui/masks.slint:1156`](../../ui/dr-ui/ui/masks.slint#L1156), [`ui/dr-ui/ui/masks.slint:479`](../../ui/dr-ui/ui/masks.slint#L479), [`ui/dr-ui/ui/masks.slint:800`](../../ui/dr-ui/ui/masks.slint#L800), [`ui/dr-ui/ui/masks.slint:874`](../../ui/dr-ui/ui/masks.slint#L874), [`ui/dr-ui/ui/masks.slint:894`](../../ui/dr-ui/ui/masks.slint#L894) | | FR-DEV-19c | [`core/dr-gpu/src/mask.rs:727`](../../core/dr-gpu/src/mask.rs#L727), [`core/dr-gpu/tests/local_adjustments.rs:1000`](../../core/dr-gpu/tests/local_adjustments.rs#L1000), [`core/dr-gpu/tests/local_adjustments.rs:1035`](../../core/dr-gpu/tests/local_adjustments.rs#L1035), [`core/dr-gpu/tests/local_adjustments.rs:1080`](../../core/dr-gpu/tests/local_adjustments.rs#L1080), [`core/dr-gpu/tests/local_adjustments.rs:943`](../../core/dr-gpu/tests/local_adjustments.rs#L943), [`core/dr-pipeline/src/graph.rs:1074`](../../core/dr-pipeline/src/graph.rs#L1074), [`core/dr-pipeline/src/mask.rs:1843`](../../core/dr-pipeline/src/mask.rs#L1843), [`core/dr-pipeline/src/mask.rs:1869`](../../core/dr-pipeline/src/mask.rs#L1869), [`core/dr-pipeline/src/mask.rs:1884`](../../core/dr-pipeline/src/mask.rs#L1884), [`core/dr-pipeline/src/mask.rs:2006`](../../core/dr-pipeline/src/mask.rs#L2006), [`core/dr-pipeline/src/mask.rs:2065`](../../core/dr-pipeline/src/mask.rs#L2065), [`core/dr-pipeline/src/mask.rs:2309`](../../core/dr-pipeline/src/mask.rs#L2309), [`core/dr-pipeline/src/mask.rs:2621`](../../core/dr-pipeline/src/mask.rs#L2621), [`core/dr-pipeline/src/operation.rs:1103`](../../core/dr-pipeline/src/operation.rs#L1103), [`core/dr-pipeline/src/operation.rs:2140`](../../core/dr-pipeline/src/operation.rs#L2140), [`core/dr-pipeline/src/operation.rs:738`](../../core/dr-pipeline/src/operation.rs#L738), [`ui/dr-ui/src/develop/mask_ops.rs:1199`](../../ui/dr-ui/src/develop/mask_ops.rs#L1199), [`ui/dr-ui/src/develop/mask_ops.rs:1235`](../../ui/dr-ui/src/develop/mask_ops.rs#L1235), [`ui/dr-ui/src/develop/mask_ops.rs:318`](../../ui/dr-ui/src/develop/mask_ops.rs#L318), [`ui/dr-ui/src/develop/mask_ops.rs:58`](../../ui/dr-ui/src/develop/mask_ops.rs#L58), [`ui/dr-ui/src/develop/masks.rs:12`](../../ui/dr-ui/src/develop/masks.rs#L12), [`ui/dr-ui/src/develop/masks.rs:176`](../../ui/dr-ui/src/develop/masks.rs#L176), [`ui/dr-ui/src/develop/masks.rs:21`](../../ui/dr-ui/src/develop/masks.rs#L21), [`ui/dr-ui/src/develop/masks.rs:43`](../../ui/dr-ui/src/develop/masks.rs#L43), [`ui/dr-ui/src/develop/render.rs:358`](../../ui/dr-ui/src/develop/render.rs#L358), [`ui/dr-ui/src/develop/session.rs:255`](../../ui/dr-ui/src/develop/session.rs#L255), [`ui/dr-ui/src/develop/session.rs:264`](../../ui/dr-ui/src/develop/session.rs#L264), [`ui/dr-ui/src/masks_ui.rs:1024`](../../ui/dr-ui/src/masks_ui.rs#L1024), [`ui/dr-ui/src/masks_ui.rs:1448`](../../ui/dr-ui/src/masks_ui.rs#L1448), [`ui/dr-ui/src/masks_ui.rs:152`](../../ui/dr-ui/src/masks_ui.rs#L152), [`ui/dr-ui/src/masks_ui.rs:1849`](../../ui/dr-ui/src/masks_ui.rs#L1849), [`ui/dr-ui/src/masks_ui.rs:291`](../../ui/dr-ui/src/masks_ui.rs#L291), [`ui/dr-ui/src/masks_ui.rs:317`](../../ui/dr-ui/src/masks_ui.rs#L317), [`ui/dr-ui/src/masks_ui.rs:677`](../../ui/dr-ui/src/masks_ui.rs#L677), [`ui/dr-ui/src/masks_ui.rs:996`](../../ui/dr-ui/src/masks_ui.rs#L996), [`ui/dr-ui/ui/icons.slint:340`](../../ui/dr-ui/ui/icons.slint#L340), [`ui/dr-ui/ui/masks.slint:1121`](../../ui/dr-ui/ui/masks.slint#L1121), [`ui/dr-ui/ui/masks.slint:184`](../../ui/dr-ui/ui/masks.slint#L184), [`ui/dr-ui/ui/masks.slint:294`](../../ui/dr-ui/ui/masks.slint#L294), [`ui/dr-ui/ui/masks.slint:543`](../../ui/dr-ui/ui/masks.slint#L543), [`ui/dr-ui/ui/masks.slint:70`](../../ui/dr-ui/ui/masks.slint#L70), [`ui/dr-ui/ui/masks.slint:808`](../../ui/dr-ui/ui/masks.slint#L808), [`ui/dr-ui/ui/masks.slint:876`](../../ui/dr-ui/ui/masks.slint#L876), [`ui/dr-ui/ui/masks.slint:968`](../../ui/dr-ui/ui/masks.slint#L968) | | FR-DEV-2 | [`core/dr-gpu/tests/scene_referred.rs:145`](../../core/dr-gpu/tests/scene_referred.rs#L145), [`core/dr-gpu/tests/scene_referred.rs:1`](../../core/dr-gpu/tests/scene_referred.rs#L1), [`core/dr-gpu/tests/view_transform.rs:137`](../../core/dr-gpu/tests/view_transform.rs#L137), [`core/dr-gpu/tests/view_transform.rs:1`](../../core/dr-gpu/tests/view_transform.rs#L1), [`core/dr-gpu/tests/view_transform.rs:201`](../../core/dr-gpu/tests/view_transform.rs#L201), [`core/dr-pipeline/src/declared/decl.rs:279`](../../core/dr-pipeline/src/declared/decl.rs#L279), [`core/dr-pipeline/src/operation.rs:2459`](../../core/dr-pipeline/src/operation.rs#L2459), [`core/dr-pipeline/src/operation.rs:2700`](../../core/dr-pipeline/src/operation.rs#L2700), [`core/dr-pipeline/src/operation.rs:369`](../../core/dr-pipeline/src/operation.rs#L369), [`core/dr-pipeline/src/operation.rs:443`](../../core/dr-pipeline/src/operation.rs#L443), [`core/dr-pipeline/src/operation.rs:463`](../../core/dr-pipeline/src/operation.rs#L463), [`core/dr-pipeline/src/operation.rs:505`](../../core/dr-pipeline/src/operation.rs#L505), [`core/dr-pipeline/src/ops/curve.rs:491`](../../core/dr-pipeline/src/ops/curve.rs#L491), [`core/dr-pipeline/src/view.rs:1`](../../core/dr-pipeline/src/view.rs#L1), [`core/dr-pipeline/src/view.rs:222`](../../core/dr-pipeline/src/view.rs#L222) | -| FR-DEV-20 | [`core/dr-gpu/src/adjust.rs:2338`](../../core/dr-gpu/src/adjust.rs#L2338), [`core/dr-pipeline/src/framing.rs:1377`](../../core/dr-pipeline/src/framing.rs#L1377), [`core/dr-pipeline/src/framing.rs:170`](../../core/dr-pipeline/src/framing.rs#L170), [`core/dr-pipeline/src/framing.rs:401`](../../core/dr-pipeline/src/framing.rs#L401), [`core/dr-pipeline/src/framing.rs:495`](../../core/dr-pipeline/src/framing.rs#L495), [`core/dr-pipeline/src/framing.rs:652`](../../core/dr-pipeline/src/framing.rs#L652), [`core/dr-pipeline/src/framing.rs:663`](../../core/dr-pipeline/src/framing.rs#L663), [`core/dr-pipeline/src/framing.rs:88`](../../core/dr-pipeline/src/framing.rs#L88), [`core/dr-pipeline/src/framing.rs:92`](../../core/dr-pipeline/src/framing.rs#L92), [`core/dr-pipeline/src/framing.rs:938`](../../core/dr-pipeline/src/framing.rs#L938), [`core/dr-pipeline/src/framing.rs:994`](../../core/dr-pipeline/src/framing.rs#L994), [`core/dr-pipeline/src/preset.rs:1051`](../../core/dr-pipeline/src/preset.rs#L1051), [`core/dr-pipeline/src/sidecar.rs:2197`](../../core/dr-pipeline/src/sidecar.rs#L2197), [`ui/dr-ui/src/develop/framing.rs:1185`](../../ui/dr-ui/src/develop/framing.rs#L1185), [`ui/dr-ui/src/develop/framing.rs:418`](../../ui/dr-ui/src/develop/framing.rs#L418), [`ui/dr-ui/src/develop/framing.rs:474`](../../ui/dr-ui/src/develop/framing.rs#L474), [`ui/dr-ui/src/develop/framing.rs:480`](../../ui/dr-ui/src/develop/framing.rs#L480), [`ui/dr-ui/src/develop/framing.rs:489`](../../ui/dr-ui/src/develop/framing.rs#L489), [`ui/dr-ui/src/develop_ui.rs:1390`](../../ui/dr-ui/src/develop_ui.rs#L1390), [`ui/dr-ui/src/develop_ui.rs:1423`](../../ui/dr-ui/src/develop_ui.rs#L1423), [`ui/dr-ui/src/labels.rs:311`](../../ui/dr-ui/src/labels.rs#L311), [`ui/dr-ui/ui/adjust.slint:646`](../../ui/dr-ui/ui/adjust.slint#L646), [`ui/dr-ui/ui/adjust.slint:688`](../../ui/dr-ui/ui/adjust.slint#L688), [`ui/dr-ui/ui/adjust.slint:831`](../../ui/dr-ui/ui/adjust.slint#L831), [`ui/dr-ui/ui/app.slint:2718`](../../ui/dr-ui/ui/app.slint#L2718), [`ui/dr-ui/ui/app.slint:727`](../../ui/dr-ui/ui/app.slint#L727), [`ui/dr-ui/ui/app.slint:750`](../../ui/dr-ui/ui/app.slint#L750) | +| FR-DEV-20 | [`core/dr-gpu/src/adjust.rs:2338`](../../core/dr-gpu/src/adjust.rs#L2338), [`core/dr-pipeline/src/framing.rs:1377`](../../core/dr-pipeline/src/framing.rs#L1377), [`core/dr-pipeline/src/framing.rs:170`](../../core/dr-pipeline/src/framing.rs#L170), [`core/dr-pipeline/src/framing.rs:401`](../../core/dr-pipeline/src/framing.rs#L401), [`core/dr-pipeline/src/framing.rs:495`](../../core/dr-pipeline/src/framing.rs#L495), [`core/dr-pipeline/src/framing.rs:652`](../../core/dr-pipeline/src/framing.rs#L652), [`core/dr-pipeline/src/framing.rs:663`](../../core/dr-pipeline/src/framing.rs#L663), [`core/dr-pipeline/src/framing.rs:88`](../../core/dr-pipeline/src/framing.rs#L88), [`core/dr-pipeline/src/framing.rs:92`](../../core/dr-pipeline/src/framing.rs#L92), [`core/dr-pipeline/src/framing.rs:938`](../../core/dr-pipeline/src/framing.rs#L938), [`core/dr-pipeline/src/framing.rs:994`](../../core/dr-pipeline/src/framing.rs#L994), [`core/dr-pipeline/src/preset.rs:1051`](../../core/dr-pipeline/src/preset.rs#L1051), [`core/dr-pipeline/src/sidecar.rs:2197`](../../core/dr-pipeline/src/sidecar.rs#L2197), [`ui/dr-ui/src/develop/framing.rs:1185`](../../ui/dr-ui/src/develop/framing.rs#L1185), [`ui/dr-ui/src/develop/framing.rs:418`](../../ui/dr-ui/src/develop/framing.rs#L418), [`ui/dr-ui/src/develop/framing.rs:474`](../../ui/dr-ui/src/develop/framing.rs#L474), [`ui/dr-ui/src/develop/framing.rs:480`](../../ui/dr-ui/src/develop/framing.rs#L480), [`ui/dr-ui/src/develop/framing.rs:489`](../../ui/dr-ui/src/develop/framing.rs#L489), [`ui/dr-ui/src/develop_ui.rs:1390`](../../ui/dr-ui/src/develop_ui.rs#L1390), [`ui/dr-ui/src/develop_ui.rs:1423`](../../ui/dr-ui/src/develop_ui.rs#L1423), [`ui/dr-ui/src/labels.rs:310`](../../ui/dr-ui/src/labels.rs#L310), [`ui/dr-ui/ui/adjust.slint:646`](../../ui/dr-ui/ui/adjust.slint#L646), [`ui/dr-ui/ui/adjust.slint:688`](../../ui/dr-ui/ui/adjust.slint#L688), [`ui/dr-ui/ui/adjust.slint:831`](../../ui/dr-ui/ui/adjust.slint#L831), [`ui/dr-ui/ui/app.slint:2718`](../../ui/dr-ui/ui/app.slint#L2718), [`ui/dr-ui/ui/app.slint:727`](../../ui/dr-ui/ui/app.slint#L727), [`ui/dr-ui/ui/app.slint:750`](../../ui/dr-ui/ui/app.slint#L750) | | FR-DEV-3 | [`core/dr-gpu/src/adjust.rs:1107`](../../core/dr-gpu/src/adjust.rs#L1107), [`core/dr-gpu/src/adjust.rs:2960`](../../core/dr-gpu/src/adjust.rs#L2960), [`core/dr-gpu/src/adjust.rs:82`](../../core/dr-gpu/src/adjust.rs#L82), [`core/dr-gpu/src/adjust.rs:969`](../../core/dr-gpu/src/adjust.rs#L969), [`core/dr-gpu/tests/tone_curve.rs:1`](../../core/dr-gpu/tests/tone_curve.rs#L1), [`core/dr-pipeline/src/coverage.rs:122`](../../core/dr-pipeline/src/coverage.rs#L122), [`core/dr-pipeline/src/coverage.rs:1`](../../core/dr-pipeline/src/coverage.rs#L1), [`core/dr-pipeline/src/detail.rs:491`](../../core/dr-pipeline/src/detail.rs#L491), [`core/dr-pipeline/src/detail.rs:592`](../../core/dr-pipeline/src/detail.rs#L592), [`core/dr-pipeline/src/framing.rs:1111`](../../core/dr-pipeline/src/framing.rs#L1111), [`core/dr-pipeline/src/framing.rs:251`](../../core/dr-pipeline/src/framing.rs#L251), [`core/dr-pipeline/src/framing.rs:321`](../../core/dr-pipeline/src/framing.rs#L321), [`core/dr-pipeline/src/framing.rs:481`](../../core/dr-pipeline/src/framing.rs#L481), [`core/dr-pipeline/src/framing.rs:717`](../../core/dr-pipeline/src/framing.rs#L717), [`core/dr-pipeline/src/graph.rs:1041`](../../core/dr-pipeline/src/graph.rs#L1041), [`core/dr-pipeline/src/graph.rs:1133`](../../core/dr-pipeline/src/graph.rs#L1133), [`core/dr-pipeline/src/graph.rs:1531`](../../core/dr-pipeline/src/graph.rs#L1531), [`core/dr-pipeline/src/graph.rs:1562`](../../core/dr-pipeline/src/graph.rs#L1562), [`core/dr-pipeline/src/graph.rs:1585`](../../core/dr-pipeline/src/graph.rs#L1585), [`core/dr-pipeline/src/graph.rs:1623`](../../core/dr-pipeline/src/graph.rs#L1623), [`core/dr-pipeline/src/graph.rs:1654`](../../core/dr-pipeline/src/graph.rs#L1654), [`core/dr-pipeline/src/graph.rs:247`](../../core/dr-pipeline/src/graph.rs#L247), [`core/dr-pipeline/src/graph.rs:379`](../../core/dr-pipeline/src/graph.rs#L379), [`core/dr-pipeline/src/graph.rs:443`](../../core/dr-pipeline/src/graph.rs#L443), [`core/dr-pipeline/src/graph.rs:449`](../../core/dr-pipeline/src/graph.rs#L449), [`core/dr-pipeline/src/lens.rs:93`](../../core/dr-pipeline/src/lens.rs#L93), [`core/dr-pipeline/src/mask.rs:205`](../../core/dr-pipeline/src/mask.rs#L205), [`core/dr-pipeline/src/mask.rs:558`](../../core/dr-pipeline/src/mask.rs#L558), [`core/dr-pipeline/src/neutral.rs:1`](../../core/dr-pipeline/src/neutral.rs#L1), [`core/dr-pipeline/src/neutral.rs:306`](../../core/dr-pipeline/src/neutral.rs#L306), [`core/dr-pipeline/src/neutral.rs:322`](../../core/dr-pipeline/src/neutral.rs#L322), [`core/dr-pipeline/src/neutral.rs:338`](../../core/dr-pipeline/src/neutral.rs#L338), [`core/dr-pipeline/src/neutral.rs:360`](../../core/dr-pipeline/src/neutral.rs#L360), [`core/dr-pipeline/src/neutral.rs:81`](../../core/dr-pipeline/src/neutral.rs#L81), [`core/dr-pipeline/src/operation.rs:334`](../../core/dr-pipeline/src/operation.rs#L334), [`core/dr-pipeline/src/operation.rs:377`](../../core/dr-pipeline/src/operation.rs#L377), [`core/dr-pipeline/src/operation.rs:714`](../../core/dr-pipeline/src/operation.rs#L714), [`core/dr-pipeline/src/operation.rs:787`](../../core/dr-pipeline/src/operation.rs#L787), [`core/dr-pipeline/src/operation.rs:969`](../../core/dr-pipeline/src/operation.rs#L969), [`core/dr-pipeline/src/ops/capture_sharpen.rs:1`](../../core/dr-pipeline/src/ops/capture_sharpen.rs#L1), [`core/dr-pipeline/src/ops/capture_sharpen.rs:210`](../../core/dr-pipeline/src/ops/capture_sharpen.rs#L210), [`core/dr-pipeline/src/ops/curve.rs:100`](../../core/dr-pipeline/src/ops/curve.rs#L100), [`core/dr-pipeline/src/ops/curve.rs:1`](../../core/dr-pipeline/src/ops/curve.rs#L1), [`core/dr-pipeline/src/ops/curve.rs:219`](../../core/dr-pipeline/src/ops/curve.rs#L219), [`core/dr-pipeline/src/ops/curve.rs:669`](../../core/dr-pipeline/src/ops/curve.rs#L669), [`core/dr-pipeline/src/ops/local_contrast.rs:1`](../../core/dr-pipeline/src/ops/local_contrast.rs#L1), [`core/dr-pipeline/src/ops/noise_reduction.rs:1`](../../core/dr-pipeline/src/ops/noise_reduction.rs#L1), [`core/dr-pipeline/src/ops/noise_reduction.rs:273`](../../core/dr-pipeline/src/ops/noise_reduction.rs#L273), [`core/dr-pipeline/src/preset.rs:977`](../../core/dr-pipeline/src/preset.rs#L977), [`core/dr-pipeline/src/sidecar.rs:1433`](../../core/dr-pipeline/src/sidecar.rs#L1433), [`core/dr-pipeline/src/sidecar.rs:206`](../../core/dr-pipeline/src/sidecar.rs#L206), [`core/dr-pipeline/src/sidecar.rs:2275`](../../core/dr-pipeline/src/sidecar.rs#L2275), [`core/dr-pipeline/src/sidecar.rs:2355`](../../core/dr-pipeline/src/sidecar.rs#L2355), [`core/dr-pipeline/tests/tone_curve.rs:1`](../../core/dr-pipeline/tests/tone_curve.rs#L1), [`core/dr-segment/src/refine.rs:937`](../../core/dr-segment/src/refine.rs#L937), [`ui/dr-ui/src/develop/curves.rs:163`](../../ui/dr-ui/src/develop/curves.rs#L163), [`ui/dr-ui/src/develop/framing.rs:10`](../../ui/dr-ui/src/develop/framing.rs#L10), [`ui/dr-ui/src/develop/framing.rs:298`](../../ui/dr-ui/src/develop/framing.rs#L298), [`ui/dr-ui/src/develop/framing.rs:328`](../../ui/dr-ui/src/develop/framing.rs#L328), [`ui/dr-ui/src/develop/framing.rs:394`](../../ui/dr-ui/src/develop/framing.rs#L394), [`ui/dr-ui/src/develop/framing.rs:408`](../../ui/dr-ui/src/develop/framing.rs#L408), [`ui/dr-ui/src/develop/framing.rs:690`](../../ui/dr-ui/src/develop/framing.rs#L690), [`ui/dr-ui/src/develop/framing.rs:71`](../../ui/dr-ui/src/develop/framing.rs#L71), [`ui/dr-ui/src/develop/mask_ops.rs:1076`](../../ui/dr-ui/src/develop/mask_ops.rs#L1076), [`ui/dr-ui/src/develop/mask_ops.rs:1340`](../../ui/dr-ui/src/develop/mask_ops.rs#L1340), [`ui/dr-ui/src/develop/mask_ops.rs:178`](../../ui/dr-ui/src/develop/mask_ops.rs#L178), [`ui/dr-ui/src/develop/mask_ops.rs:969`](../../ui/dr-ui/src/develop/mask_ops.rs#L969), [`ui/dr-ui/src/develop/masks.rs:263`](../../ui/dr-ui/src/develop/masks.rs#L263), [`ui/dr-ui/src/develop/masks.rs:361`](../../ui/dr-ui/src/develop/masks.rs#L361), [`ui/dr-ui/src/develop/masks.rs:743`](../../ui/dr-ui/src/develop/masks.rs#L743), [`ui/dr-ui/src/develop/masks.rs:773`](../../ui/dr-ui/src/develop/masks.rs#L773), [`ui/dr-ui/src/develop/render.rs:1390`](../../ui/dr-ui/src/develop/render.rs#L1390), [`ui/dr-ui/src/develop/rows.rs:106`](../../ui/dr-ui/src/develop/rows.rs#L106), [`ui/dr-ui/src/develop/rows.rs:195`](../../ui/dr-ui/src/develop/rows.rs#L195), [`ui/dr-ui/src/develop/rows.rs:231`](../../ui/dr-ui/src/develop/rows.rs#L231), [`ui/dr-ui/src/develop/rows.rs:679`](../../ui/dr-ui/src/develop/rows.rs#L679), [`ui/dr-ui/src/develop/segmentation.rs:139`](../../ui/dr-ui/src/develop/segmentation.rs#L139), [`ui/dr-ui/src/develop/segmentation.rs:302`](../../ui/dr-ui/src/develop/segmentation.rs#L302), [`ui/dr-ui/src/develop/segmentation.rs:339`](../../ui/dr-ui/src/develop/segmentation.rs#L339), [`ui/dr-ui/src/develop/segmentation.rs:572`](../../ui/dr-ui/src/develop/segmentation.rs#L572), [`ui/dr-ui/src/develop/segmentation.rs:590`](../../ui/dr-ui/src/develop/segmentation.rs#L590), [`ui/dr-ui/src/develop/segmentation.rs:604`](../../ui/dr-ui/src/develop/segmentation.rs#L604), [`ui/dr-ui/src/develop/segmentation.rs:626`](../../ui/dr-ui/src/develop/segmentation.rs#L626), [`ui/dr-ui/src/develop/segmentation.rs:77`](../../ui/dr-ui/src/develop/segmentation.rs#L77), [`ui/dr-ui/src/develop/segmentation.rs:806`](../../ui/dr-ui/src/develop/segmentation.rs#L806), [`ui/dr-ui/src/develop/session.rs:1026`](../../ui/dr-ui/src/develop/session.rs#L1026), [`ui/dr-ui/src/develop/session.rs:190`](../../ui/dr-ui/src/develop/session.rs#L190), [`ui/dr-ui/src/develop/session.rs:283`](../../ui/dr-ui/src/develop/session.rs#L283), [`ui/dr-ui/src/develop/session.rs:312`](../../ui/dr-ui/src/develop/session.rs#L312), [`ui/dr-ui/src/develop/session.rs:511`](../../ui/dr-ui/src/develop/session.rs#L511), [`ui/dr-ui/src/develop/session.rs:571`](../../ui/dr-ui/src/develop/session.rs#L571), [`ui/dr-ui/src/develop/session.rs:738`](../../ui/dr-ui/src/develop/session.rs#L738), [`ui/dr-ui/src/develop/white_balance.rs:11`](../../ui/dr-ui/src/develop/white_balance.rs#L11), [`ui/dr-ui/src/develop/white_balance.rs:162`](../../ui/dr-ui/src/develop/white_balance.rs#L162), [`ui/dr-ui/src/develop/white_balance.rs:193`](../../ui/dr-ui/src/develop/white_balance.rs#L193), [`ui/dr-ui/src/develop/white_balance.rs:277`](../../ui/dr-ui/src/develop/white_balance.rs#L277), [`ui/dr-ui/src/develop/white_balance.rs:340`](../../ui/dr-ui/src/develop/white_balance.rs#L340), [`ui/dr-ui/src/develop_ui.rs:118`](../../ui/dr-ui/src/develop_ui.rs#L118), [`ui/dr-ui/src/develop_ui.rs:1203`](../../ui/dr-ui/src/develop_ui.rs#L1203), [`ui/dr-ui/src/develop_ui.rs:1300`](../../ui/dr-ui/src/develop_ui.rs#L1300), [`ui/dr-ui/src/develop_ui.rs:1354`](../../ui/dr-ui/src/develop_ui.rs#L1354), [`ui/dr-ui/src/develop_ui.rs:601`](../../ui/dr-ui/src/develop_ui.rs#L601), [`ui/dr-ui/src/develop_ui.rs:821`](../../ui/dr-ui/src/develop_ui.rs#L821), [`ui/dr-ui/src/labels.rs:38`](../../ui/dr-ui/src/labels.rs#L38), [`ui/dr-ui/src/lib.rs:2288`](../../ui/dr-ui/src/lib.rs#L2288), [`ui/dr-ui/src/lib.rs:472`](../../ui/dr-ui/src/lib.rs#L472), [`ui/dr-ui/src/lib.rs:502`](../../ui/dr-ui/src/lib.rs#L502), [`ui/dr-ui/src/lib.rs:610`](../../ui/dr-ui/src/lib.rs#L610), [`ui/dr-ui/src/lib.rs:634`](../../ui/dr-ui/src/lib.rs#L634), [`ui/dr-ui/src/library/sidecar.rs:66`](../../ui/dr-ui/src/library/sidecar.rs#L66), [`ui/dr-ui/src/masks_ui.rs:1608`](../../ui/dr-ui/src/masks_ui.rs#L1608), [`ui/dr-ui/src/masks_ui.rs:1722`](../../ui/dr-ui/src/masks_ui.rs#L1722), [`ui/dr-ui/src/masks_ui.rs:339`](../../ui/dr-ui/src/masks_ui.rs#L339), [`ui/dr-ui/src/masks_ui.rs:44`](../../ui/dr-ui/src/masks_ui.rs#L44), [`ui/dr-ui/src/presets.rs:414`](../../ui/dr-ui/src/presets.rs#L414), [`ui/dr-ui/src/segmentation.rs:117`](../../ui/dr-ui/src/segmentation.rs#L117), [`ui/dr-ui/src/segmentation.rs:353`](../../ui/dr-ui/src/segmentation.rs#L353), [`ui/dr-ui/src/segmentation.rs:369`](../../ui/dr-ui/src/segmentation.rs#L369), [`ui/dr-ui/src/segmentation.rs:499`](../../ui/dr-ui/src/segmentation.rs#L499), [`ui/dr-ui/src/segmentation.rs:527`](../../ui/dr-ui/src/segmentation.rs#L527), [`ui/dr-ui/ui/adjust.slint:1050`](../../ui/dr-ui/ui/adjust.slint#L1050), [`ui/dr-ui/ui/adjust.slint:127`](../../ui/dr-ui/ui/adjust.slint#L127), [`ui/dr-ui/ui/adjust.slint:1658`](../../ui/dr-ui/ui/adjust.slint#L1658), [`ui/dr-ui/ui/adjust.slint:173`](../../ui/dr-ui/ui/adjust.slint#L173), [`ui/dr-ui/ui/adjust.slint:47`](../../ui/dr-ui/ui/adjust.slint#L47), [`ui/dr-ui/ui/adjust.slint:626`](../../ui/dr-ui/ui/adjust.slint#L626), [`ui/dr-ui/ui/adjust.slint:662`](../../ui/dr-ui/ui/adjust.slint#L662), [`ui/dr-ui/ui/adjust.slint:681`](../../ui/dr-ui/ui/adjust.slint#L681), [`ui/dr-ui/ui/adjust.slint:874`](../../ui/dr-ui/ui/adjust.slint#L874), [`ui/dr-ui/ui/adjust.slint:973`](../../ui/dr-ui/ui/adjust.slint#L973), [`ui/dr-ui/ui/app.slint:2294`](../../ui/dr-ui/ui/app.slint#L2294), [`ui/dr-ui/ui/app.slint:2356`](../../ui/dr-ui/ui/app.slint#L2356), [`ui/dr-ui/ui/app.slint:242`](../../ui/dr-ui/ui/app.slint#L242), [`ui/dr-ui/ui/develop.slint:375`](../../ui/dr-ui/ui/develop.slint#L375), [`ui/dr-ui/ui/masks.slint:1246`](../../ui/dr-ui/ui/masks.slint#L1246), [`ui/dr-ui/ui/masks.slint:779`](../../ui/dr-ui/ui/masks.slint#L779), [`ui/dr-ui/ui/masks.slint:838`](../../ui/dr-ui/ui/masks.slint#L838) | | FR-DEV-3a | [`core/dr-pipeline/ops/exposure.yaml:1`](../../core/dr-pipeline/ops/exposure.yaml#L1), [`core/dr-pipeline/src/descriptor.rs:212`](../../core/dr-pipeline/src/descriptor.rs#L212), [`core/dr-pipeline/src/descriptor.rs:252`](../../core/dr-pipeline/src/descriptor.rs#L252), [`core/dr-pipeline/src/descriptor.rs:276`](../../core/dr-pipeline/src/descriptor.rs#L276), [`core/dr-pipeline/src/descriptor.rs:331`](../../core/dr-pipeline/src/descriptor.rs#L331), [`core/dr-pipeline/src/framing.rs:568`](../../core/dr-pipeline/src/framing.rs#L568), [`core/dr-pipeline/src/graph.rs:25`](../../core/dr-pipeline/src/graph.rs#L25), [`core/dr-pipeline/src/graph.rs:47`](../../core/dr-pipeline/src/graph.rs#L47), [`core/dr-pipeline/src/graph.rs:492`](../../core/dr-pipeline/src/graph.rs#L492), [`core/dr-pipeline/src/graph.rs:60`](../../core/dr-pipeline/src/graph.rs#L60), [`core/dr-pipeline/src/graph.rs:663`](../../core/dr-pipeline/src/graph.rs#L663), [`core/dr-pipeline/src/mask.rs:1746`](../../core/dr-pipeline/src/mask.rs#L1746), [`core/dr-pipeline/src/neutral.rs:1`](../../core/dr-pipeline/src/neutral.rs#L1), [`core/dr-pipeline/src/neutral.rs:378`](../../core/dr-pipeline/src/neutral.rs#L378), [`core/dr-pipeline/src/operation.rs:232`](../../core/dr-pipeline/src/operation.rs#L232), [`core/dr-pipeline/src/operation.rs:412`](../../core/dr-pipeline/src/operation.rs#L412), [`core/dr-pipeline/src/ops/curve.rs:319`](../../core/dr-pipeline/src/ops/curve.rs#L319), [`ui/dr-ui/src/develop/curves.rs:36`](../../ui/dr-ui/src/develop/curves.rs#L36), [`ui/dr-ui/src/develop/rows.rs:118`](../../ui/dr-ui/src/develop/rows.rs#L118), [`ui/dr-ui/src/develop/rows.rs:679`](../../ui/dr-ui/src/develop/rows.rs#L679), [`ui/dr-ui/src/develop/rows.rs:877`](../../ui/dr-ui/src/develop/rows.rs#L877), [`ui/dr-ui/src/lib.rs:990`](../../ui/dr-ui/src/lib.rs#L990), [`ui/dr-ui/tests/ui_names_no_operation.rs:1`](../../ui/dr-ui/tests/ui_names_no_operation.rs#L1), [`ui/dr-ui/ui/app.slint:2748`](../../ui/dr-ui/ui/app.slint#L2748) | | FR-DEV-3b | [`core/dr-pipeline/src/descriptor.rs:276`](../../core/dr-pipeline/src/descriptor.rs#L276), [`core/dr-pipeline/src/framing.rs:568`](../../core/dr-pipeline/src/framing.rs#L568), [`core/dr-pipeline/src/graph.rs:60`](../../core/dr-pipeline/src/graph.rs#L60), [`core/dr-pipeline/src/operation.rs:412`](../../core/dr-pipeline/src/operation.rs#L412), [`ui/dr-ui/ui/app.slint:3027`](../../ui/dr-ui/ui/app.slint#L3027) | @@ -81,12 +81,12 @@ _None._ | FR-DEV-3d | [`core/dr-gpu/src/adjust.rs:1107`](../../core/dr-gpu/src/adjust.rs#L1107), [`core/dr-gpu/src/adjust.rs:112`](../../core/dr-gpu/src/adjust.rs#L112), [`core/dr-gpu/src/adjust.rs:1429`](../../core/dr-gpu/src/adjust.rs#L1429), [`core/dr-gpu/src/adjust.rs:1523`](../../core/dr-gpu/src/adjust.rs#L1523), [`core/dr-gpu/src/adjust.rs:82`](../../core/dr-gpu/src/adjust.rs#L82), [`core/dr-gpu/tests/capture_sharpen.rs:433`](../../core/dr-gpu/tests/capture_sharpen.rs#L433), [`core/dr-gpu/tests/detail_stage.rs:241`](../../core/dr-gpu/tests/detail_stage.rs#L241), [`core/dr-gpu/tests/local_contrast.rs:557`](../../core/dr-gpu/tests/local_contrast.rs#L557), [`core/dr-gpu/tests/noise_reduction.rs:555`](../../core/dr-gpu/tests/noise_reduction.rs#L555), [`core/dr-pipeline/src/framing.rs:481`](../../core/dr-pipeline/src/framing.rs#L481), [`core/dr-pipeline/src/graph.rs:1161`](../../core/dr-pipeline/src/graph.rs#L1161), [`core/dr-pipeline/src/operation.rs:32`](../../core/dr-pipeline/src/operation.rs#L32), [`core/dr-pipeline/src/operation.rs:505`](../../core/dr-pipeline/src/operation.rs#L505), [`core/dr-pipeline/src/operation.rs:53`](../../core/dr-pipeline/src/operation.rs#L53), [`core/dr-pipeline/src/operation.rs:71`](../../core/dr-pipeline/src/operation.rs#L71) | | FR-DEV-3e | [`core/dr-decode/src/dcp.rs:132`](../../core/dr-decode/src/dcp.rs#L132), [`core/dr-decode/src/dcp.rs:163`](../../core/dr-decode/src/dcp.rs#L163), [`core/dr-decode/src/dcp.rs:182`](../../core/dr-decode/src/dcp.rs#L182), [`core/dr-decode/src/dcp.rs:1`](../../core/dr-decode/src/dcp.rs#L1), [`core/dr-decode/src/dcp.rs:205`](../../core/dr-decode/src/dcp.rs#L205), [`core/dr-decode/src/dcp.rs:240`](../../core/dr-decode/src/dcp.rs#L240), [`core/dr-decode/src/dcp.rs:431`](../../core/dr-decode/src/dcp.rs#L431), [`core/dr-decode/src/dcp.rs:482`](../../core/dr-decode/src/dcp.rs#L482), [`core/dr-decode/src/dcp.rs:493`](../../core/dr-decode/src/dcp.rs#L493), [`core/dr-decode/src/dcp.rs:526`](../../core/dr-decode/src/dcp.rs#L526), [`core/dr-decode/src/dcp.rs:546`](../../core/dr-decode/src/dcp.rs#L546), [`core/dr-decode/src/dcp.rs:559`](../../core/dr-decode/src/dcp.rs#L559), [`core/dr-decode/src/dcp.rs:79`](../../core/dr-decode/src/dcp.rs#L79), [`core/dr-decode/src/lib.rs:126`](../../core/dr-decode/src/lib.rs#L126), [`core/dr-decode/src/lib.rs:141`](../../core/dr-decode/src/lib.rs#L141), [`core/dr-decode/src/lib.rs:150`](../../core/dr-decode/src/lib.rs#L150), [`core/dr-decode/src/lib.rs:601`](../../core/dr-decode/src/lib.rs#L601), [`core/dr-decode/src/lib.rs:799`](../../core/dr-decode/src/lib.rs#L799), [`core/dr-decode/src/lib.rs:839`](../../core/dr-decode/src/lib.rs#L839), [`core/dr-decode/src/profile.rs:104`](../../core/dr-decode/src/profile.rs#L104), [`core/dr-decode/src/profile.rs:153`](../../core/dr-decode/src/profile.rs#L153), [`core/dr-decode/src/profile.rs:1`](../../core/dr-decode/src/profile.rs#L1), [`core/dr-decode/src/profile.rs:237`](../../core/dr-decode/src/profile.rs#L237), [`core/dr-decode/src/profile.rs:288`](../../core/dr-decode/src/profile.rs#L288), [`core/dr-decode/src/profile.rs:345`](../../core/dr-decode/src/profile.rs#L345), [`core/dr-decode/src/profile.rs:475`](../../core/dr-decode/src/profile.rs#L475), [`core/dr-decode/src/profile.rs:509`](../../core/dr-decode/src/profile.rs#L509), [`core/dr-decode/src/profile.rs:680`](../../core/dr-decode/src/profile.rs#L680), [`core/dr-gpu/src/adjust.rs:523`](../../core/dr-gpu/src/adjust.rs#L523), [`core/dr-gpu/src/adjust.rs:536`](../../core/dr-gpu/src/adjust.rs#L536), [`core/dr-gpu/src/adjust.rs:74`](../../core/dr-gpu/src/adjust.rs#L74), [`core/dr-gpu/src/demosaic.rs:110`](../../core/dr-gpu/src/demosaic.rs#L110), [`core/dr-gpu/src/demosaic.rs:215`](../../core/dr-gpu/src/demosaic.rs#L215), [`core/dr-gpu/src/demosaic.rs:592`](../../core/dr-gpu/src/demosaic.rs#L592), [`core/dr-gpu/tests/camera_profile.rs:1`](../../core/dr-gpu/tests/camera_profile.rs#L1), [`core/dr-pipeline/src/camera_raw.rs:1`](../../core/dr-pipeline/src/camera_raw.rs#L1), [`core/dr-pipeline/src/declared/decl.rs:279`](../../core/dr-pipeline/src/declared/decl.rs#L279), [`core/dr-pipeline/src/operation.rs:2459`](../../core/dr-pipeline/src/operation.rs#L2459), [`core/dr-pipeline/src/operation.rs:2483`](../../core/dr-pipeline/src/operation.rs#L2483), [`core/dr-pipeline/src/operation.rs:273`](../../core/dr-pipeline/src/operation.rs#L273), [`core/dr-pipeline/src/operation.rs:349`](../../core/dr-pipeline/src/operation.rs#L349), [`core/dr-pipeline/src/operation.rs:369`](../../core/dr-pipeline/src/operation.rs#L369), [`core/dr-pipeline/src/operation.rs:443`](../../core/dr-pipeline/src/operation.rs#L443), [`core/dr-pipeline/src/operation.rs:463`](../../core/dr-pipeline/src/operation.rs#L463), [`core/dr-pipeline/src/ops/camera_profile.rs:1`](../../core/dr-pipeline/src/ops/camera_profile.rs#L1), [`core/dr-pipeline/src/ops/camera_profile.rs:393`](../../core/dr-pipeline/src/ops/camera_profile.rs#L393), [`core/dr-pipeline/src/ops/camera_profile.rs:430`](../../core/dr-pipeline/src/ops/camera_profile.rs#L430), [`core/dr-pipeline/src/view.rs:238`](../../core/dr-pipeline/src/view.rs#L238), [`core/dr-types/src/hue_sat.rs:1`](../../core/dr-types/src/hue_sat.rs#L1), [`core/dr-types/src/tone.rs:162`](../../core/dr-types/src/tone.rs#L162), [`core/dr-types/src/tone.rs:1`](../../core/dr-types/src/tone.rs#L1), [`ui/dr-ui/src/derived_sync.rs:1031`](../../ui/dr-ui/src/derived_sync.rs#L1031), [`ui/dr-ui/src/derived_sync.rs:2056`](../../ui/dr-ui/src/derived_sync.rs#L2056), [`ui/dr-ui/src/derived_sync.rs:244`](../../ui/dr-ui/src/derived_sync.rs#L244), [`ui/dr-ui/src/derived_sync.rs:94`](../../ui/dr-ui/src/derived_sync.rs#L94), [`ui/dr-ui/src/develop/session.rs:606`](../../ui/dr-ui/src/develop/session.rs#L606), [`ui/dr-ui/src/develop/session.rs:646`](../../ui/dr-ui/src/develop/session.rs#L646), [`ui/dr-ui/src/develop/session.rs:681`](../../ui/dr-ui/src/develop/session.rs#L681), [`ui/dr-ui/src/develop/session.rs:690`](../../ui/dr-ui/src/develop/session.rs#L690), [`ui/dr-ui/src/develop/session.rs:73`](../../ui/dr-ui/src/develop/session.rs#L73), [`ui/dr-ui/src/develop/session.rs:882`](../../ui/dr-ui/src/develop/session.rs#L882), [`ui/dr-ui/src/develop/session.rs:955`](../../ui/dr-ui/src/develop/session.rs#L955), [`ui/dr-ui/src/lib.rs:1243`](../../ui/dr-ui/src/lib.rs#L1243), [`ui/dr-ui/src/lib.rs:1541`](../../ui/dr-ui/src/lib.rs#L1541), [`ui/dr-ui/src/lib.rs:1559`](../../ui/dr-ui/src/lib.rs#L1559), [`ui/dr-ui/src/lib.rs:330`](../../ui/dr-ui/src/lib.rs#L330), [`ui/dr-ui/ui/develop.slint:386`](../../ui/dr-ui/ui/develop.slint#L386), [`ui/dr-ui/ui/develop.slint:395`](../../ui/dr-ui/ui/develop.slint#L395) | | FR-DEV-3f | [`core/dr-film/src/bake.rs:161`](../../core/dr-film/src/bake.rs#L161), [`core/dr-film/src/bake.rs:384`](../../core/dr-film/src/bake.rs#L384), [`core/dr-film/src/bake.rs:52`](../../core/dr-film/src/bake.rs#L52), [`core/dr-film/src/bake.rs:662`](../../core/dr-film/src/bake.rs#L662), [`core/dr-film/src/bake.rs:689`](../../core/dr-film/src/bake.rs#L689), [`core/dr-film/src/bake.rs:710`](../../core/dr-film/src/bake.rs#L710), [`core/dr-film/src/bake.rs:747`](../../core/dr-film/src/bake.rs#L747), [`core/dr-film/src/bake.rs:95`](../../core/dr-film/src/bake.rs#L95), [`core/dr-film/src/boolean_grain.rs:1`](../../core/dr-film/src/boolean_grain.rs#L1), [`core/dr-film/src/boolean_grain.rs:78`](../../core/dr-film/src/boolean_grain.rs#L78), [`core/dr-film/src/grain.rs:140`](../../core/dr-film/src/grain.rs#L140), [`core/dr-film/src/grain.rs:1`](../../core/dr-film/src/grain.rs#L1), [`core/dr-film/src/grain.rs:302`](../../core/dr-film/src/grain.rs#L302), [`core/dr-film/src/grain.rs:79`](../../core/dr-film/src/grain.rs#L79), [`core/dr-film/src/lib.rs:160`](../../core/dr-film/src/lib.rs#L160), [`core/dr-film/src/lib.rs:1`](../../core/dr-film/src/lib.rs#L1), [`core/dr-film/src/profile.rs:100`](../../core/dr-film/src/profile.rs#L100), [`core/dr-film/src/profile.rs:142`](../../core/dr-film/src/profile.rs#L142), [`core/dr-film/src/profile.rs:182`](../../core/dr-film/src/profile.rs#L182), [`core/dr-film/src/profile.rs:259`](../../core/dr-film/src/profile.rs#L259), [`core/dr-film/src/profile.rs:502`](../../core/dr-film/src/profile.rs#L502), [`core/dr-film/src/profile.rs:73`](../../core/dr-film/src/profile.rs#L73), [`core/dr-gpu/src/adjust.rs:152`](../../core/dr-gpu/src/adjust.rs#L152), [`core/dr-gpu/src/adjust.rs:422`](../../core/dr-gpu/src/adjust.rs#L422), [`core/dr-gpu/src/adjust.rs:632`](../../core/dr-gpu/src/adjust.rs#L632), [`core/dr-gpu/src/adjust.rs:67`](../../core/dr-gpu/src/adjust.rs#L67), [`core/dr-gpu/src/adjust.rs:765`](../../core/dr-gpu/src/adjust.rs#L765), [`core/dr-gpu/tests/film_sim.rs:1`](../../core/dr-gpu/tests/film_sim.rs#L1), [`core/dr-gpu/tests/film_sim.rs:215`](../../core/dr-gpu/tests/film_sim.rs#L215), [`core/dr-gpu/tests/film_sim.rs:349`](../../core/dr-gpu/tests/film_sim.rs#L349), [`core/dr-gpu/tests/film_sim.rs:388`](../../core/dr-gpu/tests/film_sim.rs#L388), [`core/dr-gpu/tests/film_sim.rs:417`](../../core/dr-gpu/tests/film_sim.rs#L417), [`core/dr-gpu/tests/film_sim.rs:457`](../../core/dr-gpu/tests/film_sim.rs#L457), [`core/dr-pipeline/src/graph.rs:110`](../../core/dr-pipeline/src/graph.rs#L110), [`core/dr-pipeline/src/graph.rs:187`](../../core/dr-pipeline/src/graph.rs#L187), [`core/dr-pipeline/src/graph.rs:695`](../../core/dr-pipeline/src/graph.rs#L695), [`core/dr-pipeline/src/mask.rs:2452`](../../core/dr-pipeline/src/mask.rs#L2452), [`core/dr-pipeline/src/mask.rs:2485`](../../core/dr-pipeline/src/mask.rs#L2485), [`core/dr-pipeline/src/operation.rs:1086`](../../core/dr-pipeline/src/operation.rs#L1086), [`core/dr-pipeline/src/operation.rs:1436`](../../core/dr-pipeline/src/operation.rs#L1436), [`core/dr-pipeline/src/operation.rs:1670`](../../core/dr-pipeline/src/operation.rs#L1670), [`core/dr-pipeline/src/operation.rs:1698`](../../core/dr-pipeline/src/operation.rs#L1698), [`core/dr-pipeline/src/operation.rs:1750`](../../core/dr-pipeline/src/operation.rs#L1750), [`core/dr-pipeline/src/operation.rs:2377`](../../core/dr-pipeline/src/operation.rs#L2377), [`core/dr-pipeline/src/operation.rs:309`](../../core/dr-pipeline/src/operation.rs#L309), [`core/dr-pipeline/src/operation.rs:323`](../../core/dr-pipeline/src/operation.rs#L323), [`core/dr-pipeline/src/operation.rs:334`](../../core/dr-pipeline/src/operation.rs#L334), [`core/dr-pipeline/src/operation.rs:349`](../../core/dr-pipeline/src/operation.rs#L349), [`core/dr-pipeline/src/ops/film_sim.rs:129`](../../core/dr-pipeline/src/ops/film_sim.rs#L129), [`core/dr-pipeline/src/ops/film_sim.rs:134`](../../core/dr-pipeline/src/ops/film_sim.rs#L134), [`core/dr-pipeline/src/ops/film_sim.rs:186`](../../core/dr-pipeline/src/ops/film_sim.rs#L186), [`core/dr-pipeline/src/ops/film_sim.rs:1`](../../core/dr-pipeline/src/ops/film_sim.rs#L1), [`core/dr-pipeline/src/ops/film_sim.rs:233`](../../core/dr-pipeline/src/ops/film_sim.rs#L233), [`core/dr-pipeline/src/ops/film_sim.rs:315`](../../core/dr-pipeline/src/ops/film_sim.rs#L315), [`core/dr-pipeline/src/ops/film_sim.rs:329`](../../core/dr-pipeline/src/ops/film_sim.rs#L329), [`core/dr-pipeline/src/ops/film_sim.rs:438`](../../core/dr-pipeline/src/ops/film_sim.rs#L438), [`core/dr-pipeline/src/ops/film_sim.rs:48`](../../core/dr-pipeline/src/ops/film_sim.rs#L48), [`core/dr-pipeline/src/ops/film_sim.rs:736`](../../core/dr-pipeline/src/ops/film_sim.rs#L736), [`core/dr-pipeline/src/preset.rs:1343`](../../core/dr-pipeline/src/preset.rs#L1343), [`core/dr-pipeline/src/preset.rs:1353`](../../core/dr-pipeline/src/preset.rs#L1353), [`core/dr-pipeline/src/preset.rs:1362`](../../core/dr-pipeline/src/preset.rs#L1362), [`core/dr-pipeline/src/preset.rs:1378`](../../core/dr-pipeline/src/preset.rs#L1378), [`core/dr-pipeline/src/preset.rs:1390`](../../core/dr-pipeline/src/preset.rs#L1390), [`core/dr-pipeline/src/preset.rs:1406`](../../core/dr-pipeline/src/preset.rs#L1406), [`core/dr-pipeline/src/preset.rs:1670`](../../core/dr-pipeline/src/preset.rs#L1670), [`core/dr-pipeline/src/preset.rs:1685`](../../core/dr-pipeline/src/preset.rs#L1685), [`core/dr-pipeline/src/preset.rs:248`](../../core/dr-pipeline/src/preset.rs#L248), [`core/dr-pipeline/src/preset.rs:739`](../../core/dr-pipeline/src/preset.rs#L739), [`core/dr-pipeline/src/preset.rs:828`](../../core/dr-pipeline/src/preset.rs#L828), [`core/dr-pipeline/src/sidecar.rs:1077`](../../core/dr-pipeline/src/sidecar.rs#L1077), [`core/dr-pipeline/src/sidecar.rs:133`](../../core/dr-pipeline/src/sidecar.rs#L133), [`core/dr-pipeline/src/sidecar.rs:217`](../../core/dr-pipeline/src/sidecar.rs#L217), [`core/dr-pipeline/src/sidecar.rs:2724`](../../core/dr-pipeline/src/sidecar.rs#L2724), [`core/dr-pipeline/src/sidecar.rs:2800`](../../core/dr-pipeline/src/sidecar.rs#L2800), [`core/dr-pipeline/src/sidecar.rs:595`](../../core/dr-pipeline/src/sidecar.rs#L595), [`core/dr-pipeline/src/sidecar.rs:898`](../../core/dr-pipeline/src/sidecar.rs#L898), [`core/dr-pipeline/src/state.rs:100`](../../core/dr-pipeline/src/state.rs#L100), [`core/dr-pipeline/src/state.rs:115`](../../core/dr-pipeline/src/state.rs#L115), [`core/dr-pipeline/src/state.rs:60`](../../core/dr-pipeline/src/state.rs#L60), [`ui/dr-ui/src/develop/render.rs:1002`](../../ui/dr-ui/src/develop/render.rs#L1002), [`ui/dr-ui/src/develop/render.rs:1053`](../../ui/dr-ui/src/develop/render.rs#L1053), [`ui/dr-ui/src/develop/render.rs:1079`](../../ui/dr-ui/src/develop/render.rs#L1079), [`ui/dr-ui/src/develop/render.rs:1402`](../../ui/dr-ui/src/develop/render.rs#L1402), [`ui/dr-ui/src/develop/render.rs:1442`](../../ui/dr-ui/src/develop/render.rs#L1442), [`ui/dr-ui/src/develop/render.rs:1477`](../../ui/dr-ui/src/develop/render.rs#L1477), [`ui/dr-ui/src/develop/render.rs:830`](../../ui/dr-ui/src/develop/render.rs#L830), [`ui/dr-ui/src/develop/render.rs:847`](../../ui/dr-ui/src/develop/render.rs#L847), [`ui/dr-ui/src/develop/render.rs:859`](../../ui/dr-ui/src/develop/render.rs#L859), [`ui/dr-ui/src/develop/render.rs:897`](../../ui/dr-ui/src/develop/render.rs#L897), [`ui/dr-ui/src/develop/render.rs:934`](../../ui/dr-ui/src/develop/render.rs#L934), [`ui/dr-ui/src/develop/render.rs:945`](../../ui/dr-ui/src/develop/render.rs#L945), [`ui/dr-ui/src/develop/session.rs:760`](../../ui/dr-ui/src/develop/session.rs#L760), [`ui/dr-ui/src/develop/session.rs:780`](../../ui/dr-ui/src/develop/session.rs#L780), [`ui/dr-ui/src/develop/tabs.rs:80`](../../ui/dr-ui/src/develop/tabs.rs#L80), [`ui/dr-ui/src/develop_ui.rs:534`](../../ui/dr-ui/src/develop_ui.rs#L534), [`ui/dr-ui/src/lib.rs:916`](../../ui/dr-ui/src/lib.rs#L916), [`ui/dr-ui/src/lib.rs:981`](../../ui/dr-ui/src/lib.rs#L981), [`ui/dr-ui/src/library/sidecar.rs:325`](../../ui/dr-ui/src/library/sidecar.rs#L325), [`ui/dr-ui/src/library/sidecar.rs:50`](../../ui/dr-ui/src/library/sidecar.rs#L50), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:602`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L602), [`ui/dr-ui/src/presets.rs:1933`](../../ui/dr-ui/src/presets.rs#L1933), [`ui/dr-ui/src/presets.rs:422`](../../ui/dr-ui/src/presets.rs#L422), [`ui/dr-ui/tests/film_list_reaches_every_stock.rs:1`](../../ui/dr-ui/tests/film_list_reaches_every_stock.rs#L1), [`ui/dr-ui/ui/adjust.slint:1071`](../../ui/dr-ui/ui/adjust.slint#L1071), [`ui/dr-ui/ui/adjust.slint:1081`](../../ui/dr-ui/ui/adjust.slint#L1081), [`ui/dr-ui/ui/adjust.slint:1298`](../../ui/dr-ui/ui/adjust.slint#L1298) | -| FR-DEV-3g | [`core/dr-decode/src/lib.rs:553`](../../core/dr-decode/src/lib.rs#L553), [`core/dr-decode/src/profile.rs:743`](../../core/dr-decode/src/profile.rs#L743), [`core/dr-denoise/src/lib.rs:1`](../../core/dr-denoise/src/lib.rs#L1), [`core/dr-denoise/src/lib.rs:30`](../../core/dr-denoise/src/lib.rs#L30), [`core/dr-denoise/src/noise.rs:1`](../../core/dr-denoise/src/noise.rs#L1), [`core/dr-denoise/src/onnx.rs:1`](../../core/dr-denoise/src/onnx.rs#L1), [`core/dr-denoise/src/repair.rs:1`](../../core/dr-denoise/src/repair.rs#L1), [`core/dr-denoise/src/tile.rs:1`](../../core/dr-denoise/src/tile.rs#L1), [`core/dr-gpu/src/demosaic.rs:1063`](../../core/dr-gpu/src/demosaic.rs#L1063), [`core/dr-gpu/src/demosaic.rs:349`](../../core/dr-gpu/src/demosaic.rs#L349), [`core/dr-gpu/src/grain.rs:1`](../../core/dr-gpu/src/grain.rs#L1), [`core/dr-gpu/tests/grain.rs:1`](../../core/dr-gpu/tests/grain.rs#L1), [`core/dr-pipeline/src/graph.rs:173`](../../core/dr-pipeline/src/graph.rs#L173), [`core/dr-pipeline/src/graph.rs:2146`](../../core/dr-pipeline/src/graph.rs#L2146), [`core/dr-pipeline/src/graph.rs:2175`](../../core/dr-pipeline/src/graph.rs#L2175), [`core/dr-pipeline/src/graph.rs:2198`](../../core/dr-pipeline/src/graph.rs#L2198), [`core/dr-pipeline/src/graph.rs:417`](../../core/dr-pipeline/src/graph.rs#L417), [`core/dr-pipeline/src/graph.rs:423`](../../core/dr-pipeline/src/graph.rs#L423), [`core/dr-pipeline/src/graph.rs:431`](../../core/dr-pipeline/src/graph.rs#L431), [`core/dr-pipeline/src/graph.rs:437`](../../core/dr-pipeline/src/graph.rs#L437), [`core/dr-pipeline/src/graph.rs:625`](../../core/dr-pipeline/src/graph.rs#L625), [`core/dr-pipeline/src/learned_denoise.rs:1`](../../core/dr-pipeline/src/learned_denoise.rs#L1), [`core/dr-pipeline/src/learned_denoise.rs:20`](../../core/dr-pipeline/src/learned_denoise.rs#L20), [`core/dr-pipeline/src/learned_denoise.rs:27`](../../core/dr-pipeline/src/learned_denoise.rs#L27), [`core/dr-pipeline/src/learned_denoise.rs:36`](../../core/dr-pipeline/src/learned_denoise.rs#L36), [`ui/dr-ui/src/activity.rs:86`](../../ui/dr-ui/src/activity.rs#L86), [`ui/dr-ui/src/develop/denoise.rs:1`](../../ui/dr-ui/src/develop/denoise.rs#L1), [`ui/dr-ui/src/develop/denoise.rs:328`](../../ui/dr-ui/src/develop/denoise.rs#L328), [`ui/dr-ui/src/develop/denoise.rs:99`](../../ui/dr-ui/src/develop/denoise.rs#L99), [`ui/dr-ui/src/develop/denoise_cache.rs:1`](../../ui/dr-ui/src/develop/denoise_cache.rs#L1), [`ui/dr-ui/src/develop/render.rs:238`](../../ui/dr-ui/src/develop/render.rs#L238), [`ui/dr-ui/src/develop/render.rs:712`](../../ui/dr-ui/src/develop/render.rs#L712), [`ui/dr-ui/src/develop/session.rs:126`](../../ui/dr-ui/src/develop/session.rs#L126), [`ui/dr-ui/src/develop/session.rs:389`](../../ui/dr-ui/src/develop/session.rs#L389), [`ui/dr-ui/src/develop_ui.rs:139`](../../ui/dr-ui/src/develop_ui.rs#L139), [`ui/dr-ui/src/lib.rs:327`](../../ui/dr-ui/src/lib.rs#L327), [`ui/dr-ui/src/library/paths.rs:392`](../../ui/dr-ui/src/library/paths.rs#L392), [`ui/dr-ui/src/library/paths.rs:407`](../../ui/dr-ui/src/library/paths.rs#L407) | +| FR-DEV-3g | [`core/dr-decode/src/lib.rs:553`](../../core/dr-decode/src/lib.rs#L553), [`core/dr-decode/src/profile.rs:743`](../../core/dr-decode/src/profile.rs#L743), [`core/dr-denoise/src/lib.rs:1`](../../core/dr-denoise/src/lib.rs#L1), [`core/dr-denoise/src/lib.rs:30`](../../core/dr-denoise/src/lib.rs#L30), [`core/dr-denoise/src/noise.rs:1`](../../core/dr-denoise/src/noise.rs#L1), [`core/dr-denoise/src/onnx.rs:1`](../../core/dr-denoise/src/onnx.rs#L1), [`core/dr-denoise/src/repair.rs:1`](../../core/dr-denoise/src/repair.rs#L1), [`core/dr-denoise/src/tile.rs:1`](../../core/dr-denoise/src/tile.rs#L1), [`core/dr-gpu/src/demosaic.rs:1063`](../../core/dr-gpu/src/demosaic.rs#L1063), [`core/dr-gpu/src/demosaic.rs:349`](../../core/dr-gpu/src/demosaic.rs#L349), [`core/dr-gpu/src/grain.rs:1`](../../core/dr-gpu/src/grain.rs#L1), [`core/dr-gpu/tests/grain.rs:1`](../../core/dr-gpu/tests/grain.rs#L1), [`core/dr-pipeline/src/graph.rs:173`](../../core/dr-pipeline/src/graph.rs#L173), [`core/dr-pipeline/src/graph.rs:2146`](../../core/dr-pipeline/src/graph.rs#L2146), [`core/dr-pipeline/src/graph.rs:2175`](../../core/dr-pipeline/src/graph.rs#L2175), [`core/dr-pipeline/src/graph.rs:2198`](../../core/dr-pipeline/src/graph.rs#L2198), [`core/dr-pipeline/src/graph.rs:417`](../../core/dr-pipeline/src/graph.rs#L417), [`core/dr-pipeline/src/graph.rs:423`](../../core/dr-pipeline/src/graph.rs#L423), [`core/dr-pipeline/src/graph.rs:431`](../../core/dr-pipeline/src/graph.rs#L431), [`core/dr-pipeline/src/graph.rs:437`](../../core/dr-pipeline/src/graph.rs#L437), [`core/dr-pipeline/src/graph.rs:625`](../../core/dr-pipeline/src/graph.rs#L625), [`core/dr-pipeline/src/learned_denoise.rs:1`](../../core/dr-pipeline/src/learned_denoise.rs#L1), [`core/dr-pipeline/src/learned_denoise.rs:20`](../../core/dr-pipeline/src/learned_denoise.rs#L20), [`core/dr-pipeline/src/learned_denoise.rs:27`](../../core/dr-pipeline/src/learned_denoise.rs#L27), [`core/dr-pipeline/src/learned_denoise.rs:36`](../../core/dr-pipeline/src/learned_denoise.rs#L36), [`ui/dr-ui/src/activity.rs:86`](../../ui/dr-ui/src/activity.rs#L86), [`ui/dr-ui/src/develop/denoise.rs:1`](../../ui/dr-ui/src/develop/denoise.rs#L1), [`ui/dr-ui/src/develop/denoise.rs:328`](../../ui/dr-ui/src/develop/denoise.rs#L328), [`ui/dr-ui/src/develop/denoise.rs:99`](../../ui/dr-ui/src/develop/denoise.rs#L99), [`ui/dr-ui/src/develop/denoise_cache.rs:1`](../../ui/dr-ui/src/develop/denoise_cache.rs#L1), [`ui/dr-ui/src/develop/render.rs:238`](../../ui/dr-ui/src/develop/render.rs#L238), [`ui/dr-ui/src/develop/render.rs:712`](../../ui/dr-ui/src/develop/render.rs#L712), [`ui/dr-ui/src/develop/session.rs:126`](../../ui/dr-ui/src/develop/session.rs#L126), [`ui/dr-ui/src/develop/session.rs:389`](../../ui/dr-ui/src/develop/session.rs#L389), [`ui/dr-ui/src/develop_ui.rs:139`](../../ui/dr-ui/src/develop_ui.rs#L139), [`ui/dr-ui/src/lib.rs:327`](../../ui/dr-ui/src/lib.rs#L327), [`ui/dr-ui/src/library/paths.rs:392`](../../ui/dr-ui/src/library/paths.rs#L392), [`ui/dr-ui/src/library/paths.rs:406`](../../ui/dr-ui/src/library/paths.rs#L406) | | FR-DEV-3h | [`core/dr-decode/src/lib.rs:451`](../../core/dr-decode/src/lib.rs#L451), [`core/dr-decode/src/preview.rs:29`](../../core/dr-decode/src/preview.rs#L29), [`core/dr-pipeline/src/framing.rs:1492`](../../core/dr-pipeline/src/framing.rs#L1492), [`core/dr-pipeline/src/framing.rs:499`](../../core/dr-pipeline/src/framing.rs#L499), [`core/dr-pipeline/src/framing.rs:717`](../../core/dr-pipeline/src/framing.rs#L717), [`core/dr-types/src/lib.rs:342`](../../core/dr-types/src/lib.rs#L342), [`core/dr-types/src/lib.rs:450`](../../core/dr-types/src/lib.rs#L450), [`core/dr-types/src/lib.rs:462`](../../core/dr-types/src/lib.rs#L462), [`core/dr-types/src/lib.rs:478`](../../core/dr-types/src/lib.rs#L478), [`ui/dr-ui/src/develop/masks.rs:280`](../../ui/dr-ui/src/develop/masks.rs#L280), [`ui/dr-ui/src/develop/segmentation.rs:114`](../../ui/dr-ui/src/develop/segmentation.rs#L114), [`ui/dr-ui/src/segmentation.rs:499`](../../ui/dr-ui/src/segmentation.rs#L499) | | FR-DEV-3i | [`core/dr-pipeline/src/mask.rs:558`](../../core/dr-pipeline/src/mask.rs#L558), [`core/dr-segment/src/lib.rs:1`](../../core/dr-segment/src/lib.rs#L1), [`ui/dr-ui/src/segmentation.rs:1`](../../ui/dr-ui/src/segmentation.rs#L1) | | FR-DEV-3j | [`core/dr-gpu/src/adjust.rs:1301`](../../core/dr-gpu/src/adjust.rs#L1301), [`core/dr-gpu/src/adjust.rs:1539`](../../core/dr-gpu/src/adjust.rs#L1539), [`core/dr-gpu/src/adjust.rs:3396`](../../core/dr-gpu/src/adjust.rs#L3396), [`core/dr-gpu/tests/camera_profile.rs:209`](../../core/dr-gpu/tests/camera_profile.rs#L209), [`core/dr-gpu/tests/scene_referred.rs:145`](../../core/dr-gpu/tests/scene_referred.rs#L145), [`core/dr-gpu/tests/scene_referred.rs:1`](../../core/dr-gpu/tests/scene_referred.rs#L1), [`core/dr-gpu/tests/view_transform.rs:114`](../../core/dr-gpu/tests/view_transform.rs#L114), [`core/dr-gpu/tests/view_transform.rs:137`](../../core/dr-gpu/tests/view_transform.rs#L137), [`core/dr-gpu/tests/view_transform.rs:163`](../../core/dr-gpu/tests/view_transform.rs#L163), [`core/dr-gpu/tests/view_transform.rs:1`](../../core/dr-gpu/tests/view_transform.rs#L1), [`core/dr-gpu/tests/view_transform.rs:201`](../../core/dr-gpu/tests/view_transform.rs#L201), [`core/dr-gpu/tests/view_transform.rs:63`](../../core/dr-gpu/tests/view_transform.rs#L63), [`core/dr-pipeline/src/camera_raw.rs:1`](../../core/dr-pipeline/src/camera_raw.rs#L1), [`core/dr-pipeline/src/camera_raw.rs:56`](../../core/dr-pipeline/src/camera_raw.rs#L56), [`core/dr-pipeline/src/operation.rs:1414`](../../core/dr-pipeline/src/operation.rs#L1414), [`core/dr-pipeline/src/operation.rs:2377`](../../core/dr-pipeline/src/operation.rs#L2377), [`core/dr-pipeline/src/operation.rs:2493`](../../core/dr-pipeline/src/operation.rs#L2493), [`core/dr-pipeline/src/operation.rs:2510`](../../core/dr-pipeline/src/operation.rs#L2510), [`core/dr-pipeline/src/operation.rs:2700`](../../core/dr-pipeline/src/operation.rs#L2700), [`core/dr-pipeline/src/operation.rs:2738`](../../core/dr-pipeline/src/operation.rs#L2738), [`core/dr-pipeline/src/operation.rs:580`](../../core/dr-pipeline/src/operation.rs#L580), [`core/dr-pipeline/src/operation.rs:880`](../../core/dr-pipeline/src/operation.rs#L880), [`core/dr-pipeline/src/operation.rs:930`](../../core/dr-pipeline/src/operation.rs#L930), [`core/dr-pipeline/src/ops/camera_profile.rs:393`](../../core/dr-pipeline/src/ops/camera_profile.rs#L393), [`core/dr-pipeline/src/ops/film_sim.rs:315`](../../core/dr-pipeline/src/ops/film_sim.rs#L315), [`core/dr-pipeline/src/ops/view_transform.rs:1`](../../core/dr-pipeline/src/ops/view_transform.rs#L1), [`core/dr-pipeline/src/ops/view_transform.rs:224`](../../core/dr-pipeline/src/ops/view_transform.rs#L224), [`core/dr-pipeline/src/ops/view_transform.rs:36`](../../core/dr-pipeline/src/ops/view_transform.rs#L36), [`core/dr-pipeline/src/view.rs:195`](../../core/dr-pipeline/src/view.rs#L195), [`core/dr-pipeline/src/view.rs:1`](../../core/dr-pipeline/src/view.rs#L1), [`core/dr-pipeline/src/view.rs:208`](../../core/dr-pipeline/src/view.rs#L208), [`core/dr-pipeline/src/view.rs:222`](../../core/dr-pipeline/src/view.rs#L222), [`core/dr-pipeline/src/view.rs:238`](../../core/dr-pipeline/src/view.rs#L238), [`core/dr-pipeline/src/view.rs:254`](../../core/dr-pipeline/src/view.rs#L254), [`core/dr-pipeline/src/view.rs:265`](../../core/dr-pipeline/src/view.rs#L265), [`core/dr-types/src/tone.rs:1`](../../core/dr-types/src/tone.rs#L1) | | FR-DEV-4 | [`core/dr-gpu/src/adjust.rs:1107`](../../core/dr-gpu/src/adjust.rs#L1107), [`core/dr-gpu/src/lib.rs:370`](../../core/dr-gpu/src/lib.rs#L370), [`ui/dr-ui/ui/crop.slint:1`](../../ui/dr-ui/ui/crop.slint#L1) | -| FR-DEV-5 | [`core/dr-pipeline/src/graph.rs:1623`](../../core/dr-pipeline/src/graph.rs#L1623), [`core/dr-pipeline/src/graph.rs:716`](../../core/dr-pipeline/src/graph.rs#L716), [`core/dr-pipeline/src/graph.rs:776`](../../core/dr-pipeline/src/graph.rs#L776), [`core/dr-pipeline/src/history.rs:102`](../../core/dr-pipeline/src/history.rs#L102), [`core/dr-pipeline/src/history.rs:110`](../../core/dr-pipeline/src/history.rs#L110), [`core/dr-pipeline/src/history.rs:127`](../../core/dr-pipeline/src/history.rs#L127), [`core/dr-pipeline/src/history.rs:184`](../../core/dr-pipeline/src/history.rs#L184), [`core/dr-pipeline/src/history.rs:1`](../../core/dr-pipeline/src/history.rs#L1), [`core/dr-pipeline/src/history.rs:214`](../../core/dr-pipeline/src/history.rs#L214), [`core/dr-pipeline/src/history.rs:234`](../../core/dr-pipeline/src/history.rs#L234), [`core/dr-pipeline/src/history.rs:293`](../../core/dr-pipeline/src/history.rs#L293), [`core/dr-pipeline/src/history.rs:479`](../../core/dr-pipeline/src/history.rs#L479), [`core/dr-pipeline/src/history.rs:489`](../../core/dr-pipeline/src/history.rs#L489), [`core/dr-pipeline/src/history.rs:499`](../../core/dr-pipeline/src/history.rs#L499), [`core/dr-pipeline/src/history.rs:526`](../../core/dr-pipeline/src/history.rs#L526), [`core/dr-pipeline/src/history.rs:86`](../../core/dr-pipeline/src/history.rs#L86), [`core/dr-pipeline/src/sidecar.rs:1067`](../../core/dr-pipeline/src/sidecar.rs#L1067), [`core/dr-pipeline/src/sidecar.rs:147`](../../core/dr-pipeline/src/sidecar.rs#L147), [`core/dr-pipeline/src/sidecar.rs:2515`](../../core/dr-pipeline/src/sidecar.rs#L2515), [`core/dr-pipeline/src/sidecar.rs:2551`](../../core/dr-pipeline/src/sidecar.rs#L2551), [`core/dr-pipeline/src/sidecar.rs:2563`](../../core/dr-pipeline/src/sidecar.rs#L2563), [`core/dr-pipeline/src/sidecar.rs:318`](../../core/dr-pipeline/src/sidecar.rs#L318), [`core/dr-pipeline/src/sidecar.rs:713`](../../core/dr-pipeline/src/sidecar.rs#L713), [`core/dr-pipeline/src/sidecar.rs:729`](../../core/dr-pipeline/src/sidecar.rs#L729), [`core/dr-pipeline/src/sidecar.rs:876`](../../core/dr-pipeline/src/sidecar.rs#L876), [`core/dr-pipeline/src/state.rs:1`](../../core/dr-pipeline/src/state.rs#L1), [`core/dr-pipeline/src/state.rs:75`](../../core/dr-pipeline/src/state.rs#L75), [`ui/dr-ui/src/develop/framing.rs:945`](../../ui/dr-ui/src/develop/framing.rs#L945), [`ui/dr-ui/src/develop/history.rs:11`](../../ui/dr-ui/src/develop/history.rs#L11), [`ui/dr-ui/src/develop/history.rs:152`](../../ui/dr-ui/src/develop/history.rs#L152), [`ui/dr-ui/src/develop/history.rs:165`](../../ui/dr-ui/src/develop/history.rs#L165), [`ui/dr-ui/src/develop/history.rs:178`](../../ui/dr-ui/src/develop/history.rs#L178), [`ui/dr-ui/src/develop/history.rs:190`](../../ui/dr-ui/src/develop/history.rs#L190), [`ui/dr-ui/src/develop/history.rs:206`](../../ui/dr-ui/src/develop/history.rs#L206), [`ui/dr-ui/src/develop/history.rs:238`](../../ui/dr-ui/src/develop/history.rs#L238), [`ui/dr-ui/src/develop/history.rs:242`](../../ui/dr-ui/src/develop/history.rs#L242), [`ui/dr-ui/src/develop/history.rs:261`](../../ui/dr-ui/src/develop/history.rs#L261), [`ui/dr-ui/src/develop/history.rs:277`](../../ui/dr-ui/src/develop/history.rs#L277), [`ui/dr-ui/src/develop/history.rs:299`](../../ui/dr-ui/src/develop/history.rs#L299), [`ui/dr-ui/src/develop/history.rs:29`](../../ui/dr-ui/src/develop/history.rs#L29), [`ui/dr-ui/src/develop/history.rs:359`](../../ui/dr-ui/src/develop/history.rs#L359), [`ui/dr-ui/src/develop/history.rs:68`](../../ui/dr-ui/src/develop/history.rs#L68), [`ui/dr-ui/src/develop/history.rs:82`](../../ui/dr-ui/src/develop/history.rs#L82), [`ui/dr-ui/src/develop/history.rs:93`](../../ui/dr-ui/src/develop/history.rs#L93), [`ui/dr-ui/src/develop/render.rs:1079`](../../ui/dr-ui/src/develop/render.rs#L1079), [`ui/dr-ui/src/develop/render.rs:1115`](../../ui/dr-ui/src/develop/render.rs#L1115), [`ui/dr-ui/src/develop/render.rs:859`](../../ui/dr-ui/src/develop/render.rs#L859), [`ui/dr-ui/src/develop/session.rs:100`](../../ui/dr-ui/src/develop/session.rs#L100), [`ui/dr-ui/src/develop/session.rs:91`](../../ui/dr-ui/src/develop/session.rs#L91), [`ui/dr-ui/src/develop/white_balance.rs:11`](../../ui/dr-ui/src/develop/white_balance.rs#L11), [`ui/dr-ui/src/develop/white_balance.rs:162`](../../ui/dr-ui/src/develop/white_balance.rs#L162), [`ui/dr-ui/src/develop_ui.rs:852`](../../ui/dr-ui/src/develop_ui.rs#L852), [`ui/dr-ui/src/develop_ui.rs:872`](../../ui/dr-ui/src/develop_ui.rs#L872), [`ui/dr-ui/src/labels.rs:12`](../../ui/dr-ui/src/labels.rs#L12), [`ui/dr-ui/src/labels.rs:318`](../../ui/dr-ui/src/labels.rs#L318), [`ui/dr-ui/src/labels.rs:34`](../../ui/dr-ui/src/labels.rs#L34), [`ui/dr-ui/src/lib.rs:2205`](../../ui/dr-ui/src/lib.rs#L2205), [`ui/dr-ui/src/lib.rs:2210`](../../ui/dr-ui/src/lib.rs#L2210), [`ui/dr-ui/src/lib.rs:2242`](../../ui/dr-ui/src/lib.rs#L2242), [`ui/dr-ui/src/lib.rs:2251`](../../ui/dr-ui/src/lib.rs#L2251), [`ui/dr-ui/src/lib.rs:2268`](../../ui/dr-ui/src/lib.rs#L2268), [`ui/dr-ui/src/library/sidecar.rs:351`](../../ui/dr-ui/src/library/sidecar.rs#L351), [`ui/dr-ui/src/library/sidecar.rs:61`](../../ui/dr-ui/src/library/sidecar.rs#L61), [`ui/dr-ui/src/presets.rs:2155`](../../ui/dr-ui/src/presets.rs#L2155), [`ui/dr-ui/src/presets.rs:373`](../../ui/dr-ui/src/presets.rs#L373), [`ui/dr-ui/src/presets.rs:437`](../../ui/dr-ui/src/presets.rs#L437), [`ui/dr-ui/src/presets.rs:557`](../../ui/dr-ui/src/presets.rs#L557), [`ui/dr-ui/ui/history.slint:192`](../../ui/dr-ui/ui/history.slint#L192), [`ui/dr-ui/ui/history.slint:1`](../../ui/dr-ui/ui/history.slint#L1), [`ui/dr-ui/ui/history.slint:219`](../../ui/dr-ui/ui/history.slint#L219), [`ui/dr-ui/ui/history.slint:304`](../../ui/dr-ui/ui/history.slint#L304), [`ui/dr-ui/ui/history.slint:43`](../../ui/dr-ui/ui/history.slint#L43), [`ui/dr-ui/ui/history.slint:53`](../../ui/dr-ui/ui/history.slint#L53) | +| FR-DEV-5 | [`core/dr-pipeline/src/graph.rs:1623`](../../core/dr-pipeline/src/graph.rs#L1623), [`core/dr-pipeline/src/graph.rs:716`](../../core/dr-pipeline/src/graph.rs#L716), [`core/dr-pipeline/src/graph.rs:776`](../../core/dr-pipeline/src/graph.rs#L776), [`core/dr-pipeline/src/history.rs:102`](../../core/dr-pipeline/src/history.rs#L102), [`core/dr-pipeline/src/history.rs:110`](../../core/dr-pipeline/src/history.rs#L110), [`core/dr-pipeline/src/history.rs:127`](../../core/dr-pipeline/src/history.rs#L127), [`core/dr-pipeline/src/history.rs:184`](../../core/dr-pipeline/src/history.rs#L184), [`core/dr-pipeline/src/history.rs:1`](../../core/dr-pipeline/src/history.rs#L1), [`core/dr-pipeline/src/history.rs:214`](../../core/dr-pipeline/src/history.rs#L214), [`core/dr-pipeline/src/history.rs:234`](../../core/dr-pipeline/src/history.rs#L234), [`core/dr-pipeline/src/history.rs:293`](../../core/dr-pipeline/src/history.rs#L293), [`core/dr-pipeline/src/history.rs:479`](../../core/dr-pipeline/src/history.rs#L479), [`core/dr-pipeline/src/history.rs:489`](../../core/dr-pipeline/src/history.rs#L489), [`core/dr-pipeline/src/history.rs:499`](../../core/dr-pipeline/src/history.rs#L499), [`core/dr-pipeline/src/history.rs:526`](../../core/dr-pipeline/src/history.rs#L526), [`core/dr-pipeline/src/history.rs:86`](../../core/dr-pipeline/src/history.rs#L86), [`core/dr-pipeline/src/sidecar.rs:1067`](../../core/dr-pipeline/src/sidecar.rs#L1067), [`core/dr-pipeline/src/sidecar.rs:147`](../../core/dr-pipeline/src/sidecar.rs#L147), [`core/dr-pipeline/src/sidecar.rs:2515`](../../core/dr-pipeline/src/sidecar.rs#L2515), [`core/dr-pipeline/src/sidecar.rs:2551`](../../core/dr-pipeline/src/sidecar.rs#L2551), [`core/dr-pipeline/src/sidecar.rs:2563`](../../core/dr-pipeline/src/sidecar.rs#L2563), [`core/dr-pipeline/src/sidecar.rs:318`](../../core/dr-pipeline/src/sidecar.rs#L318), [`core/dr-pipeline/src/sidecar.rs:713`](../../core/dr-pipeline/src/sidecar.rs#L713), [`core/dr-pipeline/src/sidecar.rs:729`](../../core/dr-pipeline/src/sidecar.rs#L729), [`core/dr-pipeline/src/sidecar.rs:876`](../../core/dr-pipeline/src/sidecar.rs#L876), [`core/dr-pipeline/src/state.rs:1`](../../core/dr-pipeline/src/state.rs#L1), [`core/dr-pipeline/src/state.rs:75`](../../core/dr-pipeline/src/state.rs#L75), [`ui/dr-ui/src/develop/framing.rs:945`](../../ui/dr-ui/src/develop/framing.rs#L945), [`ui/dr-ui/src/develop/history.rs:11`](../../ui/dr-ui/src/develop/history.rs#L11), [`ui/dr-ui/src/develop/history.rs:152`](../../ui/dr-ui/src/develop/history.rs#L152), [`ui/dr-ui/src/develop/history.rs:165`](../../ui/dr-ui/src/develop/history.rs#L165), [`ui/dr-ui/src/develop/history.rs:178`](../../ui/dr-ui/src/develop/history.rs#L178), [`ui/dr-ui/src/develop/history.rs:190`](../../ui/dr-ui/src/develop/history.rs#L190), [`ui/dr-ui/src/develop/history.rs:206`](../../ui/dr-ui/src/develop/history.rs#L206), [`ui/dr-ui/src/develop/history.rs:238`](../../ui/dr-ui/src/develop/history.rs#L238), [`ui/dr-ui/src/develop/history.rs:242`](../../ui/dr-ui/src/develop/history.rs#L242), [`ui/dr-ui/src/develop/history.rs:261`](../../ui/dr-ui/src/develop/history.rs#L261), [`ui/dr-ui/src/develop/history.rs:277`](../../ui/dr-ui/src/develop/history.rs#L277), [`ui/dr-ui/src/develop/history.rs:299`](../../ui/dr-ui/src/develop/history.rs#L299), [`ui/dr-ui/src/develop/history.rs:29`](../../ui/dr-ui/src/develop/history.rs#L29), [`ui/dr-ui/src/develop/history.rs:359`](../../ui/dr-ui/src/develop/history.rs#L359), [`ui/dr-ui/src/develop/history.rs:68`](../../ui/dr-ui/src/develop/history.rs#L68), [`ui/dr-ui/src/develop/history.rs:82`](../../ui/dr-ui/src/develop/history.rs#L82), [`ui/dr-ui/src/develop/history.rs:93`](../../ui/dr-ui/src/develop/history.rs#L93), [`ui/dr-ui/src/develop/render.rs:1079`](../../ui/dr-ui/src/develop/render.rs#L1079), [`ui/dr-ui/src/develop/render.rs:1115`](../../ui/dr-ui/src/develop/render.rs#L1115), [`ui/dr-ui/src/develop/render.rs:859`](../../ui/dr-ui/src/develop/render.rs#L859), [`ui/dr-ui/src/develop/session.rs:100`](../../ui/dr-ui/src/develop/session.rs#L100), [`ui/dr-ui/src/develop/session.rs:91`](../../ui/dr-ui/src/develop/session.rs#L91), [`ui/dr-ui/src/develop/white_balance.rs:11`](../../ui/dr-ui/src/develop/white_balance.rs#L11), [`ui/dr-ui/src/develop/white_balance.rs:162`](../../ui/dr-ui/src/develop/white_balance.rs#L162), [`ui/dr-ui/src/develop_ui.rs:852`](../../ui/dr-ui/src/develop_ui.rs#L852), [`ui/dr-ui/src/develop_ui.rs:872`](../../ui/dr-ui/src/develop_ui.rs#L872), [`ui/dr-ui/src/labels.rs:12`](../../ui/dr-ui/src/labels.rs#L12), [`ui/dr-ui/src/labels.rs:317`](../../ui/dr-ui/src/labels.rs#L317), [`ui/dr-ui/src/labels.rs:34`](../../ui/dr-ui/src/labels.rs#L34), [`ui/dr-ui/src/lib.rs:2205`](../../ui/dr-ui/src/lib.rs#L2205), [`ui/dr-ui/src/lib.rs:2210`](../../ui/dr-ui/src/lib.rs#L2210), [`ui/dr-ui/src/lib.rs:2242`](../../ui/dr-ui/src/lib.rs#L2242), [`ui/dr-ui/src/lib.rs:2251`](../../ui/dr-ui/src/lib.rs#L2251), [`ui/dr-ui/src/lib.rs:2268`](../../ui/dr-ui/src/lib.rs#L2268), [`ui/dr-ui/src/library/sidecar.rs:351`](../../ui/dr-ui/src/library/sidecar.rs#L351), [`ui/dr-ui/src/library/sidecar.rs:61`](../../ui/dr-ui/src/library/sidecar.rs#L61), [`ui/dr-ui/src/presets.rs:2155`](../../ui/dr-ui/src/presets.rs#L2155), [`ui/dr-ui/src/presets.rs:373`](../../ui/dr-ui/src/presets.rs#L373), [`ui/dr-ui/src/presets.rs:437`](../../ui/dr-ui/src/presets.rs#L437), [`ui/dr-ui/src/presets.rs:557`](../../ui/dr-ui/src/presets.rs#L557), [`ui/dr-ui/ui/history.slint:192`](../../ui/dr-ui/ui/history.slint#L192), [`ui/dr-ui/ui/history.slint:1`](../../ui/dr-ui/ui/history.slint#L1), [`ui/dr-ui/ui/history.slint:219`](../../ui/dr-ui/ui/history.slint#L219), [`ui/dr-ui/ui/history.slint:304`](../../ui/dr-ui/ui/history.slint#L304), [`ui/dr-ui/ui/history.slint:43`](../../ui/dr-ui/ui/history.slint#L43), [`ui/dr-ui/ui/history.slint:53`](../../ui/dr-ui/ui/history.slint#L53) | | FR-DEV-6 | [`core/dr-pipeline/src/bundled.rs:1`](../../core/dr-pipeline/src/bundled.rs#L1), [`core/dr-pipeline/src/preset.rs:1343`](../../core/dr-pipeline/src/preset.rs#L1343), [`core/dr-pipeline/src/preset.rs:1353`](../../core/dr-pipeline/src/preset.rs#L1353), [`core/dr-pipeline/src/preset.rs:1362`](../../core/dr-pipeline/src/preset.rs#L1362), [`core/dr-pipeline/src/preset.rs:1378`](../../core/dr-pipeline/src/preset.rs#L1378), [`core/dr-pipeline/src/preset.rs:1390`](../../core/dr-pipeline/src/preset.rs#L1390), [`core/dr-pipeline/src/preset.rs:1406`](../../core/dr-pipeline/src/preset.rs#L1406), [`core/dr-pipeline/src/preset.rs:1432`](../../core/dr-pipeline/src/preset.rs#L1432), [`core/dr-pipeline/src/preset.rs:1454`](../../core/dr-pipeline/src/preset.rs#L1454), [`core/dr-pipeline/src/preset.rs:1468`](../../core/dr-pipeline/src/preset.rs#L1468), [`core/dr-pipeline/src/preset.rs:1486`](../../core/dr-pipeline/src/preset.rs#L1486), [`core/dr-pipeline/src/preset.rs:1670`](../../core/dr-pipeline/src/preset.rs#L1670), [`core/dr-pipeline/src/preset.rs:1685`](../../core/dr-pipeline/src/preset.rs#L1685), [`core/dr-pipeline/src/preset.rs:1`](../../core/dr-pipeline/src/preset.rs#L1), [`core/dr-pipeline/src/preset.rs:501`](../../core/dr-pipeline/src/preset.rs#L501), [`core/dr-pipeline/src/preset.rs:534`](../../core/dr-pipeline/src/preset.rs#L534), [`core/dr-pipeline/src/preset.rs:678`](../../core/dr-pipeline/src/preset.rs#L678), [`core/dr-preset-xmp/src/lib.rs:148`](../../core/dr-preset-xmp/src/lib.rs#L148), [`core/dr-preset-xmp/src/lib.rs:1`](../../core/dr-preset-xmp/src/lib.rs#L1), [`core/dr-preset-xmp/src/lib.rs:460`](../../core/dr-preset-xmp/src/lib.rs#L460), [`core/dr-preset-xmp/src/lib.rs:671`](../../core/dr-preset-xmp/src/lib.rs#L671), [`core/dr-preset-xmp/src/lib.rs:699`](../../core/dr-preset-xmp/src/lib.rs#L699), [`core/dr-preset-xmp/src/lib.rs:854`](../../core/dr-preset-xmp/src/lib.rs#L854), [`core/dr-types/src/settings.rs:456`](../../core/dr-types/src/settings.rs#L456), [`ui/dr-ui/src/derived_sync.rs:1142`](../../ui/dr-ui/src/derived_sync.rs#L1142), [`ui/dr-ui/src/derived_sync.rs:1160`](../../ui/dr-ui/src/derived_sync.rs#L1160), [`ui/dr-ui/src/derived_sync.rs:2134`](../../ui/dr-ui/src/derived_sync.rs#L2134), [`ui/dr-ui/src/derived_sync.rs:2169`](../../ui/dr-ui/src/derived_sync.rs#L2169), [`ui/dr-ui/src/derived_sync.rs:254`](../../ui/dr-ui/src/derived_sync.rs#L254), [`ui/dr-ui/src/derived_sync.rs:99`](../../ui/dr-ui/src/derived_sync.rs#L99), [`ui/dr-ui/src/develop/session.rs:619`](../../ui/dr-ui/src/develop/session.rs#L619), [`ui/dr-ui/src/develop/session.rs:625`](../../ui/dr-ui/src/develop/session.rs#L625), [`ui/dr-ui/src/develop/session.rs:732`](../../ui/dr-ui/src/develop/session.rs#L732), [`ui/dr-ui/src/develop/session.rs:753`](../../ui/dr-ui/src/develop/session.rs#L753), [`ui/dr-ui/src/develop/session.rs:79`](../../ui/dr-ui/src/develop/session.rs#L79), [`ui/dr-ui/src/develop/session.rs:926`](../../ui/dr-ui/src/develop/session.rs#L926), [`ui/dr-ui/src/develop_ui.rs:247`](../../ui/dr-ui/src/develop_ui.rs#L247), [`ui/dr-ui/src/develop_ui.rs:276`](../../ui/dr-ui/src/develop_ui.rs#L276), [`ui/dr-ui/src/export.rs:1322`](../../ui/dr-ui/src/export.rs#L1322), [`ui/dr-ui/src/labels.rs:30`](../../ui/dr-ui/src/labels.rs#L30), [`ui/dr-ui/src/lib.rs:1335`](../../ui/dr-ui/src/lib.rs#L1335), [`ui/dr-ui/src/lib.rs:2662`](../../ui/dr-ui/src/lib.rs#L2662), [`ui/dr-ui/src/lib.rs:337`](../../ui/dr-ui/src/lib.rs#L337), [`ui/dr-ui/src/lib.rs:880`](../../ui/dr-ui/src/lib.rs#L880), [`ui/dr-ui/src/lib.rs:898`](../../ui/dr-ui/src/lib.rs#L898), [`ui/dr-ui/src/library/paths.rs:42`](../../ui/dr-ui/src/library/paths.rs#L42), [`ui/dr-ui/src/library/sidecar.rs:12`](../../ui/dr-ui/src/library/sidecar.rs#L12), [`ui/dr-ui/src/library/sidecar.rs:40`](../../ui/dr-ui/src/library/sidecar.rs#L40), [`ui/dr-ui/src/library/thumbnails_fetch.rs:414`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L414), [`ui/dr-ui/src/library/thumbnails_fetch.rs:549`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L549), [`ui/dr-ui/src/library_ui/controller.rs:293`](../../ui/dr-ui/src/library_ui/controller.rs#L293), [`ui/dr-ui/src/library_ui/controller.rs:704`](../../ui/dr-ui/src/library_ui/controller.rs#L704), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:495`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L495), [`ui/dr-ui/src/library_ui/sync.rs:246`](../../ui/dr-ui/src/library_ui/sync.rs#L246), [`ui/dr-ui/src/library_ui/window.rs:835`](../../ui/dr-ui/src/library_ui/window.rs#L835), [`ui/dr-ui/src/preset_store.rs:1`](../../ui/dr-ui/src/preset_store.rs#L1), [`ui/dr-ui/src/presets.rs:1036`](../../ui/dr-ui/src/presets.rs#L1036), [`ui/dr-ui/src/presets.rs:1933`](../../ui/dr-ui/src/presets.rs#L1933), [`ui/dr-ui/src/presets.rs:1`](../../ui/dr-ui/src/presets.rs#L1), [`ui/dr-ui/src/presets.rs:2020`](../../ui/dr-ui/src/presets.rs#L2020), [`ui/dr-ui/src/presets.rs:2043`](../../ui/dr-ui/src/presets.rs#L2043), [`ui/dr-ui/src/presets.rs:707`](../../ui/dr-ui/src/presets.rs#L707), [`ui/dr-ui/src/presets.rs:754`](../../ui/dr-ui/src/presets.rs#L754), [`ui/dr-ui/src/presets.rs:783`](../../ui/dr-ui/src/presets.rs#L783), [`ui/dr-ui/ui/adjust.slint:937`](../../ui/dr-ui/ui/adjust.slint#L937), [`ui/dr-ui/ui/adjust.slint:962`](../../ui/dr-ui/ui/adjust.slint#L962), [`ui/dr-ui/ui/app.slint:1094`](../../ui/dr-ui/ui/app.slint#L1094), [`ui/dr-ui/ui/app.slint:1518`](../../ui/dr-ui/ui/app.slint#L1518), [`ui/dr-ui/ui/app.slint:1802`](../../ui/dr-ui/ui/app.slint#L1802), [`ui/dr-ui/ui/app.slint:2550`](../../ui/dr-ui/ui/app.slint#L2550), [`ui/dr-ui/ui/app.slint:3483`](../../ui/dr-ui/ui/app.slint#L3483), [`ui/dr-ui/ui/app.slint:3529`](../../ui/dr-ui/ui/app.slint#L3529), [`ui/dr-ui/ui/app.slint:527`](../../ui/dr-ui/ui/app.slint#L527), [`ui/dr-ui/ui/app.slint:538`](../../ui/dr-ui/ui/app.slint#L538), [`ui/dr-ui/ui/app.slint:698`](../../ui/dr-ui/ui/app.slint#L698), [`ui/dr-ui/ui/develop.slint:257`](../../ui/dr-ui/ui/develop.slint#L257), [`ui/dr-ui/ui/icons.slint:390`](../../ui/dr-ui/ui/icons.slint#L390), [`ui/dr-ui/ui/library.slint:2026`](../../ui/dr-ui/ui/library.slint#L2026), [`ui/dr-ui/ui/library.slint:2032`](../../ui/dr-ui/ui/library.slint#L2032), [`ui/dr-ui/ui/library.slint:3229`](../../ui/dr-ui/ui/library.slint#L3229), [`ui/dr-ui/ui/library.slint:5167`](../../ui/dr-ui/ui/library.slint#L5167), [`ui/dr-ui/ui/library.slint:5185`](../../ui/dr-ui/ui/library.slint#L5185), [`ui/dr-ui/ui/presets.slint:114`](../../ui/dr-ui/ui/presets.slint#L114), [`ui/dr-ui/ui/presets.slint:155`](../../ui/dr-ui/ui/presets.slint#L155), [`ui/dr-ui/ui/presets.slint:203`](../../ui/dr-ui/ui/presets.slint#L203), [`ui/dr-ui/ui/presets.slint:211`](../../ui/dr-ui/ui/presets.slint#L211), [`ui/dr-ui/ui/presets.slint:21`](../../ui/dr-ui/ui/presets.slint#L21), [`ui/dr-ui/ui/presets.slint:33`](../../ui/dr-ui/ui/presets.slint#L33), [`ui/dr-ui/ui/presets.slint:394`](../../ui/dr-ui/ui/presets.slint#L394), [`ui/dr-ui/ui/presets.slint:432`](../../ui/dr-ui/ui/presets.slint#L432), [`ui/dr-ui/ui/presets.slint:467`](../../ui/dr-ui/ui/presets.slint#L467), [`ui/dr-ui/ui/presets.slint:62`](../../ui/dr-ui/ui/presets.slint#L62), [`ui/dr-ui/ui/presets.slint:7`](../../ui/dr-ui/ui/presets.slint#L7), [`ui/dr-ui/ui/settings.slint:126`](../../ui/dr-ui/ui/settings.slint#L126), [`ui/dr-ui/ui/settings.slint:690`](../../ui/dr-ui/ui/settings.slint#L690), [`ui/dr-ui/ui/toolrail.slint:123`](../../ui/dr-ui/ui/toolrail.slint#L123), [`ui/dr-ui/ui/toolrail.slint:453`](../../ui/dr-ui/ui/toolrail.slint#L453) | | FR-DEV-7 | [`core/dr-pipeline/src/history.rs:214`](../../core/dr-pipeline/src/history.rs#L214), [`core/dr-pipeline/src/history.rs:499`](../../core/dr-pipeline/src/history.rs#L499), [`core/dr-pipeline/src/history.rs:526`](../../core/dr-pipeline/src/history.rs#L526), [`ui/dr-ui/src/develop/history.rs:107`](../../ui/dr-ui/src/develop/history.rs#L107), [`ui/dr-ui/src/develop/history.rs:124`](../../ui/dr-ui/src/develop/history.rs#L124), [`ui/dr-ui/src/develop/history.rs:206`](../../ui/dr-ui/src/develop/history.rs#L206), [`ui/dr-ui/src/develop/history.rs:238`](../../ui/dr-ui/src/develop/history.rs#L238), [`ui/dr-ui/src/develop/history.rs:359`](../../ui/dr-ui/src/develop/history.rs#L359), [`ui/dr-ui/src/develop/render.rs:1115`](../../ui/dr-ui/src/develop/render.rs#L1115), [`ui/dr-ui/src/develop/render.rs:586`](../../ui/dr-ui/src/develop/render.rs#L586), [`ui/dr-ui/src/develop/render.rs:627`](../../ui/dr-ui/src/develop/render.rs#L627), [`ui/dr-ui/src/develop/session.rs:116`](../../ui/dr-ui/src/develop/session.rs#L116), [`ui/dr-ui/src/develop_ui.rs:793`](../../ui/dr-ui/src/develop_ui.rs#L793), [`ui/dr-ui/src/develop_ui.rs:852`](../../ui/dr-ui/src/develop_ui.rs#L852), [`ui/dr-ui/src/develop_ui.rs:924`](../../ui/dr-ui/src/develop_ui.rs#L924), [`ui/dr-ui/src/lib.rs:2251`](../../ui/dr-ui/src/lib.rs#L2251), [`ui/dr-ui/src/lib.rs:2337`](../../ui/dr-ui/src/lib.rs#L2337), [`ui/dr-ui/src/lib.rs:2351`](../../ui/dr-ui/src/lib.rs#L2351), [`ui/dr-ui/src/lib.rs:464`](../../ui/dr-ui/src/lib.rs#L464), [`ui/dr-ui/ui/app.slint:224`](../../ui/dr-ui/ui/app.slint#L224), [`ui/dr-ui/ui/app.slint:2417`](../../ui/dr-ui/ui/app.slint#L2417), [`ui/dr-ui/ui/app.slint:2463`](../../ui/dr-ui/ui/app.slint#L2463), [`ui/dr-ui/ui/app.slint:3027`](../../ui/dr-ui/ui/app.slint#L3027), [`ui/dr-ui/ui/history.slint:103`](../../ui/dr-ui/ui/history.slint#L103), [`ui/dr-ui/ui/history.slint:1`](../../ui/dr-ui/ui/history.slint#L1), [`ui/dr-ui/ui/history.slint:227`](../../ui/dr-ui/ui/history.slint#L227), [`ui/dr-ui/ui/history.slint:53`](../../ui/dr-ui/ui/history.slint#L53), [`ui/dr-ui/ui/widgets.slint:72`](../../ui/dr-ui/ui/widgets.slint#L72) | | FR-DEV-8 | [`core/dr-gpu/src/detail.rs:397`](../../core/dr-gpu/src/detail.rs#L397), [`core/dr-gpu/src/detail.rs:609`](../../core/dr-gpu/src/detail.rs#L609), [`core/dr-gpu/tests/detail_instances.rs:1`](../../core/dr-gpu/tests/detail_instances.rs#L1), [`core/dr-gpu/tests/spot_removal.rs:1`](../../core/dr-gpu/tests/spot_removal.rs#L1), [`core/dr-pipeline/src/detail.rs:449`](../../core/dr-pipeline/src/detail.rs#L449), [`core/dr-pipeline/src/detail.rs:491`](../../core/dr-pipeline/src/detail.rs#L491), [`core/dr-pipeline/src/detail.rs:526`](../../core/dr-pipeline/src/detail.rs#L526), [`core/dr-pipeline/src/detail.rs:620`](../../core/dr-pipeline/src/detail.rs#L620), [`core/dr-pipeline/src/graph.rs:122`](../../core/dr-pipeline/src/graph.rs#L122), [`core/dr-pipeline/src/graph.rs:1262`](../../core/dr-pipeline/src/graph.rs#L1262), [`core/dr-pipeline/src/graph.rs:269`](../../core/dr-pipeline/src/graph.rs#L269), [`core/dr-pipeline/src/operation.rs:377`](../../core/dr-pipeline/src/operation.rs#L377), [`core/dr-pipeline/src/operation.rs:869`](../../core/dr-pipeline/src/operation.rs#L869), [`core/dr-pipeline/src/sidecar.rs:1104`](../../core/dr-pipeline/src/sidecar.rs#L1104), [`core/dr-pipeline/src/sidecar.rs:1158`](../../core/dr-pipeline/src/sidecar.rs#L1158), [`core/dr-pipeline/src/sidecar.rs:1188`](../../core/dr-pipeline/src/sidecar.rs#L1188), [`core/dr-pipeline/src/sidecar.rs:233`](../../core/dr-pipeline/src/sidecar.rs#L233), [`core/dr-pipeline/src/sidecar.rs:410`](../../core/dr-pipeline/src/sidecar.rs#L410), [`core/dr-pipeline/src/sidecar.rs:910`](../../core/dr-pipeline/src/sidecar.rs#L910), [`core/dr-pipeline/src/spot.rs:115`](../../core/dr-pipeline/src/spot.rs#L115), [`core/dr-pipeline/src/spot.rs:151`](../../core/dr-pipeline/src/spot.rs#L151), [`core/dr-pipeline/src/spot.rs:1`](../../core/dr-pipeline/src/spot.rs#L1), [`core/dr-pipeline/src/spot.rs:207`](../../core/dr-pipeline/src/spot.rs#L207), [`core/dr-pipeline/src/spot.rs:387`](../../core/dr-pipeline/src/spot.rs#L387), [`core/dr-pipeline/src/spot.rs:472`](../../core/dr-pipeline/src/spot.rs#L472), [`core/dr-pipeline/src/spot.rs:582`](../../core/dr-pipeline/src/spot.rs#L582), [`core/dr-pipeline/src/spot.rs:673`](../../core/dr-pipeline/src/spot.rs#L673), [`core/dr-pipeline/src/state.rs:103`](../../core/dr-pipeline/src/state.rs#L103), [`core/dr-pipeline/tests/spot_sidecar.rs:1`](../../core/dr-pipeline/tests/spot_sidecar.rs#L1), [`core/dr-pipeline/tests/spots.rs:1`](../../core/dr-pipeline/tests/spots.rs#L1), [`ui/dr-ui/src/develop/repairs.rs:114`](../../ui/dr-ui/src/develop/repairs.rs#L114), [`ui/dr-ui/src/develop/repairs.rs:11`](../../ui/dr-ui/src/develop/repairs.rs#L11), [`ui/dr-ui/src/develop/repairs.rs:197`](../../ui/dr-ui/src/develop/repairs.rs#L197), [`ui/dr-ui/src/develop/repairs.rs:211`](../../ui/dr-ui/src/develop/repairs.rs#L211), [`ui/dr-ui/src/develop/repairs.rs:49`](../../ui/dr-ui/src/develop/repairs.rs#L49), [`ui/dr-ui/src/develop/session.rs:244`](../../ui/dr-ui/src/develop/session.rs#L244), [`ui/dr-ui/src/develop_ui.rs:1081`](../../ui/dr-ui/src/develop_ui.rs#L1081), [`ui/dr-ui/src/labels.rs:83`](../../ui/dr-ui/src/labels.rs#L83), [`ui/dr-ui/src/lib.rs:2295`](../../ui/dr-ui/src/lib.rs#L2295), [`ui/dr-ui/src/lib.rs:507`](../../ui/dr-ui/src/lib.rs#L507), [`ui/dr-ui/src/spots_ui.rs:19`](../../ui/dr-ui/src/spots_ui.rs#L19), [`ui/dr-ui/src/spots_ui.rs:1`](../../ui/dr-ui/src/spots_ui.rs#L1), [`ui/dr-ui/src/spots_ui.rs:265`](../../ui/dr-ui/src/spots_ui.rs#L265), [`ui/dr-ui/ui/app.slint:2270`](../../ui/dr-ui/ui/app.slint#L2270), [`ui/dr-ui/ui/app.slint:2513`](../../ui/dr-ui/ui/app.slint#L2513), [`ui/dr-ui/ui/app.slint:3376`](../../ui/dr-ui/ui/app.slint#L3376), [`ui/dr-ui/ui/icons.slint:378`](../../ui/dr-ui/ui/icons.slint#L378), [`ui/dr-ui/ui/session.slint:102`](../../ui/dr-ui/ui/session.slint#L102), [`ui/dr-ui/ui/session.slint:52`](../../ui/dr-ui/ui/session.slint#L52), [`ui/dr-ui/ui/spots.slint:191`](../../ui/dr-ui/ui/spots.slint#L191), [`ui/dr-ui/ui/spots.slint:49`](../../ui/dr-ui/ui/spots.slint#L49), [`ui/dr-ui/ui/spots.slint:6`](../../ui/dr-ui/ui/spots.slint#L6), [`ui/dr-ui/ui/spots.slint:91`](../../ui/dr-ui/ui/spots.slint#L91) | @@ -141,7 +141,7 @@ _None._ | FR-PLAT-AND-3 | [`core/dr-catalog/src/jobs.rs:1`](../../core/dr-catalog/src/jobs.rs#L1), [`core/dr-catalog/src/runner.rs:1`](../../core/dr-catalog/src/runner.rs#L1), [`core/dr-catalog/tests/every_queued_kind_has_a_consumer.rs:1`](../../core/dr-catalog/tests/every_queued_kind_has_a_consumer.rs#L1) | | FR-PLAT-AND-4 | [`core/dr-catalog/src/runner.rs:1`](../../core/dr-catalog/src/runner.rs#L1) | | FR-PLAT-AND-5 | [`apps/darkroom-android/src/lib.rs:166`](../../apps/darkroom-android/src/lib.rs#L166), [`core/dr-gpu/src/adjust.rs:1472`](../../core/dr-gpu/src/adjust.rs#L1472), [`core/dr-gpu/src/detail.rs:161`](../../core/dr-gpu/src/detail.rs#L161), [`core/dr-gpu/src/detail.rs:533`](../../core/dr-gpu/src/detail.rs#L533), [`core/dr-gpu/tests/detail_stage.rs:415`](../../core/dr-gpu/tests/detail_stage.rs#L415), [`ui/dr-ui/src/develop/render.rs:654`](../../ui/dr-ui/src/develop/render.rs#L654), [`ui/dr-ui/src/identity_ui.rs:125`](../../ui/dr-ui/src/identity_ui.rs#L125), [`ui/dr-ui/src/lib.rs:1309`](../../ui/dr-ui/src/lib.rs#L1309), [`ui/dr-ui/src/lib.rs:1745`](../../ui/dr-ui/src/lib.rs#L1745), [`ui/dr-ui/src/memory.rs:163`](../../ui/dr-ui/src/memory.rs#L163), [`ui/dr-ui/src/memory.rs:1`](../../ui/dr-ui/src/memory.rs#L1) | -| FR-PLAT-AND-6 | [`apps/darkroom-android/src/lib.rs:477`](../../apps/darkroom-android/src/lib.rs#L477) | +| FR-PLAT-AND-6 | [`apps/darkroom-android/src/lib.rs:472`](../../apps/darkroom-android/src/lib.rs#L472) | | FR-PLAT-LIN-1 | [`core/dr-types/src/settings.rs:1`](../../core/dr-types/src/settings.rs#L1), [`platform/dr-plat/src/dirs.rs:1`](../../platform/dr-plat/src/dirs.rs#L1), [`platform/dr-plat/src/storage.rs:344`](../../platform/dr-plat/src/storage.rs#L344), [`ui/dr-ui/src/lib.rs:1486`](../../ui/dr-ui/src/lib.rs#L1486), [`ui/dr-ui/src/preset_store.rs:1`](../../ui/dr-ui/src/preset_store.rs#L1), [`ui/dr-ui/src/settings_store.rs:1`](../../ui/dr-ui/src/settings_store.rs#L1) | | FR-PLAT-LIN-2 | [`platform/dr-plat/src/display.rs:1`](../../platform/dr-plat/src/display.rs#L1), [`platform/dr-plat/src/display/wayland.rs:1`](../../platform/dr-plat/src/display/wayland.rs#L1), [`platform/dr-plat/src/display/x11.rs:1`](../../platform/dr-plat/src/display/x11.rs#L1) | | FR-PLAT-WIN-1 | [`platform/dr-plat/src/dirs.rs:1`](../../platform/dr-plat/src/dirs.rs#L1) | diff --git a/models/LICENCE.md b/models/LICENCE.md index fb29745..1dc3d92 100644 --- a/models/LICENCE.md +++ b/models/LICENCE.md @@ -134,10 +134,9 @@ declined, and the InsightFace grant of D13). | File | Source | Trained on | Used by | |---|---|---|---| -| `denoise/mosaic-best-1408.onnx` | trained in the `darkroom-denoise` repository (2026-10-04, run `final`, 30 000 steps, from the experts of runs `m2` and `edges-100`) | 1,701 of the maintainer's own base-ISO raws and 6,000 synthetic scenes the repository draws itself, with the Canon EOS 6D's measured noise added | the learned demosaic and denoise, Best (FR-DEV-3g) | -| `denoise/mosaic-medium-1408.onnx` | distilled from `final` in the same repository (2026-10-04, run `student-m`, 20 000 steps, from `m2`) | the same | Medium | +| `denoise/mosaic-hq-1408.onnx` | trained in the `darkroom-denoise` repository (2026-10-07, run `fb-combo`, 20 000 steps, from `fb-edges2` ← `student-m`), taught by the mixture of experts that was Best until 0.24 (run `final`) at a half share, with 10 % drawn scenes and 25 % crops from the edge-rich parts of the training frames | 1,701 of the maintainer's own base-ISO raws and 6,000 synthetic scenes the repository draws itself, with the Canon EOS 6D's measured noise added | the learned demosaic and denoise, Best (FR-DEV-3g) | | `denoise/mosaic-fast-1408.onnx` | distilled from `final` (2026-10-04, run `student-s`, 30 000 steps, from scratch) | the same | Fast | -| `denoise/mosaic-{best,medium,fast}.onnx` | the three networks above, re-exported with any height and width by `tools/export_whole.py` in the same repository (2026-10-06) from the same checkpoints; identical to the 1408 files at 1408² | the same | the same methods, a whole frame at a time on a GPU (denoise.md §14) | +| `denoise/mosaic-{hq,fast}.onnx` | the two networks above with any height and width, by `tools/export_whole.py` in the same repository from the same checkpoints; identical to the 1408 files at 1408² | the same | the same methods, a whole frame at a time on a GPU (denoise.md §14) | U-Nets of plain 3×3 convolutions, ReLU, strided and transposed convolutions and additive skips — no third-party architecture code or diff --git a/models/denoise/mosaic-best-1408.a16w16.onnx b/models/denoise/mosaic-best-1408.a16w16.onnx deleted file mode 100644 index 100c407..0000000 --- a/models/denoise/mosaic-best-1408.a16w16.onnx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7297ded63857a13490e522d4ea4eef50409a3e881a646795be89f78628319d22 -size 13136074 diff --git a/models/denoise/mosaic-best-1408.onnx b/models/denoise/mosaic-best-1408.onnx deleted file mode 100644 index b8996bd..0000000 --- a/models/denoise/mosaic-best-1408.onnx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aa7fc9666d08fa0232a9f1e9893eb1c1ab0b0cb0ffa57eb5d08c8e32eb6b8f06 -size 25767168 diff --git a/models/denoise/mosaic-best.onnx b/models/denoise/mosaic-best.onnx deleted file mode 100644 index ea5e6f7..0000000 --- a/models/denoise/mosaic-best.onnx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:800bbabf65b1f5a841dc07c2126cfce54a01b4ff1b52d3bed367cae7357c8def -size 25767168 diff --git a/models/denoise/mosaic-hq-1408.a16w16.onnx b/models/denoise/mosaic-hq-1408.a16w16.onnx new file mode 100644 index 0000000..54936fd --- /dev/null +++ b/models/denoise/mosaic-hq-1408.a16w16.onnx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:191364a8834343933561981a6ca5eb68fe7329baead29415213f89b89e3a52c5 +size 6410772 diff --git a/models/denoise/mosaic-hq-1408.onnx b/models/denoise/mosaic-hq-1408.onnx new file mode 100644 index 0000000..07ee08d --- /dev/null +++ b/models/denoise/mosaic-hq-1408.onnx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:111b26e5d37eeb64eafdfe99171081d32377cc8e78f0e7adf227a1402519f78a +size 12623048 diff --git a/models/denoise/mosaic-hq.onnx b/models/denoise/mosaic-hq.onnx new file mode 100644 index 0000000..bc15562 --- /dev/null +++ b/models/denoise/mosaic-hq.onnx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:def123bf69c67d21b3c02282a171772d9e7e5cf6491098f19d41b67ca3c59806 +size 12624224 diff --git a/models/denoise/mosaic-medium-1408.a16w16.onnx b/models/denoise/mosaic-medium-1408.a16w16.onnx deleted file mode 100644 index 9407dfa..0000000 --- a/models/denoise/mosaic-medium-1408.a16w16.onnx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2bec3e762cd04f9c2f33fe06f6f39e6543b4121c642c869ce3216c93d675243f -size 6410772 diff --git a/models/denoise/mosaic-medium-1408.onnx b/models/denoise/mosaic-medium-1408.onnx deleted file mode 100644 index 0d189a7..0000000 --- a/models/denoise/mosaic-medium-1408.onnx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e261f8fcac84854641532b9b70a6ed43b17b5ec2c96c3c6eea223d662dbd0974 -size 12623048 diff --git a/models/denoise/mosaic-medium.onnx b/models/denoise/mosaic-medium.onnx deleted file mode 100644 index 998d5ca..0000000 --- a/models/denoise/mosaic-medium.onnx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4ecb9729565dbf2eb8484b74b97a0a9b12e756f52f4c7a0a726069b47984a72c -size 12622220 diff --git a/packaging/PKGBUILD b/packaging/PKGBUILD index 21298ce..b7ac025 100644 --- a/packaging/PKGBUILD +++ b/packaging/PKGBUILD @@ -135,7 +135,7 @@ package() { # own weights, GPL — models/LICENCE.md), each at the fixed 1408 tile and # with any height and width for a whole frame on a GPU (denoise.md §14). # Same pointer check, same directory. - for _net in fast medium best; do + for _net in fast hq; do for _file in "mosaic-${_net}-1408.onnx" "mosaic-${_net}.onnx"; do _src="models/denoise/${_file}" if [[ "$(stat -c%s "${_src}")" -lt 100000 ]]; then diff --git a/tools/manual/scenes.py b/tools/manual/scenes.py index 5fdf58f..7ec6031 100755 --- a/tools/manual/scenes.py +++ b/tools/manual/scenes.py @@ -844,7 +844,7 @@ def develop_zoom(): # The methods in the order the scene visits them: `Best` is what the # photograph opens with, then each smaller network, then none. -DENOISE_METHODS = ['Best', 'Medium', 'Fast', 'Bilinear'] +DENOISE_METHODS = ['Best', 'Fast', 'Bilinear'] DENOISE_CLOSE_UP = 560 # pixels of canvas, square, around the lamp at 1:1 diff --git a/tools/quantise-models.py b/tools/quantise-models.py index f33cf9a..38960a2 100644 --- a/tools/quantise-models.py +++ b/tools/quantise-models.py @@ -42,10 +42,8 @@ TABLE = { "xfeat-1024": dict(dir="keypoints", form="int8", feed="xfeat", rewrites=["unfold", "resize"]), "xfeat-768": dict(dir="keypoints", form="int8", feed="xfeat", rewrites=["unfold", "resize"]), "mosaic-fast-1408": dict(dir="denoise", form="a16w16", feed=None, rewrites=["bayer"]), - "mosaic-medium-1408": dict(dir="denoise", form="a16w16", feed=None, rewrites=["bayer"]), - # Exported with its packs as SpaceToDepth already; the rewrite finds - # nothing to do. - "mosaic-best-1408": dict(dir="denoise", form="a16w16", feed=None, rewrites=["bayer"]), + # Best since 0.24: one network, exported as Fast is, so the same rewrite. + "mosaic-hq-1408": dict(dir="denoise", form="a16w16", feed=None, rewrites=["bayer"]), } diff --git a/tools/quantise-models.sh b/tools/quantise-models.sh index f5e2c68..72ba571 100755 --- a/tools/quantise-models.sh +++ b/tools/quantise-models.sh @@ -2,7 +2,7 @@ # Produce the Hexagon's form of each model (docs/dev/inference.md §1.5, §5). # # ./tools/quantise-models.sh PHOTO_DIR [MODEL ...] -# ./tools/quantise-models.sh --ranges RANGES.json mosaic-medium-1408 +# ./tools/quantise-models.sh --ranges RANGES.json mosaic-hq-1408 # # Writes `.
.onnx` beside each canonical file under models/: a QDQ # graph from QNN's own quantisation config, per-channel weights, in the form diff --git a/ui/dr-ui/src/inference.rs b/ui/dr-ui/src/inference.rs index 0ab8123..9a47310 100644 --- a/ui/dr-ui/src/inference.rs +++ b/ui/dr-ui/src/inference.rs @@ -35,7 +35,7 @@ pub fn init(runtime_dirs: Vec) { (Role::EyeClassifier, crate::library::SUNGLASSES_MODEL), (Role::Inpainter, crate::library::INPAINT_MODEL), ]); - let denoisers = [dr_denoise::FAST, dr_denoise::MEDIUM, dr_denoise::BEST]; + let denoisers = [dr_denoise::FAST, dr_denoise::BEST]; wanted.extend(denoisers.map(|n| (Role::Denoiser, n.file))); // Their any-size siblings, which the engine compiles only on a rung // that runs whole frames (TensorRT; denoise.md §14). diff --git a/ui/dr-ui/src/labels.rs b/ui/dr-ui/src/labels.rs index 174c186..9a8a971 100644 --- a/ui/dr-ui/src/labels.rs +++ b/ui/dr-ui/src/labels.rs @@ -227,7 +227,6 @@ fn catalogued(key: &str) -> Option<&'static str> { "param.learned_denoise.method" => "Method", "param.learned_denoise.method.bilinear" => "Bilinear", "param.learned_denoise.method.fast" => "Fast", - "param.learned_denoise.method.medium" => "Medium", "param.learned_denoise.method.best" => "Best", // How strongly: 100 % is the network's result, and less puts the // removed noise's brightness back as grain. diff --git a/ui/dr-ui/src/library/paths.rs b/ui/dr-ui/src/library/paths.rs index ba1ddc3..2ff3234 100644 --- a/ui/dr-ui/src/library/paths.rs +++ b/ui/dr-ui/src/library/paths.rs @@ -399,7 +399,6 @@ pub fn denoise_network( match method { Method::Bilinear => None, Method::Fast => Some(dr_denoise::FAST), - Method::Medium => Some(dr_denoise::MEDIUM), Method::Best => Some(dr_denoise::BEST), } }