Merge branch 'dev' into hidpi-icons
This commit is contained in:
commit
bd175ec8d1
@ -517,7 +517,7 @@ if(WIN32)
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
install(FILES rawtherapee.appdata.xml DESTINATION "${APPDATADIR}")
|
||||
install(FILES com.rawtherapee.RawTherapee.appdata.xml DESTINATION "${APPDATADIR}")
|
||||
endif()
|
||||
|
||||
# check whether the used version of lensfun has lfDatabase::LoadDirectory
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop">
|
||||
<id>rawtherapee.desktop</id>
|
||||
<component type="desktop-application">
|
||||
<id>com.rawtherapee.RawTherapee</id>
|
||||
<name>RawTherapee</name>
|
||||
<summary>An advanced raw photo development program</summary>
|
||||
<summary xml:lang="cs">Program pro konverzi a zpracování digitálních raw fotografií</summary>
|
||||
@ -33,6 +33,14 @@
|
||||
<url type="help">http://rawpedia.rawtherapee.com/</url>
|
||||
<url type="homepage">http://rawtherapee.com/</url>
|
||||
<url type="translate">https://discuss.pixls.us/t/localization-how-to-translate-rawtherapee-and-rawpedia/2594</url>
|
||||
<launchable type="desktop-id">rawtherapee.desktop</launchable>
|
||||
<releases>
|
||||
<release version="5.5" date="2018-12-17" type="stable"></release>
|
||||
</releases>
|
||||
<provides>
|
||||
<binary>rawtherapee</binary>
|
||||
<binary>rawtherapee-cli</binary>
|
||||
</provides>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<caption>HDR DNG of a misty morning in the countryside</caption>
|
@ -302,7 +302,6 @@ HISTORY_MSG_121;Raw auto CA
|
||||
HISTORY_MSG_122;Auto marc fosc
|
||||
HISTORY_MSG_123;Fitxer de camp fosc
|
||||
HISTORY_MSG_124;Correc. expo. linear
|
||||
HISTORY_MSG_125;Correc. exposició preservant HL
|
||||
HISTORY_MSG_126;Fitxer de camp pla
|
||||
HISTORY_MSG_127;Auto-sel. camp pla
|
||||
HISTORY_MSG_128;Camp pla borrós - radi
|
||||
@ -470,7 +469,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtre línia de soroll
|
||||
PARTIALPASTE_RAWCACORR_AUTO;Auto-correcció AC
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Nivell negre
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Factor de corr. linear de punt blanc
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Corr. punt blanc preservant HL (EV)
|
||||
PARTIALPASTE_RAWGROUP;Ajustos raw
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Aplica pas de millora DCB
|
||||
PARTIALPASTE_RAW_DCBITERATIONS;Nombre d'iteracions DCB
|
||||
@ -798,7 +796,6 @@ TP_RAWCACORR_CABLUE;Blau
|
||||
TP_RAWCACORR_CARED;Vermell
|
||||
TP_RAWEXPOS_BLACKS;Nivells negres
|
||||
TP_RAWEXPOS_LINEAR;Punt blanc: factor de correcció linear
|
||||
TP_RAWEXPOS_PRESER;Punt blanc: correc. clars preservant (EV)
|
||||
TP_RAWEXPOS_TWOGREEN;Dos verds junts
|
||||
TP_RAW_DCBENHANCE;Aplica pas de millora DCB
|
||||
TP_RAW_DCBITERATIONS;Nombre d'iteracions DCB
|
||||
@ -2008,7 +2005,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
!TP_RAW_LMMSE_TOOLTIP;Adds gamma (step 1), median (steps 2-4) and refinement (steps 5-6) to reduce artifacts and improve the signal-to-noise ratio.
|
||||
|
@ -463,7 +463,6 @@ PARTIALPASTE_RAWCACORR_AUTO;CA自动更正
|
||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;红蓝色散
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;黑色等级
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;白点纠正
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;高光补偿
|
||||
PARTIALPASTE_RAWGROUP;Raw设置
|
||||
PARTIALPASTE_RAW_DCBENHANCE;DCB 增强
|
||||
PARTIALPASTE_RAW_DCBITERATIONS;DCB 反复
|
||||
@ -1055,7 +1054,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: <b>-</b>
|
||||
!HISTORY_MSG_118;Raw CA correction - Blue
|
||||
!HISTORY_MSG_120;Green equilibration
|
||||
!HISTORY_MSG_121;Raw CA Correction - Auto
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_131;NR - Luma
|
||||
!HISTORY_MSG_132;NR - Chroma
|
||||
!HISTORY_MSG_133;Output gamma
|
||||
@ -1950,7 +1948,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: <b>-</b>
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1980,7 +1977,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: <b>-</b>
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -631,7 +631,6 @@ TP_WBALANCE_TEMPERATURE;色溫
|
||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
!HISTORY_MSG_123;Dark-Frame - File
|
||||
!HISTORY_MSG_124;White point correction
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_126;Flat-Field - File
|
||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1206,7 +1205,6 @@ TP_WBALANCE_TEMPERATURE;色溫
|
||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1898,7 +1896,6 @@ TP_WBALANCE_TEMPERATURE;色溫
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1928,7 +1925,8 @@ TP_WBALANCE_TEMPERATURE;色溫
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -421,7 +421,6 @@ HISTORY_MSG_121;Raw korekce CA - automatická
|
||||
HISTORY_MSG_122;Tmavé snímky - Automatický výběr
|
||||
HISTORY_MSG_123;Tmavé snímky - Soubor
|
||||
HISTORY_MSG_124;Korekce bílého bodu
|
||||
HISTORY_MSG_125;Zachování světel
|
||||
HISTORY_MSG_126;Flat Field - Soubor
|
||||
HISTORY_MSG_127;Flat Field - Automatický výběr
|
||||
HISTORY_MSG_128;Flat Field - Poloměr rozostření
|
||||
@ -1056,7 +1055,6 @@ PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA zabránit posunu barev
|
||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA červená a modrá
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Úrovně černé
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Korekce bílého bodu
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Zachování světel
|
||||
PARTIALPASTE_RAWGROUP;Nastavení Raw
|
||||
PARTIALPASTE_RAW_BORDER;Okraj Raw
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Vylepšení DCB
|
||||
@ -1882,7 +1880,6 @@ TP_RAWEXPOS_BLACK_BLUE;Modrá
|
||||
TP_RAWEXPOS_BLACK_GREEN;Zelená
|
||||
TP_RAWEXPOS_BLACK_RED;Červená
|
||||
TP_RAWEXPOS_LINEAR;Korekce bílého bodu
|
||||
TP_RAWEXPOS_PRESER;Zachování světel
|
||||
TP_RAWEXPOS_RGB;Červená, telená, modrá
|
||||
TP_RAWEXPOS_TWOGREEN;Spojit zelené
|
||||
TP_RAW_1PASSMEDIUM;Jeden průchod (Markesteijn)
|
||||
@ -2351,4 +2348,5 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
|
||||
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
|
||||
!MAIN_TAB_FAVORITES;Favorites
|
||||
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_SHARPENING_BLUR;Blur radius
|
||||
|
@ -626,7 +626,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
!HISTORY_MSG_123;Dark-Frame - File
|
||||
!HISTORY_MSG_124;White point correction
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_126;Flat-Field - File
|
||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1203,7 +1202,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1895,7 +1893,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1923,7 +1920,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -457,7 +457,6 @@ HISTORY_MSG_121;(Sensor-Matrix)\nChromatische Aberration\nAutomatische Korrektur
|
||||
HISTORY_MSG_122;(Dunkelbild)\nAutomatische Auswahl
|
||||
HISTORY_MSG_123;(Dunkelbild) - Datei
|
||||
HISTORY_MSG_124;(Weißpunkt)\nKorrekturfaktor
|
||||
HISTORY_MSG_125;(Belichtungskorrektur)\nLichter schützen
|
||||
HISTORY_MSG_126;(Weißbild) - Datei
|
||||
HISTORY_MSG_127;(Weißbild)\nAutomatische Auswahl
|
||||
HISTORY_MSG_128;(Weißbild)\nUnschärferadius
|
||||
@ -852,6 +851,7 @@ HISTORY_MSG_RAWCACORR_AUTOIT;(Sensor-Matrix)\nChromatische Aberration\nIteration
|
||||
HISTORY_MSG_RAWCACORR_COLORSHIFT;(Sensor-Matrix)\nChromatische Aberration\nFarbverschiebungen\nvermeiden
|
||||
HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand
|
||||
HISTORY_MSG_RESIZE_ALLOWUPSCALING;(Skalieren)\nHochskalieren zulassen
|
||||
HISTORY_MSG_SHARPENING_BLUR;(Schärfung)\nWeichzeichnerradius
|
||||
HISTORY_MSG_SHARPENING_CONTRAST;(Schärfung)\nKontrastschwelle
|
||||
HISTORY_MSG_SH_COLORSPACE;Farbraum
|
||||
HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht)
|
||||
@ -992,6 +992,8 @@ MAIN_TAB_EXIF;Exif
|
||||
MAIN_TAB_EXPORT; Exportieren
|
||||
MAIN_TAB_EXPOSURE;Belichtung
|
||||
MAIN_TAB_EXPOSURE_TOOLTIP;Taste: <b>Alt</b> + <b>e</b>
|
||||
MAIN_TAB_FAVORITES;Favoriten
|
||||
MAIN_TAB_FAVORITES_TOOLTIP;Taste: <b>Alt</b> + <b>u</b>
|
||||
MAIN_TAB_FILTER; Filter
|
||||
MAIN_TAB_INSPECT; Prüfen
|
||||
MAIN_TAB_IPTC;IPTC
|
||||
@ -1095,7 +1097,6 @@ PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;Chromatische Aberration: Farbverschiebung
|
||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;Chromatische Aberration: Rot & Blau
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Weißpunkt: Schwarzpegel
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Weißpunkt: Korrekturfaktor
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Weißpunkt: Lichter schützen (EV)
|
||||
PARTIALPASTE_RAWGROUP;RAW
|
||||
PARTIALPASTE_RAW_BORDER;Farbinterpolation: Bildrand
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Farbinterpolation: DCB-Verbesserung
|
||||
@ -1928,7 +1929,6 @@ TP_RAWEXPOS_BLACK_BLUE;Blau
|
||||
TP_RAWEXPOS_BLACK_GREEN;Grün
|
||||
TP_RAWEXPOS_BLACK_RED;Rot
|
||||
TP_RAWEXPOS_LINEAR;Korrekturfaktor
|
||||
TP_RAWEXPOS_PRESER;Weißpunkt: Lichter schützen
|
||||
TP_RAWEXPOS_RGB;Rot, Grün, Blau
|
||||
TP_RAWEXPOS_TWOGREEN;Grün-Werte automatisch angleichen
|
||||
TP_RAW_1PASSMEDIUM;1-Pass (Markesteijn)
|
||||
@ -2139,6 +2139,7 @@ TP_SHARPENEDGE_LABEL;Kantenschärfung
|
||||
TP_SHARPENEDGE_PASSES;Iterationen
|
||||
TP_SHARPENEDGE_THREE;Nur Luminanz
|
||||
TP_SHARPENING_AMOUNT;Intensität
|
||||
TP_SHARPENING_BLUR;Weichzeichnerradius
|
||||
TP_SHARPENING_CONTRAST;Kontrastschwelle
|
||||
TP_SHARPENING_EDRADIUS;Radius
|
||||
TP_SHARPENING_EDTOLERANCE;Kantentoleranz
|
||||
@ -2413,7 +2414,4 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: <b>-</b>
|
||||
! Untranslated keys follow; remove the ! prefix after an entry is translated.
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
HISTORY_MSG_SHARPENING_BLUR;(Schärfung)\nWeichzeichnerradius
|
||||
MAIN_TAB_FAVORITES;Favoriten
|
||||
MAIN_TAB_FAVORITES_TOOLTIP;Taste: <b>Alt</b> + <b>u</b>
|
||||
TP_SHARPENING_BLUR;Weichzeichnerradius
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
|
@ -489,7 +489,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
|
||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
!HISTORY_MSG_123;Dark-Frame - File
|
||||
!HISTORY_MSG_124;White point correction
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_126;Flat-Field - File
|
||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1098,7 +1097,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
|
||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1858,7 +1856,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1887,7 +1884,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -381,7 +381,6 @@
|
||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
!HISTORY_MSG_123;Dark-Frame - File
|
||||
!HISTORY_MSG_124;White point correction
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_126;Flat-Field - File
|
||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1019,7 +1018,6 @@
|
||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1845,7 +1843,6 @@
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1875,7 +1872,8 @@
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -440,7 +440,6 @@ HISTORY_MSG_121;Corrección automática AC
|
||||
HISTORY_MSG_122;Auto selección de arch. de Toma Negra
|
||||
HISTORY_MSG_123;Archivo de Toma Negra
|
||||
HISTORY_MSG_124;Corrección de punto blanco
|
||||
HISTORY_MSG_125;Preservar Luces Altas
|
||||
HISTORY_MSG_126;Archivo de campo plano
|
||||
HISTORY_MSG_127;Auto selección archivo de campo plano
|
||||
HISTORY_MSG_128;Radio de difuminado de campo plano
|
||||
@ -1081,7 +1080,6 @@ PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA evitar el cambio de color
|
||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA Rojo & Azul
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Nivel de negro
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Corrección de punto blanco
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Preservar Luces Altas
|
||||
PARTIALPASTE_RAWGROUP;Ajustes Raw
|
||||
PARTIALPASTE_RAW_BORDER;Raw margen/borde
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Aplicar paso de mejora DCB
|
||||
@ -1972,7 +1970,6 @@ TP_RAWEXPOS_BLACK_BLUE;Azul
|
||||
TP_RAWEXPOS_BLACK_GREEN;Verde
|
||||
TP_RAWEXPOS_BLACK_RED;Rojo
|
||||
TP_RAWEXPOS_LINEAR;Corrección de punto blanco
|
||||
TP_RAWEXPOS_PRESER;Preservación de Luces Altas
|
||||
TP_RAWEXPOS_RGB;Rojo, Verde, Azul
|
||||
TP_RAWEXPOS_TWOGREEN;Vincular verdes
|
||||
TP_RAW_1PASSMEDIUM;1-pasaje (medio)
|
||||
@ -2462,4 +2459,5 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
|
||||
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
|
||||
!MAIN_TAB_FAVORITES;Favorites
|
||||
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_SHARPENING_BLUR;Blur radius
|
||||
|
@ -627,7 +627,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
|
||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
!HISTORY_MSG_123;Dark-Frame - File
|
||||
!HISTORY_MSG_124;White point correction
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_126;Flat-Field - File
|
||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1204,7 +1203,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
|
||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1896,7 +1894,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1924,7 +1921,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -379,7 +379,6 @@ HISTORY_MSG_121;A.C. Raw - Auto
|
||||
HISTORY_MSG_122;Sélection auto de trame noire
|
||||
HISTORY_MSG_123;Fichier de trame noire
|
||||
HISTORY_MSG_124;Correct. du point blanc
|
||||
HISTORY_MSG_125;Préservation des HL
|
||||
HISTORY_MSG_126;Champ Uniforme - Fichier
|
||||
HISTORY_MSG_127;Champ Uniforme - Sélection auto
|
||||
HISTORY_MSG_128;Champ Uniforme - Rayon
|
||||
@ -1018,7 +1017,6 @@ PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;A.C. Raw - Éviter les dérives couleurs
|
||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;A.C. Raw - Rouge et bleu
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Niveaux de noir
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Correction du point blanc
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Préservation des hautes humières
|
||||
PARTIALPASTE_RAWGROUP;Réglages RAW
|
||||
PARTIALPASTE_RAW_BORDER;Bord Raw
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Amélioration de DCB
|
||||
@ -1852,7 +1850,6 @@ TP_RAWEXPOS_BLACK_BLUE;Bleu
|
||||
TP_RAWEXPOS_BLACK_GREEN;Vert
|
||||
TP_RAWEXPOS_BLACK_RED;Rouge
|
||||
TP_RAWEXPOS_LINEAR;Corr. du Point Blanc
|
||||
TP_RAWEXPOS_PRESER;Préservation des HL
|
||||
TP_RAWEXPOS_RGB;Rouge, Vert, Bleu
|
||||
TP_RAWEXPOS_TWOGREEN;Lier les verts
|
||||
TP_RAW_1PASSMEDIUM;1-Passe (Medium)
|
||||
@ -2340,4 +2337,5 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
|
||||
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
|
||||
!MAIN_TAB_FAVORITES;Favorites
|
||||
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_SHARPENING_BLUR;Blur radius
|
||||
|
@ -626,7 +626,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
|
||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
!HISTORY_MSG_123;Dark-Frame - File
|
||||
!HISTORY_MSG_124;White point correction
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_126;Flat-Field - File
|
||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1203,7 +1202,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
|
||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1895,7 +1893,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1923,7 +1920,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -627,7 +627,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום
|
||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
!HISTORY_MSG_123;Dark-Frame - File
|
||||
!HISTORY_MSG_124;White point correction
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_126;Flat-Field - File
|
||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1204,7 +1203,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום
|
||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1896,7 +1894,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1924,7 +1921,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -332,7 +332,6 @@ HISTORY_MSG_121;AC automatica (Raw)
|
||||
HISTORY_MSG_122;Dark Frame - Automatico
|
||||
HISTORY_MSG_123;Dark Frame - File
|
||||
HISTORY_MSG_124;Correzione Punto di Bianco
|
||||
HISTORY_MSG_125;Protezione AlteLuci
|
||||
HISTORY_MSG_126;Flat Field - File
|
||||
HISTORY_MSG_127;Flat Field - Automatico
|
||||
HISTORY_MSG_128;Flat Field - Raggio di Sfocamento
|
||||
@ -600,7 +599,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtro per rumore a bande
|
||||
PARTIALPASTE_RAWCACORR_AUTO;Autocorrezione AC
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Punto del Nero
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Correzione Punto del Bianco
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Conservazione Alteluci
|
||||
PARTIALPASTE_RAWGROUP;Impostazioni del Raw
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Miglioramento DCB
|
||||
PARTIALPASTE_RAW_DCBITERATIONS;Numero di iterazioni DCB
|
||||
@ -1135,7 +1133,6 @@ TP_RAWCACORR_CABLUE;Blu
|
||||
TP_RAWCACORR_CARED;Rosso
|
||||
TP_RAWEXPOS_BLACKS;Livelli del nero
|
||||
TP_RAWEXPOS_LINEAR;Punto del Bianco - Correzione
|
||||
TP_RAWEXPOS_PRESER;Punto del Bianco - Protezione Alteluci
|
||||
TP_RAWEXPOS_TWOGREEN;Valori del verde uniti
|
||||
TP_RAW_DCBENHANCE;Miglioramento DCB
|
||||
TP_RAW_DCBITERATIONS;Numero di iterazioni DCB
|
||||
@ -2023,7 +2020,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_MONO;Mono
|
||||
!TP_RAW_NONE;None (Shows sensor pattern)
|
||||
|
@ -116,7 +116,7 @@ EXPORT_BYPASS;迂回させる機能
|
||||
EXPORT_BYPASS_ALL;全て選択 / 全て解除
|
||||
EXPORT_BYPASS_DEFRINGE;フリンジ低減を迂回
|
||||
EXPORT_BYPASS_DIRPYRDENOISE;ノイズ低減を迂回
|
||||
EXPORT_BYPASS_DIRPYREQUALIZER;ディテール・レベルのコントラストを迂回
|
||||
EXPORT_BYPASS_DIRPYREQUALIZER;詳細レベルによるコントラスト調整を迂回
|
||||
EXPORT_BYPASS_EQUALIZER;ウェーブレットのレベルを迂回
|
||||
EXPORT_BYPASS_RAW_CA;[raw] 色収差補正を迂回
|
||||
EXPORT_BYPASS_RAW_CCSTEPS;[raw] 偽色抑制を迂回
|
||||
@ -127,8 +127,8 @@ EXPORT_BYPASS_RAW_FF;[raw] フラットフィールドを迂回
|
||||
EXPORT_BYPASS_RAW_GREENTHRESH;[raw] グリーン平衡化を迂回
|
||||
EXPORT_BYPASS_RAW_LINENOISE;[raw] ラインノイズ フィルタを迂回
|
||||
EXPORT_BYPASS_RAW_LMMSE_ITERATIONS;[raw] LMMSE 拡張処理を迂回
|
||||
EXPORT_BYPASS_SHARPENEDGE;エッジ・シャープ化を迂回
|
||||
EXPORT_BYPASS_SHARPENING;シャープ化を迂回
|
||||
EXPORT_BYPASS_SHARPENEDGE;エッジ・シャープニングを迂回
|
||||
EXPORT_BYPASS_SHARPENING;シャープニングを迂回
|
||||
EXPORT_BYPASS_SHARPENMICRO;マイクロコントラストを迂回
|
||||
EXPORT_BYPASS_SH_HQ;シャドウ/ハイライト(高画質)を迂回
|
||||
EXPORT_FASTEXPORTOPTIONS;<b>高速書き出しオプション</b>
|
||||
@ -307,16 +307,16 @@ HISTORY_MSG_16;輝度 黒レベル
|
||||
HISTORY_MSG_17;輝度 ハイライト圧縮
|
||||
HISTORY_MSG_18;輝度 シャドウ圧縮
|
||||
HISTORY_MSG_19;L*a*b* - L*カーブ
|
||||
HISTORY_MSG_20;シャープ化
|
||||
HISTORY_MSG_21;シャープ化 半径
|
||||
HISTORY_MSG_22;シャープ化 適用量
|
||||
HISTORY_MSG_23;シャープ化 しきい値
|
||||
HISTORY_MSG_24;シャープ化 エッジのみ
|
||||
HISTORY_MSG_25;シャープ化 エッジ検出 半径
|
||||
HISTORY_MSG_26;シャープ化 エッジ許容
|
||||
HISTORY_MSG_27;シャープ化 ハロ抑制
|
||||
HISTORY_MSG_20;シャープニング
|
||||
HISTORY_MSG_21;シャープニング 半径
|
||||
HISTORY_MSG_22;シャープニング 適用量
|
||||
HISTORY_MSG_23;シャープニング しきい値
|
||||
HISTORY_MSG_24;シャープニング エッジのみ
|
||||
HISTORY_MSG_25;シャープニング エッジ検出 半径
|
||||
HISTORY_MSG_26;シャープニング エッジ許容
|
||||
HISTORY_MSG_27;シャープニング ハロ抑制
|
||||
HISTORY_MSG_28;ハロ抑制 適用量
|
||||
HISTORY_MSG_29;シャープ化 方式
|
||||
HISTORY_MSG_29;シャープニング 方式
|
||||
HISTORY_MSG_30;デコンボリューション 半径
|
||||
HISTORY_MSG_31;デコンボリューション 適用量
|
||||
HISTORY_MSG_32;デコンボリューション 減衰
|
||||
@ -380,8 +380,8 @@ HISTORY_MSG_89;ノイズ低減
|
||||
HISTORY_MSG_90;輝度ノイズの低減
|
||||
HISTORY_MSG_91;色ノイズの低減
|
||||
HISTORY_MSG_92;ノイズ低減のガンマ
|
||||
HISTORY_MSG_93;ディテールのコントラスト係数
|
||||
HISTORY_MSG_94;ディテールのコントラスト
|
||||
HISTORY_MSG_93;詳細レベルコントラスト係数
|
||||
HISTORY_MSG_94;詳細レベルコントラスト
|
||||
HISTORY_MSG_95;L*a*b* - 色度
|
||||
HISTORY_MSG_96;L*a*b* - a*カーブ
|
||||
HISTORY_MSG_97;L*a*b* - b*カーブ
|
||||
@ -412,7 +412,6 @@ HISTORY_MSG_121;raw 色収差 自動
|
||||
HISTORY_MSG_122;ダークフレーム 自動
|
||||
HISTORY_MSG_123;ダークフレーム ファイル
|
||||
HISTORY_MSG_124;リニア露光補正
|
||||
HISTORY_MSG_125;露光補正 HLを保持
|
||||
HISTORY_MSG_126;フラットフィールド ファイル
|
||||
HISTORY_MSG_127;フラットフィールド 自動選択
|
||||
HISTORY_MSG_128;フラットフィールド・ぼかし半径
|
||||
@ -429,12 +428,12 @@ HISTORY_MSG_138;黒レベル レッド
|
||||
HISTORY_MSG_139;黒レベル ブルー
|
||||
HISTORY_MSG_140;黒レベル グリーン 2
|
||||
HISTORY_MSG_141;黒レベル グリーン 連動
|
||||
HISTORY_MSG_142;エッジ シャープ化 - 反復
|
||||
HISTORY_MSG_143;エッジ シャープ化 - 適用量
|
||||
HISTORY_MSG_142;エッジ シャープニング - 反復
|
||||
HISTORY_MSG_143;エッジ シャープニング - 適用量
|
||||
HISTORY_MSG_144;マイクロコントラスト - 適用量
|
||||
HISTORY_MSG_145;マイクロコントラスト - 均等
|
||||
HISTORY_MSG_146;エッジ シャープ化
|
||||
HISTORY_MSG_147;エッジ シャープ化 - 輝度のみ
|
||||
HISTORY_MSG_146;エッジ シャープニング
|
||||
HISTORY_MSG_147;エッジ シャープニング - 輝度のみ
|
||||
HISTORY_MSG_148;マイクロコントラスト
|
||||
HISTORY_MSG_149;マイクロコントラスト - 3×3 マトリクス
|
||||
HISTORY_MSG_150;デモザイク後にアーティファクトとノイズを軽減
|
||||
@ -535,7 +534,7 @@ HISTORY_MSG_245;ビネットフィルター 中央
|
||||
HISTORY_MSG_246;L*a*b* CL カーブ
|
||||
HISTORY_MSG_247;L*a*b* LH カーブ
|
||||
HISTORY_MSG_248;L*a*b* HH カーブ
|
||||
HISTORY_MSG_249;ディテールレベルのコントラスト - しきい値
|
||||
HISTORY_MSG_249;詳細レベルによるコントラスト調整 - しきい値
|
||||
HISTORY_MSG_250;ノイズ低減 - 強化
|
||||
HISTORY_MSG_251;白黒 - アルゴリズム
|
||||
HISTORY_MSG_252;CbDL 肌色の目標/保護
|
||||
@ -549,15 +548,15 @@ HISTORY_MSG_259;カラートーン調整 - 不透明度のカーブ
|
||||
HISTORY_MSG_260;カラートーン調整 - a*(b*)の不透明度
|
||||
HISTORY_MSG_261;カラートーン調整 - 方法
|
||||
HISTORY_MSG_262;カラートーン調整 - b*の不透明度
|
||||
HISTORY_MSG_263;カラートーン調整 - シャドウのレッド
|
||||
HISTORY_MSG_264;カラートーン調整 - シャドウのグリーン
|
||||
HISTORY_MSG_265;カラートーン調整 - シャドウのブルー
|
||||
HISTORY_MSG_263;カラートーン調整 - シャドウのレッド
|
||||
HISTORY_MSG_264;カラートーン調整 - シャドウのグリーン
|
||||
HISTORY_MSG_265;カラートーン調整 - シャドウのブルー
|
||||
HISTORY_MSG_266;カラートーン調整 - 中間トーンのレッド
|
||||
HISTORY_MSG_267;カラートーン調整 - 中間トーンのグリーン
|
||||
HISTORY_MSG_268;カラートーン調整 - 中間トーンのブルー
|
||||
HISTORY_MSG_269;カラートーン調整 - ハイライトのレッド
|
||||
HISTORY_MSG_270;カラートーン調整 - ハイライトのグリーン
|
||||
HISTORY_MSG_271;カラートーン調整 - ハイライトのブルー
|
||||
HISTORY_MSG_269;カラートーン調整 - ハイライトのレッド
|
||||
HISTORY_MSG_270;カラートーン調整 - ハイライトのグリーン
|
||||
HISTORY_MSG_271;カラートーン調整 - ハイライトのブルー
|
||||
HISTORY_MSG_272;カラートーン調整 - バランス
|
||||
HISTORY_MSG_273;カラートーン調整 - SMHでカラーバランス
|
||||
HISTORY_MSG_274;カラートーン調整 - シャドウの彩度
|
||||
@ -599,7 +598,7 @@ HISTORY_MSG_309;W- ES ディテール
|
||||
HISTORY_MSG_310;W- 残差 青空の目標/保護
|
||||
HISTORY_MSG_311;W- ウェーブレットのレベル
|
||||
HISTORY_MSG_312;W- 残差 シャドウのしきい値
|
||||
HISTORY_MSG_313;W- 色度 明星色/純色
|
||||
HISTORY_MSG_313;W- 色度 明清色/純色
|
||||
HISTORY_MSG_314;W- 色域 アーティファクトの軽減
|
||||
HISTORY_MSG_315;W- 残差 コントラスト
|
||||
HISTORY_MSG_316;W- 色域 肌色の目標/保護
|
||||
@ -610,7 +609,7 @@ HISTORY_MSG_320;W- コントラスト シャドウ範囲
|
||||
HISTORY_MSG_321;W- コントラスト シャドウレベル
|
||||
HISTORY_MSG_322;W- 色域 色ずれの回避
|
||||
HISTORY_MSG_323;W- ES ローカルコントラスト
|
||||
HISTORY_MSG_324;W- 色度 明星色
|
||||
HISTORY_MSG_324;W- 色度 明清色
|
||||
HISTORY_MSG_325;W- 色度 純色
|
||||
HISTORY_MSG_326;W- 色度 方法
|
||||
HISTORY_MSG_327;W- コントラスト 適用先
|
||||
@ -657,7 +656,7 @@ HISTORY_MSG_367;W- ES ローカルコントラストカーブ
|
||||
HISTORY_MSG_368;W- 最終 コントラストバランス
|
||||
HISTORY_MSG_369;W- 最終 バランスの方法
|
||||
HISTORY_MSG_370;W- 最終 ローカルコントラストカーブ
|
||||
HISTORY_MSG_371;リサイズ後のシャープ化(PRS)
|
||||
HISTORY_MSG_371;リサイズ後のシャープニング(PRS)
|
||||
HISTORY_MSG_372;PRS アンシャープマスク - 半径
|
||||
HISTORY_MSG_373;PRS アンシャープマスク - 適用量
|
||||
HISTORY_MSG_374;PRS アンシャープマスク - しきい値
|
||||
@ -726,7 +725,7 @@ HISTORY_MSG_436;レティネックス - M - 半径
|
||||
HISTORY_MSG_437;レティネックス - M - 方式
|
||||
HISTORY_MSG_438;レティネックス - M - イコライザ
|
||||
HISTORY_MSG_439;レティネックス - プロセス
|
||||
HISTORY_MSG_440;ディテールのコントラスト - 適用
|
||||
HISTORY_MSG_440;詳細レベルコントラスト - 適用
|
||||
HISTORY_MSG_441;レティネックス - 透過率の増加
|
||||
HISTORY_MSG_442;レティネックス - スケール
|
||||
HISTORY_MSG_443;出力のブラックポイント補正
|
||||
@ -759,7 +758,7 @@ HISTORY_MSG_485;レンズ補正
|
||||
HISTORY_MSG_486;レンズ補正 - カメラ
|
||||
HISTORY_MSG_487;レンズ補正 - レンズ
|
||||
HISTORY_MSG_488;ダイナミックレンジ圧縮
|
||||
HISTORY_MSG_489;DRC - ディテール
|
||||
HISTORY_MSG_489;DRC - CbDL
|
||||
HISTORY_MSG_490;DRC - 量
|
||||
HISTORY_MSG_491;ホワイトバランス
|
||||
HISTORY_MSG_492;RGBカーブ
|
||||
@ -807,7 +806,8 @@ HISTORY_MSG_RAWCACORR_AUTOIT;Rawの色収差補正 - 繰り返し
|
||||
HISTORY_MSG_RAWCACORR_COLORSHIFT;Rawの色収差補正 - 色ずれを回避
|
||||
HISTORY_MSG_RAW_BORDER;Rawの境界
|
||||
HISTORY_MSG_RESIZE_ALLOWUPSCALING;リサイズ - アップスケーリングを可能にする
|
||||
HISTORY_MSG_SHARPENING_CONTRAST;シャープ化 - コントラストのしきい値
|
||||
HISTORY_MSG_SHARPENING_BLUR;シャープニング - ぼかしの半径
|
||||
HISTORY_MSG_SHARPENING_CONTRAST;シャープニング - コントラストのしきい値
|
||||
HISTORY_MSG_SH_COLORSPACE;S/H - 色空間
|
||||
HISTORY_MSG_SOFTLIGHT_ENABLED;ソフトライト
|
||||
HISTORY_MSG_SOFTLIGHT_STRENGTH;ソフトライト - 強さ
|
||||
@ -940,13 +940,15 @@ MAIN_TAB_ADVANCED;高度な機能
|
||||
MAIN_TAB_ADVANCED_TOOLTIP;ショートカット: <b>Alt-w</b>
|
||||
MAIN_TAB_COLOR;カラー
|
||||
MAIN_TAB_COLOR_TOOLTIP;ショートカット: <b>Alt-c</b>
|
||||
MAIN_TAB_DETAIL;ディテール
|
||||
MAIN_TAB_DETAIL;CbDL
|
||||
MAIN_TAB_DETAIL_TOOLTIP;ショートカット: <b>Alt-d</b>
|
||||
MAIN_TAB_DEVELOP;一括編集
|
||||
MAIN_TAB_EXIF;Exif
|
||||
MAIN_TAB_EXPORT;高速書き出し
|
||||
MAIN_TAB_EXPOSURE;露光
|
||||
MAIN_TAB_EXPOSURE_TOOLTIP;ショートカット: <b>Alt-e</b>
|
||||
MAIN_TAB_FAVORITES;お気に入り
|
||||
MAIN_TAB_FAVORITES_TOOLTIP;ショートカット: <b>Alt-u</b>
|
||||
MAIN_TAB_FILTER;絞り込み
|
||||
MAIN_TAB_INSPECT;カメラ出しJPEG
|
||||
MAIN_TAB_IPTC;IPTC
|
||||
@ -969,7 +971,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;<b>フォーカス・マスク</b>表示\nショ
|
||||
MAIN_TOOLTIP_PREVIEWG;<b>グリーン チャンネル</b>表示\nショートカット: <b>g</b>
|
||||
MAIN_TOOLTIP_PREVIEWL;<b>輝度</b>表示\nショートカット: <b>v</b>\n\n0.299*R + 0.587*G + 0.114*B
|
||||
MAIN_TOOLTIP_PREVIEWR;<b>レッド チャンネル</b>表示\nショートカット: <b>r</b>
|
||||
MAIN_TOOLTIP_PREVIEWSHARPMASK;プレビューで見る<b>シャープ化機能のコントラストマスク</b>\nショートカット: <b>p</b>\n\nこの機能が使えるのはシャープ化機能が有効で、画像が100%以上に拡大されている場合だけ
|
||||
MAIN_TOOLTIP_PREVIEWSHARPMASK;プレビューで見る<b>シャープニング機能のコントラストマスク</b>\nショートカット: <b>p</b>\n\nこの機能が使えるのはシャープニング機能が有効で、画像が100%以上に拡大されている場合だけ
|
||||
MAIN_TOOLTIP_QINFO;画像の情報\nショートカット: <b>i</b>
|
||||
MAIN_TOOLTIP_SHOWHIDELP1;表示/非表示 左パネル\nショートカット: <b>l</b>
|
||||
MAIN_TOOLTIP_SHOWHIDERP1;表示/非表示 右パネル\nショートカット: <b>Alt-l</b>
|
||||
@ -1011,7 +1013,7 @@ PARTIALPASTE_DEHAZE;霞除去
|
||||
PARTIALPASTE_DETAILGROUP;ディテールの設定
|
||||
PARTIALPASTE_DIALOGLABEL;処理プロファイルの部分ペースト
|
||||
PARTIALPASTE_DIRPYRDENOISE;ノイズ低減
|
||||
PARTIALPASTE_DIRPYREQUALIZER;ディテール・レベルのコントラスト
|
||||
PARTIALPASTE_DIRPYREQUALIZER;詳細レベルによるコントラスト調整
|
||||
PARTIALPASTE_DISTORTION;歪曲補正
|
||||
PARTIALPASTE_EPD;トーンマッピング
|
||||
PARTIALPASTE_EQUALIZER;ウェーブレット
|
||||
@ -1042,13 +1044,12 @@ PARTIALPASTE_PREPROCESS_GREENEQUIL;グリーン 平衡化
|
||||
PARTIALPASTE_PREPROCESS_HOTPIXFILT;ホットピクセルフィルターを適用
|
||||
PARTIALPASTE_PREPROCESS_LINEDENOISE;ラインノイズ フィルタ
|
||||
PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF ラインフィルタ
|
||||
PARTIALPASTE_PRSHARPENING;リサイズ後のシャープ化
|
||||
PARTIALPASTE_PRSHARPENING;リサイズ後のシャープニング
|
||||
PARTIALPASTE_RAWCACORR_AUTO;自動色収差補正
|
||||
PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA 色ずれを回避
|
||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;色収差 レッドとブルー
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;黒レベル
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;raw ホワイトポイント リニア補正係数
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;raw ホワイトポイント ハイライトを保持したまま補正 (EV)
|
||||
PARTIALPASTE_RAWGROUP;raw 設定
|
||||
PARTIALPASTE_RAW_BORDER;Rawの境界
|
||||
PARTIALPASTE_RAW_DCBENHANCE;DCB 拡張処理適用
|
||||
@ -1064,7 +1065,7 @@ PARTIALPASTE_RGBCURVES;RGB カーブ
|
||||
PARTIALPASTE_ROTATION;回転
|
||||
PARTIALPASTE_SHADOWSHIGHLIGHTS;シャドウ/ハイライト
|
||||
PARTIALPASTE_SHARPENEDGE;エッジ
|
||||
PARTIALPASTE_SHARPENING;シャープ化 (USM/RL)
|
||||
PARTIALPASTE_SHARPENING;シャープニング (USM/RL)
|
||||
PARTIALPASTE_SHARPENMICRO;マイクロコントラスト
|
||||
PARTIALPASTE_SOFTLIGHT;ソフトな明るさ
|
||||
PARTIALPASTE_TM_FATTAL;ダイナミックレンジ圧縮
|
||||
@ -1411,7 +1412,7 @@ TP_CACORRECTION_RED;レッド
|
||||
TP_CBDL_AFT;白黒適用の後
|
||||
TP_CBDL_BEF;白黒適用の前
|
||||
TP_CBDL_METHOD;処理の順番
|
||||
TP_CBDL_METHOD_TOOLTIP;ディテールレベルのコントラストの処理を白黒処理の前に行うか、後に行うか選びます。前を選んだ場合は同機能の作業色空間はRGBとなり、後を選んだ場合はL*a*b*となります。
|
||||
TP_CBDL_METHOD_TOOLTIP;詳細レベルによるコントラスト調整の処理を白黒処理の前に行うか、後に行うか選びます。前を選んだ場合は同機能の作業色空間はRGBとなり、後を選んだ場合はL*a*b*となります。
|
||||
TP_CHMIXER_BLUE;ブルー
|
||||
TP_CHMIXER_GREEN;グリーン
|
||||
TP_CHMIXER_LABEL;チャンネルミキサー
|
||||
@ -1639,7 +1640,7 @@ TP_DIRPYREQUALIZER_ALGO_TOOLTIP;ファイン:撮影の肌色に近い部分に
|
||||
TP_DIRPYREQUALIZER_ARTIF;アーティファクトを軽減
|
||||
TP_DIRPYREQUALIZER_HUESKIN;肌色の色相
|
||||
TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;このカーブは上部ほど、アルゴリズムが効率良く働くことを示しています。\n下部ほど、色相の遷移が見られる部分です。\nコントロールポイントを左右に大きく動かす必要が生じたり、アーティファクトが生じたりする場合は、<b>ホワイトバランスが妥当ではない</b>時です。\n他の色への影響を避けるには、調整範囲を少し減らします
|
||||
TP_DIRPYREQUALIZER_LABEL;ディテールレベルのコントラスト
|
||||
TP_DIRPYREQUALIZER_LABEL;詳細レベルによるコントラスト調整
|
||||
TP_DIRPYREQUALIZER_LUMACOARSEST;粗い
|
||||
TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;コントラスト-
|
||||
TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;コントラスト+
|
||||
@ -1857,8 +1858,8 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;垂直方向
|
||||
TP_PREPROCESS_NO_FOUND;未検出
|
||||
TP_PREPROCESS_PDAFLINESFILTER;PDAFラインフィルタ
|
||||
TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Sonyのミラーレスカメラの一部では、PDAFイメージセンサが原因で、ゴーストが出るバックライトの画像でストライプノイズが発生することがあり、これを軽減します。
|
||||
TP_PRSHARPENING_LABEL;リサイズ後のシャープ化
|
||||
TP_PRSHARPENING_TOOLTIP;リサイズ後の画像をシャープ化します。但し、リサイズの方式がランチョスの場合に限ります。プレビュー画面でこの機能の効果を見ることは出来ません。使用法に関してはRawPediaを参照して下さい。
|
||||
TP_PRSHARPENING_LABEL;リサイズ後のシャープニング
|
||||
TP_PRSHARPENING_TOOLTIP;リサイズ後の画像をシャープニングします。但し、リサイズの方式がランチョスの場合に限ります。プレビュー画面でこの機能の効果を見ることは出来ません。使用法に関してはRawPediaを参照して下さい。
|
||||
TP_RAWCACORR_AUTO;自動補正
|
||||
TP_RAWCACORR_AUTOIT;繰り返し
|
||||
TP_RAWCACORR_AUTOIT_TOOLTIP;”自動補正”が有効になっている場合にこの設定が可能です。\n自動補正の作用は控えめなため、全ての色収差が常に補正されるとは限りません。\n残りの色収差を補正するためには、自動色収差補正の繰り返しを最大5回行います。\n繰り返すたびに、直前の繰り返しで残った色収差を軽減しますが、その分処理時間は増えます。
|
||||
@ -1875,7 +1876,6 @@ TP_RAWEXPOS_BLACK_BLUE;ブルー
|
||||
TP_RAWEXPOS_BLACK_GREEN;グリーン
|
||||
TP_RAWEXPOS_BLACK_RED;レッド
|
||||
TP_RAWEXPOS_LINEAR;ホワイトポイント補正
|
||||
TP_RAWEXPOS_PRESER;ハイライトを保持
|
||||
TP_RAWEXPOS_RGB;レッド、グリーン、ブルー
|
||||
TP_RAWEXPOS_TWOGREEN;2つのグリーンを連動
|
||||
TP_RAW_1PASSMEDIUM;1-パス (Markesteijn)
|
||||
@ -2067,14 +2067,15 @@ TP_SHARPENEDGE_LABEL;エッジ
|
||||
TP_SHARPENEDGE_PASSES;反復
|
||||
TP_SHARPENEDGE_THREE;輝度のみ
|
||||
TP_SHARPENING_AMOUNT;適用量
|
||||
TP_SHARPENING_BLUR;ぼかしの半径
|
||||
TP_SHARPENING_CONTRAST;コントラストのしきい値
|
||||
TP_SHARPENING_EDRADIUS;半径
|
||||
TP_SHARPENING_EDTOLERANCE;エッジ許容
|
||||
TP_SHARPENING_HALOCONTROL;ハロ抑制
|
||||
TP_SHARPENING_HCAMOUNT;適用量
|
||||
TP_SHARPENING_LABEL;シャープ化
|
||||
TP_SHARPENING_LABEL;シャープニング
|
||||
TP_SHARPENING_METHOD;方式
|
||||
TP_SHARPENING_ONLYEDGES;エッジのみシャープ化
|
||||
TP_SHARPENING_ONLYEDGES;エッジのみシャープニング
|
||||
TP_SHARPENING_RADIUS;半径
|
||||
TP_SHARPENING_RLD;RL デコンボリューション
|
||||
TP_SHARPENING_RLD_AMOUNT;適用量
|
||||
@ -2198,7 +2199,7 @@ TP_WAVELET_EDGREINF_TOOLTIP;最初のレベルに対する作用を強めたり
|
||||
TP_WAVELET_EDGTHRESH;ディテール
|
||||
TP_WAVELET_EDGTHRESH_TOOLTIP;低いレベルと他のレベルの区分を変更します。しきい値を高くするほど、低いレベルに作用の重点が置かれます。注意:マイナス値の設定は高いレベルに重点が置かれ、アーティファクトが発生することがあります。
|
||||
TP_WAVELET_EDRAD;半径
|
||||
TP_WAVELET_EDRAD_TOOLTIP;この機能の半径は、他のシャープ化機能の半径とは大きく異なります。複雑な関数を使って各レベルの値を比較します。そのため、半径がゼロでも何らかの効果があります
|
||||
TP_WAVELET_EDRAD_TOOLTIP;この機能の半径は、他のシャープニング機能の半径とは大きく異なります。複雑な関数を使って各レベルの値を比較します。そのため、半径がゼロでも何らかの効果があります
|
||||
TP_WAVELET_EDSL;しきい値スライダー
|
||||
TP_WAVELET_EDTYPE;ローカルコントラストの方式
|
||||
TP_WAVELET_EDVAL;強さ
|
||||
@ -2341,7 +2342,4 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
|
||||
! Untranslated keys follow; remove the ! prefix after an entry is translated.
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
|
||||
!MAIN_TAB_FAVORITES;Favorites
|
||||
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
|
||||
!TP_SHARPENING_BLUR;Blur radius
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
|
@ -627,7 +627,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
|
||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
!HISTORY_MSG_123;Dark-Frame - File
|
||||
!HISTORY_MSG_124;White point correction
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_126;Flat-Field - File
|
||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1204,7 +1203,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
|
||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1896,7 +1894,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1924,7 +1921,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -295,7 +295,6 @@ HISTORY_MSG_121;Auto CA
|
||||
HISTORY_MSG_122;Auto ref. feketekép (dark frame)
|
||||
HISTORY_MSG_123;Ref. feketekép állománya
|
||||
HISTORY_MSG_124;Lineáris exp. korrekció
|
||||
HISTORY_MSG_125;Exp. korrekció csúcsfények megőrzésével
|
||||
HISTORY_MSG_126;Flat Field állomány
|
||||
HISTORY_MSG_127;Flat Field automatikus kivál.
|
||||
HISTORY_MSG_128;Flat Field elmosás sugara
|
||||
@ -454,7 +453,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Soronkénti zajszűrés
|
||||
PARTIALPASTE_RAWCACORR_AUTO;CA autokorrekció
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Feketeszint
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Raw fehérszint lineáris korrekciós faktor (FÉ)
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Raw fehérszint csúcsfény-megőrző faktor (FÉ)
|
||||
PARTIALPASTE_RAWGROUP;Raw beállítások
|
||||
PARTIALPASTE_RAW_DCBENHANCE;DCB javítási lépés alkalmazása
|
||||
PARTIALPASTE_RAW_DCBITERATIONS;DCB iterációk száma
|
||||
@ -729,7 +727,6 @@ TP_RAWCACORR_CABLUE;Kék
|
||||
TP_RAWCACORR_CARED;Vörös
|
||||
TP_RAWEXPOS_BLACKS;Feketeszintek
|
||||
TP_RAWEXPOS_LINEAR;Fehérszint: lineáris korrelációs faktor
|
||||
TP_RAWEXPOS_PRESER;Fehérszint: csúcsfény-megőrző korrekció (FÉ)
|
||||
TP_RAWEXPOS_TWOGREEN;Zöldek együtt
|
||||
TP_RAW_DCBENHANCE;DCB helyesbítő lépés alkalmazása
|
||||
TP_RAW_DCBITERATIONS;DCB iterációk száma
|
||||
@ -2000,7 +1997,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
!TP_RAW_LMMSE_TOOLTIP;Adds gamma (step 1), median (steps 2-4) and refinement (steps 5-6) to reduce artifacts and improve the signal-to-noise ratio.
|
||||
|
@ -376,7 +376,6 @@ HISTORY_MSG_121;RAW CA-correctie - Auto
|
||||
HISTORY_MSG_122;Donkerframe - Autom. selectie
|
||||
HISTORY_MSG_123;Donkerframe - Bestand
|
||||
HISTORY_MSG_124;Witpunt correctie
|
||||
HISTORY_MSG_125;Hoge lichten behouden
|
||||
HISTORY_MSG_126;Vlakveld - Bestand
|
||||
HISTORY_MSG_127;Vlakveld - Autom. selectie
|
||||
HISTORY_MSG_128;Vlakveld - Verzachten straal
|
||||
@ -881,7 +880,6 @@ PARTIALPASTE_RAWCACORR_AUTO;Autom. C/A-correctie
|
||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA rood & blauw
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Zwartniveau
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Raw witpunt- lineaire corr. factor
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Raw witpunt- herstel hoge lichten (EV)
|
||||
PARTIALPASTE_RAWGROUP;Raw-instellingen
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Pas DCB-verbetering toe
|
||||
PARTIALPASTE_RAW_DCBITERATIONS;aantal DCB-herhalingen
|
||||
@ -1593,7 +1591,6 @@ TP_RAWEXPOS_BLACK_BLUE;Blauw
|
||||
TP_RAWEXPOS_BLACK_GREEN;Groen
|
||||
TP_RAWEXPOS_BLACK_RED;Rood
|
||||
TP_RAWEXPOS_LINEAR;Witpunt Correctie
|
||||
TP_RAWEXPOS_PRESER;Herstel hoge lichten
|
||||
TP_RAWEXPOS_RGB;Rood, Groen, Blauw
|
||||
TP_RAWEXPOS_TWOGREEN;Koppel Groen 1 en 2
|
||||
TP_RAW_1PASSMEDIUM;1 keer (Gemiddeld)
|
||||
@ -2331,7 +2328,8 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: <b>-</b>
|
||||
!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold
|
||||
!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image).
|
||||
!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
|
||||
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
|
||||
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
|
||||
|
@ -626,7 +626,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
!HISTORY_MSG_123;Dark-Frame - File
|
||||
!HISTORY_MSG_124;White point correction
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_126;Flat-Field - File
|
||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1203,7 +1202,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1895,7 +1893,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1923,7 +1920,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -336,7 +336,6 @@ HISTORY_MSG_121;Autokorekcja aberracji chromatycznej
|
||||
HISTORY_MSG_122;Czarna klatka - Auto-wybór
|
||||
HISTORY_MSG_123;Czarna klatka - Wybór
|
||||
HISTORY_MSG_124;Korekcja punktu bieli
|
||||
HISTORY_MSG_125;Zachowanie prześwietleń
|
||||
HISTORY_MSG_126;Puste pole - Wybór
|
||||
HISTORY_MSG_127;Puste pole - Auto-wybór
|
||||
HISTORY_MSG_128;Puste pole - Promień rozmycia
|
||||
@ -649,7 +648,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Redukcja szumów liniowych
|
||||
PARTIALPASTE_RAWCACORR_AUTO;Autokorekcja aberracji chr.
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Poziomy czerni
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Korekcja punktu bieli
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Zachowanie prześwietleń
|
||||
PARTIALPASTE_RAWGROUP;Ustawienia raw
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Zastosuj poprawę DCB
|
||||
PARTIALPASTE_RAW_DCBITERATIONS;Liczba powtórzeń DCB
|
||||
@ -1252,7 +1250,6 @@ TP_RAWEXPOS_BLACK_BLUE;Niebieski
|
||||
TP_RAWEXPOS_BLACK_GREEN;Zielony
|
||||
TP_RAWEXPOS_BLACK_RED;Czerwony
|
||||
TP_RAWEXPOS_LINEAR;Liniowy współczynnik korekcji
|
||||
TP_RAWEXPOS_PRESER;Zachowanie prześwietleń
|
||||
TP_RAWEXPOS_RGB;Czerwony, Zielony, Niebieski
|
||||
TP_RAWEXPOS_TWOGREEN;Połącz obie zielenie
|
||||
TP_RAW_DCBENHANCE;Zastosuj poprawę DCB
|
||||
@ -2032,7 +2029,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_MONO;Mono
|
||||
!TP_RAW_NONE;None (Shows sensor pattern)
|
||||
|
@ -336,7 +336,6 @@ HISTORY_MSG_121;Autokorekcja aberracji chromatycznej
|
||||
HISTORY_MSG_122;Czarna klatka - Auto-wybor
|
||||
HISTORY_MSG_123;Czarna klatka - Wybor
|
||||
HISTORY_MSG_124;Korekcja punktu bieli
|
||||
HISTORY_MSG_125;Zachowanie przeswietlen
|
||||
HISTORY_MSG_126;Puste pole - Wybor
|
||||
HISTORY_MSG_127;Puste pole - Auto-wybor
|
||||
HISTORY_MSG_128;Puste pole - Promien rozmycia
|
||||
@ -649,7 +648,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Redukcja szumow liniowych
|
||||
PARTIALPASTE_RAWCACORR_AUTO;Autokorekcja aberracji chr.
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Poziomy czerni
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Korekcja punktu bieli
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Zachowanie przeswietlen
|
||||
PARTIALPASTE_RAWGROUP;Ustawienia raw
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Zastosuj poprawe DCB
|
||||
PARTIALPASTE_RAW_DCBITERATIONS;Liczba powtorzen DCB
|
||||
@ -1252,7 +1250,6 @@ TP_RAWEXPOS_BLACK_BLUE;Niebieski
|
||||
TP_RAWEXPOS_BLACK_GREEN;Zielony
|
||||
TP_RAWEXPOS_BLACK_RED;Czerwony
|
||||
TP_RAWEXPOS_LINEAR;Liniowy wspolczynnik korekcji
|
||||
TP_RAWEXPOS_PRESER;Zachowanie przeswietlen
|
||||
TP_RAWEXPOS_RGB;Czerwony, Zielony, Niebieski
|
||||
TP_RAWEXPOS_TWOGREEN;Polacz obie zielenie
|
||||
TP_RAW_DCBENHANCE;Zastosuj poprawe DCB
|
||||
@ -2032,7 +2029,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: <b>-</b>
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_MONO;Mono
|
||||
!TP_RAW_NONE;None (Shows sensor pattern)
|
||||
|
@ -370,7 +370,6 @@ HISTORY_MSG_121;Raw CA Correção - Automática
|
||||
HISTORY_MSG_122;Quadro Escuro - Seleção Automática
|
||||
HISTORY_MSG_123;Quadro Escuro - Arquivo
|
||||
HISTORY_MSG_124;Correção de ponto branco
|
||||
HISTORY_MSG_125;Preservação da nitidez
|
||||
HISTORY_MSG_126;Flat-Field - Arquivo
|
||||
HISTORY_MSG_127;Flat-Field - Seleção automática
|
||||
HISTORY_MSG_128;Flat-Field - Raio de desfoque
|
||||
@ -982,7 +981,6 @@ PARTIALPASTE_RAWCACORR_AUTO;Auto correção CA
|
||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;vermelho & azul CA
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Níveis de preto
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Correção de ponto branco
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;preservação do realce
|
||||
PARTIALPASTE_RAWGROUP;Configurações Raw
|
||||
PARTIALPASTE_RAW_BORDER;Borda raw
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Aprimoramento DCB
|
||||
@ -1758,7 +1756,6 @@ TP_RAWEXPOS_BLACK_BLUE;Azul
|
||||
TP_RAWEXPOS_BLACK_GREEN;Verde
|
||||
TP_RAWEXPOS_BLACK_RED;Vermelho
|
||||
TP_RAWEXPOS_LINEAR;Correção de ponto branco
|
||||
TP_RAWEXPOS_PRESER;Preservação do realce
|
||||
TP_RAWEXPOS_RGB;Vermelho, Verde, Azul
|
||||
TP_RAWEXPOS_TWOGREEN;Ligações verdes
|
||||
TP_RAW_1PASSMEDIUM;1-Passar (Medio)
|
||||
@ -2313,6 +2310,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
|
||||
!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
|
||||
!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold
|
||||
!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image).
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RETINEX_CONTEDIT_MAP;Equalizer
|
||||
!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
|
||||
!TP_RETINEX_MAP;Method
|
||||
|
@ -368,7 +368,6 @@ HISTORY_MSG_121;(raw) Авто ХА
|
||||
HISTORY_MSG_122;Авто темновой кадр
|
||||
HISTORY_MSG_123;Файл темнового кадра
|
||||
HISTORY_MSG_124;Коррекция баланса белого
|
||||
HISTORY_MSG_125;Сохранение пересветов
|
||||
HISTORY_MSG_126;Файл плоского поля
|
||||
HISTORY_MSG_127;Автовыбор плоского поля
|
||||
HISTORY_MSG_128;Радиус размытия плоского поля
|
||||
@ -704,7 +703,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Фильтр полосообразного
|
||||
PARTIALPASTE_RAWCACORR_AUTO;Автоматическая коррекция ХА
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Уровень черного
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Коррекция точки белого
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Сохранение пересветов
|
||||
PARTIALPASTE_RAWGROUP;Настройки Raw
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Применить расширенный DCB
|
||||
PARTIALPASTE_RAW_DCBITERATIONS;Количество проходов DCB
|
||||
@ -1322,7 +1320,6 @@ TP_RAWEXPOS_BLACK_BLUE;Синий
|
||||
TP_RAWEXPOS_BLACK_GREEN;Зелёный
|
||||
TP_RAWEXPOS_BLACK_RED;Красный
|
||||
TP_RAWEXPOS_LINEAR;Коррекция точки белого
|
||||
TP_RAWEXPOS_PRESER;Сохранение пересветов
|
||||
TP_RAWEXPOS_RGB;Красный, Зелёный, Синий
|
||||
TP_RAWEXPOS_TWOGREEN;Два зеленых совместно
|
||||
TP_RAW_AHD;AHD
|
||||
@ -2054,7 +2051,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
|
||||
!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image).
|
||||
!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
|
||||
!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
|
||||
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
|
||||
|
@ -312,7 +312,6 @@ HISTORY_MSG_121;Сам исправи аберације
|
||||
HISTORY_MSG_122;Сам примени тамни кадар
|
||||
HISTORY_MSG_123;Датотека за тамни кадар
|
||||
HISTORY_MSG_124;Линеарна исправка експ.
|
||||
HISTORY_MSG_125;Поправка експ. уз очување светлог
|
||||
HISTORY_MSG_126;Датотека са равним пољем
|
||||
HISTORY_MSG_127;Сам изабери равно поље
|
||||
HISTORY_MSG_128;Полупречник равног поља
|
||||
@ -570,7 +569,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Линијски филтер шума
|
||||
PARTIALPASTE_RAWCACORR_AUTO;Ауто хроматске аберације
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Ниво црне
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Линеарни фактор исправке RAW беле тачке
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Raw тачка беле уз очување светлих делова
|
||||
PARTIALPASTE_RAWGROUP;Raw подешавања
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Примени корак ДЦБ побољшања
|
||||
PARTIALPASTE_RAW_DCBITERATIONS;Број ДЦБ понављања
|
||||
@ -1092,7 +1090,6 @@ TP_RAWCACORR_CABLUE;Плава
|
||||
TP_RAWCACORR_CARED;Црвена
|
||||
TP_RAWEXPOS_BLACKS;Ниво црне
|
||||
TP_RAWEXPOS_LINEAR;Линеарни фактор корекције
|
||||
TP_RAWEXPOS_PRESER;Очување светлих делова
|
||||
TP_RAWEXPOS_TWOGREEN;Обе зелене
|
||||
TP_RAW_DCBENHANCE;Примени ДЦБ побољшање
|
||||
TP_RAW_DCBITERATIONS;Број ДЦБ пролаза
|
||||
@ -2024,7 +2021,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_MONO;Mono
|
||||
!TP_RAW_NONE;None (Shows sensor pattern)
|
||||
|
@ -312,7 +312,6 @@ HISTORY_MSG_121;Sam ispravi aberacije
|
||||
HISTORY_MSG_122;Sam primeni tamni kadar
|
||||
HISTORY_MSG_123;Datoteka za tamni kadar
|
||||
HISTORY_MSG_124;Linearna ispravka eksp.
|
||||
HISTORY_MSG_125;Popravka eksp. uz očuvanje svetlog
|
||||
HISTORY_MSG_126;Datoteka sa ravnim poljem
|
||||
HISTORY_MSG_127;Sam izaberi ravno polje
|
||||
HISTORY_MSG_128;Poluprečnik ravnog polja
|
||||
@ -570,7 +569,6 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Linijski filter šuma
|
||||
PARTIALPASTE_RAWCACORR_AUTO;Auto hromatske aberacije
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Nivo crne
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Linearni faktor ispravke RAW bele tačke
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Raw tačka bele uz očuvanje svetlih delova
|
||||
PARTIALPASTE_RAWGROUP;Raw podešavanja
|
||||
PARTIALPASTE_RAW_DCBENHANCE;Primeni korak DCB poboljšanja
|
||||
PARTIALPASTE_RAW_DCBITERATIONS;Broj DCB ponavljanja
|
||||
@ -1092,7 +1090,6 @@ TP_RAWCACORR_CABLUE;Plava
|
||||
TP_RAWCACORR_CARED;Crvena
|
||||
TP_RAWEXPOS_BLACKS;Nivo crne
|
||||
TP_RAWEXPOS_LINEAR;Linearni faktor korekcije
|
||||
TP_RAWEXPOS_PRESER;Očuvanje svetlih delova
|
||||
TP_RAWEXPOS_TWOGREEN;Obe zelene
|
||||
TP_RAW_DCBENHANCE;Primeni DCB poboljšanje
|
||||
TP_RAW_DCBITERATIONS;Broj DCB prolaza
|
||||
@ -2024,7 +2021,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike <b>-</b>
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_MONO;Mono
|
||||
!TP_RAW_NONE;None (Shows sensor pattern)
|
||||
|
@ -688,7 +688,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
|
||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
!HISTORY_MSG_123;Dark-Frame - File
|
||||
!HISTORY_MSG_124;White point correction
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_126;Flat-Field - File
|
||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1256,7 +1255,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
|
||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1910,7 +1908,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1936,7 +1933,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -628,7 +628,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
|
||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
!HISTORY_MSG_123;Dark-Frame - File
|
||||
!HISTORY_MSG_124;White point correction
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_126;Flat-Field - File
|
||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1205,7 +1204,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
|
||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1896,7 +1894,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1924,7 +1921,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -346,7 +346,6 @@ HISTORY_MSG_121;Automat. CA-reducering
|
||||
HISTORY_MSG_122;Automat. svartbildsval
|
||||
HISTORY_MSG_123;Svartbildsfil
|
||||
HISTORY_MSG_124;Vitpunktskorrigering
|
||||
HISTORY_MSG_125;Högdagerbevarande
|
||||
HISTORY_MSG_126;Plattfältsfil
|
||||
HISTORY_MSG_127;Automatiskt val av plattfält
|
||||
HISTORY_MSG_128;Oskärperadie för plattfält
|
||||
@ -788,7 +787,6 @@ PARTIALPASTE_PRSHARPENING;Skärpning efter storleksändring
|
||||
PARTIALPASTE_RAWCACORR_AUTO;Reducera kromatiska abberationer automatiskt
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Svärta
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;Vitpunktskorrigering
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Korrigering av högdagrar
|
||||
PARTIALPASTE_RAWGROUP;Råbildsinställningar
|
||||
PARTIALPASTE_RAW_DCBENHANCE;DCB-förbättringssteg
|
||||
PARTIALPASTE_RAW_DCBITERATIONS;Antal DCB-iterationer
|
||||
@ -1458,7 +1456,6 @@ TP_RAWEXPOS_BLACK_BLUE;Blå
|
||||
TP_RAWEXPOS_BLACK_GREEN;Grön
|
||||
TP_RAWEXPOS_BLACK_RED;Röd
|
||||
TP_RAWEXPOS_LINEAR;Vitpunktskorrigering
|
||||
TP_RAWEXPOS_PRESER;Bevara högdagrar
|
||||
TP_RAWEXPOS_RGB;Röd, grön, blå
|
||||
TP_RAWEXPOS_TWOGREEN;Två gröna tillsammans
|
||||
TP_RAW_DCBENHANCE;DCB-förbättringssteg
|
||||
@ -2213,7 +2210,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_MONO;Mono
|
||||
!TP_RAW_NONE;None (Shows sensor pattern)
|
||||
|
@ -627,7 +627,6 @@ TP_WBALANCE_TEMPERATURE;Isı
|
||||
!HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
!HISTORY_MSG_123;Dark-Frame - File
|
||||
!HISTORY_MSG_124;White point correction
|
||||
!HISTORY_MSG_125;Highlight preservation
|
||||
!HISTORY_MSG_126;Flat-Field - File
|
||||
!HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
!HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1204,7 +1203,6 @@ TP_WBALANCE_TEMPERATURE;Isı
|
||||
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
!PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
!PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
!PARTIALPASTE_RAW_BORDER;Raw border
|
||||
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1895,7 +1893,6 @@ TP_WBALANCE_TEMPERATURE;Isı
|
||||
!TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
!TP_RAWEXPOS_BLACK_RED;Red
|
||||
!TP_RAWEXPOS_LINEAR;White-point correction
|
||||
!TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
!TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
!TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1923,7 +1920,8 @@ TP_WBALANCE_TEMPERATURE;Isı
|
||||
!TP_RAW_HPHD;HPHD
|
||||
!TP_RAW_IGV;IGV
|
||||
!TP_RAW_IMAGENUM;Sub-image
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_IMAGENUM_SN;SN mode
|
||||
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
!TP_RAW_LABEL;Demosaicing
|
||||
!TP_RAW_LMMSE;LMMSE
|
||||
!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -380,7 +380,6 @@ HISTORY_MSG_121;Raw CA Correction - Auto
|
||||
HISTORY_MSG_122;Dark-Frame - Auto-selection
|
||||
HISTORY_MSG_123;Dark-Frame - File
|
||||
HISTORY_MSG_124;White point correction
|
||||
HISTORY_MSG_125;Highlight preservation
|
||||
HISTORY_MSG_126;Flat-Field - File
|
||||
HISTORY_MSG_127;Flat-Field - Auto-selection
|
||||
HISTORY_MSG_128;Flat-Field - Blur radius
|
||||
@ -1018,7 +1017,6 @@ PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift
|
||||
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
|
||||
PARTIALPASTE_RAWEXPOS_BLACK;Black levels
|
||||
PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
|
||||
PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
|
||||
PARTIALPASTE_RAWGROUP;Raw Settings
|
||||
PARTIALPASTE_RAW_BORDER;Raw border
|
||||
PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
|
||||
@ -1844,7 +1842,6 @@ TP_RAWEXPOS_BLACK_BLUE;Blue
|
||||
TP_RAWEXPOS_BLACK_GREEN;Green
|
||||
TP_RAWEXPOS_BLACK_RED;Red
|
||||
TP_RAWEXPOS_LINEAR;White-point correction
|
||||
TP_RAWEXPOS_PRESER;Highlight preservation
|
||||
TP_RAWEXPOS_RGB;Red, Green, Blue
|
||||
TP_RAWEXPOS_TWOGREEN;Link greens
|
||||
TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
|
||||
@ -1874,7 +1871,8 @@ TP_RAW_HD_TOOLTIP;Lower values make hot/dead pixel detection more aggressive, bu
|
||||
TP_RAW_HPHD;HPHD
|
||||
TP_RAW_IGV;IGV
|
||||
TP_RAW_IMAGENUM;Sub-image
|
||||
TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
TP_RAW_IMAGENUM_SN;SN mode
|
||||
TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
|
||||
TP_RAW_LABEL;Demosaicing
|
||||
TP_RAW_LMMSE;LMMSE
|
||||
TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
|
||||
|
@ -2,7 +2,7 @@
|
||||
This file is part of RawTherapee.
|
||||
|
||||
Copyright (c) 2016-2018 TooWaBoo
|
||||
Version 3.00
|
||||
Version 3.02
|
||||
|
||||
RawTherapee is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -957,10 +957,9 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
|
||||
padding-right: 0.25em;
|
||||
}
|
||||
|
||||
#RightNotebook > stack > :nth-child(1) > * > box,
|
||||
#RightNotebook > stack > :nth-child(4) > * > box {
|
||||
padding: 0.5em;
|
||||
border: 0.083333333333333333em solid @bg-entry-border;
|
||||
#RightNotebook > stack > scrolledwindow > viewport {
|
||||
padding: 0 0.5em;
|
||||
border: 0.083333333333333333em solid @bg-dark-grey;
|
||||
}
|
||||
|
||||
#PrefNotebook > header {
|
||||
@ -1061,7 +1060,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#FileBrowserQueryToolbar {
|
||||
#FileBrowserQueryToolbar > viewport > box {
|
||||
margin: 0 0 0.416666666666666666em 0;
|
||||
min-height: 0;
|
||||
min-width: 0;
|
||||
@ -1646,7 +1645,7 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(2) {
|
||||
min-width: 1.666666666666666666em;/*x*/
|
||||
margin: 0;
|
||||
border-radius: 0 0.2em 0.2em 0;
|
||||
box-shadow: inset 0 0.1em rgba(0, 0, 0, 0.1), inset -0.1em -0.1em rgba(230, 230, 230, 0.09);
|
||||
box-shadow: inset 0 0.1em rgba(0, 0, 0, 0.1), inset -0.1em -0.1em rgba(230, 230, 230, 0.07);
|
||||
border: 0.083333333333333333em solid @bg-entry-border;
|
||||
background-color: @bg-scale-entry;
|
||||
padding: 0;
|
||||
@ -1866,19 +1865,17 @@ spinbutton {
|
||||
min-height: 1.666666666666666666em;/*x*/
|
||||
min-width: 0;
|
||||
border-radius: 0.2em;
|
||||
box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, 0.1), inset -0.1em -0.1em rgba(230, 230, 230, 0.09);
|
||||
box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, 0.1), inset -0.1em -0.1em rgba(230, 230, 230, 0.07);
|
||||
border: 0.083333333333333333em solid @bg-entry-border;
|
||||
background-color: @bg-scale-entry;
|
||||
}
|
||||
#FileBrowserQueryToolbar entry,
|
||||
#FileBrowserIconToolbar entry {
|
||||
min-height: 1.666666666666666666em;/*x*/
|
||||
min-width: 0;
|
||||
margin: 0;
|
||||
border-right: none;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, 0.1), inset 0 -0.1em rgba(230, 230, 230, 0.09);
|
||||
box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, 0.1), inset 0 -0.1em rgba(230, 230, 230, 0.07);
|
||||
}
|
||||
|
||||
#FileBrowserIconToolbar box > entry {
|
||||
|
@ -151,7 +151,9 @@ float* RawImageSource::CA_correct_RT(
|
||||
blueFactor = new array2D<float>((W + 1 - 2 * cb) / 2, (H + 1 - 2 * cb) / 2);
|
||||
oldraw = new array2D<float>((W + 1- 2 * cb) / 2, H- 2 * cb);
|
||||
// copy raw values before ca correction
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
for (int i = cb; i < H - cb; ++i) {
|
||||
for (int j = cb + (FC(i, 0) & 1); j < W - cb; j += 2) {
|
||||
(*oldraw)[i - cb][(j - cb) / 2] = rawData[i][j];
|
||||
@ -220,7 +222,9 @@ float* RawImageSource::CA_correct_RT(
|
||||
|
||||
constexpr float eps = 1e-5f, eps2 = 1e-10f; //tolerance to avoid dividing by zero
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
int progresscounter = 0;
|
||||
|
||||
@ -274,7 +278,9 @@ float* RawImageSource::CA_correct_RT(
|
||||
float blocksqavethr[2][2] = {};
|
||||
float blockdenomthr[2][2] = {};
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for collapse(2) schedule(dynamic) nowait
|
||||
#endif
|
||||
for (int top = -border ; top < height; top += ts - border2) {
|
||||
for (int left = -border; left < width - (W & 1); left += ts - border2) {
|
||||
memset(bufferThr, 0, buffersize);
|
||||
@ -647,7 +653,9 @@ float* RawImageSource::CA_correct_RT(
|
||||
progresscounter++;
|
||||
|
||||
if (progresscounter % 8 == 0) {
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical (cadetectpass1)
|
||||
#endif
|
||||
{
|
||||
progress += 4.0 * SQR(ts - border2) / (iterations * height * width);
|
||||
progress = std::min(progress, 1.0);
|
||||
@ -658,7 +666,9 @@ float* RawImageSource::CA_correct_RT(
|
||||
}
|
||||
}
|
||||
//end of diagnostic pass
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical (cadetectpass2)
|
||||
#endif
|
||||
{
|
||||
for (int dir = 0; dir < 2; dir++) {
|
||||
for (int c = 0; c < 2; c++) {
|
||||
@ -668,9 +678,13 @@ float* RawImageSource::CA_correct_RT(
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef _OPENMP
|
||||
#pragma omp barrier
|
||||
#endif
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp single
|
||||
#endif
|
||||
{
|
||||
for (int dir = 0; dir < 2; dir++)
|
||||
for (int c = 0; c < 2; c++) {
|
||||
@ -806,7 +820,9 @@ float* RawImageSource::CA_correct_RT(
|
||||
float* grbdiff = (float (*)) (data + 2 * sizeof(float) * ts * ts + 3 * 64); // there is no overlap in buffer usage => share
|
||||
//green interpolated to optical sample points for R/B
|
||||
float* gshift = (float (*)) (data + 2 * sizeof(float) * ts * ts + sizeof(float) * ts * tsh + 4 * 64); // there is no overlap in buffer usage => share
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic) collapse(2)
|
||||
#endif
|
||||
for (int top = -border; top < height; top += ts - border2) {
|
||||
for (int left = -border; left < width - (W & 1); left += ts - border2) {
|
||||
memset(bufferThr, 0, buffersizePassTwo);
|
||||
@ -1197,7 +1213,9 @@ float* RawImageSource::CA_correct_RT(
|
||||
progresscounter++;
|
||||
|
||||
if (progresscounter % 8 == 0)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical (cacorrect)
|
||||
#endif
|
||||
{
|
||||
progress += 4.0 * SQR(ts - border2) / (iterations * height * width);
|
||||
progress = std::min(progress, 1.0);
|
||||
@ -1208,7 +1226,9 @@ float* RawImageSource::CA_correct_RT(
|
||||
}
|
||||
|
||||
// copy temporary image matrix back to image matrix
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
|
||||
for (int row = cb; row < height - cb; row++) {
|
||||
int col = cb + (FC(row, 0) & 1);
|
||||
@ -1232,14 +1252,18 @@ float* RawImageSource::CA_correct_RT(
|
||||
// of red and blue channel and apply a gaussian blur to them.
|
||||
// Then we apply the resulting factors per pixel on the result of raw ca correction
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
#ifdef __SSE2__
|
||||
const vfloat onev = F2V(1.f);
|
||||
const vfloat twov = F2V(2.f);
|
||||
const vfloat zd5v = F2V(0.5f);
|
||||
#endif
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
for (int i = 0; i < H - 2 * cb; ++i) {
|
||||
const int firstCol = FC(i, 0) & 1;
|
||||
const int colour = FC(i, firstCol);
|
||||
@ -1260,7 +1284,9 @@ float* RawImageSource::CA_correct_RT(
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp single
|
||||
#endif
|
||||
{
|
||||
if (H % 2) {
|
||||
// odd height => factors are not set in last row => use values of preceding row
|
||||
@ -1287,7 +1313,9 @@ float* RawImageSource::CA_correct_RT(
|
||||
gaussianBlur(*blueFactor, *blueFactor, (W + 1 - 2 * cb) / 2, (H + 1 - 2 * cb) / 2, 30.0);
|
||||
|
||||
// apply correction factors to avoid (reduce) colour shift
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
for (int i = 0; i < H - 2 * cb; ++i) {
|
||||
const int firstCol = FC(i, 0) & 1;
|
||||
const int colour = FC(i, firstCol);
|
||||
|
@ -58,13 +58,13 @@ set(RTENGINESOURCEFILES
|
||||
dual_demosaic_RT.cc
|
||||
dynamicprofile.cc
|
||||
eahd_demosaic.cc
|
||||
expo_before_b.cc
|
||||
fast_demo.cc
|
||||
ffmanager.cc
|
||||
flatcurves.cc
|
||||
gauss.cc
|
||||
green_equil_RT.cc
|
||||
hilite_recon.cc
|
||||
hphd_demosaic_RT.cc
|
||||
iccjpeg.cc
|
||||
iccstore.cc
|
||||
iimage.cc
|
||||
|
@ -324,7 +324,9 @@ void MultiDiagonalSymmetricMatrix::VectorProduct(float* RESTRICT Product, float*
|
||||
}
|
||||
|
||||
#endif
|
||||
#ifdef _OPENMP
|
||||
#pragma omp single
|
||||
#endif
|
||||
{
|
||||
#ifdef __SSE2__
|
||||
|
||||
@ -892,12 +894,12 @@ void EdgePreservingDecomposition::CompressDynamicRange(float *Source, float Scal
|
||||
#endif
|
||||
|
||||
for(int ii = 0; ii < n - 3; ii += 4) {
|
||||
_mm_storeu_ps( &Source[ii], xlogf(LVFU(Source[ii]) + epsv));
|
||||
_mm_storeu_ps( &Source[ii], xlogf(vmaxf(LVFU(Source[ii]), ZEROV) + epsv));
|
||||
}
|
||||
}
|
||||
|
||||
for(int ii = n - (n % 4); ii < n; ii++) {
|
||||
Source[ii] = xlogf(Source[ii] + eps);
|
||||
Source[ii] = xlogf(std::max(Source[ii], 0.f) + eps);
|
||||
}
|
||||
|
||||
#else
|
||||
@ -906,7 +908,7 @@ void EdgePreservingDecomposition::CompressDynamicRange(float *Source, float Scal
|
||||
#endif
|
||||
|
||||
for(int ii = 0; ii < n; ii++) {
|
||||
Source[ii] = xlogf(Source[ii] + eps);
|
||||
Source[ii] = xlogf(std::max(Source[ii], 0.f) + eps);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1838,11 +1838,15 @@ BENCHFUN
|
||||
|
||||
for (int iteration = 1; iteration <= dnparams.passes; ++iteration) {
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
if (methmed < 2)
|
||||
{
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
|
||||
for (int i = 1; i < hei - 1; ++i) {
|
||||
if (methmed == 0) {
|
||||
@ -1857,7 +1861,9 @@ BENCHFUN
|
||||
}
|
||||
} else
|
||||
{
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
|
||||
for (int i = 2; i < hei - 2; ++i) {
|
||||
if (methmed == 3) {
|
||||
@ -1901,7 +1907,9 @@ BENCHFUN
|
||||
|
||||
if (methmed < 2)
|
||||
{
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
|
||||
for (int i = 1; i < hei - 1; ++i) {
|
||||
if (methmed == 0) {
|
||||
@ -1916,7 +1924,9 @@ BENCHFUN
|
||||
}
|
||||
} else
|
||||
{
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
|
||||
for (int i = 2; i < hei - 2; ++i) {
|
||||
if (methmed == 3) {
|
||||
@ -1961,7 +1971,9 @@ BENCHFUN
|
||||
|
||||
if (methmed < 2)
|
||||
{
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
|
||||
for (int i = 1; i < hei - 1; ++i) {
|
||||
if (methmed == 0) {
|
||||
@ -1976,7 +1988,9 @@ BENCHFUN
|
||||
}
|
||||
} else
|
||||
{
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
|
||||
for (int i = 2; i < hei - 2; ++i) {
|
||||
if (methmed == 3) {
|
||||
|
@ -152,10 +152,14 @@ template<class T, class A> void bilateral05 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(318, 1)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER3(1, 7, 7, 55)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(1)
|
||||
}
|
||||
|
||||
@ -164,10 +168,14 @@ template<class T, class A> void bilateral06 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(768, 1)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER3(1, 4, 4, 16)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(1)
|
||||
}
|
||||
|
||||
@ -176,10 +184,14 @@ template<class T, class A> void bilateral07 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(366, 2)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER5(0, 0, 1, 0, 8, 21, 1, 21, 59)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(2)
|
||||
}
|
||||
|
||||
@ -188,10 +200,14 @@ template<class T, class A> void bilateral08 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(753, 2)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER5(0, 0, 1, 0, 5, 10, 1, 10, 23)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(2)
|
||||
}
|
||||
|
||||
@ -200,10 +216,14 @@ template<class T, class A> void bilateral09 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(595, 2)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER5(0, 1, 2, 1, 6, 12, 2, 12, 22)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(2)
|
||||
}
|
||||
|
||||
@ -212,10 +232,14 @@ template<class T, class A> void bilateral10 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(910, 2)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER5(0, 1, 2, 1, 4, 7, 2, 7, 12)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(2)
|
||||
}
|
||||
|
||||
@ -224,10 +248,14 @@ template<class T, class A> void bilateral11 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(209, 3)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER7(0, 0, 1, 1, 0, 2, 5, 8, 1, 5, 18, 27, 1, 8, 27, 41)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(3)
|
||||
}
|
||||
|
||||
@ -236,10 +264,14 @@ template<class T, class A> void bilateral12 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(322, 3)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER7(0, 0, 1, 1, 0, 1, 4, 6, 1, 4, 11, 16, 1, 6, 16, 23)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(3)
|
||||
}
|
||||
|
||||
@ -248,10 +280,14 @@ template<class T, class A> void bilateral13 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(336, 3)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER7(0, 0, 1, 1, 0, 2, 4, 6, 1, 4, 11, 14, 1, 6, 14, 19)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(3)
|
||||
}
|
||||
|
||||
@ -260,10 +296,14 @@ template<class T, class A> void bilateral14 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(195, 3)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER7(0, 1, 2, 3, 1, 4, 8, 10, 2, 8, 17, 21, 3, 10, 21, 28)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(3)
|
||||
}
|
||||
|
||||
@ -272,10 +312,14 @@ template<class T, class A> void bilateral15 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(132, 4)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER9(0, 0, 0, 1, 1, 0, 1, 2, 4, 5, 0, 2, 6, 12, 14, 1, 4, 12, 22, 28, 1, 5, 14, 28, 35)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(4)
|
||||
}
|
||||
|
||||
@ -284,10 +328,14 @@ template<class T, class A> void bilateral16 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(180, 4)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER9(0, 0, 0, 1, 1, 0, 1, 2, 3, 4, 0, 2, 5, 9, 10, 1, 3, 9, 15, 19, 1, 4, 10, 19, 23)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(4)
|
||||
}
|
||||
|
||||
@ -296,10 +344,14 @@ template<class T, class A> void bilateral17 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(195, 4)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER9(0, 0, 1, 1, 1, 0, 1, 2, 3, 4, 1, 2, 5, 8, 9, 1, 3, 8, 13, 16, 1, 4, 9, 16, 19)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(4)
|
||||
}
|
||||
|
||||
@ -308,10 +360,14 @@ template<class T, class A> void bilateral18 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(151, 4)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER9(0, 0, 1, 2, 2, 0, 1, 3, 5, 5, 1, 3, 6, 10, 12, 2, 5, 10, 16, 19, 2, 5, 12, 19, 22)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(4)
|
||||
}
|
||||
|
||||
@ -320,10 +376,14 @@ template<class T, class A> void bilateral19 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(151, 4)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER9(0, 0, 1, 2, 2, 0, 1, 3, 4, 5, 1, 3, 5, 8, 9, 2, 4, 8, 12, 14, 2, 5, 9, 14, 16)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(4)
|
||||
}
|
||||
|
||||
@ -332,10 +392,14 @@ template<class T, class A> void bilateral20 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(116, 5)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER11(0, 0, 0, 1, 1, 1, 0, 0, 1, 2, 3, 3, 0, 1, 2, 4, 7, 7, 1, 2, 4, 8, 12, 14, 1, 3, 7, 12, 18, 20, 1, 3, 7, 14, 20, 23)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(5)
|
||||
}
|
||||
|
||||
@ -344,10 +408,14 @@ template<class T, class A> void bilateral21 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(127, 5)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER11(0, 0, 0, 1, 1, 1, 0, 0, 1, 2, 3, 3, 0, 1, 2, 4, 6, 7, 1, 2, 4, 8, 11, 12, 1, 3, 6, 11, 15, 17, 1, 3, 7, 12, 17, 19)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(5)
|
||||
}
|
||||
|
||||
@ -356,10 +424,14 @@ template<class T, class A> void bilateral22 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(109, 5)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER11(0, 0, 0, 1, 1, 2, 0, 1, 2, 3, 3, 4, 1, 2, 3, 5, 7, 8, 1, 3, 5, 9, 12, 13, 1, 3, 7, 12, 16, 18, 2, 4, 8, 13, 18, 20)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(5)
|
||||
}
|
||||
|
||||
@ -368,10 +440,14 @@ template<class T, class A> void bilateral23 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(132, 5)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER11(0, 0, 1, 1, 1, 1, 0, 1, 1, 2, 3, 3, 1, 1, 3, 5, 6, 7, 1, 2, 5, 7, 10, 11, 1, 3, 6, 10, 13, 14, 1, 3, 7, 11, 14, 16)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(5)
|
||||
}
|
||||
|
||||
@ -380,10 +456,14 @@ template<class T, class A> void bilateral24 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(156, 5)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER11(0, 0, 1, 1, 1, 1, 0, 1, 1, 2, 3, 3, 1, 1, 3, 4, 5, 6, 1, 2, 4, 6, 8, 9, 1, 3, 5, 8, 10, 11, 1, 3, 6, 9, 11, 12)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(5)
|
||||
}
|
||||
|
||||
@ -392,10 +472,14 @@ template<class T, class A> void bilateral25 (T** src, T** dst, T** buffer, int W
|
||||
{
|
||||
|
||||
BL_BEGIN(173, 5)
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_OPER11(0, 0, 1, 1, 1, 1, 0, 1, 1, 2, 3, 3, 1, 1, 2, 4, 5, 5, 1, 2, 4, 5, 7, 7, 1, 3, 5, 7, 9, 9, 1, 3, 5, 7, 9, 10)
|
||||
BL_FREE
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
BL_END(5)
|
||||
}
|
||||
|
||||
|
@ -2244,9 +2244,8 @@ Camera constants:
|
||||
"make_model": "Sigma SD14",
|
||||
"dcraw_matrix": [ 16411,-4764,-2383,8110,2603,-645,3135,3878,1984 ], // experimental inverted icc wp12 - build with BL=15
|
||||
//"dcraw_matrix": [ 13804,-4156,-1896,6917,1909,-431,2768,2989,1741 ], // experimental inverted icc wp10 - build with BL=15
|
||||
"ranges": { "black": 0, "white": 16383 }, // peripheral black stripes give BL around 37
|
||||
"raw_crop": [ 0, 0, -0, -0 ]
|
||||
//"raw_crop": [ 18, 12, 2652, 1768 ]
|
||||
"ranges": { "black": 15, "white": 7000 },
|
||||
"raw_crop": [ 18, 12, 2652, 1768 ]
|
||||
},
|
||||
|
||||
{ // Quality C, correction for frame width
|
||||
|
@ -64,7 +64,9 @@ void RawImageSource::CLASS cfa_linedn(float noise, bool horizontal, bool vertica
|
||||
float noisevarm4 = 4.0f * noisevar;
|
||||
volatile double progress = 0.0;
|
||||
float* RawDataTmp = (float*)malloc( width * height * sizeof(float));
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
|
||||
// allocate memory and assure the arrays don't have same 64 byte boundary to avoid L1 conflict misses
|
||||
@ -76,7 +78,9 @@ void RawImageSource::CLASS cfa_linedn(float noise, bool horizontal, bool vertica
|
||||
float linehvar[4], linevvar[4], noisefactor[4][8][2], coeffsq;
|
||||
float dctblock[4][8][8];
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
|
||||
for(int i = 0; i < height; i++)
|
||||
for(int j = 0; j < width; j++) {
|
||||
@ -84,7 +88,9 @@ void RawImageSource::CLASS cfa_linedn(float noise, bool horizontal, bool vertica
|
||||
}
|
||||
|
||||
// Main algorithm: Tile loop
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic) collapse(2)
|
||||
#endif
|
||||
|
||||
for (int top = 0; top < height - 16; top += TS - 32)
|
||||
for (int left = 0; left < width - 16; left += TS - 32) {
|
||||
@ -251,7 +257,9 @@ void RawImageSource::CLASS cfa_linedn(float noise, bool horizontal, bool vertica
|
||||
free(cfain);
|
||||
|
||||
// copy temporary buffer back to image matrix
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic,16)
|
||||
#endif
|
||||
|
||||
for(int i = 0; i < height; i++) {
|
||||
float f = rowblender(i);
|
||||
|
@ -1695,7 +1695,9 @@ void CLASS phase_one_correct()
|
||||
curve[i] = LIM(num+i,0,65535);
|
||||
}
|
||||
apply: /* apply to whole image */
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for schedule(dynamic,16)
|
||||
#endif
|
||||
for (int row=0; row < raw_height; row++) {
|
||||
for (int col = (tag & 1)*ph1.split_col; col < raw_width; col++) {
|
||||
RAW(row,col) = curve[RAW(row,col)];
|
||||
@ -1770,7 +1772,9 @@ void CLASS phase_one_correct()
|
||||
cx[17] = cf[17] = ((unsigned) ref[15] * 65535) / lc[qr][qc][15];
|
||||
cx[18] = cf[18] = 65535;
|
||||
cubic_spline(cx, cf, 19);
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for schedule(dynamic,16)
|
||||
#endif
|
||||
for (int row = (qr ? ph1.split_row : 0); row < (qr ? raw_height : ph1.split_row); row++)
|
||||
for (int col = (qc ? ph1.split_col : 0); col < (qc ? raw_width : ph1.split_col); col++)
|
||||
RAW(row,col) = curve[RAW(row,col)];
|
||||
@ -1787,7 +1791,9 @@ void CLASS phase_one_correct()
|
||||
qmult[1][0] = 1.0 + getreal(11);
|
||||
get4(); get4(); get4();
|
||||
qmult[1][1] = 1.0 + getreal(11);
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for schedule(dynamic,16)
|
||||
#endif
|
||||
for (int row=0; row < raw_height; row++) {
|
||||
for (int col=0; col < raw_width; col++) {
|
||||
int i = qmult[row >= ph1.split_row][col >= ph1.split_col] * RAW(row,col);
|
||||
@ -2329,7 +2335,9 @@ void CLASS hasselblad_correct()
|
||||
}
|
||||
|
||||
// apply flatfield
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
for (int row = 0; row < raw_height; row++) {
|
||||
int ffs, cur_ffr, i, c;
|
||||
if (row < row_offset) {
|
||||
@ -2664,28 +2672,76 @@ void CLASS canon_rmf_load_raw()
|
||||
maximum = curve[0x3ff];
|
||||
}
|
||||
|
||||
unsigned CLASS pana_bits_t::operator() (int nbits)
|
||||
unsigned CLASS pana_bits_t::operator() (int nbits, unsigned *bytes)
|
||||
{
|
||||
/*RT static uchar buf[0x4000]; */
|
||||
/*RT static int vbits;*/
|
||||
int byte;
|
||||
|
||||
if (!nbits) return vbits=0;
|
||||
if (!nbits && !bytes) return vbits=0;
|
||||
if (!vbits) {
|
||||
fread (buf+load_flags, 1, 0x4000-load_flags, ifp);
|
||||
fread (buf, 1, load_flags, ifp);
|
||||
}
|
||||
if (encoding == 5) {
|
||||
for (byte = 0; byte < 16; byte++)
|
||||
{
|
||||
bytes[byte] = buf[vbits++];
|
||||
vbits &= 0x3FFF;
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
vbits = (vbits - nbits) & 0x1ffff;
|
||||
byte = vbits >> 3 ^ 0x3ff0;
|
||||
return (buf[byte] | buf[byte+1] << 8) >> (vbits & 7) & ~(-1 << nbits);
|
||||
}
|
||||
}
|
||||
|
||||
void CLASS panasonic_load_raw()
|
||||
{
|
||||
pana_bits_t pana_bits(ifp,load_flags);
|
||||
pana_bits_t pana_bits(ifp,load_flags, RT_pana_info.encoding);
|
||||
int row, col, i, j, sh=0, pred[2], nonz[2];
|
||||
unsigned bytes[16] = {};
|
||||
ushort *raw_block_data;
|
||||
|
||||
pana_bits(0);
|
||||
pana_bits(0, 0);
|
||||
int enc_blck_size = RT_pana_info.bpp == 12 ? 10 : 9;
|
||||
if (RT_pana_info.encoding == 5) {
|
||||
for (row = 0; row < raw_height; row++)
|
||||
{
|
||||
raw_block_data = raw_image + row * raw_width;
|
||||
|
||||
for (col = 0; col < raw_width; col += enc_blck_size) {
|
||||
pana_bits(0, bytes);
|
||||
|
||||
if (RT_pana_info.bpp == 12) {
|
||||
raw_block_data[col] = ((bytes[1] & 0xF) << 8) + bytes[0];
|
||||
raw_block_data[col + 1] = 16 * bytes[2] + (bytes[1] >> 4);
|
||||
raw_block_data[col + 2] = ((bytes[4] & 0xF) << 8) + bytes[3];
|
||||
raw_block_data[col + 3] = 16 * bytes[5] + (bytes[4] >> 4);
|
||||
raw_block_data[col + 4] = ((bytes[7] & 0xF) << 8) + bytes[6];
|
||||
raw_block_data[col + 5] = 16 * bytes[8] + (bytes[7] >> 4);
|
||||
raw_block_data[col + 6] = ((bytes[10] & 0xF) << 8) + bytes[9];
|
||||
raw_block_data[col + 7] = 16 * bytes[11] + (bytes[10] >> 4);
|
||||
raw_block_data[col + 8] = ((bytes[13] & 0xF) << 8) + bytes[12];
|
||||
raw_block_data[col + 9] = 16 * bytes[14] + (bytes[13] >> 4);
|
||||
}
|
||||
else if (RT_pana_info.bpp == 14) {
|
||||
raw_block_data[col] = bytes[0] + ((bytes[1] & 0x3F) << 8);
|
||||
raw_block_data[col + 1] = (bytes[1] >> 6) + 4 * (bytes[2]) +
|
||||
((bytes[3] & 0xF) << 10);
|
||||
raw_block_data[col + 2] = (bytes[3] >> 4) + 16 * (bytes[4]) +
|
||||
((bytes[5] & 3) << 12);
|
||||
raw_block_data[col + 3] = ((bytes[5] & 0xFC) >> 2) + (bytes[6] << 6);
|
||||
raw_block_data[col + 4] = bytes[7] + ((bytes[8] & 0x3F) << 8);
|
||||
raw_block_data[col + 5] = (bytes[8] >> 6) + 4 * bytes[9] + ((bytes[10] & 0xF) << 10);
|
||||
raw_block_data[col + 6] = (bytes[10] >> 4) + 16 * bytes[11] + ((bytes[12] & 3) << 12);
|
||||
raw_block_data[col + 7] = ((bytes[12] & 0xFC) >> 2) + (bytes[13] << 6);
|
||||
raw_block_data[col + 8] = bytes[14] + ((bytes[15] & 0x3F) << 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (row=0; row < height; row++)
|
||||
for (col=0; col < raw_width; col++) {
|
||||
if ((i = col % 14) == 0)
|
||||
@ -2702,6 +2758,7 @@ void CLASS panasonic_load_raw()
|
||||
if ((RAW(row,col) = pred[col & 1]) > 4098 && col < width) derror();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CLASS olympus_load_raw()
|
||||
{
|
||||
@ -4470,7 +4527,9 @@ void CLASS crop_masked_pixels()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
for (int row=0; row < height; row++)
|
||||
for (int col=0; col < width; col++)
|
||||
BAYER2(row,col) = RAW(row+top_margin,col+left_margin);
|
||||
@ -6071,6 +6130,7 @@ int CLASS parse_tiff_ifd (int base)
|
||||
unsigned *buf, sony_offset=0, sony_length=0, sony_key=0;
|
||||
struct jhead jh;
|
||||
/*RT*/ IMFILE *sfp;
|
||||
/*RT*/ int pana_raw = 0;
|
||||
|
||||
if (tiff_nifds >= sizeof tiff_ifd / sizeof tiff_ifd[0])
|
||||
return 1;
|
||||
@ -6086,10 +6146,16 @@ int CLASS parse_tiff_ifd (int base)
|
||||
while (entries--) {
|
||||
tiff_get (base, &tag, &type, &len, &save);
|
||||
switch (tag) {
|
||||
case 1: if (len == 4) pana_raw = get4(); break;
|
||||
case 5: width = get2(); break;
|
||||
case 6: height = get2(); break;
|
||||
case 7: width += get2(); break;
|
||||
case 9: if ((i = get2())) filters = i; break;
|
||||
case 10:
|
||||
if (pana_raw && len == 1 && type == 3) {
|
||||
RT_pana_info.bpp = get2();
|
||||
}
|
||||
break;
|
||||
case 17: case 18:
|
||||
if (type == 3 && len == 1)
|
||||
cam_mul[(tag-17)*2] = get2() / 256.0;
|
||||
@ -6109,6 +6175,12 @@ int CLASS parse_tiff_ifd (int base)
|
||||
fseek (ifp, 12, SEEK_CUR);
|
||||
FORC3 cam_mul[c] = get2();
|
||||
break;
|
||||
case 45:
|
||||
if (pana_raw && len == 1 && type == 3)
|
||||
{
|
||||
RT_pana_info.encoding = get2();
|
||||
}
|
||||
break;
|
||||
case 46:
|
||||
if (type != 7 || fgetc(ifp) != 0xff || fgetc(ifp) != 0xd8) break;
|
||||
thumb_offset = ftell(ifp) - 2;
|
||||
@ -6794,13 +6866,15 @@ void CLASS apply_tiff()
|
||||
} else if ((raw_width * 2 * tiff_bps / 16 + 8) * raw_height == tiff_ifd[raw].bytes) {
|
||||
// 14 bit uncompressed from Nikon Z7, still wrong
|
||||
// each line has 8 padding byte.
|
||||
row_padding = 8;
|
||||
load_raw = &CLASS packed_load_raw;
|
||||
//row_padding = 8;
|
||||
//load_raw = &CLASS packed_load_raw;
|
||||
load_raw = &CLASS nikon_14bit_load_raw;
|
||||
} else if ((raw_width * 2 * tiff_bps / 16 + 12) * raw_height == tiff_ifd[raw].bytes) {
|
||||
// 14 bit uncompressed from Nikon Z6, still wrong
|
||||
// each line has 12 padding byte.
|
||||
row_padding = 12;
|
||||
load_raw = &CLASS packed_load_raw;
|
||||
// row_padding = 12;
|
||||
// load_raw = &CLASS packed_load_raw;
|
||||
load_raw = &CLASS nikon_14bit_load_raw;
|
||||
} else
|
||||
load_raw = &CLASS nikon_load_raw; break;
|
||||
case 65535:
|
||||
@ -10602,6 +10676,48 @@ struct tiff_hdr {
|
||||
|
||||
#include "fujicompressed.cc"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
/* Taken from LibRaw
|
||||
|
||||
LibRaw is free software; you can redistribute it and/or modify
|
||||
it under the terms of the one of two licenses as you choose:
|
||||
1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
|
||||
(See file LICENSE.LGPL provided in LibRaw distribution archive for details).
|
||||
2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
|
||||
(See file LICENSE.CDDL provided in LibRaw distribution archive for details).
|
||||
*/
|
||||
|
||||
namespace {
|
||||
|
||||
inline void unpack7bytesto4x16_nikon(unsigned char *src, unsigned short *dest)
|
||||
{
|
||||
dest[3] = (src[6] << 6) | (src[5] >> 2);
|
||||
dest[2] = ((src[5] & 0x3) << 12) | (src[4] << 4) | (src[3] >> 4);
|
||||
dest[1] = (src[3] & 0xf) << 10 | (src[2] << 2) | (src[1] >> 6);
|
||||
dest[0] = ((src[1] & 0x3f) << 8) | src[0];
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
void CLASS nikon_14bit_load_raw()
|
||||
{
|
||||
const unsigned linelen = (unsigned)(ceilf((float)(raw_width * 7 / 4) / 16.0)) * 16; // 14512; // S.raw_width * 7 / 4;
|
||||
const unsigned pitch = raw_width; //S.raw_pitch ? S.raw_pitch / 2 : S.raw_width;
|
||||
unsigned char *buf = (unsigned char *)malloc(linelen);
|
||||
merror(buf, "nikon_14bit_load_raw()");
|
||||
for (int row = 0; row < raw_height; row++)
|
||||
{
|
||||
unsigned bytesread = fread(buf, 1, linelen, ifp);
|
||||
unsigned short *dest = &raw_image[pitch * row];
|
||||
//swab32arr((unsigned *)buf, bytesread / 4);
|
||||
for (int sp = 0, dp = 0; dp < pitch - 3 && sp < linelen - 6 && sp < bytesread - 6; sp += 7, dp += 4)
|
||||
unpack7bytesto4x16_nikon(buf + sp, dest + dp);
|
||||
}
|
||||
free(buf);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/* RT: Delete from here */
|
||||
/*RT*/#undef SQR
|
||||
/*RT*/#undef MAX
|
||||
|
@ -159,6 +159,13 @@ protected:
|
||||
std::string RT_software;
|
||||
double RT_baseline_exposure;
|
||||
|
||||
struct PanasonicRW2Info {
|
||||
ushort bpp;
|
||||
ushort encoding;
|
||||
PanasonicRW2Info(): bpp(0), encoding(0) {}
|
||||
};
|
||||
PanasonicRW2Info RT_pana_info;
|
||||
|
||||
float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4];
|
||||
|
||||
int histogram[4][0x2000];
|
||||
@ -395,13 +402,15 @@ void nokia_load_raw();
|
||||
|
||||
class pana_bits_t{
|
||||
public:
|
||||
pana_bits_t(IMFILE *i, unsigned &u): ifp(i), load_flags(u), vbits(0) {}
|
||||
unsigned operator()(int nbits);
|
||||
pana_bits_t(IMFILE *i, unsigned &u, unsigned enc):
|
||||
ifp(i), load_flags(u), vbits(0), encoding(enc) {}
|
||||
unsigned operator()(int nbits, unsigned *bytes=nullptr);
|
||||
private:
|
||||
IMFILE *ifp;
|
||||
unsigned &load_flags;
|
||||
uchar buf[0x4000];
|
||||
int vbits;
|
||||
unsigned encoding;
|
||||
};
|
||||
|
||||
void canon_rmf_load_raw();
|
||||
@ -517,6 +526,8 @@ void shiftXtransMatrix( const int offsy, const int offsx) {
|
||||
}
|
||||
}
|
||||
|
||||
void nikon_14bit_load_raw(); // ported from LibRaw
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -20,16 +20,9 @@
|
||||
#include <cassert>
|
||||
|
||||
#include "rawimagesource.h"
|
||||
#include "rawimagesource_i.h"
|
||||
#include "jaggedarray.h"
|
||||
#include "rawimage.h"
|
||||
#include "mytime.h"
|
||||
#include "iccmatrices.h"
|
||||
#include "iccstore.h"
|
||||
#include "image8.h"
|
||||
#include "curves.h"
|
||||
#include "dfmanager.h"
|
||||
#include "slicer.h"
|
||||
#include "rt_math.h"
|
||||
#include "color.h"
|
||||
#include "../rtgui/multilangmgr.h"
|
||||
@ -37,7 +30,7 @@
|
||||
#include "sleef.c"
|
||||
#include "opthelper.h"
|
||||
#include "median.h"
|
||||
//#define BENCHMARK
|
||||
#define BENCHMARK
|
||||
#include "StopWatch.h"
|
||||
#ifdef _OPENMP
|
||||
#include <omp.h>
|
||||
@ -60,271 +53,6 @@ extern const Settings* settings;
|
||||
#define x00625(a) xdivf(a, 4)
|
||||
#define x0125(a) xdivf(a, 3)
|
||||
|
||||
void RawImageSource::hphd_vertical (float** hpmap, int col_from, int col_to)
|
||||
{
|
||||
float* temp = new float[max(W, H)];
|
||||
float* avg = new float[max(W, H)];
|
||||
float* dev = new float[max(W, H)];
|
||||
|
||||
memset (temp, 0, max(W, H)*sizeof(float));
|
||||
memset (avg, 0, max(W, H)*sizeof(float));
|
||||
memset (dev, 0, max(W, H)*sizeof(float));
|
||||
|
||||
for (int k = col_from; k < col_to; k++) {
|
||||
for (int i = 5; i < H - 5; i++) {
|
||||
temp[i] = (rawData[i - 5][k] - 8 * rawData[i - 4][k] + 27 * rawData[i - 3][k] - 48 * rawData[i - 2][k] + 42 * rawData[i - 1][k] -
|
||||
(rawData[i + 5][k] - 8 * rawData[i + 4][k] + 27 * rawData[i + 3][k] - 48 * rawData[i + 2][k] + 42 * rawData[i + 1][k])) / 100.0;
|
||||
temp[i] = ABS(temp[i]);
|
||||
}
|
||||
|
||||
for (int j = 4; j < H - 4; j++) {
|
||||
float avgL = (temp[j - 4] + temp[j - 3] + temp[j - 2] + temp[j - 1] + temp[j] + temp[j + 1] + temp[j + 2] + temp[j + 3] + temp[j + 4]) / 9.0;
|
||||
avg[j] = avgL;
|
||||
float devL = ((temp[j - 4] - avgL) * (temp[j - 4] - avgL) + (temp[j - 3] - avgL) * (temp[j - 3] - avgL) + (temp[j - 2] - avgL) * (temp[j - 2] - avgL) + (temp[j - 1] - avgL) * (temp[j - 1] - avgL) + (temp[j] - avgL) * (temp[j] - avgL) + (temp[j + 1] - avgL) * (temp[j + 1] - avgL) + (temp[j + 2] - avgL) * (temp[j + 2] - avgL) + (temp[j + 3] - avgL) * (temp[j + 3] - avgL) + (temp[j + 4] - avgL) * (temp[j + 4] - avgL)) / 9.0;
|
||||
|
||||
if (devL < 0.001) {
|
||||
devL = 0.001;
|
||||
}
|
||||
|
||||
dev[j] = devL;
|
||||
}
|
||||
|
||||
for (int j = 5; j < H - 5; j++) {
|
||||
float avgL = avg[j - 1];
|
||||
float avgR = avg[j + 1];
|
||||
float devL = dev[j - 1];
|
||||
float devR = dev[j + 1];
|
||||
hpmap[j][k] = avgL + (avgR - avgL) * devL / (devL + devR);
|
||||
}
|
||||
}
|
||||
|
||||
delete [] temp;
|
||||
delete [] avg;
|
||||
delete [] dev;
|
||||
}
|
||||
|
||||
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
void RawImageSource::hphd_horizontal (float** hpmap, int row_from, int row_to)
|
||||
{
|
||||
float* temp = new float[max(W, H)];
|
||||
float* avg = new float[max(W, H)];
|
||||
float* dev = new float[max(W, H)];
|
||||
|
||||
memset (temp, 0, max(W, H)*sizeof(float));
|
||||
memset (avg, 0, max(W, H)*sizeof(float));
|
||||
memset (dev, 0, max(W, H)*sizeof(float));
|
||||
|
||||
for (int i = row_from; i < row_to; i++) {
|
||||
for (int j = 5; j < W - 5; j++) {
|
||||
temp[j] = (rawData[i][j - 5] - 8 * rawData[i][j - 4] + 27 * rawData[i][j - 3] - 48 * rawData[i][j - 2] + 42 * rawData[i][j - 1] -
|
||||
(rawData[i][j + 5] - 8 * rawData[i][j + 4] + 27 * rawData[i][j + 3] - 48 * rawData[i][j + 2] + 42 * rawData[i][j + 1])) / 100;
|
||||
temp[j] = ABS(temp[j]);
|
||||
}
|
||||
|
||||
for (int j = 4; j < W - 4; j++) {
|
||||
float avgL = (temp[j - 4] + temp[j - 3] + temp[j - 2] + temp[j - 1] + temp[j] + temp[j + 1] + temp[j + 2] + temp[j + 3] + temp[j + 4]) / 9.0;
|
||||
avg[j] = avgL;
|
||||
float devL = ((temp[j - 4] - avgL) * (temp[j - 4] - avgL) + (temp[j - 3] - avgL) * (temp[j - 3] - avgL) + (temp[j - 2] - avgL) * (temp[j - 2] - avgL) + (temp[j - 1] - avgL) * (temp[j - 1] - avgL) + (temp[j] - avgL) * (temp[j] - avgL) + (temp[j + 1] - avgL) * (temp[j + 1] - avgL) + (temp[j + 2] - avgL) * (temp[j + 2] - avgL) + (temp[j + 3] - avgL) * (temp[j + 3] - avgL) + (temp[j + 4] - avgL) * (temp[j + 4] - avgL)) / 9.0;
|
||||
|
||||
if (devL < 0.001) {
|
||||
devL = 0.001;
|
||||
}
|
||||
|
||||
dev[j] = devL;
|
||||
}
|
||||
|
||||
for (int j = 5; j < W - 5; j++) {
|
||||
float avgL = avg[j - 1];
|
||||
float avgR = avg[j + 1];
|
||||
float devL = dev[j - 1];
|
||||
float devR = dev[j + 1];
|
||||
float hpv = avgL + (avgR - avgL) * devL / (devL + devR);
|
||||
|
||||
if (hpmap[i][j] < 0.8 * hpv) {
|
||||
hpmap[i][j] = 2;
|
||||
} else if (hpv < 0.8 * hpmap[i][j]) {
|
||||
hpmap[i][j] = 1;
|
||||
} else {
|
||||
hpmap[i][j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delete [] temp;
|
||||
delete [] avg;
|
||||
delete [] dev;
|
||||
}
|
||||
|
||||
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
void RawImageSource::hphd_green (float** hpmap)
|
||||
{
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int i = 3; i < H - 3; i++) {
|
||||
for (int j = 3; j < W - 3; j++) {
|
||||
if (ri->ISGREEN(i, j)) {
|
||||
green[i][j] = rawData[i][j];
|
||||
} else {
|
||||
if (hpmap[i][j] == 1) {
|
||||
int g2 = rawData[i][j + 1] + ((rawData[i][j] - rawData[i][j + 2]) / 2);
|
||||
int g4 = rawData[i][j - 1] + ((rawData[i][j] - rawData[i][j - 2]) / 2);
|
||||
|
||||
int dx = rawData[i][j + 1] - rawData[i][j - 1];
|
||||
int d1 = rawData[i][j + 3] - rawData[i][j + 1];
|
||||
int d2 = rawData[i][j + 2] - rawData[i][j];
|
||||
int d3 = (rawData[i - 1][j + 2] - rawData[i - 1][j]) / 2;
|
||||
int d4 = (rawData[i + 1][j + 2] - rawData[i + 1][j]) / 2;
|
||||
|
||||
double e2 = 1.0 / (1.0 + ABS(dx) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
||||
|
||||
d1 = rawData[i][j - 3] - rawData[i][j - 1];
|
||||
d2 = rawData[i][j - 2] - rawData[i][j];
|
||||
d3 = (rawData[i - 1][j - 2] - rawData[i - 1][j]) / 2;
|
||||
d4 = (rawData[i + 1][j - 2] - rawData[i + 1][j]) / 2;
|
||||
|
||||
double e4 = 1.0 / (1.0 + ABS(dx) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
||||
|
||||
green[i][j] = (e2 * g2 + e4 * g4) / (e2 + e4);
|
||||
} else if (hpmap[i][j] == 2) {
|
||||
int g1 = rawData[i - 1][j] + ((rawData[i][j] - rawData[i - 2][j]) / 2);
|
||||
int g3 = rawData[i + 1][j] + ((rawData[i][j] - rawData[i + 2][j]) / 2);
|
||||
|
||||
int dy = rawData[i + 1][j] - rawData[i - 1][j];
|
||||
int d1 = rawData[i - 1][j] - rawData[i - 3][j];
|
||||
int d2 = rawData[i][j] - rawData[i - 2][j];
|
||||
int d3 = (rawData[i][j - 1] - rawData[i - 2][j - 1]) / 2;
|
||||
int d4 = (rawData[i][j + 1] - rawData[i - 2][j + 1]) / 2;
|
||||
|
||||
double e1 = 1.0 / (1.0 + ABS(dy) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
||||
|
||||
d1 = rawData[i + 1][j] - rawData[i + 3][j];
|
||||
d2 = rawData[i][j] - rawData[i + 2][j];
|
||||
d3 = (rawData[i][j - 1] - rawData[i + 2][j - 1]) / 2;
|
||||
d4 = (rawData[i][j + 1] - rawData[i + 2][j + 1]) / 2;
|
||||
|
||||
double e3 = 1.0 / (1.0 + ABS(dy) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
||||
|
||||
green[i][j] = (e1 * g1 + e3 * g3) / (e1 + e3);
|
||||
} else {
|
||||
int g1 = rawData[i - 1][j] + ((rawData[i][j] - rawData[i - 2][j]) / 2);
|
||||
int g2 = rawData[i][j + 1] + ((rawData[i][j] - rawData[i][j + 2]) / 2);
|
||||
int g3 = rawData[i + 1][j] + ((rawData[i][j] - rawData[i + 2][j]) / 2);
|
||||
int g4 = rawData[i][j - 1] + ((rawData[i][j] - rawData[i][j - 2]) / 2);
|
||||
|
||||
int dx = rawData[i][j + 1] - rawData[i][j - 1];
|
||||
int dy = rawData[i + 1][j] - rawData[i - 1][j];
|
||||
|
||||
int d1 = rawData[i - 1][j] - rawData[i - 3][j];
|
||||
int d2 = rawData[i][j] - rawData[i - 2][j];
|
||||
int d3 = (rawData[i][j - 1] - rawData[i - 2][j - 1]) / 2;
|
||||
int d4 = (rawData[i][j + 1] - rawData[i - 2][j + 1]) / 2;
|
||||
|
||||
double e1 = 1.0 / (1.0 + ABS(dy) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
||||
|
||||
d1 = rawData[i][j + 3] - rawData[i][j + 1];
|
||||
d2 = rawData[i][j + 2] - rawData[i][j];
|
||||
d3 = (rawData[i - 1][j + 2] - rawData[i - 1][j]) / 2;
|
||||
d4 = (rawData[i + 1][j + 2] - rawData[i + 1][j]) / 2;
|
||||
|
||||
double e2 = 1.0 / (1.0 + ABS(dx) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
||||
|
||||
d1 = rawData[i + 1][j] - rawData[i + 3][j];
|
||||
d2 = rawData[i][j] - rawData[i + 2][j];
|
||||
d3 = (rawData[i][j - 1] - rawData[i + 2][j - 1]) / 2;
|
||||
d4 = (rawData[i][j + 1] - rawData[i + 2][j + 1]) / 2;
|
||||
|
||||
double e3 = 1.0 / (1.0 + ABS(dy) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
||||
|
||||
d1 = rawData[i][j - 3] - rawData[i][j - 1];
|
||||
d2 = rawData[i][j - 2] - rawData[i][j];
|
||||
d3 = (rawData[i - 1][j - 2] - rawData[i - 1][j]) / 2;
|
||||
d4 = (rawData[i + 1][j - 2] - rawData[i + 1][j]) / 2;
|
||||
|
||||
double e4 = 1.0 / (1.0 + ABS(dx) + ABS(d1) + ABS(d2) + ABS(d3) + ABS(d4));
|
||||
|
||||
green[i][j] = (e1 * g1 + e2 * g2 + e3 * g3 + e4 * g4) / (e1 + e2 + e3 + e4);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
void RawImageSource::hphd_demosaic ()
|
||||
{
|
||||
if (plistener) {
|
||||
plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::HPHD)));
|
||||
plistener->setProgress (0.0);
|
||||
}
|
||||
|
||||
JaggedArray<float> hpmap (W, H, true);
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
{
|
||||
int tid = omp_get_thread_num();
|
||||
int nthreads = omp_get_num_threads();
|
||||
int blk = W / nthreads;
|
||||
|
||||
if (tid < nthreads - 1) {
|
||||
hphd_vertical (hpmap, tid * blk, (tid + 1)*blk);
|
||||
} else {
|
||||
hphd_vertical (hpmap, tid * blk, W);
|
||||
}
|
||||
}
|
||||
#else
|
||||
hphd_vertical (hpmap, 0, W);
|
||||
#endif
|
||||
|
||||
if (plistener) {
|
||||
plistener->setProgress (0.33);
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
{
|
||||
int tid = omp_get_thread_num();
|
||||
int nthreads = omp_get_num_threads();
|
||||
int blk = H / nthreads;
|
||||
|
||||
if (tid < nthreads - 1) {
|
||||
hphd_horizontal (hpmap, tid * blk, (tid + 1)*blk);
|
||||
} else {
|
||||
hphd_horizontal (hpmap, tid * blk, H);
|
||||
}
|
||||
}
|
||||
#else
|
||||
hphd_horizontal (hpmap, 0, H);
|
||||
#endif
|
||||
|
||||
hphd_green (hpmap);
|
||||
|
||||
if (plistener) {
|
||||
plistener->setProgress (0.66);
|
||||
}
|
||||
|
||||
for (int i = 0; i < H; i++) {
|
||||
if (i == 0) {
|
||||
interpolate_row_rb_mul_pp (rawData, red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
|
||||
} else if (i == H - 1) {
|
||||
interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], nullptr, i, 1.0, 1.0, 1.0, 0, W, 1);
|
||||
} else {
|
||||
interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
|
||||
}
|
||||
}
|
||||
|
||||
border_interpolate2(W, H, 4, rawData, red, green, blue);
|
||||
|
||||
if (plistener) {
|
||||
plistener->setProgress (1.0);
|
||||
}
|
||||
}
|
||||
|
||||
#undef fc
|
||||
#define fc(row,col) \
|
||||
(ri->get_filters() >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3)
|
||||
@ -660,7 +388,7 @@ void RawImageSource::jdl_interpolate_omp() // from "Lassus"
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel default(none) shared(image,width,height,u,w,v,y,x,z,dif,chr) private(row,col,f,g,indx,c,d,i)
|
||||
#pragma omp parallel shared(image,width,height,u,w,v,y,x,z,dif,chr) private(row,col,f,g,indx,c,d,i)
|
||||
#endif
|
||||
{
|
||||
#ifdef _OPENMP
|
||||
@ -1431,7 +1159,7 @@ void RawImageSource::igv_interpolate(int winw, int winh)
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel default(none) shared(rgb,vdif,hdif,chr)
|
||||
#pragma omp parallel shared(rgb,vdif,hdif,chr)
|
||||
#endif
|
||||
{
|
||||
__m128 ngv, egv, wgv, sgv, nvv, evv, wvv, svv, nwgv, negv, swgv, segv, nwvv, nevv, swvv, sevv, tempv, temp1v, temp2v, temp3v, temp4v, temp5v, temp6v, temp7v, temp8v;
|
||||
@ -1800,7 +1528,7 @@ void RawImageSource::igv_interpolate(int winw, int winh)
|
||||
const int v1 = 1 * width, v2 = 2 * width, v3 = 3 * width, v4 = 4 * width, v5 = 5 * width, v6 = 6 * width;
|
||||
float* rgb[3];
|
||||
float* chr[2];
|
||||
float (*rgbarray), *vdif, *hdif, (*chrarray);
|
||||
float *rgbarray, *vdif, *hdif, *chrarray;
|
||||
|
||||
rgbarray = (float (*)) calloc(width * height * 3, sizeof( float));
|
||||
rgb[0] = rgbarray;
|
||||
@ -1820,7 +1548,7 @@ void RawImageSource::igv_interpolate(int winw, int winh)
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel default(none) shared(rgb,vdif,hdif,chr)
|
||||
#pragma omp parallel shared(rgb,vdif,hdif,chr)
|
||||
#endif
|
||||
{
|
||||
|
||||
@ -2061,7 +1789,9 @@ void RawImageSource::nodemosaic(bool bw)
|
||||
red(W, H);
|
||||
green(W, H);
|
||||
blue(W, H);
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < H; i++) {
|
||||
for (int j = 0; j < W; j++) {
|
||||
|
@ -219,10 +219,14 @@ void dfInfo::updateBadPixelList( RawImage *df )
|
||||
if( df->getSensorType() == ST_BAYER || df->getSensorType() == ST_FUJI_XTRANS ) {
|
||||
std::vector<badPix> badPixelsTemp;
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
std::vector<badPix> badPixelsThread;
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for nowait
|
||||
#endif
|
||||
|
||||
for( int row = 2; row < df->get_height() - 2; row++)
|
||||
for( int col = 2; col < df->get_width() - 2; col++) {
|
||||
@ -235,7 +239,9 @@ void dfInfo::updateBadPixelList( RawImage *df )
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical
|
||||
#endif
|
||||
badPixelsTemp.insert(badPixelsTemp.end(), badPixelsThread.begin(), badPixelsThread.end());
|
||||
}
|
||||
badPixels.insert(badPixels.end(), badPixelsTemp.begin(), badPixelsTemp.end());
|
||||
|
@ -143,7 +143,9 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt
|
||||
}
|
||||
|
||||
#ifdef __SSE2__
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for(int i = 0; i < srcheight; i++) {
|
||||
int j;
|
||||
@ -158,7 +160,9 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt
|
||||
}
|
||||
|
||||
#else
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for(int i = 0; i < srcheight; i++) {
|
||||
for(int j = 0; j < srcwidth; j++) {
|
||||
@ -174,10 +178,14 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt
|
||||
}
|
||||
|
||||
#ifdef __SSE2__
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
__m128 div = _mm_set1_ps(327.68f);
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
|
||||
for(int i = 0; i < srcheight; i++) {
|
||||
int j;
|
||||
@ -192,7 +200,9 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt
|
||||
}
|
||||
}
|
||||
#else
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for(int i = 0; i < srcheight; i++) {
|
||||
for(int j = 0; j < srcwidth; j++) {
|
||||
@ -228,7 +238,9 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt
|
||||
delete [] tmpHue;
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < srcheight; i++)
|
||||
for (int j = 0; j < srcwidth; j++) {
|
||||
|
@ -91,9 +91,13 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const RAWParams &raw, int wi
|
||||
{ 0.019334, 0.119193, 0.950227 }
|
||||
};
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
for(int i = 0; i < winh; ++i) {
|
||||
Color::RGB2L(red[i], green[i], blue[i], L[i], xyz_rgb, winw);
|
||||
}
|
||||
@ -106,19 +110,25 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const RAWParams &raw, int wi
|
||||
contrast = contrastf * 100.f;
|
||||
|
||||
// the following is split into 3 loops intentionally to avoid cache conflicts on CPUs with only 4-way cache
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
for(int i = 0; i < winh; ++i) {
|
||||
for(int j = 0; j < winw; ++j) {
|
||||
red[i][j] = intp(blend[i][j], red[i][j], redTmp[i][j]);
|
||||
}
|
||||
}
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
for(int i = 0; i < winh; ++i) {
|
||||
for(int j = 0; j < winw; ++j) {
|
||||
green[i][j] = intp(blend[i][j], green[i][j], greenTmp[i][j]);
|
||||
}
|
||||
}
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
for(int i = 0; i < winh; ++i) {
|
||||
for(int j = 0; j < winw; ++j) {
|
||||
blue[i][j] = intp(blend[i][j], blue[i][j], blueTmp[i][j]);
|
||||
|
@ -431,7 +431,9 @@ void RawImageSource::eahd_demosaic ()
|
||||
}
|
||||
|
||||
// Interpolate R and B
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
for (int i = 0; i < H; i++) {
|
||||
if (i == 0) {
|
||||
interpolate_row_rb_mul_pp (rawData, red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
|
||||
|
@ -1,171 +0,0 @@
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// //exposure correction before interpolation
|
||||
//
|
||||
// code dated: December 27, 2010
|
||||
//
|
||||
// Expo_before.cc 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.
|
||||
//
|
||||
// This program 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 <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
// Jacques Desmis <jdesmis@gmail.com>
|
||||
// use fast-demo(provisional) from Emil Martinec
|
||||
// inspired from work Guillermo Luijk and Manuel LLorens(Perfectraw)
|
||||
// Ingo Weyrich (2014-07-07)
|
||||
// optimized the highlight protection case
|
||||
// needs 2*width*height*sizeof(float) byte less memory than before
|
||||
// needs about 60% less processing time than before
|
||||
//
|
||||
// This function uses parameters:
|
||||
// exposure (linear): 2^(-8..0..8): currently 0.5 +3
|
||||
// preserve (log) : 0..8 : currently 0.1 1
|
||||
|
||||
#include "rtengine.h"
|
||||
#include "rawimagesource.h"
|
||||
#include "mytime.h"
|
||||
#include "rt_math.h"
|
||||
|
||||
namespace rtengine
|
||||
{
|
||||
|
||||
extern const Settings* settings;
|
||||
|
||||
void RawImageSource::processRawWhitepoint(float expos, float preser, array2D<float> &rawData)
|
||||
{
|
||||
MyTime t1e, t2e;
|
||||
|
||||
if (settings->verbose) {
|
||||
t1e.set();
|
||||
}
|
||||
|
||||
int width = W, height = H;
|
||||
// exposure correction inspired from G.Luijk
|
||||
|
||||
for (int c = 0; c < 4; c++) {
|
||||
chmax[c] *= expos;
|
||||
}
|
||||
|
||||
if (fabs(preser) < 0.001f) {
|
||||
// No highlight protection - simple mutiplication
|
||||
|
||||
if (ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS)
|
||||
#pragma omp parallel for
|
||||
for (int row = 0; row < height; row++)
|
||||
for (int col = 0; col < width; col++) {
|
||||
rawData[row][col] *= expos;
|
||||
}
|
||||
else
|
||||
#pragma omp parallel for
|
||||
for (int row = 0; row < height; row++)
|
||||
for (int col = 0; col < width; col++) {
|
||||
rawData[row][col * 3] *= expos;
|
||||
rawData[row][col * 3 + 1] *= expos;
|
||||
rawData[row][col * 3 + 2] *= expos;
|
||||
}
|
||||
} else {
|
||||
if (ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS) {
|
||||
// Demosaic to allow calculation of luminosity.
|
||||
if(ri->getSensorType() == ST_BAYER) {
|
||||
fast_demosaic();
|
||||
} else {
|
||||
fast_xtrans_interpolate(rawData, red, green, blue);
|
||||
}
|
||||
}
|
||||
|
||||
// Find maximum to adjust LUTs. New float engines clips only at the very end
|
||||
float maxValFloat = 0.f;
|
||||
#pragma omp parallel
|
||||
{
|
||||
float maxValFloatThr = 0.f;
|
||||
|
||||
if (ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS)
|
||||
#pragma omp for schedule(dynamic,16) nowait
|
||||
for(int row = 0; row < height; row++)
|
||||
for (int col = 0; col < width; col++) {
|
||||
if (rawData[row][col] > maxValFloatThr) {
|
||||
maxValFloatThr = rawData[row][col];
|
||||
}
|
||||
}
|
||||
else
|
||||
#pragma omp for schedule(dynamic,16) nowait
|
||||
for(int row = 0; row < height; row++)
|
||||
for (int col = 0; col < width; col++) {
|
||||
for (int c = 0; c < 3; c++)
|
||||
if (rawData[row][col * 3 + c] > maxValFloatThr) {
|
||||
maxValFloatThr = rawData[row][col * 3 + c];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma omp critical
|
||||
{
|
||||
if(maxValFloatThr > maxValFloat) {
|
||||
maxValFloat = maxValFloatThr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Exposure correction with highlight preservation
|
||||
int maxVal = maxValFloat;
|
||||
LUTf lut(maxVal + 1);
|
||||
float K;
|
||||
|
||||
if(expos > 1) {
|
||||
// Positive exposure
|
||||
K = (float) maxVal / expos * exp(-preser * log(2.0));
|
||||
|
||||
for (int j = max(1, (int)K); j <= maxVal; j++) {
|
||||
lut[(int)j] = (((float)maxVal - K * expos) / ((float)maxVal - K) * (j - maxVal) + (float) maxVal) / j;
|
||||
}
|
||||
} else {
|
||||
// Negative exposure
|
||||
float EV = log(expos) / log(2.0); // Convert exp. linear to EV
|
||||
K = (float)maxVal * exp(-preser * log(2.0));
|
||||
|
||||
for (int j = 0; j <= maxVal; j++) {
|
||||
lut[(int)j] = exp(EV * ((float)maxVal - j) / ((float)maxVal - K) * log(2.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS)
|
||||
#pragma omp parallel for schedule(dynamic,16)
|
||||
for(int row = 0; row < height; row++)
|
||||
for(int col = 0; col < width; col++) {
|
||||
float lumi = 0.299f * red[row][col] + 0.587f * green[row][col] + 0.114f * blue[row][col];
|
||||
rawData[row][col] *= lumi < K ? expos : lut[lumi];
|
||||
}
|
||||
else
|
||||
#pragma omp parallel for
|
||||
for(int row = 0; row < height; row++)
|
||||
for(int col = 0; col < width; col++) {
|
||||
float lumi = 0.299f * rawData[row][col * 3] + 0.587f * rawData[row][col * 3 + 1] + 0.114f * rawData[row][col * 3 + 2];
|
||||
float fac = lumi < K ? expos : lut[lumi];
|
||||
|
||||
for (int c = 0; c < 3; c++) {
|
||||
rawData[row][col * 3 + c] *= fac;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (settings->verbose) {
|
||||
t2e.set();
|
||||
printf("Exposure before %d usec\n", t2e.etime(t1e));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} //namespace
|
@ -78,6 +78,7 @@ int calculate_subsampling(int w, int h, int r)
|
||||
|
||||
void guidedFilter(const array2D<float> &guide, const array2D<float> &src, array2D<float> &dst, int r, float epsilon, bool multithread, int subsampling)
|
||||
{
|
||||
|
||||
const int W = src.width();
|
||||
const int H = src.height();
|
||||
|
||||
@ -135,16 +136,6 @@ void guidedFilter(const array2D<float> &guide, const array2D<float> &src, array2
|
||||
const array2D<float> &p = src;
|
||||
array2D<float> &q = dst;
|
||||
|
||||
AlignedBuffer<float> blur_buf(I.width() * I.height());
|
||||
const auto f_mean =
|
||||
[&](array2D<float> &d, array2D<float> &s, int rad) -> void
|
||||
{
|
||||
rad = LIM(rad, 0, (min(s.width(), s.height()) - 1) / 2 - 1);
|
||||
float **src = s;
|
||||
float **dst = d;
|
||||
boxblur<float, float>(src, dst, blur_buf.data, rad, rad, s.width(), s.height());
|
||||
};
|
||||
|
||||
const auto f_subsample =
|
||||
[=](array2D<float> &d, const array2D<float> &s) -> void
|
||||
{
|
||||
@ -153,8 +144,21 @@ void guidedFilter(const array2D<float> &guide, const array2D<float> &src, array2
|
||||
|
||||
const auto f_upsample = f_subsample;
|
||||
|
||||
const int w = W / subsampling;
|
||||
const int h = H / subsampling;
|
||||
const size_t w = W / subsampling;
|
||||
const size_t h = H / subsampling;
|
||||
|
||||
AlignedBuffer<float> blur_buf(w * h);
|
||||
const auto f_mean =
|
||||
[&](array2D<float> &d, array2D<float> &s, int rad) -> void
|
||||
{
|
||||
rad = LIM(rad, 0, (min(s.width(), s.height()) - 1) / 2 - 1);
|
||||
float **src = s;
|
||||
float **dst = d;
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel if (multithread)
|
||||
#endif
|
||||
boxblur<float, float>(src, dst, blur_buf.data, rad, rad, s.width(), s.height());
|
||||
};
|
||||
|
||||
array2D<float> I1(w, h);
|
||||
array2D<float> p1(w, h);
|
||||
@ -203,6 +207,9 @@ void guidedFilter(const array2D<float> &guide, const array2D<float> &src, array2
|
||||
apply(SUBMUL, b, a, meanI, meanp);
|
||||
DEBUG_DUMP(b);
|
||||
|
||||
meanI.free(); // frees w * h * 4 byte
|
||||
meanp.free(); // frees w * h * 4 byte
|
||||
|
||||
array2D<float> &meana = a;
|
||||
f_mean(meana, a, r1);
|
||||
DEBUG_DUMP(meana);
|
||||
@ -211,11 +218,13 @@ void guidedFilter(const array2D<float> &guide, const array2D<float> &src, array2
|
||||
f_mean(meanb, b, r1);
|
||||
DEBUG_DUMP(meanb);
|
||||
|
||||
blur_buf.resize(0); // frees w * h * 4 byte
|
||||
|
||||
array2D<float> meanA(W, H);
|
||||
f_upsample(meanA, meana);
|
||||
DEBUG_DUMP(meanA);
|
||||
|
||||
array2D<float> meanB(W, H);
|
||||
array2D<float> &meanB = q;
|
||||
f_upsample(meanB, meanb);
|
||||
DEBUG_DUMP(meanB);
|
||||
|
||||
|
@ -336,7 +336,9 @@ void RawImageSource::boxblur_resamp(float **src, float **dst, float ** temp, int
|
||||
}
|
||||
|
||||
// process remaining columns
|
||||
#ifdef _OPENMP
|
||||
#pragma omp single
|
||||
#endif
|
||||
{
|
||||
|
||||
//vertical blur
|
||||
|
364
rtengine/hphd_demosaic_RT.cc
Normal file
364
rtengine/hphd_demosaic_RT.cc
Normal file
@ -0,0 +1,364 @@
|
||||
/*
|
||||
* This file is part of RawTherapee.
|
||||
*
|
||||
* Copyright (c) 2004-2019 Gabor Horvath <hgabor@rawtherapee.com>
|
||||
*
|
||||
* 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 RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <cmath>
|
||||
|
||||
#include "rawimagesource.h"
|
||||
#include "rawimagesource_i.h"
|
||||
#include "jaggedarray.h"
|
||||
#include "rawimage.h"
|
||||
#include "rt_math.h"
|
||||
#include "../rtgui/multilangmgr.h"
|
||||
#include "opthelper.h"
|
||||
//#define BENCHMARK
|
||||
#include "StopWatch.h"
|
||||
#ifdef _OPENMP
|
||||
#include <omp.h>
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
using namespace rtengine;
|
||||
|
||||
namespace {
|
||||
|
||||
void hphd_vertical(const array2D<float> &rawData, float** hpmap, int col_from, int col_to, int H)
|
||||
{
|
||||
|
||||
// process 'numCols' columns for better usage of L1 cpu cache (especially faster for large values of H)
|
||||
constexpr int numCols = 8;
|
||||
JaggedArray<float> temp(numCols, H, true);
|
||||
JaggedArray<float> avg(numCols, H, true);
|
||||
JaggedArray<float> dev(numCols, H, true);
|
||||
|
||||
int k = col_from;
|
||||
#ifdef __SSE2__
|
||||
const vfloat ninev = F2V(9.f);
|
||||
const vfloat epsv = F2V(0.001f);
|
||||
#endif
|
||||
for (; k < col_to - 7; k += numCols) {
|
||||
for (int i = 5; i < H - 5; i++) {
|
||||
#ifdef _OPENMP
|
||||
#pragma omp simd
|
||||
#endif
|
||||
for(int h = 0; h < numCols; ++h) {
|
||||
temp[i][h] = std::fabs((rawData[i - 5][k + h] - rawData[i + 5][k + h]) - 8 * (rawData[i - 4][k + h] - rawData[i + 4][k + h]) + 27 * (rawData[i - 3][k + h] - rawData[i + 3][k + h]) - 48 * (rawData[i - 2][k + h] - rawData[i + 2][k + h]) + 42 * (rawData[i - 1][k + h] - rawData[i + 1][k + h]));
|
||||
}
|
||||
}
|
||||
|
||||
for (int j = 4; j < H - 4; j++) {
|
||||
#ifdef __SSE2__
|
||||
// faster than #pragma omp simd...
|
||||
const vfloat avgL1 = ((LVFU(temp[j - 4][0]) + LVFU(temp[j - 3][0])) + (LVFU(temp[j - 2][0]) + LVFU(temp[j - 1][0])) + (LVFU(temp[j][0]) + LVFU(temp[j + 1][0])) + (LVFU(temp[j + 2][0]) + LVFU(temp[j + 3][0])) + LVFU(temp[j + 4][0])) / ninev;
|
||||
STVFU(avg[j][0], avgL1);
|
||||
STVFU(dev[j][0], vmaxf(epsv, (SQRV(LVFU(temp[j - 4][0]) - avgL1) + SQRV(LVFU(temp[j - 3][0]) - avgL1)) + (SQRV(LVFU(temp[j - 2][0]) - avgL1) + SQRV(LVFU(temp[j - 1][0]) - avgL1)) + (SQRV(LVFU(temp[j][0]) - avgL1) + SQRV(LVFU(temp[j + 1][0]) - avgL1)) + (SQRV(LVFU(temp[j + 2][0]) - avgL1) + SQRV(LVFU(temp[j + 3][0]) - avgL1)) + SQRV(LVFU(temp[j + 4][0]) - avgL1)));
|
||||
const vfloat avgL2 = ((LVFU(temp[j - 4][4]) + LVFU(temp[j - 3][4])) + (LVFU(temp[j - 2][4]) + LVFU(temp[j - 1][4])) + (LVFU(temp[j][4]) + LVFU(temp[j + 1][4])) + (LVFU(temp[j + 2][4]) + LVFU(temp[j + 3][4])) + LVFU(temp[j + 4][4])) / ninev;
|
||||
STVFU(avg[j][4], avgL2);
|
||||
STVFU(dev[j][4], vmaxf(epsv, (SQRV(LVFU(temp[j - 4][4]) - avgL2) + SQRV(LVFU(temp[j - 3][4]) - avgL2)) + (SQRV(LVFU(temp[j - 2][4]) - avgL2) + SQRV(LVFU(temp[j - 1][4]) - avgL2)) + (SQRV(LVFU(temp[j][4]) - avgL2) + SQRV(LVFU(temp[j + 1][4]) - avgL2)) + (SQRV(LVFU(temp[j + 2][4]) - avgL2) + SQRV(LVFU(temp[j + 3][4]) - avgL2)) + SQRV(LVFU(temp[j + 4][4]) - avgL2)));
|
||||
#else
|
||||
#ifdef _OPENMP
|
||||
#pragma omp simd
|
||||
#endif
|
||||
for(int h = 0; h < numCols; ++h) {
|
||||
const float avgL = ((temp[j - 4][h] + temp[j - 3][h]) + (temp[j - 2][h] + temp[j - 1][h]) + (temp[j][h] + temp[j + 1][h]) + (temp[j + 2][h] + temp[j + 3][h]) + temp[j + 4][h]) / 9.f;
|
||||
avg[j][h] = avgL;
|
||||
dev[j][h] = std::max(0.001f, (SQR(temp[j - 4][h] - avgL) + SQR(temp[j - 3][h] - avgL)) + (SQR(temp[j - 2][h] - avgL) + SQR(temp[j - 1][h] - avgL)) + (SQR(temp[j][h] - avgL) + SQR(temp[j + 1][h] - avgL)) + (SQR(temp[j + 2][h] - avgL) + SQR(temp[j + 3][h] - avgL)) + SQR(temp[j + 4][h] - avgL));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
for (int j = 5; j < H - 5; j++) {
|
||||
#ifdef _OPENMP
|
||||
#pragma omp simd
|
||||
#endif
|
||||
for(int h = 0; h < numCols; ++h) {
|
||||
const float avgL = avg[j - 1][h];
|
||||
const float avgR = avg[j + 1][h];
|
||||
const float devL = dev[j - 1][h];
|
||||
const float devR = dev[j + 1][h];
|
||||
hpmap[j][k + h] = avgL + (avgR - avgL) * devL / (devL + devR);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (; k < col_to; k++) {
|
||||
for (int i = 5; i < H - 5; i++) {
|
||||
temp[i][0] = std::fabs((rawData[i - 5][k] - rawData[i + 5][k]) - 8 * (rawData[i - 4][k] - rawData[i + 4][k]) + 27 * (rawData[i - 3][k] - rawData[i + 3][k]) - 48 * (rawData[i - 2][k] - rawData[i + 2][k]) + 42 * (rawData[i - 1][k] -rawData[i + 1][k]));
|
||||
}
|
||||
|
||||
for (int j = 4; j < H - 4; j++) {
|
||||
const float avgL = (temp[j - 4][0] + temp[j - 3][0] + temp[j - 2][0] + temp[j - 1][0] + temp[j][0] + temp[j + 1][0] + temp[j + 2][0] + temp[j + 3][0] + temp[j + 4][0]) / 9.f;
|
||||
avg[j][0] = avgL;
|
||||
dev[j][0] = std::max(0.001f, SQR(temp[j - 4][0] - avgL) + SQR(temp[j - 3][0] - avgL) + SQR(temp[j - 2][0] - avgL) + SQR(temp[j - 1][0] - avgL) + SQR(temp[j][0] - avgL) + SQR(temp[j + 1][0] - avgL) + SQR(temp[j + 2][0] - avgL) + SQR(temp[j + 3][0] - avgL) + SQR(temp[j + 4][0] - avgL));
|
||||
}
|
||||
|
||||
for (int j = 5; j < H - 5; j++) {
|
||||
const float avgL = avg[j - 1][0];
|
||||
const float avgR = avg[j + 1][0];
|
||||
const float devL = dev[j - 1][0];
|
||||
const float devR = dev[j + 1][0];
|
||||
hpmap[j][k] = avgL + (avgR - avgL) * devL / (devL + devR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void hphd_horizontal(const array2D<float> &rawData, float** hpmap, int row_from, int row_to, int W)
|
||||
{
|
||||
|
||||
float* temp = new float[W];
|
||||
float* avg = new float[W];
|
||||
float* dev = new float[W];
|
||||
|
||||
memset(temp, 0, W * sizeof(float));
|
||||
memset(avg, 0, W * sizeof(float));
|
||||
memset(dev, 0, W * sizeof(float));
|
||||
|
||||
#ifdef __SSE2__
|
||||
const vfloat onev = F2V(1.f);
|
||||
const vfloat twov = F2V(2.f);
|
||||
const vfloat zd8v = F2V(0.8f);
|
||||
#endif
|
||||
for (int i = row_from; i < row_to; i++) {
|
||||
#ifdef _OPENMP
|
||||
#pragma omp simd
|
||||
#endif
|
||||
for (int j = 5; j < W - 5; j++) {
|
||||
temp[j] = std::fabs((rawData[i][j - 5] - rawData[i][j + 5]) - 8 * (rawData[i][j - 4] - rawData[i][j + 4]) + 27 * (rawData[i][j - 3] - rawData[i][j + 3]) - 48 * (rawData[i][j - 2] - rawData[i][j + 2]) + 42 * (rawData[i][j - 1] - rawData[i][j + 1]));
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp simd
|
||||
#endif
|
||||
for (int j = 4; j < W - 4; j++) {
|
||||
const float avgL = ((temp[j - 4] + temp[j - 3]) + (temp[j - 2] + temp[j - 1]) + (temp[j] + temp[j + 1]) + (temp[j + 2] + temp[j + 3]) + temp[j + 4]) / 9.f;
|
||||
avg[j] = avgL;
|
||||
dev[j] = std::max(0.001f, (SQR(temp[j - 4] - avgL) + SQR(temp[j - 3] - avgL)) + (SQR(temp[j - 2] - avgL) + SQR(temp[j - 1] - avgL)) + (SQR(temp[j] - avgL) + SQR(temp[j + 1] - avgL)) + (SQR(temp[j + 2] - avgL) + SQR(temp[j + 3] - avgL)) + SQR(temp[j + 4] - avgL));
|
||||
}
|
||||
|
||||
int j = 5;
|
||||
#ifdef __SSE2__
|
||||
// faster than #pragma omp simd
|
||||
for (; j < W - 8; j+=4) {
|
||||
const vfloat avgL = LVFU(avg[j - 1]);
|
||||
const vfloat avgR = LVFU(avg[j + 1]);
|
||||
const vfloat devL = LVFU(dev[j - 1]);
|
||||
const vfloat devR = LVFU(dev[j + 1]);
|
||||
const vfloat hpv = avgL + (avgR - avgL) * devL / (devL + devR);
|
||||
|
||||
const vfloat hpmapoldv = LVFU(hpmap[i][j]);
|
||||
const vfloat hpmapv = vselfzero(vmaskf_lt(hpmapoldv, zd8v * hpv), twov);
|
||||
STVFU(hpmap[i][j], vself(vmaskf_lt(hpv, zd8v * hpmapoldv), onev, hpmapv));
|
||||
}
|
||||
#endif
|
||||
for (; j < W - 5; j++) {
|
||||
const float avgL = avg[j - 1];
|
||||
const float avgR = avg[j + 1];
|
||||
const float devL = dev[j - 1];
|
||||
const float devR = dev[j + 1];
|
||||
const float hpv = avgL + (avgR - avgL) * devL / (devL + devR);
|
||||
|
||||
if (hpmap[i][j] < 0.8f * hpv) {
|
||||
hpmap[i][j] = 2;
|
||||
} else if (hpv < 0.8f * hpmap[i][j]) {
|
||||
hpmap[i][j] = 1;
|
||||
} else {
|
||||
hpmap[i][j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delete [] temp;
|
||||
delete [] avg;
|
||||
delete [] dev;
|
||||
}
|
||||
|
||||
void hphd_green(const RawImage *ri, const array2D<float> &rawData, float** hpmap, int W, int H, array2D<float> &green)
|
||||
{
|
||||
|
||||
constexpr float eps = 0.001f;
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for schedule(dynamic, 16)
|
||||
#endif
|
||||
|
||||
for (int i = 3; i < H - 3; i++) {
|
||||
for (int j = 3; j < W - 3; j++) {
|
||||
if (ri->ISGREEN(i, j)) {
|
||||
green[i][j] = rawData[i][j];
|
||||
} else {
|
||||
if (hpmap[i][j] == 1) {
|
||||
const float g2 = rawData[i][j + 1] - rawData[i][j + 2] * 0.5f;
|
||||
const float g4 = rawData[i][j - 1] - rawData[i][j - 2] * 0.5f;
|
||||
|
||||
const float dx = eps + std::fabs(rawData[i][j + 1] - rawData[i][j - 1]);
|
||||
float d1 = rawData[i][j + 3] - rawData[i][j + 1];
|
||||
float d2 = rawData[i][j + 2] - rawData[i][j];
|
||||
float d3 = rawData[i - 1][j + 2] - rawData[i - 1][j];
|
||||
float d4 = rawData[i + 1][j + 2] - rawData[i + 1][j];
|
||||
|
||||
const float e2 = 1.f / (dx + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||
|
||||
d1 = rawData[i][j - 3] - rawData[i][j - 1];
|
||||
d2 = rawData[i][j - 2] - rawData[i][j];
|
||||
d3 = rawData[i - 1][j - 2] - rawData[i - 1][j];
|
||||
d4 = rawData[i + 1][j - 2] - rawData[i + 1][j];
|
||||
|
||||
const float e4 = 1.f / (dx + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||
|
||||
green[i][j] = rawData[i][j] * 0.5f + (e2 * g2 + e4 * g4) / (e2 + e4);
|
||||
} else if (hpmap[i][j] == 2) {
|
||||
const float g1 = rawData[i - 1][j] - rawData[i - 2][j] * 0.5f;
|
||||
const float g3 = rawData[i + 1][j] - rawData[i + 2][j] * 0.5f;
|
||||
|
||||
const float dy = eps + std::fabs(rawData[i + 1][j] - rawData[i - 1][j]);
|
||||
float d1 = rawData[i - 1][j] - rawData[i - 3][j];
|
||||
float d2 = rawData[i][j] - rawData[i - 2][j];
|
||||
float d3 = rawData[i][j - 1] - rawData[i - 2][j - 1];
|
||||
float d4 = rawData[i][j + 1] - rawData[i - 2][j + 1];
|
||||
|
||||
const float e1 = 1.f / (dy + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||
|
||||
d1 = rawData[i + 1][j] - rawData[i + 3][j];
|
||||
d2 = rawData[i][j] - rawData[i + 2][j];
|
||||
d3 = rawData[i][j - 1] - rawData[i + 2][j - 1];
|
||||
d4 = rawData[i][j + 1] - rawData[i + 2][j + 1];
|
||||
|
||||
const float e3 = 1.f / (dy + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||
|
||||
green[i][j] = rawData[i][j] * 0.5f + (e1 * g1 + e3 * g3) / (e1 + e3);
|
||||
} else {
|
||||
const float g1 = rawData[i - 1][j] - rawData[i - 2][j] * 0.5f;
|
||||
const float g2 = rawData[i][j + 1] - rawData[i][j + 2] * 0.5f;
|
||||
const float g3 = rawData[i + 1][j] - rawData[i + 2][j] * 0.5f;
|
||||
const float g4 = rawData[i][j - 1] - rawData[i][j - 2] * 0.5f;
|
||||
|
||||
const float dx = eps + std::fabs(rawData[i][j + 1] - rawData[i][j - 1]);
|
||||
const float dy = eps + std::fabs(rawData[i + 1][j] - rawData[i - 1][j]);
|
||||
|
||||
float d1 = rawData[i - 1][j] - rawData[i - 3][j];
|
||||
float d2 = rawData[i][j] - rawData[i - 2][j];
|
||||
float d3 = rawData[i][j - 1] - rawData[i - 2][j - 1];
|
||||
float d4 = rawData[i][j + 1] - rawData[i - 2][j + 1];
|
||||
|
||||
const float e1 = 1.f / (dy + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||
|
||||
d1 = rawData[i][j + 3] - rawData[i][j + 1];
|
||||
d2 = rawData[i][j + 2] - rawData[i][j];
|
||||
d3 = rawData[i - 1][j + 2] - rawData[i - 1][j];
|
||||
d4 = rawData[i + 1][j + 2] - rawData[i + 1][j];
|
||||
|
||||
const float e2 = 1.f / (dx + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||
|
||||
d1 = rawData[i + 1][j] - rawData[i + 3][j];
|
||||
d2 = rawData[i][j] - rawData[i + 2][j];
|
||||
d3 = rawData[i][j - 1] - rawData[i + 2][j - 1];
|
||||
d4 = rawData[i][j + 1] - rawData[i + 2][j + 1];
|
||||
|
||||
const float e3 = 1.f / (dy + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||
|
||||
d1 = rawData[i][j - 3] - rawData[i][j - 1];
|
||||
d2 = rawData[i][j - 2] - rawData[i][j];
|
||||
d3 = rawData[i - 1][j - 2] - rawData[i - 1][j];
|
||||
d4 = rawData[i + 1][j - 2] - rawData[i + 1][j];
|
||||
|
||||
const float e4 = 1.f / (dx + (std::fabs(d1) + std::fabs(d2)) + (std::fabs(d3) + std::fabs(d4)) * 0.5f);
|
||||
|
||||
green[i][j] = rawData[i][j] * 0.5f + ((e1 * g1 + e2 * g2) + (e3 * g3 + e4 * g4)) / (e1 + e2 + e3 + e4);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace rtengine
|
||||
{
|
||||
|
||||
void RawImageSource::hphd_demosaic ()
|
||||
{
|
||||
BENCHFUN
|
||||
if (plistener) {
|
||||
plistener->setProgressStr(Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::HPHD)));
|
||||
plistener->setProgress(0.0);
|
||||
}
|
||||
|
||||
JaggedArray<float> hpmap(W, H, true);
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
{
|
||||
int tid = omp_get_thread_num();
|
||||
int nthreads = omp_get_num_threads();
|
||||
int blk = W / nthreads;
|
||||
|
||||
if (tid < nthreads - 1) {
|
||||
hphd_vertical(rawData, hpmap, tid * blk, (tid + 1)*blk, H);
|
||||
} else {
|
||||
hphd_vertical(rawData, hpmap, tid * blk, W, H);
|
||||
}
|
||||
}
|
||||
#else
|
||||
hphd_vertical(rawData, hpmap, 0, W, H);
|
||||
#endif
|
||||
|
||||
if (plistener) {
|
||||
plistener->setProgress(0.35);
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
{
|
||||
int tid = omp_get_thread_num();
|
||||
int nthreads = omp_get_num_threads();
|
||||
int blk = H / nthreads;
|
||||
|
||||
if (tid < nthreads - 1) {
|
||||
hphd_horizontal(rawData, hpmap, tid * blk, (tid + 1)*blk, W);
|
||||
} else {
|
||||
hphd_horizontal(rawData, hpmap, tid * blk, H, W);
|
||||
}
|
||||
}
|
||||
#else
|
||||
hphd_horizontal(rawData, hpmap, 0, H, W);
|
||||
#endif
|
||||
|
||||
if (plistener) {
|
||||
plistener->setProgress(0.43);
|
||||
}
|
||||
|
||||
hphd_green(ri, rawData, hpmap, W, H, green);
|
||||
|
||||
if (plistener) {
|
||||
plistener->setProgress(0.65);
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
for (int i = 4; i < H - 4; i++) {
|
||||
interpolate_row_rb_mul_pp(rawData, red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
|
||||
}
|
||||
|
||||
border_interpolate2(W, H, 4, rawData, red, green, blue);
|
||||
|
||||
if (plistener) {
|
||||
plistener->setProgress(1.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
} /* namespace */
|
@ -139,7 +139,7 @@ protected:
|
||||
AlignedBuffer<T*> ab;
|
||||
public:
|
||||
#if CHECK_BOUNDS
|
||||
int width_, height_;
|
||||
size_t width_, height_;
|
||||
#endif
|
||||
T** ptrs;
|
||||
|
||||
@ -149,7 +149,7 @@ public:
|
||||
PlanarPtr() : ptrs (nullptr) {}
|
||||
#endif
|
||||
|
||||
bool resize(int newSize)
|
||||
bool resize(size_t newSize)
|
||||
{
|
||||
if (ab.resize(newSize)) {
|
||||
ptrs = ab.data;
|
||||
@ -167,7 +167,7 @@ public:
|
||||
ptrs = tmpsPtrs;
|
||||
|
||||
#if CHECK_BOUNDS
|
||||
int tmp = other.width_;
|
||||
size_t tmp = other.width_;
|
||||
other.width_ = width_;
|
||||
width_ = tmp;
|
||||
tmp = other.height_;
|
||||
@ -176,7 +176,7 @@ public:
|
||||
#endif
|
||||
}
|
||||
|
||||
T*& operator() (unsigned row)
|
||||
T*& operator() (size_t row)
|
||||
{
|
||||
#if CHECK_BOUNDS
|
||||
assert (row < height_);
|
||||
@ -184,7 +184,7 @@ public:
|
||||
return ptrs[row];
|
||||
}
|
||||
// Will send back the start of a row, starting with a red, green or blue value
|
||||
T* operator() (unsigned row) const
|
||||
T* operator() (size_t row) const
|
||||
{
|
||||
#if CHECK_BOUNDS
|
||||
assert (row < height_);
|
||||
@ -192,14 +192,14 @@ public:
|
||||
return ptrs[row];
|
||||
}
|
||||
// Will send back a value at a given row, col position
|
||||
T& operator() (unsigned row, unsigned col)
|
||||
T& operator() (size_t row, size_t col)
|
||||
{
|
||||
#if CHECK_BOUNDS
|
||||
assert (row < height_ && col < width_);
|
||||
#endif
|
||||
return ptrs[row][col];
|
||||
}
|
||||
const T operator() (unsigned row, unsigned col) const
|
||||
const T operator() (size_t row, size_t col) const
|
||||
{
|
||||
#if CHECK_BOUNDS
|
||||
assert (row < height_ && col < width_);
|
||||
@ -215,7 +215,7 @@ class PlanarWhateverData : virtual public ImageDatas
|
||||
private:
|
||||
AlignedBuffer<T> abData;
|
||||
|
||||
int rowstride; // Plan size, in bytes (all padding bytes included)
|
||||
size_t rowstride; // Plan size, in bytes (all padding bytes included)
|
||||
|
||||
public:
|
||||
T* data;
|
||||
@ -228,7 +228,7 @@ public:
|
||||
}
|
||||
|
||||
// Send back the row stride. WARNING: unit = byte, not element!
|
||||
int getRowStride () const
|
||||
size_t getRowStride () const
|
||||
{
|
||||
return rowstride;
|
||||
}
|
||||
@ -259,7 +259,6 @@ public:
|
||||
* Can be safely used to reallocate an existing image */
|
||||
void allocate (int W, int H) override
|
||||
{
|
||||
|
||||
if (W == width && H == height) {
|
||||
return;
|
||||
}
|
||||
@ -591,8 +590,8 @@ class PlanarRGBData : virtual public ImageDatas
|
||||
private:
|
||||
AlignedBuffer<T> abData;
|
||||
|
||||
int rowstride; // Plan size, in bytes (all padding bytes included)
|
||||
int planestride; // Row length, in bytes (padding bytes included)
|
||||
size_t rowstride; // Plan size, in bytes (all padding bytes included)
|
||||
size_t planestride; // Row length, in bytes (padding bytes included)
|
||||
protected:
|
||||
T* data;
|
||||
|
||||
@ -602,18 +601,18 @@ public:
|
||||
PlanarPtr<T> b;
|
||||
|
||||
PlanarRGBData() : rowstride(0), planestride(0), data (nullptr) {}
|
||||
PlanarRGBData(int w, int h) : rowstride(0), planestride(0), data (nullptr)
|
||||
PlanarRGBData(size_t w, size_t h) : rowstride(0), planestride(0), data (nullptr)
|
||||
{
|
||||
allocate(w, h);
|
||||
}
|
||||
|
||||
// Send back the row stride. WARNING: unit = byte, not element!
|
||||
int getRowStride () const
|
||||
size_t getRowStride () const
|
||||
{
|
||||
return rowstride;
|
||||
}
|
||||
// Send back the plane stride. WARNING: unit = byte, not element!
|
||||
int getPlaneStride () const
|
||||
size_t getPlaneStride () const
|
||||
{
|
||||
return planestride;
|
||||
}
|
||||
@ -710,7 +709,7 @@ public:
|
||||
char *bluestart = (char*)(data) + 2 * planestride;
|
||||
|
||||
for (int i = 0; i < height; ++i) {
|
||||
int k = i * rowstride;
|
||||
size_t k = i * rowstride;
|
||||
r(i) = (T*)(redstart + k);
|
||||
g(i) = (T*)(greenstart + k);
|
||||
b(i) = (T*)(bluestart + k);
|
||||
@ -1180,10 +1179,10 @@ class ChunkyPtr
|
||||
{
|
||||
private:
|
||||
T* ptr;
|
||||
int width;
|
||||
ssize_t width;
|
||||
public:
|
||||
#if CHECK_BOUNDS
|
||||
int width_, height_;
|
||||
size_t width_, height_;
|
||||
#endif
|
||||
|
||||
#if CHECK_BOUNDS
|
||||
@ -1191,7 +1190,7 @@ public:
|
||||
#else
|
||||
ChunkyPtr() : ptr (nullptr), width(-1) {}
|
||||
#endif
|
||||
void init(T* base, int w = -1)
|
||||
void init(T* base, ssize_t w = -1)
|
||||
{
|
||||
ptr = base;
|
||||
width = w;
|
||||
@ -1202,12 +1201,12 @@ public:
|
||||
other.ptr = ptr;
|
||||
ptr = tmpsPtr;
|
||||
|
||||
int tmpWidth = other.width;
|
||||
ssize_t tmpWidth = other.width;
|
||||
other.width = width;
|
||||
width = tmpWidth;
|
||||
|
||||
#if CHECK_BOUNDS
|
||||
int tmp = other.width_;
|
||||
size_t tmp = other.width_;
|
||||
other.width_ = width_;
|
||||
width_ = tmp;
|
||||
tmp = other.height_;
|
||||
@ -1218,7 +1217,7 @@ public:
|
||||
}
|
||||
|
||||
// Will send back the start of a row, starting with a red, green or blue value
|
||||
T* operator() (unsigned row) const
|
||||
T* operator() (size_t row) const
|
||||
{
|
||||
#if CHECK_BOUNDS
|
||||
assert (row < height_);
|
||||
@ -1226,14 +1225,14 @@ public:
|
||||
return &ptr[3 * (row * width)];
|
||||
}
|
||||
// Will send back a value at a given row, col position
|
||||
T& operator() (unsigned row, unsigned col)
|
||||
T& operator() (size_t row, size_t col)
|
||||
{
|
||||
#if CHECK_BOUNDS
|
||||
assert (row < height_ && col < width_);
|
||||
#endif
|
||||
return ptr[3 * (row * width + col)];
|
||||
}
|
||||
const T operator() (unsigned row, unsigned col) const
|
||||
const T operator() (size_t row, size_t col) const
|
||||
{
|
||||
#if CHECK_BOUNDS
|
||||
assert (row < height_ && col < width_);
|
||||
@ -1315,7 +1314,7 @@ public:
|
||||
b.height_ = height;
|
||||
#endif
|
||||
|
||||
abData.resize(width * height * 3u);
|
||||
abData.resize((size_t)width * (size_t)height * (size_t)3);
|
||||
|
||||
if (!abData.isEmpty()) {
|
||||
data = abData.data;
|
||||
|
@ -69,7 +69,7 @@ void Image8::setScanline (int row, unsigned char* buffer, int bps, unsigned int
|
||||
data[row * width * 3 + 3 * i] = data[row * width * 3 + 3 * i + 1] = data[row * width * 3 + 3 * i + 2] = buffer[i];
|
||||
}
|
||||
} else {
|
||||
memcpy (data + row * width * 3u, buffer, width * 3);
|
||||
memcpy (data + (uint64_t)row * (uint64_t)width * (uint64_t)3u, buffer, width * 3);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <functional>
|
||||
#include <strings.h>
|
||||
#include <glib/gstdio.h>
|
||||
#include <tiff.h>
|
||||
@ -43,6 +44,22 @@ Glib::ustring to_utf8 (const std::string& str)
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
T getFromFrame(
|
||||
const std::vector<std::unique_ptr<FrameData>>& frames,
|
||||
std::size_t frame,
|
||||
const std::function<T (const FrameData&)>& function
|
||||
)
|
||||
{
|
||||
if (frame < frames.size()) {
|
||||
return function(*frames[frame]);
|
||||
}
|
||||
if (!frames.empty()) {
|
||||
return function(*frames[0]);
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FramesMetaData* FramesMetaData::fromFile (const Glib::ustring& fname, std::unique_ptr<RawMetaDataLocation> rml, bool firstFrameOnly)
|
||||
@ -902,72 +919,194 @@ procparams::IPTCPairs FramesData::getIPTCData (unsigned int frame) const
|
||||
|
||||
bool FramesData::hasExif(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? false : frames.at(frame)->hasExif ();
|
||||
return getFromFrame<bool>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.hasExif();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
bool FramesData::hasIPTC(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? false : frames.at(frame)->hasIPTC ();
|
||||
return getFromFrame<bool>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.hasIPTC();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
tm FramesData::getDateTime(unsigned int frame) const
|
||||
{
|
||||
if (frames.empty() || frame >= frames.size() ) {
|
||||
return {};
|
||||
} else {
|
||||
return frames.at(frame)->getDateTime ();
|
||||
return getFromFrame<tm>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getDateTime();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
time_t FramesData::getDateTimeAsTS(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? 0 : frames.at(frame)->getDateTimeAsTS ();
|
||||
return getFromFrame<time_t>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getDateTimeAsTS();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
int FramesData::getISOSpeed(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? 0 : frames.at(frame)->getISOSpeed ();
|
||||
return getFromFrame<int>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getISOSpeed();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
double FramesData::getFNumber(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? 0. : frames.at(frame)->getFNumber ();
|
||||
return getFromFrame<double>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getFNumber();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
double FramesData::getFocalLen(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? 0. : frames.at(frame)->getFocalLen ();
|
||||
return getFromFrame<double>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getFocalLen();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
double FramesData::getFocalLen35mm(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? 0. : frames.at(frame)->getFocalLen35mm ();
|
||||
return getFromFrame<double>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getFocalLen35mm();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
float FramesData::getFocusDist(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? 0.f : frames.at(frame)->getFocusDist ();
|
||||
return getFromFrame<float>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getFocusDist();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
double FramesData::getShutterSpeed(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? 0. : frames.at(frame)->getShutterSpeed ();
|
||||
return getFromFrame<double>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getShutterSpeed();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
double FramesData::getExpComp(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? 0. : frames.at(frame)->getExpComp ();
|
||||
return getFromFrame<double>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getExpComp();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
std::string FramesData::getMake(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? std::string() : frames.at(frame)->getMake ();
|
||||
return getFromFrame<std::string>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getMake();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
std::string FramesData::getModel(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? std::string() : frames.at(frame)->getModel ();
|
||||
return getFromFrame<std::string>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getModel();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
std::string FramesData::getLens(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? std::string() : frames.at(frame)->getLens ();
|
||||
return getFromFrame<std::string>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getLens();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
std::string FramesData::getSerialNumber(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? std::string() : frames.at(frame)->getSerialNumber ();
|
||||
return getFromFrame<std::string>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getSerialNumber();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
std::string FramesData::getOrientation(unsigned int frame) const
|
||||
{
|
||||
return frames.empty() || frame >= frames.size() ? std::string() : frames.at(frame)->getOrientation ();
|
||||
return getFromFrame<std::string>(
|
||||
frames,
|
||||
frame,
|
||||
[](const FrameData& frame_data)
|
||||
{
|
||||
return frame_data.getOrientation();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
@ -108,8 +108,6 @@ void Imagefloat::setScanline (int row, unsigned char* buffer, int bps, unsigned
|
||||
}
|
||||
|
||||
|
||||
namespace rtengine { extern void filmlike_clip(float *r, float *g, float *b); }
|
||||
|
||||
void Imagefloat::getScanline (int row, unsigned char* buffer, int bps, bool isFloat) const
|
||||
{
|
||||
|
||||
@ -441,11 +439,15 @@ void Imagefloat::calcCroppedHistogram(const ProcParams ¶ms, float scale, LUT
|
||||
int x1, x2, y1, y2;
|
||||
params.crop.mapToResized(width, height, scale, x1, x2, y1, y2);
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
LUTu histThr(65536);
|
||||
histThr.clear();
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for nowait
|
||||
#endif
|
||||
|
||||
for (int y = y1; y < y2; y++) {
|
||||
for (int x = x1; x < x2; x++) {
|
||||
@ -461,7 +463,9 @@ void Imagefloat::calcCroppedHistogram(const ProcParams ¶ms, float scale, LUT
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical
|
||||
#endif
|
||||
{
|
||||
for(int i = 0; i <= 0xffff; i++) {
|
||||
hist[i] += histThr[i];
|
||||
@ -495,7 +499,6 @@ void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform)
|
||||
*(p++) = *(pR++);
|
||||
*(p++) = *(pG++);
|
||||
*(p++) = *(pB++);
|
||||
|
||||
}
|
||||
|
||||
cmsDoTransform (hTransform, pBuf.data, pBuf.data, width);
|
||||
|
@ -1048,9 +1048,13 @@ void ImProcCoordinator::updateLRGBHistograms()
|
||||
int x1, y1, x2, y2;
|
||||
params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2);
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel sections
|
||||
#endif
|
||||
{
|
||||
#ifdef _OPENMP
|
||||
#pragma omp section
|
||||
#endif
|
||||
{
|
||||
histChroma.clear();
|
||||
|
||||
@ -1060,7 +1064,9 @@ void ImProcCoordinator::updateLRGBHistograms()
|
||||
histChroma[(int)(sqrtf(SQR(nprevl->a[i][j]) + SQR(nprevl->b[i][j])) / 188.f)]++; //188 = 48000/256
|
||||
}
|
||||
}
|
||||
#ifdef _OPENMP
|
||||
#pragma omp section
|
||||
#endif
|
||||
{
|
||||
histLuma.clear();
|
||||
|
||||
@ -1070,7 +1076,9 @@ void ImProcCoordinator::updateLRGBHistograms()
|
||||
histLuma[(int)(nprevl->L[i][j] / 128.f)]++;
|
||||
}
|
||||
}
|
||||
#ifdef _OPENMP
|
||||
#pragma omp section
|
||||
#endif
|
||||
{
|
||||
histRed.clear();
|
||||
histGreen.clear();
|
||||
@ -1302,7 +1310,9 @@ void ImProcCoordinator::saveInputICCReference(const Glib::ustring& fname, bool a
|
||||
int cy = params.crop.y;
|
||||
int cw = params.crop.w;
|
||||
int ch = params.crop.h;
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int i = cy; i < cy + ch; i++) {
|
||||
for (int j = cx; j < cx + cw; j++) {
|
||||
@ -1317,7 +1327,9 @@ void ImProcCoordinator::saveInputICCReference(const Glib::ustring& fname, bool a
|
||||
}
|
||||
|
||||
// image may contain out of range samples, clip them to avoid wrap-arounds
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < im->getHeight(); i++) {
|
||||
for (int j = 0; j < im->getWidth(); j++) {
|
||||
|
@ -777,7 +777,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
||||
hist16Qthr.clear();
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for reduction(+:sum)
|
||||
#endif
|
||||
|
||||
|
||||
for (int i = 0; i < height; i++)
|
||||
@ -846,7 +848,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
||||
//can be used in case of...
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical
|
||||
#endif
|
||||
{
|
||||
if (needJ) {
|
||||
hist16J += hist16Jthr;
|
||||
@ -995,7 +999,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
||||
int bufferLength = ((width + 3) / 4) * 4; // bufferLength has to be a multiple of 4
|
||||
#endif
|
||||
#ifndef _DEBUG
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
float minQThr = 10000.f;
|
||||
@ -1010,7 +1016,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
||||
float sbuffer[bufferLength] ALIGNED16;
|
||||
#endif
|
||||
#ifndef _DEBUG
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic, 16)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < height; i++) {
|
||||
@ -1618,7 +1626,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical
|
||||
#endif
|
||||
{
|
||||
if (minQThr < minQ) {
|
||||
minQ = minQThr;
|
||||
@ -1731,11 +1741,15 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
||||
|
||||
|
||||
#ifndef _DEBUG
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
#ifndef _DEBUG
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic, 10)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < height; i++) // update CieImages with new values after sharpening, defringe, contrast by detail level
|
||||
@ -1768,7 +1782,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
||||
const float co_e = (pow_F (f_l, 0.25f)) + eps;
|
||||
|
||||
#ifndef _DEBUG
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
#ifdef __SSE2__
|
||||
@ -1782,7 +1798,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
|
||||
#endif
|
||||
|
||||
#ifndef _DEBUG
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic, 10)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < height; i++) { // update CIECAM with new values after tone-mapping
|
||||
@ -4120,7 +4138,9 @@ void ImProcFunctions::luminanceCurve (LabImage* lold, LabImage* lnew, LUTf & cur
|
||||
int W = lold->W;
|
||||
int H = lold->H;
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for if (multiThread)
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < H; i++)
|
||||
for (int j = 0; j < W; j++) {
|
||||
@ -4269,17 +4289,8 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW
|
||||
}
|
||||
|
||||
|
||||
LUTu hist16Clad;
|
||||
LUTu hist16Llad;
|
||||
|
||||
//preparate for histograms CIECAM
|
||||
if (pW != 1) { //only with improccoordinator
|
||||
hist16Clad (65536);
|
||||
hist16Clad.clear();
|
||||
hist16Llad (65536);
|
||||
hist16Llad.clear();
|
||||
|
||||
}
|
||||
const float histLFactor = pW != 1 ? histLCurve.getSize() / 100.f : 1.f;
|
||||
const float histCFactor = pW != 1 ? histCCurve.getSize() / 48000.f : 1.f;
|
||||
|
||||
#ifdef _DEBUG
|
||||
MyTime t1e, t2e;
|
||||
@ -4386,17 +4397,21 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW
|
||||
{wprof[2][0], wprof[2][1], wprof[2][2]}
|
||||
};
|
||||
|
||||
#ifdef _OPENMP
|
||||
#ifdef _DEBUG
|
||||
#pragma omp parallel default(shared) firstprivate(lold, lnew, MunsDebugInfo, pW) if (multiThread)
|
||||
#else
|
||||
#pragma omp parallel if (multiThread)
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
#ifdef __SSE2__
|
||||
float HHBuffer[W] ALIGNED16;
|
||||
float CCBuffer[W] ALIGNED16;
|
||||
#endif
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic, 16)
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < H; i++) {
|
||||
if (avoidColorShift)
|
||||
@ -4775,8 +4790,7 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW
|
||||
|
||||
//update histogram C
|
||||
if (pW != 1) { //only with improccoordinator
|
||||
int posp = (int)sqrt (atmp * atmp + btmp * btmp);
|
||||
hist16Clad[posp]++;
|
||||
histCCurve[histCFactor * sqrt(atmp * atmp + btmp * btmp)]++;
|
||||
}
|
||||
|
||||
if (editPipette && editID == EUID_Lab_LCCurve) {
|
||||
@ -4831,8 +4845,7 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW
|
||||
|
||||
//update histo LC
|
||||
if (pW != 1) { //only with improccoordinator
|
||||
int posl = Lprov1 * 327.68f;
|
||||
hist16Llad[posl]++;
|
||||
histLCurve[Lprov1 * histLFactor]++;
|
||||
}
|
||||
|
||||
Chprov1 = sqrt (SQR (atmp) + SQR (btmp)) / 327.68f;
|
||||
@ -4919,13 +4932,6 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW
|
||||
}
|
||||
} // end of parallelization
|
||||
|
||||
if (pW != 1) { //only with improccoordinator
|
||||
//update histogram C with data chromaticity and not with CC curve
|
||||
hist16Clad.compressTo (histCCurve);
|
||||
//update histogram L with data luminance
|
||||
hist16Llad.compressTo (histLCurve);
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
if (settings->verbose) {
|
||||
@ -5136,7 +5142,9 @@ void ImProcFunctions::EPDToneMapCIE (CieImage *ncie, float a_w, float c_, int Wi
|
||||
|
||||
EdgePreservingDecomposition epd (Wid, Hei);
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < Hei; i++)
|
||||
for (int j = 0; j < Wid; j++) {
|
||||
@ -5162,7 +5170,9 @@ void ImProcFunctions::EPDToneMapCIE (CieImage *ncie, float a_w, float c_, int Wi
|
||||
//Restore past range, also desaturate a bit per Mantiuk's Color correction for tone mapping.
|
||||
float s = (1.0f + 38.7889f) * powf (Compression, 1.5856f) / (1.0f + 38.7889f * powf (Compression, 1.5856f));
|
||||
#ifndef _DEBUG
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for schedule(dynamic,10)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < Hei; i++)
|
||||
@ -5243,11 +5253,15 @@ void ImProcFunctions::EPDToneMap (LabImage *lab, unsigned int Iterates, int skip
|
||||
//Due to the taking of logarithms, L must be nonnegative. Further, scale to 0 to 1 using nominal range of L, 0 to 15 bit.
|
||||
float minL = FLT_MAX;
|
||||
float maxL = 0.f;
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
float lminL = FLT_MAX;
|
||||
float lmaxL = 0.f;
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
|
||||
for (size_t i = 0; i < N; i++) {
|
||||
if (L[i] < lminL) {
|
||||
@ -5259,7 +5273,9 @@ void ImProcFunctions::EPDToneMap (LabImage *lab, unsigned int Iterates, int skip
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical
|
||||
#endif
|
||||
{
|
||||
if (lminL < minL) {
|
||||
minL = lminL;
|
||||
@ -5279,7 +5295,9 @@ void ImProcFunctions::EPDToneMap (LabImage *lab, unsigned int Iterates, int skip
|
||||
maxL = 1.f;
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (size_t i = 0; i < N; ++i)
|
||||
//{L[i] = (L[i] - minL)/32767.0f;
|
||||
@ -5340,7 +5358,7 @@ void ImProcFunctions::getAutoExp (const LUTu &histogram, int histcompr, double
|
||||
histogram.getSumAndAverage (sum, ave);
|
||||
|
||||
//find median of luminance
|
||||
int median = 0, count = histogram[0];
|
||||
size_t median = 0, count = histogram[0];
|
||||
|
||||
while (count < sum / 2) {
|
||||
median++;
|
||||
|
@ -58,23 +58,20 @@ namespace {
|
||||
#endif
|
||||
|
||||
|
||||
int get_dark_channel(const array2D<float> &R, const array2D<float> &G, const array2D<float> &B, array2D<float> &dst, int patchsize, float *ambient, bool clip, bool multithread)
|
||||
int get_dark_channel(const array2D<float> &R, const array2D<float> &G, const array2D<float> &B, array2D<float> &dst, int patchsize, const float ambient[3], bool clip, bool multithread)
|
||||
{
|
||||
const int W = R.width();
|
||||
const int H = R.height();
|
||||
|
||||
int npatches = 0;
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for if (multithread)
|
||||
#endif
|
||||
for (int y = 0; y < H; y += patchsize) {
|
||||
int pH = min(y+patchsize, H);
|
||||
for (int x = 0; x < W; x += patchsize, ++npatches) {
|
||||
const int pH = min(y + patchsize, H);
|
||||
for (int x = 0; x < W; x += patchsize) {
|
||||
float val = RT_INFINITY_F;
|
||||
int pW = min(x+patchsize, W);
|
||||
const int pW = min(x + patchsize, W);
|
||||
for (int yy = y; yy < pH; ++yy) {
|
||||
float yval = RT_INFINITY_F;
|
||||
for (int xx = x; xx < pW; ++xx) {
|
||||
float r = R[yy][xx];
|
||||
float g = G[yy][xx];
|
||||
@ -84,9 +81,8 @@ int get_dark_channel(const array2D<float> &R, const array2D<float> &G, const arr
|
||||
g /= ambient[1];
|
||||
b /= ambient[2];
|
||||
}
|
||||
yval = min(yval, r, g, b);
|
||||
val = min(val, r, g, b);
|
||||
}
|
||||
val = min(val, yval);
|
||||
}
|
||||
if (clip) {
|
||||
val = LIM01(val);
|
||||
@ -97,7 +93,7 @@ int get_dark_channel(const array2D<float> &R, const array2D<float> &G, const arr
|
||||
}
|
||||
}
|
||||
|
||||
return npatches;
|
||||
return (W / patchsize + ((W % patchsize) > 0)) * (H / patchsize + ((H % patchsize) > 0));
|
||||
}
|
||||
|
||||
|
||||
@ -121,7 +117,7 @@ float estimate_ambient_light(const array2D<float> &R, const array2D<float> &G, c
|
||||
std::priority_queue<float> p;
|
||||
for (int y = 0; y < H; y += patchsize) {
|
||||
for (int x = 0; x < W; x += patchsize) {
|
||||
if (!OOG(dark[y][x], 1.f)) {
|
||||
if (!OOG(dark[y][x], 1.f - 1e-5f)) {
|
||||
p.push(dark[y][x]);
|
||||
}
|
||||
}
|
||||
@ -221,7 +217,7 @@ void ImProcFunctions::dehaze(Imagefloat *img)
|
||||
|
||||
const int W = img->getWidth();
|
||||
const int H = img->getHeight();
|
||||
float strength = LIM01(float(params->dehaze.strength) / 100.f * 0.9f);
|
||||
const float strength = LIM01(float(params->dehaze.strength) / 100.f * 0.9f);
|
||||
|
||||
if (options.rtSettings.verbose) {
|
||||
std::cout << "dehaze: strength = " << strength << std::endl;
|
||||
@ -311,7 +307,7 @@ void ImProcFunctions::dehaze(Imagefloat *img)
|
||||
}
|
||||
float mt = max(t[y][x], t0, tl + teps, tu + teps);
|
||||
if (params->dehaze.showDepthMap) {
|
||||
img->r(y, x) = img->g(y, x) = img->b(y, x) = 1.f - mt;
|
||||
img->r(y, x) = img->g(y, x) = img->b(y, x) = LIM01(1.f - mt);
|
||||
} else {
|
||||
float r = (rgb[0] - ambient[0]) / mt + ambient[0];
|
||||
float g = (rgb[1] - ambient[1]) / mt + ambient[1];
|
||||
|
@ -54,7 +54,9 @@ void ImProcFunctions::Lanczos (const Imagefloat* src, Imagefloat* dst, float sca
|
||||
const float sc = min (scale, 1.0f);
|
||||
const int support = static_cast<int> (2.0f * a / sc) + 1;
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
// storage for precomputed parameters for horisontal interpolation
|
||||
float * wwh = new float[support * dst->getWidth()];
|
||||
@ -97,7 +99,9 @@ void ImProcFunctions::Lanczos (const Imagefloat* src, Imagefloat* dst, float sca
|
||||
}
|
||||
|
||||
// Phase 2: do actual interpolation
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < dst->getHeight(); i++) {
|
||||
|
||||
|
@ -393,7 +393,7 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e
|
||||
pond /= log(elogt);
|
||||
}
|
||||
|
||||
auto shmap = ((mapmet == 2 || mapmet == 3 || mapmet == 4) && it == 1) ? new SHMap (W_L, H_L, true) : nullptr;
|
||||
auto shmap = ((mapmet == 2 || mapmet == 3 || mapmet == 4) && it == 1) ? new SHMap (W_L, H_L) : nullptr;
|
||||
|
||||
float *buffer = new float[W_L * H_L];;
|
||||
|
||||
|
@ -705,7 +705,9 @@ void ImProcFunctions::transformLuminanceOnly (Imagefloat* original, Imagefloat*
|
||||
}
|
||||
|
||||
bool darkening = (params->vignetting.amount <= 0.0);
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for schedule(dynamic,16) if (multiThread)
|
||||
#endif
|
||||
|
||||
for (int y = 0; y < transformed->getHeight(); y++) {
|
||||
double vig_y_d = applyVignetting ? (double) (y + cy) - vig_h2 : 0.0;
|
||||
@ -817,7 +819,9 @@ void ImProcFunctions::transformGeneral(bool highQuality, Imagefloat *original, I
|
||||
#endif
|
||||
// main cycle
|
||||
bool darkening = (params->vignetting.amount <= 0.0);
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for if (multiThread)
|
||||
#endif
|
||||
|
||||
for (int y = 0; y < transformed->getHeight(); y++) {
|
||||
for (int x = 0; x < transformed->getWidth(); x++) {
|
||||
@ -964,7 +968,9 @@ void ImProcFunctions::transformLCPCAOnly(Imagefloat *original, Imagefloat *trans
|
||||
chTrans[1] = transformed->g.ptrs;
|
||||
chTrans[2] = transformed->b.ptrs;
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for if (multiThread)
|
||||
#endif
|
||||
|
||||
for (int y = 0; y < transformed->getHeight(); y++) {
|
||||
for (int x = 0; x < transformed->getWidth(); x++) {
|
||||
|
@ -40,8 +40,6 @@ namespace rtengine
|
||||
|
||||
using namespace procparams;
|
||||
|
||||
extern const Settings* settings;
|
||||
|
||||
void fillCurveArrayVib (DiagonalCurve* diagCurve, LUTf &outCurve)
|
||||
{
|
||||
|
||||
@ -170,7 +168,9 @@ void ImProcFunctions::vibrance (LabImage* lab)
|
||||
{static_cast<float>(wiprof[2][0]), static_cast<float>(wiprof[2][1]), static_cast<float>(wiprof[2][2])}
|
||||
};
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel if (multiThread)
|
||||
#endif
|
||||
{
|
||||
|
||||
#ifdef __SSE2__
|
||||
@ -179,7 +179,9 @@ void ImProcFunctions::vibrance (LabImage* lab)
|
||||
#endif
|
||||
float sathue[5], sathue2[4]; // adjust sat in function of hue
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic, 16)
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < height; i++) {
|
||||
#ifdef __SSE2__
|
||||
|
@ -64,7 +64,7 @@ void LabImage::getPipetteData (float &v1, float &v2, float &v3, int posX, int po
|
||||
v3 = n ? accumulator_b / float(n) : 0.f;
|
||||
}
|
||||
|
||||
void LabImage::allocLab(int w, int h)
|
||||
void LabImage::allocLab(size_t w, size_t h)
|
||||
{
|
||||
L = new float*[h];
|
||||
a = new float*[h];
|
||||
@ -73,19 +73,19 @@ void LabImage::allocLab(int w, int h)
|
||||
data = new float [w * h * 3];
|
||||
float * index = data;
|
||||
|
||||
for (int i = 0; i < h; i++) {
|
||||
for (size_t i = 0; i < h; i++) {
|
||||
L[i] = index + i * w;
|
||||
}
|
||||
|
||||
index += w * h;
|
||||
|
||||
for (int i = 0; i < h; i++) {
|
||||
for (size_t i = 0; i < h; i++) {
|
||||
a[i] = index + i * w;
|
||||
}
|
||||
|
||||
index += w * h;
|
||||
|
||||
for (int i = 0; i < h; i++) {
|
||||
for (size_t i = 0; i < h; i++) {
|
||||
b[i] = index + i * w;
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ namespace rtengine
|
||||
class LabImage
|
||||
{
|
||||
private:
|
||||
void allocLab(int w, int h);
|
||||
void allocLab(size_t w, size_t h);
|
||||
|
||||
public:
|
||||
int W, H;
|
||||
|
@ -107,7 +107,7 @@ IMFILE* fopen (const char* fname)
|
||||
void* data = mmap(nullptr, stat_buffer.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
|
||||
|
||||
if ( data == MAP_FAILED ) {
|
||||
printf("no mmap\n");
|
||||
printf("no mmap %s\n", fname);
|
||||
close(fd);
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -77,7 +77,9 @@ PreviewImage::PreviewImage (const Glib::ustring &fname, const Glib::ustring &ext
|
||||
previewImage = Cairo::ImageSurface::create(Cairo::FORMAT_RGB24, w, h);
|
||||
previewImage->flush();
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
for (unsigned int i = 0; i < (unsigned int)(h); ++i) {
|
||||
const unsigned char *src = data + i * w * 3;
|
||||
unsigned char *dst = previewImage->get_data() + i * w * 4;
|
||||
@ -119,7 +121,9 @@ PreviewImage::PreviewImage (const Glib::ustring &fname, const Glib::ustring &ext
|
||||
rawImage.getImage (wb, TR_NONE, &image, pp, params.toneCurve, params.raw);
|
||||
rtengine::Image8 output(fw, fh);
|
||||
rawImage.convertColorSpace(&image, params.icm, wb);
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for schedule(dynamic, 10)
|
||||
#endif
|
||||
for (int i = 0; i < fh; ++i)
|
||||
for (int j = 0; j < fw; ++j) {
|
||||
image.r(i, j) = Color::gamma2curve[image.r(i, j)];
|
||||
@ -139,7 +143,9 @@ PreviewImage::PreviewImage (const Glib::ustring &fname, const Glib::ustring &ext
|
||||
previewImage = Cairo::ImageSurface::create(Cairo::FORMAT_RGB24, w, h);
|
||||
previewImage->flush();
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
for (unsigned int i = 0; i < (unsigned int)(h); i++) {
|
||||
const unsigned char *src = data + i * w * 3;
|
||||
unsigned char *dst = previewImage->get_data() + i * w * 4;
|
||||
|
@ -70,10 +70,10 @@ enum ProcEventCode {
|
||||
EvToneCurveMode1 = 40,
|
||||
EvToneCurve2 = 41,
|
||||
EvToneCurveMode2 = 42,
|
||||
EvLDNRadius = 43, // obsolete
|
||||
EvLDNEdgeTolerance = 44, // obsolete
|
||||
EvCDNEnabled = 45, // obsolete
|
||||
EvBlendCMSMatrix = 46, // obsolete
|
||||
obsolete_43 = 43, // obsolete
|
||||
obsolete_44 = 44, // obsolete
|
||||
obsolete_45 = 45, // obsolete
|
||||
obsolete_46 = 46, // obsolete
|
||||
EvDCPToneCurve = 47,
|
||||
EvDCPIlluminant = 48,
|
||||
EvSHEnabled = 49,
|
||||
@ -93,7 +93,7 @@ enum ProcEventCode {
|
||||
EvCrop = 63,
|
||||
EvCACorr = 64,
|
||||
EvHREnabled = 65,
|
||||
EvHRAmount = 66, //obsolete
|
||||
obsolete_66 = 66, //obsolete
|
||||
EvHRMethod = 67,
|
||||
EvWProfile = 68,
|
||||
EvOProfile = 69,
|
||||
@ -138,7 +138,7 @@ enum ProcEventCode {
|
||||
EvResizeBoundingBox = 108,
|
||||
EvResizeAppliesTo = 109,
|
||||
EvLAvoidColorShift = 110,
|
||||
EvLSatLimiter = 111, // obsolete
|
||||
obsolete_111 = 111, // obsolete
|
||||
EvLRSTProtection = 112,
|
||||
EvDemosaicDCBIter = 113,
|
||||
EvDemosaicFalseColorIter = 114,
|
||||
@ -151,7 +151,7 @@ enum ProcEventCode {
|
||||
EvPreProcessAutoDF = 121,
|
||||
EvPreProcessDFFile = 122,
|
||||
EvPreProcessExpCorrLinear = 123,
|
||||
EvPreProcessExpCorrPH = 124,
|
||||
obsolete_124 = 124, // obsolete
|
||||
EvFlatFieldFile = 125,
|
||||
EvFlatFieldAutoSelect = 126,
|
||||
EvFlatFieldBlurRadius = 127,
|
||||
|
@ -2665,7 +2665,6 @@ RAWParams::RAWParams() :
|
||||
cared(0.0),
|
||||
cablue(0.0),
|
||||
expos(1.0),
|
||||
preser(0.0),
|
||||
hotPixelFilter(false),
|
||||
deadPixelFilter(false),
|
||||
hotdeadpix_thresh(100)
|
||||
@ -2691,7 +2690,6 @@ bool RAWParams::operator ==(const RAWParams& other) const
|
||||
&& cared == other.cared
|
||||
&& cablue == other.cablue
|
||||
&& expos == other.expos
|
||||
&& preser == other.preser
|
||||
&& hotPixelFilter == other.hotPixelFilter
|
||||
&& deadPixelFilter == other.deadPixelFilter
|
||||
&& hotdeadpix_thresh == other.hotdeadpix_thresh;
|
||||
@ -3561,7 +3559,6 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
|
||||
// Raw exposition
|
||||
saveToKeyfile(!pedited || pedited->raw.exPos, "RAW", "PreExposure", raw.expos, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->raw.exPreser, "RAW", "PrePreserv", raw.preser, keyFile);
|
||||
|
||||
// MetaData
|
||||
saveToKeyfile(!pedited || pedited->metadata.mode, "MetaData", "Mode", metadata.mode, keyFile);
|
||||
@ -4991,7 +4988,6 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "RAW", "DeadPixelFilter", pedited, raw.deadPixelFilter, pedited->raw.deadPixelFilter);
|
||||
assignFromKeyfile(keyFile, "RAW", "HotDeadPixelThresh", pedited, raw.hotdeadpix_thresh, pedited->raw.hotdeadpix_thresh);
|
||||
assignFromKeyfile(keyFile, "RAW", "PreExposure", pedited, raw.expos, pedited->raw.exPos);
|
||||
assignFromKeyfile(keyFile, "RAW", "PrePreserv", pedited, raw.preser, pedited->raw.exPreser);
|
||||
|
||||
if (ppVersion < 320) {
|
||||
assignFromKeyfile(keyFile, "RAW", "Method", pedited, raw.bayersensor.method, pedited->raw.bayersensor.method);
|
||||
|
@ -1411,7 +1411,6 @@ struct RAWParams {
|
||||
|
||||
// exposure before interpolation
|
||||
double expos;
|
||||
double preser;
|
||||
|
||||
bool hotPixelFilter;
|
||||
bool deadPixelFilter;
|
||||
|
@ -127,7 +127,9 @@ void RawImage::get_colorsCoeff( float *pre_mul_, float *scale_mul_, float *cblac
|
||||
dsum[FC(1, 0) + 4] += (int)(((W + 1) / 2) * (H / 2));
|
||||
dsum[FC(1, 1) + 4] += (int)((W / 2) * (H / 2));
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel private(val)
|
||||
#endif
|
||||
{
|
||||
double dsumthr[8];
|
||||
memset(dsumthr, 0, sizeof dsumthr);
|
||||
@ -142,7 +144,9 @@ void RawImage::get_colorsCoeff( float *pre_mul_, float *scale_mul_, float *cblac
|
||||
}
|
||||
|
||||
float *tempdata = data[0];
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for nowait
|
||||
#endif
|
||||
|
||||
for (size_t row = 0; row < H; row += 8) {
|
||||
size_t ymax = row + 8 < H ? row + 8 : H;
|
||||
@ -176,7 +180,9 @@ skip_block2:
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical
|
||||
#endif
|
||||
{
|
||||
for (int c = 0; c < 4; c++) {
|
||||
dsum[c] += dsumthr[c];
|
||||
@ -194,7 +200,9 @@ skip_block2:
|
||||
}
|
||||
|
||||
} else if(isXtrans()) {
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
double dsumthr[8];
|
||||
memset(dsumthr, 0, sizeof dsumthr);
|
||||
@ -209,7 +217,9 @@ skip_block2:
|
||||
whitefloat[c] = this->get_white(c) - whiteThreshold;
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for nowait
|
||||
#endif
|
||||
|
||||
for (size_t row = 0; row < H; row += 8)
|
||||
for (size_t col = 0; col < W ; col += 8)
|
||||
@ -239,7 +249,9 @@ skip_block3:
|
||||
;
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical
|
||||
#endif
|
||||
{
|
||||
for (int c = 0; c < 8; c++)
|
||||
{
|
||||
@ -716,7 +728,9 @@ float** RawImage::compress_image(unsigned int frameNum, bool freeImage)
|
||||
|
||||
// copy pixel raw data: the compressed format earns space
|
||||
if( float_raw_image ) {
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int row = 0; row < height; row++)
|
||||
for (int col = 0; col < width; col++) {
|
||||
@ -726,21 +740,27 @@ float** RawImage::compress_image(unsigned int frameNum, bool freeImage)
|
||||
delete [] float_raw_image;
|
||||
float_raw_image = nullptr;
|
||||
} else if (filters != 0 && !isXtrans()) {
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int row = 0; row < height; row++)
|
||||
for (int col = 0; col < width; col++) {
|
||||
this->data[row][col] = image[row * width + col][FC(row, col)];
|
||||
}
|
||||
} else if (isXtrans()) {
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int row = 0; row < height; row++)
|
||||
for (int col = 0; col < width; col++) {
|
||||
this->data[row][col] = image[row * width + col][XTRANSFC(row, col)];
|
||||
}
|
||||
} else if (colors == 1) {
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int row = 0; row < height; row++)
|
||||
for (int col = 0; col < width; col++) {
|
||||
@ -751,7 +771,9 @@ float** RawImage::compress_image(unsigned int frameNum, bool freeImage)
|
||||
height -= top_margin;
|
||||
width -= left_margin;
|
||||
}
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int row = 0; row < height; row++)
|
||||
for (int col = 0; col < width; col++) {
|
||||
|
@ -428,7 +428,6 @@ RawImageSource::RawImageSource ()
|
||||
, plistener(nullptr)
|
||||
, scale_mul{}
|
||||
, c_black{}
|
||||
, c_white{}
|
||||
, cblacksom{}
|
||||
, ref_pre_mul{}
|
||||
, refwb_red(0.0)
|
||||
@ -637,6 +636,11 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima
|
||||
|
||||
bool isMono = (ri->getSensorType() == ST_FUJI_XTRANS && raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::MONO))
|
||||
|| (ri->getSensorType() == ST_BAYER && raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::MONO));
|
||||
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
c_white[i] = (ri->get_white(i) - cblacksom[i]) / raw.expos + cblacksom[i];
|
||||
}
|
||||
|
||||
float gain = calculate_scale_mul(new_scale_mul, new_pre_mul, c_white, cblacksom, isMono, ri->get_colors());
|
||||
rm = new_scale_mul[0] / scale_mul[0] * gain;
|
||||
gm = new_scale_mul[1] / scale_mul[1] * gain;
|
||||
@ -1616,10 +1620,6 @@ int RawImageSource::load (const Glib::ustring &fname, bool firstFrameOnly)
|
||||
camProfile = ICCStore::getInstance()->createFromMatrix (imatrices.xyz_cam, false, "Camera");
|
||||
inverse33 (imatrices.xyz_cam, imatrices.cam_xyz);
|
||||
|
||||
for (int c = 0; c < 4; c++) {
|
||||
c_white[c] = ri->get_white(c);
|
||||
}
|
||||
|
||||
// First we get the "as shot" ("Camera") white balance and store it
|
||||
float pre_mul[4];
|
||||
// FIXME: get_colorsCoeff not so much used nowadays, when we have calculate_scale_mul() function here
|
||||
@ -1793,6 +1793,19 @@ void RawImageSource::preprocess (const RAWParams &raw, const LensProfParams &le
|
||||
copyOriginalPixels(raw, riFrames[i], rid, rif, *rawDataFrames[i]);
|
||||
}
|
||||
}
|
||||
} else if (numFrames == 2 && currFrame == 2) { // average the frames
|
||||
if(!rawDataBuffer[0]) {
|
||||
rawDataBuffer[0] = new array2D<float>;
|
||||
}
|
||||
rawDataFrames[1] = rawDataBuffer[0];
|
||||
copyOriginalPixels(raw, riFrames[1], rid, rif, *rawDataFrames[1]);
|
||||
copyOriginalPixels(raw, ri, rid, rif, rawData);
|
||||
|
||||
for (int i = 0; i < H; ++i) {
|
||||
for (int j = 0; j < W; ++j) {
|
||||
rawData[i][j] = (rawData[i][j] + (*rawDataFrames[1])[i][j]) * 0.5f;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
copyOriginalPixels(raw, ri, rid, rif, rawData);
|
||||
}
|
||||
@ -2028,16 +2041,6 @@ void RawImageSource::preprocess (const RAWParams &raw, const LensProfParams &le
|
||||
}
|
||||
}
|
||||
|
||||
if ( raw.expos != 1 ) {
|
||||
if(numFrames == 4) {
|
||||
for(int i = 0; i < 4; ++i) {
|
||||
processRawWhitepoint(raw.expos, raw.preser, *rawDataFrames[i]);
|
||||
}
|
||||
} else {
|
||||
processRawWhitepoint(raw.expos, raw.preser, rawData);
|
||||
}
|
||||
}
|
||||
|
||||
if(prepareDenoise && dirpyrdenoiseExpComp == INFINITY) {
|
||||
LUTu aehist;
|
||||
int aehistcompr;
|
||||
@ -3407,7 +3410,9 @@ void RawImageSource::cfaboxblur(RawImage *riFlatFile, float* cfablur, int boxH,
|
||||
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp single
|
||||
#endif
|
||||
|
||||
for (int col = W - (W % 8); col < W; col++) {
|
||||
int len = boxH / 2 + 1;
|
||||
@ -3517,6 +3522,10 @@ void RawImageSource::scaleColors(int winx, int winy, int winw, int winh, const R
|
||||
cblacksom[i] = max( c_black[i] + black_lev[i], 0.0f ); // adjust black level
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
c_white[i] = (ri->get_white(i) - cblacksom[i]) / raw.expos + cblacksom[i];
|
||||
}
|
||||
|
||||
initialGain = calculate_scale_mul(scale_mul, ref_pre_mul, c_white, cblacksom, isMono, ri->get_colors()); // recalculate scale colors with adjusted levels
|
||||
|
||||
//fprintf(stderr, "recalc: %f [%f %f %f %f]\n", initialGain, scale_mul[0], scale_mul[1], scale_mul[2], scale_mul[3]);
|
||||
@ -4721,13 +4730,13 @@ void RawImageSource::getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LU
|
||||
histGreenRaw.clear();
|
||||
histBlueRaw.clear();
|
||||
|
||||
const float maxWhite = rtengine::max(ri->get_white(0), ri->get_white(1), ri->get_white(2), ri->get_white(3));
|
||||
const float maxWhite = rtengine::max(c_white[0], c_white[1], c_white[2], c_white[3]);
|
||||
const float scale = maxWhite <= 1.f ? 65535.f : 1.f; // special case for float raw images in [0.0;1.0] range
|
||||
const float multScale = maxWhite <= 1.f ? 1.f / 255.f : 255.f;
|
||||
const float mult[4] = { multScale / (ri->get_white(0) - cblacksom[0]),
|
||||
multScale / (ri->get_white(1) - cblacksom[1]),
|
||||
multScale / (ri->get_white(2) - cblacksom[2]),
|
||||
multScale / (ri->get_white(3) - cblacksom[3])
|
||||
const float mult[4] = { multScale / (c_white[0] - cblacksom[0]),
|
||||
multScale / (c_white[1] - cblacksom[1]),
|
||||
multScale / (c_white[2] - cblacksom[2]),
|
||||
multScale / (c_white[3] - cblacksom[3])
|
||||
};
|
||||
|
||||
const bool fourColours = ri->getSensorType() == ST_BAYER && ((mult[1] != mult[3] || cblacksom[1] != cblacksom[3]) || FC(0, 0) == 3 || FC(0, 1) == 3 || FC(1, 0) == 3 || FC(1, 1) == 3);
|
||||
|
@ -93,9 +93,6 @@ protected:
|
||||
std::vector<double> histMatchingCache;
|
||||
ColorManagementParams histMatchingParams;
|
||||
|
||||
void hphd_vertical (float** hpmap, int col_from, int col_to);
|
||||
void hphd_horizontal (float** hpmap, int row_from, int row_to);
|
||||
void hphd_green (float** hpmap);
|
||||
void processFalseColorCorrectionThread (Imagefloat* im, array2D<float> &rbconv_Y, array2D<float> &rbconv_I, array2D<float> &rbconv_Q, array2D<float> &rbout_I, array2D<float> &rbout_Q, const int row_from, const int row_to);
|
||||
void hlRecovery (const std::string &method, float* red, float* green, float* blue, int width, float* hlmax);
|
||||
void transformRect (const PreviewProps &pp, int tran, int &sx1, int &sy1, int &width, int &height, int &fw);
|
||||
@ -204,9 +201,14 @@ public:
|
||||
static void init ();
|
||||
static void cleanup ();
|
||||
void setCurrentFrame(unsigned int frameNum) override {
|
||||
if (numFrames == 2 && frameNum == 2) { // special case for averaging of two frames
|
||||
currFrame = frameNum;
|
||||
ri = riFrames[0];
|
||||
} else {
|
||||
currFrame = std::min(numFrames - 1, frameNum);
|
||||
ri = riFrames[currFrame];
|
||||
}
|
||||
}
|
||||
int getFrameCount() override {return numFrames;}
|
||||
int getFlatFieldAutoClipValue() override {return flatFieldAutoClipValue;}
|
||||
|
||||
@ -250,7 +252,6 @@ protected:
|
||||
bool freeBuffer
|
||||
);
|
||||
void ddct8x8s(int isgn, float a[8][8]);
|
||||
void processRawWhitepoint (float expos, float preser, array2D<float> &rawData); // exposure before interpolation
|
||||
|
||||
int interpolateBadPixelsBayer( PixelsMap &bitmapBads, array2D<float> &rawData );
|
||||
int interpolateBadPixelsNColours( PixelsMap &bitmapBads, const int colours );
|
||||
|
@ -151,7 +151,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
||||
DARKFRAME, // EvPreProcessAutoDF
|
||||
DARKFRAME, // EvPreProcessDFFile
|
||||
DARKFRAME, // EvPreProcessExpCorrLinear
|
||||
DARKFRAME, // EvPreProcessExpCorrPH
|
||||
0, // --unused--
|
||||
FLATFIELD, // EvFlatFieldFile,
|
||||
FLATFIELD, // EvFlatFieldAutoSelect,
|
||||
FLATFIELD, // EvFlatFieldBlurRadius,
|
||||
|
@ -30,7 +30,7 @@ namespace rtengine
|
||||
|
||||
extern const Settings* settings;
|
||||
|
||||
SHMap::SHMap (int w, int h, bool multiThread) : max_f(0.f), min_f(0.f), avg(0.f), W(w), H(h), multiThread(multiThread)
|
||||
SHMap::SHMap (int w, int h) : max_f(0.f), min_f(0.f), avg(0.f), W(w), H(h)
|
||||
{
|
||||
|
||||
map = new float*[H];
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
float** map;
|
||||
float max_f, min_f, avg;
|
||||
|
||||
SHMap (int w, int h, bool multiThread);
|
||||
SHMap (int w, int h);
|
||||
~SHMap ();
|
||||
|
||||
void update (Imagefloat* img, double radius, double lumi[3], bool hq, int skip);
|
||||
@ -43,7 +43,6 @@ public:
|
||||
|
||||
private:
|
||||
int W, H;
|
||||
bool multiThread;
|
||||
|
||||
void fillLuminance( Imagefloat * img, float **luminance, double lumi[3] );
|
||||
void fillLuminanceL( float ** L, float **luminance );
|
||||
|
@ -335,13 +335,17 @@ private:
|
||||
LUTf gamcurve (65536, 0);
|
||||
float gam, gamthresh, gamslope;
|
||||
ipf.RGB_denoise_infoGamCurve (params.dirpyrDenoise, imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope);
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
Imagefloat *origCropPart;//init auto noise
|
||||
origCropPart = new Imagefloat (crW, crH);//allocate memory
|
||||
Imagefloat *provicalc = new Imagefloat ((crW + 1) / 2, (crH + 1) / 2); //for denoise curves
|
||||
int skipP = 1;
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic) collapse(2) nowait
|
||||
#endif
|
||||
|
||||
for (int wcr = 0; wcr < numtiles_W; wcr++) {
|
||||
for (int hcr = 0; hcr < numtiles_H; hcr++) {
|
||||
@ -557,13 +561,17 @@ private:
|
||||
coordH[0] = begH;
|
||||
coordH[1] = fh / 2 - crH / 2;
|
||||
coordH[2] = fh - crH - begH;
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
Imagefloat *origCropPart;//init auto noise
|
||||
origCropPart = new Imagefloat (crW, crH);//allocate memory
|
||||
Imagefloat *provicalc = new Imagefloat ((crW + 1) / 2, (crH + 1) / 2); //for denoise curves
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic) collapse(2) nowait
|
||||
#endif
|
||||
|
||||
for (int wcr = 0; wcr <= 2; wcr++) {
|
||||
for (int hcr = 0; hcr <= 2; hcr++) {
|
||||
@ -807,7 +815,9 @@ private:
|
||||
if (denoiseParams.enabled && (noiseLCurve || noiseCCurve )) {
|
||||
// we only need image reduced to 1/4 here
|
||||
calclum = new Imagefloat ((fw + 1) / 2, (fh + 1) / 2); //for luminance denoise curve
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int ii = 0; ii < fh; ii += 2) {
|
||||
for (int jj = 0; jj < fw; jj += 2) {
|
||||
@ -1031,7 +1041,9 @@ private:
|
||||
hist16thr[ (int) ((labView->L[i][j]))]++;
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical
|
||||
#endif
|
||||
{
|
||||
hist16 += hist16thr;
|
||||
}
|
||||
|
@ -338,5 +338,10 @@ ColorTemp StdImageSource::getSpotWB (std::vector<Coord2D> &red, std::vector<Coor
|
||||
return ColorTemp (reds / rn * img_r, greens / gn * img_g, blues / bn * img_b, equal);
|
||||
}
|
||||
|
||||
void StdImageSource::flushRGB() {
|
||||
img->allocate(0, 0);
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -101,6 +101,7 @@ public:
|
||||
|
||||
void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) override { R = G = B = 0;}
|
||||
|
||||
void flushRGB () override;
|
||||
|
||||
};
|
||||
}
|
||||
|
@ -187,7 +187,9 @@ void gaussianBlur (const Array2Df& I, Array2Df& L, bool multithread)
|
||||
Array2Df T (width, height);
|
||||
|
||||
//--- X blur
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for shared(I, T) if(multithread)
|
||||
#endif
|
||||
|
||||
for ( int y = 0 ; y < height ; y++ ) {
|
||||
for ( int x = 1 ; x < width - 1 ; x++ ) {
|
||||
@ -202,7 +204,9 @@ void gaussianBlur (const Array2Df& I, Array2Df& L, bool multithread)
|
||||
}
|
||||
|
||||
//--- Y blur
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for if(multithread)
|
||||
#endif
|
||||
|
||||
for ( int x = 0 ; x < width - 7 ; x += 8 ) {
|
||||
for ( int y = 1 ; y < height - 1 ; y++ ) {
|
||||
@ -279,7 +283,9 @@ float calculateGradients (Array2Df* H, Array2Df* G, int k, bool multithread)
|
||||
const float divider = pow ( 2.0f, k + 1 );
|
||||
double avgGrad = 0.0; // use double precision for large summations
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for reduction(+:avgGrad) if(multithread)
|
||||
#endif
|
||||
|
||||
for ( int y = 0 ; y < height ; y++ ) {
|
||||
int n = (y == 0 ? 0 : y - 1);
|
||||
@ -354,7 +360,9 @@ void calculateFiMatrix (Array2Df* FI, Array2Df* gradients[],
|
||||
|
||||
fi[nlevels - 1] = new Array2Df (width, height);
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for shared(fi) if(multithread)
|
||||
#endif
|
||||
for ( int k = 0 ; k < width * height ; k++ ) {
|
||||
(*fi[nlevels - 1]) (k) = 1.0f;
|
||||
}
|
||||
@ -366,7 +374,9 @@ void calculateFiMatrix (Array2Df* FI, Array2Df* gradients[],
|
||||
// only apply gradients to levels>=detail_level but at least to the coarsest
|
||||
if ((k >= detail_level || k == nlevels - 1) && beta != 1.f) {
|
||||
//DEBUG_STR << "calculateFiMatrix: apply gradient to level " << k << endl;
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for shared(fi,avgGrad) if(multithread)
|
||||
#endif
|
||||
for ( int y = 0; y < height; y++ ) {
|
||||
for ( int x = 0; x < width; x++ ) {
|
||||
float grad = ((*gradients[k]) (x, y) < 1e-4f) ? 1e-4 : (*gradients[k]) (x, y);
|
||||
@ -455,7 +465,9 @@ void tmo_fattal02 (size_t width,
|
||||
// float minLum = Y (0, 0);
|
||||
float maxLum = Y (0, 0);
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for reduction(max:maxLum) if(multithread)
|
||||
#endif
|
||||
|
||||
for ( int i = 0 ; i < size ; i++ ) {
|
||||
maxLum = std::max (maxLum, Y (i));
|
||||
@ -464,13 +476,17 @@ void tmo_fattal02 (size_t width,
|
||||
Array2Df* H = new Array2Df (width, height);
|
||||
float temp = 100.f / maxLum;
|
||||
float eps = 1e-4f;
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel if(multithread)
|
||||
#endif
|
||||
{
|
||||
#ifdef __SSE2__
|
||||
vfloat epsv = F2V (eps);
|
||||
vfloat tempv = F2V (temp);
|
||||
#endif
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic,16)
|
||||
#endif
|
||||
|
||||
for (size_t i = 0 ; i < height ; ++i) {
|
||||
size_t j = 0;
|
||||
@ -573,7 +589,9 @@ void tmo_fattal02 (size_t width,
|
||||
// boundary conditions, so we need to adjust the assembly of the right hand
|
||||
// side accordingly (basically fft solver assumes U(-1) = U(1), whereas zero
|
||||
// Neumann conditions assume U(-1)=U(0)), see also divergence calculation
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for if(multithread)
|
||||
#endif
|
||||
|
||||
for ( size_t y = 0 ; y < height ; y++ ) {
|
||||
// sets index+1 based on the boundary assumption H(N+1)=H(N-1)
|
||||
@ -591,7 +609,9 @@ void tmo_fattal02 (size_t width,
|
||||
delete H;
|
||||
|
||||
// calculate divergence
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for if(multithread)
|
||||
#endif
|
||||
|
||||
for ( size_t y = 0; y < height; ++y ) {
|
||||
for ( size_t x = 0; x < width; ++x ) {
|
||||
@ -626,12 +646,16 @@ void tmo_fattal02 (size_t width,
|
||||
delete Gx;
|
||||
delete FI;
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel if(multithread)
|
||||
#endif
|
||||
{
|
||||
#ifdef __SSE2__
|
||||
vfloat gammav = F2V (gamma);
|
||||
#endif
|
||||
#ifdef _OPENMP
|
||||
#pragma omp for schedule(dynamic,16)
|
||||
#endif
|
||||
|
||||
for (size_t i = 0 ; i < height ; i++) {
|
||||
size_t j = 0;
|
||||
@ -706,7 +730,9 @@ void transform_ev2normal (Array2Df *A, Array2Df *T, bool multithread)
|
||||
|
||||
// the discrete cosine transform is not exactly the transform needed
|
||||
// need to scale input values to get the right transformation
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for if(multithread)
|
||||
#endif
|
||||
|
||||
for (int y = 1 ; y < height - 1 ; y++ )
|
||||
for (int x = 1 ; x < width - 1 ; x++ ) {
|
||||
@ -757,7 +783,9 @@ void transform_normal2ev (Array2Df *A, Array2Df *T, bool multithread)
|
||||
|
||||
// need to scale the output matrix to get the right transform
|
||||
float factor = (1.0f / ((height - 1) * (width - 1)));
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for if(multithread)
|
||||
#endif
|
||||
|
||||
for (int y = 0 ; y < height ; y++ )
|
||||
for (int x = 0 ; x < width ; x++ ) {
|
||||
@ -876,7 +904,9 @@ void solve_pde_fft (Array2Df *F, Array2Df *U, Array2Df *buf, bool multithread)/*
|
||||
std::vector<double> l1 = get_lambda (height);
|
||||
std::vector<double> l2 = get_lambda (width);
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for if(multithread)
|
||||
#endif
|
||||
|
||||
for (int y = 0 ; y < height ; y++ ) {
|
||||
for (int x = 0 ; x < width ; x++ ) {
|
||||
@ -896,13 +926,17 @@ void solve_pde_fft (Array2Df *F, Array2Df *U, Array2Df *buf, bool multithread)/*
|
||||
// (not really needed but good for numerics as we later take exp(U))
|
||||
//DEBUG_STR << "solve_pde_fft: removing constant from solution" << std::endl;
|
||||
float max = 0.f;
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for reduction(max:max) if(multithread)
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < width * height; i++) {
|
||||
max = std::max (max, (*U) (i));
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for if(multithread)
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < width * height; i++) {
|
||||
(*U) (i) -= max;
|
||||
|
@ -78,7 +78,7 @@ public:
|
||||
};
|
||||
CAApertureInterpreter caApertureInterpreter;
|
||||
|
||||
class CAMacroModeInterpreter : public ChoiceInterpreter
|
||||
class CAMacroModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAMacroModeInterpreter()
|
||||
@ -107,7 +107,7 @@ public:
|
||||
};
|
||||
CASelfTimerInterpreter caSelfTimerInterpreter;
|
||||
|
||||
class CAQualityInterpreter : public ChoiceInterpreter
|
||||
class CAQualityInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAQualityInterpreter()
|
||||
@ -121,7 +121,7 @@ public:
|
||||
};
|
||||
CAQualityInterpreter caQualityInterpreter;
|
||||
|
||||
class CAFlashModeInterpreter : public ChoiceInterpreter
|
||||
class CAFlashModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAFlashModeInterpreter()
|
||||
@ -138,7 +138,7 @@ public:
|
||||
};
|
||||
CAFlashModeInterpreter caFlashModeInterpreter;
|
||||
|
||||
class CAContinuousDriveInterpreter : public ChoiceInterpreter
|
||||
class CAContinuousDriveInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAContinuousDriveInterpreter()
|
||||
@ -156,7 +156,7 @@ public:
|
||||
};
|
||||
CAContinuousDriveInterpreter caContinuousDriveInterpreter;
|
||||
|
||||
class CAFocusModeInterpreter : public ChoiceInterpreter
|
||||
class CAFocusModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAFocusModeInterpreter()
|
||||
@ -176,7 +176,7 @@ public:
|
||||
};
|
||||
CAFocusModeInterpreter caFocusModeInterpreter;
|
||||
|
||||
class CARecordModeInterpreter : public ChoiceInterpreter
|
||||
class CARecordModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CARecordModeInterpreter()
|
||||
@ -194,7 +194,7 @@ public:
|
||||
};
|
||||
CARecordModeInterpreter caRecordModeInterpreter;
|
||||
|
||||
class CAImageSizeInterpreter : public ChoiceInterpreter
|
||||
class CAImageSizeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAImageSizeInterpreter ()
|
||||
@ -220,7 +220,7 @@ public:
|
||||
};
|
||||
CAImageSizeInterpreter caImageSizeInterpreter;
|
||||
|
||||
class CAEasyModeInterpreter : public ChoiceInterpreter
|
||||
class CAEasyModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAEasyModeInterpreter ()
|
||||
@ -300,7 +300,7 @@ public:
|
||||
};
|
||||
CAEasyModeInterpreter caEasyModeInterpreter;
|
||||
|
||||
class CADigitalZoomInterpreter : public ChoiceInterpreter
|
||||
class CADigitalZoomInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CADigitalZoomInterpreter()
|
||||
@ -313,7 +313,7 @@ public:
|
||||
};
|
||||
CADigitalZoomInterpreter caDigitalZoomInterpreter;
|
||||
|
||||
class CAMeteringModeInterpreter : public ChoiceInterpreter
|
||||
class CAMeteringModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAMeteringModeInterpreter()
|
||||
@ -328,7 +328,7 @@ public:
|
||||
};
|
||||
CAMeteringModeInterpreter caMeteringModeInterpreter;
|
||||
|
||||
class CAFocusRangeInterpreter : public ChoiceInterpreter
|
||||
class CAFocusRangeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAFocusRangeInterpreter()
|
||||
@ -348,7 +348,7 @@ public:
|
||||
};
|
||||
CAFocusRangeInterpreter caFocusRangeInterpreter;
|
||||
|
||||
class CAAFPointInterpreter : public ChoiceInterpreter
|
||||
class CAAFPointInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAAFPointInterpreter()
|
||||
@ -365,7 +365,7 @@ public:
|
||||
};
|
||||
CAAFPointInterpreter caAFPointInterpreter;
|
||||
|
||||
class CAExposureModeInterpreter : public ChoiceInterpreter
|
||||
class CAExposureModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAExposureModeInterpreter()
|
||||
@ -431,7 +431,7 @@ public:
|
||||
};
|
||||
CAFlashBitsInterpreter caFlashBitsInterpreter;
|
||||
|
||||
class CAFocusContinuousInterpreter : public ChoiceInterpreter
|
||||
class CAFocusContinuousInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAFocusContinuousInterpreter()
|
||||
@ -443,7 +443,7 @@ public:
|
||||
};
|
||||
CAFocusContinuousInterpreter caFocusContinuousInterpreter;
|
||||
|
||||
class CAAESettingsInterpreter : public ChoiceInterpreter
|
||||
class CAAESettingsInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAAESettingsInterpreter()
|
||||
@ -457,7 +457,7 @@ public:
|
||||
};
|
||||
CAAESettingsInterpreter caAESettingsInterpreter;
|
||||
|
||||
class CAStabilizationInterpreter : public ChoiceInterpreter
|
||||
class CAStabilizationInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAStabilizationInterpreter()
|
||||
@ -476,7 +476,7 @@ public:
|
||||
};
|
||||
CAStabilizationInterpreter caStabilizationInterpreter;
|
||||
|
||||
class CASpotMeteringInterpreter : public ChoiceInterpreter
|
||||
class CASpotMeteringInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CASpotMeteringInterpreter()
|
||||
@ -487,7 +487,7 @@ public:
|
||||
};
|
||||
CASpotMeteringInterpreter caSpotMeteringInterpreter;
|
||||
|
||||
class CAPhotoEffectInterpreter : public ChoiceInterpreter
|
||||
class CAPhotoEffectInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAPhotoEffectInterpreter()
|
||||
@ -504,7 +504,7 @@ public:
|
||||
};
|
||||
CAPhotoEffectInterpreter caPhotoEffectInterpreter;
|
||||
|
||||
class CAManualFlashInterpreter : public ChoiceInterpreter
|
||||
class CAManualFlashInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAManualFlashInterpreter()
|
||||
@ -518,7 +518,7 @@ public:
|
||||
};
|
||||
CAManualFlashInterpreter caManualFlashInterpreter;
|
||||
|
||||
class CARAWQualityInterpreter : public ChoiceInterpreter
|
||||
class CARAWQualityInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CARAWQualityInterpreter()
|
||||
@ -900,7 +900,8 @@ public:
|
||||
{495, "Sigma 24-70mm F2.8 DG OS HSM | A"},
|
||||
{496, "Canon EF 200-400mm f/4L IS USM"},
|
||||
{499, "Canon EF 200-400mm f/4L IS USM + 1.4x"},
|
||||
{502, "Canon EF 28mm f/2.8 IS USM"},
|
||||
{502, "Canon EF 28mm f/2.8 IS USM or Tamron Lens"},
|
||||
{502, "Tamron 35mm f/1.8 Di VC USD (F012)"},
|
||||
{503, "Canon EF 24mm f/2.8 IS USM"},
|
||||
{504, "Canon EF 24-70mm f/4L IS USM"},
|
||||
{505, "Canon EF 35mm f/2 IS USM"},
|
||||
@ -1093,7 +1094,7 @@ public:
|
||||
};
|
||||
CALensInterpreter caLensInterpreter;
|
||||
|
||||
class CAFocalTypeInterpreter : public ChoiceInterpreter
|
||||
class CAFocalTypeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAFocalTypeInterpreter()
|
||||
@ -1182,7 +1183,7 @@ public:
|
||||
};
|
||||
CABaseISOInterpreter caBaseISOInterpreter;
|
||||
|
||||
class CAToneCurveInterpreter : public ChoiceInterpreter
|
||||
class CAToneCurveInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAToneCurveInterpreter()
|
||||
@ -1194,7 +1195,7 @@ public:
|
||||
};
|
||||
CAToneCurveInterpreter caToneCurveInterpreter;
|
||||
|
||||
class CASharpnessFrequencyInterpreter : public ChoiceInterpreter
|
||||
class CASharpnessFrequencyInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CASharpnessFrequencyInterpreter()
|
||||
@ -1209,7 +1210,7 @@ public:
|
||||
};
|
||||
CASharpnessFrequencyInterpreter caSharpnessFrequencyInterpreter;
|
||||
|
||||
class CAWhiteBalanceInterpreter : public ChoiceInterpreter
|
||||
class CAWhiteBalanceInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAWhiteBalanceInterpreter()
|
||||
@ -1240,7 +1241,7 @@ public:
|
||||
};
|
||||
CAWhiteBalanceInterpreter caWhiteBalanceInterpreter;
|
||||
|
||||
class CAPictureStyleInterpreter : public ChoiceInterpreter
|
||||
class CAPictureStyleInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAPictureStyleInterpreter()
|
||||
@ -1271,7 +1272,7 @@ public:
|
||||
};
|
||||
CAPictureStyleInterpreter caPictureStyleInterpreter;
|
||||
|
||||
class CASlowShutterInterpreter : public ChoiceInterpreter
|
||||
class CASlowShutterInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CASlowShutterInterpreter()
|
||||
@ -1302,7 +1303,7 @@ public:
|
||||
};
|
||||
CAFlashGuideNumberInterpreter caFlashGuideNumberInterpreter;
|
||||
|
||||
class CAAFPointsInFocusInterpreter : public ChoiceInterpreter
|
||||
class CAAFPointsInFocusInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAAFPointsInFocusInterpreter()
|
||||
@ -1319,7 +1320,7 @@ public:
|
||||
};
|
||||
CAAFPointsInFocusInterpreter caAFPointsInFocusInterpreter;
|
||||
|
||||
class CAAutoExposureBracketingInterpreter : public ChoiceInterpreter
|
||||
class CAAutoExposureBracketingInterpreter : public ChoiceInterpreter<int>
|
||||
{
|
||||
public:
|
||||
CAAutoExposureBracketingInterpreter()
|
||||
@ -1333,7 +1334,7 @@ public:
|
||||
};
|
||||
CAAutoExposureBracketingInterpreter caAutoExposureBracketingInterpreter;
|
||||
|
||||
class CAControModeInterpreter : public ChoiceInterpreter
|
||||
class CAControModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAControModeInterpreter()
|
||||
@ -1369,7 +1370,7 @@ public:
|
||||
};
|
||||
CAMeasuredEVInterpreter caMeasuredEVInterpreter;
|
||||
|
||||
class CACameraTypeInterpreter : public ChoiceInterpreter
|
||||
class CACameraTypeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CACameraTypeInterpreter()
|
||||
@ -1382,7 +1383,7 @@ public:
|
||||
};
|
||||
CACameraTypeInterpreter caCameraTypeInterpreter;
|
||||
|
||||
class CAAutoRotateInterpreter : public ChoiceInterpreter
|
||||
class CAAutoRotateInterpreter : public ChoiceInterpreter<int>
|
||||
{
|
||||
public:
|
||||
CAAutoRotateInterpreter()
|
||||
@ -1396,7 +1397,7 @@ public:
|
||||
};
|
||||
CAAutoRotateInterpreter caAutoRotateInterpreter;
|
||||
|
||||
class CABracketModeInterpreter : public ChoiceInterpreter
|
||||
class CABracketModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CABracketModeInterpreter()
|
||||
@ -1410,7 +1411,7 @@ public:
|
||||
};
|
||||
CABracketModeInterpreter caBracketModeInterpreter;
|
||||
|
||||
class CARAWJpegQualityInterpreter : public ChoiceInterpreter
|
||||
class CARAWJpegQualityInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CARAWJpegQualityInterpreter()
|
||||
@ -1426,7 +1427,7 @@ public:
|
||||
};
|
||||
CARAWJpegQualityInterpreter caRAWJpegQualityInterpreter;
|
||||
|
||||
class CAJpegSizeInterpreter : public ChoiceInterpreter
|
||||
class CAJpegSizeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAJpegSizeInterpreter()
|
||||
@ -1452,7 +1453,7 @@ public:
|
||||
};
|
||||
CAJpegSizeInterpreter caJpegSizeInterpreter;
|
||||
|
||||
class CAWBBracketModeInterpreter : public ChoiceInterpreter
|
||||
class CAWBBracketModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAWBBracketModeInterpreter()
|
||||
@ -1464,7 +1465,7 @@ public:
|
||||
};
|
||||
CAWBBracketModeInterpreter caWBBracketModeInterpreter;
|
||||
|
||||
class CAFilterEffectInterpreter : public ChoiceInterpreter
|
||||
class CAFilterEffectInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAFilterEffectInterpreter()
|
||||
@ -1478,7 +1479,7 @@ public:
|
||||
};
|
||||
CAFilterEffectInterpreter caFilterEffectInterpreter;
|
||||
|
||||
class CAToningEffectInterpreter : public ChoiceInterpreter
|
||||
class CAToningEffectInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAToningEffectInterpreter()
|
||||
@ -1506,7 +1507,7 @@ public:
|
||||
CAFileNumberInterpreter caFileNumberInterpreter;
|
||||
|
||||
// CanonModelID
|
||||
class CAModelIDInterpreter : public ChoiceInterpreter
|
||||
class CAModelIDInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAModelIDInterpreter ()
|
||||
@ -1842,7 +1843,7 @@ public:
|
||||
};
|
||||
CAModelIDInterpreter caModelIDInterpreter;
|
||||
|
||||
class CAPanoramaDirectionInterpreter : public ChoiceInterpreter
|
||||
class CAPanoramaDirectionInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAPanoramaDirectionInterpreter()
|
||||
@ -1856,7 +1857,7 @@ public:
|
||||
};
|
||||
CAPanoramaDirectionInterpreter caPanoramaDirectionInterpreter;
|
||||
|
||||
class CAAspectRatioInterpreter : public ChoiceInterpreter
|
||||
class CAAspectRatioInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
CAAspectRatioInterpreter()
|
||||
|
@ -24,7 +24,7 @@
|
||||
namespace rtexif
|
||||
{
|
||||
|
||||
class FAOnOffInterpreter : public ChoiceInterpreter
|
||||
class FAOnOffInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
FAOnOffInterpreter ()
|
||||
@ -35,7 +35,7 @@ public:
|
||||
};
|
||||
FAOnOffInterpreter faOnOffInterpreter;
|
||||
|
||||
class FASharpnessInterpreter : public ChoiceInterpreter
|
||||
class FASharpnessInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
FASharpnessInterpreter ()
|
||||
@ -53,7 +53,7 @@ public:
|
||||
};
|
||||
FASharpnessInterpreter faSharpnessInterpreter;
|
||||
|
||||
class FAWhiteBalanceInterpreter : public ChoiceInterpreter
|
||||
class FAWhiteBalanceInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
FAWhiteBalanceInterpreter ()
|
||||
@ -79,7 +79,7 @@ public:
|
||||
};
|
||||
FAWhiteBalanceInterpreter faWhiteBalanceInterpreter;
|
||||
|
||||
class FASaturationInterpreter : public ChoiceInterpreter
|
||||
class FASaturationInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
FASaturationInterpreter ()
|
||||
@ -104,7 +104,7 @@ public:
|
||||
};
|
||||
FASaturationInterpreter faSaturationInterpreter;
|
||||
|
||||
class FAContrastInterpreter : public ChoiceInterpreter
|
||||
class FAContrastInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
FAContrastInterpreter ()
|
||||
@ -119,7 +119,7 @@ public:
|
||||
};
|
||||
FAContrastInterpreter faContrastInterpreter;
|
||||
|
||||
class FAContrast2Interpreter : public ChoiceInterpreter
|
||||
class FAContrast2Interpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
FAContrast2Interpreter ()
|
||||
@ -131,7 +131,7 @@ public:
|
||||
};
|
||||
FAContrast2Interpreter faContrast2Interpreter;
|
||||
|
||||
class FANoiseReductionInterpreter : public ChoiceInterpreter
|
||||
class FANoiseReductionInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
FANoiseReductionInterpreter ()
|
||||
@ -143,7 +143,7 @@ public:
|
||||
};
|
||||
FANoiseReductionInterpreter faNoiseReductionInterpreter;
|
||||
|
||||
class FAFlashInterpreter : public ChoiceInterpreter
|
||||
class FAFlashInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
// FujiFlashMode
|
||||
@ -158,7 +158,7 @@ public:
|
||||
};
|
||||
FAFlashInterpreter faFlashInterpreter;
|
||||
|
||||
class FAFocusModeInterpreter : public ChoiceInterpreter
|
||||
class FAFocusModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
FAFocusModeInterpreter ()
|
||||
@ -169,7 +169,7 @@ public:
|
||||
};
|
||||
FAFocusModeInterpreter faFocusModeInterpreter;
|
||||
|
||||
class FAColorModeInterpreter : public ChoiceInterpreter
|
||||
class FAColorModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
FAColorModeInterpreter ()
|
||||
@ -181,7 +181,7 @@ public:
|
||||
};
|
||||
FAColorModeInterpreter faColorModeInterpreter;
|
||||
|
||||
class FADynamicRangeInterpreter : public ChoiceInterpreter
|
||||
class FADynamicRangeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
FADynamicRangeInterpreter ()
|
||||
@ -192,7 +192,7 @@ public:
|
||||
};
|
||||
FADynamicRangeInterpreter faDynamicRangeInterpreter;
|
||||
|
||||
class FAFilmModeInterpreter : public ChoiceInterpreter
|
||||
class FAFilmModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
FAFilmModeInterpreter ()
|
||||
@ -212,7 +212,7 @@ public:
|
||||
};
|
||||
FAFilmModeInterpreter faFilmModeInterpreter;
|
||||
|
||||
class FADRSettingInterpreter : public ChoiceInterpreter
|
||||
class FADRSettingInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
// DynamicRangeSetting
|
||||
@ -228,7 +228,7 @@ public:
|
||||
};
|
||||
FADRSettingInterpreter faDRSettingInterpreter;
|
||||
|
||||
class FAPictureModeInterpreter : public ChoiceInterpreter
|
||||
class FAPictureModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
FAPictureModeInterpreter ()
|
||||
|
@ -155,7 +155,7 @@ public:
|
||||
};
|
||||
NALensTypeInterpreter naLensTypeInterpreter;
|
||||
|
||||
class NAFlashModeInterpreter : public ChoiceInterpreter
|
||||
class NAFlashModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
NAFlashModeInterpreter ()
|
||||
@ -170,7 +170,7 @@ public:
|
||||
};
|
||||
NAFlashModeInterpreter naFlashModeInterpreter;
|
||||
|
||||
class NAHiISONRInterpreter : public ChoiceInterpreter
|
||||
class NAHiISONRInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
// HighISONoiseReduction
|
||||
@ -999,6 +999,7 @@ const std::map<std::string, std::string> NALensDataInterpreter::lenses = {
|
||||
{"A1 40 18 37 2C 34 A3 06", "AF-S DX Nikkor 10-24mm f/3.5-4.5G ED"},
|
||||
{"A1 41 19 31 2C 2C 4B 06", "Sigma 10-20mm f/3.5 EX DC HSM"},
|
||||
{"A1 54 55 55 0C 0C BC 06", "AF-S Nikkor 58mm f/1.4G"},
|
||||
{"A2 38 5C 8E 34 40 CD 86", "AF-P DX Nikkor 70-300mm f/4.5-6.3G VR"},
|
||||
{"A2 40 2D 53 2C 3C BD 0E", "AF-S DX Nikkor 18-55mm f/3.5-5.6G VR II"},
|
||||
{"A2 48 5C 80 24 24 A4 0E", "AF-S Nikkor 70-200mm f/2.8G ED VR II"},
|
||||
{"A3 38 5C 8E 34 40 CE 0E", "AF-P DX Nikkor 70-300mm f/4.5-6.3G ED"},
|
||||
@ -1075,11 +1076,13 @@ const std::map<std::string, std::string> NALensDataInterpreter::lenses = {
|
||||
{"C8 54 62 62 0C 0C 4B 46", "Sigma 85mm f/1.4 DG HSM | A"},
|
||||
{"C9 48 37 5C 24 24 4B 4E", "Sigma 24-70mm f/2.8 DG OS HSM | A"},
|
||||
{"CA 48 27 3E 24 24 DF 4E", "Tamron SP 15-30mm f/2.8 Di VC USD G2 (A041)"},
|
||||
{"CB 3C 2B 44 24 31 DF 46", "Tamron 17-35mm f/2.8-4 Di OSD (A037)"},
|
||||
{"CC 4C 50 68 14 14 4B 06", "Sigma 50-100mm f/1.8 DC HSM | A"},
|
||||
{"CD 3D 2D 70 2E 3C 4B 0E", "Sigma 18-125mm f/3.8-5.6 DC OS HSM"},
|
||||
{"CE 34 76 A0 38 40 4B 0E", "Sigma 150-500mm f/5-6.3 DG OS APO HSM"},
|
||||
{"CE 47 37 5C 25 25 DF 4E", "Tamron SP 24-70mm f/2.8 Di VC USD G2 (A032)"},
|
||||
{"CF 38 6E 98 34 3C 4B 0E", "Sigma APO 120-400mm f/4.5-5.6 DG OS HSM"},
|
||||
{"CF 47 5C 8E 31 3D DF 0E", "Tamron SP 70-300mm f/4-5.6 Di VC USD (A030)"},
|
||||
{"DC 48 19 19 24 24 4B 06", "Sigma 10mm f/2.8 EX DC HSM Fisheye"},
|
||||
{"DE 54 50 50 0C 0C 4B 06", "Sigma 50mm f/1.4 EX DG HSM"},
|
||||
{"E0 3C 5C 8E 30 3C 4B 06", "Sigma 70-300mm f/4-5.6 APO DG Macro HSM"},
|
||||
|
@ -214,7 +214,7 @@ public:
|
||||
};
|
||||
OLLensTypeInterpreter olLensTypeInterpreter;
|
||||
|
||||
class OLFlashTypeInterpreter : public ChoiceInterpreter
|
||||
class OLFlashTypeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OLFlashTypeInterpreter ()
|
||||
@ -226,7 +226,7 @@ public:
|
||||
};
|
||||
OLFlashTypeInterpreter olFlashTypeInterpreter;
|
||||
|
||||
class OLExposureModeInterpreter : public ChoiceInterpreter
|
||||
class OLExposureModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OLExposureModeInterpreter ()
|
||||
@ -240,7 +240,7 @@ public:
|
||||
};
|
||||
OLExposureModeInterpreter olExposureModeInterpreter;
|
||||
|
||||
class OLMeteringModeInterpreter : public ChoiceInterpreter
|
||||
class OLMeteringModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OLMeteringModeInterpreter ()
|
||||
@ -255,7 +255,7 @@ public:
|
||||
};
|
||||
OLMeteringModeInterpreter olMeteringModeInterpreter;
|
||||
|
||||
class OLFocusModeInterpreter : public ChoiceInterpreter
|
||||
class OLFocusModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OLFocusModeInterpreter ()
|
||||
@ -270,7 +270,7 @@ public:
|
||||
};
|
||||
OLFocusModeInterpreter olFocusModeInterpreter;
|
||||
|
||||
class OLWhitebalance2Interpreter : public ChoiceInterpreter
|
||||
class OLWhitebalance2Interpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OLWhitebalance2Interpreter ()
|
||||
@ -302,7 +302,7 @@ public:
|
||||
};
|
||||
OLWhitebalance2Interpreter olWhitebalance2Interpreter;
|
||||
|
||||
class OLSceneModeInterpreter : public ChoiceInterpreter
|
||||
class OLSceneModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OLSceneModeInterpreter ()
|
||||
@ -368,7 +368,7 @@ public:
|
||||
};
|
||||
OLSceneModeInterpreter olSceneModeInterpreter;
|
||||
|
||||
class OLPictureModeBWFilterInterpreter : public ChoiceInterpreter
|
||||
class OLPictureModeBWFilterInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OLPictureModeBWFilterInterpreter ()
|
||||
@ -383,7 +383,7 @@ public:
|
||||
};
|
||||
OLPictureModeBWFilterInterpreter olPictureModeBWFilterInterpreter;
|
||||
|
||||
class OLPictureModeToneInterpreter : public ChoiceInterpreter
|
||||
class OLPictureModeToneInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OLPictureModeToneInterpreter ()
|
||||
@ -398,7 +398,7 @@ public:
|
||||
};
|
||||
OLPictureModeToneInterpreter olPictureModeToneInterpreter;
|
||||
|
||||
class OLImageQuality2Interpreter : public ChoiceInterpreter
|
||||
class OLImageQuality2Interpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OLImageQuality2Interpreter ()
|
||||
@ -412,7 +412,7 @@ public:
|
||||
};
|
||||
OLImageQuality2Interpreter olImageQuality2Interpreter;
|
||||
|
||||
class OLDevEngineInterpreter : public ChoiceInterpreter
|
||||
class OLDevEngineInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
// RawDevEngine
|
||||
@ -426,7 +426,7 @@ public:
|
||||
};
|
||||
OLDevEngineInterpreter olDevEngineInterpreter;
|
||||
|
||||
class OLPictureModeInterpreter : public ChoiceInterpreter
|
||||
class OLPictureModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OLPictureModeInterpreter ()
|
||||
@ -449,7 +449,7 @@ public:
|
||||
};
|
||||
OLPictureModeInterpreter olPictureModeInterpreter;
|
||||
|
||||
class OLColorSpaceInterpreter : public ChoiceInterpreter
|
||||
class OLColorSpaceInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OLColorSpaceInterpreter ()
|
||||
@ -522,7 +522,7 @@ public:
|
||||
};
|
||||
OLNoiseReductionInterpreter olNoiseReductionInterpreter;
|
||||
|
||||
class OLFlashModelInterpreter : public ChoiceInterpreter
|
||||
class OLFlashModelInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OLFlashModelInterpreter ()
|
||||
|
@ -31,7 +31,7 @@ namespace rtexif
|
||||
{
|
||||
|
||||
|
||||
class PAQualityInterpreter : public ChoiceInterpreter
|
||||
class PAQualityInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAQualityInterpreter ()
|
||||
@ -50,7 +50,7 @@ public:
|
||||
};
|
||||
PAQualityInterpreter paQualityInterpreter;
|
||||
|
||||
class PAOnOffInterpreter : public ChoiceInterpreter
|
||||
class PAOnOffInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAOnOffInterpreter ()
|
||||
@ -61,7 +61,7 @@ public:
|
||||
};
|
||||
PAOnOffInterpreter paOnOffInterpreter;
|
||||
|
||||
class PAShakeReductionInterpreter : public ChoiceInterpreter
|
||||
class PAShakeReductionInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAShakeReductionInterpreter ()
|
||||
@ -80,7 +80,7 @@ public:
|
||||
};
|
||||
PAShakeReductionInterpreter paShakeReductionInterpreter;
|
||||
|
||||
class PAShakeReduction2Interpreter : public ChoiceInterpreter
|
||||
class PAShakeReduction2Interpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
// ShakeReduction
|
||||
@ -100,7 +100,7 @@ public:
|
||||
};
|
||||
PAShakeReduction2Interpreter paShakeReduction2Interpreter;
|
||||
|
||||
class PAPictureModeInterpreter : public ChoiceInterpreter
|
||||
class PAPictureModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAPictureModeInterpreter ()
|
||||
@ -164,7 +164,7 @@ public:
|
||||
};
|
||||
PAPictureModeInterpreter paPictureModeInterpreter;
|
||||
|
||||
class PASceneModeInterpreter : public ChoiceInterpreter
|
||||
class PASceneModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PASceneModeInterpreter ()
|
||||
@ -196,7 +196,7 @@ public:
|
||||
};
|
||||
PASceneModeInterpreter paSceneModeInterpreter;
|
||||
|
||||
class PAAEProgramModeInterpreter : public ChoiceInterpreter
|
||||
class PAAEProgramModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAAEProgramModeInterpreter ()
|
||||
@ -235,7 +235,7 @@ public:
|
||||
};
|
||||
PAAEProgramModeInterpreter paAEProgramModeInterpreter;
|
||||
|
||||
class PAFlashModeInterpreter : public ChoiceInterpreter
|
||||
class PAFlashModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAFlashModeInterpreter ()
|
||||
@ -259,7 +259,7 @@ public:
|
||||
};
|
||||
PAFlashModeInterpreter paFlashModeInterpreter;
|
||||
|
||||
class PAFocusModeInterpreter : public ChoiceInterpreter
|
||||
class PAFocusModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAFocusModeInterpreter ()
|
||||
@ -283,7 +283,7 @@ public:
|
||||
};
|
||||
PAFocusModeInterpreter paFocusModeInterpreter;
|
||||
|
||||
class PAAFPointInterpreter : public ChoiceInterpreter
|
||||
class PAAFPointInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
// AFPointSelected
|
||||
@ -310,7 +310,7 @@ public:
|
||||
};
|
||||
PAAFPointInterpreter paAFPointInterpreter;
|
||||
|
||||
class PAAFFocusInterpreter : public ChoiceInterpreter
|
||||
class PAAFFocusInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
// AFPointsInFocus
|
||||
@ -331,7 +331,7 @@ public:
|
||||
};
|
||||
PAAFFocusInterpreter paAFFocusInterpreter;
|
||||
|
||||
class PAISOInterpreter : public ChoiceInterpreter
|
||||
class PAISOInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAISOInterpreter ()
|
||||
@ -430,7 +430,7 @@ public:
|
||||
};
|
||||
PAFNumberInterpreter paFNumberInterpreter;
|
||||
|
||||
class PAMeteringModeInterpreter : public ChoiceInterpreter
|
||||
class PAMeteringModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAMeteringModeInterpreter ()
|
||||
@ -442,7 +442,7 @@ public:
|
||||
};
|
||||
PAMeteringModeInterpreter paMeteringModeInterpreter;
|
||||
|
||||
class PAWhiteBalanceInterpreter : public ChoiceInterpreter
|
||||
class PAWhiteBalanceInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAWhiteBalanceInterpreter ()
|
||||
@ -468,7 +468,7 @@ public:
|
||||
};
|
||||
PAWhiteBalanceInterpreter paWhiteBalanceInterpreter;
|
||||
|
||||
class PAWhiteBalanceModeInterpreter : public ChoiceInterpreter
|
||||
class PAWhiteBalanceModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAWhiteBalanceModeInterpreter ()
|
||||
@ -487,7 +487,7 @@ public:
|
||||
};
|
||||
PAWhiteBalanceModeInterpreter paWhiteBalanceModeInterpreter;
|
||||
|
||||
class PASaturationInterpreter : public ChoiceInterpreter
|
||||
class PASaturationInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PASaturationInterpreter ()
|
||||
@ -506,7 +506,7 @@ public:
|
||||
};
|
||||
PASaturationInterpreter paSaturationInterpreter;
|
||||
|
||||
class PAContrastInterpreter : public ChoiceInterpreter
|
||||
class PAContrastInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAContrastInterpreter ()
|
||||
@ -525,7 +525,7 @@ public:
|
||||
};
|
||||
PAContrastInterpreter paContrastInterpreter;
|
||||
|
||||
class PASharpnessInterpreter : public ChoiceInterpreter
|
||||
class PASharpnessInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PASharpnessInterpreter ()
|
||||
@ -543,7 +543,7 @@ public:
|
||||
};
|
||||
PASharpnessInterpreter paSharpnessInterpreter;
|
||||
|
||||
class PAPictureModeInterpreter2: public ChoiceInterpreter
|
||||
class PAPictureModeInterpreter2: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAPictureModeInterpreter2()
|
||||
@ -613,7 +613,7 @@ public:
|
||||
std::string toString (Tag* t) override
|
||||
{
|
||||
int c = 256 * t->toInt (0, BYTE) + t->toInt (1, BYTE);
|
||||
std::map<int, std::string>::iterator r = choices.find (c);
|
||||
const ChoicesIterator r = choices.find (c);
|
||||
|
||||
if (r != choices.end()) {
|
||||
std::ostringstream s;
|
||||
@ -635,7 +635,7 @@ public:
|
||||
};
|
||||
PAPictureModeInterpreter2 paPictureModeInterpreter2;
|
||||
|
||||
class PADriveModeInterpreter : public ChoiceInterpreter
|
||||
class PADriveModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
std::map<int, std::string> choices1;
|
||||
std::map<int, std::string> choices2;
|
||||
@ -671,7 +671,7 @@ public:
|
||||
}
|
||||
std::string toString (Tag* t) override
|
||||
{
|
||||
std::map<int, std::string>::iterator r = choices.find (t->toInt (0, BYTE));
|
||||
const ChoicesIterator r = choices.find (t->toInt (0, BYTE));
|
||||
std::map<int, std::string>::iterator r1 = choices1.find (t->toInt (1, BYTE));
|
||||
std::map<int, std::string>::iterator r2 = choices2.find (t->toInt (2, BYTE));
|
||||
std::map<int, std::string>::iterator r3 = choices3.find (t->toInt (3, BYTE));
|
||||
@ -685,7 +685,7 @@ public:
|
||||
};
|
||||
PADriveModeInterpreter paDriveModeInterpreter;
|
||||
|
||||
class PAColorSpaceInterpreter: public ChoiceInterpreter
|
||||
class PAColorSpaceInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAColorSpaceInterpreter()
|
||||
@ -1079,7 +1079,7 @@ public:
|
||||
};
|
||||
PASRResultInterpreter paSRResultInterpreter;
|
||||
|
||||
class PAHighISONoiseInterpreter: public ChoiceInterpreter
|
||||
class PAHighISONoiseInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
// HighISONoiseReduction
|
||||
@ -1095,7 +1095,7 @@ public:
|
||||
};
|
||||
PAHighISONoiseInterpreter paHighISONoiseInterpreter;
|
||||
|
||||
class PAMonochromeFilterEffectInterpreter: public ChoiceInterpreter
|
||||
class PAMonochromeFilterEffectInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAMonochromeFilterEffectInterpreter()
|
||||
@ -1113,7 +1113,7 @@ public:
|
||||
};
|
||||
PAMonochromeFilterEffectInterpreter paMonochromeFilterEffectInterpreter;
|
||||
|
||||
class PAMonochromeToningInterpreter: public ChoiceInterpreter
|
||||
class PAMonochromeToningInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAMonochromeToningInterpreter()
|
||||
@ -1132,7 +1132,7 @@ public:
|
||||
};
|
||||
PAMonochromeToningInterpreter paMonochromeToningInterpreter;
|
||||
|
||||
class PAShadowCorrectionInterpreter: public ChoiceInterpreter
|
||||
class PAShadowCorrectionInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAShadowCorrectionInterpreter()
|
||||
@ -1156,7 +1156,7 @@ public:
|
||||
idx = t->toInt (0, BYTE) << 8 | t->toInt (1, BYTE);
|
||||
}
|
||||
|
||||
std::map<int, std::string>::iterator r = choices.find (idx);
|
||||
const ChoicesIterator r = choices.find (idx);
|
||||
std::ostringstream s;
|
||||
s << ((r != choices.end()) ? r->second : "n/a");
|
||||
return s.str();
|
||||
@ -1164,7 +1164,7 @@ public:
|
||||
};
|
||||
PAShadowCorrectionInterpreter paShadowCorrectionInterpreter;
|
||||
|
||||
class PAISOAutoParametersInterpreter: public ChoiceInterpreter
|
||||
class PAISOAutoParametersInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAISOAutoParametersInterpreter()
|
||||
@ -1175,7 +1175,7 @@ public:
|
||||
}
|
||||
std::string toString (Tag* t) override
|
||||
{
|
||||
std::map<int, std::string>::iterator r = choices.find (t->toInt (0, BYTE));
|
||||
const ChoicesIterator r = choices.find (t->toInt (0, BYTE));
|
||||
std::ostringstream s;
|
||||
s << ((r != choices.end()) ? r->second : "n/a");
|
||||
return s.str();
|
||||
@ -1183,7 +1183,7 @@ public:
|
||||
};
|
||||
PAISOAutoParametersInterpreter paISOAutoParametersInterpreter;
|
||||
|
||||
class PABleachBypassToningInterpreter: public ChoiceInterpreter
|
||||
class PABleachBypassToningInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PABleachBypassToningInterpreter()
|
||||
@ -1201,7 +1201,7 @@ public:
|
||||
};
|
||||
PABleachBypassToningInterpreter paBleachBypassToningInterpreter;
|
||||
|
||||
class PABlurControlInterpreter: public ChoiceInterpreter
|
||||
class PABlurControlInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PABlurControlInterpreter()
|
||||
@ -1213,7 +1213,7 @@ public:
|
||||
}
|
||||
std::string toString (Tag* t) override
|
||||
{
|
||||
std::map<int, std::string>::iterator r = choices.find (t->toInt (0, BYTE));
|
||||
const ChoicesIterator r = choices.find (t->toInt (0, BYTE));
|
||||
std::ostringstream s;
|
||||
s << ((r != choices.end()) ? r->second : "n/a");
|
||||
return s.str();
|
||||
@ -1221,7 +1221,7 @@ public:
|
||||
};
|
||||
PABlurControlInterpreter paBlurControlInterpreter;
|
||||
|
||||
class PAHDRInterpreter: public ChoiceInterpreter
|
||||
class PAHDRInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
std::map<int, std::string> choices1;
|
||||
std::map<int, std::string> choices2;
|
||||
@ -1245,7 +1245,7 @@ public:
|
||||
}
|
||||
std::string toString (Tag* t) override
|
||||
{
|
||||
std::map<int, std::string>::iterator r = choices.find (t->toInt (0, BYTE));
|
||||
const ChoicesIterator r = choices.find (t->toInt (0, BYTE));
|
||||
std::map<int, std::string>::iterator r1 = choices1.find (t->toInt (1, BYTE));
|
||||
std::map<int, std::string>::iterator r2 = choices2.find (t->toInt (2, BYTE));
|
||||
std::ostringstream s;
|
||||
@ -1257,7 +1257,7 @@ public:
|
||||
};
|
||||
PAHDRInterpreter paHDRInterpreter;
|
||||
|
||||
class PACrossProcessInterpreter: public ChoiceInterpreter
|
||||
class PACrossProcessInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PACrossProcessInterpreter()
|
||||
@ -1274,7 +1274,7 @@ public:
|
||||
};
|
||||
PACrossProcessInterpreter paCrossProcessInterpreter;
|
||||
|
||||
class PAPowerSourceInterpreter: public ChoiceInterpreter
|
||||
class PAPowerSourceInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAPowerSourceInterpreter()
|
||||
@ -1592,7 +1592,7 @@ public:
|
||||
};
|
||||
PANominalMaxApertureInterpreter paNominalMaxApertureInterpreter;
|
||||
|
||||
class PAFlashStatusInterpreter: public ChoiceInterpreter
|
||||
class PAFlashStatusInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAFlashStatusInterpreter()
|
||||
@ -1608,7 +1608,7 @@ public:
|
||||
};
|
||||
PAFlashStatusInterpreter paFlashStatusInterpreter;
|
||||
|
||||
class PAInternalFlashModeInterpreter: public ChoiceInterpreter
|
||||
class PAInternalFlashModeInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAInternalFlashModeInterpreter()
|
||||
@ -1638,7 +1638,7 @@ public:
|
||||
};
|
||||
PAInternalFlashModeInterpreter paInternalFlashModeInterpreter;
|
||||
|
||||
class PAExternalFlashModeInterpreter: public ChoiceInterpreter
|
||||
class PAExternalFlashModeInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAExternalFlashModeInterpreter()
|
||||
@ -1658,7 +1658,7 @@ public:
|
||||
};
|
||||
PAExternalFlashModeInterpreter paExternalFlashModeInterpreter;
|
||||
|
||||
class PAExternalFlashExposureCompInterpreter: public ChoiceInterpreter
|
||||
class PAExternalFlashExposureCompInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAExternalFlashExposureCompInterpreter()
|
||||
@ -1678,7 +1678,7 @@ public:
|
||||
};
|
||||
PAExternalFlashExposureCompInterpreter paExternalFlashExposureCompInterpreter;
|
||||
|
||||
class PAExternalFlashBounceInterpreter: public ChoiceInterpreter
|
||||
class PAExternalFlashBounceInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAExternalFlashBounceInterpreter()
|
||||
@ -1761,7 +1761,7 @@ public:
|
||||
};
|
||||
PAApertureRingUseInterpreter paApertureRingUseInterpreter;
|
||||
|
||||
class PAFlashOptionInterpreter: public ChoiceInterpreter
|
||||
class PAFlashOptionInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAFlashOptionInterpreter()
|
||||
@ -1778,7 +1778,7 @@ public:
|
||||
}
|
||||
std::string toString (Tag* t) override
|
||||
{
|
||||
std::map<int, std::string>::iterator r = choices.find (t->toInt (0, BYTE) >> 4);
|
||||
const ChoicesIterator r = choices.find (t->toInt (0, BYTE) >> 4);
|
||||
|
||||
if (r != choices.end()) {
|
||||
return r->second;
|
||||
@ -1813,7 +1813,7 @@ public:
|
||||
};
|
||||
PAMeteringMode2Interpreter paMeteringMode2Interpreter;
|
||||
|
||||
class PAExposureBracketStepSizeInterpreter: public ChoiceInterpreter
|
||||
class PAExposureBracketStepSizeInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAExposureBracketStepSizeInterpreter()
|
||||
@ -1830,7 +1830,7 @@ public:
|
||||
};
|
||||
PAExposureBracketStepSizeInterpreter paExposureBracketStepSizeInterpreter;
|
||||
|
||||
class PAPictureMode2Interpreter: public ChoiceInterpreter
|
||||
class PAPictureMode2Interpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
PAPictureMode2Interpreter()
|
||||
|
@ -19,15 +19,16 @@
|
||||
#ifndef _MEXIF3_
|
||||
#define _MEXIF3_
|
||||
|
||||
#include <cstdio>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
#include <cstdlib>
|
||||
#include <cmath>
|
||||
#include <cstdint>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <iomanip>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <glibmm.h>
|
||||
|
||||
@ -482,22 +483,26 @@ public:
|
||||
};
|
||||
|
||||
extern Interpreter stdInterpreter;
|
||||
|
||||
template<typename T = std::uint32_t>
|
||||
class ChoiceInterpreter : public Interpreter
|
||||
{
|
||||
protected:
|
||||
std::map<int, std::string> choices;
|
||||
using Choices = std::map<T, std::string>;
|
||||
using ChoicesIterator = typename Choices::const_iterator;
|
||||
Choices choices;
|
||||
public:
|
||||
ChoiceInterpreter () {};
|
||||
std::string toString (Tag* t) override
|
||||
{
|
||||
std::map<int, std::string>::iterator r = choices.find (t->toInt());
|
||||
const typename std::map<T, std::string>::const_iterator r = choices.find(t->toInt());
|
||||
|
||||
if (r != choices.end()) {
|
||||
return r->second;
|
||||
} else {
|
||||
char buffer[1024];
|
||||
t->toString(buffer);
|
||||
return std::string (buffer);
|
||||
return buffer;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -25,7 +25,7 @@
|
||||
namespace rtexif
|
||||
{
|
||||
|
||||
class SANoYesInterpreter : public ChoiceInterpreter
|
||||
class SANoYesInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SANoYesInterpreter ()
|
||||
@ -36,7 +36,7 @@ public:
|
||||
};
|
||||
SANoYesInterpreter saNoYesInterpreter;
|
||||
|
||||
class SAOnOffInterpreter : public ChoiceInterpreter
|
||||
class SAOnOffInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAOnOffInterpreter ()
|
||||
@ -48,7 +48,7 @@ public:
|
||||
};
|
||||
SAOnOffInterpreter saOnOffInterpreter;
|
||||
|
||||
class SAOnOffInterpreter2 : public ChoiceInterpreter
|
||||
class SAOnOffInterpreter2 : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAOnOffInterpreter2 ()
|
||||
@ -59,7 +59,7 @@ public:
|
||||
};
|
||||
SAOnOffInterpreter2 saOnOffInterpreter2;
|
||||
|
||||
class SAOnOffInterpreter3 : public ChoiceInterpreter
|
||||
class SAOnOffInterpreter3 : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAOnOffInterpreter3 ()
|
||||
@ -71,7 +71,7 @@ public:
|
||||
};
|
||||
SAOnOffInterpreter3 saOnOffInterpreter3;
|
||||
|
||||
class SAOnOffInterpreter4 : public ChoiceInterpreter
|
||||
class SAOnOffInterpreter4 : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAOnOffInterpreter4 ()
|
||||
@ -84,7 +84,7 @@ public:
|
||||
};
|
||||
SAOnOffInterpreter4 saOnOffInterpreter4;
|
||||
|
||||
class SAOnOffInterpreter5 : public ChoiceInterpreter
|
||||
class SAOnOffInterpreter5 : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAOnOffInterpreter5 ()
|
||||
@ -95,7 +95,7 @@ public:
|
||||
};
|
||||
SAOnOffInterpreter5 saOnOffInterpreter5;
|
||||
|
||||
class SAHighISONoiseReduction : public ChoiceInterpreter
|
||||
class SAHighISONoiseReduction : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAHighISONoiseReduction ()
|
||||
@ -110,7 +110,7 @@ public:
|
||||
};
|
||||
SAHighISONoiseReduction saHighISONoiseReduction;
|
||||
|
||||
class SAHighISONoiseReduction2 : public ChoiceInterpreter
|
||||
class SAHighISONoiseReduction2 : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAHighISONoiseReduction2 ()
|
||||
@ -124,7 +124,7 @@ public:
|
||||
};
|
||||
SAHighISONoiseReduction2 saHighISONoiseReduction2;
|
||||
|
||||
class SAHighISONoiseReduction3 : public ChoiceInterpreter
|
||||
class SAHighISONoiseReduction3 : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAHighISONoiseReduction3 ()
|
||||
@ -137,7 +137,7 @@ public:
|
||||
};
|
||||
SAHighISONoiseReduction3 saHighISONoiseReduction3;
|
||||
|
||||
class SAHighISONoiseReduction4 : public ChoiceInterpreter
|
||||
class SAHighISONoiseReduction4 : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAHighISONoiseReduction4 ()
|
||||
@ -150,7 +150,7 @@ public:
|
||||
};
|
||||
SAHighISONoiseReduction4 saHighISONoiseReduction4;
|
||||
|
||||
class SAHighISONoiseReduction5 : public ChoiceInterpreter
|
||||
class SAHighISONoiseReduction5 : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAHighISONoiseReduction5 ()
|
||||
@ -161,7 +161,7 @@ public:
|
||||
};
|
||||
SAHighISONoiseReduction5 saHighISONoiseReduction5;
|
||||
|
||||
class SASmileShutterMode : public ChoiceInterpreter
|
||||
class SASmileShutterMode : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SASmileShutterMode ()
|
||||
@ -173,7 +173,7 @@ public:
|
||||
};
|
||||
SASmileShutterMode saSmileShutterMode;
|
||||
|
||||
class SAHDRLevel : public ChoiceInterpreter
|
||||
class SAHDRLevel : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAHDRLevel ()
|
||||
@ -191,7 +191,7 @@ public:
|
||||
};
|
||||
SAHDRLevel saHDRLevel;
|
||||
|
||||
class SAViewingMode : public ChoiceInterpreter
|
||||
class SAViewingMode : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAViewingMode ()
|
||||
@ -204,7 +204,7 @@ public:
|
||||
};
|
||||
SAViewingMode saViewingMode;
|
||||
|
||||
class SAFlashAction : public ChoiceInterpreter
|
||||
class SAFlashAction : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAFlashAction ()
|
||||
@ -215,7 +215,7 @@ public:
|
||||
};
|
||||
SAFlashAction saFlashAction;
|
||||
|
||||
class SALiveViewFocusMode : public ChoiceInterpreter
|
||||
class SALiveViewFocusMode : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SALiveViewFocusMode ()
|
||||
@ -227,7 +227,7 @@ public:
|
||||
};
|
||||
SALiveViewFocusMode saLiveViewFocusMode;
|
||||
|
||||
class SALensMount : public ChoiceInterpreter
|
||||
class SALensMount : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SALensMount ()
|
||||
@ -239,7 +239,7 @@ public:
|
||||
};
|
||||
SALensMount saLensMount;
|
||||
|
||||
class SASweepPanoramaSize : public ChoiceInterpreter
|
||||
class SASweepPanoramaSize : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SASweepPanoramaSize ()
|
||||
@ -250,7 +250,7 @@ public:
|
||||
};
|
||||
SASweepPanoramaSize saSweepPanoramaSize;
|
||||
|
||||
class SASweepPanoramaDirection : public ChoiceInterpreter
|
||||
class SASweepPanoramaDirection : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SASweepPanoramaDirection ()
|
||||
@ -263,7 +263,7 @@ public:
|
||||
};
|
||||
SASweepPanoramaDirection saSweepPanoramaDirection;
|
||||
|
||||
class SALiveViewAFSetting : public ChoiceInterpreter
|
||||
class SALiveViewAFSetting : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SALiveViewAFSetting ()
|
||||
@ -275,7 +275,7 @@ public:
|
||||
};
|
||||
SALiveViewAFSetting saLiveViewAFSetting;
|
||||
|
||||
class SAPanoramaSize3D : public ChoiceInterpreter
|
||||
class SAPanoramaSize3D : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAPanoramaSize3D ()
|
||||
@ -288,7 +288,7 @@ public:
|
||||
};
|
||||
SAPanoramaSize3D saPanoramaSize3D;
|
||||
|
||||
class SALiveViewMetering : public ChoiceInterpreter
|
||||
class SALiveViewMetering : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SALiveViewMetering ()
|
||||
@ -300,7 +300,7 @@ public:
|
||||
};
|
||||
SALiveViewMetering saLiveViewMetering;
|
||||
|
||||
class SAWhiteBalanceInterpreter: public ChoiceInterpreter
|
||||
class SAWhiteBalanceInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAWhiteBalanceInterpreter()
|
||||
@ -319,7 +319,7 @@ public:
|
||||
};
|
||||
SAWhiteBalanceInterpreter saWhiteBalanceInterpreter;
|
||||
|
||||
class SAWhiteBalanceSettingInterpreter: public ChoiceInterpreter
|
||||
class SAWhiteBalanceSettingInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAWhiteBalanceSettingInterpreter()
|
||||
@ -379,7 +379,7 @@ public:
|
||||
};
|
||||
SAWhiteBalanceSettingInterpreter saWhiteBalanceSettingInterpreter;
|
||||
|
||||
class SASceneModeInterpreter : public ChoiceInterpreter
|
||||
class SASceneModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SASceneModeInterpreter ()
|
||||
@ -413,7 +413,7 @@ public:
|
||||
};
|
||||
SASceneModeInterpreter saSceneModeInterpreter;
|
||||
|
||||
class SAZoneMatchingInterpreter : public ChoiceInterpreter
|
||||
class SAZoneMatchingInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAZoneMatchingInterpreter ()
|
||||
@ -425,7 +425,7 @@ public:
|
||||
};
|
||||
SAZoneMatchingInterpreter saZoneMatchingInterpreter;
|
||||
|
||||
class SADynamicRangeOptimizerInterpreter : public ChoiceInterpreter
|
||||
class SADynamicRangeOptimizerInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SADynamicRangeOptimizerInterpreter ()
|
||||
@ -448,7 +448,7 @@ public:
|
||||
};
|
||||
SADynamicRangeOptimizerInterpreter saDynamicRangeOptimizerInterpreter;
|
||||
|
||||
class SAColorModeInterpreter : public ChoiceInterpreter
|
||||
class SAColorModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAColorModeInterpreter ()
|
||||
@ -477,7 +477,7 @@ public:
|
||||
};
|
||||
SAColorModeInterpreter saColorModeInterpreter;
|
||||
|
||||
class SAExposureModeInterpreter : public ChoiceInterpreter
|
||||
class SAExposureModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAExposureModeInterpreter ()
|
||||
@ -517,7 +517,7 @@ public:
|
||||
};
|
||||
SAExposureModeInterpreter saExposureModeInterpreter;
|
||||
|
||||
class SAQualityInterpreter : public ChoiceInterpreter
|
||||
class SAQualityInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAQualityInterpreter ()
|
||||
@ -528,7 +528,7 @@ public:
|
||||
};
|
||||
SAQualityInterpreter saQualityInterpreter;
|
||||
|
||||
class SAAntiBlurInterpreter : public ChoiceInterpreter
|
||||
class SAAntiBlurInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAAntiBlurInterpreter ()
|
||||
@ -895,6 +895,9 @@ public:
|
||||
{6553, "Sigma 30mm f/1.4 DC DN | C"},
|
||||
{6553, "Sigma 85mm f/1.4 DG HSM | A"},
|
||||
{6553, "Sigma 16mm f/1.4 DC DN | C"},
|
||||
{6553, "Sigma 105mm f/1.4 DG HSM | A"},
|
||||
{6553, "Sigma 56mm f/1.4 DC DN | C"},
|
||||
{6553, "Sigma 70-200mm f/2.8 DG OS HSM | S"},
|
||||
{6553, "Sigma 70mm f/2.8 DG MACRO | A"},
|
||||
{6553, "Tamron 18-200mm f/3.5-6.3 Di III VC"},
|
||||
{6553, "Tamron 28-75mm f/2.8 Di III RXD"},
|
||||
@ -905,6 +908,7 @@ public:
|
||||
{6553, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"},
|
||||
{6553, "Voigtlander NOKTON 40mm f/1.2 Aspherical"},
|
||||
{6553, "Voigtlander NOKTON classic 35mm f/1.4"},
|
||||
{6553, "Voigtlander MACRO APO-LANTHAR 110mm f/2.5"},
|
||||
{6553, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"},
|
||||
{6553, "Zeiss Touit 12mm f/2.8"},
|
||||
{6553, "Zeiss Touit 32mm f/1.8"},
|
||||
@ -1116,6 +1120,9 @@ public:
|
||||
{65535, "Sigma 30mm f/1.4 DC DN | C"},
|
||||
{65535, "Sigma 85mm f/1.4 DG HSM | A"},
|
||||
{65535, "Sigma 16mm f/1.4 DC DN | C"},
|
||||
{65535, "Sigma 105mm f/1.4 DG HSM | A"},
|
||||
{65535, "Sigma 56mm f/1.4 DC DN | C"},
|
||||
{65535, "Sigma 70-200mm f/2.8 DG OS HSM | S"},
|
||||
{65535, "Sigma 70mm f/2.8 DG MACRO | A"},
|
||||
{65535, "Tamron 18-200mm f/3.5-6.3 Di III VC"},
|
||||
{65535, "Tamron 28-75mm f/2.8 Di III RXD"},
|
||||
@ -1126,6 +1133,7 @@ public:
|
||||
{65535, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"},
|
||||
{65535, "Voigtlander NOKTON 40mm f/1.2 Aspherical"},
|
||||
{65535, "Voigtlander NOKTON classic 35mm f/1.4"},
|
||||
{65535, "Voigtlander MACRO APO-LANTHAR 110mm f/2.5"},
|
||||
{65535, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"},
|
||||
{65535, "Zeiss Touit 12mm f/2.8"},
|
||||
{65535, "Zeiss Touit 32mm f/1.8"},
|
||||
@ -1146,7 +1154,7 @@ public:
|
||||
{65535, "Samyang 500mm Mirror f/8.0"},
|
||||
{65535, "Pentacon Auto 135mm f/2.8"},
|
||||
{65535, "Pentacon Auto 29mm f/2.8"},
|
||||
{65535, "Helios 44-2 58mm f/2.0"}
|
||||
{65535, "Helios 44-2 58mm f/2.0"},
|
||||
};
|
||||
}
|
||||
|
||||
@ -1269,13 +1277,13 @@ public:
|
||||
choices.insert (p_t (49236, "Zeiss Loxia 25mm f/2.4"));
|
||||
choices.insert (p_t (49457, "Tamron 28-75mm f/2.8 Di III RXD"));
|
||||
choices.insert (p_t (50480, "Sigma 30mm f/1.4 DC DN | C"));
|
||||
choices.insert (p_t (50481, "Sigma 50mm f/1.4 DG HSM | A + MC-11"));
|
||||
choices.insert (p_t (50481, "Sigma 50mm f/1.4 DG HSM | A"));
|
||||
choices.insert (p_t (50482, "Sigma 18-300mm f/3.5-6.3 DC MACRO OS HSM | C + MC-11"));
|
||||
choices.insert (p_t (50483, "Sigma 18-35mm f/1.8 DC HSM | A + MC-11"));
|
||||
choices.insert (p_t (50484, "Sigma 24-35mm f/2 DG HSM | A + MC-11"));
|
||||
choices.insert (p_t (50486, "Sigma 150-600mm f/5-6.3 DG OS HSM | C + MC-11"));
|
||||
choices.insert (p_t (50487, "Sigma 20mm f/1.4 DG HSM | A + MC-11"));
|
||||
choices.insert (p_t (50488, "Sigma 35mm f/1.4 DG HSM | A + MC-11"));
|
||||
choices.insert (p_t (50488, "Sigma 35mm f/1.4 DG HSM | A"));
|
||||
choices.insert (p_t (50489, "Sigma 150-600mm f/5-6.3 DG OS HSM | S + MC-11"));
|
||||
choices.insert (p_t (50490, "Sigma 120-300mm f/2.8 DG OS HSM | S + MC-11"));
|
||||
choices.insert (p_t (50492, "Sigma 24-105mm f/4 DG OS HSM | A + MC-11"));
|
||||
@ -1284,6 +1292,9 @@ public:
|
||||
choices.insert (p_t (50499, "Sigma 85mm f/1.4 DG HSM | A"));
|
||||
choices.insert (p_t (50501, "Sigma 100-400mm f/5-6.3 DG OS HSM | C + MC-11"));
|
||||
choices.insert (p_t (50503, "Sigma 16mm f/1.4 DC DN | C"));
|
||||
choices.insert (p_t (50507, "Sigma 105mm f/1.4 DG HSM | A"));
|
||||
choices.insert (p_t (50508, "Sigma 56mm f/1.4 DC DN | C"));
|
||||
choices.insert (p_t (50512, "Sigma 70-200mm f/2.8 DG OS HSM | S"));
|
||||
choices.insert (p_t (50513, "Sigma 70mm f/2.8 DG MACRO | A"));
|
||||
choices.insert (p_t (50992, "Voigtlander SUPER WIDE-HELIAR 15mm f/4.5 III"));
|
||||
choices.insert (p_t (50993, "Voigtlander HELIAR-HYPER WIDE 10mm f/5.6"));
|
||||
@ -1291,6 +1302,7 @@ public:
|
||||
choices.insert (p_t (50995, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"));
|
||||
choices.insert (p_t (50996, "Voigtlander NOKTON 40mm f/1.2 Aspherical"));
|
||||
choices.insert (p_t (50997, "Voigtlander NOKTON classic 35mm f/1.4"));
|
||||
choices.insert (p_t (50998, "Voigtlander MACRO APO-LANTHAR 110mm f/2.5"));
|
||||
choices.insert (p_t (50999, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"));
|
||||
choices.insert (p_t (51505, "Samyang AF 14mm f/2.8 FE or Samyang AF 35mm f/2.8 FE"));
|
||||
choices.insert (p_t (51505, "Samyang AF 35mm f/2.8 FE"));
|
||||
@ -1331,7 +1343,7 @@ public:
|
||||
};
|
||||
SALensID2Interpreter saLensID2Interpreter;
|
||||
|
||||
class MATeleconverterInterpreter : public ChoiceInterpreter
|
||||
class MATeleconverterInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
MATeleconverterInterpreter ()
|
||||
@ -1349,7 +1361,7 @@ public:
|
||||
};
|
||||
MATeleconverterInterpreter maTeleconverterInterpreter;
|
||||
|
||||
class MAQualityInterpreter : public ChoiceInterpreter
|
||||
class MAQualityInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
MAQualityInterpreter ()
|
||||
@ -1367,7 +1379,7 @@ public:
|
||||
};
|
||||
MAQualityInterpreter maQualityInterpreter;
|
||||
|
||||
class MAImageSizeInterpreter : public ChoiceInterpreter
|
||||
class MAImageSizeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
MAImageSizeInterpreter ()
|
||||
@ -1382,7 +1394,7 @@ public:
|
||||
};
|
||||
MAImageSizeInterpreter maImageSizeInterpreter;
|
||||
|
||||
class SAQualityInterpreter2 : public ChoiceInterpreter
|
||||
class SAQualityInterpreter2 : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAQualityInterpreter2 ()
|
||||
@ -1398,7 +1410,7 @@ public:
|
||||
};
|
||||
SAQualityInterpreter2 saQualityInterpreter2;
|
||||
|
||||
class SAQualityInterpreter3 : public ChoiceInterpreter
|
||||
class SAQualityInterpreter3 : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAQualityInterpreter3 ()
|
||||
@ -1411,7 +1423,7 @@ public:
|
||||
};
|
||||
SAQualityInterpreter3 saQualityInterpreter3;
|
||||
|
||||
class SADriveMode : public ChoiceInterpreter
|
||||
class SADriveMode : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SADriveMode ()
|
||||
@ -1433,7 +1445,7 @@ public:
|
||||
};
|
||||
SADriveMode saDriveMode;
|
||||
|
||||
class SADriveMode2 : public ChoiceInterpreter
|
||||
class SADriveMode2 : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SADriveMode2 ()
|
||||
@ -1449,7 +1461,7 @@ public:
|
||||
};
|
||||
SADriveMode2 saDriveMode2;
|
||||
|
||||
class SADriveMode3 : public ChoiceInterpreter
|
||||
class SADriveMode3 : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SADriveMode3 ()
|
||||
@ -1475,7 +1487,7 @@ public:
|
||||
};
|
||||
SADriveMode3 saDriveMode3;
|
||||
|
||||
class SAFocusMode: public ChoiceInterpreter
|
||||
class SAFocusMode: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAFocusMode ()
|
||||
@ -1490,7 +1502,7 @@ public:
|
||||
};
|
||||
SAFocusMode saFocusMode;
|
||||
|
||||
class SAFocusMode2: public ChoiceInterpreter
|
||||
class SAFocusMode2: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAFocusMode2 ()
|
||||
@ -1504,7 +1516,7 @@ public:
|
||||
};
|
||||
SAFocusMode2 saFocusMode2;
|
||||
|
||||
class SAFocusModeSetting3: public ChoiceInterpreter
|
||||
class SAFocusModeSetting3: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAFocusModeSetting3 ()
|
||||
@ -1519,7 +1531,7 @@ public:
|
||||
};
|
||||
SAFocusModeSetting3 saFocusModeSetting3;
|
||||
|
||||
class SAAFMode: public ChoiceInterpreter
|
||||
class SAAFMode: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAAFMode()
|
||||
@ -1537,7 +1549,7 @@ public:
|
||||
};
|
||||
SAAFMode saAFMode;
|
||||
|
||||
class SAAFAreaMode: public ChoiceInterpreter
|
||||
class SAAFAreaMode: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAAFAreaMode ()
|
||||
@ -1549,7 +1561,7 @@ public:
|
||||
};
|
||||
SAAFAreaMode saAFAreaMode;
|
||||
|
||||
class SAAFAreaMode2: public ChoiceInterpreter
|
||||
class SAAFAreaMode2: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAAFAreaMode2 ()
|
||||
@ -1562,7 +1574,7 @@ public:
|
||||
};
|
||||
SAAFAreaMode2 saAFAreaMode2;
|
||||
|
||||
class SAAFPointSelected: public ChoiceInterpreter
|
||||
class SAAFPointSelected: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAAFPointSelected ()
|
||||
@ -1582,7 +1594,7 @@ public:
|
||||
};
|
||||
SAAFPointSelected saAFPointSelected;
|
||||
|
||||
class SACameraInfoAFPointSelected: public ChoiceInterpreter
|
||||
class SACameraInfoAFPointSelected: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SACameraInfoAFPointSelected ()
|
||||
@ -1607,7 +1619,7 @@ public:
|
||||
};
|
||||
SACameraInfoAFPointSelected saCameraInfoAFPointSelected;
|
||||
|
||||
class SACameraInfoAFPoint: public ChoiceInterpreter
|
||||
class SACameraInfoAFPoint: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SACameraInfoAFPoint ()
|
||||
@ -1635,7 +1647,7 @@ public:
|
||||
};
|
||||
SACameraInfoAFPoint saCameraInfoAFPoint;
|
||||
|
||||
class SAAFPointSelected2: public ChoiceInterpreter
|
||||
class SAAFPointSelected2: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAAFPointSelected2 ()
|
||||
@ -1653,7 +1665,7 @@ public:
|
||||
};
|
||||
SAAFPointSelected2 saAFPointSelected2;
|
||||
|
||||
class SAMeteringMode0_3: public ChoiceInterpreter
|
||||
class SAMeteringMode0_3: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAMeteringMode0_3 ()
|
||||
@ -1665,7 +1677,7 @@ public:
|
||||
};
|
||||
SAMeteringMode0_3 saMeteringMode0_3;
|
||||
|
||||
class SAMeteringMode1_3: public ChoiceInterpreter
|
||||
class SAMeteringMode1_3: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAMeteringMode1_3 ()
|
||||
@ -1677,7 +1689,7 @@ public:
|
||||
};
|
||||
SAMeteringMode1_3 saMeteringMode1_3;
|
||||
|
||||
class SAMeteringMode1_4: public ChoiceInterpreter
|
||||
class SAMeteringMode1_4: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAMeteringMode1_4 ()
|
||||
@ -1689,7 +1701,7 @@ public:
|
||||
};
|
||||
SAMeteringMode1_4 saMeteringMode1_4;
|
||||
|
||||
class SADynamicRangeOptimizerMode: public ChoiceInterpreter
|
||||
class SADynamicRangeOptimizerMode: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SADynamicRangeOptimizerMode ()
|
||||
@ -1703,7 +1715,7 @@ public:
|
||||
};
|
||||
SADynamicRangeOptimizerMode saDynamicRangeOptimizerMode;
|
||||
|
||||
class SADynamicRangeOptimizerSetting: public ChoiceInterpreter
|
||||
class SADynamicRangeOptimizerSetting: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SADynamicRangeOptimizerSetting ()
|
||||
@ -1715,7 +1727,7 @@ public:
|
||||
};
|
||||
SADynamicRangeOptimizerSetting saDynamicRangeOptimizerSetting;
|
||||
|
||||
class SACreativeStyle: public ChoiceInterpreter
|
||||
class SACreativeStyle: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SACreativeStyle ()
|
||||
@ -1738,7 +1750,7 @@ public:
|
||||
};
|
||||
SACreativeStyle saCreativeStyle;
|
||||
|
||||
class SACreativeStyle2: public ChoiceInterpreter
|
||||
class SACreativeStyle2: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SACreativeStyle2 ()
|
||||
@ -1754,7 +1766,7 @@ public:
|
||||
};
|
||||
SACreativeStyle2 saCreativeStyle2;
|
||||
|
||||
class SACreativeStyleSetting: public ChoiceInterpreter
|
||||
class SACreativeStyleSetting: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SACreativeStyleSetting ()
|
||||
@ -1769,7 +1781,7 @@ public:
|
||||
};
|
||||
SACreativeStyleSetting saCreativeStyleSetting;
|
||||
|
||||
class SAFlashControl: public ChoiceInterpreter
|
||||
class SAFlashControl: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAFlashControl ()
|
||||
@ -1780,7 +1792,7 @@ public:
|
||||
};
|
||||
SAFlashControl saFlashControl;
|
||||
|
||||
class SAFlashMode: public ChoiceInterpreter
|
||||
class SAFlashMode: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAFlashMode ()
|
||||
@ -1791,7 +1803,7 @@ public:
|
||||
};
|
||||
SAFlashMode saFlashMode;
|
||||
|
||||
class SAFlashMode2: public ChoiceInterpreter
|
||||
class SAFlashMode2: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAFlashMode2 ()
|
||||
@ -1806,7 +1818,7 @@ public:
|
||||
};
|
||||
SAFlashMode2 saFlashMode2;
|
||||
|
||||
class SAExposureProgram: public ChoiceInterpreter
|
||||
class SAExposureProgram: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAExposureProgram ()
|
||||
@ -1829,7 +1841,7 @@ public:
|
||||
};
|
||||
SAExposureProgram saExposureProgram;
|
||||
|
||||
class SAExposureProgram2: public ChoiceInterpreter
|
||||
class SAExposureProgram2: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAExposureProgram2 ()
|
||||
@ -1870,7 +1882,7 @@ public:
|
||||
};
|
||||
SAExposureProgram2 saExposureProgram2;
|
||||
|
||||
class SARotation: public ChoiceInterpreter
|
||||
class SARotation: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SARotation ()
|
||||
@ -1883,7 +1895,7 @@ public:
|
||||
};
|
||||
SARotation saRotation;
|
||||
|
||||
class SASonyImageSize: public ChoiceInterpreter
|
||||
class SASonyImageSize: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SASonyImageSize ()
|
||||
@ -1895,7 +1907,7 @@ public:
|
||||
};
|
||||
SASonyImageSize saSonyImageSize;
|
||||
|
||||
class SASonyImageSize3: public ChoiceInterpreter
|
||||
class SASonyImageSize3: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SASonyImageSize3 ()
|
||||
@ -1910,7 +1922,7 @@ public:
|
||||
};
|
||||
SASonyImageSize3 saSonyImageSize3;
|
||||
|
||||
class SAAspectRatio: public ChoiceInterpreter
|
||||
class SAAspectRatio: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAAspectRatio ()
|
||||
@ -1921,7 +1933,7 @@ public:
|
||||
};
|
||||
SAAspectRatio saAspectRatio;
|
||||
|
||||
class SAAspectRatio2: public ChoiceInterpreter
|
||||
class SAAspectRatio2: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAAspectRatio2 ()
|
||||
@ -1932,7 +1944,7 @@ public:
|
||||
};
|
||||
SAAspectRatio2 saAspectRatio2;
|
||||
|
||||
class SAExposureLevelIncrements: public ChoiceInterpreter
|
||||
class SAExposureLevelIncrements: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAExposureLevelIncrements ()
|
||||
@ -1943,7 +1955,7 @@ public:
|
||||
};
|
||||
SAExposureLevelIncrements saExposureLevelIncrements;
|
||||
|
||||
class SAAFIlluminator: public ChoiceInterpreter
|
||||
class SAAFIlluminator: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAAFIlluminator ()
|
||||
@ -1955,7 +1967,7 @@ public:
|
||||
};
|
||||
SAAFIlluminator saAFIlluminator;
|
||||
|
||||
class SAColorSpace1_2: public ChoiceInterpreter
|
||||
class SAColorSpace1_2: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAColorSpace1_2 ()
|
||||
@ -1966,7 +1978,7 @@ public:
|
||||
};
|
||||
SAColorSpace1_2 saColorSpace1_2;
|
||||
|
||||
class SAColorSpace0_5: public ChoiceInterpreter
|
||||
class SAColorSpace0_5: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAColorSpace0_5 ()
|
||||
@ -1978,7 +1990,7 @@ public:
|
||||
};
|
||||
SAColorSpace0_5 saColorSpace0_5;
|
||||
|
||||
class SAColorSpace5_6: public ChoiceInterpreter
|
||||
class SAColorSpace5_6: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAColorSpace5_6 ()
|
||||
@ -1989,7 +2001,7 @@ public:
|
||||
};
|
||||
SAColorSpace5_6 saColorSpace5_6;
|
||||
|
||||
class SAReleaseModeInterpreter: public ChoiceInterpreter
|
||||
class SAReleaseModeInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAReleaseModeInterpreter ()
|
||||
@ -2004,7 +2016,7 @@ public:
|
||||
};
|
||||
SAReleaseModeInterpreter saReleaseModeInterpreter;
|
||||
|
||||
class SAImageStyleInterpreter: public ChoiceInterpreter
|
||||
class SAImageStyleInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAImageStyleInterpreter ()
|
||||
@ -2028,7 +2040,7 @@ public:
|
||||
};
|
||||
SAImageStyleInterpreter saImageStyleInterpreter;
|
||||
|
||||
class SAPictureEffectInterpreter: public ChoiceInterpreter
|
||||
class SAPictureEffectInterpreter: public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SAPictureEffectInterpreter()
|
||||
@ -2073,7 +2085,7 @@ public:
|
||||
};
|
||||
SAPictureEffectInterpreter saPictureEffectInterpreter;
|
||||
|
||||
class SACameraInfoFocusStatusInterpreter : public ChoiceInterpreter
|
||||
class SACameraInfoFocusStatusInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
SACameraInfoFocusStatusInterpreter()
|
||||
|
@ -28,7 +28,7 @@
|
||||
namespace rtexif
|
||||
{
|
||||
|
||||
class ColorSpaceInterpreter : public ChoiceInterpreter
|
||||
class ColorSpaceInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -41,7 +41,7 @@ public:
|
||||
};
|
||||
ColorSpaceInterpreter colorSpaceInterpreter;
|
||||
|
||||
class PreviewColorSpaceInterpreter : public ChoiceInterpreter
|
||||
class PreviewColorSpaceInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -56,7 +56,7 @@ public:
|
||||
};
|
||||
PreviewColorSpaceInterpreter previewColorSpaceInterpreter;
|
||||
|
||||
class LinearSRGBInterpreter : public ChoiceInterpreter
|
||||
class LinearSRGBInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -68,7 +68,7 @@ public:
|
||||
};
|
||||
LinearSRGBInterpreter linearSRGBInterpreter;
|
||||
|
||||
class DefaultBlackRenderInterpreter : public ChoiceInterpreter
|
||||
class DefaultBlackRenderInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -80,7 +80,7 @@ public:
|
||||
};
|
||||
DefaultBlackRenderInterpreter defaultBlackRenderInterpreter;
|
||||
|
||||
class ExposureProgramInterpreter : public ChoiceInterpreter
|
||||
class ExposureProgramInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -99,7 +99,7 @@ public:
|
||||
};
|
||||
ExposureProgramInterpreter exposureProgramInterpreter;
|
||||
|
||||
class MeteringModeInterpreter : public ChoiceInterpreter
|
||||
class MeteringModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -117,7 +117,7 @@ public:
|
||||
};
|
||||
MeteringModeInterpreter meteringModeInterpreter;
|
||||
|
||||
class ExposureModeInterpreter : public ChoiceInterpreter
|
||||
class ExposureModeInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -130,7 +130,7 @@ public:
|
||||
};
|
||||
ExposureModeInterpreter exposureModeInterpreter;
|
||||
|
||||
class WhiteBalanceInterpreter : public ChoiceInterpreter
|
||||
class WhiteBalanceInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -142,7 +142,7 @@ public:
|
||||
};
|
||||
WhiteBalanceInterpreter whiteBalanceInterpreter;
|
||||
|
||||
class SceneCaptureInterpreter : public ChoiceInterpreter
|
||||
class SceneCaptureInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -156,7 +156,7 @@ public:
|
||||
};
|
||||
SceneCaptureInterpreter sceneCaptureInterpreter;
|
||||
|
||||
class GainControlInterpreter : public ChoiceInterpreter
|
||||
class GainControlInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -171,7 +171,7 @@ public:
|
||||
};
|
||||
GainControlInterpreter gainControlInterpreter;
|
||||
|
||||
class ContrastInterpreter : public ChoiceInterpreter
|
||||
class ContrastInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -184,7 +184,7 @@ public:
|
||||
};
|
||||
ContrastInterpreter contrastInterpreter;
|
||||
|
||||
class SharpnessInterpreter : public ChoiceInterpreter
|
||||
class SharpnessInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -197,7 +197,7 @@ public:
|
||||
};
|
||||
SharpnessInterpreter sharpnessInterpreter;
|
||||
|
||||
class SaturationInterpreter : public ChoiceInterpreter
|
||||
class SaturationInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -210,7 +210,7 @@ public:
|
||||
};
|
||||
SaturationInterpreter saturationInterpreter;
|
||||
|
||||
class FlashInterpreter : public ChoiceInterpreter
|
||||
class FlashInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -242,7 +242,7 @@ public:
|
||||
};
|
||||
FlashInterpreter flashInterpreter;
|
||||
|
||||
class LightSourceInterpreter : public ChoiceInterpreter
|
||||
class LightSourceInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -273,7 +273,7 @@ public:
|
||||
};
|
||||
LightSourceInterpreter lightSourceInterpreter;
|
||||
|
||||
class CompressionInterpreter : public ChoiceInterpreter
|
||||
class CompressionInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -285,7 +285,7 @@ public:
|
||||
};
|
||||
CompressionInterpreter compressionInterpreter;
|
||||
|
||||
class PhotometricInterpreter : public ChoiceInterpreter
|
||||
class PhotometricInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -297,7 +297,7 @@ public:
|
||||
};
|
||||
PhotometricInterpreter photometricInterpreter;
|
||||
|
||||
class ProfileEmbedPolicyInterpreter : public ChoiceInterpreter
|
||||
class ProfileEmbedPolicyInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -311,7 +311,7 @@ public:
|
||||
};
|
||||
ProfileEmbedPolicyInterpreter profileEmbedPolicyInterpreter;
|
||||
|
||||
class PlanarConfigInterpreter : public ChoiceInterpreter
|
||||
class PlanarConfigInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
|
||||
public:
|
||||
@ -591,7 +591,7 @@ public:
|
||||
};
|
||||
CFAInterpreter cfaInterpreter;
|
||||
|
||||
class OrientationInterpreter : public ChoiceInterpreter
|
||||
class OrientationInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
OrientationInterpreter ()
|
||||
@ -610,7 +610,7 @@ public:
|
||||
};
|
||||
OrientationInterpreter orientationInterpreter;
|
||||
|
||||
class UnitsInterpreter : public ChoiceInterpreter
|
||||
class UnitsInterpreter : public ChoiceInterpreter<>
|
||||
{
|
||||
public:
|
||||
UnitsInterpreter()
|
||||
|
@ -42,7 +42,6 @@ enum {
|
||||
ADDSET_PREPROCESS_LINEDENOISE,
|
||||
ADDSET_RAWCACORR,
|
||||
ADDSET_RAWEXPOS_LINEAR,
|
||||
ADDSET_RAWEXPOS_PRESER,
|
||||
ADDSET_RAWEXPOS_BLACKS,
|
||||
ADDSET_SHARPENEDGE_AMOUNT,
|
||||
ADDSET_SHARPENMICRO_AMOUNT,
|
||||
|
@ -99,6 +99,8 @@ private:
|
||||
bool saveBatchQueue ();
|
||||
void notifyListener ();
|
||||
|
||||
using ThumbBrowserBase::redrawNeeded;
|
||||
|
||||
BatchQueueEntry* processing; // holds the currently processed image
|
||||
FileCatalog* fileCatalog;
|
||||
int sequence; // holds the current sequence index
|
||||
|
@ -172,7 +172,7 @@ void BatchToolPanelCoordinator::initSession ()
|
||||
bayerpreprocess->setAdjusterBehavior (false, false);
|
||||
rawcacorrection->setAdjusterBehavior (false);
|
||||
flatfield->setAdjusterBehavior(false);
|
||||
rawexposure->setAdjusterBehavior (false, false);
|
||||
rawexposure->setAdjusterBehavior (false);
|
||||
bayerrawexposure->setAdjusterBehavior (false);
|
||||
xtransrawexposure->setAdjusterBehavior (false);
|
||||
} else {
|
||||
@ -220,7 +220,7 @@ void BatchToolPanelCoordinator::initSession ()
|
||||
bayerpreprocess->setAdjusterBehavior (options.baBehav[ADDSET_PREPROCESS_LINEDENOISE], options.baBehav[ADDSET_PREPROCESS_GREENEQUIL]);
|
||||
rawcacorrection->setAdjusterBehavior (options.baBehav[ADDSET_RAWCACORR]);
|
||||
flatfield->setAdjusterBehavior(options.baBehav[ADDSET_RAWFFCLIPCONTROL]);
|
||||
rawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_LINEAR], options.baBehav[ADDSET_RAWEXPOS_PRESER]);
|
||||
rawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_LINEAR]);
|
||||
bayerrawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_BLACKS]);
|
||||
xtransrawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_BLACKS]);
|
||||
|
||||
@ -352,7 +352,6 @@ void BatchToolPanelCoordinator::initSession ()
|
||||
if (options.baBehav[ADDSET_DIRPYRDN_GAMMA]) { pparams.dirpyrDenoise.gamma = 0; }
|
||||
if (options.baBehav[ADDSET_RAWCACORR]) { pparams.raw.cablue = pparams.raw.cared = 0; }
|
||||
if (options.baBehav[ADDSET_RAWEXPOS_LINEAR]) { pparams.raw.expos = 0; }
|
||||
if (options.baBehav[ADDSET_RAWEXPOS_PRESER]) { pparams.raw.preser = 0; }
|
||||
if (options.baBehav[ADDSET_RAWEXPOS_BLACKS]) {
|
||||
pparams.raw.bayersensor.black0 = pparams.raw.bayersensor.black1 = pparams.raw.bayersensor.black2 = pparams.raw.bayersensor.black3 =
|
||||
pparams.raw.xtranssensor.blackred = pparams.raw.xtranssensor.blackgreen = pparams.raw.xtranssensor.blackblue = 0;
|
||||
|
@ -730,7 +730,10 @@ void BayerProcess::FrameCountChanged(int n, int frameNum)
|
||||
entry << i;
|
||||
imageNumber->append(entry.str());
|
||||
}
|
||||
imageNumber->set_active(std::min(frameNum, n - 1));
|
||||
if (n == 2) {
|
||||
imageNumber->append(M("TP_RAW_IMAGENUM_SN"));
|
||||
}
|
||||
imageNumber->set_active(std::min(frameNum, n == 2 ? n : n - 1));
|
||||
if (n == 1) {
|
||||
imageNumberBox->hide();
|
||||
} else {
|
||||
|
@ -1055,13 +1055,13 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
|
||||
// pmlistener->pointerMoved (true, mx, my, pix[0], pix[1], pix[2]);
|
||||
int imwidth = cropHandler.cropPixbuftrue->get_width();
|
||||
int imheight = cropHandler.cropPixbuftrue->get_height();
|
||||
guint8* pix = cropHandler.cropPixbuftrue->get_pixels() + vy * cropHandler.cropPixbuftrue->get_rowstride() + vx * 3;
|
||||
|
||||
if (vx < imwidth && vy < imheight) {
|
||||
guint8* pix = cropHandler.cropPixbuftrue->get_pixels() + vy * cropHandler.cropPixbuftrue->get_rowstride() + vx * 3;
|
||||
int rval = pix[0];
|
||||
int gval = pix[1];
|
||||
int bval = pix[2];
|
||||
bool isRaw = false;
|
||||
if (vx < imwidth && vy < imheight) {
|
||||
rtengine::StagedImageProcessor* ipc = iarea->getImProcCoordinator();
|
||||
if(ipc) {
|
||||
procparams::ProcParams params;
|
||||
@ -1493,7 +1493,9 @@ void CropWindow::expose (Cairo::RefPtr<Cairo::Context> cr)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp critical
|
||||
#endif
|
||||
{
|
||||
if(maxthrstdDev_L2 > maxstdDev_L2) {
|
||||
maxstdDev_L2 = maxthrstdDev_L2;
|
||||
|
@ -670,8 +670,6 @@ void DiagonalCurveEditorSubGroup::switchGUI()
|
||||
// dCurve ave a ColorProvider or a background gradient defined, so we create/update the object
|
||||
if (!leftBar) {
|
||||
leftBar = new ColoredBar(RTO_Bottom2Top);
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (barColorProvider) {
|
||||
|
@ -61,6 +61,8 @@ class FileBrowser : public ThumbBrowserBase,
|
||||
private:
|
||||
typedef sigc::signal<void> type_trash_changed;
|
||||
|
||||
using ThumbBrowserBase::redrawNeeded;
|
||||
|
||||
IdleRegister idle_register;
|
||||
unsigned int session_id_;
|
||||
|
||||
|
@ -195,6 +195,8 @@ private:
|
||||
ExpanderBox* expBox; /// Frame that includes the child and control its visibility
|
||||
Gtk::EventBox *imageEvBox; /// Enable/Disable or Open/Close arrow event box
|
||||
|
||||
using Gtk::Container::add;
|
||||
|
||||
/// Triggered on opened/closed event
|
||||
bool on_toggle(GdkEventButton* event);
|
||||
/// Triggered on enabled/disabled change -> will emit a toggle event to the connected objects
|
||||
|
@ -453,7 +453,6 @@ void ParamsEdited::set(bool v)
|
||||
raw.ff_AutoClipControl = v;
|
||||
raw.ff_clipControl = v;
|
||||
raw.exPos = v;
|
||||
raw.exPreser = v;
|
||||
wavelet.enabled = v;
|
||||
wavelet.strength = v;
|
||||
wavelet.balance = v;
|
||||
@ -1020,7 +1019,6 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
raw.ff_AutoClipControl = raw.ff_AutoClipControl && p.raw.ff_AutoClipControl == other.raw.ff_AutoClipControl;
|
||||
raw.ff_clipControl = raw.ff_clipControl && p.raw.ff_clipControl == other.raw.ff_clipControl;
|
||||
raw.exPos = raw.exPos && p.raw.expos == other.raw.expos;
|
||||
raw.exPreser = raw.exPreser && p.raw.preser == other.raw.preser;
|
||||
wavelet.enabled = wavelet.enabled && p.wavelet.enabled == other.wavelet.enabled;
|
||||
wavelet.strength = wavelet.strength && p.wavelet.strength == other.wavelet.strength;
|
||||
wavelet.balance = wavelet.balance && p.wavelet.balance == other.wavelet.balance;
|
||||
@ -2694,10 +2692,6 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.raw.expos = dontforceSet && options.baBehav[ADDSET_RAWEXPOS_LINEAR] ? toEdit.raw.expos + mods.raw.expos : mods.raw.expos;
|
||||
}
|
||||
|
||||
if (raw.exPreser) {
|
||||
toEdit.raw.preser = dontforceSet && options.baBehav[ADDSET_RAWEXPOS_PRESER] ? toEdit.raw.preser + mods.raw.preser : mods.raw.preser;
|
||||
}
|
||||
|
||||
if (raw.hotPixelFilter) {
|
||||
toEdit.raw.hotPixelFilter = mods.raw.hotPixelFilter;
|
||||
}
|
||||
@ -3200,7 +3194,7 @@ bool RAWParamsEdited::XTransSensor::isUnchanged() const
|
||||
bool RAWParamsEdited::isUnchanged() const
|
||||
{
|
||||
return bayersensor.isUnchanged() && xtranssensor.isUnchanged() && ca_autocorrect && ca_avoidcolourshift && caautoiterations && cared && cablue && hotPixelFilter && deadPixelFilter && hotdeadpix_thresh && darkFrame
|
||||
&& df_autoselect && ff_file && ff_AutoSelect && ff_BlurRadius && ff_BlurType && exPos && exPreser && ff_AutoClipControl && ff_clipControl;
|
||||
&& df_autoselect && ff_file && ff_AutoSelect && ff_BlurRadius && ff_BlurType && exPos && ff_AutoClipControl && ff_clipControl;
|
||||
}
|
||||
|
||||
bool LensProfParamsEdited::isUnchanged() const
|
||||
|
@ -818,7 +818,6 @@ public:
|
||||
bool ff_AutoClipControl;
|
||||
bool ff_clipControl;
|
||||
bool exPos;
|
||||
bool exPreser;
|
||||
|
||||
bool isUnchanged() const;
|
||||
};
|
||||
|
@ -120,7 +120,6 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
|
||||
raw_pdaf_lines_filter = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PREPROCESS_PDAFLINESFILTER")));
|
||||
//---
|
||||
raw_expos = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_LINEAR")));
|
||||
raw_preser = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_PRESER")));
|
||||
raw_black = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_BLACK")));
|
||||
//---
|
||||
df_file = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DARKFRAMEFILE")));
|
||||
@ -236,7 +235,6 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
|
||||
vboxes[7]->pack_start (*raw_pdaf_lines_filter, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
|
||||
vboxes[7]->pack_start (*raw_expos, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[7]->pack_start (*raw_preser, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[7]->pack_start (*raw_black, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
|
||||
vboxes[7]->pack_start (*df_file, Gtk::PACK_SHRINK, 2);
|
||||
@ -384,7 +382,6 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
|
||||
raw_pdaf_lines_filterConn = raw_pdaf_lines_filter->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||
//---
|
||||
raw_exposConn = raw_expos->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||
raw_preserConn = raw_preser->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||
raw_blackConn = raw_black->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||
//---
|
||||
df_fileConn = df_file->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||
@ -459,7 +456,6 @@ void PartialPasteDlg::rawToggled ()
|
||||
ConnectionBlocker raw_deadpix_filtBlocker(raw_deadpix_filtConn);
|
||||
ConnectionBlocker raw_pdaf_lines_filterBlocker(raw_pdaf_lines_filterConn);
|
||||
ConnectionBlocker raw_exposBlocker(raw_exposConn);
|
||||
ConnectionBlocker raw_preserBlocker(raw_preserConn);
|
||||
ConnectionBlocker raw_blackBlocker(raw_blackConn);
|
||||
ConnectionBlocker df_fileBlocker(df_fileConn);
|
||||
ConnectionBlocker df_AutoSelectBlocker(df_AutoSelectConn);
|
||||
@ -488,7 +484,6 @@ void PartialPasteDlg::rawToggled ()
|
||||
raw_deadpix_filt->set_active (raw->get_active ());
|
||||
raw_pdaf_lines_filter->set_active (raw->get_active ());
|
||||
raw_expos->set_active (raw->get_active ());
|
||||
raw_preser->set_active (raw->get_active ());
|
||||
raw_black->set_active (raw->get_active ());
|
||||
df_file->set_active (raw->get_active ());
|
||||
df_AutoSelect->set_active (raw->get_active ());
|
||||
@ -911,10 +906,6 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param
|
||||
filterPE.raw.exPos = falsePE.raw.exPos;
|
||||
}
|
||||
|
||||
if (!raw_preser->get_active ()) {
|
||||
filterPE.raw.exPreser = falsePE.raw.exPreser;
|
||||
}
|
||||
|
||||
if (!raw_ca_autocorrect->get_active ()) {
|
||||
filterPE.raw.ca_autocorrect = falsePE.raw.ca_autocorrect;
|
||||
filterPE.raw.caautoiterations = falsePE.raw.caautoiterations;
|
||||
|
@ -102,7 +102,6 @@ public:
|
||||
|
||||
// options in raw:
|
||||
Gtk::CheckButton* raw_expos;
|
||||
Gtk::CheckButton* raw_preser;
|
||||
Gtk::CheckButton* raw_black;
|
||||
Gtk::CheckButton* raw_ca_autocorrect;
|
||||
Gtk::CheckButton* raw_caredblue;
|
||||
@ -138,7 +137,7 @@ public:
|
||||
sigc::connection coarserotConn, finerotConn, cropConn, resizeConn, prsharpeningConn, perspectiveConn, commonTransConn;
|
||||
sigc::connection metadataConn, exifchConn, iptcConn, icmConn;
|
||||
sigc::connection df_fileConn, df_AutoSelectConn, ff_fileConn, ff_AutoSelectConn, ff_BlurRadiusConn, ff_BlurTypeConn, ff_ClipControlConn;
|
||||
sigc::connection raw_caredblueConn, raw_ca_autocorrectConn, raw_ca_avoid_colourshiftconn, raw_hotpix_filtConn, raw_deadpix_filtConn, raw_pdaf_lines_filterConn, raw_linenoiseConn, raw_greenthreshConn, raw_ccStepsConn, raw_methodConn, raw_borderConn, raw_imagenumConn, raw_dcb_iterationsConn, raw_lmmse_iterationsConn, raw_pixelshiftConn, raw_dcb_enhanceConn, raw_exposConn, raw_preserConn, raw_blackConn;
|
||||
sigc::connection raw_caredblueConn, raw_ca_autocorrectConn, raw_ca_avoid_colourshiftconn, raw_hotpix_filtConn, raw_deadpix_filtConn, raw_pdaf_lines_filterConn, raw_linenoiseConn, raw_greenthreshConn, raw_ccStepsConn, raw_methodConn, raw_borderConn, raw_imagenumConn, raw_dcb_iterationsConn, raw_lmmse_iterationsConn, raw_pixelshiftConn, raw_dcb_enhanceConn, raw_exposConn, raw_blackConn;
|
||||
|
||||
public:
|
||||
PartialPasteDlg (const Glib::ustring &title, Gtk::Window* parent);
|
||||
|
@ -403,7 +403,6 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
|
||||
mi = behModel->append ();
|
||||
mi->set_value (behavColumns.label, M ("TP_EXPOS_WHITEPOINT_LABEL"));
|
||||
appendBehavList (mi, M ("TP_RAWEXPOS_LINEAR"), ADDSET_RAWEXPOS_LINEAR, false);
|
||||
appendBehavList (mi, M ("TP_RAWEXPOS_PRESER"), ADDSET_RAWEXPOS_PRESER, false);
|
||||
|
||||
mi = behModel->append ();
|
||||
mi->set_value (behavColumns.label, M ("TP_RAWEXPOS_BLACKS"));
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user