From c322127db3675ded5331cb237de2381c174eff20 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 14 Jul 2020 21:05:41 +0200 Subject: [PATCH] Don't crash when using lmmse or vng4 on non RGB raw files, #5849 --- rtengine/lmmse_demosaic.cc | 12 ++++++++++++ rtengine/vng4_demosaic_RT.cc | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/rtengine/lmmse_demosaic.cc b/rtengine/lmmse_demosaic.cc index 5c4ddffed..c2d5bffbf 100644 --- a/rtengine/lmmse_demosaic.cc +++ b/rtengine/lmmse_demosaic.cc @@ -41,6 +41,18 @@ namespace rtengine // TODO Tiles to reduce memory consumption void RawImageSource::lmmse_interpolate_omp(int winw, int winh, const array2D &rawData, array2D &red, array2D &green, array2D &blue, int iterations) { + // Test for RGB cfa + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + if (FC(i, j) == 3) { + // avoid crash + std::cout << "lmmse_interpolate_omp supports only RGB Colour filter arrays. Falling back to igv_interpolate" << std::endl; + igv_interpolate(winw, winh); + return; + } + } + } + const int width = winw, height = winh; const int ba = 10; const int rr1 = height + 2 * ba; diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index ef456af3a..34cab71d1 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -63,6 +63,18 @@ namespace rtengine void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &red, array2D &green, array2D &blue) { + // Test for RGB cfa + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + if (FC(i, j) == 3) { + // avoid crash + std::cout << "vng4_demosaic supports only RGB Colour filter arrays. Falling back to igv_interpolate" << std::endl; + igv_interpolate(W, H); + return; + } + } + } + BENCHFUN const signed short int *cp, terms[] = { -2, -2, +0, -1, 0, 0x01, -2, -2, +0, +0, 1, 0x01, -2, -1, -1, +0, 0, 0x01,