Update of /cvsroot/ufraw/ufraw
In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv10504

Modified Files:
        dcraw.cc dcraw.h dcraw_indi.c 
Log Message:
dcraw modified 9.22 (1.467). Changelog: Correctly handle Fuji X-Trans images in 
DNG format.

Index: dcraw.cc
===================================================================
RCS file: /cvsroot/ufraw/ufraw/dcraw.cc,v
retrieving revision 1.316
retrieving revision 1.317
diff -u -d -r1.316 -r1.317
--- dcraw.cc    30 Jun 2014 03:15:09 -0000      1.316
+++ dcraw.cc    4 Jul 2014 02:45:16 -0000       1.317
@@ -342,7 +342,7 @@
     { 0,3,1,0,0,2,0,3,2,1,3,1,1,3,1,3 } };
 
   if (filters == 1) return filter[(row+top_margin)&15][(col+left_margin)&15];
-  if (filters == 9) return xtrans[(row+top_margin+6)%6][(col+left_margin+6)%6];
+  if (filters == 9) return xtrans[(row+6) % 6][(col+6) % 6];
   return FC(row,col);
 }
 
@@ -4610,7 +4610,7 @@
 }
 
 #define TS 512         /* Tile Size */
-#define fcol(row,col) xtrans[(row+top_margin+6)%6][(col+left_margin+6)%6]
+#define fcol(row,col) xtrans[(row+6) % 6][(col+6) % 6]
 
 /*
    Frank Markesteijn's algorithm for Fuji X-Trans sensors
@@ -5845,8 +5845,8 @@
        break;
       case 33422:                      /* CFAPattern */
        if (filters == 9) {
-         FORC(36)
-           xtrans[(c/6+top_margin)%6][(c+left_margin)%6] = fgetc(ifp) & 3;
+          for (i=0; i < 6; i++)
+           FORC(6) xtrans[i][c] = fgetc(ifp) & 3;
          break;
        }
       case 64777:                      /* Kodak P-series */
@@ -6655,7 +6655,7 @@
 
 void CLASS parse_fuji (int offset)
 {
-  unsigned entries, tag, len, save, c;
+  unsigned entries, tag, len, save, i, c;
 
   fseek (ifp, offset, SEEK_SET);
   entries = get4();
@@ -6675,7 +6675,8 @@
       fuji_width = !(fgetc(ifp) & 8);
     } else if (tag == 0x131) {
       filters = 9;
-      FORC(36) xtrans[0][35-c] = fgetc(ifp) & 3;
+      for (i=0; i < 6; i++)
+        FORC(6) xtrans_abs[i][35-(i*c+c)] = fgetc(ifp) & 3;
     } else if (tag == 0x2ff0) {
       FORC4 cam_mul[c ^ 1] = get2();
     } else if (tag == 0xc000) {
@@ -7411,6 +7412,8 @@
        { 8139,-2171,-663,-8747,16541,2295,-1925,2008,8093 } },
     { "Nikon D70", 0, 0,
        { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } },
+    { "Nikon D810", 596, 0,            /* DJC */
+       { 6502,-2328,154,-4249,9943,4307,-1303,2538,8108 } },
     { "Nikon D800", 0, 0,
        { 7866,-2108,-555,-4869,12483,2681,-1176,2069,7501 } },
     { "Nikon D80", 0, 0,
@@ -7663,6 +7666,8 @@
        { 10148,-3743,-991,-2837,11366,1659,-701,1893,4899 } },
     { "Leica D-LUX 6", 15, 0,
        { 10148,-3743,-991,-2837,11366,1659,-701,1893,4899 } },
+    { "Panasonic DMC-FZ1000", 15, 0,   /* DJC */
+       { 5686,-2219,-68,-4143,9912,4232,-1244,2246,5917 } },
     { "Panasonic DMC-FZ100", 15, 0xfff,
        { 16197,-6146,-1761,-2393,10765,1869,366,2238,5248 } },
     { "Leica V-LUX 2", 15, 0xfff,
@@ -8647,6 +8652,10 @@
       filters = 0x16161616;
     }
     if (fuji_layout) raw_width *= is_raw;
+    if (filters == 9)
+      for (i=0; i < 6; i++)
+       FORC(6) xtrans[i][c] =
+         xtrans_abs[((i*c+c)/6+top_margin) % 6][((i*c+c)+left_margin) % 6];
   } else if (!strcmp(model,"KD-400Z")) {
     height = 1712;
     width  = 2312;

Index: dcraw.h
===================================================================
RCS file: /cvsroot/ufraw/ufraw/dcraw.h,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -d -r1.80 -r1.81
--- dcraw.h     15 May 2014 03:30:11 -0000      1.80
+++ dcraw.h     4 Jul 2014 02:45:16 -0000       1.81
@@ -43,7 +43,7 @@
     short order;
     /*const*/
     char *ifname, *ifname_display;
-    char *meta_data, xtrans[6][6];
+    char *meta_data, xtrans[6][6], xtrans_abs[6][6];
     char cdesc[5], desc[512], make[64], model[64], model2[64], artist[64];
     float flash_used, canon_ev, iso_speed, shutter, aperture, focal_len;
     time_t timestamp;

Index: dcraw_indi.c
===================================================================
RCS file: /cvsroot/ufraw/ufraw/dcraw_indi.c,v
retrieving revision 1.115
retrieving revision 1.116
diff -u -d -r1.115 -r1.116
--- dcraw_indi.c        1 Jan 2014 06:00:23 -0000       1.115
+++ dcraw_indi.c        4 Jul 2014 02:45:16 -0000       1.116
@@ -93,7 +93,7 @@
     };
 
     if (filters == 1) return filter[(row + top_margin) & 15][(col + 
left_margin) & 15];
-    if (filters == 9) return xtrans[(row + top_margin + 6) % 6][(col + 
left_margin + 6) % 6];
+    if (filters == 9) return xtrans[(row + 6) % 6][(col + 6) % 6];
     return FC(row, col);
 }
 


------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
ufraw-cvs mailing list
ufraw-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ufraw-cvs

Reply via email to