I have made fast quality control disabled by default in release changeset 2136 and trunk 2137. It would be nice to know if the affected cameras actually do the wrong thing with default settings, or the bad quality was due to accidental use of the fast quality control.
I looked at the ixus85_sd770 and ixus90_sd790 (affected in the other thread waterwingz linked). These are similar to each other but a bit different from the a540. Given the differences, it would be quite hard to verify correctness blind. I don't see any evidence that either was a completely wrong copy and paste, someone implemented it the way it is for those cameras.
The most workable way I see to deal this this is
- add a third option to the video override menu, called 'default' like the cameras with quality only.
- make it the default option and an zeroth value of the enum.
- when it is selected, run the original firmware instead of doing the override code. In some cases this is as simple as jumping back into the firmware, but care has to be taken because some cameras do mute on zoom in the same hook. The override involves quite a few changes in the asm code, so getting the default behavior is not trivial.
This is a big job, approximately 100 files have CompressionRateTable, although some of that is commented out or other oddities that aren't actually used.
edit:
on a540, mute_on_zoom is at the very end of the function where the overrides are done, so could be moved after the call
The simplest would probably be to check near the start of the function if overrides are enabled, and if not, jump immediately to the actual firmware instead of the override code.