Merge branch 'dev' into capture_sharpening
This commit is contained in:
@@ -1008,11 +1008,43 @@ int RawImageSource::load (const Glib::ustring &fname, bool firstFrameOnly)
|
|||||||
if (errCode) {
|
if (errCode) {
|
||||||
return errCode;
|
return errCode;
|
||||||
}
|
}
|
||||||
numFrames = firstFrameOnly ? 1 : ri->getFrameCount();
|
numFrames = firstFrameOnly ? (numFrames < 7 ? 1 : ri->getFrameCount()) : ri->getFrameCount();
|
||||||
|
|
||||||
errCode = 0;
|
errCode = 0;
|
||||||
|
|
||||||
if(numFrames > 1) {
|
if(numFrames >= 7) {
|
||||||
|
// special case to avoid crash when loading Hasselblad H6D-100cMS pixelshift files
|
||||||
|
// limit to 6 frames and skip first frame, as first frame is not bayer
|
||||||
|
if (firstFrameOnly) {
|
||||||
|
numFrames = 1;
|
||||||
|
} else {
|
||||||
|
numFrames = 6;
|
||||||
|
}
|
||||||
|
#ifdef _OPENMP99
|
||||||
|
#pragma omp parallel
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
int errCodeThr = 0;
|
||||||
|
#ifdef _OPENMP99
|
||||||
|
#pragma omp for nowait
|
||||||
|
#endif
|
||||||
|
for(unsigned int i = 0; i < numFrames; ++i) {
|
||||||
|
if(i == 0) {
|
||||||
|
riFrames[i] = ri;
|
||||||
|
errCodeThr = riFrames[i]->loadRaw (true, i + 1, true, plistener, 0.8);
|
||||||
|
} else {
|
||||||
|
riFrames[i] = new RawImage(fname);
|
||||||
|
errCodeThr = riFrames[i]->loadRaw (true, i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef _OPENMP99
|
||||||
|
#pragma omp critical
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
errCode = errCodeThr ? errCodeThr : errCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if(numFrames > 1) {
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
#endif
|
#endif
|
||||||
|
@@ -74,13 +74,13 @@ protected:
|
|||||||
bool rgbSourceModified;
|
bool rgbSourceModified;
|
||||||
|
|
||||||
RawImage* ri; // Copy of raw pixels, NOT corrected for initial gain, blackpoint etc.
|
RawImage* ri; // Copy of raw pixels, NOT corrected for initial gain, blackpoint etc.
|
||||||
RawImage* riFrames[4] = {nullptr};
|
RawImage* riFrames[6] = {nullptr};
|
||||||
unsigned int currFrame = 0;
|
unsigned int currFrame = 0;
|
||||||
unsigned int numFrames = 0;
|
unsigned int numFrames = 0;
|
||||||
int flatFieldAutoClipValue = 0;
|
int flatFieldAutoClipValue = 0;
|
||||||
array2D<float> rawData; // holds preprocessed pixel values, rowData[i][j] corresponds to the ith row and jth column
|
array2D<float> rawData; // holds preprocessed pixel values, rowData[i][j] corresponds to the ith row and jth column
|
||||||
array2D<float> *rawDataFrames[4] = {nullptr};
|
array2D<float> *rawDataFrames[6] = {nullptr};
|
||||||
array2D<float> *rawDataBuffer[3] = {nullptr};
|
array2D<float> *rawDataBuffer[5] = {nullptr};
|
||||||
|
|
||||||
// the interpolated green plane:
|
// the interpolated green plane:
|
||||||
array2D<float> green;
|
array2D<float> green;
|
||||||
|
@@ -547,6 +547,17 @@ Thumbnail* Thumbnail::loadFromRaw (const Glib::ustring& fname, RawMetaDataLocati
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ri->getFrameCount() == 7) {
|
||||||
|
// special case for Hasselblad H6D-100cMS pixelshift files
|
||||||
|
// first frame is not bayer, load second frame
|
||||||
|
int r = ri->loadRaw (1, 1, 0);
|
||||||
|
|
||||||
|
if ( r ) {
|
||||||
|
delete ri;
|
||||||
|
sensorType = ST_NONE;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
sensorType = ri->getSensorType();
|
sensorType = ri->getSensorType();
|
||||||
|
|
||||||
int width = ri->get_width();
|
int width = ri->get_width();
|
||||||
|
@@ -729,7 +729,7 @@ void BayerProcess::FrameCountChanged(int n, int frameNum)
|
|||||||
|
|
||||||
imageNumber->remove_all();
|
imageNumber->remove_all();
|
||||||
imageNumber->append("1");
|
imageNumber->append("1");
|
||||||
for (int i = 2; i <= std::min(n, 4); ++i) {
|
for (int i = 2; i <= std::min(n, 6); ++i) {
|
||||||
std::ostringstream entry;
|
std::ostringstream entry;
|
||||||
entry << i;
|
entry << i;
|
||||||
imageNumber->append(entry.str());
|
imageNumber->append(entry.str());
|
||||||
|
Reference in New Issue
Block a user