Update of /cvsroot/ufraw/ufraw
In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv7379

Modified Files:
        dcraw.cc 
Log Message:
dcraw modified 9.02 (1.435). Changelog: Support the Sony A450, Kodak Z981, 
Olympus E-P2, and Panasonic G2 & GF1.

Index: dcraw.cc
===================================================================
RCS file: /cvsroot/ufraw/ufraw/dcraw.cc,v
retrieving revision 1.220
retrieving revision 1.221
diff -u -d -r1.220 -r1.221
--- dcraw.cc    31 May 2010 14:30:14 -0000      1.220
+++ dcraw.cc    11 Jun 2010 13:15:13 -0000      1.221
@@ -22,7 +22,7 @@
 #include "uf_progress.h"
 }
 
-#define DCRAW_VERSION "9.01"
+#define DCRAW_VERSION "9.02"
 
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE
@@ -4859,7 +4859,7 @@
   unsigned entries, tag, type, len, save;
   int i, c, wbi=-2, wbtemp=6500;
   float mul[3]={1,1,1}, num;
-  static const unsigned wbtag[]={ 0xfa25,0xfa28,0xfa27,0xfa29,-1,-1,0xfa2a };
+  static const unsigned wbtag[] = { 64037,64040,64039,64041,-1,-1,64042 };
 
   entries = get2();
   if (entries > 1024) return;
@@ -4882,9 +4882,11 @@
       }
     if (tag == 2317) linear_table (len);
     if (tag == 6020) iso_speed = getint(type);
-    if (tag == 0xfa0d) wbi = fgetc(ifp);
+    if (tag == 64013) wbi = fgetc(ifp);
     if ((unsigned) wbi < 7 && tag == wbtag[wbi])
       FORC3 cam_mul[c] = get4();
+    if (tag == 64019) width = getint(type);
+    if (tag == 64020) height = (getint(type)+1) & -2;
     fseek (ifp, save, SEEK_SET);
   }
 }
@@ -5238,6 +5240,12 @@
        FORC4 cblack[filters >> (c << 1) & 3] = dblack[c];
        black = 0;
        break;
+      case 50715:                      /* BlackLevelDeltaH */
+      case 50716:                      /* BlackLevelDeltaV */
+       for (num=i=0; i < (int) len; i++)
+         num += getreal(type);
+       black += num/len + 0.5;
+       break;
       case 50717:                      /* WhiteLevel */
        maximum = getint(type);
        break;
