From 70fe0f46f6c0af9db89f49076f97d2344813f520 Mon Sep 17 00:00:00 2001 From: Lawrence Lee <45837045+Lawrence37@users.noreply.github.com> Date: Sat, 27 Aug 2022 16:38:03 -0700 Subject: [PATCH] Use hard-coded levels for Canon raws Closes #6559. --- rtengine/dcraw.cc | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index e4dbcbf94..bb8cafaf0 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -9082,8 +9082,21 @@ void CLASS adobe_coeff (const char *make, const char *model) for (i=0; i < sizeof table / sizeof *table; i++) if (!strncmp (name, table[i].prefix, strlen(table[i].prefix))) { - if (RT_blacklevel_from_constant == ThreeValBool::T && table[i].black) black = (ushort) table[i].black; - if (RT_whitelevel_from_constant == ThreeValBool::T && table[i].maximum) maximum = (ushort) table[i].maximum; + if (RT_blacklevel_from_constant == ThreeValBool::T && table[i].black) { + if (RT_canon_levels_data.black_ok) { + unsigned c; + FORC4 RT_canon_levels_data.cblack[c] = (ushort) table[i].black; + } else { + black = (ushort) table[i].black; + } + } + if (RT_whitelevel_from_constant == ThreeValBool::T && table[i].maximum) { + if (RT_canon_levels_data.white_ok) { + RT_canon_levels_data.white = (ushort) table[i].maximum; + } else { + maximum = (ushort) table[i].maximum; + } + } if (RT_matrix_from_constant == ThreeValBool::T && table[i].trans[0]) { for (raw_color = j=0; j < 12; j++) ((double *)cam_xyz)[j] = table[i].trans[j] / 10000.0;