From 2617c6bccf2282a8d7abf18051e896ed183ffa61 Mon Sep 17 00:00:00 2001 From: Oliver Duis Date: Tue, 6 Sep 2011 19:34:36 +0200 Subject: [PATCH] Next correction of DCRAW camera color matrices on behalf of Colin, see issue #930 --- rtengine/dcraw.cc | 42 +++++++++-------- rtengine/dcraw.patch | 109 ++++++++++++++++++++++++++++++++++--------- 2 files changed, 108 insertions(+), 43 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 71b3ada6b..7ad29d8cd 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -6203,7 +6203,7 @@ void CLASS adobe_coeff (const char *make, const char *model) { "Canon EOS 5D", 0, 0xe6c, { 6347,-479,-972,-8297,15954,2480,-1968,2131,7649 } }, { "Canon EOS 7D", 0, 0x3510, /* RT - Colin Walker */ - { 8937,-1470,-939,-2286,10178,2456,-404,1267,8877 } }, + { 5962,-171,-732,-4189,12307,2099,-911,1981,6304 } }, { "Canon EOS 10D", 0, 0xfa0, { 8197,-2000,-1118,-6714,14335,2592,-2536,3178,8266 } }, { "Canon EOS 20Da", 0, 0, @@ -6388,7 +6388,7 @@ void CLASS adobe_coeff (const char *make, const char *model) { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, { "FUJIFILM FinePix F550EXR", 0, 0, { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, - { "FUJIFILM FinePix X100", 0, 0, + { "FUJIFILM FinePix X100", 0, 0, /* RT - Colin Walker */ { 10841,-3288,-807,-4652,12552,2344,-642,1355,7206 } }, { "Imacon Ixpress", 0, 0, /* DJC */ { 7025,-1415,-704,-5188,13765,1424,-1248,2742,6038 } }, @@ -6578,8 +6578,8 @@ void CLASS adobe_coeff (const char *make, const char *model) { 7828,-1761,-348,-5788,14071,1830,-2853,4518,6557 } }, { "OLYMPUS E-330", 0, 0, { 8961,-2473,-1084,-7979,15990,2067,-2319,3035,8249 } }, - { "OLYMPUS E-30", 0, 0xfbc, - { 8144,-1861,-1111,-7763,15894,1929,-1865,2542,7607 } }, + { "OLYMPUS E-30", 0, 0xfbc, /* RT - Colin Walker */ + { 8510,-2355,-693,-4819,12520,2578,-1029,2067,7752 } }, { "OLYMPUS E-3", 0, 0xf99, { 9487,-2875,-1115,-7533,15606,2010,-1618,2100,7389 } }, { "OLYMPUS E-400", 0, 0, @@ -6596,8 +6596,8 @@ void CLASS adobe_coeff (const char *make, const char *model) { 8785,-2529,-1033,-7639,15624,2112,-1783,2300,7817 } }, { "OLYMPUS E-520", 0, 0xfd2, { 8344,-2322,-1020,-7596,15635,2048,-1748,2269,7287 } }, - { "OLYMPUS E-5", 0, 0, - { 11200,-3783,-1325,-4576,12593,2206,-695,1742,7504 } }, + { "OLYMPUS E-5", 0, 0, /* RT - Colin Walker */ + { 9732,-2629,-999,-4899,12931,2173,-1243,2353,7457 } }, { "OLYMPUS E-600", 0, 0xfaf, { 8453,-2198,-1092,-7609,15681,2008,-1725,2337,7824 } }, { "OLYMPUS E-620", 0, 0xfaf, @@ -6608,12 +6608,14 @@ void CLASS adobe_coeff (const char *make, const char *model) { 7758,-1619,-800,-5002,12886,2349,-985,1964,8305 } }, { "OLYMPUS E-P3", 0, 0, /* RT - Colin Walker */ { 7041,-1794,-336,-3790,11192,2984,-1364,2625,6217 } }, - { "OLYMPUS E-PL1s", 0, 0, - { 11409,-3872,-1393,-4572,12757,2003,-709,1810,7415 } }, - { "OLYMPUS E-PL1", 0, 0, - { 11408,-4289,-1215,-4286,12385,2118,-387,1467,7787 } }, - { "OLYMPUS E-PL2", 0, 0, - { 15030,-5552,-1806,-3987,12387,1767,-592,1670,7023 } }, + { "OLYMPUS E-PL1s", 0, 0, /* RT - Colin Walker */ + { 9010,-2271,-838,-4792,12753,2263,-1059,2058,7589 } }, + { "OLYMPUS E-PL1", 0, 0, /* RT - Colin Walker */ + { 9010,-2271,-838,-4792,12753,2263,-1059,2058,7589 } }, + { "OLYMPUS E-PL2", 0, 0, /* RT - Colin Walker */ + { 11975,-3351,-1184,-4500,12639,2061,-1230,2353,7009 } }, + { "OLYMPUS E-PL3", 0, 0, /* RT - Colin Walker */ + { 7041,-1794,-336,-3790,11192,2984,-1364,2625,6217 } }, { "OLYMPUS SP350", 0, 0, { 12078,-4836,-1069,-6671,14306,2578,-786,939,7418 } }, { "OLYMPUS SP3", 0, 0, @@ -6628,8 +6630,8 @@ void CLASS adobe_coeff (const char *make, const char *model) { 10915,-3677,-982,-5587,12986,2911,-1168,1968,6223 } }, { "OLYMPUS SP570UZ", 0, 0, { 11522,-4044,-1146,-4736,12172,2904,-988,1829,6039 } }, - { "OLYMPUS XZ-1", 0, 0, - { 10901,-4095,-1074,-1141,9208,2293,-62,1417,5158 } }, + { "OLYMPUS XZ-1", 0, 0, /* RT - Colin Walker */ + { 8665,-2247,-762,-2424,10372,2382,-1011,2286,5189 } }, { "PENTAX *ist DL2", 0, 0, { 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } }, { "PENTAX *ist DL", 0, 0, @@ -6788,14 +6790,14 @@ void CLASS adobe_coeff (const char *make, const char *model) { 5413,-1162,-365,-5665,13098,2866,-608,1179,8440 } }, { "SONY DSLR-A900", 128, 0, { 5209,-1072,-397,-8845,16120,2919,-1618,1803,8654 } }, - { "SONY NEX-3", 138, 0, /* DJC */ - { 6907,-1256,-645,-4940,12621,2320,-1710,2581,6230 } }, - { "SONY NEX-5", 116, 0, /* DJC */ - { 6807,-1350,-342,-4216,11649,2567,-1089,2001,6420 } }, + { "SONY NEX-3", 128, 0, /* RT - Colin Walker */ + { 5145,-741,-123,-4915,12310,2945,-794,1489,6906 } }, + { "SONY NEX-5", 128, 0, /* RT - Colin Walker */ + { 5154,-716,-115,-5065,12506,2882,-988,1715,6800 } }, { "SONY NEX-C3", 128, 0, /* RT - Colin Walker */ { 5130,-1055,-269,-4473,11797,3050,-701,1310,7121 } }, - { "SONY NEX", 128, 0, /* Adobe's matrix */ - { 6549,-1550,-436,-4880,12435,2753,-854,1868,6976 } }, + { "SONY NEX-5N", 138, 0, /* RT - Colin Walker */ + { 5130,-1055,-269,-4473,11797,3050,-701,1310,7121 } }, { "SONY SLT-A33", 128, 0, { 6069,-1221,-366,-5221,12779,2734,-1024,2066,6834 } }, { "SONY SLT-A35", 128, 0, /* DJC */ diff --git a/rtengine/dcraw.patch b/rtengine/dcraw.patch index f6888cb83..6b0ed5ff2 100644 --- a/rtengine/dcraw.patch +++ b/rtengine/dcraw.patch @@ -1,5 +1,5 @@ --- C:/GCC/RT/RTSrc/rtengine/dcraw.c Tue Aug 16 06:59:22 2011 -+++ C:/GCC/RT/RTSrc/rtengine/dcraw.cc Thu Sep 01 18:46:35 2011 ++++ C:/GCC/RT/RTSrc/rtengine/dcraw.cc Mon Sep 05 17:48:51 2011 @@ -1,3 +1,14 @@ +/*RT*/#include +/*RT*/#include @@ -313,7 +313,7 @@ - { "Canon EOS 7D", 0, 0x3510, - { 6844,-996,-856,-3876,11761,2396,-593,1772,6198 } }, + { "Canon EOS 7D", 0, 0x3510, /* RT - Colin Walker */ -+ { 8937,-1470,-939,-2286,10178,2456,-404,1267,8877 } }, ++ { 5962,-171,-732,-4189,12307,2099,-911,1981,6304 } }, { "Canon EOS 10D", 0, 0xfa0, { 8197,-2000,-1118,-6714,14335,2592,-2536,3178,8266 } }, { "Canon EOS 20Da", 0, 0, @@ -328,13 +328,22 @@ { "Canon EOS 300D", 0, 0xfa0, { 8197,-2000,-1118,-6714,14335,2592,-2536,3178,8266 } }, { "Canon EOS 350D", 0, 0xfff, +@@ -6298,7 +6319,7 @@ + { "Canon PowerShot SX1 IS", 0, 0, + { 6578,-259,-502,-5974,13030,3309,-308,1058,4970 } }, + { "Canon PowerShot SX110 IS", 0, 0, /* DJC */ +- { 14134,-5576,-1527,-1991,10719,1273,-1158,1929,3581 } }, ++ { 14134,-5576,-1527,-1991,10719,1273,-1158,1929,3581 } }, + { "CASIO EX-S20", 0, 0, /* DJC */ + { 11634,-3924,-1128,-4968,12954,2015,-1588,2648,7206 } }, + { "CASIO EX-Z750", 0, 0, /* DJC */ @@ -6367,8 +6388,8 @@ { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, { "FUJIFILM FinePix F550EXR", 0, 0, { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, - { "FUJIFILM FinePix X100", 0, 0, - { 12161,-4457,-1069,-5034,12874,2400,-795,1724,6904 } }, -+ { "FUJIFILM FinePix X100", 0, 0, ++ { "FUJIFILM FinePix X100", 0, 0, /* RT - Colin Walker */ + { 10841,-3288,-807,-4652,12552,2344,-642,1355,7206 } }, { "Imacon Ixpress", 0, 0, /* DJC */ { 7025,-1415,-704,-5188,13765,1424,-1248,2742,6038 } }, @@ -350,7 +359,26 @@ { "NIKON D70", 0, 0, { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } }, { "NIKON D80", 0, 0, -@@ -6581,12 +6602,12 @@ +@@ -6557,8 +6578,8 @@ + { 7828,-1761,-348,-5788,14071,1830,-2853,4518,6557 } }, + { "OLYMPUS E-330", 0, 0, + { 8961,-2473,-1084,-7979,15990,2067,-2319,3035,8249 } }, +- { "OLYMPUS E-30", 0, 0xfbc, +- { 8144,-1861,-1111,-7763,15894,1929,-1865,2542,7607 } }, ++ { "OLYMPUS E-30", 0, 0xfbc, /* RT - Colin Walker */ ++ { 8510,-2355,-693,-4819,12520,2578,-1029,2067,7752 } }, + { "OLYMPUS E-3", 0, 0xf99, + { 9487,-2875,-1115,-7533,15606,2010,-1618,2100,7389 } }, + { "OLYMPUS E-400", 0, 0, +@@ -6575,24 +6596,26 @@ + { 8785,-2529,-1033,-7639,15624,2112,-1783,2300,7817 } }, + { "OLYMPUS E-520", 0, 0xfd2, + { 8344,-2322,-1020,-7596,15635,2048,-1748,2269,7287 } }, +- { "OLYMPUS E-5", 0, 0, +- { 11200,-3783,-1325,-4576,12593,2206,-695,1742,7504 } }, ++ { "OLYMPUS E-5", 0, 0, /* RT - Colin Walker */ ++ { 9732,-2629,-999,-4899,12931,2173,-1243,2353,7457 } }, + { "OLYMPUS E-600", 0, 0xfaf, { 8453,-2198,-1092,-7609,15681,2008,-1725,2337,7824 } }, { "OLYMPUS E-620", 0, 0xfaf, { 8453,-2198,-1092,-7609,15681,2008,-1725,2337,7824 } }, @@ -360,16 +388,41 @@ - { 8343,-2050,-1021,-7715,15705,2103,-1831,2380,8235 } }, - { "OLYMPUS E-P3", 0, 0, /* DJC */ - { 7488,-3021,-55,-2377,8348,4029,-816,2405,6327 } }, +- { "OLYMPUS E-PL1s", 0, 0, +- { 11409,-3872,-1393,-4572,12757,2003,-709,1810,7415 } }, +- { "OLYMPUS E-PL1", 0, 0, +- { 11408,-4289,-1215,-4286,12385,2118,-387,1467,7787 } }, +- { "OLYMPUS E-PL2", 0, 0, +- { 15030,-5552,-1806,-3987,12387,1767,-592,1670,7023 } }, + { "OLYMPUS E-P1", 0, 0xffd, /* RT - Colin Walker */ + { 8834,-2344,-804,-4691,12503,2448,-978,1919,7603 } }, + { "OLYMPUS E-P2", 0, 0xffd, /* RT - Colin Walker */ + { 7758,-1619,-800,-5002,12886,2349,-985,1964,8305 } }, + { "OLYMPUS E-P3", 0, 0, /* RT - Colin Walker */ + { 7041,-1794,-336,-3790,11192,2984,-1364,2625,6217 } }, - { "OLYMPUS E-PL1s", 0, 0, - { 11409,-3872,-1393,-4572,12757,2003,-709,1810,7415 } }, - { "OLYMPUS E-PL1", 0, 0, -@@ -6683,30 +6704,32 @@ ++ { "OLYMPUS E-PL1s", 0, 0, /* RT - Colin Walker */ ++ { 9010,-2271,-838,-4792,12753,2263,-1059,2058,7589 } }, ++ { "OLYMPUS E-PL1", 0, 0, /* RT - Colin Walker */ ++ { 9010,-2271,-838,-4792,12753,2263,-1059,2058,7589 } }, ++ { "OLYMPUS E-PL2", 0, 0, /* RT - Colin Walker */ ++ { 11975,-3351,-1184,-4500,12639,2061,-1230,2353,7009 } }, ++ { "OLYMPUS E-PL3", 0, 0, /* RT - Colin Walker */ ++ { 7041,-1794,-336,-3790,11192,2984,-1364,2625,6217 } }, + { "OLYMPUS SP350", 0, 0, + { 12078,-4836,-1069,-6671,14306,2578,-786,939,7418 } }, + { "OLYMPUS SP3", 0, 0, +@@ -6607,8 +6630,8 @@ + { 10915,-3677,-982,-5587,12986,2911,-1168,1968,6223 } }, + { "OLYMPUS SP570UZ", 0, 0, + { 11522,-4044,-1146,-4736,12172,2904,-988,1829,6039 } }, +- { "OLYMPUS XZ-1", 0, 0, +- { 10901,-4095,-1074,-1141,9208,2293,-62,1417,5158 } }, ++ { "OLYMPUS XZ-1", 0, 0, /* RT - Colin Walker */ ++ { 8665,-2247,-762,-2424,10372,2382,-1011,2286,5189 } }, + { "PENTAX *ist DL2", 0, 0, + { 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } }, + { "PENTAX *ist DL", 0, 0, +@@ -6683,30 +6706,32 @@ { 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } }, { "LEICA D-LUX 5", 143, 0, { 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } }, @@ -420,18 +473,28 @@ { "Phase One H 20", 0, 0, /* DJC */ { 1313,1855,-109,-6715,15908,808,-327,1840,6020 } }, { "Phase One P 2", 0, 0, -@@ -6769,8 +6792,8 @@ - { 6907,-1256,-645,-4940,12621,2320,-1710,2581,6230 } }, - { "SONY NEX-5", 116, 0, /* DJC */ - { 6807,-1350,-342,-4216,11649,2567,-1089,2001,6420 } }, +@@ -6765,20 +6790,22 @@ + { 5413,-1162,-365,-5665,13098,2866,-608,1179,8440 } }, + { "SONY DSLR-A900", 128, 0, + { 5209,-1072,-397,-8845,16120,2919,-1618,1803,8654 } }, +- { "SONY NEX-3", 138, 0, /* DJC */ +- { 6907,-1256,-645,-4940,12621,2320,-1710,2581,6230 } }, +- { "SONY NEX-5", 116, 0, /* DJC */ +- { 6807,-1350,-342,-4216,11649,2567,-1089,2001,6420 } }, - { "SONY NEX-C3", 128, 0, /* DJC */ - { 5171,-1786,-46,-3375,9315,4061,-611,1865,6473 } }, +- { "SONY NEX", 128, 0, /* Adobe's matrix */ +- { 6549,-1550,-436,-4880,12435,2753,-854,1868,6976 } }, ++ { "SONY NEX-3", 128, 0, /* RT - Colin Walker */ ++ { 5145,-741,-123,-4915,12310,2945,-794,1489,6906 } }, ++ { "SONY NEX-5", 128, 0, /* RT - Colin Walker */ ++ { 5154,-716,-115,-5065,12506,2882,-988,1715,6800 } }, + { "SONY NEX-C3", 128, 0, /* RT - Colin Walker */ + { 5130,-1055,-269,-4473,11797,3050,-701,1310,7121 } }, - { "SONY NEX", 128, 0, /* Adobe's matrix */ - { 6549,-1550,-436,-4880,12435,2753,-854,1868,6976 } }, ++ { "SONY NEX-5N", 138, 0, /* RT - Colin Walker */ ++ { 5130,-1055,-269,-4473,11797,3050,-701,1310,7121 } }, { "SONY SLT-A33", 128, 0, -@@ -6778,7 +6801,9 @@ + { 6069,-1221,-366,-5221,12779,2734,-1024,2066,6834 } }, { "SONY SLT-A35", 128, 0, /* DJC */ { 4504,-1495,115,-3507,9101,4407,-669,1844,6806 } }, { "SONY SLT-A55", 128, 0, @@ -442,7 +505,7 @@ }; double cam_xyz[4][3]; char name[130]; -@@ -7021,6 +7046,12 @@ +@@ -7021,6 +7048,12 @@ fread (head, 1, 32, ifp); fseek (ifp, 0, SEEK_END); flen = fsize = ftell(ifp); @@ -455,7 +518,7 @@ if ((cp = (char *) memmem (head, 32, "MMMM", 4)) || (cp = (char *) memmem (head, 32, "IIII", 4))) { parse_phase_one (cp-head); -@@ -7028,6 +7059,8 @@ +@@ -7028,6 +7061,8 @@ } else if (order == 0x4949 || order == 0x4d4d) { if (!memcmp (head+6,"HEAPCCDR",8)) { data_offset = hlen; @@ -464,7 +527,7 @@ parse_ciff (hlen, flen - hlen); } else if (parse_tiff(0)) apply_tiff(); } else if (!memcmp (head,"\xff\xd8\xff\xe1",4) && -@@ -7071,6 +7104,7 @@ +@@ -7071,6 +7106,7 @@ fseek (ifp, 100+28*(shot_select > 0), SEEK_SET); parse_tiff (data_offset = get4()); parse_tiff (thumb_offset+12); @@ -472,7 +535,7 @@ apply_tiff(); } else if (!memcmp (head,"RIFF",4)) { fseek (ifp, 0, SEEK_SET); -@@ -7116,8 +7150,7 @@ +@@ -7116,8 +7152,7 @@ parse_redcine(); load_raw = &CLASS redcine_load_raw; gamma_curve (1/2.4, 12.92, 1, 4095); @@ -482,7 +545,7 @@ parse_rollei(); else if (!memcmp (head,"PWAD",4)) parse_sinar_ia(); -@@ -7172,7 +7205,7 @@ +@@ -7172,7 +7207,7 @@ if (height == 3136 && width == 4864) /* Pentax K20D and Samsung GX20 */ { height = 3124; width = 4688; filters = 0x16161616; } if (!strcmp(model,"K-r") || !strcmp(model,"K-x")) @@ -491,7 +554,7 @@ if (!strcmp(model,"K-5")) { left_margin = 10; width = 4950; filters = 0x16161616; } if (!strcmp(model,"K-7")) -@@ -8791,13 +8824,13 @@ +@@ -8791,13 +8826,13 @@ FORCC ppm [col*colors+c] = curve[image[soff][c]] >> 8; else FORCC ppm2[col*colors+c] = curve[image[soff][c]]; if (output_bps == 16 && !output_tiff && htons(0x55aa) != 0x55aa) @@ -507,7 +570,7 @@ { int arg, status=0; int timestamp_only=0, thumbnail_only=0, identify_only=0; -@@ -8910,7 +8943,7 @@ +@@ -8910,7 +8945,7 @@ case 'i': identify_only = 1; break; case 'c': write_to_stdout = 1; break; case 'v': verbose = 1; break; @@ -516,7 +579,7 @@ case 'f': four_color_rgb = 1; break; case 'A': FORC4 greybox[c] = atoi(argv[arg++]); case 'a': use_auto_wb = 1; break; -@@ -9173,3 +9206,4 @@ +@@ -9173,3 +9208,4 @@ } return status; }