Fixed a crash with Canon SRAWs and other non-bayer pattern formats
see issue 957
This commit is contained in:
parent
eef4094f84
commit
a75a41eb6d
@ -1219,6 +1219,28 @@ void RawImageSource::copyOriginalPixels(const RAWParams &raw, RawImage *src, Raw
|
|||||||
//#undef BS
|
//#undef BS
|
||||||
|
|
||||||
|
|
||||||
|
} // flatfield
|
||||||
|
} else {
|
||||||
|
// No bayer pattern
|
||||||
|
// TODO: Is there a flat field correction possible?
|
||||||
|
if (!rawData) rawData = allocArray<float>(3*W,H);
|
||||||
|
|
||||||
|
if (riDark && W == riDark->get_width() && H == riDark->get_height()) {
|
||||||
|
for (int row = 0; row < H; row++) {
|
||||||
|
for (int col = 0; col < W; col++) {
|
||||||
|
rawData[row][3*col+0] = MAX (src->data[row][3*col+0]+ri->get_black() - riDark->data[row][3*col+0], 0);
|
||||||
|
rawData[row][3*col+1] = MAX (src->data[row][3*col+1]+ri->get_black() - riDark->data[row][3*col+1], 0);
|
||||||
|
rawData[row][3*col+2] = MAX (src->data[row][3*col+2]+ri->get_black() - riDark->data[row][3*col+2], 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (int row = 0; row < H; row++) {
|
||||||
|
for (int col = 0; col < W; col++) {
|
||||||
|
rawData[row][3*col+0] = src->data[row][3*col+0];
|
||||||
|
rawData[row][3*col+1] = src->data[row][3*col+1];
|
||||||
|
rawData[row][3*col+2] = src->data[row][3*col+2];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user