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