So then ... what would be the purpose of doing all the mapping (ie the table), unless there is some standardization objective at the end of the road?
It shows you the relationship between the values the Canon UI displays, and the values the firmware, CHDK and chdkptp work with. I strongly suspect that the "real" values have a consistent, direct relationship to the APEX definition across all the cameras, but I haven't proven it.
If you want some absolute, calibrated value, then calibrate it. You are developing imaging equipment, do you not have a calibrated light meter or light source?
It's probably safe to assume the Tv and Av are accurate, "real" units to reasonable precision (e.g. if you set Tv=1/1000th, you might get 1/1024th, but you won't get something like 1/600th). If you know the Bv from some external source (like a light meter), then you can easily derive the Sv from the APEX equation, and from there you can work out how it relates to the Canon ISO values. (Note that you can get a Bv value from the camera, but if the Sv differs from APEX standard, then the Bv must also)
That's where I am confused ... where does the conversion by 1.6 take place then? In Canon firmware?
Yes! It's the Canon marketing display value, Canon firmware generates it. If CHDK knew the exact conversion (and knew it was correct across all the cameras), then we could offer overrides in the same units as the Canon OSD. We don't, therefore we work directly in the "real" values that Canon uses internally. We didn't pick "real" values to make your life difficult, we use them because those are the ones we know how to use!
For example when I say {shoot -sv=100} where does the 164 value come from? My rational brain tells me that you would convert it and give Canon the value of 164.
No. If you say shoot -sv=100, the value I send to the camera is 96*log
2(100/3.125), which comes from the APEX definition. CHDK and chdkptp don't generate the "market" value, Canon does.
As I said before, if CHDK knew how to use the "market" values, then I would just let you specify the market value.
The foregoing leads me to this: let us say that "I don't care" about the "real" ISO value. In other words, the values Canon uses I want to treat as "my personal standard values too," for consistency rather than real vs market when shooting from Canon or from CHDK {shoot}. Therefore, I could make a function {myshoot -mysv=} that will execute the inverse relationship (ie set sv = mysv/1.6) at its front end (more accurately, using the data from your spreadsheet),
You should not assume the table I posted applies to any camera other than the SD990.
Is there a way I can do this easily without coding? An option somewhere?
You could print out the table and tape it next to your console I guess
It would be trivial to change shoot to send ISO/1.6 instead of ISO, but given that the relationship isn't well defined across all the cameras and the 1.6 factor isn't valid at the lowest values, I would not make this a standard feature. I guess I could give you an "ISO conversion factor" set option or something.