Even Rouault
1644665a91
opj_j2k_update_image_data(): avoid zero-ing the buffer if not needed
2017-09-01 16:30:52 +02:00
Even Rouault
b2cc8f7f81
Optimize reading/write into sparse array
2017-09-01 16:30:50 +02:00
Even Rouault
0ae3cba340
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.
2017-09-01 16:30:48 +02:00
Even Rouault
5d07d463fd
opj_j2k_decode_tiles(): apply whole single tile image decoding optimization to reading at reduced resolution as well
2017-09-01 16:30:45 +02:00
Even Rouault
98b9310361
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...
2017-09-01 16:30:44 +02:00
Even Rouault
008a12d4fc
TCD: allow tile buffer to be greater than 4GB on 64 bit hosts (but number of pixels must remain under 4 billion)
2017-09-01 16:30:41 +02:00
Even Rouault
d1299d9670
Fix compiler warning in release mode
2017-09-01 16:30:39 +02:00
Even Rouault
d5153ba404
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.
2017-09-01 16:30:37 +02:00
Even Rouault
c37e360a51
opj_tcd_init_tile(): fix typo on overflow detection condition (introduced in previous commit)
2017-09-01 16:30:35 +02:00
Even Rouault
eee5104a88
opj_dwt_decode_partial_tile(): avoid undefined behaviour in lifting operation by properly initializing working buffer
2017-09-01 16:30:32 +02:00
Even Rouault
f9e9942330
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.
2017-09-01 16:30:29 +02:00
Even Rouault
aa7198146b
opj_compress: reorder checks related to code block dimensions, to avoid potential int overflow
2017-09-01 10:26:53 +02:00
Even Rouault
0a25dceca7
opj_j2k_setup_encoder(): validate code block width/height
2017-09-01 10:26:53 +02:00
Even Rouault
84bbb4a874
opj_t1_allocate_buffers(): remove useless overflow checks
2017-09-01 10:26:53 +02:00
Even Rouault
6ce49bf5ae
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
2017-09-01 10:26:18 +02:00
Even Rouault
04b70908a7
Use IDWT whole tile decoding if the area of interest equals to the image bounds, taking into account the reduced resolution factor
2017-08-29 11:40:53 +02:00
Even Rouault
a55c024fc6
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
2017-08-28 17:18:33 +02:00
Even Rouault
8f92fc9791
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.
2017-08-28 14:57:49 +02:00
Even Rouault
5146abc02e
imagetopgx(): improve performance in 8 bit case (relates to broken.jpc test case)
2017-08-24 14:09:31 +02:00
Even Rouault
bc71bd1219
opj_dwt_decode_partial_97(): perf improvement: limit copy of coefficients at end of horizontal pass to actual range of interest
2017-08-23 18:58:32 +02:00
Even Rouault
c97666f72b
j2k.c: fix comment, and remove FIXME
2017-08-21 19:02:04 +02:00
Even Rouault
24d069e3ff
Add comment
2017-08-21 17:19:13 +02:00
Even Rouault
e9bbc6d3dd
Merge pull request #1001 from rouault/subtile_decoding_stage2
...
Subtile decoding: only apply IDWT on areas that participate to the window of interest
2017-08-21 13:02:07 +02:00
Even Rouault
17a7ac42d5
Add comments for filter_width values
2017-08-21 12:25:38 +02:00
Even Rouault
f87c5ef7eb
Subtile decoding: only do 9x7 IDWT computations on relevant areas of tile-component buffer.
2017-08-20 22:02:41 +02:00
Even Rouault
3eed024eb4
pgxtoimage(): avoid excessive memory allocation attempt ( #999 )
2017-08-19 15:45:54 +02:00
Even Rouault
5d40325056
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
2017-08-18 15:08:51 +02:00
Even Rouault
e528531922
pgxtoimage(): fix write stack buffer overflow ( #997 )
2017-08-18 13:39:20 +02:00
Even Rouault
5597522cac
bmp_read_rle8_data(): avoid potential infinite loop ( #996 )
2017-08-18 10:16:38 +02:00
Even Rouault
5d12806091
opj_j2k_update_rates(): grow tile size buffer for some situations
2017-08-17 19:18:48 +02:00
Even Rouault
4b0bfbfabc
Zero-initialize tile buffer regions of skipped code-blocks, so as to make Valgrind happy
2017-08-17 19:05:54 +02:00
Even Rouault
fe338a057c
Sub-tile decoding: only decode precincts and codeblocks that intersect the window specified in opj_set_decode_area()
2017-08-17 19:05:54 +02:00
Even Rouault
17ea17f487
Fix -Wconversion warning
2017-08-17 19:05:29 +02:00
Even Rouault
fd8448ed44
bench_dwt.c: fix signedness related warnings
2017-08-17 17:04:48 +02:00
Even Rouault
da046b73a8
convert.c: fix recently introduced -Wsign-conversion warnings
2017-08-17 17:02:40 +02:00
Even Rouault
9f7d79fd30
opj_getopt_long(): avoid infinite loop on invalid or missing value for an option ( #736 )
2017-08-17 14:52:10 +02:00
Even Rouault
2cd30c2b06
tgatoimage(): avoid excessive memory allocation attempt, and fixes unaligned load ( #995 )
2017-08-17 11:47:40 +02:00
Even Rouault
09e83407fa
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
2017-08-17 11:05:53 +02:00
Even Rouault
8e6c371e66
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)
2017-08-16 18:29:59 +02:00
Even Rouault
1e387de742
Fix build issue of JPWL by adding opj_image_data_alloc() and opj_image_data_free() to src/lib/openmj2 ( #994 )
2017-08-16 17:39:20 +02:00
Even Rouault
c535531f03
opj_t2_encode_packet(): fix potential write heap buffer overflow ( #992 )
2017-08-16 17:20:29 +02:00
Even Rouault
dcac91b8c7
opj_j2k_write_sot(): fix potential write heap buffer overflow ( #991 )
2017-08-16 17:09:10 +02:00
Even Rouault
af76000771
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.
2017-08-16 13:36:52 +02:00
Even Rouault
ab4de904e7
imagetotga(): fix read heap buffer overflow if numcomps < 3 ( #987 )
2017-08-16 13:11:36 +02:00
Even Rouault
9624b2fa47
opj_t2_encode_packet(): only emit an error about insufficiently large output buffer in FINAL_PASS mode. Fixes (master-only) regression added in 0b4fef6d19
2017-08-16 12:52:33 +02:00
Even Rouault
4241ae6fbb
Fix assertion in debug mode / heap-based buffer overflow in opj_write_bytes_LE for Cinema profiles with numresolutions = 1 ( #985 )
2017-08-15 11:55:58 +02:00
Even Rouault
52d5690a6f
Merge pull request #984 from stweil/const
...
Use more const qualifiers
2017-08-14 17:28:26 +02:00
Even Rouault
baf0c1ad45
bmp_read_info_header(): reject bmp files with biBitCount == 0 ( #983 )
2017-08-14 17:26:58 +02:00
Even Rouault
afb308b9cc
Encoder: grow buffer size in opj_tcd_code_block_enc_allocate_data() to avoid write heap buffer overflow in opj_mqc_flush ( #982 )
2017-08-14 17:20:37 +02:00
Stefan Weil
bc59410f25
Use const qualifier for mqc_states
...
This allows more compiler optimizations.
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2017-08-14 14:41:27 +02:00