So this would be like a Dynamic Range Compression/Expansion as an alternative to HDR bracketing ?Sounds cool, HDR without the flashcard space penalty ( & maybe the expansion could be integrated into dng4ps-2 )Some kind of name change to the RAW name suffix or prefix would probably also be practical.wim
Ok, I haven't followed the whole reasoning since all the increase-EV-decrease-range-increase-that-decrease-this confuses me
But as for exposing so that no parts of the image are blown out, that has been discussed before and it should be possible to do it automatically - and if it's possible (i.e. the exposure adjustment functions are well behaved during half-shoot), then it's also easy, because it's a matter of adding a couple of lines to the zebra code.Basically: if more than n pixels are out of scale, step down by the minimum possible amount (here the question is, step down shutter speed, aperture or ISO? I guess it would depend on the mode dial), repeat the process.
diff -r f2cf9e6b707f core/conf.c--- a/core/conf.c Tue Apr 01 12:30:59 2008 +0300+++ b/core/conf.c Thu Apr 03 11:17:01 2008 +0300@@ -291,6 +291,7 @@ CONF_INFO(162, conf.autoiso_max_iso_hi, CONF_DEF_VALUE, i:55, NULL), CONF_INFO(163, conf.autoiso_max_iso_auto, CONF_DEF_VALUE, i:35, NULL), CONF_INFO(164, conf.autoiso_min_iso, CONF_DEF_VALUE, i:5, NULL), + CONF_INFO(165, conf.autoiso_reduce_overexpo, CONF_DEF_VALUE, i:0, NULL), }; #define CONF_NUM (sizeof(conf_info)/sizeof(conf_info[0]))diff -r f2cf9e6b707f core/gui.c--- a/core/gui.c Tue Apr 01 12:30:59 2008 +0300+++ b/core/gui.c Thu Apr 03 11:17:01 2008 +0300@@ -133,6 +133,7 @@ static const char* gui_raw_ext_enum(int change, int arg); static const char* gui_raw_nr_enum(int change, int arg); static const char* gui_autoiso_shutter_enum(int change, int arg);+static const char* gui_autoiso_overexpo_enum(int change, int arg); static const char* gui_reader_codepage_enum(int change, int arg); static const char* gui_zoom_value_enum(int change, int arg); static const char* gui_show_values_enum(int change, int arg);@@ -228,6 +229,7 @@ {LANG_MENU_AUTOISO_MAX_ISO_HI, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_max_iso_hi, MENU_MINMAX(20, 160) }, {LANG_MENU_AUTOISO_MAX_ISO_AUTO, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_max_iso_auto, MENU_MINMAX(10, 80) }, {LANG_MENU_AUTOISO_MIN_ISO, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_min_iso, MENU_MINMAX(1, 20) },+ {LANG_MENU_AUTOISO_REDUCE_OVEREXPO, MENUITEM_ENUM, (int*)gui_autoiso_overexpo_enum }, {LANG_MENU_BACK, MENUITEM_UP }, {0} };@@ -780,6 +782,19 @@ conf.autoiso_shutter=0; return shutter[conf.autoiso_shutter];+}++//-------------------------------------------------------------------+const char* gui_autoiso_overexpo_enum(int change, int arg) {+ static const char* expo[]={ "Off", "1/3 EV", "2/3 EV", "1 EV"};++ conf.autoiso_reduce_overexpo+=change;+ if (conf.autoiso_reduce_overexpo<0)+ conf.autoiso_reduce_overexpo=(sizeof(expo)/sizeof(expo[0]))-1;+ else if (conf.autoiso_reduce_overexpo>=(sizeof(expo)/sizeof(expo[0])))+ conf.autoiso_reduce_overexpo=0;++ return expo[conf.autoiso_reduce_overexpo]; } //-------------------------------------------------------------------diff -r f2cf9e6b707f core/gui_lang.c--- a/core/gui_lang.c Tue Apr 01 12:30:59 2008 +0300+++ b/core/gui_lang.c Thu Apr 03 11:17:01 2008 +0300@@ -408,11 +408,12 @@ "322 \"Custom Auto ISO->\"\n" "323 \"Enable Custom Auto ISO\"\n" "324 \"Minimal Shutter speed\"\n"-"325 \"User Factor (1/FL/factor)\"\n"-"326 \"IS Factor (Tv*factor)\"\n"+"325 \" User Factor (1/FL/factor)\"\n"+"326 \" IS Factor (Tv*factor)\"\n" "327 \"Max ISO HI (x10)\"\n" "328 \"Max ISO AUTO (x10)\"\n" "329 \"Min ISO (x10)\"\n"+"330 \"Reduce OverExposure\"\n" diff -r f2cf9e6b707f core/gui_lang.h--- a/core/gui_lang.h Tue Apr 01 12:30:59 2008 +0300+++ b/core/gui_lang.h Thu Apr 03 11:17:01 2008 +0300@@ -423,9 +423,11 @@ #define LANG_MENU_AUTOISO_MAX_ISO_HI 327 #define LANG_MENU_AUTOISO_MAX_ISO_AUTO 328 #define LANG_MENU_AUTOISO_MIN_ISO 329+#define LANG_MENU_AUTOISO_REDUCE_OVEREXPO 330+ //------------------------------------------------------------------- -#define GUI_LANG_ITEMS 329+#define GUI_LANG_ITEMS 330 //------------------------------------------------------------------- extern void gui_lang_init();diff -r f2cf9e6b707f core/gui_osd.c--- a/core/gui_osd.c Tue Apr 01 12:30:59 2008 +0300+++ b/core/gui_osd.c Thu Apr 03 11:17:01 2008 +0300@@ -710,8 +710,10 @@ if (conf.nd_filter_state || gui_mode==GUI_MODE_OSD) gui_print_osd_state_string_chr("NDFILTER:", ((conf.nd_filter_state==1)?"IN":"OUT")); #endif - if ((conf.autoiso_enable && shooting_get_iso_mode()<=0 && !(m==MODE_M || m==MODE_TV) && shooting_get_flash_mode()) || gui_mode==GUI_MODE_OSD) - gui_print_osd_state_string_chr("AUTOISO:", "ON");+ if ((conf.autoiso_enable && shooting_get_iso_mode()<=0 && !(m==MODE_M || m==MODE_TV) && shooting_get_flash_mode()) || gui_mode==GUI_MODE_OSD) {+ static const char* shutter[]={ "Auto", "1/8", "1/15", "1/30", "1/60", "1/125", "1/250", "1/500", "1/1000"};+ gui_print_osd_state_string_chr("I-A: ", shutter[conf.autoiso_shutter]);+ } if ((conf.subj_dist_override_value && conf.subj_dist_override_koef && shooting_can_focus()) || ((gui_mode==GUI_MODE_ALT) && shooting_get_common_focus_mode()) || gui_mode==GUI_MODE_OSD) { gui_print_osd_state_string_int("SD:",shooting_get_subject_distance_override_value()); if (gui_mode==GUI_MODE_ALT) diff -r f2cf9e6b707f include/conf.h--- a/include/conf.h Tue Apr 01 12:30:59 2008 +0300+++ b/include/conf.h Thu Apr 03 11:17:01 2008 +0300@@ -153,6 +153,7 @@ int autoiso_max_iso_hi; int autoiso_max_iso_auto; int autoiso_min_iso;+ int autoiso_reduce_overexpo; int recalc_exposure; int tv_exposure_order;diff -r f2cf9e6b707f lang/english.lng--- a/lang/english.lng Tue Apr 01 12:30:59 2008 +0300+++ b/lang/english.lng Thu Apr 03 11:17:01 2008 +0300@@ -423,11 +423,12 @@ 322 "Custom Auto ISO->" 323 "Enable Custom Auto ISO" 324 "Minimal Shutter speed"-325 "User Factor (1/FL/factor)"-326 "IS Factor (Tv*factor)"+325 " User Factor (1/FL/factor)"+326 " IS Factor (Tv*factor)" 327 "Max ISO HI (x10)" 328 "Max ISO AUTO (x10)" 329 "Min ISO (x10)"+330 "Reduce Overexposure" diff -r f2cf9e6b707f platform/generic/shooting.c--- a/platform/generic/shooting.c Tue Apr 01 12:30:59 2008 +0300+++ b/platform/generic/shooting.c Thu Apr 03 11:17:01 2008 +0300@@ -5,6 +5,7 @@ #include "math.h" #include "stdlib.h" #include "conf.h"+#include "histogram.h" #define SS_SIZE (sizeof(shutter_speeds_table)/sizeof(shutter_speeds_table[0])) #define SSID_MIN (shutter_speeds_table[0].id)@@ -895,7 +896,10 @@ float current_shutter = shooting_get_shutter_speed_from_tv96(shooting_get_tv96()); short current_iso=shooting_get_iso_real();- ++ static const float reduce_overexpo[]={1.0, 0.8, 0.63, 0.5}; //0-1 EV reduction+ if (over_exposed) current_iso *= reduce_overexpo[conf.autoiso_reduce_overexpo]; + short min_shutter = shutter[conf.autoiso_shutter]; if (min_shutter == 0) {@@ -903,7 +907,7 @@ min_shutter = get_focal_length(lens_get_zoom_point())*conf.autoiso_user_factor / (IS_factor*1000); //min_shutter is NOT 1/Xs but optimized for the calculation. }-+ short target_iso = current_iso * min_shutter * current_shutter; short min_iso = conf.autoiso_min_iso*10; diff -r f2cf9e6b707f version.inc--- a/version.inc Tue Apr 01 12:30:59 2008 +0300+++ b/version.inc Thu Apr 03 11:17:01 2008 +0300@@ -1,1 +1,1 @@-BUILD_NUMBER := 49+BUILD_NUMBER := 72
Started by a710is Feature Requests
Started by rtiz_rtiz_rtiz General Chat
Started by KenO « 1 2 3 » RAW Shooting and Processing
Started by larrycafe Feature Requests
Started by dvip General Discussion and Assistance