<feed xmlns='http://www.w3.org/2005/Atom'>
<title>openjpeg/src/bin/jp2, branch floating_point_irreversible_encoding</title>
<subtitle>Fork of openjpeg library for JPEG2000 encoding and decoding</subtitle>
<id>https://git.carlh.net/cgit/openjpeg/atom?h=floating_point_irreversible_encoding</id>
<link rel='self' href='https://git.carlh.net/cgit/openjpeg/atom?h=floating_point_irreversible_encoding'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/'/>
<updated>2020-05-20T18:30:21Z</updated>
<entry>
<title>Add multithreading support in the T1 (entropy phase) encoder</title>
<updated>2020-05-20T18:30:21Z</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2020-04-29T09:50:17Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=97eb7e0bf17b476d516262e0af462ec7eeb8f505'/>
<id>urn:sha1:97eb7e0bf17b476d516262e0af462ec7eeb8f505</id>
<content type='text'>
- API wise, opj_codec_set_threads() can be used on the encoding side
- opj_compress has a -threads switch similar to opj_uncompress
</content>
</entry>
<entry>
<title>Add support for generation of PLT markers in encoder</title>
<updated>2020-04-21T13:55:44Z</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2020-04-21T13:55:44Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=4edb8c83374f52cd6a8f2c7c875e8ffacccb5fa5'/>
<id>urn:sha1:4edb8c83374f52cd6a8f2c7c875e8ffacccb5fa5</id>
<content type='text'>
* -PLT switch added to opj_compress
* Add a opj_encoder_set_extra_options() function that
  accepts a PLT=YES option, and could be expanded later
  for other uses.

-------

Testing with a Sentinel2 10m band, T36JTT_20160914T074612_B02.jp2,
coming from S2A_MSIL1C_20160914T074612_N0204_R135_T36JTT_20160914T081456.SAFE

Decompress it to TIFF:
```
opj_uncompress -i T36JTT_20160914T074612_B02.jp2 -o T36JTT_20160914T074612_B02.tif
```

Recompress it with similar parameters as original:
```
opj_compress -n 5 -c [256,256],[256,256],[256,256],[256,256],[256,256] -t 1024,1024 -PLT -i T36JTT_20160914T074612_B02.tif -o T36JTT_20160914T074612_B02_PLT.jp2
```

