Author: post
Date: 2009-08-09 15:35:53 +0200 (Sun, 09 Aug 2009)
New Revision: 102

Modified:
   RawSpeed/DngDecoder.cpp
   RawSpeed/RawDecoder.cpp
Log:
- Fixed corrupt uncompressed DNG.
- Fixed rare division by 0 on DNG blacklevel calculation.

Modified: RawSpeed/DngDecoder.cpp
===================================================================
--- RawSpeed/DngDecoder.cpp     2009-08-09 12:18:38 UTC (rev 101)
+++ RawSpeed/DngDecoder.cpp     2009-08-09 13:35:53 UTC (rev 102)
@@ -187,7 +187,7 @@
           ByteStream in(mFile->getData(slice.offset),slice.count);
           iPoint2D size(width,slice.h);
           iPoint2D pos(0,slice.offsetY);
-          readUncompressedRaw(in,size,pos,width*bps/8,bps,false);
+          readUncompressedRaw(in,size,pos,width*bps/8,bps,true);
         }
 
       } catch (TiffParserException) {
@@ -325,7 +325,8 @@
         int blackbase = blackarray[0] / blackarray[1];
         const gint *blackarrayv = (const 
gint*)raw->getEntry(BLACKLEVELDELTAV)->getIntArray();
         for (int i = 0; i < new_size.y; i++)
-          black = MIN(black, blackbase + blackarrayv[i*2] / 
blackarrayv[i*2+1]);
+          if (blackarrayv[i*2+1])
+            black = MIN(black, blackbase + blackarrayv[i*2] / 
blackarrayv[i*2+1]);
       } else {
         const guint *blackarray = raw->getEntry(BLACKLEVEL)->getIntArray();
         if (blackarray[1])
@@ -434,7 +435,8 @@
         int blackbase = blackarray[0] / blackarray[1];
         const gint *blackarrayv = (const 
gint*)raw->getEntry(BLACKLEVELDELTAV)->getIntArray();
         for (int i = 0; i < new_size.y; i++)
-          black = MIN(black, blackbase + blackarrayv[i*2] / 
blackarrayv[i*2+1]);
+          if (blackarrayv[i*2+1])
+            black = MIN(black, blackbase + blackarrayv[i*2] / 
blackarrayv[i*2+1]);
       } else {
         const guint *blackarray = raw->getEntry(BLACKLEVEL)->getIntArray();
         if ( blackarray[1] )

Modified: RawSpeed/RawDecoder.cpp
===================================================================
--- RawSpeed/RawDecoder.cpp     2009-08-09 12:18:38 UTC (rev 101)
+++ RawSpeed/RawDecoder.cpp     2009-08-09 13:35:53 UTC (rev 102)
@@ -71,12 +71,6 @@
 
   } else {
 
-    if (bitPerPixel==16)  {
-      BitBlt(&data[offset.x*sizeof(gushort)*cpp+y*outPitch],outPitch,
-        in,inputPitch,w*mRaw->bpp,h-y);
-      return;
-    }
-
     BitPumpPlain bits(&input);
     w *= cpp;
     for (; y < h; y++) {


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

Reply via email to