The current version of the qrdec module (the quirc library, to be exact) now uses single precision floats by default. That makes recognition faster (time required is approx. 60%). Current CHDK side changes are these:
Index: modules/module_exportlist_eabi.inc
===================================================================
--- modules/module_exportlist_eabi.inc (revision 4723)
+++ modules/module_exportlist_eabi.inc (working copy)
@@ -26,3 +26,8 @@
__bswapsi2
__aeabi_ui2d
__aeabi_d2uiz
+ __aeabi_fadd
+ __aeabi_fsub
+ __aeabi_f2iz
+ __aeabi_fcmpgt
+ __aeabi_fcmplt
Index: modules/module_exportlist_elf.inc
===================================================================
--- modules/module_exportlist_elf.inc (revision 4723)
+++ modules/module_exportlist_elf.inc (working copy)
@@ -26,3 +26,8 @@
__bswapsi2
__floatunsidf
__fixunsdfsi
+ __fixsfsi
+ __gtsf2
+ __ltsf2
+ __addsf3
+ __subsf3
I'm currently looking for code that can properly resample (downscale) a scanline of a monochrome image. Haven't found a simple one yet.
edit:
After some testing, it now appears that the crude resizing I'm currently using is less limiting than the quirc library. I managed to decode a v19 sample code (792 byte capacity with the lowest amount of error correction), relatively easily. Perhaps a little higher resolution is also possible, but that's untested.
zbar (the other candidate library) performs much better on more detailed codes (even when using pictures made with my crude resizing method), but the complexity of its code scares me off.