diff --git a/rtengine/dirpyr_equalizer.cc b/rtengine/dirpyr_equalizer.cc index b86807b1b..157220164 100644 --- a/rtengine/dirpyr_equalizer.cc +++ b/rtengine/dirpyr_equalizer.cc @@ -63,7 +63,6 @@ namespace rtengine { if (lastlevel==0) return; int level; - array2D buffer (srcwidth, srcheight, ARRAY2D_CLEAR_DATA); multi_array2D dirpyrlo (srcwidth, srcheight); @@ -85,17 +84,8 @@ namespace rtengine { level ++; } - //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - //initiate buffer for final image - for(int i = 0; i < srcheight; i++) - for(int j = 0; j < srcwidth; j++) { - //copy pixels - buffer[i][j] = dirpyrlo[lastlevel-1][i][j]; - } - - //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - + // with the current implementation of idirpyr_eq_channel we can safely use the buffer from last level as buffer, saves some memory + float ** buffer = dirpyrlo[lastlevel-1]; for(int level = lastlevel - 1; level > 0; level--) { @@ -136,8 +126,7 @@ namespace rtengine { if (lastlevel==0) return; int level; - array2D buffer (srcwidth, srcheight, ARRAY2D_CLEAR_DATA); - + multi_array2D dirpyrlo (srcwidth, srcheight); level = 0; @@ -158,17 +147,9 @@ namespace rtengine { level ++; } - //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - //initiate buffer for final image - for(int i = 0; i < srcheight; i++) - for(int j = 0; j < srcwidth; j++) { - //copy pixels - buffer[i][j] = dirpyrlo[lastlevel-1][i][j]; - } - - //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - + // with the current implementation of idirpyr_eq_channel we can safely use the buffer from last level as buffer, saves some memory + float ** buffer = dirpyrlo[lastlevel-1]; for(int level = lastlevel - 1; level > 0; level--) {