Update of /cvsroot/ufraw/ufraw In directory vz-cvs-2.sog:/tmp/cvs-serv25866
Modified Files: Tag: dcraw-original-branch dcraw.cc Log Message: dcraw original 9.08 (1.443). Index: dcraw.cc =================================================================== RCS file: /cvsroot/ufraw/ufraw/dcraw.cc,v retrieving revision 1.1.2.113 retrieving revision 1.1.2.114 diff -u -d -r1.1.2.113 -r1.1.2.114 --- dcraw.cc 2 Apr 2011 04:05:47 -0000 1.1.2.113 +++ dcraw.cc 25 May 2011 15:10:51 -0000 1.1.2.114 @@ -23,7 +23,7 @@ $Date$ */ -#define VERSION "9.07" +#define VERSION "9.08" #ifndef _GNU_SOURCE #define _GNU_SOURCE @@ -897,6 +897,8 @@ for (jrow=0; jrow < jh.high; jrow++) { rp = ljpeg_row (jrow, &jh); + if (load_flags & 1) + row = jrow & 1 ? height-1-jrow/2 : jrow/2; for (jcol=0; jcol < jwide; jcol++) { val = *rp++; if (jh.bits <= 12) @@ -4406,10 +4408,12 @@ base = ftell(ifp)-10; fseek (ifp, -2, SEEK_CUR); order = get2(); get2(); - } else if (!strncmp (buf,"FUJIFILM",8) || - !strncmp (buf,"SONY",4) || + } else if (!strncmp (buf,"SONY",4) || !strcmp (buf,"Panasonic")) { - order = 0x4949; + goto nf; + } else if (!strncmp (buf,"FUJIFILM",8)) { + base = ftell(ifp)-10; +nf: order = 0x4949; fseek (ifp, 2, SEEK_CUR); } else if (!strcmp (buf,"OLYMP") || !strcmp (buf,"LEICA") || @@ -4429,7 +4433,7 @@ while (entries--) { tiff_get (base, &tag, &type, &len, &save); tag |= uptag << 16; - if (tag == 2 && strstr(make,"NIKON")) + if (tag == 2 && strstr(make,"NIKON") && !iso_speed) iso_speed = (get2(),get2()); if (tag == 4 && len > 26 && len < 35) { if ((i=(get4(),get2())) != 0x7fff && !iso_speed) @@ -4739,7 +4743,8 @@ static const char *mod[] = { "","DCB2","Volare","Cantare","CMost","Valeo 6","Valeo 11","Valeo 22", "Valeo 11p","Valeo 17","","Aptus 17","Aptus 22","Aptus 75","Aptus 65", - "Aptus 54S","Aptus 65S","Aptus 75S","AFi 5","AFi 6","AFi 7" }; + "Aptus 54S","Aptus 65S","Aptus 75S","AFi 5","AFi 6","AFi 7", + "","","","","","","","","","","","","","","","","","AFi-II 12" }; float romm_cam[3][3]; fseek (ifp, offset, SEEK_SET); @@ -4789,6 +4794,8 @@ FORC4 fscanf (ifp, "%d", neut+c); FORC3 cam_mul[c] = (float) neut[0] / neut[c+1]; } + if (!strcmp(data,"Rows_data")) + load_flags = get4(); parse_mos (from); fseek (ifp, skip+from, SEEK_SET); } @@ -4910,6 +4917,11 @@ tiff_ifd[ifd].samples = len & 7; tiff_ifd[ifd].bps = getint(type); break; + case 61446: + raw_height = 0; + load_raw = &CLASS packed_load_raw; + load_flags = 16 | (get4() && (filters=0x16161616)) << 3; + break; case 259: /* Compression */ tiff_ifd[ifd].comp = get2(); break; @@ -5814,22 +5826,14 @@ } else if (tag == 0x2ff0) { FORC4 cam_mul[c ^ 1] = get2(); } else if (tag == 0xc000) { - raw_height = order; + c = order; order = 0x4949; width = get4(); height = get4(); - order = raw_height; - raw_height = 1; - load_raw = &CLASS packed_load_raw; - load_flags = 16; + order = c; } fseek (ifp, save+len, SEEK_SET); } - if (!raw_height) { - filters = 0x16161616; - load_raw = &CLASS packed_load_raw; - load_flags = 24; - } height <<= fuji_layout; width >>= fuji_layout; } @@ -6117,12 +6121,12 @@ { 4763,712,-646,-6821,14399,2640,-1921,3276,6561 } }, { "Canon EOS 550D", 0, 0x3dd7, { 6941,-1164,-857,-3825,11597,2534,-416,1540,6039 } }, - { "Canon EOS 600D", 0, 0x3510, /* DJC */ - { 5589,-1476,-292,-3401,9372,4030,-706,2038,6350 } }, + { "Canon EOS 600D", 0, 0x3510, + { 6461,-907,-882,-4300,12184,2378,-819,1944,5931 } }, { "Canon EOS 1000D", 0, 0xe43, { 6771,-1139,-977,-7818,15123,2928,-1244,1437,7533 } }, - { "Canon EOS 1100D", 0, 0x3510, /* DJC */ - { 5193,-1423,-226,-3414,9273,4142,-679,2103,6808 } }, + { "Canon EOS 1100D", 0, 0x3510, + { 6444,-904,-893,-4563,12308,2535,-903,2016,6728 } }, { "Canon EOS-1Ds Mark III", 0, 0x3bb0, { 5859,-211,-930,-8255,16017,2353,-1732,1887,7448 } }, { "Canon EOS-1Ds Mark II", 0, 0xe80, @@ -6234,7 +6238,7 @@ { "FUJIFILM FinePix S100FS", 514, 0, { 11521,-4355,-1065,-6524,13767,3058,-1466,1984,6045 } }, { "FUJIFILM FinePix S200EXR", 512, 0x3fff, - { 0 } }, + { 11401,-4498,-1312,-5088,12751,2613,-838,1568,5941 } }, { "FUJIFILM FinePix S20Pro", 0, 0, { 10004,-3219,-1201,-7036,15047,2107,-1863,2565,7736 } }, { "FUJIFILM FinePix S2Pro", 128, 0, @@ -6271,6 +6275,12 @@ { 12300,-5110,-1304,-9117,17143,1998,-1947,2448,8100 } }, { "FUJIFILM FinePix HS10 HS11", 0, 0xf68, { 12440,-3954,-1183,-1123,9674,1708,-83,1614,4086 } }, + { "FUJIFILM FinePix HS20EXR", 0, 0, + { 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 } }, { "Imacon Ixpress", 0, 0, /* DJC */ { 7025,-1415,-704,-5188,13765,1424,-1248,2742,6038 } }, { "KODAK NC2000", 0, 0, @@ -6321,6 +6331,8 @@ { 11313,-3559,-1101,-3893,11891,2257,-1214,2398,4908 } }, { "KODAK EasyShare Z981", 0, 0, { 12729,-4717,-1188,-1367,9187,2582,274,860,4411 } }, + { "KODAK EasyShare Z990", 0, 0xfed, + { 11749,-4048,-1309,-1867,10572,1489,-138,1449,4522 } }, { "KODAK EASYSHARE Z1015", 0, 0xef1, { 11265,-4286,-992,-4694,12343,2647,-1090,1523,5447 } }, { "Leaf CMost", 0, 0, @@ -6391,6 +6403,8 @@ { 6992,-1668,-806,-8138,15748,2543,-874,850,7897 } }, { "NIKON D5000", 0, 0xf00, { 7309,-1403,-519,-8474,16008,2622,-2433,2826,8064 } }, + { "NIKON D5100", 0, 0x3de6, + { 8198,-2239,-724,-4871,12389,2798,-1043,2050,7181 } }, { "NIKON D50", 0, 0, { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } }, { "NIKON D60", 0, 0, @@ -6483,8 +6497,12 @@ { 8343,-2050,-1021,-7715,15705,2103,-1831,2380,8235 } }, { "OLYMPUS E-P2", 0, 0xffd, { 8343,-2050,-1021,-7715,15705,2103,-1831,2380,8235 } }, + { "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 SP350", 0, 0, { 12078,-4836,-1069,-6671,14306,2578,-786,939,7418 } }, { "OLYMPUS SP3", 0, 0, @@ -6499,6 +6517,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 } }, { "PENTAX *ist DL2", 0, 0, { 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } }, { "PENTAX *ist DL", 0, 0, @@ -6601,7 +6621,7 @@ { 7914,1414,-1190,-8777,16582,2280,-2811,4605,5562 } }, { "SAMSUNG EX1", 0, 0x3e00, { 8898,-2498,-994,-3144,11328,2066,-760,1381,4576 } }, - { "SAMSUNG NX10", 0, 0, + { "SAMSUNG NX1", 0, 0, { 10332,-3234,-1168,-6111,14639,1520,-1352,2647,8331 } }, { "SAMSUNG WB2000", 0, 0xfff, { 12093,-3557,-1155,-1000,9534,1733,-22,1787,4576 } }, @@ -6619,6 +6639,8 @@ { 7511,-2571,-692,-7894,15088,3060,-948,1111,8128 } }, { "SONY DSLR-A100", 0, 0xfeb, { 9437,-2811,-774,-8405,16215,2290,-710,596,7181 } }, + { "SONY DSLR-A290", 0, 0, + { 6038,-1484,-579,-9145,16746,2512,-875,746,7218 } }, { "SONY DSLR-A2", 0, 0, { 9847,-3091,-928,-8485,16345,2225,-715,595,7103 } }, { "SONY DSLR-A300", 0, 0, @@ -6924,9 +6946,11 @@ } else if (!strcmp (head, "qktk")) { strcpy (make, "Apple"); strcpy (model,"QuickTake 100"); + load_raw = &CLASS quicktake_100_load_raw; } else if (!strcmp (head, "qktn")) { strcpy (make, "Apple"); strcpy (model,"QuickTake 150"); + load_raw = &CLASS kodak_radc_load_raw; } else if (!memcmp (head,"FUJIFILM",8)) { fseek (ifp, 84, SEEK_SET); thumb_offset = get4(); @@ -6939,7 +6963,7 @@ if (is_raw == 2 && shot_select) parse_fuji (i); } - fseek (ifp, 100, SEEK_SET); + fseek (ifp, 100+28*(shot_select > 0), SEEK_SET); parse_tiff (data_offset = get4()); parse_tiff (thumb_offset+12); apply_tiff(); @@ -7401,7 +7425,8 @@ left_margin = 2; } else if (!strcmp(model,"D5000")) { width -= 42; - } else if (!strcmp(model,"D7000")) { + } else if (!strcmp(model,"D5100") || + !strcmp(model,"D7000")) { width -= 44; } else if (!strcmp(model,"D3100")) { width -= 28; @@ -7433,6 +7458,8 @@ } else if (!strncmp(model,"COOLPIX P",9)) { load_flags = 24; filters = 0x94949494; + if (model[9] == '7' && iso_speed >= 400) + black = 255; } else if (fsize == 1581060) { height = 963; width = 1287; @@ -7538,14 +7565,14 @@ width = 2880; flip = 6; } else if (load_raw != &CLASS packed_load_raw) - maximum = 0x3e00; - if (is_raw == 2 && shot_select) - maximum = 0x2f00; + maximum = (is_raw == 2 && shot_select) ? 0x2f00 : 0x3e00; top_margin = (raw_height - height) >> 2 << 1; left_margin = (raw_width - width ) >> 2 << 1; - if (is_raw == 2) - data_offset += (shot_select > 0) * ( fuji_layout ? - (raw_width *= 2) : raw_height*raw_width*2 ); + if (width == 3328) { + width = 3262; + left_margin = 34; + } + if (fuji_layout) raw_width *= is_raw; if (load_raw == &CLASS fuji_load_raw) { fuji_width = width >> !fuji_layout; width = (height >> fuji_layout) + fuji_width; @@ -7642,8 +7669,8 @@ raw_width = fsize/height/2; order = 0x4d4d; load_raw = &CLASS unpacked_load_raw; - } else if (!strcmp(model,"NX10")) { - height -= top_margin = 4; + } else if (!strncmp(model,"NX1",3)) { + height -= top_margin = 8; width -= 2 * (left_margin = 8); load_flags = 32; } else if (!strcmp(model,"EX1")) { @@ -7952,7 +7979,7 @@ } else gamma_curve (0, 3.875, 1, 255); load_raw = &CLASS eight_bit_load_raw; } else if (!strncasecmp(model,"EasyShare",9)) { - data_offset = 0x15000; + data_offset = data_offset < 0x15000 ? 0x15000 : 0x17000; load_raw = &CLASS packed_load_raw; } else if (!strcasecmp(make,"KODAK")) { if (filters == UINT_MAX) filters = 0x61616161; @@ -8046,7 +8073,8 @@ load_raw = &CLASS kodak_radc_load_raw; filters = 0x61616161; simple_coeff(2); - } else if (!strcmp(model,"QuickTake 100")) { + } else if (!strncmp(model,"QuickTake",9)) { + if (head[5]) strcpy (model+10, "200"); fseek (ifp, 544, SEEK_SET); height = get2(); width = get2(); @@ -8056,14 +8084,6 @@ fseek (ifp, data_offset-6, SEEK_SET); flip = ~get2() & 3 ? 5:6; } - load_raw = &CLASS quicktake_100_load_raw; - filters = 0x61616161; - } else if (!strcmp(model,"QuickTake 150")) { - data_offset = 738 - head[5]; - if (head[5]) strcpy (model+10, "200"); - load_raw = &CLASS kodak_radc_load_raw; - height = 480; - width = 640; filters = 0x61616161; } else if (!strcmp(make,"Rollei") && !load_raw) { switch (raw_width) { ------------------------------------------------------------------------------ vRanger cuts backup time in half-while increasing security. With the market-leading solution for virtual backup and recovery, you get blazing-fast, flexible, and affordable data protection. Download your free trial now. http://p.sf.net/sfu/quest-d2dcopy1 _______________________________________________ ufraw-cvs mailing list ufraw-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ufraw-cvs