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

Reply via email to