Even Rouault [Tue, 19 Sep 2017 10:13:34 +0000 (12:13 +0200)]
Fix compilation with AppleClang 8.1.0.
8020042 (#1020)
Even Rouault [Sun, 17 Sep 2017 10:17:49 +0000 (12:17 +0200)]
Build: make sure that -DBUILD_SHARED_LIBS:bool=off is honoured to build only the static lib (#1019)
Even Rouault [Fri, 8 Sep 2017 08:56:49 +0000 (10:56 +0200)]
opj_tcd_mct_decode(): avoid heap buffer overflow when components have not the same number of resolutions. Also fixes an issue with subtile decoding. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3331. Credit to OSS Fuzz
Even Rouault [Fri, 8 Sep 2017 07:53:52 +0000 (09:53 +0200)]
opj_j2k_update_image_data(): restrict optimized path
Even Rouault [Fri, 8 Sep 2017 07:16:51 +0000 (09:16 +0200)]
Use opj_image_data_free() where appropriate (adapted from https://github.com/uclouvain/openjpeg/pull/1015/commits/
dab9db0723a5bb9f3d745f9dd7a0b8b3b18b8054, #1014)
Even Rouault [Thu, 7 Sep 2017 16:01:33 +0000 (18:01 +0200)]
Properly fix
cc893a4ebfaf8c42cf1221ac82c83df91e77340b to avoid heap-buffer-overflow when numcomps < 3
Even Rouault [Thu, 7 Sep 2017 15:52:59 +0000 (17:52 +0200)]
Avoid malloc poisoning issue when including <pthread.h> of uclibc (#1013)
Even Rouault [Thu, 7 Sep 2017 13:32:54 +0000 (15:32 +0200)]
opj_tcd_mct_decode(): fix checks to verify MCT can be done safely. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3305 (master only)
Even Rouault [Wed, 6 Sep 2017 15:33:38 +0000 (17:33 +0200)]
Fix invalid access out of bounds, and bad behaviour, when calling repeatdly opj_get_decoded_tile() on an image with a color palette
Even Rouault [Wed, 6 Sep 2017 14:49:28 +0000 (16:49 +0200)]
Fix 2.2.0 regression when reading codestream with reperated calls to opj_get_decoded_tile() where tile parts of a same tile are not consecutive
This check was introduced per #939, but relied on the incorrect assumption
we decode all the tile parts of all tiles.
Even Rouault [Wed, 6 Sep 2017 13:59:19 +0000 (15:59 +0200)]
Fix null pointer dereference on partial tile decoding when they are empty. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3297 (master only)
Even Rouault [Tue, 5 Sep 2017 21:32:03 +0000 (23:32 +0200)]
Add knownfailures-Ubuntu12.04-gcc4.6.3-x86_64-Release-3rdP.txt
For some reason, the OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_NUM_THREADS=2
configuration fails once PR1010 has been merged in master
( https://travis-ci.org/uclouvain/openjpeg/jobs/
272219011 ) whereas (almost) the same
code in my branch didn't fail per https://travis-ci.org/rouault/openjpeg/jobs/
271738113
The errors we get are the same as with the other x86_64 compilers, so nothing alarming here.
Even Rouault [Tue, 5 Sep 2017 20:18:58 +0000 (22:18 +0200)]
Merge pull request #1010 from rouault/subtile_decoding_stage3
Subtile decoding: memory use reduction and perf improvements
Even Rouault [Mon, 4 Sep 2017 15:35:52 +0000 (17:35 +0200)]
Replace uses of size_t by OPJ_SIZE_T
Even Rouault [Sat, 2 Sep 2017 22:30:36 +0000 (00:30 +0200)]
opj_getopt.c: avoid crash on invalid input (#301)
Even Rouault [Sat, 2 Sep 2017 07:10:53 +0000 (09:10 +0200)]
Improve error message when specifying a too big cp_reduce parameter (#474)
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 18:01:39 +0000 (20:01 +0200)]
opj_tcd_rateallocate(): make sure to use all passes for a lossless layer (#1009)
And save a useless loop, which should be a tiny faster.
Even Rouault [Fri, 1 Sep 2017 17:49:01 +0000 (19:49 +0200)]
opj_j2k_setup_encoder(): emit warnings if tcp_rates are not decreasing or tcp_distoratio are not increasing (#1009)
Even Rouault [Fri, 1 Sep 2017 17:27:56 +0000 (19:27 +0200)]
opj_j2k_setup_encoder(): avoid potential int overflow in computations related to max_cs_size
Even Rouault [Fri, 1 Sep 2017 17:16:35 +0000 (19:16 +0200)]
opj_compress help: revert
32572617765cb9d77302384653a48d793b8f657f and indicate 1 again as being the value to get lossless for -r. In opj_j2k_setup_encoder(), make sure that ll rates[] <= 1.0 are set to 0. Document 0 as being lossless for -q / tcp_distoratio (#1009)
Even Rouault [Fri, 1 Sep 2017 15:32:54 +0000 (17:32 +0200)]
opj_compress help: indicate 0 value, instead of 1, for -r parameter to get lossless encoding (#1009)
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