Support for D5200, D7100 and Coolpix A (see issue 1815, thanks iliasgiarimis!)

This commit is contained in:
michael 2013-04-10 22:46:40 -04:00
parent 718804fb45
commit 0cd60c6643
2 changed files with 50 additions and 18 deletions

View File

@ -6252,6 +6252,8 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 7309,-1403,-519,-8474,16008,2622,-2433,2826,8064 } }, { 7309,-1403,-519,-8474,16008,2622,-2433,2826,8064 } },
{ "NIKON D5100", 0, 0x3de6, { "NIKON D5100", 0, 0x3de6,
{ 8198,-2239,-724,-4871,12389,2798,-1043,2050,7181 } }, { 8198,-2239,-724,-4871,12389,2798,-1043,2050,7181 } },
{ "NIKON D5200", 0, 0, // color matrix copied from D5200 DNG D65 matrix
{ 8322, -3112,-1047,-6367,14342,2179,-988,1638,6394 } },
{ "NIKON D50", 0, 0, { "NIKON D50", 0, 0,
{ 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } }, { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } },
{ "NIKON D600", 0, 0x3e07, { "NIKON D600", 0, 0x3e07,
@ -6260,6 +6262,8 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 8736,-2458,-935,-9075,16894,2251,-1354,1242,8263 } }, { 8736,-2458,-935,-9075,16894,2251,-1354,1242,8263 } },
{ "NIKON D7000", 0, 0, /* RT - Tanveer(tsk1979) */ { "NIKON D7000", 0, 0, /* RT - Tanveer(tsk1979) */
{ 7530,-1942,-255,-4318,11390,3362,-926,1694,7649 } }, { 7530,-1942,-255,-4318,11390,3362,-926,1694,7649 } },
{ "NIKON D7100", 0, 0x3e00, // color matrix and WP copied from D7100 DNG D65 matrix
{ 8322,-3112,-1047,-6367,14342,2179,-988,1638,6394 } },
{ "NIKON D700", 0, 0, /* RT */ { "NIKON D700", 0, 0, /* RT */
{ 8364,-2503,-352,-6307,14026,2492,-1134,1512,8156 } }, { 8364,-2503,-352,-6307,14026,2492,-1134,1512,8156 } },
{ "NIKON D70", 0, 0, { "NIKON D70", 0, 0,
@ -6296,6 +6300,8 @@ void CLASS adobe_coeff (const char *make, const char *model)
{ 8489,-2583,-1036,-8051,15583,2643,-1307,1407,7354 } }, { 8489,-2583,-1036,-8051,15583,2643,-1307,1407,7354 } },
{ "NIKON E8800", 0, 0, { "NIKON E8800", 0, 0,
{ 7971,-2314,-913,-8451,15762,2894,-1442,1520,7610 } }, { 7971,-2314,-913,-8451,15762,2894,-1442,1520,7610 } },
{ "NIKON COOLPIX A", 0, 0x3e00, // color matrix and WP copied from "COOLPIX A" DNG D65 matrix
{ 8198,-2239,-724,-4871,12389,2798,-1043,205,7181 } },
{ "NIKON COOLPIX P6000", 0, 0, { "NIKON COOLPIX P6000", 0, 0,
{ 9698,-3367,-914,-4706,12584,2368,-837,968,5801 } }, { 9698,-3367,-914,-4706,12584,2368,-837,968,5801 } },
{ "NIKON COOLPIX P7000", 0, 0, { "NIKON COOLPIX P7000", 0, 0,
@ -7465,7 +7471,8 @@ canon_cr2:
!strcmp(model,"D90")) { !strcmp(model,"D90")) {
width -= 42; width -= 42;
} else if (!strcmp(model,"D5100") || } else if (!strcmp(model,"D5100") ||
!strcmp(model,"D7000")) { !strcmp(model,"D7000") ||
!strcmp(model,"COOLPIX A")) {
width -= 44; width -= 44;
} else if (!strcmp(model,"D3200") || } else if (!strcmp(model,"D3200") ||
!strcmp(model,"D600") || !strcmp(model,"D600") ||

View File

@ -1,5 +1,5 @@
--- dcraw.c 2012-12-26 13:09:14 -0500 --- dcraw.c 2012-12-26 13:09:14 -0500
+++ dcraw.cc 2013-03-16 08:12:11 -0400 +++ dcraw.cc 2013-04-09 23:51:55 -0400
@@ -1,3 +1,15 @@ @@ -1,3 +1,15 @@
+/*RT*/#include <glib.h> +/*RT*/#include <glib.h>
+/*RT*/#include <glib/gstdio.h> +/*RT*/#include <glib/gstdio.h>
@ -895,7 +895,15 @@
{ "NIKON D3", 0, 0, { "NIKON D3", 0, 0,
{ 8139,-2171,-663,-8747,16541,2295,-1925,2008,8093 } }, { 8139,-2171,-663,-8747,16541,2295,-1925,2008,8093 } },
{ "NIKON D40X", 0, 0, { "NIKON D40X", 0, 0,
@@ -6651,10 +6258,10 @@ @@ -6645,16 +6252,20 @@
{ 7309,-1403,-519,-8474,16008,2622,-2433,2826,8064 } },
{ "NIKON D5100", 0, 0x3de6,
{ 8198,-2239,-724,-4871,12389,2798,-1043,2050,7181 } },
+ { "NIKON D5200", 0, 0, // color matrix copied from D5200 DNG D65 matrix
+ { 8322, -3112,-1047,-6367,14342,2179,-988,1638,6394 } },
{ "NIKON D50", 0, 0,
{ 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } },
{ "NIKON D600", 0, 0x3e07,
{ 8178,-2245,-609,-4857,12394,2776,-1207,2086,7298 } }, { 8178,-2245,-609,-4857,12394,2776,-1207,2086,7298 } },
{ "NIKON D60", 0, 0, { "NIKON D60", 0, 0,
{ 8736,-2458,-935,-9075,16894,2251,-1354,1242,8263 } }, { 8736,-2458,-935,-9075,16894,2251,-1354,1242,8263 } },
@ -905,12 +913,23 @@
- { 8139,-2171,-663,-8747,16541,2295,-1925,2008,8093 } }, - { 8139,-2171,-663,-8747,16541,2295,-1925,2008,8093 } },
+ { "NIKON D7000", 0, 0, /* RT - Tanveer(tsk1979) */ + { "NIKON D7000", 0, 0, /* RT - Tanveer(tsk1979) */
+ { 7530,-1942,-255,-4318,11390,3362,-926,1694,7649 } }, + { 7530,-1942,-255,-4318,11390,3362,-926,1694,7649 } },
+ { "NIKON D7100", 0, 0x3e00, // color matrix and WP copied from D7100 DNG D65 matrix
+ { 8322,-3112,-1047,-6367,14342,2179,-988,1638,6394 } },
+ { "NIKON D700", 0, 0, /* RT */ + { "NIKON D700", 0, 0, /* RT */
+ { 8364,-2503,-352,-6307,14026,2492,-1134,1512,8156 } }, + { 8364,-2503,-352,-6307,14026,2492,-1134,1512,8156 } },
{ "NIKON D70", 0, 0, { "NIKON D70", 0, 0,
{ 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } }, { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } },
{ "NIKON D800", 0, 0, { "NIKON D800", 0, 0,
@@ -6721,8 +6328,8 @@ @@ -6689,6 +6300,8 @@
{ 8489,-2583,-1036,-8051,15583,2643,-1307,1407,7354 } },
{ "NIKON E8800", 0, 0,
{ 7971,-2314,-913,-8451,15762,2894,-1442,1520,7610 } },
+ { "NIKON COOLPIX A", 0, 0x3e00, // color matrix and WP copied from "COOLPIX A" DNG D65 matrix
+ { 8198,-2239,-724,-4871,12389,2798,-1043,205,7181 } },
{ "NIKON COOLPIX P6000", 0, 0,
{ 9698,-3367,-914,-4706,12584,2368,-837,968,5801 } },
{ "NIKON COOLPIX P7000", 0, 0,
@@ -6721,8 +6334,8 @@
{ 7828,-1761,-348,-5788,14071,1830,-2853,4518,6557 } }, { 7828,-1761,-348,-5788,14071,1830,-2853,4518,6557 } },
{ "OLYMPUS E-330", 0, 0, { "OLYMPUS E-330", 0, 0,
{ 8961,-2473,-1084,-7979,15990,2067,-2319,3035,8249 } }, { 8961,-2473,-1084,-7979,15990,2067,-2319,3035,8249 } },
@ -921,7 +940,7 @@
{ "OLYMPUS E-3", 0, 0xf99, { "OLYMPUS E-3", 0, 0xf99,
{ 9487,-2875,-1115,-7533,15606,2010,-1618,2100,7389 } }, { 9487,-2875,-1115,-7533,15606,2010,-1618,2100,7389 } },
{ "OLYMPUS E-400", 0, 0, { "OLYMPUS E-400", 0, 0,
@@ -6739,26 +6346,26 @@ @@ -6739,26 +6352,26 @@
{ 8785,-2529,-1033,-7639,15624,2112,-1783,2300,7817 } }, { 8785,-2529,-1033,-7639,15624,2112,-1783,2300,7817 } },
{ "OLYMPUS E-520", 0, 0xfd2, { "OLYMPUS E-520", 0, 0xfd2,
{ 8344,-2322,-1020,-7596,15635,2048,-1748,2269,7287 } }, { 8344,-2322,-1020,-7596,15635,2048,-1748,2269,7287 } },
@ -964,7 +983,7 @@
{ "OLYMPUS E-PL5", 0, 0xfcb, { "OLYMPUS E-PL5", 0, 0xfcb,
{ 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } }, { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } },
{ "OLYMPUS E-PM1", 0, 0, { "OLYMPUS E-PM1", 0, 0,
@@ -6781,8 +6388,8 @@ @@ -6781,8 +6394,8 @@
{ 10915,-3677,-982,-5587,12986,2911,-1168,1968,6223 } }, { 10915,-3677,-982,-5587,12986,2911,-1168,1968,6223 } },
{ "OLYMPUS SP570UZ", 0, 0, { "OLYMPUS SP570UZ", 0, 0,
{ 11522,-4044,-1146,-4736,12172,2904,-988,1829,6039 } }, { 11522,-4044,-1146,-4736,12172,2904,-988,1829,6039 } },
@ -975,7 +994,7 @@
{ "OLYMPUS XZ-2", 0, 0, { "OLYMPUS XZ-2", 0, 0,
{ 9777,-3483,-925,-2886,11297,1800,-602,1663,5134 } }, { 9777,-3483,-925,-2886,11297,1800,-602,1663,5134 } },
{ "PENTAX *ist DL2", 0, 0, { "PENTAX *ist DL2", 0, 0,
@@ -6801,8 +6408,8 @@ @@ -6801,8 +6414,8 @@
{ 11095,-3157,-1324,-8377,15834,2720,-1108,947,11688 } }, { 11095,-3157,-1324,-8377,15834,2720,-1108,947,11688 } },
{ "PENTAX K20D", 0, 0, { "PENTAX K20D", 0, 0,
{ 9427,-2714,-868,-7493,16092,1373,-2199,3264,7180 } }, { 9427,-2714,-868,-7493,16092,1373,-2199,3264,7180 } },
@ -986,7 +1005,7 @@
{ "PENTAX K2000", 0, 0, { "PENTAX K2000", 0, 0,
{ 11057,-3604,-1155,-5152,13046,2329,-282,375,8104 } }, { 11057,-3604,-1155,-5152,13046,2329,-282,375,8104 } },
{ "PENTAX K-m", 0, 0, { "PENTAX K-m", 0, 0,
@@ -6861,6 +6468,8 @@ @@ -6861,6 +6474,8 @@
{ 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } }, { 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } },
{ "LEICA D-LUX 5", 143, 0, { "LEICA D-LUX 5", 143, 0,
{ 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } }, { 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } },
@ -995,7 +1014,7 @@
{ "Panasonic DMC-LX7", 143, 0, { "Panasonic DMC-LX7", 143, 0,
{ 10148,-3743,-991,-2837,11366,1659,-701,1893,4899 } }, { 10148,-3743,-991,-2837,11366,1659,-701,1893,4899 } },
{ "LEICA D-LUX 6", 143, 0, { "LEICA D-LUX 6", 143, 0,
@@ -6869,8 +6478,8 @@ @@ -6869,8 +6484,8 @@
{ 16197,-6146,-1761,-2393,10765,1869,366,2238,5248 } }, { 16197,-6146,-1761,-2393,10765,1869,366,2238,5248 } },
{ "LEICA V-LUX 2", 143, 0xfff, { "LEICA V-LUX 2", 143, 0xfff,
{ 16197,-6146,-1761,-2393,10765,1869,366,2238,5248 } }, { 16197,-6146,-1761,-2393,10765,1869,366,2238,5248 } },
@ -1006,7 +1025,7 @@
{ "LEICA V-LUX 3", 143, 0xfff, { "LEICA V-LUX 3", 143, 0xfff,
{ 11904,-4541,-1189,-2355,10899,1662,-296,1586,4289 } }, { 11904,-4541,-1189,-2355,10899,1662,-296,1586,4289 } },
{ "Panasonic DMC-FZ200", 143, 0xfff, { "Panasonic DMC-FZ200", 143, 0xfff,
@@ -6879,28 +6488,28 @@ @@ -6879,28 +6494,28 @@
{ 8112,-2563,-740,-3730,11784,2197,-941,2075,4933 } }, { 8112,-2563,-740,-3730,11784,2197,-941,2075,4933 } },
{ "Panasonic DMC-FX150", 15, 0xfff, { "Panasonic DMC-FX150", 15, 0xfff,
{ 9082,-2907,-925,-6119,13377,3058,-1797,2641,5609 } }, { 9082,-2907,-925,-6119,13377,3058,-1797,2641,5609 } },
@ -1055,7 +1074,7 @@
{ "Panasonic DMC-GH3", 144, 0, { "Panasonic DMC-GH3", 144, 0,
{ 6559,-1752,-491,-3672,11407,2586,-962,1875,5130 } }, { 6559,-1752,-491,-3672,11407,2586,-962,1875,5130 } },
{ "Panasonic DMC-GX1", 143, 0, { "Panasonic DMC-GX1", 143, 0,
@@ -6971,24 +6580,22 @@ @@ -6971,24 +6586,22 @@
{ 5932,-1492,-411,-4813,12285,2856,-741,1524,6739 } }, { 5932,-1492,-411,-4813,12285,2856,-741,1524,6739 } },
{ "SONY DSLR-A5", 128, 0xfeb, { "SONY DSLR-A5", 128, 0xfeb,
{ 4950,-580,-103,-5228,12542,3029,-709,1435,7371 } }, { 4950,-580,-103,-5228,12542,3029,-709,1435,7371 } },
@ -1092,7 +1111,7 @@
{ "SONY NEX-6", 128, 0, { "SONY NEX-6", 128, 0,
{ 6129,-1545,-418,-4930,12490,2743,-977,1693,6615 } }, { 6129,-1545,-418,-4930,12490,2743,-977,1693,6615 } },
{ "SONY NEX-7", 128, 0, { "SONY NEX-7", 128, 0,
@@ -7004,13 +6611,13 @@ @@ -7004,13 +6617,13 @@
{ "SONY SLT-A55", 128, 0, { "SONY SLT-A55", 128, 0,
{ 5932,-1492,-411,-4813,12285,2856,-741,1524,6739 } }, { 5932,-1492,-411,-4813,12285,2856,-741,1524,6739 } },
{ "SONY SLT-A57", 128, 0, { "SONY SLT-A57", 128, 0,
@ -1110,7 +1129,7 @@
}; };
double cam_xyz[4][3]; double cam_xyz[4][3];
char name[130]; char name[130];
@@ -7259,13 +6866,20 @@ @@ -7259,13 +6872,20 @@
fread (head, 1, 32, ifp); fread (head, 1, 32, ifp);
fseek (ifp, 0, SEEK_END); fseek (ifp, 0, SEEK_END);
flen = fsize = ftell(ifp); flen = fsize = ftell(ifp);
@ -1133,7 +1152,7 @@
parse_ciff (hlen, flen - hlen); parse_ciff (hlen, flen - hlen);
} else if (parse_tiff(0)) apply_tiff(); } else if (parse_tiff(0)) apply_tiff();
} else if (!memcmp (head,"\xff\xd8\xff\xe1",4) && } else if (!memcmp (head,"\xff\xd8\xff\xe1",4) &&
@@ -7310,6 +6924,7 @@ @@ -7310,6 +6930,7 @@
fseek (ifp, 100+28*(shot_select > 0), SEEK_SET); fseek (ifp, 100+28*(shot_select > 0), SEEK_SET);
parse_tiff (data_offset = get4()); parse_tiff (data_offset = get4());
parse_tiff (thumb_offset+12); parse_tiff (thumb_offset+12);
@ -1141,7 +1160,7 @@
apply_tiff(); apply_tiff();
} else if (!memcmp (head,"RIFF",4)) { } else if (!memcmp (head,"RIFF",4)) {
fseek (ifp, 0, SEEK_SET); fseek (ifp, 0, SEEK_SET);
@@ -7407,7 +7022,7 @@ @@ -7407,7 +7028,7 @@
if (height == 3136 && width == 4864) /* Pentax K20D and Samsung GX20 */ if (height == 3136 && width == 4864) /* Pentax K20D and Samsung GX20 */
{ height = 3124; width = 4688; filters = 0x16161616; } { height = 3124; width = 4688; filters = 0x16161616; }
if (width == 4352 && (!strcmp(model,"K-r") || !strcmp(model,"K-x"))) if (width == 4352 && (!strcmp(model,"K-r") || !strcmp(model,"K-x")))
@ -1150,7 +1169,13 @@
if (width >= 4960 && !strncmp(model,"K-5",3)) if (width >= 4960 && !strncmp(model,"K-5",3))
{ left_margin = 10; width = 4950; filters = 0x16161616; } { left_margin = 10; width = 4950; filters = 0x16161616; }
if (width == 4736 && !strcmp(model,"K-7")) if (width == 4736 && !strcmp(model,"K-7"))
@@ -7854,7 +7469,7 @@ @@ -7850,11 +7471,12 @@
!strcmp(model,"D90")) {
width -= 42;
} else if (!strcmp(model,"D5100") ||
- !strcmp(model,"D7000")) {
+ !strcmp(model,"D7000") ||
+ !strcmp(model,"COOLPIX A")) {
width -= 44; width -= 44;
} else if (!strcmp(model,"D3200") || } else if (!strcmp(model,"D3200") ||
!strcmp(model,"D600") || !strcmp(model,"D600") ||
@ -1159,7 +1184,7 @@
width -= 46; width -= 46;
} else if (!strcmp(model,"D4")) { } else if (!strcmp(model,"D4")) {
width -= 52; width -= 52;
@@ -8766,194 +8381,7 @@ @@ -8766,194 +8388,7 @@
} }
#endif #endif
@ -1355,7 +1380,7 @@
struct tiff_tag { struct tiff_tag {
ushort tag, type; ushort tag, type;
@@ -8976,585 +8404,12 @@ @@ -8976,585 +8411,12 @@
unsigned gps[26]; unsigned gps[26];
char desc[512], make[64], model[64], soft[32], date[20], artist[64]; char desc[512], make[64], model[64], soft[32], date[20], artist[64];
}; };