<feed xmlns='http://www.w3.org/2005/Atom'>
<title>openjpeg/src/lib/openjp2/openjpeg.c, 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>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>opj_set_decoded_components(): add a provision for a apply_color_transforms parameter in case we support it in the future</title>
<updated>2017-09-19T15:48:07Z</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2017-09-19T15:48:07Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=e17bbde9066600528ab523adee69d9c9c33ba157'/>
<id>urn:sha1:e17bbde9066600528ab523adee69d9c9c33ba157</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add capability to decode only a subset of all components of an image.</title>
<updated>2017-09-19T15:06:19Z</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2017-09-19T14:52:07Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=7e2b6bebff12eab8bdc17fc9af017e8c11652f4f'/>
<id>urn:sha1:7e2b6bebff12eab8bdc17fc9af017e8c11652f4f</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Complementary fix to previous commit</title>
<updated>2017-08-07T16:32:52Z</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2017-07-06T00:02:25Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=0c1fc0593ef5b918068709fd74d76e4824c90e7c'/>
<id>urn:sha1:0c1fc0593ef5b918068709fd74d76e4824c90e7c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add opj_image_data_alloc() / opj_image_data_free()</title>
<updated>2017-08-07T16:32:52Z</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2017-07-05T23:47:40Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=f58aab9d6a57e48bdc60e15dd373c24de74719a9'/>
<id>urn:sha1:f58aab9d6a57e48bdc60e15dd373c24de74719a9</id>
<content type='text'>
As bin/common/color.c used to directly call malloc()/free(), we need
to export functions dedicated to allocating/freeing image component data.
</content>
</entry>
<entry>
<title>Reformat whole codebase with astyle.options (#128)</title>
<updated>2017-05-09T18:46:20Z</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2017-05-09T13:44:46Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=563bd8499e63db976ca8358216138647593354bc'/>
<id>urn:sha1:563bd8499e63db976ca8358216138647593354bc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix some warnings (#838)</title>
<updated>2016-09-13T22:12:43Z</updated>
<author>
<name>Matthieu Darbois</name>
<email>mayeut@users.noreply.github.com</email>
</author>
<published>2016-09-13T22:12:43Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=0954bc11e3ab6a39d86e5ed51286da4b8989743d'/>
<id>urn:sha1:0954bc11e3ab6a39d86e5ed51286da4b8989743d</id>
<content type='text'>
Fix warnings introduced by uclouvain/openjpeg#786</content>
</entry>
<entry>
<title>Add opj_codec_set_threads() in public API and propagate resulting thread pool to tcd level</title>
<updated>2016-05-25T19:02:07Z</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2016-05-25T14:36:47Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/openjpeg/commit/?id=d4b7f03cfa4732132767188782683f3d957da912'/>
<id>urn:sha1:d4b7f03cfa4732132767188782683f3d957da912</id>
<content type='text'>
By default, only the main thread is used. If opj_codec_set_threads() is not used,
but the OPJ_NUM_THREADS environment variable is set, its value will be
used to initialize the number of threads. The value can be either an integer
number, or "ALL_CPUS". If OPJ_NUM_THREADS is set and this function is called,
this function will override the behaviour of the environment variable.
</content>
</entry>
</feed>
