Commit graph

44 commits

Author SHA1 Message Date
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
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
Jaap Haitsma
2ff513b0b4 merge upstream 2021-06-16 23:52:51 -04:00
Jaap Haitsma
00f187d94a Remove unused functions 2021-06-16 22:18:15 -04: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
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
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
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
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
Claudio Felber
4bc17cf8c6 Optimize quirc_flip() 2020-09-22 12:14:09 +02:00
Claudio Felber
963d6ed126 Fix stack corruption and bus errors while scanning oversized QR codes 2020-09-15 00:51:41 +02:00
Jaap Haitsma
bff065d88b Try all possible groups and new algo for grid_size 2020-05-27 21:33:51 -04:00
Alexandre Perrin
a0b41121e4 Refactored some c99 features
Fixes #68
2020-02-27 20:40:23 +01:00
Alexandre Perrin
026485bdc6 missing <limits.h> header 2019-09-25 11:10:43 +02:00
Alexandre Perrin
bf397f0794
Merge pull request #57 from kAworu/cosmetic
define a QUIRC_PIXEL_ALIAS_IMAGE constant to explicit conditional path
2019-09-25 10:59:08 +02:00
Alexandre Perrin
74459b9f59 Don't assume that sizeof(int) == sizeof(int32_t)
See https://github.com/dlbeer/quirc/pull/59#discussion_r320307589
2019-09-25 10:57:38 +02:00
Sushrut Shringarputale
26d2402655
Fixes issue #60 2019-09-09 23:09:20 -04:00
Sushrut Shringarputale
ed833132d5 Fix some compile-time issues for better production usability
Fixed up some type coercion and uninitialized variable instances for
better production code usability.
2019-08-20 09:50:39 -07:00
Alexandre Perrin
f700e456b4 define a QUIRC_PIXEL_ALIAS_IMAGE constant to explicit conditional path
Before this patch, the "sizeof dance" was confusing, fix #54.
2019-07-02 09:22:25 +02:00
Daniel Beer
5d71b1853e identify: make otsu() static. 2019-05-02 15:56:35 +12:00
Claudio Felber
766f79ce7c Use const struct quirc parameter in otsu() function and fix tabs 2019-04-30 18:44:59 +02:00
Claudio Felber
97ffaabfb5 Replace existing threshold function with Otsu threshold algorithm 2019-04-30 13:02:11 +02:00
Alexandre Perrin
90371f36a0 threshold() uses now the row_average member of struct quirc. 2017-06-11 10:08:58 +02:00
Edward Cragg
c50a89276f identify: fix warning
Fix the following warning when compiling with GCC 6:

lib/identify.c: In function ‘quirc_end’:
lib/identify.c:430:6: warning: ‘last_color’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  int last_color;
      ^~~~~~~~~~
2017-04-30 10:42:14 +01:00
Daniel Beer
84eccbf077 Fix out-of-bounds read in fitness_all(). 2017-03-30 18:05:49 +13:00
Alexandre Perrin
6f0ed74aa2 Comment typo. 2016-10-04 11:13:49 +02:00
Alexandre Perrin
93adbb0b11 Avoid division by zero.
Before this patch, small images (i.e. 7x7 pixels or less) could trigger
SIGFPE because of a (integer) division by zero.
2016-10-04 11:10:55 +02:00
Alexandre Perrin
3a6efb3d84 Large images decoding support
Fix #2, this patch makes large images support a compile time option by
allowing QUIRC_MAX_REGIONS to be tuned via CFLAGS up to 65534 (current
default is 254).
2016-07-15 14:40:40 +02:00
Daniel Beer
8d0eb68255 test_neighbours: fix warnings in static analyzer.
Coverity complains that a negative value of best_v might be passed to
record_qr_grid().

Fix supplied by Harald Eilertsen (http://github.com/snake66/).
2013-02-02 18:07:22 +13:00
Daniel Beer
bdbd932b72 Add protection against stack overflow when flood-filling. 2012-11-13 10:45:55 +13:00
Daniel Beer
a3142bc6b4 Initial commit: version 1.0. 2012-05-04 12:58:42 +12:00