summaryrefslogtreecommitdiff
path: root/src/lib
AgeCommit message (Collapse)Author
2017-09-19Add capability to decode only a subset of all components of an image.Even Rouault
This adds a opj_set_decoded_components(opj_codec_t *p_codec, OPJ_UINT32 numcomps, const OPJ_UINT32* comps_indices) function, and equivalent "opj_decompress -c compno[,compno]*" option. When specified, neither the MCT transform nor JP2 channel transformations will be applied. Tests added for various combinations of whole image vs tiled-based decoding, full or reduced resolution, use of decode area or not.
2017-09-19Fix warnings and errors when compiling with a c++ compiler (#1021)Even Rouault
2017-09-19Fix compilation with AppleClang 8.1.0.8020042 (#1020)Even Rouault
2017-09-17Build: make sure that -DBUILD_SHARED_LIBS:bool=off is honoured to build only ↵Even Rouault
the static lib (#1019)
2017-09-08opj_tcd_mct_decode(): avoid heap buffer overflow when components have not ↵Even Rouault
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
2017-09-08opj_j2k_update_image_data(): restrict optimized pathEven Rouault
2017-09-08Use opj_image_data_free() where appropriate (adapted from ↵Even Rouault
https://github.com/uclouvain/openjpeg/pull/1015/commits/dab9db0723a5bb9f3d745f9dd7a0b8b3b18b8054, #1014)
2017-09-07Properly fix cc893a4ebfaf8c42cf1221ac82c83df91e77340b to avoid ↵Even Rouault
heap-buffer-overflow when numcomps < 3
2017-09-07Avoid malloc poisoning issue when including <pthread.h> of uclibc (#1013)Even Rouault
2017-09-07opj_tcd_mct_decode(): fix checks to verify MCT can be done safely. Fixes ↵Even Rouault
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3305 (master only)
2017-09-06Fix invalid access out of bounds, and bad behaviour, when calling repeatdly ↵Even Rouault
opj_get_decoded_tile() on an image with a color palette
2017-09-06Fix 2.2.0 regression when reading codestream with reperated calls to ↵Even Rouault
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.
2017-09-06Fix null pointer dereference on partial tile decoding when they are empty. ↵Even Rouault
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3297 (master only)
2017-09-05Merge pull request #1010 from rouault/subtile_decoding_stage3Even Rouault
Subtile decoding: memory use reduction and perf improvements
2017-09-04Replace uses of size_t by OPJ_SIZE_TEven Rouault
2017-09-02Improve error message when specifying a too big cp_reduce parameter (#474)Even Rouault
2017-09-01opj_v4dwt_decode_step1_sse(): rework a bit to improve code generationEven Rouault
2017-09-01opj_j2k_update_image_data(): avoid allocating image buffer if we can just ↵Even Rouault
reuse the tile buffer one
2017-09-01opj_t1_clbl_decode_processor(): use SSE2 in subtile decoding code path, for ↵Even Rouault
irreversible
2017-09-01Replace error message 'Not enough memory for tile data' by 'Size of tile ↵Even Rouault
data exceeds system limits' (refs https://github.com/uclouvain/openjpeg/pull/730#issuecomment-326654188)
2017-09-01opj_t1_decode_cblk(): move some code to codeblock processor for ↵Even Rouault
(theoretical) better multi-threading in subtile decoding
2017-09-01sparse_array: optimizations for lossy caseEven Rouault
2017-09-01opj_tcd_rateallocate(): make sure to use all passes for a lossless layer (#1009)Even Rouault
And save a useless loop, which should be a tiny faster.
2017-09-01opj_j2k_setup_encoder(): emit warnings if tcp_rates are not decreasing or ↵Even Rouault
tcp_distoratio are not increasing (#1009)
2017-09-01opj_j2k_setup_encoder(): avoid potential int overflow in computations ↵Even Rouault
related to max_cs_size
2017-09-01opj_compress help: revert 32572617765cb9d77302384653a48d793b8f657f and ↵Even Rouault
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)
2017-09-01opj_v4dwt_decode_step2_sse(): loop unrollEven Rouault
2017-09-01opj_dwt_decode_partial_97(): simplify/more efficient use of sparse arrays in ↵Even Rouault
vertical pass
2017-09-01opj_tcd_dc_level_shift_decode(): optimize lossy caseEven Rouault
2017-09-01opj_dwt_decode_partial_1_parallel(): add SSE2 optimizationEven Rouault
2017-09-01Sub-tile decoding: speed up vertical pass in IDWT5x3 by processing 4 cols at ↵Even Rouault
a time
2017-09-01Tiny perf improvement in T1 stage for subtile decodingEven Rouault
2017-09-01Optimize opj_dwt_decode_partial_1() when cas == 0Even Rouault
2017-09-01opj_j2k_update_image_data(): avoid zero-ing the buffer if not neededEven Rouault
2017-09-01Optimize reading/write into sparse arrayEven Rouault
2017-09-01Allow several repeated calls to opj_set_decode_area() and opj_decode() for ↵Even Rouault
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.
2017-09-01opj_j2k_decode_tiles(): apply whole single tile image decoding optimization ↵Even Rouault
to reading at reduced resolution as well
2017-09-01Various changes to allow tile buffers of more than 4giga pixelsEven Rouault
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...
2017-09-01TCD: allow tile buffer to be greater than 4GB on 64 bit hosts (but number of ↵Even Rouault
pixels must remain under 4 billion)
2017-09-01Fix compiler warning in release modeEven Rouault
2017-09-01Remove limitation that prevents from opening images bigger than 4 billion pixelsEven Rouault
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.
2017-09-01opj_tcd_init_tile(): fix typo on overflow detection condition (introduced in ↵Even Rouault
previous commit)
2017-09-01opj_dwt_decode_partial_tile(): avoid undefined behaviour in lifting ↵Even Rouault
operation by properly initializing working buffer
2017-09-01Sub-tile decoding: only allocate tile component buffer of the needed dimensionEven Rouault
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.
2017-09-01opj_j2k_setup_encoder(): validate code block width/heightEven Rouault
2017-09-01opj_t1_allocate_buffers(): remove useless overflow checksEven Rouault
2017-09-01Fix undefined shift behaviour in opj_dwt_is_whole_tile_decoding(). Fixes ↵Even Rouault
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3255. Credit to OSS Fuzz
2017-08-29Use IDWT whole tile decoding if the area of interest equals to the image ↵Even Rouault
bounds, taking into account the reduced resolution factor
2017-08-28Subtile decoding: fix overflows in subband coordinate computation that cause ↵Even Rouault
later buffer overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3115. Credit to OSS Fuzz. master only
2017-08-28Make opj_set_decode_area() and opj_decode() take into account ↵Even Rouault
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.