Update of /cvsroot/ufraw/ufraw In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv26671
Modified Files: Tag: dcraw-original-branch dcraw.cc Log Message: dcraw original 9.17 (1.453). Index: dcraw.cc =================================================================== RCS file: /cvsroot/ufraw/ufraw/dcraw.cc,v retrieving revision 1.1.2.123 retrieving revision 1.1.2.124 diff -u -d -r1.1.2.123 -r1.1.2.124 --- dcraw.cc 1 Aug 2012 03:15:35 -0000 1.1.2.123 +++ dcraw.cc 23 Dec 2012 07:00:08 -0000 1.1.2.124 @@ -23,7 +23,7 @@ $Date$ */ -#define DCRAW_VERSION "9.16" +#define DCRAW_VERSION "9.17" #ifndef _GNU_SOURCE #define _GNU_SOURCE @@ -959,19 +959,21 @@ else ip[col][c] = (ip[col-1][c] + ip[col+1][c] + 1) >> 1; } for ( ; rp < ip[0]; rp+=4) { - if (unique_id < 0x80000218) { - rp[0] -= 512; - goto next; - } else if (unique_id == 0x80000285) { -next: pix[0] = rp[0] + rp[2]; - pix[2] = rp[0] + rp[1]; - pix[1] = rp[0] + ((-778*rp[1] - (rp[2] << 11)) >> 12); - } else { + if (unique_id == 0x80000218 || + unique_id == 0x80000250 || + unique_id == 0x80000261 || + unique_id == 0x80000281 || + unique_id == 0x80000287) { rp[1] = (rp[1] << 2) + hue; rp[2] = (rp[2] << 2) + hue; pix[0] = rp[0] + (( 50*rp[1] + 22929*rp[2]) >> 14); pix[1] = rp[0] + ((-5640*rp[1] - 11751*rp[2]) >> 14); pix[2] = rp[0] + ((29040*rp[1] - 101*rp[2]) >> 14); + } else { + if (unique_id < 0x80000218) rp[0] -= 512; + pix[0] = rp[0] + rp[2]; + pix[2] = rp[0] + rp[1]; + pix[1] = rp[0] + ((-778*rp[1] - (rp[2] << 11)) >> 12); } FORC3 rp[c] = CLIP(pix[c] * sraw_mul[c] >> 10); } @@ -1140,23 +1142,6 @@ } /* - Figure out if a NEF file is compressed. These fancy heuristics - are only needed for the D100, thanks to a bug in some cameras - that tags all images as "compressed". - */ -int CLASS nikon_is_compressed() -{ - uchar test[256]; - int i; - - fseek (ifp, data_offset, SEEK_SET); - fread (test, 1, 256, ifp); - for (i=15; i < 256; i+=16) - if (test[i]) return 1; - return 0; -} - -/* Returns 1 for a Coolpix 995, 0 for anything else. */ int CLASS nikon_e995() @@ -1597,9 +1582,7 @@ if ((diff & (1 << (len[c]-1))) == 0) diff -= (1 << len[c]) - 1; if (diff == 65535) diff = -32768; - pred[c] += diff; - if (row >= 0 && (unsigned)(col+c) < width) - RAW(row,col+c) = pred[c]; + RAW(row,col+c) = pred[c] += diff; } } } @@ -1787,8 +1770,7 @@ } } else if ((nonz[i & 1] = pana_bits(8)) || i > 11) pred[i & 1] = nonz[i & 1] << 4 | pana_bits(4); - if (col < width) - if ((RAW(row,col) = pred[col & 1]) > 4098) derror(); + if ((RAW(row,col) = pred[col & 1]) > 4098 && col < width) derror(); } } @@ -2460,7 +2442,7 @@ bit += 7; } for (i=0; i < 16; i++, col+=2) - if (col < width) RAW(row,col) = curve[pix[i] << 1] >> 2; + RAW(row,col) = curve[pix[i] << 1] >> 2; col -= col & 1 ? 1:31; } } @@ -3392,11 +3374,8 @@ mask[0][3] = -2; goto sides; } - if (load_raw == &CLASS sony_load_raw) { - mask[0][3] = 9; - goto sides; - } if (load_raw == &CLASS canon_600_load_raw || + load_raw == &CLASS sony_load_raw || (load_raw == &CLASS eight_bit_load_raw && strncmp(model,"DC2",3)) || load_raw == &CLASS kodak_262_load_raw || (load_raw == &CLASS packed_load_raw && (load_flags & 32))) { @@ -4788,7 +4767,7 @@ fseek (ifp, i, SEEK_CUR); get2_rggb: FORC4 cam_mul[c ^ (c >> 1)] = get2(); - i = len == 1312 ? 112:22; + i = len >> 3 == 164 ? 112:22; fseek (ifp, i, SEEK_CUR); FORC4 sraw_mul[c ^ (c >> 1)] = get2(); } @@ -5570,9 +5549,17 @@ case 262: load_raw = &CLASS kodak_262_load_raw; break; case 34713: - load_raw = &CLASS nikon_load_raw; break; + if ((raw_width+9)/10*16*raw_height == tiff_ifd[raw].bytes) { + load_raw = &CLASS packed_load_raw; + load_flags = 1; + } else if (raw_width*raw_height*2 == tiff_ifd[raw].bytes) { + load_raw = &CLASS unpacked_load_raw; + load_flags = 4; + order = 0x4d4d; + } else + load_raw = &CLASS nikon_load_raw; break; case 34892: - load_raw = &CLASS lossy_dng_load_raw; break; + load_raw = &CLASS lossy_dng_load_raw; break; case 65535: load_raw = &CLASS pentax_load_raw; break; case 65000: @@ -5586,7 +5573,8 @@ } if (!dng_version) if ( (tiff_samples == 3 && tiff_ifd[raw].bytes && - tiff_bps != 14 && tiff_bps != 2048 && tiff_compress != 32770) + tiff_bps != 14 && tiff_bps != 2048 && + tiff_compress != 32769 && tiff_compress != 32770) || (tiff_bps == 8 && !strstr(make,"KODAK") && !strstr(make,"Kodak") && !strstr(model2,"DEBUG RAW"))) is_raw = 0; @@ -6004,7 +5992,7 @@ } else if (tag == 0xc000) { c = order; order = 0x4949; - width = get4(); + if ((width = get4()) > 10000) width = get4(); height = get4(); order = c; } @@ -6305,6 +6293,8 @@ { 4716,603,-830,-7798,15474,2480,-1496,1937,6651 } }, { "Canon EOS 5D", 0, 0xe6c, { 6347,-479,-972,-8297,15954,2480,-1968,2131,7649 } }, + { "Canon EOS 6D", 0, 0x3c82, /* DJC */ + { 5305,-1175,-247,-4398,10046,4353,-1177,2269,7174 } }, { "Canon EOS 7D", 0, 0x3510, { 6844,-996,-856,-3876,11761,2396,-593,1772,6198 } }, { "Canon EOS 10D", 0, 0xfa0, @@ -6341,6 +6331,8 @@ { 6771,-1139,-977,-7818,15123,2928,-1244,1437,7533 } }, { "Canon EOS 1100D", 0, 0x3510, { 6444,-904,-893,-4563,12308,2535,-903,2016,6728 } }, + { "Canon EOS M", 0, 0, + { 6602,-841,-939,-4472,12458,2247,-975,2039,6148 } }, { "Canon EOS-1Ds Mark III", 0, 0x3bb0, { 5859,-211,-930,-8255,16017,2353,-1732,1887,7448 } }, { "Canon EOS-1Ds Mark II", 0, 0xe80, @@ -6373,6 +6365,8 @@ { 12177,-4817,-1069,-1612,9864,2049,-98,850,4471 } }, { "Canon PowerShot G12", 0, 0, { 13244,-5501,-1248,-1508,9858,1935,-270,1083,4366 } }, + { "Canon PowerShot G15", 0, 0, /* DJC */ + { 6122,-2591,310,-3649,8603,5047,-212,621,4435 } }, { "Canon PowerShot G1 X", 0, 0, { 7378,-1255,-1043,-4088,12251,2048,-876,1946,5805 } }, { "Canon PowerShot G1", 0, 0, @@ -6411,6 +6405,12 @@ { 13440,-5896,-1279,-1236,9598,1931,-180,1001,4651 } }, { "Canon PowerShot S100", 0, 0, { 7968,-2565,-636,-2873,10697,2513,180,667,4211 } }, + { "Canon PowerShot S110", 0, 0, /* DJC */ + { 6150,-2362,-24,-3958,9498,4462,-234,827,4451 } }, + { "Canon PowerShot SX1 IS", 0, 0, + { 6578,-259,-502,-5974,13030,3309,-308,1058,4970 } }, + { "Canon PowerShot SX50 HS", 0, 0, /* DJC */ + { 11743,-5718,-170,-1881,7849,4034,-415,1610,5972 } }, { "Canon PowerShot A470", 0, 0, /* DJC */ { 12513,-4407,-1242,-2680,10276,2405,-878,2215,4734 } }, { "Canon PowerShot A610", 0, 0, /* DJC */ @@ -6427,8 +6427,6 @@ { 14573,-5482,-1546,-1266,9799,1468,-1040,1912,3810 } }, { "Canon PowerShot S3 IS", 0, 0, /* DJC */ { 14062,-5199,-1446,-4712,12470,2243,-1286,2028,4836 } }, - { "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 } }, { "Canon PowerShot SX220", 0, 0, /* DJC */ @@ -6457,12 +6455,12 @@ { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, { "FUJIFILM F6", 0, 0, { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, - { "FUJIFILM F77", 0, 0, + { "FUJIFILM F77", 0, 0xfe9, { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, { "FUJIFILM F7", 0, 0, { 10004,-3219,-1201,-7036,15047,2107,-1863,2565,7736 } }, { "FUJIFILM F8", 0, 0, - { 11044,-3888,-1120,-7248,15168,2208,-1531,2277,8069 } }, + { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, { "FUJIFILM S100FS", 514, 0, { 11521,-4355,-1065,-6524,13767,3058,-1466,1984,6045 } }, { "FUJIFILM S200EXR", 512, 0x3fff, @@ -6513,6 +6511,10 @@ { 13509,-6199,-1254,-4430,12733,1865,-331,1441,5022 } }, { "FUJIFILM X-Pro1", 0, 0, { 10413,-3996,-993,-3721,11640,2361,-733,1540,6011 } }, + { "FUJIFILM X-E1", 0, 0, + { 10413,-3996,-993,-3721,11640,2361,-733,1540,6011 } }, + { "FUJIFILM XF1", 0, 0, + { 13509,-6199,-1254,-4430,12733,1865,-331,1441,5022 } }, { "FUJIFILM X-S1", 0, 0, { 13509,-6199,-1254,-4430,12733,1865,-331,1441,5022 } }, { "Imacon Ixpress", 0, 0, /* DJC */ @@ -6531,15 +6533,15 @@ { 10592,-2206,-967,-1944,11685,230,2206,670,1273 } }, { "KODAK EOSDCS3B", 0, 0, { 9898,-2700,-940,-2478,12219,206,1985,634,1031 } }, - { "Kodak DCS520C", 180, 0, + { "Kodak DCS520C", 178, 0, { 24542,-10860,-3401,-1490,11370,-297,2858,-605,3225 } }, - { "Kodak DCS560C", 188, 0, + { "Kodak DCS560C", 177, 0, { 20482,-7172,-3125,-1033,10410,-285,2542,226,3136 } }, - { "Kodak DCS620C", 180, 0, + { "Kodak DCS620C", 177, 0, { 23617,-10175,-3149,-2054,11749,-272,2586,-489,3453 } }, - { "Kodak DCS620X", 185, 0, + { "Kodak DCS620X", 176, 0, { 13095,-6231,154,12221,-21,-2137,895,4602,2258 } }, - { "Kodak DCS660C", 214, 0, + { "Kodak DCS660C", 173, 0, { 18244,-6351,-2739,-791,11193,-521,3711,-129,2802 } }, { "Kodak DCS720X", 0, 0, { 11775,-5884,950,9556,1846,-1286,-1019,6221,2728 } }, @@ -6623,7 +6625,7 @@ { 8736,-2458,-935,-9075,16894,2251,-1354,1242,8263 } }, { "NIKON D3100", 0, 0, { 7911,-2167,-813,-5327,13150,2408,-1288,2483,7968 } }, - { "NIKON D3200", 0, 0, + { "NIKON D3200", 0, 0xfb9, { 7013,-1408,-635,-5268,12902,2640,-1470,2801,7379 } }, { "NIKON D300", 0, 0, { 9030,-1992,-715,-8465,16302,2255,-2689,3217,8069 } }, @@ -6645,6 +6647,8 @@ { 8198,-2239,-724,-4871,12389,2798,-1043,2050,7181 } }, { "NIKON D50", 0, 0, { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } }, + { "NIKON D600", 0, 0x3e07, + { 7866,-2108,-555,-4869,12483,2681,-1176,2069,7501 } }, { "NIKON D60", 0, 0, { 8736,-2458,-935,-9075,16894,2251,-1354,1242,8263 } }, { "NIKON D7000", 0, 0, @@ -6691,6 +6695,8 @@ { 11432,-3679,-1111,-3169,11239,2202,-791,1380,4455 } }, { "NIKON COOLPIX P7100", 0, 0, { 11053,-4269,-1024,-1976,10182,2088,-526,1263,4469 } }, + { "NIKON COOLPIX P7700", 200, 0, + { 10321,-3920,-931,-2750,11146,1824,-442,1545,5539 } }, { "NIKON 1 ", 0, 0, { 8994,-2667,-865,-4594,12324,2552,-699,1786,6260 } }, { "OLYMPUS C5050", 0, 0, @@ -6731,7 +6737,7 @@ { 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, + { "OLYMPUS E-5", 0, 0xeec, { 11200,-3783,-1325,-4576,12593,2206,-695,1742,7504 } }, { "OLYMPUS E-600", 0, 0xfaf, { 8453,-2198,-1092,-7609,15681,2008,-1725,2337,7824 } }, @@ -6751,9 +6757,11 @@ { 15030,-5552,-1806,-3987,12387,1767,-592,1670,7023 } }, { "OLYMPUS E-PL3", 0, 0, { 7575,-2159,-571,-3722,11341,2725,-1434,2819,6271 } }, + { "OLYMPUS E-PL5", 0, 0xfcb, /* DJC */ + { 7222,-2971,102,-2890,8534,4358,-1007,1962,6299 } }, { "OLYMPUS E-PM1", 0, 0, { 7575,-2159,-571,-3722,11341,2725,-1434,2819,6271 } }, - { "OLYMPUS E-M5", 0, 0, + { "OLYMPUS E-M5", 0, 0xfe1, { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } }, { "OLYMPUS SP350", 0, 0, { 12078,-4836,-1069,-6671,14306,2578,-786,939,7418 } }, @@ -6797,6 +6805,8 @@ { 8843,-2837,-625,-5025,12644,2668,-411,1234,7410 } }, { "PENTAX K-r", 0, 0, { 9895,-3077,-850,-5304,13035,2521,-883,1768,6936 } }, + { "PENTAX K-5 II", 0, 0, /* DJC */ + { 6735,-2869,84,-3906,9222,4684,-1048,1897,7248 } }, { "PENTAX K-5", 0, 0, { 8713,-2833,-743,-4342,11900,2772,-722,1543,6247 } }, { "PENTAX K-7", 0, 0, @@ -6845,6 +6855,10 @@ { 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } }, { "LEICA D-LUX 5", 143, 0, { 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } }, + { "Panasonic DMC-LX7", 143, 0, + { 10148,-3743,-991,-2837,11366,1659,-701,1893,4899 } }, + { "LEICA D-LUX 6", 143, 0, + { 10148,-3743,-991,-2837,11366,1659,-701,1893,4899 } }, { "Panasonic DMC-FZ100", 143, 0xfff, { 16197,-6146,-1761,-2393,10765,1869,366,2238,5248 } }, { "LEICA V-LUX 2", 143, 0xfff, @@ -6853,6 +6867,10 @@ { 11904,-4541,-1189,-2355,10899,1662,-296,1586,4289 } }, { "LEICA V-LUX 3", 143, 0xfff, { 11904,-4541,-1189,-2355,10899,1662,-296,1586,4289 } }, + { "Panasonic DMC-FZ200", 143, 0xfff, + { 8112,-2563,-740,-3730,11784,2197,-941,2075,4933 } }, + { "LEICA V-LUX 4", 143, 0xfff, + { 8112,-2563,-740,-3730,11784,2197,-941,2075,4933 } }, { "Panasonic DMC-FX150", 15, 0xfff, { 9082,-2907,-925,-6119,13377,3058,-1797,2641,5609 } }, { "Panasonic DMC-G10", 0, 0, @@ -6863,6 +6881,8 @@ { 10113,-3400,-1114,-4765,12683,2317,-377,1437,6710 } }, { "Panasonic DMC-G3", 143, 0xfff, { 6763,-1919,-863,-3868,11515,2684,-1216,2387,5879 } }, + { "Panasonic DMC-G5", 143, 0xfff, + { 7798,-2562,-740,-3879,11584,2613,-1055,2248,5434 } }, { "Panasonic DMC-GF1", 15, 0xf92, { 7888,-1902,-1011,-8106,16085,2099,-2353,2866,7330 } }, { "Panasonic DMC-GF2", 143, 0xfff, @@ -6895,6 +6915,8 @@ { 21014,-7891,-2613,-3056,12201,856,-2203,5125,8042 } }, { "SAMSUNG EX1", 0, 0x3e00, { 8898,-2498,-994,-3144,11328,2066,-760,1381,4576 } }, + { "SAMSUNG EX2F", 0, 0x7ff, + { 10648,-3897,-1055,-2022,10573,1668,-492,1611,4742 } }, { "SAMSUNG NX2", 0, 0xfff, /* NX20, NX200, NX210 */ { 6933,-2268,-753,-4921,13387,1647,-803,1641,6096 } }, { "SAMSUNG NX1000", 0, 0, @@ -6909,14 +6931,16 @@ { 11885,-3968,-1473,-4214,12299,1916,-835,1655,5549 } }, { "Sinar", 0, 0, /* DJC */ { 16442,-2956,-2422,-2877,12128,750,-1136,6066,4559 } }, - { "SONY DSC-F828", 491, 0, + { "SONY DSC-F828", 0, 0, { 7924,-1910,-777,-8226,15459,2998,-1517,2199,6818,-7242,11401,3481 } }, { "SONY DSC-R1", 512, 0, { 8512,-2641,-694,-8042,15670,2526,-1821,2117,7414 } }, { "SONY DSC-V3", 0, 0, { 7511,-2571,-692,-7894,15088,3060,-948,1111,8128 } }, - { "SONY DSC-RX100", 192, 0, /* DJC */ - { 7329,-2746,-405,-2691,9338,3354,-136,1259,5051 } }, + { "SONY DSC-RX100", 200, 0, + { 8651,-2754,-1057,-3464,12207,1373,-568,1398,4434 } }, + { "SONY DSC-RX1", 128, 0, /* DJC */ + { 4582,-1507,259,-4355,9689,4667,-1160,2083,7342 } }, { "SONY DSLR-A100", 0, 0xfeb, { 9437,-2811,-774,-8405,16215,2290,-710,596,7181 } }, { "SONY DSLR-A290", 0, 0, @@ -6955,6 +6979,8 @@ { 6549,-1550,-436,-4880,12435,2753,-854,1868,6976 } }, { "SONY NEX-5", 128, 0, /* Adobe */ { 6549,-1550,-436,-4880,12435,2753,-854,1868,6976 } }, + { "SONY NEX-6", 128, 0, + { 6129,-1545,-418,-4930,12490,2743,-977,1693,6615 } }, { "SONY NEX-7", 128, 0, { 5491,-1192,-363,-4951,12342,2948,-911,1722,7192 } }, { "SONY NEX", 128, 0, /* NEX-C3, NEX-F3 */ @@ -6968,11 +6994,13 @@ { "SONY SLT-A55", 128, 0, { 5932,-1492,-411,-4813,12285,2856,-741,1524,6739 } }, { "SONY SLT-A57", 128, 0, - { 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 } }, + { 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 } }, { "SONY SLT-A65", 128, 0, { 5491,-1192,-363,-4951,12342,2948,-911,1722,7192 } }, { "SONY SLT-A77", 128, 0, { 5491,-1192,-363,-4951,12342,2948,-911,1722,7192 } }, + { "SONY SLT-A99", 128, 0, + { 6344,-1612,-462,-4863,12477,2681,-865,1786,6899 } }, }; double cam_xyz[4][3]; char name[130]; @@ -7165,6 +7193,7 @@ { 12310144, "CASIO", "EX-Z850" ,1 }, { 12489984, "CASIO", "EX-Z8" ,1 }, { 15499264, "CASIO", "EX-Z1050" ,1 }, + { 18702336, "CASIO", "EX-ZR100" ,1 }, { 7426656, "CASIO", "EX-P505" ,1 }, { 9313536, "CASIO", "EX-P600" ,1 }, { 10979200, "CASIO", "EX-P700" ,1 }, @@ -7369,7 +7398,7 @@ { height = 3124; width = 4688; filters = 0x16161616; } if (width == 4352 && (!strcmp(model,"K-r") || !strcmp(model,"K-x"))) { width = 4309; filters = 0x16161616; } - if (width >= 4960 && !strcmp(model,"K-5")) + if (width >= 4960 && !strncmp(model,"K-5",3)) { left_margin = 10; width = 4950; filters = 0x16161616; } if (width == 4736 && !strcmp(model,"K-7")) { height = 3122; width = 4684; filters = 0x16161616; top_margin = 2; } @@ -7414,6 +7443,7 @@ case 3344: width -= 66; case 3872: width -= 6; } + if (height > width) SWAP(height,width); filters = 0; load_raw = &CLASS canon_sraw_load_raw; } else if (!strcmp(model,"PowerShot 600")) { @@ -7692,6 +7722,14 @@ width = 4048; top_margin = 11; left_margin = 104; + } else if (is_canon && raw_width == 4176) { + height = 3045; + width = 4072; + left_margin = 96; + mask[0][0] = top_margin = 17; + mask[0][2] = raw_height; + mask[0][3] = 80; + filters = 0x49494949; } else if (is_canon && raw_width == 4312) { top_margin = 18; left_margin = 22; @@ -7758,6 +7796,10 @@ top_margin = 51; left_margin = 158; goto canon_cr2; + } else if (is_canon && raw_width == 5568) { + top_margin = 38; + left_margin = 72; + goto canon_cr2; } else if (is_canon && raw_width == 5712) { height = 3752; width = 5640; @@ -7801,6 +7843,7 @@ !strcmp(model,"D7000")) { width -= 44; } else if (!strcmp(model,"D3200") || + !strcmp(model,"D600") || !strcmp(model,"D800")) { width -= 46; } else if (!strcmp(model,"D4")) { @@ -7811,11 +7854,8 @@ !strncmp(model,"D70",3)) { width--; } else if (!strcmp(model,"D100")) { - if (tiff_compress == 34713 && !nikon_is_compressed()) { - load_raw = &CLASS packed_load_raw; - load_flags |= 1; + if (load_flags) raw_width = (width += 3) + 3; - } } else if (!strcmp(model,"D200")) { left_margin = 1; width -= 4; @@ -7828,6 +7868,8 @@ else width -= 8; } else if (!strncmp(model,"D300",4)) { width -= 32; + } else if (!strcmp(make,"NIKON") && raw_width == 4032) { + adobe_coeff ("NIKON","COOLPIX P7700"); } else if (!strncmp(model,"COOLPIX P",9)) { load_flags = 24; filters = 0x94949494; @@ -7943,13 +7985,12 @@ maximum = (is_raw == 2 && shot_select) ? 0x2f00 : 0x3e00; top_margin = (raw_height - height) >> 2 << 1; left_margin = (raw_width - width ) >> 2 << 1; + if (width == 2848) filters = 0x16161616; if (width == 3328) { width = 3262; left_margin = 34; } - if (!strcmp(model,"X10") || !strcmp(model,"X-S1")) - filters = 0x16161616; - if (!strcmp(model,"X-Pro1")) { + if (width == 4952) { left_margin = 0; filters = 2; } @@ -8085,6 +8126,13 @@ load_raw = &CLASS unpacked_load_raw; load_flags = 6; maximum = 0x3df; + } else if (!strcmp(model,"EX2F")) { + height = 3045; + width = 4070; + top_margin = 3; + order = 0x4949; + filters = 0x49494949; + load_raw = &CLASS unpacked_load_raw; } else if (!strcmp(model,"STV680 VGA")) { height = 484; width = 644; @@ -8292,6 +8340,9 @@ thumb_length = flen - (thumb_offset = 0xa39800); thumb_height = 480; thumb_width = 640; + } else if (!strcmp(model,"XZ-2")) { + load_raw = &CLASS packed_load_raw; + load_flags = 24; } } else if (!strcmp(model,"N Digital")) { height = 2047; @@ -8302,6 +8353,7 @@ } else if (!strcmp(model,"DSC-F828")) { width = 3288; left_margin = 5; + mask[1][3] = -17; data_offset = 862144; load_raw = &CLASS sony_load_raw; filters = 0x9c9c9c9c; @@ -8310,6 +8362,7 @@ } else if (!strcmp(model,"DSC-V3")) { width = 3109; left_margin = 59; + mask[0][1] = 9; data_offset = 787392; load_raw = &CLASS sony_load_raw; } else if (!strcmp(make,"SONY") && raw_width == 3984) { @@ -8579,6 +8632,11 @@ height = 2752; width = 3672; raw_width = 5632; + } else if (!strcmp(model,"EX-ZR100")) { + height = 3044; + width = 4072; + raw_width = 4096; + load_flags = 80; } else if (!strcmp(model,"EX-P505")) { height = 1928; width = 2568; @@ -9316,17 +9374,19 @@ if (!is_raw) goto next; shrink = filters && (half_size || (!identify_only && (threshold || aber[0] != 1 || aber[2] != 1))); - if (document_mode == 3) { - top_margin = left_margin = fuji_width = 0; - height = raw_height; - if (width <= raw_width * 8 / tiff_bps) - width = raw_width * 8 / tiff_bps; - else width = raw_width; - } iheight = (height + shrink) >> shrink; iwidth = (width + shrink) >> shrink; if (identify_only) { if (verbose) { + if (document_mode == 3) { + top_margin = left_margin = fuji_width = 0; + height = raw_height; + if (width <= raw_width * 8 / tiff_bps) + width = raw_width * 8 / tiff_bps; + else width = raw_width; + } + iheight = (height + shrink) >> shrink; + iwidth = (width + shrink) >> shrink; if (use_fuji_rotate) { if (fuji_width) { fuji_width = (fuji_width - 1 + shrink) >> shrink; @@ -9364,8 +9424,6 @@ memcpy (rgb_cam, cmatrix, sizeof cmatrix); raw_color = 0; } - image = (ushort (*)[4]) calloc (iheight*iwidth, sizeof *image); - merror (image, "main()"); if (meta_length) { meta_data = (char *) malloc (meta_length); merror (meta_data, "main()"); @@ -9373,6 +9431,9 @@ if (filters || colors == 1) { raw_image = (ushort *) calloc ((raw_height+7)*raw_width, 2); merror (raw_image, "main()"); + } else { + image = (ushort (*)[4]) calloc (iheight*iwidth, sizeof *image); + merror (image, "main()"); } if (verbose) fprintf (stderr,_("Loading %s %s image from %s ...\n"), @@ -9384,7 +9445,18 @@ if (raw_image && read_from_stdin) fread (raw_image, 2, raw_height*raw_width, stdin); else (*load_raw)(); + if (document_mode == 3) { + top_margin = left_margin = fuji_width = 0; + height = raw_height; + if (width <= raw_width * 8 / tiff_bps) + width = raw_width * 8 / tiff_bps; + else width = raw_width; + } + iheight = (height + shrink) >> shrink; + iwidth = (width + shrink) >> shrink; if (raw_image) { + image = (ushort (*)[4]) calloc (iheight*iwidth, sizeof *image); + merror (image, "main()"); crop_masked_pixels(); free (raw_image); } ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d _______________________________________________ ufraw-cvs mailing list ufraw-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ufraw-cvs