Any drums near?
I smell the Ork sweating fear...
I wonder if we should set all D4 and newer cams to use CAM_USE_ALT_PT_MoveOpticalZoomAt...
Finally worked on this. Attached is a csv of the current define values and proposed patch.
Two cameras (g10 and g12) use CAM_USE_ALT_SET_ZOOM_POINT without CAM_USE_ALT_PT_MoveOpticalZoomAt
The patch adds an undef to maintain the current behavior.
If
@philmoz and
@waterwingz can verify they work with CAM_USE_ALT_PT_MoveOpticalZoomAt, we could eliminate some of the #ifdef rats nest.
D10 was previously like this, switching didn't seem to impact zoom functionality. I verified that clicking the zoom button and set_zoom produced the same distortion correction in jpegs at various zoom levels.
There appear to be 29 remaining digic >=4, non-ILC cameras which don't currently use CAM_USE_ALT_PT_MoveOpticalZoomAt
They are:
sx10
ixus980_sd990
sx1
ixus870_sd880
ixus110_sd960
a2100
sx200is
ixus990_sd970
ixus100_sd780
a1100
ixus95_sd1200
g11
sx120is
s90
sx20
ixus200_sd980
ixus120_sd940
ixus130_sd1400
sx210is
ixus1000_sd4500
s95
a3200
ixus310_elph500hs
ixus230_elph310hs
sx40hs
ixus240_elph320hs
ixus125_elph110hs
g15
s110
That's kind of a lot to change blindly, but I feel like it's probably the right thing to do. Arguments either way are welcome.
Additional things:
Cleaned up the usage of CAM_USE_OPTICAL_MAX_ZOOM_STATUS - This only has effect where CHDK unlocked optical zoom in video. I removed it for the ones that don't in r5500. For modern cameras, the Canon firmware usually (always?) allows zoom in video.
I added
CAM_ILC so the ILC cameras don't have set_zoom code, and error if any of the defines are used.
Three digic 3 cameras (a490, a495, a800) currently use CAM_USE_ALT_PT_MoveOpticalZoomAt
From the commit logs, these were set based on testing not c&p in the initial port. They aren't impacted by the patch, but it suggests other cams might benefit from the refocus behavior.
edit:
updated patch, some #error logic was wrong in -1