Fix stack size problem on MacOS

This commit is contained in:
2023-11-16 21:47:46 +01:00
parent cfee287bfa
commit 50c070b169
+5 -3
View File
@@ -131,7 +131,9 @@ void calcStats(const T *data, size_t n, size_t w, RawImage::Stats &stats)
T max[4] = {std::numeric_limits<T>::min(), std::numeric_limits<T>::min(), std::numeric_limits<T>::min(), std::numeric_limits<T>::min()}; T max[4] = {std::numeric_limits<T>::min(), std::numeric_limits<T>::min(), std::numeric_limits<T>::min(), std::numeric_limits<T>::min()};
uint32_t histSize = 65536; uint32_t histSize = 65536;
if constexpr(std::is_same<T, uint8_t>::value)histSize = 256; if constexpr(std::is_same<T, uint8_t>::value)histSize = 256;
uint32_t histogram[4][65536] = {}; std::vector<uint32_t> histogram[4];
histogram[0].resize(histSize); histogram[1].resize(histSize); histogram[2].resize(histSize); histogram[3].resize(histSize);
T sat = SATURATION * std::numeric_limits<T>::max(); T sat = SATURATION * std::numeric_limits<T>::max();
if constexpr(!std::numeric_limits<T>::is_integer)sat = SATURATION; if constexpr(!std::numeric_limits<T>::is_integer)sat = SATURATION;
uint32_t saturated[4] = {0}; uint32_t saturated[4] = {0};
@@ -150,7 +152,7 @@ void calcStats(const T *data, size_t n, size_t w, RawImage::Stats &stats)
if(d > sat)saturated[x]++; if(d > sat)saturated[x]++;
}; };
auto findMedian = [histSize](uint32_t histogram[], size_t n) -> size_t auto findMedian = [histSize](std::vector<uint32_t> &histogram, size_t n) -> size_t
{ {
size_t histSum = 0; size_t histSum = 0;
for(size_t o=0; o < histSize; o++) for(size_t o=0; o < histSize; o++)
@@ -205,7 +207,7 @@ void calcStats(const T *data, size_t n, size_t w, RawImage::Stats &stats)
uint32_t median = findMedian(histogram[i], na[i]); uint32_t median = findMedian(histogram[i], na[i]);
stats.m_median[i] = median; stats.m_median[i] = median;
uint32_t madHist[65536] = {0}; std::vector<uint32_t> madHist(histSize, 0);
madHist[0] = histogram[i][median]; madHist[0] = histogram[i][median];
for(size_t o = 1; o < histSize; o++) for(size_t o = 1; o < histSize; o++)
{ {