Update ABI/API compatibility reports after commit 3b1b067266

This commit is contained in:
OpenJPEG Travis CI 2017-08-07 18:29:54 +00:00
parent 693d05e773
commit a96041f7c7
15 changed files with 546 additions and 271 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
{ {
"Object": "lib/libopenjp2.so.2.2.0", "Object": "lib/libopenjp2.so.2.2.0",
"Lang": "C", "Lang": "C",
"TotalSymbols": "46", "TotalSymbols": "48",
"PublicABI": "1", "PublicABI": "1",
"Version": "1.7" "Version": "1.7"
} }

View File

@ -20,7 +20,204 @@
<br/> <br/>
<h1>Changelog from Git</h1><br/><br/> <h1>Changelog from Git</h1><br/><br/>
<div class='changelog'> <div class='changelog'>
<pre class='wrap'>commit 2fbd4bb0b9c6178f12c852dc40db6ab05734bfe2 <pre class='wrap'>commit 3b1b0672663b59853b63d48f94b63ca497883527
Merge: 2fbd4bb 9211469
Author: Even Rouault &lt;even.rouault@mines-paris.org&gt;
Date: 2017-08-07 20:17:36 +0200
Merge pull request #968 from rouault/reduce_memory_decoding
Reduce memory decoding
commit 92114694a48638e86c07e4adf11b78878045c8a9
Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
Date: 2017-07-06 19:34:21 +0200
Slight improvement in management of code block chunks
Instead of having the chunk array at the segment level, we can move it down to
the codeblock itself since segments are filled in sequential order.
Limit the number of memory allocation, and decrease slightly the memory usage.
On MAPA_005.jp2
n4: 1871312549 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 1610689344 0x4E781E7: opj_aligned_malloc (opj_malloc.c:61)
n1: 1610689344 0x4E71D1B: opj_alloc_tile_component_data (tcd.c:676)
n1: 1610689344 0x4E726CF: opj_tcd_init_decode_tile (tcd.c:816)
n1: 1610689344 0x4E4BE39: opj_j2k_read_tile_header (j2k.c:8617)
n1: 1610689344 0x4E4C902: opj_j2k_decode_tiles (j2k.c:10348)
n1: 1610689344 0x4E4E3CE: opj_j2k_decode (j2k.c:7846)
n1: 1610689344 0x4E53002: opj_jp2_decode (jp2.c:1564)
n0: 1610689344 0x40374E: main (opj_decompress.c:1459)
n1: 219232541 0x4E4BC50: opj_j2k_read_tile_header (j2k.c:4683)
n1: 219232541 0x4E4C902: opj_j2k_decode_tiles (j2k.c:10348)
n1: 219232541 0x4E4E3CE: opj_j2k_decode (j2k.c:7846)
n1: 219232541 0x4E53002: opj_jp2_decode (jp2.c:1564)
n0: 219232541 0x40374E: main (opj_decompress.c:1459)
n1: 23893200 0x4E72735: opj_tcd_init_decode_tile (tcd.c:1225)
n1: 23893200 0x4E4BE39: opj_j2k_read_tile_header (j2k.c:8617)
n1: 23893200 0x4E4C902: opj_j2k_decode_tiles (j2k.c:10348)
n1: 23893200 0x4E4E3CE: opj_j2k_decode (j2k.c:7846)
n1: 23893200 0x4E53002: opj_jp2_decode (jp2.c:1564)
n0: 23893200 0x40374E: main (opj_decompress.c:1459)
n0: 17497464 in 52 places, all below massif's threshold (1.00%)
commit ca34d13e76a588a00171e57690c1deeaf068723a
Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
Date: 2017-07-06 16:11:11 +0200
Decoding: do not allocate memory for the codestream of each codeblock
Currently we allocate at least 8192 bytes for each codeblock, and copy
the relevant parts of the codestream in that per-codeblock buffer as we
decode packets.
As the whole codestream for the tile is ingested in memory and alive
during the decoding, we can directly point to it instead of copying. But
to do that, we need an intermediate concept, a 'chunk' of code-stream segment,
given that segments may be made of data at different places in the code-stream
when quality layers are used.
With that change, the decoding of MAPA_005.jp2 goes down from the previous
improvement of 2.7 GB down to 1.9 GB.
New profile:
n4: 1885648469 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 1610689344 0x4E78287: opj_aligned_malloc (opj_malloc.c:61)
n1: 1610689344 0x4E71D7B: opj_alloc_tile_component_data (tcd.c:676)
n1: 1610689344 0x4E7272C: opj_tcd_init_decode_tile (tcd.c:816)
n1: 1610689344 0x4E4BDD9: opj_j2k_read_tile_header (j2k.c:8618)
n1: 1610689344 0x4E4C8A2: opj_j2k_decode_tiles (j2k.c:10349)
n1: 1610689344 0x4E4E36E: opj_j2k_decode (j2k.c:7847)
n1: 1610689344 0x4E52FA2: opj_jp2_decode (jp2.c:1564)
n0: 1610689344 0x40374E: main (opj_decompress.c:1459)
n1: 219232541 0x4E4BBF0: opj_j2k_read_tile_header (j2k.c:4685)
n1: 219232541 0x4E4C8A2: opj_j2k_decode_tiles (j2k.c:10349)
n1: 219232541 0x4E4E36E: opj_j2k_decode (j2k.c:7847)
n1: 219232541 0x4E52FA2: opj_jp2_decode (jp2.c:1564)
n0: 219232541 0x40374E: main (opj_decompress.c:1459)
n1: 39822000 0x4E727A9: opj_tcd_init_decode_tile (tcd.c:1219)
n1: 39822000 0x4E4BDD9: opj_j2k_read_tile_header (j2k.c:8618)
n1: 39822000 0x4E4C8A2: opj_j2k_decode_tiles (j2k.c:10349)
n1: 39822000 0x4E4E36E: opj_j2k_decode (j2k.c:7847)
n1: 39822000 0x4E52FA2: opj_jp2_decode (jp2.c:1564)
n0: 39822000 0x40374E: main (opj_decompress.c:1459)
n0: 15904584 in 52 places, all below massif's threshold (1.00%)
commit 373520db309430b68dd9ff09cba03a25f711a88e
Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
Date: 2017-07-06 13:23:29 +0200
Add documentation for magic values in the code
commit 434ace4ff74cc3eee401d4d3c02668c1d85f2a0d
Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
Date: 2017-07-06 02:17:26 +0200
opj_jp2_apply_pclr() also needs to use opj_image_data_alloc/opj_image_data_free
commit 0c1fc0593ef5b918068709fd74d76e4824c90e7c
Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
Date: 2017-07-06 02:02:25 +0200
Complementary fix to previous commit
commit f58aab9d6a57e48bdc60e15dd373c24de74719a9
Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
Date: 2017-07-06 01:47:40 +0200
Add opj_image_data_alloc() / opj_image_data_free()
As bin/common/color.c used to directly call malloc()/free(), we need
to export functions dedicated to allocating/freeing image component data.
commit 61fb5dd7f81c2e3dfabbb99f59dc89572d59fa37
Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
Date: 2017-07-06 01:05:24 +0200
Fix crash on Windows due to b7594c0fcb9dd3aa6356d72c4a525d76168da689
b7594c0fcb9dd3aa6356d72c4a525d76168da689 may put opj_tcd_tilecomp_t-&gt;data
allocated by opj_alloc_tile_component_data() as the image-&gt;comps[].data. As
opj_alloc_tile_component_data() use opj_aligned_malloc() we must be sure to
ue opj_alined_malloc()/_free() in all places where we alloc/free
image-&gt;comps[].data.
Note: this might have some compatibility impact in case user code does itself
the allocation/free of image-&gt;comps[].data
commit 793edc38e41700e9b4cda4b7f9c79aba95b8d989
Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
Date: 2017-07-05 23:48:28 +0200
Decrease memory consumption for whole image single tile decoding.
We can use the same buffer for the tile decoding and the final image, and
save the intermediate buffer to transfer between those.
Effect on the decoding of MAPA (9944 x 13498 x 3 components of size byte)
Peak memory from 4.5 GB to 2.7 GB
Now:
n5: 2699708767 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 1610689344 0x4E77E07: opj_aligned_malloc (opj_malloc.c:61) &lt;-- final image
n1: 1610689344 0x4E7195B: opj_alloc_tile_component_data (tcd.c:676)
n1: 1610689344 0x4E722D2: opj_tcd_init_decode_tile (tcd.c:816)
n1: 1610689344 0x4E4BCF1: opj_j2k_read_tile_header (j2k.c:8597)
n1: 1610689344 0x4E4C742: opj_j2k_decode_tiles (j2k.c:10324)
n1: 1610689344 0x4E4E20E: opj_j2k_decode (j2k.c:7826)
n1: 1610689344 0x4E52E42: opj_jp2_decode (jp2.c:1564)
n0: 1610689344 0x40369E: main (opj_decompress.c:1459)
n1: 815554560 0x4E72231: opj_tcd_init_decode_tile (tcd.c:1217) &lt;-- working memory for code blocks: 9944*13498/64/64*8192*3
n1: 815554560 0x4E4BCF1: opj_j2k_read_tile_header (j2k.c:8597)
n1: 815554560 0x4E4C742: opj_j2k_decode_tiles (j2k.c:10324)
n1: 815554560 0x4E4E20E: opj_j2k_decode (j2k.c:7826)
n1: 815554560 0x4E52E42: opj_jp2_decode (jp2.c:1564)
n0: 815554560 0x40369E: main (opj_decompress.c:1459)
n1: 219758391 0x4E4C0BF: opj_j2k_read_tile_header (j2k.c:4661) &lt;-- ingestion of code stream
n1: 219758391 0x4E4C742: opj_j2k_decode_tiles (j2k.c:10324)
n1: 219758391 0x4E4E20E: opj_j2k_decode (j2k.c:7826)
n1: 219758391 0x4E52E42: opj_jp2_decode (jp2.c:1564)
n0: 219758391 0x40369E: main (opj_decompress.c:1459)
n1: 39822000 0x4E7224F: opj_tcd_init_decode_tile (tcd.c:1224) &lt;-- OPJ_J2K_DEFAULT_NB_SEGS*sizeof(opj_tcd_seg_t) per codeblock
n1: 39822000 0x4E4BCF1: opj_j2k_read_tile_header (j2k.c:8597)
n1: 39822000 0x4E4C742: opj_j2k_decode_tiles (j2k.c:10324)
n1: 39822000 0x4E4E20E: opj_j2k_decode (j2k.c:7826)
n1: 39822000 0x4E52E42: opj_jp2_decode (jp2.c:1564)
n0: 39822000 0x40369E: main (opj_decompress.c:1459)
n0: 13884472 in 49 places, all below massif's threshold (1.00%)
Before:
n5: 4493329848 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n2: 1610709160 0x4E77C87: opj_aligned_malloc (opj_malloc.c:61)
n1: 1610689344 0x4E717DB: opj_alloc_tile_component_data (tcd.c:676)
n1: 1610689344 0x4E72152: opj_tcd_init_decode_tile (tcd.c:816)
n1: 1610689344 0x4E4BCF1: opj_j2k_read_tile_header (j2k.c:8597)
n1: 1610689344 0x4E4C64A: opj_j2k_decode_tiles (j2k.c:10318)
n1: 1610689344 0x4E4E08E: opj_j2k_decode (j2k.c:7826)
n1: 1610689344 0x4E52CC2: opj_jp2_decode (jp2.c:1564)
n0: 1610689344 0x40369E: main (opj_decompress.c:1459)
n0: 19816 in 2 places, all below massif's threshold (1.00%)
n1: 1610689344 0x4E43F36: opj_j2k_update_image_data.isra.7 (j2k.c:8743)
n1: 1610689344 0x4E4C5C1: opj_j2k_decode_tiles (j2k.c:10358)
n1: 1610689344 0x4E4E08E: opj_j2k_decode (j2k.c:7826)
n1: 1610689344 0x4E52CC2: opj_jp2_decode (jp2.c:1564)
n0: 1610689344 0x40369E: main (opj_decompress.c:1459)
n1: 815554560 0x4E720B1: opj_tcd_init_decode_tile (tcd.c:1217)
n1: 815554560 0x4E4BCF1: opj_j2k_read_tile_header (j2k.c:8597)
n1: 815554560 0x4E4C64A: opj_j2k_decode_tiles (j2k.c:10318)
n1: 815554560 0x4E4E08E: opj_j2k_decode (j2k.c:7826)
n1: 815554560 0x4E52CC2: opj_jp2_decode (jp2.c:1564)
n0: 815554560 0x40369E: main (opj_decompress.c:1459)
n1: 402672336 0x4E4C545: opj_j2k_decode_tiles (j2k.c:10336)
n1: 402672336 0x4E4E08E: opj_j2k_decode (j2k.c:7826)
n1: 402672336 0x4E52CC2: opj_jp2_decode (jp2.c:1564)
n0: 402672336 0x40369E: main (opj_decompress.c:1459)
n0: 53704448 in 58 places, all below massif's threshold (1.00%)
commit 2fbd4bb0b9c6178f12c852dc40db6ab05734bfe2
Author: Even Rouault &lt;even.rouault@spatialys.com&gt; Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
Date: 2017-08-04 18:01:29 +0200 Date: 2017-08-04 18:01:29 +0200
@ -374,12 +571,6 @@ Date: 2017-07-06 12:11:37 +0200
Comment fix Comment fix
commit a38c4496b631bb5d3f8d5ea42d394544523a9bc6
Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
Date: 2017-07-05 21:33:42 +0200
Remove unused m_DA_x0, m_DA_y0, m_DA_x1, m_DA_y1 members from opj_j2k_dec structure
...</pre></div> ...</pre></div>
</body> </body>

