Ivan Grokhotkov
cc67312433
Add an option to use single-precision floating point in calculations
...
On some platforms, such as microcontrollers with a single-precision
FPU, operations on double type can be significantly slower compared
to the float type. For example, on ESP32-S3 microcontroller, decoding
a QR code of a certain size may take 1700ms when 'double' is used and
just 250ms when 'float' is used.
This commit adds two options to allow for such optimizations:
- QUIRC_FLOAT_TYPE: if defined, it is the type name to use in floating
point calculations. Can be set, for example, using:
CFLAGS += -DQUIRC_FLOAT_TYPE=float
- QUIRC_USE_TGMATH: if defined, Quirc will internally use <tgmath.h>
header, instead of <math.h>. This C99-or-later header allows the
program to call type-generic functions, such as 'sqrt', and the
calls will be dispatched to the correct implementation (sqrtf, sqrt,
sqrtl) depending on the actual argument type. Without setting this
option, the benefit of -DQUIRC_FLOAT_TYPE=float would be limited as
the double-precision versions of math functions would still be used.
The change is backwards compatible with existing applications. If
these macros are not defined, the behavior is the same as before.
2023-03-21 02:04:39 +01:00
Daniel Beer
516d91a94d
Fix stack corruption on oversized QR codes.
...
Issue reported by dswetz on Github:
https://github.com/dlbeer/quirc/issues/119
2021-10-08 19:40:36 +13:00
Daniel Beer
00d5e968b6
Merge pull request #115 from yamt/inspect-opencv-tweak
...
inspect-opencv: Make the display similar to the SDL version
2021-08-27 13:37:05 +12:00
Daniel Beer
937b93a805
Merge pull request #114 from yamt/separate-target
...
Makefile: separate targets for platform dependent stuff
2021-08-27 13:35:36 +12:00
Daniel Beer
dd7d1ab9dd
Merge pull request #113 from JaapHaitsma/master
...
Fixes issue #122
2021-08-27 13:34:24 +12:00
YAMAMOTO Takashi
9cee399e37
inspect-opencv: Make the display similar to the SDL version
...
* fix color conversion bugs
* use smaller text and thinner lines
2021-08-26 15:33:57 +09:00
YAMAMOTO Takashi
50e2899ea8
Makefile: separate targets for platform dependent stuff (v4l, sdl, opencv)
2021-08-26 14:11:12 +09:00
Jaap Haitsma
7bd87c32dd
Use abs instead of fabs to please compiler
2021-08-25 14:50:45 -04:00
Jaap Haitsma
064ebd5b87
Estimate gridsize better. Fixes #112
2021-08-25 14:40:31 -04:00
Daniel Beer
891550cd82
Merge pull request #105 from yamt/inspect-opencv
...
Add OpenCV version of inspect
2021-08-24 13:16:04 +12:00
Daniel Beer
0aa5e2ac27
Merge pull request #109 from JaapHaitsma/master
...
Fix issue #72 grouping and make gridsize determination more robust.
2021-06-21 11:48:10 +12:00
Jaap Haitsma
2ff513b0b4
merge upstream
2021-06-16 23:52:51 -04:00
Jaap Haitsma
c266adbc11
Merge branch 'master' of https://github.com/dlbeer/quirc
2021-06-16 23:36:18 -04:00
Jaap Haitsma
f22a89aefd
do not store .vscode
2021-06-16 23:34:31 -04:00
Jaap Haitsma
0c766593bf
Merge branch 'fix-grouping' of github.com:JaapHaitsma/quirc into fix-grouping
2021-06-16 23:25:54 -04:00
Jaap Haitsma
00f187d94a
Remove unused functions
2021-06-16 22:18:15 -04:00
YAMAMOTO Takashi
4d6675ac17
README.md: Update for inspect-opencv
2021-05-17 08:44:08 +09:00
YAMAMOTO Takashi
003e1d98f1
inspect_opencv.cxx: Adapt to OpenCV
2021-05-17 08:44:08 +09:00
YAMAMOTO Takashi
85d4a7db29
Makefile: Add inspect-opencv target
2021-05-17 08:34:18 +09:00
YAMAMOTO Takashi
633ed29ad9
dbgutil.h: extern "C" for C++
2021-05-17 08:34:18 +09:00
YAMAMOTO Takashi
058d7ab1da
cp inspect.c inspect_opencv.cxx
2021-05-17 08:34:18 +09:00
Daniel Beer
5adb7597c1
Merge pull request #100 from yamt/flood-fill2
...
Improve stack usage for flood filling
2021-05-12 10:30:49 +12:00
YAMAMOTO Takashi
6b3575cd59
flood_fill_seed: Add comments on exit conditions
2021-05-11 15:03:09 +09:00
YAMAMOTO Takashi
22269c9a43
flood_fill_seed: initialize left_up and left_down together
...
Just for readability.
2021-05-11 14:59:22 +09:00
YAMAMOTO Takashi
87ca2b6c2d
flood_fill_seed: Switch from goto to while
2021-05-11 14:57:53 +09:00
YAMAMOTO Takashi
a436fde8a0
flood_fill_seed: Reduce code duplicatino
...
This is also a preparation to eliminate the uses of goto.
2021-05-11 14:54:19 +09:00
YAMAMOTO Takashi
eadbc2caca
flood_fill_seed: Move flood_fill_line to the "caller"
...
This restructure allows us to unify "call" and "return_from_call".
2021-05-11 14:09:24 +09:00
YAMAMOTO Takashi
0b69940876
flood_fill_line: call user callback as well
2021-05-11 14:05:02 +09:00
YAMAMOTO Takashi
38f882b3d6
flood_fill_seed: Simplify the flow by having a single "return point".
2021-05-11 13:46:31 +09:00
YAMAMOTO Takashi
1fa9b0c109
flood_fill_seed: Add assertions
2021-05-11 13:26:59 +09:00
YAMAMOTO Takashi
dd6c64cafe
Add QUIRC_ASSERT
2021-05-11 13:26:47 +09:00
YAMAMOTO Takashi
40def012e7
flood_fill_seed: Unify "left" and "x" vars
...
This reduces the memory usage a bit.
2021-05-11 13:04:02 +09:00
YAMAMOTO Takashi
aad3fc63b6
flood_fill_seed: separate a logic to fill a line
2021-05-11 12:55:44 +09:00
YAMAMOTO Takashi
f1dd37fbdb
quirc_resize: Make this a bit more careful about integer overflows
...
Also, avoid malloc(0), which is not too portable.
2021-05-11 11:05:58 +09:00
YAMAMOTO Takashi
772cd3e73f
Improve stack usage for flood filling
...
* Make flood filling logic iterative (vs recursive)
I basically tried one-to-one conversions here to avoid mistakes.
probably it has a room for later optimizations.
* Use explicit malloc (vs variables on stack) to allocate the work area.
* Estimate the amount of memory for the work area dynamically
from the image size, instead of using a constant FLOOD_FILL_MAX_DEPTH,
which is too big in the most cases.
2021-05-11 11:05:58 +09:00
Daniel Beer
c6fc67088a
Merge pull request #103 from yamt/otsu
...
Fix possible overflows in otsu()
2021-05-11 13:24:56 +12:00
Daniel Beer
e43a33bbc4
Add name of license to LICENSE file.
2021-05-11 10:34:42 +12:00
Daniel Beer
db49540f36
Merge pull request #107 from yamt/shrink-datastream
...
Shrink struct datastream by borrowing the user buffer
2021-05-11 10:30:58 +12:00
Daniel Beer
fd7792177e
Merge pull request #106 from yamt/finder_scan
...
finder_scan: Improve capstone detection on small images
2021-05-11 10:28:03 +12:00
Alexandre Perrin
121d685617
Merge pull request #101 from yamt/doc-make
...
README.md: document requirement on make command
2021-05-02 21:53:32 +02:00
YAMAMOTO Takashi
21b7581b04
Shrink struct datastream by borrowing the user buffer
2021-04-23 13:40:37 +09:00
YAMAMOTO Takashi
65379a7c39
finder_scan: Improve capstone detection on small images
...
When using small captured images, I somehow frequently see failures
to recognize a capstone due to rounding errors.
eg. when pb[] = {2 3 8 3 2}.
This commit tries to improve it by using fixed-point arithmetics.
The scaling factor was chosen somehow arbitrary. A moderate scaling
should be enough.
2021-04-23 10:36:22 +09:00
YAMAMOTO Takashi
734258c775
finder_scan: constify the "check" array
2021-04-23 10:36:22 +09:00
YAMAMOTO Takashi
02ed1066ba
test_grouping: use unsigned variables where it makes more sense
2021-04-23 10:36:22 +09:00
YAMAMOTO Takashi
6fb24d26c8
README.md: document requirement on make command
2021-04-17 22:35:46 +09:00
Alexandre Perrin
ed455904f3
Merge pull request #102 from yamt/readme-quirc-demo-opencv
...
Update for quirc-demo-opencv and dependencies
2021-04-16 20:38:38 +02:00
YAMAMOTO Takashi
ea9b6ee5ef
otsu: Use unsigned for the pixel numbers
...
Because singed numbers don't make sense here.
2021-04-08 13:38:30 +09:00
YAMAMOTO Takashi
de68db7b69
otsu: Use double for weighted sums
...
My phone camera produces 12M-pixel images.
They can easily overflow an int.
2021-04-08 13:38:30 +09:00
YAMAMOTO Takashi
a3623ea4f4
README.md: Update extra dependencies for each programs
2021-04-08 09:49:14 +09:00
YAMAMOTO Takashi
ef1b97015e
Makefile: quirc-demo-opencv doesn't use libjpeg
2021-04-08 09:49:14 +09:00