Commit graph

82 commits

Author SHA1 Message Date
Claudio Felber
766f79ce7c Use const struct quirc parameter in otsu() function and fix tabs 2019-04-30 18:44:59 +02:00
Claudio Felber
96a5a380fb Remove quirc.row_average and associated code
quirc.row_average was used by the former threshold function and has
become obsolete with the introduction of the Otsu threshold function.
2019-04-30 18:43:57 +02:00
Claudio Felber
97ffaabfb5 Replace existing threshold function with Otsu threshold algorithm 2019-04-30 13:02:11 +02:00
Daniel Beer
307473dbca
Merge pull request #42 from kAworu/master
fix mjpeg_decode_rgb32().
2018-02-01 12:04:11 +13:00
Alexandre Perrin
d283137a60 fix mjpeg_decode_rgb32().
Before this patch the `rgb` pointer was incremented by the "inner" for
loop but never reset to the start of the buffer by the "outer" while
loop.

This bug was introduced by the refactoring in
6158aeb30a.
2018-01-31 15:29:01 +01:00
Daniel Beer
eca042a787 Merge pull request #40 from kAworu/vla-cleanup
Refactoring to remove the use of c99 VLA
2017-06-11 22:30:33 +12:00
Alexandre Perrin
d3780f3e6f Warning comment improvement. 2017-06-11 10:19:31 +02:00
Alexandre Perrin
6158aeb30a mjpeg_decode_rgb32() refactoring.
Use calloc(3) & free(3) instead of c99 VLA.
2017-06-11 10:08:58 +02:00
Alexandre Perrin
90371f36a0 threshold() uses now the row_average member of struct quirc. 2017-06-11 10:08:58 +02:00
Alexandre Perrin
21f6863577 Added a row_average member to struct quirc.
Prep to remove the VLA from threshold()
2017-06-11 10:08:58 +02:00
Daniel Beer
7b26f6e193 Merge pull request #39 from kAworu/quirc_resize.fix
Fix a potential use-after-free on quirc_resize failure.
2017-06-10 14:02:40 +12:00
Alexandre Perrin
971c9d4e8c refactor quirc_resize
So that the given quirc struct is never invalid once we return to the
caller.
2017-06-09 22:12:06 +02:00
Daniel Beer
90e12be081 Merge pull request #38 from kAworu/Wold-style-declaration
Fixes warnings emitted by gcc -Wold-style-declaration
2017-06-08 19:30:05 +12:00
Alexandre Perrin
1f9edb0b84 Fix a potential use-after-free on quirc_resize failure.
Before this patch, in the event of `q->image` reallocation success but
`q->pixels` failure, `q->image` would point to a freed memory.

After this patch, once quirc_resize() returns, `q->image` consistently
point to a memory address that can be freed.

