From 59f2e9f11918e14af5504eac24b0fdbf06ad9696 Mon Sep 17 00:00:00 2001 From: torger Date: Wed, 17 Dec 2014 20:59:16 +0100 Subject: [PATCH] Added code to corretly identify Hasseblad H4D-31, H4D-40 and H4D-50 --- rtengine/dcraw.cc | 7 +++++-- rtengine/dcraw.patch | 31 +++++++++++++++++++------------ 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 9c9a3b554..fb3f555f6 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -8277,19 +8277,22 @@ konica_400z: left_margin = 7; filters = 0x61616161; } else if (raw_width == 7410) { + if (!strcmp(model, "H4D")) strcpy(model, "H4D-40"); // RT height = 5502; width = 7328; top_margin = 4; left_margin = 41; filters = 0x61616161; - } else if (raw_width == 6542) { // RT, H3D-31, H3DII-31 + } else if (raw_width == 6542) { // RT, H3D-31, H3DII-31, H4D-31 if (!strcmp(model, "H3D")) strcpy(model, "H3D-31"); + if (!strcmp(model, "H4D")) strcpy(model, "H4D-31"); height = 4904; width = 6524; top_margin = 4; left_margin = 8; - } else if (raw_width == 8282) { // RT, H3DII-50, H3DII-50MS, CFV-50 + } else if (raw_width == 8282) { // RT, H3DII-50, H3DII-50MS, CFV-50, H4D-50 if (!strcmp(model, "H3D")) strcpy(model, "H3DII-50"); + if (!strcmp(model, "H4D")) strcpy(model, "H4D-50"); height = 6152; width = 8196; top_margin = 4; diff --git a/rtengine/dcraw.patch b/rtengine/dcraw.patch index 1ff01c64d..e4f0ec391 100755 --- a/rtengine/dcraw.patch +++ b/rtengine/dcraw.patch @@ -1,5 +1,5 @@ ---- dcraw.c 2014-12-15 19:12:56 +0000 -+++ dcraw.cc 2014-12-15 19:15:00 +0000 +--- dcraw.c 2014-07-24 16:15:36.700261700 +0200 ++++ dcraw.cc 2014-12-17 20:56:37.864321656 +0100 @@ -1,3 +1,15 @@ +/*RT*/#include +/*RT*/#include @@ -1030,7 +1030,7 @@ width -= 46; } else if (!strcmp(model,"D4") || !strcmp(model,"Df")) { -@@ -8567,6 +8270,7 @@ +@@ -8567,24 +8270,46 @@ if (load_raw == &CLASS lossless_jpeg_load_raw) load_raw = &CLASS hasselblad_load_raw; if (raw_width == 7262) { @@ -1038,18 +1038,25 @@ height = 5444; width = 7248; top_margin = 4; -@@ -8578,13 +8282,31 @@ + left_margin = 7; + filters = 0x61616161; + } else if (raw_width == 7410) { ++ if (!strcmp(model, "H4D")) strcpy(model, "H4D-40"); // RT + height = 5502; + width = 7328; top_margin = 4; left_margin = 41; filters = 0x61616161; -+ } else if (raw_width == 6542) { // RT, H3D-31, H3DII-31 ++ } else if (raw_width == 6542) { // RT, H3D-31, H3DII-31, H4D-31 + if (!strcmp(model, "H3D")) strcpy(model, "H3D-31"); ++ if (!strcmp(model, "H4D")) strcpy(model, "H4D-31"); + height = 4904; + width = 6524; + top_margin = 4; + left_margin = 8; -+ } else if (raw_width == 8282) { // RT, H3DII-50, H3DII-50MS, CFV-50 ++ } else if (raw_width == 8282) { // RT, H3DII-50, H3DII-50MS, CFV-50, H4D-50 + if (!strcmp(model, "H3D")) strcpy(model, "H3DII-50"); ++ if (!strcmp(model, "H4D")) strcpy(model, "H4D-50"); + height = 6152; + width = 8196; + top_margin = 4; @@ -1072,7 +1079,7 @@ } else if (raw_width == 4090) { strcpy (model, "V96C"); height -= (top_margin = 6); -@@ -8637,6 +8359,7 @@ +@@ -8637,6 +8362,7 @@ filters = 0x16161616; } } else if (!strcmp(make,"Leica") || !strcmp(make,"Panasonic")) { @@ -1080,7 +1087,7 @@ if ((flen - data_offset) / (raw_width*8/7) == raw_height) load_raw = &CLASS panasonic_load_raw; if (!load_raw) { -@@ -8654,6 +8377,7 @@ +@@ -8654,6 +8380,7 @@ } filters = 0x01010101 * (uchar) "\x94\x61\x49\x16" [((filters-1) ^ (left_margin & 1) ^ (top_margin << 1)) & 3]; @@ -1088,7 +1095,7 @@ } else if (!strcmp(model,"C770UZ")) { height = 1718; width = 2304; -@@ -8883,6 +8607,14 @@ +@@ -8883,6 +8610,14 @@ memcpy (rgb_cam, cmatrix, sizeof cmatrix); raw_color = 0; } @@ -1103,7 +1110,7 @@ if (raw_color) adobe_coeff (make, model); if (load_raw == &CLASS kodak_radc_load_raw) if (raw_color) adobe_coeff ("Apple","Quicktake"); -@@ -8899,7 +8631,7 @@ +@@ -8899,7 +8634,7 @@ if (!tiff_bps) tiff_bps = 12; if (!maximum) maximum = (1 << tiff_bps) - 1; if (!load_raw || height < 22 || width < 22 || @@ -1112,7 +1119,7 @@ is_raw = 0; #ifdef NO_JASPER if (load_raw == &CLASS redcine_load_raw) { -@@ -8978,194 +8710,249 @@ +@@ -8978,194 +8713,249 @@ } #endif @@ -1537,7 +1544,7 @@ struct tiff_tag { ushort tag, type; -@@ -9188,585 +8975,12 @@ +@@ -9188,585 +8978,12 @@ unsigned gps[26]; char desc[512], make[64], model[64], soft[32], date[20], artist[64]; };