Branch tiff32float, 5.3-212-g912f9f43
https://filebin.net/l19s1pu36p5l2vjr
Thread 12 "pool" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 10471]
0x000055555601320d in LUT<float>::operator[]<float, void> (this=0x5555569cb060 <rtengine::Color::igammatab_srgb>, index=-nan(0x447e3e)) at /home/morgan/programs/code-rawtherapee/rtengine/LUT.h:468
468 T p1 = data[idx];
(gdb) bt full
#0 0x000055555601320d in LUT<float>::operator[]<float, void> (this=0x5555569cb060 <rtengine::Color::igammatab_srgb>, index=-nan(0x447e3e)) at /home/morgan/programs/code-rawtherapee/rtengine/LUT.h:468
idx = -2147483648
diff = -nan(0x447e3e)
p1 = -12.789505
p2 = 4.59163468e-41
#1 0x00005555560712b9 in rtengine::Color::igamma_srgb (x=-nan(0x447e3e)) at /home/morgan/programs/code-rawtherapee/rtengine/color.h:1226
No locals.
#2 0x0000555556085b32 in rtengine::PlanarRGBData<float>::computeHistogramAutoWB (this=0x7fffa4004d48, avg_r=@0x7fffc14ca2b0: 0, avg_g=@0x7fffc14ca2b8: 0, avg_b=@0x7fffc14ca2c0: 0, n=@0x7fffc14ca2a4: 0, histogram=..., compression=3)
at /home/morgan/programs/code-rawtherapee/rtengine/iimage.h:977
g_ = 65535.0039
gtemp = 65535
r_ = -nan(0x447e3e)
b_ = 65535.0039
rtemp = 65535
btemp = 65535
j = 231
i = 0
#3 0x000055555623ab9e in rtengine::Thumbnail::loadFromImage (fname=..., w=@0x7fffa40081a8: 372, h=@0x7fffa40081ac: 250, fixwh=1, wbEq=1, inspectorMode=false) at /home/morgan/programs/code-rawtherapee/rtengine/rtthumbnail.cc:226
image = 0x7fffa4004d40
avg_r = 0
avg_g = 0
avg_b = 0
n = 0
imgSrc = {<rtengine::ImageSource> = {<rtengine::InitialImage> = {_vptr.InitialImage = 0x5555568f8868 <vtable for rtengine::StdImageSource+16>}, references = 1, redAWBMul = -1, greenAWBMul = -1, blueAWBMul = -1, embProfile = 0x7fffa400a530, fileName = {
static npos = 18446744073709551615, string_ = "/tmp/amsterdam_900px_32fp_compressed_predictor-floatingpoint.tif"}, idata = 0x7fffa400ba60, imatrices = {rgb_cam = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, cam_rgb = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, xyz_cam = {{
0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, cam_xyz = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}}, dirpyrdenoiseExpComp = inf}, img = 0x7fffa4004e38, wb = {temp = 6490.2992248535156, green = 1.0019899871615525, equal = 1, method = "Custom", static spectMap =
<optimized out>, static Cloudy6200_spect = {39.5, 40.57, 41.630000000000003, 43.850000000000001, 46.079999999999998, 45.380000000000003, 44.689999999999998, 47.200000000000003, 49.710000000000001, 63.060000000000002, 76.409999999999997, 80.590000000000003,
84.769999999999996, 85.909999999999997, 87.049999999999997, 84.140000000000001, 81.230000000000004, 90.290000000000006, 99.349999999999994, 105.47, 111.58, 112.23, 112.87, 111.73999999999999, 110.62, 111.41, 112.2, 108.98, 105.76000000000001,
106.31999999999999, 106.89, 106.34, 105.79000000000001, 104.62, 103.45, 105.09, 106.72, 105.23999999999999, 103.76000000000001, 103.75, 103.75, 101.87, 100, 98.290000000000006, 96.579999999999998, 96.459999999999994, 96.340000000000003,
92.849999999999994, 89.370000000000005, 90.25, 91.120000000000005, 91.060000000000002, 90.989999999999995, 90.170000000000002, 89.349999999999994, 87.219999999999999, 85.099999999999994, 85.480000000000004, 85.849999999999994, 84.030000000000001,
82.200000000000003, 82.450000000000003, 82.689999999999998, 83.920000000000002, 85.150000000000006, 83.140000000000001, 81.129999999999995, 76.650000000000006, 72.170000000000002, 73.269999999999996, 74.359999999999999, 75.650000000000006,
76.950000000000003, 70.340000000000003, 63.740000000000002, 67.980000000000004, 72.219999999999999, 74.879999999999995, 77.540000000000006, 71.590000000000003, 65.650000000000006, 56.82, 47.990000000000002, 58.530000000000001, 69.060000000000002,
67.269999999999996, 65.469999999999999, 65.959999999999994, 66.439999999999998, 63.920000000000002, 61.409999999999997, 57.520000000000003, 53.630000000000003, 56.469999999999999, 59.310000000000002, 60.799999999999997, 62.289999999999999},
static Daylight5300_spect = <same as static member of an already seen type>, static Shade7600_spect = <same as static member of an already seen type>, static A2856_spect = <same as static member of an already seen type>,
static FluoF1_spect = <same as static member of an already seen type>, static FluoF2_spect = <same as static member of an already seen type>, static FluoF3_spect = <same as static member of an already seen type>,
static FluoF4_spect = <same as static member of an already seen type>, static FluoF5_spect = <same as static member of an already seen type>, static FluoF6_spect = <same as static member of an already seen type>,
static FluoF7_spect = <same as static member of an already seen type>, static FluoF8_spect = <same as static member of an already seen type>, static FluoF9_spect = <same as static member of an already seen type>,
static FluoF10_spect = <same as static member of an already seen type>, static FluoF11_spect = <same as static member of an already seen type>, static FluoF12_spect = <same as static member of an already seen type>,
static HMI_spect = <same as static member of an already seen type>, static GTI_spect = <same as static member of an already seen type>, static JudgeIII_spect = <same as static member of an already seen type>,
static Solux3500_spect = <same as static member of an already seen type>, static Solux4100_spect = <same as static member of an already seen type>, static Solux4700_spect = <same as static member of an already seen type>,
static NG_Solux4700_spect = <same as static member of an already seen type>, static NG_LEDLSI2040_spect = <same as static member of an already seen type>, static NG_CRSSP12WWMR16_spect = <same as static member of an already seen type>,
static Flash5500_spect = <same as static member of an already seen type>, static Flash6000_spect = <same as static member of an already seen type>, static Flash6500_spect = <same as static member of an already seen type>,
static ColorchechredC3_spect = <same as static member of an already seen type>, static ColorchechOraA2_spect = <same as static member of an already seen type>, static ColorchechYelD3_spect = <same as static member of an already seen type>,
static ColorchechGreE2_spect = <same as static member of an already seen type>, static ColorchechGreB3_spect = <same as static member of an already seen type>, static ColorchechCyaF3_spect = <same as static member of an already seen type>,
static ColorchechPurD2_spect = <same as static member of an already seen type>, static ColorchechMagE3_spect = <same as static member of an already seen type>, static ColorchechSkiA138_13_14_spect = <same as static member of an already seen type>,
static ColorchechGraC4_67_spect = <same as static member of an already seen type>, static ColorchechSkiB166_18_18_spect = <same as static member of an already seen type>,
static ColorchechBluC150_m5_m22_spect = <same as static member of an already seen type>, static ColorchechDCBluN881_m7_m14_spect = <same as static member of an already seen type>,
static ColorchechSGSkiF763_14_26_spect = <same as static member of an already seen type>, static ColorchechSGSkiK285_11_17_spect = <same as static member of an already seen type>,
static ColorchechWhiA496_spect = <same as static member of an already seen type>, static ColorchechGreD1_spect = <same as static member of an already seen type>, static ColorchechSGBlaN3_6_spect = <same as static member of an already seen type>,
static JDC468_GraK14_44_spect = <same as static member of an already seen type>, static JDC468_BluH10_spect = <same as static member of an already seen type>, static ColabSkin35_15_17_spect = <same as static member of an already seen type>,
static ColabSkin57_22_18_spect = <same as static member of an already seen type>, static ColabSkin40_17_17_spect = <same as static member of an already seen type>, static ColabSkin91_4_14_spect = <same as static member of an already seen type>,
static ColabSkin87_8_8_spect = <same as static member of an already seen type>, static ColabSkin89_8_21_spect = <same as static member of an already seen type>, static ColabSkin75_8_4_spect = <same as static member of an already seen type>,
static ColabSkin75_10_33_spect = <same as static member of an already seen type>, static ColabSkin65_33_11_spect = <same as static member of an already seen type>, static ColabSkin65_7_24_spect = <same as static member of an already seen type>,
static ColabSkin57_19_6_spect = <same as static member of an already seen type>, static ColabSkin57_4_19_spect = <same as static member of an already seen type>, static ColabSkin57_10_28_spect = <same as static member of an already seen type>,
static ColabSkin40_7_19_spect = <same as static member of an already seen type>, static ColabSkin40_17_6_spect = <same as static member of an already seen type>, static ColabSkin40_4_11_spect = <same as static member of an already seen type>,
static ColabSkin33_6_15_spect = <same as static member of an already seen type>, static ColabSkin33_15_5_spect = <same as static member of an already seen type>, static ColabSkin33_10_15_spect = <same as static member of an already seen type>,
static ColabSkin24_5_6_spect = <same as static member of an already seen type>, static ColabSkin26_18_18_spect = <same as static member of an already seen type>, static ColabSkin24_7_5_spect = <same as static member of an already seen type>,
static ColabSkin20_4_2_spect = <same as static member of an already seen type>, static ColabSkin98_m2_10_spect = <same as static member of an already seen type>, static ColabSkin90_m1_20_spect = <same as static member of an already seen type>,
static ColabSkin95_0_4_spect = <same as static member of an already seen type>, static ColabSkin81_2_14_spect = <same as static member of an already seen type>, static ColabSkin87_3_10_spect = <same as static member of an already seen type>,
static ColabSkin77_12_21_spect = <same as static member of an already seen type>, static ColabSkin70_7_32_spect = <same as static member of an already seen type>, static ColabSky60_0_m31_spect = <same as static member of an already seen type>,
static ColabSky42_0_m24_spect = <same as static member of an already seen type>}, plistener = 0x0, full = false, max = {0, 0, 0}, rgbSourceModified = false}
img = 0x7fffa4004e38
tpp = 0x7fffa4020580
---Type <return> to continue, or q <return> to quit---
data = 0x7fffa40184a0 ""
#4 0x0000555555f4ef60 in Thumbnail::_generateThumbnailImage (this=0x7fffa4008000) at /home/morgan/programs/code-rawtherapee/rtgui/thumbnail.cc:122
ext = {static npos = 18446744073709551615, string_ = "tif"}
#5 0x0000555555f4e94c in Thumbnail::Thumbnail (this=0x7fffa4008000, cm=0x5555569c9800 <CacheManager::getInstance()::instance>, fname=..., md5="49ad551902e9ae340d51f3f107a3ac94") at /home/morgan/programs/code-rawtherapee/rtgui/thumbnail.cc:75
No locals.
#6 0x0000555555b43887 in CacheManager::getEntry (this=0x5555569c9800 <CacheManager::getInstance()::instance>, fname=...) at /home/morgan/programs/code-rawtherapee/rtgui/cachemanager.cc:115
thumbnail = std::unique_ptr<Thumbnail> containing 0x0
md5 = "49ad551902e9ae340d51f3f107a3ac94"
cacheName = {static npos = 18446744073709551615, string_ = "/home/morgan/.cache/RawTherapee/data/amsterdam_900px_32fp_compressed_predictor-floatingpoint.tif.49ad551902e9ae340d51f3f107a3ac94.txt"}
#7 0x0000555555ea5ef5 in PreviewLoader::Impl::processNextJob (this=0x55555c827ca0) at /home/morgan/programs/code-rawtherapee/rtgui/previewloader.cc:128
tmb = 0x0
j = {dir_id_ = 3, dir_entry_ = {static npos = 18446744073709551615, string_ = "/tmp/amsterdam_900px_32fp_compressed_predictor-floatingpoint.tif"}, listener_ = 0x555559879428}
last = 33
#8 0x0000555555ea8730 in sigc::bound_mem_functor0<void, PreviewLoader::Impl>::operator() (this=0x7fffa400a508) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1991
No locals.
#9 0x0000555555ea8302 in sigc::adaptor_functor<sigc::bound_mem_functor0<void, PreviewLoader::Impl> >::operator() (this=0x7fffa400a500) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256
No locals.
#10 0x0000555555ea7e11 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, PreviewLoader::Impl>, void>::call_it (rep=0x7fffa400a4d0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:114
typed_rep = 0x7fffa400a4d0
#11 0x00007ffff454f762 in ?? () from /usr/lib64/libglibmm-2.4.so.1
No symbol table info available.
#12 0x00007ffff53a956e in ?? () from /usr/lib64/libglib-2.0.so.0
No symbol table info available.
#13 0x00007ffff53a8718 in ?? () from /usr/lib64/libglib-2.0.so.0
No symbol table info available.
#14 0x00007ffff121dad3 in ?? () from /lib64/libpthread.so.0
No symbol table info available.
#15 0x00007ffff0f532ff in clone () from /lib64/libc.so.6
No symbol table info available.
The problem is the mismatch between Exif's endianess and the data endianess. They have to be the same. I'll try to fix that tonight.
@Beep6581 Could you test the new files in Filebin ? I don't find the pixls.us thread anymore, but it would be nice if those files could be tested with other software.
@Hombre57 both LZW and Deflate load fine in GIMP as well as in RT! Though they both suffer from a color cast:


I'm assuming that you used neutral when saving them, i.e. I'm assuming the color cast does not come from a weird white balance for example.
@Beep6581 Lol, no, that's just a sh*tty processing session 馃ぃ The image is fine, no color cast (i.e. the danger of Color Toning).
@Beep6581 So considering the file size, I guess that we should drop LZW and use Deflate only for floating point predictor too !?
@Hombre57 ha! I was worried it was some black point issue ;)
LZW vs deflate - I think that calls for more testing, using images of various content and ISO... Could you maybe commit this, and leave the compression for a new issue? Or just do as you think best, and we can revise the compression in the future anyway.
Use this patch to set a specific compression method to 32 bits images.
diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc
index ba52c46..6f34e7b 100644
--- a/rtengine/imageio.cc
+++ b/rtengine/imageio.cc
@@ -1369,7 +1369,7 @@
TIFFSetField (out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
TIFFSetField (out, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
TIFFSetField (out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
- TIFFSetField (out, TIFFTAG_COMPRESSION, uncompressed ? COMPRESSION_NONE : COMPRESSION_DEFLATE);
+ TIFFSetField (out, TIFFTAG_COMPRESSION, uncompressed ? COMPRESSION_NONE : (bps == 32 ? COMPRESSION_LZW : COMPRESSION_DEFLATE));
TIFFSetField (out, TIFFTAG_SAMPLEFORMAT, bps == 32 ? SAMPLEFORMAT_IEEEFP : SAMPLEFORMAT_UINT);
if (!uncompressed) {
Fixed in commit 5ea5cfd943d2f77f91f3b7f47e377074e57be629.
Most helpful comment
@Beep6581 Lol, no, that's just a sh*tty processing session 馃ぃ The image is fine, no color cast (i.e. the danger of Color Toning).