diff --git a/LICENSE.txt b/LICENSE.txt index 0de1c6985..1e9ad695f 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,26 +1,23 @@ + RawTherapee - A powerful, cross-platform raw image processing program. + Copyright (C) 2004-2012 Gabor Horvath - RawTherapee - - -Copyright ©2004-2012 Gábor Horváth - -RawTherapee is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -RawTherapee is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License below for more details. + RawTherapee is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + RawTherapee is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - + Version 3, 29 June 2007 - Copyright ©2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -638,3 +635,4 @@ Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS + diff --git a/rtdata/dcpprofiles/Fujifilm X-T1.dcp b/rtdata/dcpprofiles/Fujifilm X-T1.dcp index 494941e22..5d6c48b28 100644 Binary files a/rtdata/dcpprofiles/Fujifilm X-T1.dcp and b/rtdata/dcpprofiles/Fujifilm X-T1.dcp differ diff --git a/rtdata/dcpprofiles/Nikon D7200.dcp b/rtdata/dcpprofiles/Nikon D7200.dcp new file mode 100644 index 000000000..01e5cfa13 Binary files /dev/null and b/rtdata/dcpprofiles/Nikon D7200.dcp differ diff --git a/rtdata/dcpprofiles/Sony ILCE-6000.dcp b/rtdata/dcpprofiles/Sony ILCE-6000.dcp new file mode 100644 index 000000000..6d7e7c1e6 Binary files /dev/null and b/rtdata/dcpprofiles/Sony ILCE-6000.dcp differ diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index fbcb2a853..48a293051 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -67,7 +67,7 @@ EDIT_OBJECT_TOOLTIP;Schaltet das Einstellungswerkzeug im Vorschaubild ein/aus EDIT_PIPETTE_TOOLTIP;Um einen Punkt der Kurve hinzuzufügen, halten Sie die Strg-Taste gedrückt und klicken mit der linke Maustaste auf die gewünschte Stelle in der Vorschau.\nUm den Punkt anzupassen, halten Sie die Strg-Taste gedrückt und klicken Sie mit der linken Maustaste auf den entsprechenden Bereich in der Vorschau. Dann lassen Sie die Strg-Taste los (es sei denn, Sie möchten eine Feineinstellung vornehmen) und bewegen die Maus bei gedrückter linker Maustaste nach oben oder unten, um den Punkt auf der Kurve zu bewegen. EXIFFILTER_APERTURE;Blende EXIFFILTER_CAMERA;Kamera -EXIFFILTER_EXPOSURECOMPENSATION;Belichtung\nBelichtungskorrektur (EV) +EXIFFILTER_EXPOSURECOMPENSATION;Belichtungskorrektur (EV) EXIFFILTER_FILETYPE;Dateityp EXIFFILTER_FOCALLEN;Brennweite EXIFFILTER_ISO;ISO @@ -121,9 +121,9 @@ FILEBROWSER_AUTODARKFRAME;Automatisches Dunkelbild FILEBROWSER_AUTOFLATFIELD;Automatisches Weißbild FILEBROWSER_BROWSEPATHBUTTONHINT;Ausgewählter Pfad öffnen FILEBROWSER_BROWSEPATHHINT;Einen Pfad eingeben:\nTaste:\nStrg + o Setzt den Cursor in das Eingabefeld\nEnter Öffnet den Pfad\nEsc Änderungen verwerfen\nUmschalt + Esc Eingabefeld verlassen\n\nSchnellnavigation:\nTaste:\n~ “Home“-Verzeichnis des Benutzers\n! Bilder-Verzeichnis des Benutzers -FILEBROWSER_CACHE;Zwischenspeicher -FILEBROWSER_CACHECLEARFROMFULL;Aus dem Zwischenspeicher entfernen (vollständig) -FILEBROWSER_CACHECLEARFROMPARTIAL;Aus dem Zwischenspeicher entfernen (teilweise) +FILEBROWSER_CACHE;Festplatten-Cache +FILEBROWSER_CACHECLEARFROMFULL;Aus dem Festplatten-Cache entfernen (vollständig) +FILEBROWSER_CACHECLEARFROMPARTIAL;Aus dem Festplatten-Cache entfernen (teilweise) FILEBROWSER_CLEARPROFILE;Profil löschen FILEBROWSER_COLORLABEL_TOOLTIP;Farbmarkierung\n\nTaste: Strg + Umschalt + 0 Ohne\nTaste: Strg + Umschalt + 1 Rot\nTaste: Strg + Umschalt + 2 Gelb\nTaste: Strg + Umschalt + 3 Grün\nTaste: Strg + Umschalt + 4 Blau\nTaste: Strg + Umschalt + 5 Violett FILEBROWSER_COPYPROFILE;Profil kopieren @@ -830,28 +830,28 @@ NAVIGATOR_XY_FULL;Breite = %1, Höhe = %2 NAVIGATOR_XY_NA;x: --, y: -- OPTIONS_DEFIMG_MISSING;Die Standard-Profile für Nicht-RAW-Bilder wurden nicht gefunden oder nicht festgelegt.\n\nBitte prüfen Sie das Profil-Verzeichnis, es fehlt möglicherweise oder ist beschädigt.\n\nEs werden stattdessen interne Standardwerte verwendet. OPTIONS_DEFRAW_MISSING;Die Standard-Profile für RAW-Bilder wurden nicht gefunden oder nicht festgelegt.\n\nBitte prüfen Sie das Profil-Verzeichnis, es fehlt möglicherweise oder ist beschädigt.\n\nEs werden stattdessen interne Standardwerte verwendet. -PARTIALPASTE_BASICGROUP;Gruppe Basiseinstellungen +PARTIALPASTE_BASICGROUP;Grundeinstellungen PARTIALPASTE_CACORRECTION;Farbsaum entfernen PARTIALPASTE_CHANNELMIXER;RGB-Kanalmixer PARTIALPASTE_CHANNELMIXERBW;Schwarz/Weiß PARTIALPASTE_COARSETRANS;Drehen / Spiegeln PARTIALPASTE_COLORAPP;CIE Color Appearance Model 2002 -PARTIALPASTE_COLORGROUP;Gruppe Farbeinstellungen +PARTIALPASTE_COLORGROUP;Farbeinstellungen PARTIALPASTE_COLORTONING;Farbanpassungen PARTIALPASTE_COMMONTRANSFORMPARAMS;Auto-Füllen -PARTIALPASTE_COMPOSITIONGROUP;Gruppe Gestaltungseinstellungen +PARTIALPASTE_COMPOSITIONGROUP;Gestaltungseinstellungen PARTIALPASTE_CROP;Ausschnitt PARTIALPASTE_DARKFRAMEAUTOSELECT;Dunkelbild: Automatische Auswahl PARTIALPASTE_DARKFRAMEFILE;Dunkelbild: Datei PARTIALPASTE_DEFRINGE;Farbsaum entfernen (Defringe) -PARTIALPASTE_DETAILGROUP;Gruppe Detaileinstellungen +PARTIALPASTE_DETAILGROUP;Detaileinstellungen PARTIALPASTE_DIALOGLABEL;Selektives Einfügen des Bearbeitungsprofils PARTIALPASTE_DIRPYRDENOISE;Rauschreduzierung PARTIALPASTE_DIRPYREQUALIZER;Detailebenenkontrast PARTIALPASTE_DISTORTION;Verzeichnungskorrektur PARTIALPASTE_EPD;Dynamikkompression PARTIALPASTE_EQUALIZER;Anzahl der Ebenen -PARTIALPASTE_EVERYTHING;Alles +PARTIALPASTE_EVERYTHING;Alle Einstellungen aktivieren / deaktivieren PARTIALPASTE_EXIFCHANGES;Änderungen an Exif-Daten PARTIALPASTE_EXPOSURE;Belichtung PARTIALPASTE_FILMSIMULATION;Filmsimulation @@ -866,9 +866,9 @@ PARTIALPASTE_ICMSETTINGS;ICM-Einstellungen PARTIALPASTE_IMPULSEDENOISE;Impulsrauschreduzierung PARTIALPASTE_IPTCINFO;IPTC-Informationen PARTIALPASTE_LABCURVE;L*a*b* - Einstellungen -PARTIALPASTE_LENSGROUP;Gruppe Objektivkorrekturen +PARTIALPASTE_LENSGROUP;Objektivkorrekturen PARTIALPASTE_LENSPROFILE;Objektivkorrekturprofil -PARTIALPASTE_METAGROUP;Gruppe Metadaten +PARTIALPASTE_METAGROUP;Metadaten PARTIALPASTE_PCVIGNETTE;Vignettierungsfilter PARTIALPASTE_PERSPECTIVE;Perspektive PARTIALPASTE_PREPROCESS_DEADPIXFILT;Vorverarbeitung: Dead-Pixel-Filter @@ -882,7 +882,7 @@ PARTIALPASTE_RAWCACORR_CARED;Chromatische Aberration: Rot PARTIALPASTE_RAWEXPOS_BLACK;Weißpunkt: Schwarzpegel PARTIALPASTE_RAWEXPOS_LINEAR;Weißpunkt: Korrekturfaktor PARTIALPASTE_RAWEXPOS_PRESER;Weißpunkt: Lichter schützen (EV) -PARTIALPASTE_RAWGROUP;Gruppe RAW +PARTIALPASTE_RAWGROUP;RAW PARTIALPASTE_RAW_DCBENHANCE;Farbinterpolation: DCB-Verbesserung PARTIALPASTE_RAW_DCBITERATIONS;Farbinterpolation: Anzahl der DCB-Iterationen PARTIALPASTE_RAW_DMETHOD;Farbinterpolation: Methode @@ -919,8 +919,8 @@ PREFERENCES_BLACKBODY;Wolfram PREFERENCES_CACHECLEARALL;Alles löschen PREFERENCES_CACHECLEARPROFILES;Profile löschen PREFERENCES_CACHECLEARTHUMBS;Miniaturbilder löschen -PREFERENCES_CACHEMAXENTRIES;Maximale Anzahl der Einträge im Zwischenspeicher -PREFERENCES_CACHEOPTS;Einstellungen des Zwischenspeichers auf der Festplatte für Miniaturbilder +PREFERENCES_CACHEMAXENTRIES;Maximale Anzahl der Miniaturbilder im Festplatten-Cache +PREFERENCES_CACHEOPTS;Einstellungen des Festplatten-Cache für Miniaturbilder PREFERENCES_CACHETHUMBHEIGHT;Maximale Höhe der Miniaturbilder PREFERENCES_CIEART;CIECAM02-Optimierung PREFERENCES_CIEART_FRAME;CIECAM02-spezifische Einstellungen @@ -967,7 +967,7 @@ PREFERENCES_EDITORLAYOUT;Editor-Layout PREFERENCES_EXPAUT;Experte PREFERENCES_EXTERNALEDITOR;Externer Editor PREFERENCES_FBROWSEROPTS;Bildinformationen und Miniaturbilder -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Einzeilige Werkzeugleiste\n(Bei geringer Bildschirmauflösung deaktivieren) +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Einzeilige Toolbar\n(Bei geringer Bildschirmauflösung deaktivieren) PREFERENCES_FILEFORMAT;Dateiformat PREFERENCES_FILMSIMULATION;Filmsimulation PREFERENCES_FLATFIELD;Weißbild @@ -1032,9 +1032,9 @@ PREFERENCES_NAVGUIDEBRUSH;Farbe der Navigationshilfe PREFERENCES_NAVIGATIONFRAME;Navigation PREFERENCES_NOISE;Rauschreduzierung PREFERENCES_OUTDIR;Ausgabeverzeichnis -PREFERENCES_OUTDIRFOLDER;Im Verzeichnis speichern +PREFERENCES_OUTDIRFOLDER;In dieses Verzeichnis speichern PREFERENCES_OUTDIRFOLDERHINT;Alle Dateien ausgewähltem Verzeichnis speichern. -PREFERENCES_OUTDIRTEMPLATE;Vorlage verwenden +PREFERENCES_OUTDIRTEMPLATE;Dynamisches Verzeichnis verwenden PREFERENCES_OUTDIRTEMPLATEHINT;Die folgenden Variablen können verwendet werden:\n%f, %d1, %d2, ..., %p1, %p2, ..., %r, %s1, %s2, ...\n\nDiese Variablen beinhalten bestimmte Teile des Verzeichnispfades, in welchem sich das Bild befindet, oder Attribute des Bildes.\n\nWenn zum Beispiel /home/tom/photos/2010-10-31/dsc0042.nef geöffnet wurde, dann haben die Variablen den folgenden Inhalt:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2010-10-31\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31\n%p2 = /home/tom/photos\n%p3 = /home/tom\n%p4 = /home\n\nWenn Sie die Ausgabedatei in dasselbe Verzeichnis wie das Originalbild speichern wollen, dann wählen Sie:\n%p1/%f\n\nWenn Sie die Ausgabedatei in ein Unterverzeichnis mit dem Namen "converted" schreiben wollen, dann wählen Sie:\n%p1/converted/%f\n\nWenn Sie die Ausgabedatei im Verzeichnispfad "/home/tom/photos/converted" speichern wollen, dort jedoch in einem mit dem Namen des Ursprungsverzeichnisses betitelten Unterverzeichnis, dann wählen Sie:\n%p2/converted/%d1/%f\n\nDie Variable %r enthält die Bewertung des Bildes. PREFERENCES_OVERLAY_FILENAMES;Bildinformationen überlagern die Miniaturbilder in der Dateiverwaltung PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Bildinformationen der Miniaturbilder im Filmstreifen anzeigen @@ -1073,7 +1073,7 @@ PREFERENCES_SET;SETZEN PREFERENCES_SHOWBASICEXIF;Exif-Daten anzeigen PREFERENCES_SHOWDATETIME;Datum und Uhrzeit anzeigen PREFERENCES_SHOWEXPOSURECOMPENSATION;Belichtungskorrektur anfügen -PREFERENCES_SHOWFILMSTRIPTOOLBAR;Zeige Filmstreifenleiste +PREFERENCES_SHOWFILMSTRIPTOOLBAR;Toolbar oberhalb des Filmstreifens anzeigen PREFERENCES_SHTHRESHOLD;Schatten - Schwellenwert PREFERENCES_SIMPLAUT;Werkzeugmodus PREFERENCES_SINGLETAB;Ein-Reitermodus @@ -1081,9 +1081,9 @@ PREFERENCES_SINGLETABVERTAB;Ein-Reitermodus (vertikale Reiter) PREFERENCES_SLIMUI;Kompakte Oberfläche PREFERENCES_SMA;Klein (250x287) PREFERENCES_SND_BATCHQUEUEDONE;Warteschlange abgearbeitet -PREFERENCES_SND_HELP;Entweder einen Dateipfad zu einer Sounddatei oder einen Systemklang eingeben.\n\nBeispiele Systemklänge:\nWindows: SystemDefault, SystemAsterisk ...\nLinux: complete, window-attention ...\n +PREFERENCES_SND_HELP;Geben Sie einen Pfad zu einer Sounddatei oder einen Systemklang ein.\n\nBeispiel Systemklänge:\nWindows: SystemDefault, SystemAsterisk ...\nLinux: complete, window-attention ...\n PREFERENCES_SND_LNGEDITPROCDONE;Bearbeitung abgeschlossen -PREFERENCES_SND_TRESHOLDSECS;Nach Sekunden +PREFERENCES_SND_TRESHOLDSECS;Verzögerung in Sekunden PREFERENCES_STARTUPIMDIR;Bildverzeichnis beim Programmstart PREFERENCES_STDAUT;Standard PREFERENCES_TAB_BROWSER;Dateiverwaltung @@ -1278,7 +1278,7 @@ TP_COLORAPP_CURVEEDITOR2;Tonwertkurve 2 TP_COLORAPP_CURVEEDITOR2_TOOLTIP;Gleiche Verwendung wie bei der zweiten Belichtungstonwertkurve. TP_COLORAPP_CURVEEDITOR3;Farbkurve TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Korrigiert Buntheit, Sättigung oder Farbigkeit.\n\nZeigt das Histogramm der Chromatizität (L*a*b* ) VOR den CIECAM02-Änderungen an.\nWenn "CIECAM02-Ausgabe-Histogramm in Kurven anzeigen" aktiviert ist, wird das Histogramm von C, S oder M NACH den CIECAM02-Änderungen angezeigt.\n\nC, S und M werden nicht im Haupt-Histogramm angezeigt.\nFür die endgültige Ausgabe verwenden Sie das Haupt-Histogramm. -TP_COLORAPP_DATACIE;CIECAM02-Ausgabe-Histogramm\nin Kurven anzeigen +TP_COLORAPP_DATACIE;CIECAM02-Ausgabe-Histogramm in\nKurven anzeigen TP_COLORAPP_DATACIE_TOOLTIP;Wenn aktiviert, zeigen die Histogramme der CIECAM02-Kurven die angenäherten Werte/Bereiche für J oder Q und C, S oder M NACH den CIECAM02-Anpassungen an. Das betrifft nicht das Haupt-Histogramm.\n\nWenn deaktiviert, zeigen die Histogramme der CIECAM02-Kurven die L*a*b*-Werte VOR den CIECAM02-Anpassungen an. TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Wenn aktiviert (emfohlen), berechnet RT einen optimalen Wert der von CAT02 und CIECAM02 verwendet wird.\nUm den Wert manuell zu setzen, muss die Option deaktiviert sein (Werte über 64 sind empfohlen). TP_COLORAPP_DEGREE_TOOLTIP;Umfang der “CIE Chromatic Adaptation Transform 2002“ @@ -1472,7 +1472,7 @@ TP_EXPOSURE_AUTOLEVELS;Auto TP_EXPOSURE_AUTOLEVELS_TIP;Automatische Belichtungseinstellung basierend auf Bildanalyse TP_EXPOSURE_BLACKLEVEL;Schwarzwert TP_EXPOSURE_BRIGHTNESS;Helligkeit -TP_EXPOSURE_CLIP;Clip: +TP_EXPOSURE_CLIP;Clip %: TP_EXPOSURE_CLIP_TIP;Anteil der Pixel, die sich bei automatischer Belichtungseinstellung im Bereich der Spitzlichter und Schatten befinden sollen TP_EXPOSURE_COMPRHIGHLIGHTS;Lichterkompression TP_EXPOSURE_COMPRHIGHLIGHTSTHRESHOLD;Lichterkompression Schwellenwert diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index 1796b7169..ab0b95a27 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -197,7 +197,7 @@ void RawImageSource::CA_correct_RT(const double cared, const double cablue, cons // assign working space constexpr int buffersize = 3 * sizeof(float) * ts * ts + 6 * sizeof(float) * ts * tsh + 8 * 64 + 63; - char *buffer = (char *) calloc(buffersize, 1); + char *buffer = (char *) malloc(buffersize); char *data = (char*)( ( uintptr_t(buffer) + uintptr_t(63)) / 64 * 64); // shift the beginning of all arrays but the first by 64 bytes to avoid cache miss conflicts on CPUs which have <=4-way associative L1-Cache @@ -231,6 +231,7 @@ void RawImageSource::CA_correct_RT(const double cared, const double cablue, cons #pragma omp for collapse(2) schedule(dynamic) nowait for (int top = -border ; top < height; top += ts - border2) for (int left = -border; left < width; left += ts - border2) { + memset(buffer, 0, buffersize); const int vblock = ((top + border) / (ts - border2)) + 1; const int hblock = ((left + border) / (ts - border2)) + 1; const int bottom = min(top + ts, height + border); @@ -730,6 +731,7 @@ void RawImageSource::CA_correct_RT(const double cared, const double cablue, cons for (int top = -border; top < height; top += ts - border2) for (int left = -border; left < width; left += ts - border2) { + memset(buffer, 0, buffersize); float lblockshifts[2][2]; const int vblock = ((top + border) / (ts - border2)) + 1; const int hblock = ((left + border) / (ts - border2)) + 1; diff --git a/rtengine/LUT.h b/rtengine/LUT.h index 6ec6447d6..b128d89b8 100644 --- a/rtengine/LUT.h +++ b/rtengine/LUT.h @@ -92,9 +92,9 @@ protected: private: unsigned int owner; #if defined( __SSE2__ ) && defined( __x86_64__ ) - vfloat maxsv __attribute__ ((aligned (16))); - vfloat sizev __attribute__ ((aligned (16))); - vint sizeiv __attribute__ ((aligned (16))); + vfloat maxsv ALIGNED16; + vfloat sizev ALIGNED16; + vint sizeiv ALIGNED16; #endif public: /// convenience flag! If one doesn't want to delete the buffer but want to flag it to be recomputed... diff --git a/rtengine/dirpyr_equalizer.cc b/rtengine/dirpyr_equalizer.cc index ea9a4a46d..f82b7f8bf 100644 --- a/rtengine/dirpyr_equalizer.cc +++ b/rtengine/dirpyr_equalizer.cc @@ -418,7 +418,7 @@ SSEFUNCTION void ImProcFunctions::dirpyr_channel(float ** data_fine, float ** da __m128 thousandv = _mm_set1_ps( 1000.0f ); __m128 dirwtv, valv, normv, dftemp1v, dftemp2v; // multiplied each value of domkerv by 1000 to avoid multiplication by 1000 inside the loop - float domkerv[5][5][4] __attribute__ ((aligned (16))) = {{{1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}}, {{1000, 1000, 1000, 1000}, {2000, 2000, 2000, 2000}, {2000, 2000, 2000, 2000}, {2000, 2000, 2000, 2000}, {1000, 1000, 1000, 1000}}, {{1000, 1000, 1000, 1000}, {2000, 2000, 2000, 2000}, {2000, 2000, 2000, 2000}, {2000, 2000, 2000, 2000}, {1000, 1000, 1000, 1000}}, {{1000, 1000, 1000, 1000}, {2000, 2000, 2000, 2000}, {2000, 2000, 2000, 2000}, {2000, 2000, 2000, 2000}, {1000, 1000, 1000, 1000}}, {{1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}}}; + float domkerv[5][5][4] ALIGNED16 = {{{1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}}, {{1000, 1000, 1000, 1000}, {2000, 2000, 2000, 2000}, {2000, 2000, 2000, 2000}, {2000, 2000, 2000, 2000}, {1000, 1000, 1000, 1000}}, {{1000, 1000, 1000, 1000}, {2000, 2000, 2000, 2000}, {2000, 2000, 2000, 2000}, {2000, 2000, 2000, 2000}, {1000, 1000, 1000, 1000}}, {{1000, 1000, 1000, 1000}, {2000, 2000, 2000, 2000}, {2000, 2000, 2000, 2000}, {2000, 2000, 2000, 2000}, {1000, 1000, 1000, 1000}}, {{1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}, {1000, 1000, 1000, 1000}}}; #endif // __SSE2__ int j; @@ -458,7 +458,7 @@ SSEFUNCTION void ImProcFunctions::dirpyr_channel(float ** data_fine, float ** da for (int jnbr = j - scalewin, indexjhlp = 0; jnbr <= j + scalewin; jnbr += scale, indexjhlp++) { dftemp2v = LVFU(data_fine[inbr][jnbr]); - dirwtv = _mm_load_ps((float*)&domkerv[indexihlp][indexjhlp]) / (vabsf(dftemp1v - dftemp2v) + thousandv); + dirwtv = LVF(domkerv[indexihlp][indexjhlp]) / (vabsf(dftemp1v - dftemp2v) + thousandv); valv += dirwtv * dftemp2v; normv += dirwtv; } diff --git a/rtengine/helpersse2.h b/rtengine/helpersse2.h index d4290bacc..da1691748 100644 --- a/rtengine/helpersse2.h +++ b/rtengine/helpersse2.h @@ -22,18 +22,18 @@ typedef __m128i vint2; // #ifdef __GNUC__ #if ((__GNUC__ == 4 && __GNUC_MINOR__ >= 9) || __GNUC__ > 4) && (!defined(WIN32) || defined( __x86_64__ )) -#define LVF(x) _mm_load_ps(&x) +#define LVF(x) _mm_load_ps((float*)&x) #define LVFU(x) _mm_loadu_ps(&x) #define STVF(x,y) _mm_store_ps(&x,y) #define STVFU(x,y) _mm_storeu_ps(&x,y) #else // there is a bug in gcc 4.7.x when using openmp and aligned memory and -O3, also need to map the aligned functions to unaligned functions for WIN32 builds -#define LVF(x) _mm_loadu_ps(&x) +#define LVF(x) _mm_loadu_ps((float*)&x) #define LVFU(x) _mm_loadu_ps(&x) #define STVF(x,y) _mm_storeu_ps(&x,y) #define STVFU(x,y) _mm_storeu_ps(&x,y) #endif #else -#define LVF(x) _mm_load_ps(&x) +#define LVF(x) _mm_load_ps((float*)&x) #define LVFU(x) _mm_loadu_ps(&x) #define STVF(x,y) _mm_store_ps(&x,y) #define STVFU(x,y) _mm_storeu_ps(&x,y) diff --git a/rtengine/shmap.cc b/rtengine/shmap.cc index 1783a6bc8..ac77da25d 100644 --- a/rtengine/shmap.cc +++ b/rtengine/shmap.cc @@ -475,7 +475,7 @@ SSEFUNCTION void SHMap::dirpyr_shmap(float ** data_fine, float ** data_coarse, i { #if defined( __SSE2__ ) && defined( __x86_64__ ) __m128 dirwtv, valv, normv, dftemp1v, dftemp2v, fgg; - float domkerv[5][5][4] __attribute__ ((aligned (16))) = {{{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}}, {{1, 1, 1, 1}, {2, 2, 2, 2}, {2, 2, 2, 2}, {2, 2, 2, 2}, {1, 1, 1, 1}}, {{1, 1, 1, 1}, {2, 2, 2, 2}, {2, 2, 2, 2}, {2, 2, 2, 2}, {1, 1, 1, 1}}, {{1, 1, 1, 1}, {2, 2, 2, 2}, {2, 2, 2, 2}, {2, 2, 2, 2}, {1, 1, 1, 1}}, {{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}}}; + float domkerv[5][5][4] ALIGNED16 = {{{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}}, {{1, 1, 1, 1}, {2, 2, 2, 2}, {2, 2, 2, 2}, {2, 2, 2, 2}, {1, 1, 1, 1}}, {{1, 1, 1, 1}, {2, 2, 2, 2}, {2, 2, 2, 2}, {2, 2, 2, 2}, {1, 1, 1, 1}}, {{1, 1, 1, 1}, {2, 2, 2, 2}, {2, 2, 2, 2}, {2, 2, 2, 2}, {1, 1, 1, 1}}, {{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}}}; #endif // __SSE2__ int j; @@ -513,7 +513,7 @@ SSEFUNCTION void SHMap::dirpyr_shmap(float ** data_fine, float ** data_coarse, i for (int jnbr = j - scalewin, indexjhlp = 0; jnbr <= j + scalewin; jnbr += scale, indexjhlp++) { dftemp2v = LVFU(data_fine[inbr][jnbr]); - dirwtv = ( _mm_load_ps((float*)&domkerv[indexihlp][indexjhlp]) * rangefn[_mm_cvttps_epi32(vabsf(dftemp2v - dftemp1v))] ); + dirwtv = ( LVF(domkerv[indexihlp][indexjhlp]) * rangefn[_mm_cvttps_epi32(vabsf(dftemp2v - dftemp1v))] ); valv += dirwtv * dftemp2v; normv += dirwtv; }