better (local) caching of fattal results in dcrop
Use new M_HDR todo code instead of using M_RGBCURVE for fattal (ported from Hombre's commit a9d02a7dca0b5dcd31f642046d94e1663b17c9ff)
This commit is contained in:
@@ -168,7 +168,7 @@ void Crop::update (int todo)
|
|||||||
|
|
||||||
bool needstransform = parent->ipf.needsTransform();
|
bool needstransform = parent->ipf.needsTransform();
|
||||||
|
|
||||||
if (todo & (M_INIT | M_LINDENOISE)) {
|
if (todo & (M_INIT | M_LINDENOISE | M_HDR)) {
|
||||||
MyMutex::MyLock lock (parent->minit); // Also used in improccoord
|
MyMutex::MyLock lock (parent->minit); // Also used in improccoord
|
||||||
|
|
||||||
int tr = getCoarseBitMask (params.coarse);
|
int tr = getCoarseBitMask (params.coarse);
|
||||||
@@ -691,8 +691,8 @@ void Crop::update (int todo)
|
|||||||
createBuffer (cropw, croph);
|
createBuffer (cropw, croph);
|
||||||
|
|
||||||
std::unique_ptr<Imagefloat> fattalCrop;
|
std::unique_ptr<Imagefloat> fattalCrop;
|
||||||
if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.fattal.enabled) {
|
if ((todo & M_HDR) && params.fattal.enabled) {
|
||||||
Imagefloat *f = baseCrop;
|
Imagefloat *f = origCrop;
|
||||||
int fw = skips(parent->fw, skip);
|
int fw = skips(parent->fw, skip);
|
||||||
int fh = skips(parent->fh, skip);
|
int fh = skips(parent->fh, skip);
|
||||||
bool need_cropping = false;
|
bool need_cropping = false;
|
||||||
@@ -726,18 +726,14 @@ void Crop::update (int todo)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (f == origCrop) {
|
|
||||||
fattalCrop.reset(baseCrop->copy());
|
|
||||||
f = fattalCrop.get();
|
|
||||||
}
|
|
||||||
parent->ipf.ToneMapFattal02(f);
|
parent->ipf.ToneMapFattal02(f);
|
||||||
|
|
||||||
// crop back to the size expected by the rest of the pipeline
|
// crop back to the size expected by the rest of the pipeline
|
||||||
if (need_cropping) {
|
if (need_cropping) {
|
||||||
Imagefloat *c = new Imagefloat(cropw, croph);
|
Imagefloat *c = origCrop;
|
||||||
|
|
||||||
int oy = cropy / skip;
|
int oy = trafy / skip;
|
||||||
int ox = cropx / skip;
|
int ox = trafx / skip;
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
#endif
|
#endif
|
||||||
@@ -750,7 +746,6 @@ void Crop::update (int todo)
|
|||||||
c->b(y, x) = f->b(cy, cx);
|
c->b(y, x) = f->b(cy, cx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fattalCrop.reset(c);
|
|
||||||
baseCrop = c;
|
baseCrop = c;
|
||||||
} else {
|
} else {
|
||||||
baseCrop = f;
|
baseCrop = f;
|
||||||
|
@@ -280,7 +280,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (todo & (M_INIT | M_LINDENOISE)) {
|
if (todo & (M_INIT | M_LINDENOISE | M_HDR)) {
|
||||||
MyMutex::MyLock initLock (minit); // Also used in crop window
|
MyMutex::MyLock initLock (minit); // Also used in crop window
|
||||||
|
|
||||||
imgsrc->HLRecovery_Global ( params.toneCurve); // this handles Color HLRecovery
|
imgsrc->HLRecovery_Global ( params.toneCurve); // this handles Color HLRecovery
|
||||||
@@ -385,16 +385,13 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
|
|||||||
|
|
||||||
readyphase++;
|
readyphase++;
|
||||||
|
|
||||||
if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.fattal.enabled) {
|
if ((todo & M_HDR) && params.fattal.enabled) {
|
||||||
Imagefloat *fattalprev = orig_prev->copy();
|
ipf.ToneMapFattal02(orig_prev);
|
||||||
ipf.ToneMapFattal02(fattalprev);
|
|
||||||
if (oprevi != orig_prev) {
|
if (oprevi != orig_prev) {
|
||||||
delete oprevi;
|
delete oprevi;
|
||||||
}
|
}
|
||||||
oprevi = fattalprev;
|
|
||||||
} else {
|
|
||||||
oprevi = orig_prev;
|
|
||||||
}
|
}
|
||||||
|
oprevi = orig_prev;
|
||||||
|
|
||||||
progress ("Rotate / Distortion...", 100 * readyphase / numofphases);
|
progress ("Rotate / Distortion...", 100 * readyphase / numofphases);
|
||||||
// Remove transformation if unneeded
|
// Remove transformation if unneeded
|
||||||
|
@@ -514,9 +514,9 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
DARKFRAME, // EvLensCorrMode
|
DARKFRAME, // EvLensCorrMode
|
||||||
DARKFRAME, // EvLensCorrLensfunCamera
|
DARKFRAME, // EvLensCorrLensfunCamera
|
||||||
DARKFRAME, // EvLensCorrLensfunLens
|
DARKFRAME, // EvLensCorrLensfunLens
|
||||||
RGBCURVE, // EvTMFattalEnabled
|
ALLNORAW, // EvTMFattalEnabled
|
||||||
RGBCURVE, // EvTMFattalThreshold
|
HDR, // EvTMFattalThreshold
|
||||||
RGBCURVE // EvTMFattalAmount
|
HDR // EvTMFattalAmount
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -20,22 +20,23 @@
|
|||||||
#define __REFRESHMAP__
|
#define __REFRESHMAP__
|
||||||
|
|
||||||
// Use M_VOID if you wish to update the proc params without updating the preview at all !
|
// Use M_VOID if you wish to update the proc params without updating the preview at all !
|
||||||
#define M_VOID (1<<16)
|
#define M_VOID (1<<17)
|
||||||
// Use M_MINUPDATE if you wish to update the preview without modifying the image (think about it like a "refreshPreview")
|
// Use M_MINUPDATE if you wish to update the preview without modifying the image (think about it like a "refreshPreview")
|
||||||
// Must NOT be used with other event (i.e. will be used for MINUPDATE only)
|
// Must NOT be used with other event (i.e. will be used for MINUPDATE only)
|
||||||
#define M_MINUPDATE (1<<15)
|
#define M_MINUPDATE (1<<16)
|
||||||
// Force high quality
|
// Force high quality
|
||||||
#define M_HIGHQUAL (1<<14)
|
#define M_HIGHQUAL (1<<15)
|
||||||
|
|
||||||
// Elementary functions that can be done to
|
// Elementary functions that can be done to
|
||||||
// the preview image when an event occurs
|
// the preview image when an event occurs
|
||||||
#define M_MONITOR (1<<13)
|
#define M_MONITOR (1<<14)
|
||||||
#define M_RETINEX (1<<12)
|
#define M_RETINEX (1<<13)
|
||||||
#define M_CROP (1<<11)
|
#define M_CROP (1<<12)
|
||||||
#define M_PREPROC (1<<10)
|
#define M_PREPROC (1<<11)
|
||||||
#define M_RAW (1<<9)
|
#define M_RAW (1<<10)
|
||||||
#define M_INIT (1<<8)
|
#define M_INIT (1<<9)
|
||||||
#define M_LINDENOISE (1<<7)
|
#define M_LINDENOISE (1<<8)
|
||||||
|
#define M_HDR (1<<7)
|
||||||
#define M_TRANSFORM (1<<6)
|
#define M_TRANSFORM (1<<6)
|
||||||
#define M_BLURMAP (1<<5)
|
#define M_BLURMAP (1<<5)
|
||||||
#define M_AUTOEXP (1<<4)
|
#define M_AUTOEXP (1<<4)
|
||||||
@@ -46,21 +47,22 @@
|
|||||||
|
|
||||||
// Bitfield of functions to do to the preview image when an event occurs
|
// Bitfield of functions to do to the preview image when an event occurs
|
||||||
// Use those or create new ones for your new events
|
// Use those or create new ones for your new events
|
||||||
#define FIRST (M_PREPROC|M_RAW|M_INIT|M_LINDENOISE|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR|M_MONITOR) // without HIGHQUAL
|
#define FIRST (M_PREPROC|M_RAW|M_INIT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR|M_MONITOR) // without HIGHQUAL
|
||||||
#define ALL (M_PREPROC|M_RAW|M_INIT|M_LINDENOISE|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) // without HIGHQUAL
|
#define ALL (M_PREPROC|M_RAW|M_INIT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) // without HIGHQUAL
|
||||||
#define DARKFRAME (M_PREPROC|M_RAW|M_INIT|M_LINDENOISE|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
#define DARKFRAME (M_PREPROC|M_RAW|M_INIT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
||||||
#define FLATFIELD (M_PREPROC|M_RAW|M_INIT|M_LINDENOISE|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
#define FLATFIELD (M_PREPROC|M_RAW|M_INIT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
||||||
#define DEMOSAIC (M_RAW|M_INIT|M_LINDENOISE|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
#define DEMOSAIC (M_RAW|M_INIT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
||||||
#define ALLNORAW (M_INIT|M_LINDENOISE|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
#define ALLNORAW (M_INIT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
||||||
#define TRANSFORM (M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
#define HDR (M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
||||||
#define AUTOEXP (M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
#define TRANSFORM (M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
||||||
#define RGBCURVE (M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
#define AUTOEXP (M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
||||||
#define LUMINANCECURVE (M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
#define RGBCURVE (M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
||||||
#define SHARPENING (M_LUMINANCE|M_COLOR)
|
#define LUMINANCECURVE (M_LUMACURVE|M_LUMINANCE|M_COLOR)
|
||||||
#define IMPULSEDENOISE (M_LUMINANCE|M_COLOR)
|
#define SHARPENING (M_LUMINANCE|M_COLOR)
|
||||||
#define DEFRINGE (M_LUMINANCE|M_COLOR)
|
#define IMPULSEDENOISE (M_LUMINANCE|M_COLOR)
|
||||||
#define DIRPYRDENOISE (M_LUMINANCE|M_COLOR)
|
#define DEFRINGE (M_LUMINANCE|M_COLOR)
|
||||||
#define DIRPYREQUALIZER (M_LUMINANCE|M_COLOR)
|
#define DIRPYRDENOISE (M_LUMINANCE|M_COLOR)
|
||||||
|
#define DIRPYREQUALIZER (M_LUMINANCE|M_COLOR)
|
||||||
#define GAMMA M_MONITOR
|
#define GAMMA M_MONITOR
|
||||||
#define CROP M_CROP
|
#define CROP M_CROP
|
||||||
#define RESIZE M_VOID
|
#define RESIZE M_VOID
|
||||||
|
Reference in New Issue
Block a user