Make raw data copy only when needed

This commit is contained in:
2019-09-26 12:44:32 +02:00
parent fa025dff0e
commit cdec3ea444
+4 -5
View File
@@ -37,6 +37,8 @@ bool loadRAW(QString path, ImageInfoData &info, RawImageAbs **image, QImage *qi
if(raw.unpack()) if(raw.unpack())
return false; return false;
if(image)
{
libraw_rawdata_t rawdata = raw.imgdata.rawdata; libraw_rawdata_t rawdata = raw.imgdata.rawdata;
size_t size = rawdata.sizes.width*rawdata.sizes.height; size_t size = rawdata.sizes.width*rawdata.sizes.height;
@@ -47,17 +49,14 @@ bool loadRAW(QString path, ImageInfoData &info, RawImageAbs **image, QImage *qi
uint w=rawdata.sizes.left_margin+rawdata.sizes.width; uint w=rawdata.sizes.left_margin+rawdata.sizes.width;
size_t pitch = rawdata.sizes.raw_pitch/sizeof(uint16_t); size_t pitch = rawdata.sizes.raw_pitch/sizeof(uint16_t);
for(size_t i=rawdata.sizes.top_margin;i<h;i+=2) for(size_t i=rawdata.sizes.top_margin;i<h;i++)
{ {
for(size_t o=rawdata.sizes.left_margin;o<w;o+=2) for(size_t o=rawdata.sizes.left_margin;o<w;o++)
{ {
uint16_t p = rawdata.raw_image[i*pitch+o]; uint16_t p = rawdata.raw_image[i*pitch+o];
out[d++] = p; out[d++] = p;
} }
} }
if(image)
{
*image = new RawImage<uint16_t>(w, h, out); *image = new RawImage<uint16_t>(w, h, out);
} }