Author: post
Date: 2009-06-23 18:50:10 +0200 (Tue, 23 Jun 2009)
New Revision: 2503

Modified:
   trunk/plugins/demosaic/demosaic.c
Log:
Properly unrolled loop in demosaic.

Modified: trunk/plugins/demosaic/demosaic.c
===================================================================
--- trunk/plugins/demosaic/demosaic.c   2009-06-08 17:56:26 UTC (rev 2502)
+++ trunk/plugins/demosaic/demosaic.c   2009-06-23 16:50:10 UTC (rev 2503)
@@ -334,8 +334,7 @@
   const unsigned int filters = t->filters;
   const int start_y = t->start_y;
   const int end_y = t->end_y;
-  int dir[5] = { 1, image->pitch, -1, -image->pitch, 1 };
-  int row, col, c, d, i;
+  int row, col, c, d;
        int diffA, diffB, guessA, guessB;
        int p = image->pitch;
   ushort (*pix)[4];
@@ -371,17 +370,12 @@
   for (row=start_y-2; row < end_y+2; row++)
     for (col=1+(FC(row,2) & 1), c=FC(row,col+1); col < image->w-1; col+=2) {
       pix = (ushort (*)[4])GET_PIXEL(image, col, row);
-#if 1
-      for (i=0; (d=dir[i]) > 0; c=2-c, i++)
-       pix[0][c] = CLIP((pix[-d][c] + pix[d][c] + 2*pix[0][1]
-                       - pix[-d][1] - pix[d][1]) >> 1);
-#else  /* FIXME: Why is this not equivalent? */
-               pix[0][c] = CLIP((pix[-1][c] + pix[1][c] + 2*pix[0][1]
-                       - pix[-1][1] - pix[1][1]) >> 1);
-               c=2-c;
-               pix[0][c] = CLIP((pix[-p][c] + pix[p][c] + 2*pix[0][1]
-                       - pix[-p][1] - pix[p][1]) >> 1);
-#endif
+      pix[0][c] = CLIP((pix[-1][c] + pix[1][c] + 2*pix[0][1]
+          - pix[-1][1] - pix[1][1]) >> 1);
+      c=2-c;
+      pix[0][c] = CLIP((pix[-p][c] + pix[p][c] + 2*pix[0][1]
+          - pix[-p][1] - pix[p][1]) >> 1);
+      c=2-c;
     }
 /*  Calculate blue for red pixels and vice versa:              */
   for (row=start_y-2; row < end_y+2; row++)


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to