View File

@ -1,4 +1,4 @@
<!-- verdict:compatible;affected:0;added:3;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:1.99.21 --> <!-- verdict:compatible;affected:0;added:5;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:1.99.21 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
@ -287,7 +287,7 @@ function showContent(header, id)
</tr> </tr>
</table> </table>
<h2>Problem Summary</h2><hr/> <h2>Problem Summary</h2><hr/>
<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td class='new'><a href='#Added' style='color:Blue;'>3</a></td></tr> <table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td class='new'><a href='#Added' style='color:Blue;'>5</a></td></tr>
<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr> <tr><th>Removed Symbols</th><td>High</td><td>0</td></tr>
<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr> <tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr>
<tr><td>Medium</td><td>0</td></tr> <tr><td>Medium</td><td>0</td></tr>
@ -298,11 +298,13 @@ function showContent(header, id)
<tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr> <tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr>
</table> </table>
<a name='Added'></a><h2>Added Symbols <span class='new'>&nbsp;3&nbsp;</span></h2><hr/> <a name='Added'></a><h2>Added Symbols <span class='new'>&nbsp;5&nbsp;</span></h2><hr/>
<span class='h_name'>openjpeg.h</span>, <span class='lib_name'>libopenjp2.so.2.2.0</span><br/> <span class='h_name'>openjpeg.h</span>, <span class='lib_name'>libopenjp2.so.2.2.0</span><br/>
<span class="iname">opj_codec_set_threads&#160;<span class='sym_p'>(&#160;opj_codec_t* <span class='color_p'>p_codec</span>, <span class='nowrap'>int <span class='color_p'>num_threads</span> )</span></span></span><br/> <span class="iname">opj_codec_set_threads&#160;<span class='sym_p'>(&#160;opj_codec_t* <span class='color_p'>p_codec</span>, <span class='nowrap'>int <span class='color_p'>num_threads</span> )</span></span></span><br/>
<span class="iname">opj_get_num_cpus&#160;<span class='sym_p'>(&#160;)</span></span><br/> <span class="iname">opj_get_num_cpus&#160;<span class='sym_p'>(&#160;)</span></span><br/>
<span class="iname">opj_has_thread_support&#160;<span class='sym_p'>(&#160;)</span></span><br/> <span class="iname">opj_has_thread_support&#160;<span class='sym_p'>(&#160;)</span></span><br/>
<span class="iname">opj_image_data_alloc&#160;<span class='sym_p'>(&#160;<span class='nowrap'>OPJ_SIZE_T <span class='color_p'>size</span> )</span></span></span><br/>
<span class="iname">opj_image_data_free&#160;<span class='sym_p'>(&#160;<span class='nowrap'>void* <span class='color_p'>ptr</span> )</span></span></span><br/>
<br/> <br/>
<a class='top_ref' href='#Top'>to the top</a><br/> <a class='top_ref' href='#Top'>to the top</a><br/>
<a name='Headers'></a><h2>Header Files <span class='gray'>&nbsp;1&nbsp;</span></h2><hr/> <a name='Headers'></a><h2>Header Files <span class='gray'>&nbsp;1&nbsp;</span></h2><hr/>

