Even Rouault [Mon, 4 Sep 2017 15:35:52 +0000 (17:35 +0200)]
Replace uses of size_t by OPJ_SIZE_T
Even Rouault [Fri, 1 Sep 2017 20:09:58 +0000 (22:09 +0200)]
opj_v4dwt_decode_step1_sse(): rework a bit to improve code generation
Even Rouault [Fri, 1 Sep 2017 19:36:35 +0000 (21:36 +0200)]
opj_j2k_update_image_data(): avoid allocating image buffer if we can just reuse the tile buffer one
Even Rouault [Fri, 1 Sep 2017 19:17:26 +0000 (21:17 +0200)]
opj_t1_clbl_decode_processor(): use SSE2 in subtile decoding code path, for irreversible
Even Rouault [Fri, 1 Sep 2017 18:43:39 +0000 (20:43 +0200)]
Replace error message 'Not enough memory for tile data' by 'Size of tile data exceeds system limits' (refs https://github.com/uclouvain/openjpeg/pull/730#issuecomment-
326654188)
Even Rouault [Fri, 1 Sep 2017 14:31:13 +0000 (16:31 +0200)]
opj_t1_decode_cblk(): move some code to codeblock processor for (theoretical) better multi-threading in subtile decoding
Even Rouault [Fri, 1 Sep 2017 14:31:10 +0000 (16:31 +0200)]
sparse_array: optimizations for lossy case
Even Rouault [Fri, 1 Sep 2017 14:31:08 +0000 (16:31 +0200)]
opj_v4dwt_decode_step2_sse(): loop unroll
Even Rouault [Fri, 1 Sep 2017 14:31:06 +0000 (16:31 +0200)]
opj_dwt_decode_partial_97(): simplify/more efficient use of sparse arrays in vertical pass
Even Rouault [Fri, 1 Sep 2017 14:31:04 +0000 (16:31 +0200)]
opj_tcd_dc_level_shift_decode(): optimize lossy case
Even Rouault [Fri, 1 Sep 2017 14:31:02 +0000 (16:31 +0200)]
opj_dwt_decode_partial_1_parallel(): add SSE2 optimization
Even Rouault [Fri, 1 Sep 2017 14:31:00 +0000 (16:31 +0200)]
Sub-tile decoding: speed up vertical pass in IDWT5x3 by processing 4 cols at a time
Even Rouault [Fri, 1 Sep 2017 14:30:58 +0000 (16:30 +0200)]
Tiny perf improvement in T1 stage for subtile decoding
Even Rouault [Fri, 1 Sep 2017 14:30:56 +0000 (16:30 +0200)]
test_decode_area: accept user bounds in -strip_height mode
Even Rouault [Fri, 1 Sep 2017 14:30:54 +0000 (16:30 +0200)]
Optimize opj_dwt_decode_partial_1() when cas == 0
Even Rouault [Fri, 1 Sep 2017 14:30:52 +0000 (16:30 +0200)]
opj_j2k_update_image_data(): avoid zero-ing the buffer if not needed
Even Rouault [Fri, 1 Sep 2017 14:30:50 +0000 (16:30 +0200)]
Optimize reading/write into sparse array
Even Rouault [Fri, 1 Sep 2017 14:30:48 +0000 (16:30 +0200)]
Allow several repeated calls to opj_set_decode_area() and opj_decode() for single-tiled images
* Only works for single-tiled images --> will error out cleanly, as currently
in other cases
* Save re-reading the codestream for the tile, and re-use code-blocks of the
previous decoding pass.
* Future improvements might involve improving opj_decompress, and the image writing logic,
to use this strategy.
Even Rouault [Fri, 1 Sep 2017 14:30:45 +0000 (16:30 +0200)]
opj_j2k_decode_tiles(): apply whole single tile image decoding optimization to reading at reduced resolution as well
Even Rouault [Fri, 1 Sep 2017 14:30:44 +0000 (16:30 +0200)]
Various changes to allow tile buffers of more than 4giga pixels
Untested though, since that means a tile buffer of at least 16 GB. So
there might be places where uint32 overflow on multiplication still occur...
Even Rouault [Fri, 1 Sep 2017 14:30:41 +0000 (16:30 +0200)]
TCD: allow tile buffer to be greater than 4GB on 64 bit hosts (but number of pixels must remain under 4 billion)
Even Rouault [Fri, 1 Sep 2017 14:30:39 +0000 (16:30 +0200)]
Fix compiler warning in release mode
Even Rouault [Fri, 1 Sep 2017 14:30:37 +0000 (16:30 +0200)]
Remove limitation that prevents from opening images bigger than 4 billion pixels
However the intermediate buffer for decoding must still be smaller than 4
billion pixels, so this is useful for decoding at a lower resolution level,
or subtile decoding.
Even Rouault [Fri, 1 Sep 2017 14:30:35 +0000 (16:30 +0200)]
opj_tcd_init_tile(): fix typo on overflow detection condition (introduced in previous commit)
Even Rouault [Fri, 1 Sep 2017 14:30:32 +0000 (16:30 +0200)]
opj_dwt_decode_partial_tile(): avoid undefined behaviour in lifting operation by properly initializing working buffer
Even Rouault [Fri, 1 Sep 2017 14:30:29 +0000 (16:30 +0200)]
Sub-tile decoding: only allocate tile component buffer of the needed dimension
Instead of being the full tile size.
* Use a sparse array mechanism to store code-blocks and intermediate stages of
IDWT.
* IDWT, DC level shift and MCT stages are done just on that smaller array.
* Improve copy of tile component array to final image, by saving an intermediate
buffer.
* For full-tile decoding at reduced resolution, only allocate the tile buffer to
the reduced size, instead of the full-resolution size.
Even Rouault [Mon, 21 Aug 2017 21:21:39 +0000 (23:21 +0200)]
opj_compress: reorder checks related to code block dimensions, to avoid potential int overflow
Even Rouault [Mon, 21 Aug 2017 21:20:51 +0000 (23:20 +0200)]
opj_j2k_setup_encoder(): validate code block width/height
Even Rouault [Mon, 21 Aug 2017 21:12:45 +0000 (23:12 +0200)]
opj_t1_allocate_buffers(): remove useless overflow checks
Even Rouault [Fri, 1 Sep 2017 08:26:18 +0000 (10:26 +0200)]
Fix undefined shift behaviour in opj_dwt_is_whole_tile_decoding(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3255. Credit to OSS Fuzz
Even Rouault [Tue, 29 Aug 2017 09:40:53 +0000 (11:40 +0200)]
Use IDWT whole tile decoding if the area of interest equals to the image bounds, taking into account the reduced resolution factor
Even Rouault [Mon, 28 Aug 2017 16:07:44 +0000 (18:07 +0200)]
Even Rouault [Mon, 28 Aug 2017 15:18:33 +0000 (17:18 +0200)]
Subtile decoding: fix overflows in subband coordinate computation that cause later buffer overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3115. Credit to OSS Fuzz. master only
Even Rouault [Mon, 28 Aug 2017 12:57:49 +0000 (14:57 +0200)]
Make opj_set_decode_area() and opj_decode() take into account opj_set_decoded_resolution_factor() (#1006, affect API use)
* Better document usage of opj_set_decode_area(), ie expecting coordinates
in full resolution/reference grid even if requesting at a lower resolution
factor
* Make sure that image->comps[].factor is set by opj_set_decode_area() and
opj_decode() from the value specified in opj_set_decoded_resolution_factor()
* opj_decompress: add 2 environmenet variables to test alternate ways of
using the API, namely USE_OPJ_SET_DECODED_RESOLUTION_FACTOR=YES to use
opj_set_decoded_resolution_factor() instead of parameters.cp_reduce, and
SKIP_OPJ_SET_DECODE_AREA=YES to not call opj_set_decode_area() if -d is
not specified.
Even Rouault [Thu, 24 Aug 2017 12:38:24 +0000 (14:38 +0200)]
Another cleanup in knownfailures-* files
Even Rouault [Thu, 24 Aug 2017 12:32:36 +0000 (14:32 +0200)]
Remove test steps from specialized knownfailures- that are already in knownfailures-all.txt
Even Rouault [Thu, 24 Aug 2017 12:31:13 +0000 (14:31 +0200)]
issue104_jpxstream.jp2 decompresses just fine (and like Kakadu). Update md5refs.txt and remove from knownfailures
Even Rouault [Thu, 24 Aug 2017 12:09:34 +0000 (14:09 +0200)]
Remove broken.jpc test from known failures, by avoiding too long processing time
Even Rouault [Thu, 24 Aug 2017 12:09:31 +0000 (14:09 +0200)]
imagetopgx(): improve performance in 8 bit case (relates to broken.jpc test case)
Even Rouault [Thu, 24 Aug 2017 11:23:25 +0000 (13:23 +0200)]
Remove -NR-DEC-p1_06.j2k-156-decode and NR-DEC-p1_06.j2k-164-decode from knownfailures
and make them explicit failures. The result images are empty at the requested resolution
Even Rouault [Wed, 23 Aug 2017 16:58:32 +0000 (18:58 +0200)]
opj_dwt_decode_partial_97(): perf improvement: limit copy of coefficients at end of horizontal pass to actual range of interest
Even Rouault [Mon, 21 Aug 2017 21:06:53 +0000 (23:06 +0200)]
test_tile_encoder: fix checks on argc
Even Rouault [Mon, 21 Aug 2017 17:02:04 +0000 (19:02 +0200)]
j2k.c: fix comment, and remove FIXME
Even Rouault [Mon, 21 Aug 2017 15:19:13 +0000 (17:19 +0200)]
Add comment
Even Rouault [Mon, 21 Aug 2017 11:02:07 +0000 (13:02 +0200)]
Merge pull request #1001 from rouault/subtile_decoding_stage2
Subtile decoding: only apply IDWT on areas that participate to the window of interest
Even Rouault [Mon, 21 Aug 2017 10:25:38 +0000 (12:25 +0200)]
Add comments for filter_width values
Even Rouault [Sun, 20 Aug 2017 20:02:41 +0000 (22:02 +0200)]
Subtile decoding: only do 9x7 IDWT computations on relevant areas of tile-component buffer.
Even Rouault [Sat, 19 Aug 2017 13:45:54 +0000 (15:45 +0200)]
pgxtoimage(): avoid excessive memory allocation attempt (#999)
Even Rouault [Fri, 18 Aug 2017 13:08:51 +0000 (15:08 +0200)]
Subtile decoding: only do 5x3 IDWT computations on relevant areas of tile-component buffer.
This lowers 'bin/opj_decompress -i ../MAPA.jp2 -o out.tif -d 0,0,256,256'
down to 0.860s
Even Rouault [Fri, 18 Aug 2017 11:39:20 +0000 (13:39 +0200)]
pgxtoimage(): fix write stack buffer overflow (#997)
Even Rouault [Fri, 18 Aug 2017 10:30:11 +0000 (12:30 +0200)]
test_decode_area: fix to make it work with odd image dimensions
Even Rouault [Fri, 18 Aug 2017 08:16:38 +0000 (10:16 +0200)]
bmp_read_rle8_data(): avoid potential infinite loop (#996)
Even Rouault [Thu, 17 Aug 2017 17:18:48 +0000 (19:18 +0200)]
opj_j2k_update_rates(): grow tile size buffer for some situations
Even Rouault [Thu, 17 Aug 2017 14:07:19 +0000 (16:07 +0200)]
Zero-initialize tile buffer regions of skipped code-blocks, so as to make Valgrind happy
Even Rouault [Mon, 14 Aug 2017 11:23:57 +0000 (13:23 +0200)]
Sub-tile decoding: only decode precincts and codeblocks that intersect the window specified in opj_set_decode_area()
Even Rouault [Thu, 17 Aug 2017 17:05:29 +0000 (19:05 +0200)]
Fix -Wconversion warning
Even Rouault [Thu, 17 Aug 2017 15:04:48 +0000 (17:04 +0200)]
bench_dwt.c: fix signedness related warnings
Even Rouault [Thu, 17 Aug 2017 15:02:40 +0000 (17:02 +0200)]
convert.c: fix recently introduced -Wsign-conversion warnings
Even Rouault [Thu, 17 Aug 2017 12:52:10 +0000 (14:52 +0200)]
opj_getopt_long(): avoid infinite loop on invalid or missing value for an option (#736)
Even Rouault [Thu, 17 Aug 2017 10:01:16 +0000 (12:01 +0200)]
opj_decompress_fuzzer.cpp: reject images with too big tiles. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2918. Credit to OSS Fuzz
Even Rouault [Thu, 17 Aug 2017 09:47:40 +0000 (11:47 +0200)]
tgatoimage(): avoid excessive memory allocation attempt, and fixes unaligned load (#995)
Even Rouault [Thu, 17 Aug 2017 09:05:53 +0000 (11:05 +0200)]
Avoid asserting on assert(i == pcol) in opj_jp2_apply_pclr() by adding new check in opj_jp2_check_color(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3068. Credit to OSS Fuzz
Even Rouault [Wed, 16 Aug 2017 16:29:59 +0000 (18:29 +0200)]
opj_t1_encode_cblk(): avoid uint32 overflow when numbps = 0 (which is well defined behaviour, and is properly handled here, but better avoid it to detect real issues)
Even Rouault [Wed, 16 Aug 2017 15:38:47 +0000 (17:38 +0200)]
Fix build issue of JPWL by adding opj_image_data_alloc() and opj_image_data_free() to src/lib/openmj2 (#994)
Even Rouault [Wed, 16 Aug 2017 15:20:29 +0000 (17:20 +0200)]
opj_t2_encode_packet(): fix potential write heap buffer overflow (#992)
Even Rouault [Wed, 16 Aug 2017 15:09:10 +0000 (17:09 +0200)]
opj_j2k_write_sot(): fix potential write heap buffer overflow (#991)
Even Rouault [Wed, 16 Aug 2017 11:36:52 +0000 (13:36 +0200)]
tiftoimage(): fix read heap buffer overflow (#988)
The number of components is given only by TIFFTAG_SAMPLESPERPIXEL / tiSpp.
Querying TIFFTAG_EXTRASAMPLES only give information about which channel is
the alpha channel, but we mostly ignore it for now, so remove that part of the
code.
Even Rouault [Wed, 16 Aug 2017 11:11:36 +0000 (13:11 +0200)]
imagetotga(): fix read heap buffer overflow if numcomps < 3 (#987)
Even Rouault [Wed, 16 Aug 2017 10:52:33 +0000 (12:52 +0200)]
opj_t2_encode_packet(): only emit an error about insufficiently large output buffer in FINAL_PASS mode. Fixes (master-only) regression added in
0b4fef6d1901254e41ab74ed681daba477d724c3
Even Rouault [Tue, 15 Aug 2017 09:55:58 +0000 (11:55 +0200)]
Fix assertion in debug mode / heap-based buffer overflow in opj_write_bytes_LE for Cinema profiles with numresolutions = 1 (#985)
Even Rouault [Mon, 14 Aug 2017 15:28:26 +0000 (17:28 +0200)]
Merge pull request #984 from stweil/const
Use more const qualifiers
Even Rouault [Mon, 14 Aug 2017 15:26:58 +0000 (17:26 +0200)]
bmp_read_info_header(): reject bmp files with biBitCount == 0 (#983)
Even Rouault [Mon, 14 Aug 2017 15:20:37 +0000 (17:20 +0200)]
Encoder: grow buffer size in opj_tcd_code_block_enc_allocate_data() to avoid write heap buffer overflow in opj_mqc_flush (#982)
Stefan Weil [Mon, 14 Aug 2017 12:36:06 +0000 (14:36 +0200)]
Use const qualifier for mqc_states
This allows more compiler optimizations.
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Stefan Weil [Sun, 13 Aug 2017 20:57:31 +0000 (22:57 +0200)]
Use const qualifier for j2k_prog_order_list
This allows more compiler optimizations.
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Even Rouault [Fri, 11 Aug 2017 13:13:35 +0000 (15:13 +0200)]
Merge pull request #980 from szukw000/changes-for-ppc64-converttif
Changes in converttif.c for PPC64
szukw000 [Thu, 10 Aug 2017 22:06:23 +0000 (00:06 +0200)]
Changes in converttif.c for PPC64
Even Rouault [Thu, 10 Aug 2017 14:58:36 +0000 (16:58 +0200)]
Fix argument order in error message of previous commit
Even Rouault [Thu, 10 Aug 2017 14:49:47 +0000 (16:49 +0200)]
Propagate event manager down to opj_t2_encode_packet() and use it to emit an error message when the output buffer is too small
Even Rouault [Thu, 10 Aug 2017 12:43:16 +0000 (14:43 +0200)]
Fix crash on encoding if using opj_set_default_encoder_parameters() without defining tcp_numlayers
Even Rouault [Thu, 10 Aug 2017 10:30:31 +0000 (12:30 +0200)]
Reformat tests/test_tile_encoder.c
Even Rouault [Thu, 10 Aug 2017 09:45:49 +0000 (11:45 +0200)]
Improve doc of opj_tccp_info_t::cblkw and cblkh
Antonin Descampe [Thu, 10 Aug 2017 04:51:16 +0000 (21:51 -0700)]
Comment back previous version in abi-check.sh
Antonin Descampe [Thu, 10 Aug 2017 04:35:30 +0000 (21:35 -0700)]
update abi-check for latest release
Antonin Descampe [Thu, 10 Aug 2017 00:31:50 +0000 (17:31 -0700)]
Preparing Release v2.2.0
Antonin Descampe [Thu, 10 Aug 2017 00:28:17 +0000 (17:28 -0700)]
Preparing Release v2.2.0
Even Rouault [Wed, 9 Aug 2017 23:14:35 +0000 (01:14 +0200)]
.travis.yml: add 'dist: precise' for config that requires it
Even Rouault [Wed, 9 Aug 2017 15:37:05 +0000 (17:37 +0200)]
Remove useless opj_tcd_t::enumcs field added per #975
Even Rouault [Wed, 9 Aug 2017 13:04:29 +0000 (15:04 +0200)]
Doc: fix error in previous commit
Even Rouault [Wed, 9 Aug 2017 12:50:59 +0000 (14:50 +0200)]
tcd.h: doc fixes and improvements
Even Rouault [Wed, 9 Aug 2017 12:13:58 +0000 (14:13 +0200)]
Document qmfbid values
Even Rouault [Wed, 9 Aug 2017 09:34:08 +0000 (11:34 +0200)]
Partial revert BPC related check of #975 (#979)
PR #975 introduced a check that rejects images that have different bit depth/sign
per compoment in SIZ marker if the JP2 IHDR box has BPC != 255
This didn't work properly if decoding a .j2k file since the new bit added in
opj_cp_t wasn't initialized to the right value.
For clarity, tThis new bit has also been renamed to allow_different_bit_depth_sign
But looking closer at the code, it seems we were already tolerant to inconsistencies.
For example we parsed a JP2 BPCC box even if BPC != 255 (just a warning is emitted)
So failing hard in opj_j2k_read_siz() wouldn't be very inconsistent, and that
alone cannot protect against other issues, so just emit a warning if BPC != 255
and the SIZ marker contains different bit depth/sign per component.
Note: we could also check that the content of JP2 BPCC box is consistant with the one
of the SIZ marker.
Even Rouault [Wed, 9 Aug 2017 08:03:59 +0000 (10:03 +0200)]
opj_decompress: document -quiet option, and remove spurious newline output
Even Rouault [Wed, 9 Aug 2017 07:50:39 +0000 (09:50 +0200)]
src/bin/jpwl/convert.c pgxtoimage(): add missing fclose() (#977)
Even Rouault [Wed, 9 Aug 2017 07:42:30 +0000 (09:42 +0200)]
imagetobmp: avoid shift by -1 (relates to #811)
Antonin Descampe [Wed, 9 Aug 2017 01:05:37 +0000 (18:05 -0700)]
Fix remaining warning
format specifier mismatch in #975
Antonin Descampe [Tue, 8 Aug 2017 23:51:54 +0000 (16:51 -0700)]
Merge pull request #975 from szukw000/changes-for-afl-tests
Catch images broken by AFL
Even Rouault [Mon, 7 Aug 2017 18:17:36 +0000 (20:17 +0200)]
Merge pull request #968 from rouault/reduce_memory_decoding
Reduce memory decoding
Even Rouault [Thu, 6 Jul 2017 17:34:21 +0000 (19:34 +0200)]
Slight improvement in management of code block chunks
Instead of having the chunk array at the segment level, we can move it down to
the codeblock itself since segments are filled in sequential order.
Limit the number of memory allocation, and decrease slightly the memory usage.
On MAPA_005.jp2
n4:
1871312549 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1:
1610689344 0x4E781E7: opj_aligned_malloc (opj_malloc.c:61)
n1:
1610689344 0x4E71D1B: opj_alloc_tile_component_data (tcd.c:676)
n1:
1610689344 0x4E726CF: opj_tcd_init_decode_tile (tcd.c:816)
n1:
1610689344 0x4E4BE39: opj_j2k_read_tile_header (j2k.c:8617)
n1:
1610689344 0x4E4C902: opj_j2k_decode_tiles (j2k.c:10348)
n1:
1610689344 0x4E4E3CE: opj_j2k_decode (j2k.c:7846)
n1:
1610689344 0x4E53002: opj_jp2_decode (jp2.c:1564)
n0:
1610689344 0x40374E: main (opj_decompress.c:1459)
n1:
219232541 0x4E4BC50: opj_j2k_read_tile_header (j2k.c:4683)
n1:
219232541 0x4E4C902: opj_j2k_decode_tiles (j2k.c:10348)
n1:
219232541 0x4E4E3CE: opj_j2k_decode (j2k.c:7846)
n1:
219232541 0x4E53002: opj_jp2_decode (jp2.c:1564)
n0:
219232541 0x40374E: main (opj_decompress.c:1459)
n1:
23893200 0x4E72735: opj_tcd_init_decode_tile (tcd.c:1225)
n1:
23893200 0x4E4BE39: opj_j2k_read_tile_header (j2k.c:8617)
n1:
23893200 0x4E4C902: opj_j2k_decode_tiles (j2k.c:10348)
n1:
23893200 0x4E4E3CE: opj_j2k_decode (j2k.c:7846)
n1:
23893200 0x4E53002: opj_jp2_decode (jp2.c:1564)
n0:
23893200 0x40374E: main (opj_decompress.c:1459)
n0:
17497464 in 52 places, all below massif's threshold (1.00%)
Even Rouault [Thu, 6 Jul 2017 14:11:11 +0000 (16:11 +0200)]
Decoding: do not allocate memory for the codestream of each codeblock
Currently we allocate at least 8192 bytes for each codeblock, and copy
the relevant parts of the codestream in that per-codeblock buffer as we
decode packets.
As the whole codestream for the tile is ingested in memory and alive
during the decoding, we can directly point to it instead of copying. But
to do that, we need an intermediate concept, a 'chunk' of code-stream segment,
given that segments may be made of data at different places in the code-stream
when quality layers are used.
With that change, the decoding of MAPA_005.jp2 goes down from the previous
improvement of 2.7 GB down to 1.9 GB.
New profile:
n4:
1885648469 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1:
1610689344 0x4E78287: opj_aligned_malloc (opj_malloc.c:61)
n1:
1610689344 0x4E71D7B: opj_alloc_tile_component_data (tcd.c:676)
n1:
1610689344 0x4E7272C: opj_tcd_init_decode_tile (tcd.c:816)
n1:
1610689344 0x4E4BDD9: opj_j2k_read_tile_header (j2k.c:8618)
n1:
1610689344 0x4E4C8A2: opj_j2k_decode_tiles (j2k.c:10349)
n1:
1610689344 0x4E4E36E: opj_j2k_decode (j2k.c:7847)
n1:
1610689344 0x4E52FA2: opj_jp2_decode (jp2.c:1564)
n0:
1610689344 0x40374E: main (opj_decompress.c:1459)
n1:
219232541 0x4E4BBF0: opj_j2k_read_tile_header (j2k.c:4685)
n1:
219232541 0x4E4C8A2: opj_j2k_decode_tiles (j2k.c:10349)
n1:
219232541 0x4E4E36E: opj_j2k_decode (j2k.c:7847)
n1:
219232541 0x4E52FA2: opj_jp2_decode (jp2.c:1564)
n0:
219232541 0x40374E: main (opj_decompress.c:1459)
n1:
39822000 0x4E727A9: opj_tcd_init_decode_tile (tcd.c:1219)
n1:
39822000 0x4E4BDD9: opj_j2k_read_tile_header (j2k.c:8618)
n1:
39822000 0x4E4C8A2: opj_j2k_decode_tiles (j2k.c:10349)
n1:
39822000 0x4E4E36E: opj_j2k_decode (j2k.c:7847)
n1:
39822000 0x4E52FA2: opj_jp2_decode (jp2.c:1564)
n0:
39822000 0x40374E: main (opj_decompress.c:1459)
n0:
15904584 in 52 places, all below massif's threshold (1.00%)