Excuse me, but, do we really need to extract the EXIF information from the JPEG?
Can't we create them all ourselves using CHDK-provided functions?
I see the following EXIF (and/or other) information in Windows:
* width and height - shouldn't even be needed, but procase 24 (DIGIC II) or 218 (III) should provide it
* horizontal and vertical resolution - I think it's pretty arbitrary somehow (I'm always seeing 180 dpi), but it can be calculated if desired
* bit depth - I doubt it would be anything but 24
* frames count - uh, one...?
* brand - Canon, I guess
* model - I can't see a function to obtain it in CHDK, but it can certainly be added, since you build for a specific model
* color representation - sRGB, I guess
* shutter speed - some platforms provide a shooting_get_tv_str()
function; it should be ported to all
* aperture - same, shooting_get_av_str()
* flash mode - seems to always be empty for me, but there is shooting_get_flash_mode()
if that's what the tag is intended to contain
* focal distance - either get_focal_length(lens_get_zoom_point())
* F-number - seems to be the same as "aperture"
* exposure - is shutter speed, but can differ slightly from the "shutter speed" tag (1/202s vs 1/200s for instance; "exposure" seems to be the one that's actually shown in the camera when shooting, perhaps "shutter speed" is really the accurate one)
* ISO speed - shooting_get_iso_str()
should be extended to all architectures
* "adjustment mode" - seems to always/often be "pattern" here (not sure how to translate and what is meant here, should check with an English system)
* exposure compensation - propcase 207 in DIGIC III, not sure about DIGIC II
* date - trivial
And of course, this approach would have the advantage of saving the real
parameters when using CHDK overrides (at least if we're careful what functions we use to get the data).