View File

@ -1,6 +1,6 @@
{ {
"Affected": "0", "Affected": "0",
"Added": 3, "Added": 5,
"Removed": 0, "Removed": 0,
"TotalProblems": 0, "TotalProblems": 0,
"Object1": "lib/libopenjp2.so.2.1.2", "Object1": "lib/libopenjp2.so.2.1.2",

View File

@ -1,4 +1,4 @@
<!-- verdict:compatible;affected:0;added:3;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:1.99.21 --> <!-- verdict:compatible;affected:0;added:5;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:1.99.21 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
@ -287,7 +287,7 @@ function showContent(header, id)
</tr> </tr>
</table> </table>
<h2>Problem Summary</h2><hr/> <h2>Problem Summary</h2><hr/>
<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td class='new'><a href='#Added' style='color:Blue;'>3</a></td></tr> <table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td class='new'><a href='#Added' style='color:Blue;'>5</a></td></tr>
<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr> <tr><th>Removed Symbols</th><td>High</td><td>0</td></tr>
<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr> <tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr>
<tr><td>Medium</td><td>0</td></tr> <tr><td>Medium</td><td>0</td></tr>
@ -298,11 +298,13 @@ function showContent(header, id)
<tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr> <tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr>
</table> </table>
<a name='Added'></a><h2>Added Symbols <span class='new'>&nbsp;3&nbsp;</span></h2><hr/> <a name='Added'></a><h2>Added Symbols <span class='new'>&nbsp;5&nbsp;</span></h2><hr/>
<span class='h_name'>openjpeg.h</span>, <span class='lib_name'>libopenjp2.so.2.2.0</span><br/> <span class='h_name'>openjpeg.h</span>, <span class='lib_name'>libopenjp2.so.2.2.0</span><br/>
<span class="iname">opj_codec_set_threads&#160;<span class='sym_p'>(&#160;opj_codec_t* <span class='color_p'>p_codec</span>, <span class='nowrap'>int <span class='color_p'>num_threads</span> )</span></span></span><br/> <span class="iname">opj_codec_set_threads&#160;<span class='sym_p'>(&#160;opj_codec_t* <span class='color_p'>p_codec</span>, <span class='nowrap'>int <span class='color_p'>num_threads</span> )</span></span></span><br/>
<span class="iname">opj_get_num_cpus&#160;<span class='sym_p'>(&#160;)</span></span><br/> <span class="iname">opj_get_num_cpus&#160;<span class='sym_p'>(&#160;)</span></span><br/>
<span class="iname">opj_has_thread_support&#160;<span class='sym_p'>(&#160;)</span></span><br/> <span class="iname">opj_has_thread_support&#160;<span class='sym_p'>(&#160;)</span></span><br/>
<span class="iname">opj_image_data_alloc&#160;<span class='sym_p'>(&#160;<span class='nowrap'>OPJ_SIZE_T <span class='color_p'>size</span> )</span></span></span><br/>
<span class="iname">opj_image_data_free&#160;<span class='sym_p'>(&#160;<span class='nowrap'>void* <span class='color_p'>ptr</span> )</span></span></span><br/>
<br/> <br/>
<a class='top_ref' href='#Top'>to the top</a><br/> <a class='top_ref' href='#Top'>to the top</a><br/>
<a name='Headers'></a><h2>Header Files <span class='gray'>&nbsp;1&nbsp;</span></h2><hr/> <a name='Headers'></a><h2>Header Files <span class='gray'>&nbsp;1&nbsp;</span></h2><hr/>

View File

@ -1,4 +1,4 @@
<!-- verdict:compatible;affected:0;added:3;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:1.99.21 --> <!-- verdict:compatible;affected:0;added:5;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:1.99.21 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
@ -287,7 +287,7 @@ function showContent(header, id)
</tr> </tr>
</table> </table>
<h2>Problem Summary</h2><hr/> <h2>Problem Summary</h2><hr/>
<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td class='new'><a href='#Added' style='color:Blue;'>3</a></td></tr> <table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td class='new'><a href='#Added' style='color:Blue;'>5</a></td></tr>
<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr> <tr><th>Removed Symbols</th><td>High</td><td>0</td></tr>
<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr> <tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr>
<tr><td>Medium</td><td>0</td></tr> <tr><td>Medium</td><td>0</td></tr>
@ -298,11 +298,13 @@ function showContent(header, id)
<tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr> <tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr>
</table> </table>
<a name='Added'></a><h2>Added Symbols <span class='new'>&nbsp;3&nbsp;</span></h2><hr/> <a name='Added'></a><h2>Added Symbols <span class='new'>&nbsp;5&nbsp;</span></h2><hr/>
<span class='h_name'>openjpeg.h</span><br/> <span class='h_name'>openjpeg.h</span><br/>
<span class="iname">opj_codec_set_threads&#160;<span class='sym_p'>(&#160;opj_codec_t* <span class='color_p'>p_codec</span>, <span class='nowrap'>int <span class='color_p'>num_threads</span> )</span></span></span><br/> <span class="iname">opj_codec_set_threads&#160;<span class='sym_p'>(&#160;opj_codec_t* <span class='color_p'>p_codec</span>, <span class='nowrap'>int <span class='color_p'>num_threads</span> )</span></span></span><br/>
<span class="iname">opj_get_num_cpus&#160;<span class='sym_p'>(&#160;)</span></span><br/> <span class="iname">opj_get_num_cpus&#160;<span class='sym_p'>(&#160;)</span></span><br/>
<span class="iname">opj_has_thread_support&#160;<span class='sym_p'>(&#160;)</span></span><br/> <span class="iname">opj_has_thread_support&#160;<span class='sym_p'>(&#160;)</span></span><br/>
<span class="iname">opj_image_data_alloc&#160;<span class='sym_p'>(&#160;<span class='nowrap'>OPJ_SIZE_T <span class='color_p'>size</span> )</span></span></span><br/>
<span class="iname">opj_image_data_free&#160;<span class='sym_p'>(&#160;<span class='nowrap'>void* <span class='color_p'>ptr</span> )</span></span></span><br/>
<br/> <br/>
<a class='top_ref' href='#Top'>to the top</a><br/> <a class='top_ref' href='#Top'>to the top</a><br/>
<a name='Headers'></a><h2>Header Files <span class='gray'>&nbsp;1&nbsp;</span></h2><hr/> <a name='Headers'></a><h2>Header Files <span class='gray'>&nbsp;1&nbsp;</span></h2><hr/>

View File

@ -115,7 +115,7 @@ $VAR1 = {
'Lang' => 'C', 'Lang' => 'C',
'Object' => 'lib/libopenjp2.so.2.2.0', 'Object' => 'lib/libopenjp2.so.2.2.0',
'Path' => 'abi_dump/openjpeg/current/2c999/ABI.dump', 'Path' => 'abi_dump/openjpeg/current/2c999/ABI.dump',
'TotalSymbols' => '46', 'TotalSymbols' => '48',
'Version' => '1.7' 'Version' => '1.7'
} }
} }
@ -287,7 +287,7 @@ $VAR1 = {
}, },
'2.1.2' => { '2.1.2' => {
'current' => { 'current' => {
'Added' => 3, 'Added' => 5,
'BC' => 100, 'BC' => 100,
'ChangedSoname' => 0, 'ChangedSoname' => 0,
'ObjectsAdded' => 0, 'ObjectsAdded' => 0,
@ -455,7 +455,7 @@ $VAR1 = {
'2.1.2' => { '2.1.2' => {
'current' => { 'current' => {
'58361' => { '58361' => {
'Added' => 3, 'Added' => 5,
'Affected' => 0, 'Affected' => 0,
'Object1' => 'lib/libopenjp2.so.2.1.2', 'Object1' => 'lib/libopenjp2.so.2.1.2',
'Object2' => 'lib/libopenjp2.so.2.2.0', 'Object2' => 'lib/libopenjp2.so.2.2.0',
@ -496,7 +496,7 @@ $VAR1 = {
'2.1' => '2014-04-29 12:58', '2.1' => '2014-04-29 12:58',
'2.1.1' => '2016-07-05 14:54', '2.1.1' => '2016-07-05 14:54',
'2.1.2' => '2016-09-28 18:18', '2.1.2' => '2016-09-28 18:18',
'current' => '2017-08-04 18:01:29' 'current' => '2017-08-07 20:17:36'
}, },
'HeadersDiff' => { 'HeadersDiff' => {
'1.1' => { '1.1' => {
@ -574,7 +574,7 @@ $VAR1 = {
'Maintainer' => 'OpenJPEG team', 'Maintainer' => 'OpenJPEG team',
'MaintainerUrl' => 'http://www.openjpeg.org/', 'MaintainerUrl' => 'http://www.openjpeg.org/',
'PackageDiff' => {}, 'PackageDiff' => {},
'ScmUpdateTime' => '1501863199', 'ScmUpdateTime' => '1502130566',
'Soname' => { 'Soname' => {
'1.1' => { '1.1' => {
'lib/libopenjpeg.so' => 'libopenjpeg.so' 'lib/libopenjpeg.so' => 'libopenjpeg.so'

View File

@ -1248,6 +1248,27 @@ w version of the library).</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock">OPJ_API opj_image_t* OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts</td><td> </td><td class="rblock">OPJ_API opj_image_t* OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts</td><td class="lineno" valign="top"></td></tr> <tr><td class="lineno" valign="top"></td><td class="lblock">OPJ_API opj_image_t* OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts</td><td> </td><td class="rblock">OPJ_API opj_image_t* OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock">, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);</td><td> </td><td class="rblock">,</td><td class="lineno" valign="top"></td></tr> <tr><td class="lineno" valign="top"></td><td class="lblock">, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);</td><td> </td><td class="rblock">,</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);</td><td class="lineno" valign="top"></td></tr> <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> </td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">/**</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> * Allocator for opj_image_t-&gt;comps[].data</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> * To be paired with opj_image_data_free.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> *</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> * @param size number of bytes to allocate</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> *</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> * @return a new pointer if successful, NULL otherwise.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> * @since 2.2.0</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">*/</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">OPJ_API void* OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size);</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">/**</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> * Destructor for opj_image_t-&gt;comps[].data</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> * To be paired with opj_image_data_alloc.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> *</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> * @param ptr Pointer to free</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> *</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> * @since 2.2.0</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">*/</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">OPJ_API void OPJ_CALLCONV opj_image_data_free(void* ptr);</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr> <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">/*</td><td> </td><td class="right">/*</td><td class="lineno" valign="top"></td></tr> <tr><td class="lineno" valign="top"></td><td class="left">/*</td><td> </td><td class="right">/*</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">==========================================================</td><td> </td><td class="right">==========================================================</td><td class="lineno" valign="top"></td></tr> <tr><td class="lineno" valign="top"></td><td class="left">==========================================================</td><td> </td><td class="right">==========================================================</td><td class="lineno" valign="top"></td></tr>
@ -1780,7 +1801,7 @@ at);</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">&lt;li&gt;Size of precinct : 2^15 x 2^15 (means 1 precinct)</td><td> </td><td class="right">&lt;li&gt;Size of precinct : 2^15 x 2^15 (means 1 precinct)</td><td class="lineno" valign="top"></td></tr> <tr><td class="lineno" valign="top"></td><td class="left">&lt;li&gt;Size of precinct : 2^15 x 2^15 (means 1 precinct)</td><td> </td><td class="right">&lt;li&gt;Size of precinct : 2^15 x 2^15 (means 1 precinct)</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">&lt;li&gt;Size of code-block : 64 x 64</td><td> </td><td class="right">&lt;li&gt;Size of code-block : 64 x 64</td><td class="lineno" valign="top"></td></tr> <tr><td class="lineno" valign="top"></td><td class="left">&lt;li&gt;Size of code-block : 64 x 64</td><td> </td><td class="right">&lt;li&gt;Size of code-block : 64 x 64</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr> <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> line 1417</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> line 1454</em></th><td></td></tr> <tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> line 1417</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> line 1475</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">&lt;li&gt;No mode switch activated</td><td> </td><td class="right">&lt;li&gt;No mode switch activated</td><td class="lineno" valign="top"></td></tr> <tr><td class="lineno" valign="top"></td><td class="left">&lt;li&gt;No mode switch activated</td><td> </td><td class="right">&lt;li&gt;No mode switch activated</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">&lt;li&gt;Progression order: LRCP</td><td> </td><td class="right">&lt;li&gt;Progression order: LRCP</td><td class="lineno" valign="top"></td></tr> <tr><td class="lineno" valign="top"></td><td class="left">&lt;li&gt;Progression order: LRCP</td><td> </td><td class="right">&lt;li&gt;Progression order: LRCP</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">&lt;li&gt;No index file</td><td> </td><td class="right">&lt;li&gt;No index file</td><td class="lineno" valign="top"></td></tr> <tr><td class="lineno" valign="top"></td><td class="left">&lt;li&gt;No index file</td><td> </td><td class="right">&lt;li&gt;No index file</td><td class="lineno" valign="top"></td></tr>
@ -1994,7 +2015,7 @@ c);</td><td class="lineno" valign="top"></td></tr>
<tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr> <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
<tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 158 change blocks.&nbsp;</a></th></tr> <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 158 change blocks.&nbsp;</a></th></tr>
<tr class="stats"><td></td><th><i>949 lines changed or deleted</i></th><th><i> </i></th><th><i>929 lines changed or added</i></th><td></td></tr> <tr class="stats"><td></td><th><i>949 lines changed or deleted</i></th><th><i> </i></th><th><i>950 lines changed or added</i></th><td></td></tr>
<tr><td colspan="5" align="center" class="small"></td></tr> <tr><td colspan="5" align="center" class="small"></td></tr>
</table> </table>
<br/><br/> <br/><br/>

View File

@ -1093,6 +1093,27 @@ OPJ_API void OPJ_CALLCONV opj_image_destroy(opj_image_t *image);
OPJ_API opj_image_t* OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts, OPJ_API opj_image_t* OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts,
opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc); opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);
/**
* Allocator for opj_image_t->comps[].data
* To be paired with opj_image_data_free.
*
* @param size number of bytes to allocate
*
* @return a new pointer if successful, NULL otherwise.
* @since 2.2.0
*/
OPJ_API void* OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size);
/**
* Destructor for opj_image_t->comps[].data
* To be paired with opj_image_data_alloc.
*
* @param ptr Pointer to free
*
* @since 2.2.0
*/
OPJ_API void OPJ_CALLCONV opj_image_data_free(void* ptr);
/* /*
========================================================== ==========================================================
stream functions definitions stream functions definitions

View File

@ -1,6 +1,6 @@
{ {
"BC": "100", "BC": "100",
"Added": 3, "Added": 5,
"Removed": 0, "Removed": 0,
"TotalProblems": 0, "TotalProblems": 0,
"ObjectsAdded": 0, "ObjectsAdded": 0,

View File

@ -30,7 +30,7 @@
<tr> <tr>
<td class='object'>libopenjp2.so.2.1.2</td> <td class='object'>libopenjp2.so.2.1.2</td>
<td class='ok'><a href='../../../../compat_report/openjpeg/2.1.2/current/58361/abi_compat_report.html'>100%</a></td> <td class='ok'><a href='../../../../compat_report/openjpeg/2.1.2/current/58361/abi_compat_report.html'>100%</a></td>
<td class='added'><a class='num' href='../../../../compat_report/openjpeg/2.1.2/current/58361/abi_compat_report.html#Added'>3 new</a></td> <td class='added'><a class='num' href='../../../../compat_report/openjpeg/2.1.2/current/58361/abi_compat_report.html#Added'>5 new</a></td>
<td class='ok'>0</td> <td class='ok'>0</td>
</tr> </tr>
</table> </table>

View File

@ -30,11 +30,11 @@
<th>Headers<br/>Diff</th> <th>Headers<br/>Diff</th>
</tr> </tr>
<tr id='current'><td>current</td> <tr id='current'><td>current</td>
<td>2017-08-04<br/>18:01</td> <td>2017-08-07<br/>20:17</td>
<td>7</td> <td>7</td>
<td><a href='../../changelog/openjpeg/current/log.html'>changelog</a></td> <td><a href='../../changelog/openjpeg/current/log.html'>changelog</a></td>
<td class='ok'><a href='../../objects_report/openjpeg/2.1.2/current/report.html'>100%</a></td> <td class='ok'><a href='../../objects_report/openjpeg/2.1.2/current/report.html'>100%</a></td>
<td class='added'><a class='num' href='../../objects_report/openjpeg/2.1.2/current/report.html'>3 new</a></td> <td class='added'><a class='num' href='../../objects_report/openjpeg/2.1.2/current/report.html'>5 new</a></td>
<td class='ok'>0</td> <td class='ok'>0</td>
<td><a href='../../headers_diff/openjpeg/2.1.2/current/diff.html'>2</a></td> <td><a href='../../headers_diff/openjpeg/2.1.2/current/diff.html'>2</a></td>
</tr> </tr>
@ -152,7 +152,7 @@
<td>N/A</td> <td>N/A</td>
<td>N/A</td> <td>N/A</td>
</tr> </tr>
</table><br/>Maintained by <a href='http://www.openjpeg.org/'>OpenJPEG team</a>. Last updated on Fri Aug 4 16:13:45 2017.<br/> </table><br/>Maintained by <a href='http://www.openjpeg.org/'>OpenJPEG team</a>. Last updated on Mon Aug 7 18:29:53 2017.<br/>
<br/> <br/>
<hr/> <hr/>
<div align='right'><a class='home' title="Andrey Ponomarenko's ABI laboratory" href='http://abi-laboratory.pro/'>abi-laboratory.pro</a></div> <div align='right'><a class='home' title="Andrey Ponomarenko's ABI laboratory" href='http://abi-laboratory.pro/'>abi-laboratory.pro</a></div>