There is still an inconsistency left in the example codepath: `q->{h,w}`
would hold the "old" values, while `q->image` allocated size would be
based in the requested width/height; hence the comment update about the
state of the QR-code recognizer (it should only be passed to
quirc_destroy()).
2017-06-07 19:37:14 +02:00
Alexandre Perrin
a858ec4896 Fixes warnings emitted by gcc -Wold-style-declaration 2017-06-07 10:24:43 +02:00
Daniel Beer
fce4b94bb2 mjpeg: remember to set dinfo.err. 2017-05-31 17:52:55 +12:00
Daniel Beer
ffc2f9b68a dbgutil: fix double-free on error in jpeg_finish_decompress. 2017-05-31 17:52:26 +12:00
Daniel Beer
5174ba77f8 Merge pull request #34 from kAworu/decode_kanji.fix
Fix Kanji decoding.
2017-05-31 08:23:33 +12:00
Alexandre Perrin
2528ea3955 Comment fix
Bad copy-pasta from
http://www.thonky.com/qr-code-tutorial/kanji-mode-encoding
2017-05-30 19:23:42 +02:00
Alexandre Perrin
e16c02e226 Fix Kanji decoding.
Before this patch, Kanji decoding was broken.
2017-05-30 18:52:31 +02:00
Daniel Beer
3c31aa0987 Fix potential leak on allocation failure in quirc_resize(). 2017-05-18 19:29:02 +12:00
Daniel Beer
c4abca0eec Merge pull request #30 from nuxeh/edcragg/fix-last-color-warning
identify: fix warning
2017-05-01 11:13:35 +12: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
26a182814d Merge pull request #29 from mjbshaw/patch-1
Fix documentation regarding cell_bitmap indexing
2017-04-26 10:28:48 +12:00
Michael Bradshaw
e0a5f5fd3f Fix documentation regarding cell_bitmap indexing 2017-04-25 04:27:17 -07:00
Daniel Beer
84eccbf077 Fix out-of-bounds read in fitness_all(). 2017-03-30 18:05:49 +13:00
Daniel Beer
a5513dc49d Merge pull request #24 from ilgk/gitignore
gitignore: Ignore macOS .DS_Store files.
2017-02-17 10:01:05 +13:00
Daniel Beer
9a299fad73 Merge pull request #25 from ilgk/cpp
quirc.h : Fix C++ function name mangling with extern C.
2017-02-17 09:59:33 +13:00
Philippe Groarke
64a4e58543 quirc.h : Fix C++ function name mangling with extern C. 2017-02-16 14:32:18 -05:00
Philippe Groarke
676d401382 gitignore: Ignore macOS .DS_Store files. 2017-02-16 14:23:24 -05:00
Daniel Beer
59182ef1cd Deinterleave blocks correct.
Use explicit small-block count. Derived value using greedy calculation
wasn't correct in many cases.
2016-12-28 15:37:18 +13:00
Daniel Beer
fccbbce758 version_db.c: fix basic errors. 2016-12-28 14:09:06 +13:00
Daniel Beer
88774dc6cf decode.c: fix count bit-width on alphanumeric payloads. 2016-11-17 11:37:55 +13:00
Daniel Beer
aeb9b88d1a Merge pull request #21 from kAworu/threshold-fix
Avoid division by zero.
2016-10-05 07:48:40 +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
Daniel Beer
87e79e769b Fix Reed-Solomon decoder.
Calculate the correct number of syndromes, and fix calculation of the
error locator polynomial. Many QR codes with logos in the middle should
now work.
2016-09-23 14:34:07 +12:00
Daniel Beer
ab341691c9 Add support for ECI decoding.
ECI values are decoded and stored in the eci field of struct quirc_data.
Constants of the form QUIRC_ECI_* are defined in quirc.h.
2016-09-23 09:50:59 +12:00
Daniel Beer
a8291391ec dbgutil: print unknown data type indicators safely. 2016-09-23 09:40:56 +12:00
Daniel Beer
08fe9f7e0f Fall back to set_strip() on older libpng versions.
Latest Debian release right now packages only 1.2.50.
2016-09-06 08:08:58 +12:00
Daniel Beer
5b26248009 Merge pull request #18 from czarkoff/png
Fix png image handling
2016-08-16 09:36:49 +12:00
Daniel Beer
3ddd39c952 Merge pull request #17 from czarkoff/clock
Consistant typing for test timing variables
2016-08-16 09:35:20 +12:00
Dmitrij D. Czarkoff
8decf20d4f Strip alpha channel from PNG images with tRNS chunk
When PNG transformations are set up, tRNS chunk is converted to alpha channel
early in the process.  Later the decision whether to strip alpha channel or not
is made upon checking (color_type & PNG_COLOR_MASK_ALPHA).  Thus alpha channel
created by tRNS chunk conversion does not get stripped.
2016-08-15 15:39:18 +02:00
Dmitrij D. Czarkoff
2e3e80c1ee Use more accurate bit depth reduction for PNG images 2016-08-15 14:32:17 +02:00
Dmitrij D. Czarkoff
3266bbaf39 Consistant typing for test timing variables 2016-08-15 10:24:01 +02:00
Daniel Beer
b0fc6bfd5f Merge pull request #16 from czarkoff/clock
Use clock_gettime() instead of clock()
2016-08-15 12:26:56 +12:00
Dmitrij D. Czarkoff
1de1a466b8 Store time in milliseconds 2016-08-15 00:28:24 +02:00
Dmitrij D. Czarkoff
c13db788bb Use clock_gettime() instead of clock()
clock() provides approximation of processor time used, measured in "clocks".
Amount of clock per second varies between 100 (Minix, NetBSD, OpenBSD), 128
(DragonFly BSD, FreeBSD, older versions of MacOS X), 1000 (Windows) and 1000000
(Linux, newer versions of MacOS X, Solaris).  The range of these numbers make
conversion to milliseconds (the unit of display in `qrtest`) problematic.
clock_gettime() with its nanosecond time base appears to be a better and more
portable alternative to clock().
2016-08-13 23:14:55 +02:00
Dmitrij D. Czarkoff
e9b279786a Ignore libquirc.so with any suffix 2016-08-11 12:26:08 +02:00
Dmitrij D. Czarkoff
47f99adf28 Move -fPIC to default CFLAGS 2016-08-11 12:25:08 +02:00