Hi, Ixus!
Some clarifications that i promised
There are four main propery caces that have an influence or describe state of camera ISO:
Digic || group:
PROPCASE_ISO_MODE 21
PROPCASE_SV 73
PROPCASE_DELTA_SV 70
PROPCASE_SV_MARKET 72
Digic ||| group:
PROPCASE_ISO_MODE 149
PROPCASE_SV 247
PROPCASE_DELTA_SV 79
PROPCASE_SV_MARKET 246
As you understand your script changes fixed ISO_MODE before shoot. After half press of the shutter release button (in time of execution shoot command in the script or "press "shoot_half" command correspondingly) camera firmware calculates exposure and sets values of av and tv because it knows about current iso before shoot! Every time you change ISO_MODE to fixed values firmware sets values for property cases PROPCASE_SV (real sensitivity in APEX standard. See link
APEX system - Wikipedia, the free encyclopedia ) Camera uses this value in exposure calculations. As in AUTO (HI) ISO modes value of property case PROPCASE_ISO_MODE is equal to 0(1) and it don't say us about ISO value at all in this mode. Therefore base value for ISO is PROPCASE_SV. This property case has some value always! Second property case, that give us additional information in Auto (HI) ISO modes is PROPCASE_DELTA_SV, that show us changing of SV from some base value. Setting of this value is important in AUTO or HI ISO modes additionally to PROPCASE_SV.
What override engine does when it sets ISO? It sets value of SV and other adjoining parameters AFTER camera has compute exposure! (in the same way all another overrides works and here is difference between script engine and override engine). Moreover we have no possibility to set PROPCASE_ISO_MODE in limits of override engine because it has no any effect for current shoot. We can do it ONLY via script engine
I've test ISO setting via ISO mode for three camera models:
I found that all values that are out of the standard for current model sequence (50(80),100,200,400,800,1600,3200) are not working. At least Every JPG in this case has wrong white balance in contrast to RAW file. Moreover I found that real ISO change was limited by 800 for a650 for example (this camera has ISO 3200 mode!). It was marginally confirmed by analysis of the size of DNG-file that was generated from RAW. (And I doubt that ixus70 has more best results!)
As opposed to this methods of ISO setting we have correct white balance for all arbitrary values of ISO in limits of admissible for current camera ISO diapason and gradual brightness change when we do ISO change via the CHDK algorithm (In AUTO and HI AUTO ISO modes)
Example scripts for ISO testing:
Cyclic ISO mode change with output:
@title Test ISO mode
@param a Number of ?steps
@default a 10
@param b step size
@default b 10
@param c prop case type
@default c 0
@param d pause
@default d 10
sleep 500
print_screen 1
t=d*1000
if c=0 then
p=21
q=149
else
p=149
q=246
endif
for n=1 to a
set_prop p n*10*b
sleep 500
rem initiation (just in case)
press "shoot_half"
sleep 500
release "shoot_half"
set_tv96 480
set_av96 288
set_nd_filter 2
press "shoot_half"
sleep 1000
get_iso_real i
get_iso_market m
get_sv96 s
get_prop q a
print "ISO:", i, " ISOM:", m, " Sv:", s, "Svm:", a
press "shoot_full"
release "shoot_full"
release "shoot_half"
rem for possible raw save
sleep t
next n
end
Here you need to set prop case type to 1
Output example for a650 (see PR_SCREEN.TXT in your script directory):
ISO: 65 ISOM: 100 Sv: 411 Svm: 480
ISO: 130 ISOM: 200 Sv: 507 Svm: 576
ISO: 197 ISOM: 300 Sv: 564 Svm: 632
ISO: 261 ISOM: 400 Sv: 603 Svm: 672
ISO: 327 ISOM: 500 Sv: 634 Svm: 703
ISO: 391 ISOM: 600 Sv: 659 Svm: 728
ISO: 459 ISOM: 700 Sv: 681 Svm: 749
ISO: 523 ISOM: 800 Sv: 699 Svm: 768
ISO: 591 ISOM: 900 Sv: 716 Svm: 784
ISO: 654 ISOM: 1000 Sv: 730 Svm: 799
ISO: 718 ISOM: 1100 Sv: 743 Svm: 812
ISO: 783 ISOM: 1200 Sv: 755 Svm: 824
ISO: 848 ISOM: 1300 Sv: 766 Svm: 835
ISO: 912 ISOM: 1400 Sv: 776 Svm: 845
ISO: 980 ISOM: 1500 Sv: 786 Svm: 855
ISO: 1046 ISOM: 1600 Sv: 795 Svm: 864
ISO: 1116 ISOM: 1700 Sv: 804 Svm: 872
ISO: 1174 ISOM: 1800 Sv: 811 Svm: 880
It is interesting that for IXUS 800 (SD700) we can't change Sv value upper then limit that correspond to ISO 800 (i.e. as result of this script execution we see repeatable values of SV from some level)
Second script:
@title Test ISO mode
@param a Number of ?steps
@default a 10
@param b intial
@default b 100
@param c prop case type
@default c 0
@param d pause
@default d 10
sleep 500
print_screen 1
t=d*1000
if c=0 then
p=21
q=149
else
p=149
q=246
endif
v=b
for n=1 to a
set_prop p v
sleep 500
rem initiation (just in case)
press "shoot_half"
sleep 500
release "shoot_half"
set_tv96 480
set_av96 288
set_nd_filter 2
press "shoot_half"
sleep 1000
get_iso_real i
get_iso_market m
get_sv96 s
get_prop q w
print "ISO:", i, " ISOM:", m, " Sv:", s, "Svm:", w
press "shoot_full"
release "shoot_full"
release "shoot_half"
rem for possible raw save
sleep t
v=v*2
next n
end
Here you can observe divisible ISO change. For example: 50-100-200-400-800....
Example output for a650:
ISO: 65 ISOM: 100 Sv: 411 Svm: 480
ISO: 130 ISOM: 200 Sv: 507 Svm: 576
ISO: 261 ISOM: 400 Sv: 603 Svm: 672
ISO: 523 ISOM: 800 Sv: 699 Svm: 768
ISO: 1046 ISOM: 1600 Sv: 795 Svm: 864
ISO: 2092 ISOM: 3200 Sv: 891 Svm: 960
ISO: 4185 ISOM: 6400 Sv: 987 Svm: 1056
ISO: 8371 ISOM: 12800 Sv: 1083 Svm: 1152
ISO: 16742 ISOM: 25600 Sv: 1179 Svm: 1248
And third script:
@title Set ISO
@param a Number of ?steps
@default a 10
@param b init value
@default b 10
@param c step size
@default c 10
@param d prop case type
@default d 0
@param e pause
@default e 2
sleep 500
print_screen 1
p=e*1000
if d=0 then
q=149
else
q=246
endif
v=b
for n=1 to a
set_tv96 480
set_av96 288
set_nd_filter 2
set_iso_real v
rem set iso in time of shoot
shoot
get_iso_real i
get_iso_market m
get_sv96 s
get_prop q w
print "ISO:", i, " ISOM:", m, " Sv:", s, " Svm:", w
sleep p
v=v+c
next n
end
Here your camera must be in AUTO(HI) ISO mode (desirable). It's a way of CHDK ISO set
Example output for a650:
ISO: 9 ISOM: 13 Sv: 150 Svm: 480
ISO: 39 ISOM: 60 Sv: 342 Svm: 480
ISO: 69 ISOM: 106 Sv: 420 Svm: 480
ISO: 99 ISOM: 152 Sv: 469 Svm: 480
ISO: 129 ISOM: 198 Sv: 506 Svm: 480
ISO: 158 ISOM: 243 Sv: 534 Svm: 480
ISO: 189 ISOM: 290 Sv: 558 Svm: 480
ISO: 219 ISOM: 336 Sv: 579 Svm: 480
ISO: 248 ISOM: 381 Sv: 596 Svm: 480
ISO: 279 ISOM: 429 Sv: 612 Svm: 480
ISO: 308 ISOM: 473 Sv: 626 Svm: 480
ISO: 339 ISOM: 521 Sv: 639 Svm: 480
ISO: 369 ISOM: 567 Sv: 651 Svm: 480
ISO: 397 ISOM: 610 Sv: 661 Svm: 480
ISO: 427 ISOM: 656 Sv: 671 Svm: 480
ISO: 459 ISOM: 706 Sv: 681 Svm: 480
ISO: 486 ISOM: 747 Sv: 689 Svm: 480
ISO: 519 ISOM: 798 Sv: 698 Svm: 480
ISO: 546 ISOM: 840 Sv: 705 Svm: 480
ISO: 578 ISOM: 889 Sv: 713 Svm: 480
ISO: 608 ISOM: 935 Sv: 720 Svm: 480
ISO: 635 ISOM: 976 Sv: 726 Svm: 480
ISO: 668 ISOM: 1027 Sv: 733 Svm: 480
ISO: 698 ISOM: 1073 Sv: 739 Svm: 480
ISO: 729 ISOM: 1121 Sv: 745 Svm: 480
ISO: 756 ISOM: 1163 Sv: 750 Svm: 480
ISO: 789 ISOM: 1213 Sv: 756 Svm: 480
ISO: 818 ISOM: 1258 Sv: 761 Svm: 480
ISO: 848 ISOM: 1304 Sv: 766 Svm: 480
ISO: 879 ISOM: 1352 Sv: 771 Svm: 480
ISO: 905 ISOM: 1392 Sv: 775 Svm: 480
ISO: 939 ISOM: 1444 Sv: 780 Svm: 480
ISO: 966 ISOM: 1486 Sv: 784 Svm: 480
ISO: 994 ISOM: 1529 Sv: 788 Svm: 480
ISO: 1024 ISOM: 1575 Sv: 792 Svm: 480
ISO: 1054 ISOM: 1621 Sv: 796 Svm: 480
ISO: 1084 ISOM: 1667 Sv: 800 Svm: 480
ISO: 1116 ISOM: 1716 Sv: 804 Svm: 480
ISO: 1149 ISOM: 1767 Sv: 808 Svm: 480
ISO: 1174 ISOM: 1806 Sv: 811 Svm: 480
ISO: 1208 ISOM: 1858 Sv: 815 Svm: 480
ISO: 1235 ISOM: 1900 Sv: 818 Svm: 480
ISO: 1262 ISOM: 1941 Sv: 821 Svm: 480
ISO: 1299 ISOM: 1998 Sv: 825 Svm: 480
ISO: 1327 ISOM: 2041 Sv: 828 Svm: 480
ISO: 1357 ISOM: 2087 Sv: 831 Svm: 480
ISO: 1386 ISOM: 2132 Sv: 834 Svm: 480
ISO: 1417 ISOM: 2180 Sv: 837 Svm: 480
Manually changing propcase 149 in SD1000 has been very predictable in my case. The camera displays the right ISO on screen,
It's only visualization. You can see here 16 ISO or 8000 ISO for example but this value not always corresponds to real ISO value
adjusts aperture/shutter speeds automatically, and display right ISO in Exif. It works as if its a built in setting of original firmware.
Because values of ISO mode is set before camera exposure calculation when this type of script is used! Unfortunately overrode values is set after camera exposure calculation
Setting ISO using Allbest results in wrong ISO display on screen, no auto aperture/shutter setttings, and wrong ISO in exif.
Because CHDK changes ISO mode to AUTO you need to see "real" ISO values via EXIFtool by Feel Harvey
I haven't tested white balance. However, the pictures look ok at ISO 3200/6400, nothing different from one step lower ISO's. ISO 2500 looks purple. What would be the procedure to test for correct white balance?
You can see that all photos (at least in jpg format) that was captured in intermediate ISO modes have incorrect white balance (when your camera is in one of the fixed ISO modes). Intermediate ISO values possible only in AUTO(HI) ISO modes with correct white balance
In my testing Prop 79 is always 0 and prop 247 displays some value (maybe encoded in some way?) that does not correspond to ISO.
I've explained it
I am able to get ISO 3200, 6400 with very good results. At 6400 the image is very noisy and has green hue, but I think this is the case on all cameras at ISO 6400.
Can you upload examples? 400 800 1600 3200 6400 in RAW format?
but the ISO override on SD1000 either does not work, or I am doing something wrong
Your camera must be in AUTO(HI) ISO mode for correct playing with CHDK ISO override
Where is the ISO override function located? Maybe I can play around with it and see what happens.
/trunk/platform/generic/shooting.c - chdk - Trac shooting_set_sv96
Thanks