Dump codestream detail with GDAL dump_jp2.py utility (https://github.com/OSGeo/gdal/blob/master/gdal/swig/python/samples/dump_jp2.py)
```
python dump_jp2.py T36JTT_20160914T074612_B02.jp2 &gt; /tmp/dump_sentinel2_ori.txt
python dump_jp2.py T36JTT_20160914T074612_B02_PLT.jp2 &gt; /tmp/dump_sentinel2_openjpeg_plt.txt
```

The diff between both show very similar structure, and identical number of packets in PLT markers

Now testing with Kakadu (KDU803_Demo_Apps_for_Linux-x86-64_200210)

Full file decompression:
```
kdu_expand -i T36JTT_20160914T074612_B02_PLT.jp2 -o tmp.tif

Consumed 121 tile-part(s) from a total of 121 tile(s).
Consumed 80,318,806 codestream bytes (excluding any file format) = 5.329697
bits/pel.
Processed using the multi-threaded environment, with
    8 parallel threads of execution
```

Partial decompresson (presumably using PLT markers):
```
kdu_expand -i T36JTT_20160914T074612_B02.jp2 -o tmp.pgm -region "{0.5,0.5},{0.01,0.01}"
kdu_expand -i T36JTT_20160914T074612_B02_PLT.jp2 -o tmp2.pgm  -region "{0.5,0.5},{0.01,0.01}"
diff tmp.pgm tmp2.pgm &amp;&amp; echo "same !"
```

-------

Funded by ESA for S2-MPC project
</content>
</entry>
<entry>
<title>opj_decompress: add sanity checks to avoid segfault in case of decoding error</title>
<updated>2020-04-01T19:11:36Z</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2020-04-01T18:58:55Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=1c54024165fd5db0e6047f28903274eb27d0980f'/>
<id>urn:sha1:1c54024165fd5db0e6047f28903274eb27d0980f</id>
<content type='text'>
Prevent crashes like:
opj_decompress -i 0722_5-1_2019.jp2 -o out.ppm -r 4 -t 0

where 0722_5-1_2019.jp2 is
https://drive.google.com/file/d/1ZxOUZg2-FKjYwa257VFLMpTXRWxEoP0a/view?usp=sharing
</content>
</entry>
<entry>
<title>opj_compress: improve help message regarding new IMF switch</title>
<updated>2020-02-13T08:59:36Z</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2020-02-13T08:59:17Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=563ecfb55ca77c0fc5ea19e4885e00f55ec82ca9'/>
<id>urn:sha1:563ecfb55ca77c0fc5ea19e4885e00f55ec82ca9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement writing of IMF profiles</title>
<updated>2020-02-12T14:55:25Z</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2020-02-12T14:55:16Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=84f3bebbff515f2b00ccf0c817930ebb10b91760'/>
<id>urn:sha1:84f3bebbff515f2b00ccf0c817930ebb10b91760</id>
<content type='text'>
Add -IMF switch to opj_compress as well
</content>
</entry>
<entry>
<title>Merge pull request #1164 from sebras/master</title>
<updated>2019-09-03T15:03:54Z</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2019-09-03T15:03:54Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=e66125fe260deee49fdf6e9978d9bd29871dd5bb'/>
<id>urn:sha1:e66125fe260deee49fdf6e9978d9bd29871dd5bb</id>
<content type='text'>
openjp2/j2k: Report error if all wanted components are not decoded.</content>
</entry>
<entry>
<title>bmp_read_rle4_data(): avoid potential infinite loop</title>
<updated>2019-04-15T08:10:18Z</updated>
<author>
<name>Young Xiao</name>
<email>YangX92@hotmail.com</email>
</author>
<published>2019-03-16T12:09:59Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=3aef207f90e937d4931daf6d411e092f76d82e66'/>
<id>urn:sha1:3aef207f90e937d4931daf6d411e092f76d82e66</id>
<content type='text'>
</content>
</entry>
<entry>
<title>convertbmp: detect invalid file dimensions early</title>
<updated>2019-04-15T08:10:18Z</updated>
<author>
<name>Young Xiao</name>
<email>YangX92@hotmail.com</email>
</author>
<published>2019-03-16T11:57:27Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=21399f6b7d318fcdf4406d5e88723c4922202aa3'/>
<id>urn:sha1:21399f6b7d318fcdf4406d5e88723c4922202aa3</id>
<content type='text'>
width/length dimensions read from bmp headers are not necessarily
valid. For instance they may have been maliciously set to very large
values with the intention to cause DoS (large memory allocation, stack
overflow). In these cases we want to detect the invalid size as early
as possible.

This commit introduces a counter which verifies that the number of
written bytes corresponds to the advertized width/length.

See commit 8ee335227bbc for details.

Signed-off-by: Young Xiao &lt;YangX92@hotmail.com&gt;
</content>
</entry>
<entry>
<title>openjp2/j2k: Report error if all wanted components are not decoded.</title>
<updated>2019-02-21T08:48:02Z</updated>
<author>
<name>Sebastian Rasmussen</name>
<email>sebras@gmail.com</email>
</author>
<published>2018-10-31T19:22:11Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=b2751967ecabf8d8856e85ab91e25d4f235e2eb3'/>
<id>urn:sha1:b2751967ecabf8d8856e85ab91e25d4f235e2eb3</id>
<content type='text'>
Previously the caller had to check whether each component data had
been decoded. This means duplicating the checking in every user of
openjpeg which is unnecessary. If the caller wantes to decode all
or a set of, or a specific component then openjpeg ought to error
out if it was unable to do so.

Fixes #1158.
</content>
</entry>
<entry>
<title>convertbmp: detect invalid file dimensions early</title>
<updated>2018-12-14T04:10:35Z</updated>
<author>
<name>Hugo Lefeuvre</name>
<email>hle@debian.org</email>
</author>
<published>2018-12-14T03:58:40Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=8ee335227bbcaf1614124046aa25e53d67b11ec3'/>
<id>urn:sha1:8ee335227bbcaf1614124046aa25e53d67b11ec3</id>
<content type='text'>
width/length dimensions read from bmp headers are not necessarily
valid. For instance they may have been maliciously set to very large
values with the intention to cause DoS (large memory allocation, stack
overflow). In these cases we want to detect the invalid size as early
as possible.

This commit introduces a counter which verifies that the number of
written bytes corresponds to the advertized width/length.

Fixes #1059 (CVE-2018-6616).
</content>
</entry>
</feed>
