From e10da9120c353d1dd89360e1a2542fea3a804b1e Mon Sep 17 00:00:00 2001 From: Oliver Duis Date: Mon, 28 May 2012 14:10:40 +0200 Subject: [PATCH] Base color profiles for Nikon D800 and Canon 5D Mark III see issue 1378 --- rtengine/dcraw.cc | 4 +++ rtengine/dcraw.patch | 60 +++++++++++++++++++++++++------------------- 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index c4a0772a4..08398f90d 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -6203,6 +6203,8 @@ void CLASS adobe_coeff (const char *make, const char *model) { 9805,-2689,-1312,-5803,13064,3068,-2438,3075,8775 } }, { "Canon EOS D60", 0, 0xfa0, { 6188,-1341,-890,-7168,14489,2937,-2640,3228,8483 } }, + { "Canon EOS 5D Mark III", 0, 0x3a98, /* RT */ + { 6722,-635,-963,-4287,12460,2028,-908,2162,5668 } }, { "Canon EOS 5D Mark II", 0, 0x3cf0, { 4716,603,-830,-7798,15474,2480,-1496,1937,6651 } }, { "Canon EOS 5D", 0, 0xe6c, /* RT */ @@ -6535,6 +6537,8 @@ void CLASS adobe_coeff (const char *make, const char *model) { 8364,-2503,-352,-6307,14026,2492,-1134,1512,8156 } }, { "NIKON D70", 0, 0, { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } }, + { "NIKON D800", 0, 0, /* RT */ + { 7866,-2108,-555,-4869,12483,2681,-1176,2069,7501 } }, { "NIKON D80", 0, 0, { 8629,-2410,-883,-9055,16940,2171,-1490,1363,8520 } }, { "NIKON D90", 0, 0xf00, diff --git a/rtengine/dcraw.patch b/rtengine/dcraw.patch index c4af353a9..8af6de03b 100644 --- a/rtengine/dcraw.patch +++ b/rtengine/dcraw.patch @@ -1,5 +1,5 @@ ---- dcraw.c 2012-04-22 10:27:51.049670938 +0400 -+++ dcraw.cc 2012-05-02 00:00:16.799334397 +0400 +--- C:/GCC/RT/RTSrc/rtengine/dcraw.c Thu Mar 29 14:38:54 2012 ++++ C:/GCC/RT/RTSrc/rtengine/dcraw.cc Sun May 27 12:36:20 2012 @@ -1,3 +1,15 @@ +/*RT*/#include +/*RT*/#include @@ -408,8 +408,12 @@ } table[] = { { "AGFAPHOTO DC-833m", 0, 0, /* DJC */ { 11438,-3762,-1115,-2409,9914,2497,-1227,2295,5300 } }, -@@ -6181,36 +6205,36 @@ +@@ -6179,38 +6203,40 @@ + { 9805,-2689,-1312,-5803,13064,3068,-2438,3075,8775 } }, + { "Canon EOS D60", 0, 0xfa0, { 6188,-1341,-890,-7168,14489,2937,-2640,3228,8483 } }, ++ { "Canon EOS 5D Mark III", 0, 0x3a98, /* RT */ ++ { 6722,-635,-963,-4287,12460,2028,-908,2162,5668 } }, { "Canon EOS 5D Mark II", 0, 0x3cf0, { 4716,603,-830,-7798,15474,2480,-1496,1937,6651 } }, - { "Canon EOS 5D", 0, 0xe6c, @@ -459,7 +463,7 @@ { "Canon EOS 600D", 0, 0x3510, { 6461,-907,-882,-4300,12184,2378,-819,1944,5931 } }, { "Canon EOS 1000D", 0, 0xe43, -@@ -6223,8 +6247,8 @@ +@@ -6223,8 +6249,8 @@ { 6517,-602,-867,-8180,15926,2378,-1618,1771,7633 } }, { "Canon EOS-1D Mark IV", 0, 0x3bb0, { 6014,-220,-795,-4109,12014,2361,-561,1824,5787 } }, @@ -470,7 +474,7 @@ { "Canon EOS-1D Mark II N", 0, 0xe80, { 6240,-466,-822,-8180,15825,2500,-1801,1938,8042 } }, { "Canon EOS-1D Mark II", 0, 0xe80, -@@ -6241,12 +6265,12 @@ +@@ -6241,12 +6267,12 @@ { -5300,9846,1776,3436,684,3939,-5540,9879,6200,-1404,11175,217 } }, { "Canon PowerShot A5", 0, 0, { -4801,9475,1952,2926,1611,4094,-5259,10164,5947,-1554,10883,547 } }, @@ -487,7 +491,7 @@ { "Canon PowerShot G1", 0, 0, { -4778,9467,2172,4743,-1141,4344,-5146,9908,6077,-1566,11051,557 } }, { "Canon PowerShot G2", 0, 0, -@@ -6302,7 +6326,7 @@ +@@ -6302,7 +6328,7 @@ { "Canon PowerShot SX1 IS", 0, 0, { 6578,-259,-502,-5974,13030,3309,-308,1058,4970 } }, { "Canon PowerShot SX110 IS", 0, 0, /* DJC */ @@ -496,7 +500,7 @@ { "CASIO EX-S20", 0, 0, /* DJC */ { 11634,-3924,-1128,-4968,12954,2015,-1588,2648,7206 } }, { "CASIO EX-Z750", 0, 0, /* DJC */ -@@ -6373,8 +6397,8 @@ +@@ -6373,8 +6399,8 @@ { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, { "FUJIFILM FinePix F600EXR", 0, 0, { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, @@ -507,7 +511,7 @@ { "FUJIFILM X10", 0, 0, { 13509,-6199,-1254,-4430,12733,1865,-331,1441,5022 } }, { "Imacon Ixpress", 0, 0, /* DJC */ -@@ -6475,22 +6499,22 @@ +@@ -6475,22 +6501,22 @@ { 7702,-2245,-975,-9114,17242,1875,-2679,3055,8521 } }, { "NIKON D1", 0, 0, /* multiplied by 2.218750, 1.0, 1.148438 */ { 16772,-4726,-2141,-7611,15713,1972,-2846,3494,9521 } }, @@ -538,7 +542,7 @@ { "NIKON D3", 0, 0, { 8139,-2171,-663,-8747,16541,2295,-1925,2008,8093 } }, { "NIKON D40X", 0, 0, -@@ -6505,10 +6529,10 @@ +@@ -6505,12 +6531,14 @@ { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } }, { "NIKON D60", 0, 0, { 8736,-2458,-935,-9075,16894,2251,-1354,1242,8263 } }, @@ -552,8 +556,12 @@ + { 8364,-2503,-352,-6307,14026,2492,-1134,1512,8156 } }, { "NIKON D70", 0, 0, { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } }, ++ { "NIKON D800", 0, 0, /* RT */ ++ { 7866,-2108,-555,-4869,12483,2681,-1176,2069,7501 } }, { "NIKON D80", 0, 0, -@@ -6569,8 +6593,8 @@ + { 8629,-2410,-883,-9055,16940,2171,-1490,1363,8520 } }, + { "NIKON D90", 0, 0xf00, +@@ -6569,8 +6597,8 @@ { 7828,-1761,-348,-5788,14071,1830,-2853,4518,6557 } }, { "OLYMPUS E-330", 0, 0, { 8961,-2473,-1084,-7979,15990,2067,-2319,3035,8249 } }, @@ -564,7 +572,7 @@ { "OLYMPUS E-3", 0, 0xf99, { 9487,-2875,-1115,-7533,15606,2010,-1618,2100,7389 } }, { "OLYMPUS E-400", 0, 0, -@@ -6587,26 +6611,26 @@ +@@ -6587,26 +6615,26 @@ { 8785,-2529,-1033,-7639,15624,2112,-1783,2300,7817 } }, { "OLYMPUS E-520", 0, 0xfd2, { 8344,-2322,-1020,-7596,15635,2048,-1748,2269,7287 } }, @@ -607,7 +615,7 @@ { "OLYMPUS E-PM1", 0, 0, { 7575,-2159,-571,-3722,11341,2725,-1434,2819,6271 } }, { "OLYMPUS SP350", 0, 0, -@@ -6623,8 +6647,8 @@ +@@ -6623,8 +6651,8 @@ { 10915,-3677,-982,-5587,12986,2911,-1168,1968,6223 } }, { "OLYMPUS SP570UZ", 0, 0, { 11522,-4044,-1146,-4736,12172,2904,-988,1829,6039 } }, @@ -618,7 +626,7 @@ { "PENTAX *ist DL2", 0, 0, { 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } }, { "PENTAX *ist DL", 0, 0, -@@ -6641,8 +6665,8 @@ +@@ -6641,8 +6669,8 @@ { 11095,-3157,-1324,-8377,15834,2720,-1108,947,11688 } }, { "PENTAX K20D", 0, 0, { 9427,-2714,-868,-7493,16092,1373,-2199,3264,7180 } }, @@ -629,7 +637,7 @@ { "PENTAX K2000", 0, 0, { 11057,-3604,-1155,-5152,13046,2329,-282,375,8104 } }, { "PENTAX K-m", 0, 0, -@@ -6699,34 +6723,36 @@ +@@ -6699,34 +6727,36 @@ { 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } }, { "LEICA D-LUX 5", 143, 0, { 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } }, @@ -686,7 +694,7 @@ { "Panasonic DMC-GX1", 143, 0, { 6763,-1919,-863,-3868,11515,2684,-1216,2387,5879 } }, { "Phase One H 20", 0, 0, /* DJC */ -@@ -6787,24 +6813,20 @@ +@@ -6787,24 +6817,20 @@ { 5932,-1492,-411,-4813,12285,2856,-741,1524,6739 } }, { "SONY DSLR-A5", 128, 0xfeb, { 4950,-580,-103,-5228,12542,3029,-709,1435,7371 } }, @@ -723,7 +731,7 @@ { "SONY NEX-7", 128, 0, { 5491,-1192,-363,-4951,12342,2948,-911,1722,7192 } }, { "SONY SLT-A33", 128, 0, -@@ -6815,8 +6837,8 @@ +@@ -6815,8 +6841,8 @@ { 5932,-1492,-411,-4813,12285,2856,-741,1524,6739 } }, { "SONY SLT-A65", 128, 0, { 5491,-1192,-363,-4951,12342,2948,-911,1722,7192 } }, @@ -734,7 +742,7 @@ }; double cam_xyz[4][3]; char name[130]; -@@ -7060,6 +7082,12 @@ +@@ -7060,6 +7086,12 @@ fread (head, 1, 32, ifp); fseek (ifp, 0, SEEK_END); flen = fsize = ftell(ifp); @@ -747,7 +755,7 @@ if ((cp = (char *) memmem (head, 32, "MMMM", 4)) || (cp = (char *) memmem (head, 32, "IIII", 4))) { parse_phase_one (cp-head); -@@ -7067,6 +7095,8 @@ +@@ -7067,6 +7099,8 @@ } else if (order == 0x4949 || order == 0x4d4d) { if (!memcmp (head+6,"HEAPCCDR",8)) { data_offset = hlen; @@ -756,7 +764,7 @@ parse_ciff (hlen, flen - hlen); } else if (parse_tiff(0)) apply_tiff(); } else if (!memcmp (head,"\xff\xd8\xff\xe1",4) && -@@ -7110,6 +7140,7 @@ +@@ -7110,6 +7144,7 @@ fseek (ifp, 100+28*(shot_select > 0), SEEK_SET); parse_tiff (data_offset = get4()); parse_tiff (thumb_offset+12); @@ -764,7 +772,7 @@ apply_tiff(); } else if (!memcmp (head,"RIFF",4)) { fseek (ifp, 0, SEEK_SET); -@@ -7211,7 +7242,7 @@ +@@ -7211,7 +7246,7 @@ if (height == 3136 && width == 4864) /* Pentax K20D and Samsung GX20 */ { height = 3124; width = 4688; filters = 0x16161616; } if (width == 4352 && (!strcmp(model,"K-r") || !strcmp(model,"K-x"))) @@ -773,7 +781,7 @@ if (width >= 4960 && !strcmp(model,"K-5")) { left_margin = 10; width = 4950; filters = 0x16161616; } if (width == 4736 && !strcmp(model,"K-7")) -@@ -7585,6 +7616,11 @@ +@@ -7585,6 +7620,11 @@ width = 5640; top_margin = 20; left_margin = 62; @@ -785,7 +793,7 @@ } else if (!strcmp(model,"D1")) { cam_mul[0] *= 256/527.0; cam_mul[2] *= 256/317.0; -@@ -8553,7 +8589,7 @@ +@@ -8553,7 +8593,7 @@ for (j=0; j < 3; j++) { for (num = k=0; k < 3; k++) num += xyzd50_srgb[i][k] * inverse[j][k]; @@ -794,7 +802,7 @@ } for (i=0; i < phead[0]/4; i++) oprof[i] = htonl(oprof[i]); -@@ -8779,7 +8815,7 @@ +@@ -8779,7 +8819,7 @@ strncpy (th->desc, desc, 512); strncpy (th->make, make, 64); strncpy (th->model, model, 64); @@ -803,7 +811,7 @@ t = localtime (×tamp); sprintf (th->date, "%04d:%02d:%02d %02d:%02d:%02d", t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec); -@@ -8852,13 +8888,13 @@ +@@ -8852,13 +8892,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) @@ -819,7 +827,7 @@ { int arg, status=0; int timestamp_only=0, thumbnail_only=0, identify_only=0; -@@ -8971,7 +9007,7 @@ +@@ -8971,7 +9011,7 @@ case 'i': identify_only = 1; break; case 'c': write_to_stdout = 1; break; case 'v': verbose = 1; break; @@ -828,7 +836,7 @@ case 'f': four_color_rgb = 1; break; case 'A': FORC4 greybox[c] = atoi(argv[arg++]); case 'a': use_auto_wb = 1; break; -@@ -9234,3 +9270,11 @@ +@@ -9234,3 +9274,11 @@ } return status; }