@@ -6471,10 +6479,14 @@
        { 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-620", 0, 0xfb9,
+    { "OLYMPUS E-600", 0, 0xfaf,
+       { 8453,-2198,-1092,-7609,15681,2008,-1725,2337,7824 } },
+    { "OLYMPUS E-620", 0, 0xfaf,
        { 8453,-2198,-1092,-7609,15681,2008,-1725,2337,7824 } },
     { "OLYMPUS E-P1", 0, 0xffd,
        { 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-PL1", 0, 0,
        { 11408,-4289,-1215,-4286,12385,2118,-387,1467,7787 } },
     { "OLYMPUS SP350", 0, 0,
@@ -6547,7 +6559,7 @@
        { 10113,-3400,-1114,-4765,12683,2317,-377,1437,6710 } },
     { "Panasonic DMC-G1", 15, 0xfff,
        { 8199,-2065,-1056,-8124,16156,2033,-2458,3022,7220 } },
-    { "Panasonic DMC-G2", 0, 0,
+    { "Panasonic DMC-G2", 15, 0xf3c,
        { 10113,-3400,-1114,-4765,12683,2317,-377,1437,6710 } },
     { "Panasonic DMC-GF1", 15, 0xf92,
        { 7888,-1902,-1011,-8106,16085,2099,-2353,2866,7330 } },
@@ -6587,7 +6599,9 @@
        { 6038,-1484,-578,-9146,16746,2513,-875,746,7217 } },
     { "SONY DSLR-A380", 0, 0,
        { 6038,-1484,-579,-9145,16746,2512,-875,746,7218 } },
-    { "SONY DSLR-A5", 126, 0,
+    { "SONY DSLR-A450", 128, 0xfeb,
+       { 4950,-580,-103,-5228,12542,3029,-709,1435,7371 } },
+    { "SONY DSLR-A5", 128, 0xfeb,
        { 4950,-580,-103,-5228,12542,3029,-709,1435,7371 } },
     { "SONY DSLR-A700", 126, 0,
        { 5775,-805,-359,-8574,16295,2391,-1943,2341,7249 } },
@@ -7682,6 +7696,7 @@
       load_raw = &CLASS unpacked_load_raw;
       load_flags = 4;
     }
+    zero_is_bad = 1;
     switch (width) {
       case 2568:
        adobe_coeff ("Panasonic","DMC-LC1");  break;
@@ -7695,7 +7710,6 @@
          top_margin = 13;
          filters = 0x49494949;
        }
-       zero_is_bad = 1;
        adobe_coeff ("Panasonic","DMC-FZ8");  break;
       case 3213:
        width -= 27;
@@ -7703,11 +7717,9 @@
        width -= 10;
        load_flags = 2;
        filters = 0x49494949;
-       zero_is_bad = 1;
        adobe_coeff ("Panasonic","DMC-L1");  break;
       case 3304:
        width -= 17;
-       zero_is_bad = 1;
        adobe_coeff ("Panasonic","DMC-FZ30");  break;
       case 3330:
        width += 43;
@@ -7719,7 +7731,6 @@
        if (height > 2480)
            height = 2480 - (top_margin = 10);
        filters = 0x49494949;
-       zero_is_bad = 1;
        adobe_coeff ("Panasonic","DMC-FZ18");  break;
       case 3690:
        height -= 2;
@@ -7731,7 +7742,6 @@
          top_margin = 15;
        else filters = 0x49494949;
        left_margin += 17;
-       zero_is_bad = 1;
        adobe_coeff ("Panasonic","DMC-FZ50");  break;
       case 3710:
        width = 3682;
@@ -7750,7 +7760,6 @@
        width -= 22;
        left_margin = 6;
        load_flags = 2;
-       zero_is_bad = 1;
        adobe_coeff ("Panasonic","DMC-LX1");  break;
       case 4060:
        width = 3982;
@@ -7762,9 +7771,7 @@
          adobe_coeff ("Panasonic","DMC-FZ35");  break;
        }
        filters = 0x49494949;
-       if (!strcmp(model,"DMC-GH1")) break;
-       zero_is_bad = 1;
-       adobe_coeff ("Panasonic","DMC-G1");  break;
+       break;
       case 4172:
       case 4396:
        width -= 28;
@@ -7887,14 +7894,7 @@
       read_shorts (curve, 256);
     } else gamma_curve (0, 3.875, 1, 255);
     load_raw = &CLASS eight_bit_load_raw;
-  } else if (!strcmp(model,"EASYSHARE Z1015 IS")) {
-    height = 2742;
-    width  = 3664;
-    goto ezshare;
-  } else if (!strcmp(model,"EasyShare Z980")) {
-    height = 3006;
-    width  = 4016;
-ezshare:
+  } else if (!strncasecmp(model,"EasyShare",9)) {
     data_offset = 0x15000;
     load_raw = &CLASS packed_load_raw;
   } else if (!strcasecmp(make,"KODAK")) {
@@ -8815,8 +8815,8 @@
     } else if (!is_raw)
       dcraw_message (DCRAW_ERROR,_("Cannot decode file %s\n"), ifname);
     if (!is_raw) goto next;
-    shrink = filters &&
-       (half_size || threshold || aber[0] != 1 || aber[2] != 1);
+    shrink = filters && (half_size ||
+       ((threshold || aber[0] != 1 || aber[2] != 1) && !identify_only));
     iheight = (height + shrink) >> shrink;
     iwidth  = (width  + shrink) >> shrink;
     if (identify_only) {


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
ufraw-cvs mailing list
ufraw-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ufraw-cvs

Reply via email to