Compare commits

..

3 Commits

Author SHA1 Message Date
Mathieu Malaterre
bb230d0b6b [1.5] Add detail for SOVERSION. Increase VERSION number. 2012-09-13 07:58:05 +00:00
Mathieu Malaterre
5be29a0c5a [1.5] Add CHANGES file 2012-09-13 07:54:04 +00:00
Mathieu Malaterre
b953d10ee9 [1.5] Tag the new stable 1.5.1 OpenJPEG release 2012-09-13 07:52:49 +00:00
43 changed files with 724 additions and 1097 deletions

521
CHANGES
View File

@@ -1,198 +1,425 @@
2012-10-01 Mathieu Malaterre 2012-09-10 Mathieu Malaterre
* [r2028] CMakeLists.txt: [1.5] Start opj 1.5.2 * [r1920] NEWS: [1.5] update NEWS file
* [r2029] libopenjpeg/jp2.c: [1.5] jp2_read_boxhdr() can trigger * [r1919] libopenjpeg/j2k.c: [1.5] Fix Heap-based buffer-overflow
random pointer memory access when decoding openjpeg image
Fixes issue 155 Thanks to Huzaifa Sidhpurwala of Red Hat Security Response Team
for dataset to reproduce the issue.
Fixes issue 170
* [r1917] libopenjpeg/event.c: [1.5] Fix issue with str_length not
being used. Rewrite code to prefer use of vsnprintf to prevent
potential buffer overflow.
* [r1914] libopenjpeg/jpwl/crc.c, libopenjpeg/jpwl/jpwl_lib.c:
[1.5] remove extra trailing semicolon
2012-10-02 Mathieu Malaterre 2012-08-24 Mathieu Malaterre
* [r2031] libopenjpeg/Makefile.am, libopenjpeg/jpwl/Makefile.am: * [r1899] applications/codec/j2k_dump.c,
[1.5] int main() in t1_generate_luts.c breaks mplayer applications/jpip/libopenjpip/byte_manager.c,
libopenjpeg/jpwl/jpwl_lib.c, libopenjpeg/tcd.c: [1.5] COMP: Fix
warnings identified by clang31
Fixes issue 152 openjpeg/libopenjpeg/tcd.c:1884 col 48: warning: comparison of
* [r2032] libopenjpeg/j2k.c: [1.5] division by zero in j2k_read_siz unsigned expressi
on < 0 is always false
Fixes issue 169 openjpeg/applications/codec/j2k_dump.c:362 col 29: warning:
* [r2033] libopenjpeg/j2k.c: [1.5] missing range check in equality comparison
j2k_read_coc et al. with extraneous parentheses
Fixes issue 166 openjpeg/libopenjpeg/jpwl/jpwl_lib.c:680:19: warning: format
* [r2035] libopenjpeg/CMakeLists.txt: [1.5] Build small internal specifies type 'int
tools to generate t1_luts.h ' but the argument has type 'long long' [-Wformat]
printf("Marker@%d: %X\n", cio_tell(cio) - 2, id);
~^ ~~~~~~~~~~~~~~~~~
%lld
2012-10-22 Mathieu Malaterre openjpeg/applications/jpip/libopenjpip/byte_manager.c:58:63:
warning: format spe
cifies type 'long' but the argument has type 'OPJ_OFF_T' (aka
'long long') [-Wfo
rmat]
fprintf( FCGI_stderr, "Error: error in fetch_bytes( %d, %ld,
%lu)\n", fd, offset
, size);
* [r2107] CMakeLists.txt, applications/JavaOpenJPEG/CMakeLists.txt: Author: Hans Johnson <hans-johnson@uiowa.edu>
[1.5] Fix Java binding issues.
Properly link to math lib on UNIX 2012-07-29 Mathieu Malaterre
Make JNI install location a user configuration
Remove SONAME property from the java module
2012-12-07 Rex Dieter * [r1736] applications/jpip/libopenjpip/sock_manager.c: [1.5]
Import portion of patch from Alex Zimnitsky to fix compilation on
FreeBSD
* [r2260] doc/Doxyfile.dox, doc/Doxyfile.dox.cmake.in: backport 2012-07-11 Mathieu Malaterre
r2259
Doxyfile: HTML_TIMESTAMP = NO * [r1733] libopenjpeg/cio.c, libopenjpeg/cio.h: [1.5] Fix
compilation issue with Compiler Borland C++ v. 5.5
helps when comparing the output of multiple runs, Fixes issue 154
and distros will appreciate avoiding multilib conflicts. * [r1732] libopenjpeg/j2k.c: [1.5] Fix r1727 (Issue 156) to compile
on compilers where false is not defined.
* [r1729] libopenjpeg/j2k.c, libopenjpeg/tcd.c: [1.5] This fixes
issues seen on PDF files
2012-12-18 Mickaël Savinaud Fixes issue 156
* [r2265] applications/codec/convert.c: [1.5] improve the bmp read 2012-07-10 Mathieu Malaterre
function for RGB8 case (thanks Winfried). Update issue 203
2013-02-27 Mathieu Malaterre * [r1727] libopenjpeg/j2k.c: [1.5] Fix heap buffer overflow
* [r2299] libopenjpeg/opj_includes.h: [1.5] Rework #ifdef checks. Enforce sanity checks on tile number and tile length, even when
We should check for _M_IX86 instead of not(_M_X64). Thanks to the (rather
Misha Ulyutin for report on ML broken) USE_JPWL code isn't enabled.
2013-03-14 Mickaël Savinaud 2012-05-29 Mathieu Malaterre
* [r2305] configure.ac: [b1.5.x] update the micro version into the * [r1705] libopenjpeg/jp2.c: [1.5] jp2_read_boxhdr() call ignores
configure file (thanks to winfried) return value
Fixes issue 91
* [r1704] applications/mj2/frames_to_mj2.c, applications/mj2/mj2.c,
applications/mj2/mj2_convert.c: [1.5] Make sure openjpeg/mj2 can
be compiled with gcc -std=c89
* [r1703] libopenjpeg/tcd.c: [1.5] This commit hides symptoms of
CVE-2009-5030
2013-07-11 Antonin Descampe As explained in issue 5, comment 1. This is an easy fix to avoid
memory overrun.
Update issue 5
Update issue 62
* [r1702] libopenjpeg/j2k.c,
tests/nonregression/test_suite.ctest.in: [1.5] Applying old patch
from r1642, with further modification from winfried. Also enable
failing test. Everything seems to be working well now.
Fixes issue 150
* [r1701] libopenjpeg/tcd.c: [1.5] Import r1669 from trunk over to
1.5 branch
* [r1700] libopenjpeg/j2k.c, libopenjpeg/t1.c, libopenjpeg/t2.c,
libopenjpeg/tcd.c: [1.5] Apply private patch from Alex Macfarlane
Smith
This gets rids of a lot memory leaks when used on device with low
memory
* [r1696] applications/codec/convert.c, libopenjpeg/jp2.c: [1.5]
The two files in Issue145 have a precision < 8-bit:
therefore 'jp2_read_pclr' must be changed.
* [r2345] tests/conformance/CMakeLists.txt: tests : reactivated j2k_to_image fails to create RGB/RGBA images with a
conformance tests in openjpeg 1.5 branch to enable comparison precision < 8-bit: therefore 'imagetopng' must be
with trunk changed.
Update issue 145
* [r1694] libopenjpeg-jpwl.pc.in, libopenjpeg/Makefile.am: [1.5]
Fix autotools installation. Thanks to winfried for patch.
Update issue 149
* [r1693] libopenjpeg/opj_malloc.h: [1.5] Fix compilation on
FreeBSD. Thanks to rafael carre (funman@videolan.org) for patch.
2013-09-26 Mathieu Malaterre Fixes issue 111
* [r2346] libopenjpeg/image.c: [1.5] Import patch suggested in bug 2012-05-21 Mathieu Malaterre
#241
2014-02-24 Mathieu Malaterre * [r1686] libopenjpeg/opj_malloc.h: [1.5] Build fails on AIX
* [r2390] libopenjpeg/bio.c: [1.5] Remove some simple warnings Fixes issue 139
* [r2391] CMake/CTestCustom.cmake.in: [1.5] Do not report warning * [r1683] doc/man/man1/image_to_j2k.1, doc/man/man1/j2k_to_image.1,
on third party lib doc/man/man3/libopenjpeg.3: [1.5] Man page syntax fixes. Thanks
to vskytta for patch.
2014-02-25 Mathieu Malaterre Fixes issue 147
* [r1682] libopenjpeg/tcd.c: [1.5] fix compilation warning about
lrintf being implicit.
* [r2420] tests/nonregression/CMakeLists.txt, Fixes issue 144
tests/nonregression/checkmd5refs.cmake,
tests/nonregression/md5refs.txt,
tests/nonregression/test_suite.ctest.in: [1.5] Import md5 checker
from trunk back onto 1.5 branch
* [r2423] libopenjpeg/j2k.c: [1.5] Remove addition from r1702 this
introduced a regression as seen in issue 205
Fixes issue 205 2012-04-23 Mathieu Malaterre
2014-02-26 Mathieu Malaterre * [r1649] libopenjpeg/j2k.c: [1.5] Revert r1642, as explained on
https://groups.google.com/group/openjpeg/msg/77a67fef94a0309b
* [r1648] tests/nonregression/test_suite.ctest.in: [1.5] Adding
test suite for file409752.jp2
* [r1647] CMakeLists.txt: [1.5] Make it easier to find /data from
within 1.5 sub-branch
* [r1643] applications/JavaOpenJPEG/JavaOpenJPEG.c,
applications/JavaOpenJPEG/JavaOpenJPEGDecoder.c,
applications/codec/convert.c: [1.5] Integrate patch from winfried
posted on the mailing list. See here for more info:
https://groups.google.com/group/openjpeg/msg/6488859a0dce77
* [r1642] libopenjpeg/j2k.c: [1.5] Integrate patch from winfried
posted on the mailing list. See here for more info:
https://groups.google.com/group/openjpeg/msg/1bbf7ae7ddee3a51
* [r1640] applications/mj2/extract_j2k_from_mj2.c,
applications/mj2/frames_to_mj2.c, applications/mj2/mj2.h,
applications/mj2/mj2_to_frames.c,
applications/mj2/wrap_j2k_in_mj2.c, libopenjpeg/openjpeg.h: [1.5]
Integrate patch from winfried posted on the mailing list. See
here for more info:
https://groups.google.com/group/openjpeg/msg/7e30b6e288ad5908
* [r2437] tests/CMakeLists.txt, tests/conformance/CMakeLists.txt, 2012-04-20 Mathieu Malaterre
tests/nonregression/CMakeLists.txt, tests/unit/CMakeLists.txt:
[1.5] Use new add_test signature to handle cross compilation and
execution using wine
* [r2438] applications/codec/convert.c,
applications/codec/image_to_j2k.c, applications/codec/j2k_dump.c,
applications/codec/j2k_to_image.c, libopenjpeg/jp2.c,
libopenjpeg/tcd.c: [1.5] Import first patch (fixes.patch) from
issue 249 to fix leaks on error condition.
Update issue 249 * [r1637] applications/jpip/util/CMakeLists.txt,
* [r2439] applications/codec/image_to_j2k.c, applications/jpip/util/addXMLinJP2.c: [1.5] Need to
applications/codec/j2k_to_image.c: [1.5] Declare functions static compile/install tool to embed XML file in JP2 for jpip server
to track unused ones.
2014-03-04 Mathieu Malaterre 2012-04-19 Mathieu Malaterre
* [r2564] CMakeLists.txt: [1.5] Use improved find_path syntax to * [r1636] applications/JavaOpenJPEG/CMakeLists.txt,
help cross-compilation setup find openjpeg data root applications/jpip/util/CMakeLists.txt: [1.5] jar files are arch
independant. We can install them safely in share
* [r1635] applications/jpip/util/CMakeLists.txt: [1.5] Add install
rules for openjpip client
* [r1634] applications/JavaOpenJPEG/CMakeLists.txt: [1.5] Add
missing symbols from getopt into the java glue lib
* [r1633] applications/JavaOpenJPEG/CMakeLists.txt: [1.5] resolve
missing symbols from convert.c/index.c
* [r1632] applications/JavaOpenJPEG/CMakeLists.txt: [1.5] Add
explicit linking from glue java lib to real openjpeg lib
* [r1631] applications/JavaOpenJPEG/CMakeLists.txt: [1.5] install
java module
* [r1630] CMake/OpenJPEGConfig.cmake.in, CMakeLists.txt: [1.5] Fix
computation of relative path from include/ to lib/
2014-03-12 Mathieu Malaterre 2012-04-18 Mathieu Malaterre
* [r2696] applications/codec/convert.c, tests/unit/testempty2.c: * [r1629] CMakeLists.txt, libopenjpeg/jpwl/CMakeLists.txt,
[1.5] Fix remainings warnings on 1.5 branch tests/unit/testempty1.c, tests/unit/testempty2.c: [1.5] fix
* [r2697] applications/jpip/libopenjpip/msgqueue_manager.c: [1.5] compilation warnings on windows box
Prevent buffer overflow in openjpip code
2014-03-17 Mathieu Malaterre 2012-04-16 Mathieu Malaterre
* [r2750] applications/common/opj_getopt.c: [1.5] Update BSD-4 * [r1628] libopenjpeg/jpwl/CMakeLists.txt: [1.5] debian tools
copyright into a BSD-3 copyright detected a missing link to math lib
Update issue 300
* [r2752] libopenjpeg/jp2.c, libopenjpeg/t1_generate_luts.c: [1.5]
Remove simple warning about C++ style comments
* [r2753] applications/codec/convert.c,
applications/common/color.c, libopenjpeg/j2k.c,
libopenjpeg/jp2.c, libopenjpeg/t1_generate_luts.c,
libopenjpeg/tcd.c: [1.5] Remove another set of simple warnings
2014-03-18 Mathieu Malaterre 2012-04-06 Mathieu Malaterre
* [r2757] libopenjpeg/cio.c, libopenjpeg/j2k.c, libopenjpeg/jp2.c, * [r1626] tests/CMakeLists.txt, tests/unit,
libopenjpeg/t2.c, libopenjpeg/tcd.c, tests/unit/CMakeLists.txt, tests/unit/testempty1.c,
tests/nonregression/test_suite.ctest.in: [1.5] Import portion of tests/unit/testempty2.c: [1.5] Adding some simple unit tests
patch from issue 297
Run test suite on new datasets
Update issue 297
* [r2758] libopenjpeg/jp2.c, libopenjpeg/tcd.c: [1.5] Import patch
from trunk to make test passes. Affects:
NR-DEC-2977.pdf.asan.67.2198.jp2-52-decode &
NR-DEC-4149.pdf.SIGSEGV.cf7.3501.jp2-50-decode
* [r2759] libopenjpeg/j2k.c: [1.5] Check the number of tiles
* [r2760] libopenjpeg/tcd.c: [1.5] Rework r2758 the conditions were
not quite right. Update checks.
* [r2762] applications/codec/convert.c: [1.5] Fix issues with big
endian handling
Fixes issue 302
* [r2765] applications/jpip/util/CMakeLists.txt: [1.5] Add a way
for user to override source/target java version
Update issue 303
* [r2768] CMakeLists.txt, applications/codec/CMakeLists.txt,
applications/common/opj_getopt.c,
applications/common/opj_getopt.h, opj_config.h.cmake.in,
tests/CMakeLists.txt: [1.5] Create a new cmake option to choose
between convienient copy of getopt and system installed one
Udapte issue 301
* [r2769] applications/codec/image_to_j2k.c,
applications/codec/j2k_dump.c, applications/codec/j2k_to_image.c,
applications/common/opj_getopt.h: [1.5] Rework r2768 in fact
getopt_long is slightly different on GNU. Adapt signature to
handle BSD signature and GNU one.
Update issue 301
2014-03-24 Rex Dieter 2012-04-05 Mathieu Malaterre
* [r2780] configure.ac: Calling AC_CANONICAL_SYSTEM implies * [r1625] CMakeLists.txt: [1.5] introduce fix for the SOVERSION
AC_CANONICAL_TARGET, which regression introduced in 1.5.0
gives incorrect results when cross compiling. Calling only
AC_CANONICAL_HOST is enough.
issue: 129 2012-03-16 Mathieu Malaterre
* [r2781] doc/Makefile.am: Install jpwl man pages only if jpwl is
enabled
issue: 129 * [r1571] applications/jpip/libopenjpip/j2kheader_manager.c,
* [r2782] m4/opj_check_lib.m4: Improve check for standard libs applications/jpip/libopenjpip/query_parser.c: [1.5] Remove a
simple warning report
* [r1570] applications/jpip/libopenjpip/query_parser.c: [1.5] I
think == was meant here.
Previously, with <lib>_LIBS and <lib>_CFLAGS undefined, 2012-03-02 Mathieu Malaterre
the most basic compile command "$CC conftest.c -l<lib>" was not
tested.
issue: 129 * [r1534] applications/jpip/libopenjpip/channel_manager.c: [1.5]
Remove a warning about undefined snprintf on windows compiler.
* [r1533] applications/jpip/libopenjpip/auxtrans_manager.c,
applications/jpip/libopenjpip/byte_manager.h,
applications/jpip/libopenjpip/channel_manager.c,
applications/jpip/libopenjpip/channel_manager.h,
applications/jpip/libopenjpip/codestream_manager.c,
applications/jpip/libopenjpip/j2kheader_manager.c,
applications/jpip/libopenjpip/jp2k_decoder.c,
applications/jpip/libopenjpip/manfbox_manager.c,
applications/jpip/libopenjpip/marker_manager.c,
applications/jpip/libopenjpip/mhixbox_manager.c,
applications/jpip/libopenjpip/session_manager.c,
applications/jpip/libopenjpip/session_manager.h: [1.5] Change the
logic in byte_manager.h. Prefer the use of stdint.h when
available. Default to compiler specific mecanism otherwise.
Remove some c++ comments. Fix signed vs unsigned comparison
* [r1527] doc/CMakeLists.txt, doc/Doxyfile.dox.cmake.in: [1.5]
Finish import of r963
* [r1526] ., doc/Doxyfile.dox, doc/Doxyfile.dox.cmake.in,
doc/mainpage.dox.cmake[CPY]: [1.5] merge r963 from trunk over to
branch 1.5
* [r1524] tests/nonregression/test_suite.ctest.in: [1.5] Convert
from DOS eol to UNIX eol
* [r1517] libopenjpeg/jpwl/README.txt, libopenjpeg/jpwl/crc.c,
libopenjpeg/jpwl/jpwl.c: [1.5] Set from DOS eol to UNIX eol
* [r1510] libopenjpeg/cidx_manager.c: [1.5] Sync with trunk and
remove uneeded include headers
* [r1506] applications/mj2/extract_j2k_from_mj2.c,
applications/mj2/frames_to_mj2.c, applications/mj2/mj2.c: [1.5]
Import rev 1053 from trunk over to 1.5
* [r1504] applications/codec/j2k_dump.c: [1.5] Fix typo in date.
* [r1496] applications/jpip/libopenjpip/comMakefile.mk[DEL]: [1.5]
Sync with trunk. Remove remainings bits of old Makefile based
build system
* [r1492] applications/codec/index.c, applications/codec/index.h,
applications/codec/windirent.h: [1.5] Convert from DOS eol to
UNIX eol
* [r1488] applications/OPJViewer/CMakeLists.txt,
applications/OPJViewer/OPJViewer.iss,
applications/OPJViewer/Readme.txt,
applications/OPJViewer/about/about.htm,
applications/OPJViewer/source/OPJAbout.cpp,
applications/OPJViewer/source/OPJChild16.xpm,
applications/OPJViewer/source/OPJDialogs.cpp,
applications/OPJViewer/source/OPJThreads.cpp,
applications/OPJViewer/source/OPJViewer.cpp,
applications/OPJViewer/source/OPJViewer.h,
applications/OPJViewer/source/OPJViewer.rc,
applications/OPJViewer/source/OPJViewer16.xpm,
applications/OPJViewer/source/about_htm.h,
applications/OPJViewer/source/build.h,
applications/OPJViewer/source/imagjpeg2000.cpp,
applications/OPJViewer/source/imagjpeg2000.h,
applications/OPJViewer/source/imagmxf.cpp,
applications/OPJViewer/source/imagmxf.h,
applications/OPJViewer/source/license.txt,
applications/OPJViewer/source/readmeafter.txt,
applications/OPJViewer/source/readmebefore.txt,
applications/OPJViewer/source/wxj2kparser.cpp,
applications/OPJViewer/source/wxjp2parser.cpp: [1.5] Use UNIX eol
for source code
* [r1486] INSTALL: [1.5] Sync with trunk.
* [r1482] CMakeLists.txt: [1.5] As discussed on the mailing list.
OpenJPEG should be compatible with Multi-Arch distros. Thanks to
Rex for report
* [r1481] applications/jpip/libopenjpip/box_manager.c,
applications/jpip/libopenjpip/box_manager.h,
applications/jpip/libopenjpip/boxheader_manager.c,
applications/jpip/libopenjpip/byte_manager.h,
applications/jpip/libopenjpip/cachemodel_manager.c,
applications/jpip/libopenjpip/cachemodel_manager.h,
applications/jpip/libopenjpip/imgreg_manager.c,
applications/jpip/libopenjpip/imgreg_manager.h,
applications/jpip/libopenjpip/jp2k_encoder.c,
applications/jpip/libopenjpip/jpip_parser.c,
applications/jpip/libopenjpip/manfbox_manager.c,
applications/jpip/libopenjpip/manfbox_manager.h,
applications/jpip/libopenjpip/metadata_manager.c,
applications/jpip/libopenjpip/metadata_manager.h,
applications/jpip/libopenjpip/placeholder_manager.c,
applications/jpip/libopenjpip/placeholder_manager.h,
applications/jpip/libopenjpip/target_manager.c,
applications/jpip/libopenjpip/target_manager.h,
applications/jpip/util/jpip_to_j2k.c,
applications/jpip/util/opj_server.c: [1.5] Fix a bunch of
comparison between signed and unsigned integer expressions. Some
are still left to decide.
2014-03-25 Mathieu Malaterre 2012-03-01 Mathieu Malaterre
* [r2800] applications/codec/Makefile.am, * [r1480] applications/jpip/libopenjpip/openjpip.c: [1.5] Fix rev
applications/jpip/libopenjpip/CMakeLists.txt: [1.5] Import patch 1474, typo in the spelling.
from bug tracker * [r1479] libopenjpeg/jpwl/jpwl.c: [1.5] Fix a warning about
Thanks to winfried comparison of ulong >= 0. Thanks to winfried for report.
Fixes issue 304 * [r1475] applications/codec/convert.c: [1.5] Apply big-endian
patch from winfried: libopenjpeg and WORDS_BIGENDIAN, 2012/02/14
* [r1474] applications/jpip/libopenjpip/openjpip.c: Fix a warning
reported on the continuous dashboard for linux.
* [r1473] applications/codec/convert.c: [1.5] j2k_to_image does not
support writing image with precision less than 8bits. Simply give
up for now. Thanks to winfried for report. Also add static
keyword for undeclared function in convert.h
* [r1472] applications/jpip/libopenjpip/jpipstream_manager.c,
applications/jpip/libopenjpip/jpipstream_manager.h: [1.5] Fix a
warning about conversion from const char* to char*
* [r1471] CMakeLists.txt: [1.5] cmake recommends the use of
fullpath. Thanks to winfried for report.
* [r1468] libopenjpeg/jpwl/CMakeLists.txt: [1.5] Fix JPWL's DLL
installation. Thanks to winfried for report.
2014-03-26 Mathieu Malaterre 2012-02-29 Kaori Hagihara
* [r2807] configure.ac: [1.5] Fix big endian checking with * [r1467] applications/jpip/README: [1.5][JPIP] README modification
autotools regarding the JP2 encoding
Thanks to winfried for patch
Fixes issue 302 2012-02-28 Rex Dieter
* [r1464] CMakeLists.txt, libopenjpeg/CMakeLists.txt,
libopenjpeg1.pc.cmake: allow finer-grain control of header
location via OPENJPEG_INSTALL_INCLUDE_DIR
* [r1463] CMakeLists.txt, libopenjpeg1.pc.cmake: fix assumptions
that OPENJPEG_INSTALL_*_DIR aren't relative paths
2012-02-28 Kaori Hagihara
* [r1462] applications/jpip/CHANGES,
applications/jpip/libopenjpip/comMakefile.mk,
applications/jpip/libopenjpip/jpip_parser.c,
applications/jpip/libopenjpip/metadata_manager.c,
applications/jpip/libopenjpip/openjpip.c,
applications/jpip/libopenjpip/query_parser.c,
applications/jpip/util/opj_server.c: [1.5][JPIP] enabled the
opj_server to reply the first query consisting with len request
from kakadu client
2012-02-23 Rex Dieter
* [r1460] libopenjpeg1.pc.cmake, libopenjpeg1.pc.in: fix pkgconfig
to include -I/usr/include/openjpeg-1.5 in cflags (issue #118)
2012-02-17 Mathieu Malaterre
* [r1444] applications/jpip/util/CMakeLists.txt: [1.5] allow
mecanism to provide JFLAGS
2012-02-16 Mathieu Malaterre
* [r1437] CMakeLists.txt: only install CHANGES when present
* [r1436] applications/jpip/util/opj_dec_server.c: remove a warning
about unused variable
2012-02-14 Mathieu Malaterre
* [r1435] CMake/CTestCustom.cmake.in: Hide some warnings generated
by 3rd party libs
* [r1434] applications/jpip/util/opj_dec_server.c: Make the code
C90 compliant for VS2010
* [r1433] applications/jpip/util/CMakeLists.txt: Work around issue
with FindJava module
2012-02-13 Mathieu Malaterre
* [r1429] applications/jpip/libopenjpip/sock_manager.c: Use C style
comment.
* [r1424] applications/jpip/libopenjpip/sock_manager.c: [1.5] Need
to include unistd for close() declaration
* [r1423] applications/jpip/util/CMakeLists.txt: By default,
openjpip client can still built even without java compiler. Print
a message to the user as warning.
* [r1422] applications/jpip/CMakeLists.txt: [1.5] Fix typo in
CMAKE_USE_PTHREADS vs CMAKE_USE_PTHREADS_INIT
* [r1420] CMake/FindFCGI.cmake: [1.5] Backport diff from trunk
* [r1419] CMake/FindPTHREAD.cmake[DEL],
applications/jpip/CMakeLists.txt,
applications/jpip/libopenjpip/CMakeLists.txt: [1.5] Remove use of
custom PTHREAD module. Prefer cmake's one.
2012-02-10 Kaori Hagihara
* [r1405] applications/jpip/CHANGES, applications/jpip/README,
applications/jpip/util/opj_dec_server.c,
applications/jpip/util/opj_viewer/src/ImageManager.java,
applications/jpip/util/opj_viewer/src/ImageWindow.java,
applications/jpip/util/opj_viewer/src/ImgdecClient.java,
applications/jpip/util/opj_viewer_xerces/src/ImageWindow.java:
[1.5][JPIP] added execution argument to set port number for
opj_dec_server, opj_viewer*
* [r1404] applications/jpip/CHANGES,
applications/jpip/doc/Doxyfile: [1.5][JPIP] fixed Doxygen
configuration file to document the utilities
2012-02-10 Antonin Descampe
* [r1403] CMakeLists.txt, libopenjpeg/CMakeLists.txt: [1.5] revert
r1399 and r1400
* [r1402] doc/Makefile.am: [1.5] fixed an error in autotools that
prevented the build because no CHANGES file anymore
2012-02-10 Rex Dieter
* [r1401] CMake/OpenJPEGConfig.cmake.in: make OpenJPEGConfig.cmake
provide useful (non-empty) values
* [r1400] libopenjpeg/CMakeLists.txt: make openjpeg.h header
symlink to match autotools
* [r1399] CMakeLists.txt: install cmake/pkgconfig bits in LIB_DIR
2012-02-07 Antonin Descampe
* [r1391] CMake/OpenJPEGCPack.cmake: update OpenJPEGCPack.cmake
with correct package names

View File

@@ -28,7 +28,7 @@ SET(CTEST_CUSTOM_WARNING_EXCEPTION
# Suppress warning caused by intentional messages about deprecation # Suppress warning caused by intentional messages about deprecation
".*warning,.* is deprecated" ".*warning,.* is deprecated"
# supress warnings caused by 3rd party libs: # supress warnings caused by 3rd party libs:
".*thirdparty.*" ".*/thirdparty/.*"
"libtiff.*has no symbols" "libtiff.*has no symbols"
"libpng.*has no symbols" "libpng.*has no symbols"
) )

View File

@@ -29,7 +29,7 @@ INCLUDE_REGULAR_EXPRESSION("^.*$")
# OPENJPEG version number, useful for packaging and doxygen doc: # OPENJPEG version number, useful for packaging and doxygen doc:
SET(OPENJPEG_VERSION_MAJOR 1) SET(OPENJPEG_VERSION_MAJOR 1)
SET(OPENJPEG_VERSION_MINOR 5) SET(OPENJPEG_VERSION_MINOR 5)
SET(OPENJPEG_VERSION_BUILD 2) SET(OPENJPEG_VERSION_BUILD 1)
SET(OPENJPEG_VERSION SET(OPENJPEG_VERSION
"${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}") "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}")
SET(PACKAGE_VERSION SET(PACKAGE_VERSION
@@ -136,14 +136,6 @@ IF(NOT OPENJPEG_INSTALL_DOC_DIR)
SET(OPENJPEG_INSTALL_DOC_DIR "share/doc/${OPENJPEG_INSTALL_SUBDIR}") SET(OPENJPEG_INSTALL_DOC_DIR "share/doc/${OPENJPEG_INSTALL_SUBDIR}")
ENDIF(NOT OPENJPEG_INSTALL_DOC_DIR) ENDIF(NOT OPENJPEG_INSTALL_DOC_DIR)
if(NOT OPENJPEG_INSTALL_JNI_DIR)
if(WIN32)
set(OPENJPEG_INSTALL_JNI_DIR ${OPENJPEG_INSTALL_BIN_DIR})
else()
set(OPENJPEG_INSTALL_JNI_DIR ${OPENJPEG_INSTALL_LIB_DIR})
endif()
endif()
IF(NOT OPENJPEG_INSTALL_PACKAGE_DIR) IF(NOT OPENJPEG_INSTALL_PACKAGE_DIR)
# We could install *.cmake files in share/ however those files contains # We could install *.cmake files in share/ however those files contains
# hardcoded path to libraries on a multi-arch system (fedora/debian) those # hardcoded path to libraries on a multi-arch system (fedora/debian) those
@@ -233,8 +225,6 @@ IF(BUILD_JPIP)
ENDIF(BUILD_JPIP) ENDIF(BUILD_JPIP)
OPTION(BUILD_VIEWER "Build the OPJViewer executable (C++)" OFF) OPTION(BUILD_VIEWER "Build the OPJViewer executable (C++)" OFF)
OPTION(BUILD_JAVA "Build the openjpeg jar (Java)" OFF) OPTION(BUILD_JAVA "Build the openjpeg jar (Java)" OFF)
OPTION(USE_SYSTEM_GETOPT "Prefer system installed getopt()" OFF)
MARK_AS_ADVANCED(USE_SYSTEM_GETOPT)
MARK_AS_ADVANCED(BUILD_VIEWER) MARK_AS_ADVANCED(BUILD_VIEWER)
MARK_AS_ADVANCED(BUILD_JAVA) MARK_AS_ADVANCED(BUILD_JAVA)
@@ -272,9 +262,10 @@ IF(BUILD_TESTING)
# They could be found via svn on the OpenJPEG google code project # They could be found via svn on the OpenJPEG google code project
# svn checkout http://openjpeg.googlecode.com/svn/data (about 70 Mo) # svn checkout http://openjpeg.googlecode.com/svn/data (about 70 Mo)
FIND_PATH(OPJ_DATA_ROOT README-OPJ-Data FIND_PATH(OPJ_DATA_ROOT README-OPJ-Data
PATHS $ENV{OPJ_DATA_ROOT} ${CMAKE_SOURCE_DIR}/../data PATHS
${CMAKE_SOURCE_DIR}/../../data $ENV{OPJ_DATA_ROOT}
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH ${CMAKE_SOURCE_DIR}/../data
${CMAKE_SOURCE_DIR}/../../data
) )
# Add repository where to find tests # Add repository where to find tests

19
NEWS
View File

@@ -2,24 +2,23 @@
OpenJPEG NEWS - user visible changes OpenJPEG NEWS - user visible changes
==================================== ====================================
Changes from OpenJPEG 1.5.2 to OpenJPEG 1.5.1 Changes from OpenJPEG 1.5.1 to OpenJPEG 1.5.0
---------------------------------------------- ----------------------------------------------
Security: Security:
* Fixes: CVE-2013-4289 CVE-2013-4290 * Fixes: CVE-2012-3535
* Fixes: CVE-2013-1447 CVE-2013-6045 CVE-2013-6052 CVE-2013-6054 CVE-2013-6053 CVE-2013-6887 * Fixes: CVE-2012-3358
New Features: New Features:
* Compile Java with source/target specific java version * Use a new API scheme and solve the SOVERSIONing in OpenJPEG
* Do not set SONAME for Java module, fix linking (missing math lib) * Allow better integration with multi-arch system
* Support some BMP/RGB8 files * Compile & Install Java bindings (CMake)
* Fix compilation on ARM * Install required addXMLinJP2 (JPIP)
Misc: Misc:
* Remove BSD-4 license from getopt copy, since upstream switched to BSD-3 * fix linker error by resolving all symbols (eg. missing -lm)
* Support compilation against system installed getopt * fix some man page typos
* Fix Big Endian checking (autotools)
* Huge amount of bug fixes. See CHANGES for details. * Huge amount of bug fixes. See CHANGES for details.

View File

@@ -24,14 +24,13 @@ include_directories(
add_library(openjpegjni MODULE add_library(openjpegjni MODULE
${openjpegjni_SRCS} ${openjpegjni_SRCS}
) )
# Java module should not have a SONAME:
set_property(TARGET openjpegjni PROPERTY NO_SONAME 1)
TARGET_LINK_LIBRARIES(openjpegjni ${OPENJPEG_LIBRARY_NAME}) TARGET_LINK_LIBRARIES(openjpegjni ${OPENJPEG_LIBRARY_NAME})
if(UNIX) IF(WIN32)
target_link_libraries(openjpegjni m) SET(OPENJPEG_INSTALL_JNI_DIR ${OPENJPEG_INSTALL_BIN_DIR})
endif() ELSE()
SET(OPENJPEG_INSTALL_JNI_DIR ${OPENJPEG_INSTALL_LIB_DIR})
ENDIF()
INSTALL(TARGETS openjpegjni INSTALL(TARGETS openjpegjni
EXPORT OpenJPEGTargets EXPORT OpenJPEGTargets

View File

@@ -5,12 +5,8 @@ SET(common_SRCS
convert.c convert.c
index.c index.c
${OPENJPEG_SOURCE_DIR}/applications/common/color.c ${OPENJPEG_SOURCE_DIR}/applications/common/color.c
${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c
) )
if(NOT USE_SYSTEM_GETOPT)
list(APPEND common_SRCS
${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c
)
endif()
# Headers file are located here: # Headers file are located here:
INCLUDE_DIRECTORIES( INCLUDE_DIRECTORIES(

View File

@@ -78,7 +78,7 @@ JPWL_j2k_to_image_CPPFLAGS = \
@LCMS1_CFLAGS@ \ @LCMS1_CFLAGS@ \
@LCMS2_CFLAGS@ @LCMS2_CFLAGS@
JPWL_j2k_to_image_CFLAGS = JPWL_j2k_to_image_CFLAGS =
JPWL_j2k_to_image_LDADD = $(top_builddir)/libopenjpeg/jpwl/libopenjpeg_JPWL.la @LCMS1_LIBS@ @LCMS2_LIBS@ @TIFF_LIBS@ @PNG_LIBS@ -lm JPWL_j2k_to_image_LDADD = $(top_builddir)/libopenjpeg/jpwl/libopenjpeg_JPWL.la @LCMS1_LIBS@ @LCMS2_LIBS@ @TIFF_LIBS@ @PNG_LIBS@
JPWL_j2k_to_image_SOURCES = \ JPWL_j2k_to_image_SOURCES = \
../common/color.c \ ../common/color.c \
../common/opj_getopt.c \ ../common/opj_getopt.c \
@@ -96,7 +96,7 @@ JPWL_image_to_j2k_CPPFLAGS = \
@TIFF_CFLAGS@ \ @TIFF_CFLAGS@ \
@PNG_CFLAGS@ @PNG_CFLAGS@
JPWL_image_to_j2k_CFLAGS = JPWL_image_to_j2k_CFLAGS =
JPWL_image_to_j2k_LDADD = $(top_builddir)/libopenjpeg/jpwl/libopenjpeg_JPWL.la @TIFF_LIBS@ @PNG_LIBS@ -lm JPWL_image_to_j2k_LDADD = $(top_builddir)/libopenjpeg/jpwl/libopenjpeg_JPWL.la @TIFF_LIBS@ @PNG_LIBS@
JPWL_image_to_j2k_SOURCES = \ JPWL_image_to_j2k_SOURCES = \
../common/opj_getopt.c \ ../common/opj_getopt.c \

View File

@@ -94,7 +94,7 @@ struct tga_header
static unsigned short get_ushort(unsigned short val) { static unsigned short get_ushort(unsigned short val) {
#ifdef OPJ_BIG_ENDIAN #ifdef WORDS_BIGENDIAN
return( ((val & 0xff) << 8) + (val >> 8) ); return( ((val & 0xff) << 8) + (val >> 8) );
#else #else
return( val ); return( val );
@@ -116,28 +116,23 @@ static int tga_readheader(FILE *fp, unsigned int *bits_per_pixel,
if (!bits_per_pixel || !width || !height || !flip_image) if (!bits_per_pixel || !width || !height || !flip_image)
return 0; return 0;
tga = (unsigned char*)malloc(TGA_HEADER_SIZE); tga = (unsigned char*)malloc(18);
if ( fread(tga, TGA_HEADER_SIZE, 1, fp) != 1 ) if ( fread(tga, TGA_HEADER_SIZE, 1, fp) != 1 )
{ {
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n"); fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
free(tga); return 0 ;
return 0 ;
} }
id_len = (unsigned char)tga[0]; id_len = (unsigned char)tga[0];
cmap_type = (unsigned char)tga[1]; cmap_type = (unsigned char)tga[1];
(void)cmap_type;
image_type = (unsigned char)tga[2]; image_type = (unsigned char)tga[2];
cmap_index = get_ushort(*(unsigned short*)(&tga[3])); cmap_index = get_ushort(*(unsigned short*)(&tga[3]));
(void)cmap_index;
cmap_len = get_ushort(*(unsigned short*)(&tga[5])); cmap_len = get_ushort(*(unsigned short*)(&tga[5]));
cmap_entry_size = (unsigned char)tga[7]; cmap_entry_size = (unsigned char)tga[7];
x_origin = get_ushort(*(unsigned short*)(&tga[8])); x_origin = get_ushort(*(unsigned short*)(&tga[8]));
(void)x_origin;
y_origin = get_ushort(*(unsigned short*)(&tga[10])); y_origin = get_ushort(*(unsigned short*)(&tga[10]));
(void)y_origin;
image_w = get_ushort(*(unsigned short*)(&tga[12])); image_w = get_ushort(*(unsigned short*)(&tga[12]));
image_h = get_ushort(*(unsigned short*)(&tga[14])); image_h = get_ushort(*(unsigned short*)(&tga[14]));
pixel_depth = (unsigned char)tga[16]; pixel_depth = (unsigned char)tga[16];
@@ -184,7 +179,7 @@ static int tga_readheader(FILE *fp, unsigned int *bits_per_pixel,
return 1; return 1;
} }
#ifdef OPJ_BIG_ENDIAN #if WORDS_BIGENDIAN == 1
static inline int16_t swap16(int16_t x) static inline int16_t swap16(int16_t x)
{ {
@@ -231,7 +226,7 @@ static int tga_writeheader(FILE *fp, int bits_per_pixel, int width, int height,
image_w = (unsigned short)width; image_w = (unsigned short)width;
image_h = (unsigned short) height; image_h = (unsigned short) height;
#ifndef OPJ_BIG_ENDIAN #if WORDS_BIGENDIAN == 0
if(fwrite(&image_w, 2, 1, fp) != 1) goto fails; if(fwrite(&image_w, 2, 1, fp) != 1) goto fails;
if(fwrite(&image_h, 2, 1, fp) != 1) goto fails; if(fwrite(&image_h, 2, 1, fp) != 1) goto fails;
#else #else
@@ -276,16 +271,12 @@ opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) {
return 0; return 0;
} }
if (!tga_readheader(f, &pixel_bit_depth, &image_width, &image_height, &flip_image)) { if (!tga_readheader(f, &pixel_bit_depth, &image_width, &image_height, &flip_image))
fclose(f);
return NULL; return NULL;
}
/* We currently only support 24 & 32 bit tga's ... */ /* We currently only support 24 & 32 bit tga's ... */
if (!((pixel_bit_depth == 24) || (pixel_bit_depth == 32))) { if (!((pixel_bit_depth == 24) || (pixel_bit_depth == 32)))
fclose(f);
return NULL; return NULL;
}
/* initialize image components */ /* initialize image components */
memset(&cmptparm[0], 0, 4 * sizeof(opj_image_cmptparm_t)); memset(&cmptparm[0], 0, 4 * sizeof(opj_image_cmptparm_t));
@@ -318,10 +309,8 @@ opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) {
/* create the image */ /* create the image */
image = opj_image_create(numcomps, &cmptparm[0], color_space); image = opj_image_create(numcomps, &cmptparm[0], color_space);
if (!image) { if (!image)
fclose(f);
return NULL; return NULL;
}
/* set image offset and reference grid */ /* set image offset and reference grid */
image->x0 = parameters->image_offset_x0; image->x0 = parameters->image_offset_x0;
@@ -349,22 +338,19 @@ opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) {
{ {
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n"); fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
opj_image_destroy(image); opj_image_destroy(image);
fclose(f); return NULL;
return NULL;
} }
if ( !fread(&g, 1, 1, f) ) if ( !fread(&g, 1, 1, f) )
{ {
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n"); fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
opj_image_destroy(image); opj_image_destroy(image);
fclose(f); return NULL;
return NULL;
} }
if ( !fread(&r, 1, 1, f) ) if ( !fread(&r, 1, 1, f) )
{ {
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n"); fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
opj_image_destroy(image); opj_image_destroy(image);
fclose(f); return NULL;
return NULL;
} }
image->comps[0].data[index]=r; image->comps[0].data[index]=r;
@@ -382,29 +368,25 @@ opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) {
{ {
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n"); fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
opj_image_destroy(image); opj_image_destroy(image);
fclose(f); return NULL;
return NULL;
} }
if ( !fread(&g, 1, 1, f) ) if ( !fread(&g, 1, 1, f) )
{ {
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n"); fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
opj_image_destroy(image); opj_image_destroy(image);
fclose(f); return NULL;
return NULL;
} }
if ( !fread(&r, 1, 1, f) ) if ( !fread(&r, 1, 1, f) )
{ {
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n"); fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
opj_image_destroy(image); opj_image_destroy(image);
fclose(f); return NULL;
return NULL;
} }
if ( !fread(&a, 1, 1, f) ) if ( !fread(&a, 1, 1, f) )
{ {
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n"); fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
opj_image_destroy(image); opj_image_destroy(image);
fclose(f); return NULL;
return NULL;
} }
image->comps[0].data[index]=r; image->comps[0].data[index]=r;
@@ -418,7 +400,6 @@ opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) {
fprintf(stderr, "Currently unsupported bit depth : %s\n", filename); fprintf(stderr, "Currently unsupported bit depth : %s\n", filename);
} }
} }
fclose(f);
return image; return image;
} }
@@ -444,7 +425,6 @@ int imagetotga(opj_image_t * image, const char *outfile) {
||(image->comps[0].dy != image->comps[i+1].dy) ||(image->comps[0].dy != image->comps[i+1].dy)
||(image->comps[0].prec != image->comps[i+1].prec)) { ||(image->comps[0].prec != image->comps[i+1].prec)) {
fprintf(stderr, "Unable to create a tga file with such J2K image charateristics."); fprintf(stderr, "Unable to create a tga file with such J2K image charateristics.");
fclose(fdest);
return 1; return 1;
} }
} }
@@ -457,10 +437,8 @@ int imagetotga(opj_image_t * image, const char *outfile) {
/* Write TGA header */ /* Write TGA header */
bpp = write_alpha ? 32 : 24; bpp = write_alpha ? 32 : 24;
if (!tga_writeheader(fdest, bpp, width , height, OPJ_TRUE)) { if (!tga_writeheader(fdest, bpp, width , height, OPJ_TRUE))
fclose(fdest);
return 1; return 1;
}
alpha_channel = image->numcomps-1; alpha_channel = image->numcomps-1;
@@ -490,7 +468,6 @@ int imagetotga(opj_image_t * image, const char *outfile) {
res = fwrite(&value,1,1,fdest); res = fwrite(&value,1,1,fdest);
if( res < 1 ) { if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile); fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(fdest);
return 1; return 1;
} }
@@ -498,7 +475,6 @@ int imagetotga(opj_image_t * image, const char *outfile) {
res = fwrite(&value,1,1,fdest); res = fwrite(&value,1,1,fdest);
if( res < 1 ) { if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile); fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(fdest);
return 1; return 1;
} }
@@ -506,7 +482,6 @@ int imagetotga(opj_image_t * image, const char *outfile) {
res = fwrite(&value,1,1,fdest); res = fwrite(&value,1,1,fdest);
if( res < 1 ) { if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile); fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(fdest);
return 1; return 1;
} }
@@ -516,14 +491,12 @@ int imagetotga(opj_image_t * image, const char *outfile) {
res = fwrite(&value,1,1,fdest); res = fwrite(&value,1,1,fdest);
if( res < 1 ) { if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile); fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(fdest);
return 1; return 1;
} }
} }
} }
} }
fclose(fdest);
return 0; return 0;
} }
@@ -561,37 +534,6 @@ typedef struct {
DWORD biClrImportant; /* Number of important color (0: ALL) */ DWORD biClrImportant; /* Number of important color (0: ALL) */
} BITMAPINFOHEADER_t; } BITMAPINFOHEADER_t;
struct bmp_cmap
{
unsigned char blue;
unsigned char green;
unsigned char red;
unsigned char alpha;
};
static void BMP_read_RGB8(int *red, int *green, int *blue, unsigned int line,
BITMAPINFOHEADER_t *hdr, struct bmp_cmap bmap[256], FILE *reader,
unsigned int offset)
{
unsigned int w, start_pos, y, x, pixel;
unsigned int i = 0;
w = hdr->biWidth;
start_pos = (((w * hdr->biBitCount + 31) & ~0x1f) >> 3);
y = hdr->biHeight - line - 1;
fseek(reader,offset + y * start_pos,SEEK_SET);
for(x = 0; x < w; ++x)
{
pixel = fgetc(reader);
red[i] = (unsigned char)bmap[pixel].red;
green[i] = (unsigned char)bmap[pixel].green;
blue[i] = (unsigned char)bmap[pixel].blue;
++i;
}
}
opj_image_t* bmptoimage(const char *filename, opj_cparameters_t *parameters) opj_image_t* bmptoimage(const char *filename, opj_cparameters_t *parameters)
{ {
int subsampling_dx = parameters->subsampling_dx; int subsampling_dx = parameters->subsampling_dx;
@@ -785,24 +727,37 @@ opj_image_t* bmptoimage(const char *filename, opj_cparameters_t *parameters)
else else
if (Info_h.biBitCount == 8 && Info_h.biCompression == 0)/*RGB */ if (Info_h.biBitCount == 8 && Info_h.biCompression == 0)/*RGB */
{ {
struct bmp_cmap cmap [256];
if(Info_h.biClrUsed == 0) Info_h.biClrUsed = 256; if(Info_h.biClrUsed == 0) Info_h.biClrUsed = 256;
else else
if(Info_h.biClrUsed > 256) Info_h.biClrUsed = 256; if(Info_h.biClrUsed > 256) Info_h.biClrUsed = 256;
fseek(IN, 14+Info_h.biSize, SEEK_SET); table_R = (unsigned char *) malloc(256 * sizeof(unsigned char));
memset(&cmap, 0, sizeof(struct bmp_cmap) * 256); table_G = (unsigned char *) malloc(256 * sizeof(unsigned char));
table_B = (unsigned char *) malloc(256 * sizeof(unsigned char));
has_color = 0;
for (j = 0; j < Info_h.biClrUsed; j++) for (j = 0; j < Info_h.biClrUsed; j++)
{ {
cmap[j].blue = (unsigned char)getc(IN); table_B[j] = (unsigned char)getc(IN);
cmap[j].green = (unsigned char)getc(IN); table_G[j] = (unsigned char)getc(IN);
cmap[j].red = (unsigned char)getc(IN); table_R[j] = (unsigned char)getc(IN);
getc(IN); getc(IN);
has_color +=
!(table_R[j] == table_G[j] && table_R[j] == table_B[j]);
} }
numcomps = 3; if(has_color) gray_scale = 0;
color_space = CLRSPC_SRGB;
/* Place the cursor at the beginning of the image information */
fseek(IN, 0, SEEK_SET);
fseek(IN, File_h.bfOffBits, SEEK_SET);
W = Info_h.biWidth;
H = Info_h.biHeight;
if (Info_h.biWidth % 2)
W++;
numcomps = gray_scale ? 1 : 3;
color_space = gray_scale ? CLRSPC_GRAY : CLRSPC_SRGB;
/* initialize image components */ /* initialize image components */
memset(&cmptparm[0], 0, 3 * sizeof(opj_image_cmptparm_t)); memset(&cmptparm[0], 0, 3 * sizeof(opj_image_cmptparm_t));
for(i = 0; i < numcomps; i++) for(i = 0; i < numcomps; i++)
@@ -820,6 +775,7 @@ opj_image_t* bmptoimage(const char *filename, opj_cparameters_t *parameters)
if(!image) if(!image)
{ {
fclose(IN); fclose(IN);
free(table_R); free(table_G); free(table_B);
return NULL; return NULL;
} }
@@ -829,21 +785,55 @@ opj_image_t* bmptoimage(const char *filename, opj_cparameters_t *parameters)
image->x1 = !image->x0 ? (w - 1) * subsampling_dx + 1 : image->x0 + (w - 1) * subsampling_dx + 1; image->x1 = !image->x0 ? (w - 1) * subsampling_dx + 1 : image->x0 + (w - 1) * subsampling_dx + 1;
image->y1 = !image->y0 ? (h - 1) * subsampling_dy + 1 : image->y0 + (h - 1) * subsampling_dy + 1; image->y1 = !image->y0 ? (h - 1) * subsampling_dy + 1 : image->y0 + (h - 1) * subsampling_dy + 1;
{
int *red = image->comps[0].data;
int *green = image->comps[1].data;
int *blue = image->comps[2].data;
unsigned int offset = File_h.bfOffBits;
int line;
/* set image data */ /* set image data */
for(line = 0; line < h; ++line)
{
BMP_read_RGB8(red, green, blue, line, &Info_h, cmap, IN, offset);
red += w; green += w; blue += w; RGB = (unsigned char *) malloc(W * H * sizeof(unsigned char));
if ( fread(RGB, sizeof(unsigned char), W * H, IN) != W * H )
{
free(table_R);
free(table_G);
free(table_B);
free(RGB);
opj_image_destroy(image);
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
return NULL;
}
if (gray_scale)
{
index = 0;
for (j = 0; j < W * H; j++)
{
if ((j % W < W - 1 && Info_h.biWidth % 2) || !(Info_h.biWidth % 2))
{
image->comps[0].data[index] =
table_R[RGB[W * H - ((j) / (W) + 1) * W + (j) % (W)]];
index++;
}
}
}
else
{
index = 0;
for (j = 0; j < W * H; j++)
{
if ((j % W < W - 1 && Info_h.biWidth % 2)
|| !(Info_h.biWidth % 2))
{
unsigned char pixel_index =
RGB[W * H - ((j) / (W) + 1) * W + (j) % (W)];
image->comps[0].data[index] = table_R[pixel_index];
image->comps[1].data[index] = table_G[pixel_index];
image->comps[2].data[index] = table_B[pixel_index];
index++;
}
} }
} }
free(RGB);
free(table_R);
free(table_G);
free(table_B);
}/* RGB8 */ }/* RGB8 */
else else
if (Info_h.biBitCount == 8 && Info_h.biCompression == 1)/*RLE8*/ if (Info_h.biBitCount == 8 && Info_h.biCompression == 1)/*RLE8*/
@@ -1135,11 +1125,6 @@ int imagetobmp(opj_image_t * image, const char *outfile) {
<<-- <<-- <<-- <<-- */ <<-- <<-- <<-- <<-- */
fdest = fopen(outfile, "wb"); fdest = fopen(outfile, "wb");
if (!fdest) {
fprintf(stderr, "ERROR -> failed to open %s for writing\n", outfile);
return 1;
}
w = image->comps[0].w; w = image->comps[0].w;
h = image->comps[0].h; h = image->comps[0].h;
@@ -1308,7 +1293,6 @@ opj_image_t* pgxtoimage(const char *filename, opj_cparameters_t *parameters) {
fseek(f, 0, SEEK_SET); fseek(f, 0, SEEK_SET);
if( fscanf(f, "PG%[ \t]%c%c%[ \t+-]%d%[ \t]%d%[ \t]%d",temp,&endian1,&endian2,signtmp,&prec,temp,&w,temp,&h) != 9){ if( fscanf(f, "PG%[ \t]%c%c%[ \t+-]%d%[ \t]%d%[ \t]%d",temp,&endian1,&endian2,signtmp,&prec,temp,&w,temp,&h) != 9){
fprintf(stderr, "ERROR: Failed to read the right number of element from the fscanf() function!\n"); fprintf(stderr, "ERROR: Failed to read the right number of element from the fscanf() function!\n");
fclose(f);
return NULL; return NULL;
} }
@@ -1326,7 +1310,6 @@ opj_image_t* pgxtoimage(const char *filename, opj_cparameters_t *parameters) {
bigendian = 0; bigendian = 0;
} else { } else {
fprintf(stderr, "Bad pgx header, please check input file\n"); fprintf(stderr, "Bad pgx header, please check input file\n");
fclose(f);
return NULL; return NULL;
} }
@@ -1447,6 +1430,10 @@ int imagetopgx(opj_image_t * image, const char *outfile) {
fprintf(stderr, "ERROR -> failed to open %s for writing\n", name); fprintf(stderr, "ERROR -> failed to open %s for writing\n", name);
return 1; return 1;
} }
/* dont need name anymore */
if( total > 256 ) {
free(name);
}
w = image->comps[compno].w; w = image->comps[compno].w;
h = image->comps[compno].h; h = image->comps[compno].h;
@@ -1466,19 +1453,10 @@ int imagetopgx(opj_image_t * image, const char *outfile) {
res = fwrite(&byte, 1, 1, fdest); res = fwrite(&byte, 1, 1, fdest);
if( res < 1 ) { if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", name); fprintf(stderr, "failed to write 1 byte for %s\n", name);
if( total > 256 ) {
free(name);
}
fclose(fdest);
return 1; return 1;
} }
} }
} }
/* dont need name anymore */
if( total > 256 ) {
free(name);
}
fclose(fdest); fclose(fdest);
} }
@@ -2859,7 +2837,6 @@ opj_image_t* rawtoimage(const char *filename, opj_cparameters_t *parameters, raw
image = opj_image_create(numcomps, &cmptparm[0], color_space); image = opj_image_create(numcomps, &cmptparm[0], color_space);
if(!image) { if(!image) {
fclose(f); fclose(f);
free(cmptparm);
return NULL; return NULL;
} }
/* set image offset and reference grid */ /* set image offset and reference grid */
@@ -2875,9 +2852,6 @@ opj_image_t* rawtoimage(const char *filename, opj_cparameters_t *parameters, raw
for (i = 0; i < w * h; i++) { for (i = 0; i < w * h; i++) {
if (!fread(&value, 1, 1, f)) { if (!fread(&value, 1, 1, f)) {
fprintf(stderr,"Error reading raw file. End of file probably reached.\n"); fprintf(stderr,"Error reading raw file. End of file probably reached.\n");
fclose(f);
free(cmptparm);
opj_image_destroy(image);
return NULL; return NULL;
} }
image->comps[compno].data[i] = raw_cp->rawSigned?(char)value:value; image->comps[compno].data[i] = raw_cp->rawSigned?(char)value:value;
@@ -2892,17 +2866,11 @@ opj_image_t* rawtoimage(const char *filename, opj_cparameters_t *parameters, raw
unsigned char temp; unsigned char temp;
if (!fread(&temp, 1, 1, f)) { if (!fread(&temp, 1, 1, f)) {
fprintf(stderr,"Error reading raw file. End of file probably reached.\n"); fprintf(stderr,"Error reading raw file. End of file probably reached.\n");
fclose(f);
free(cmptparm);
opj_image_destroy(image);
return NULL; return NULL;
} }
value = temp << 8; value = temp << 8;
if (!fread(&temp, 1, 1, f)) { if (!fread(&temp, 1, 1, f)) {
fprintf(stderr,"Error reading raw file. End of file probably reached.\n"); fprintf(stderr,"Error reading raw file. End of file probably reached.\n");
fclose(f);
free(cmptparm);
opj_image_destroy(image);
return NULL; return NULL;
} }
value += temp; value += temp;
@@ -2912,9 +2880,6 @@ opj_image_t* rawtoimage(const char *filename, opj_cparameters_t *parameters, raw
} }
else { else {
fprintf(stderr,"OpenJPEG cannot encode raw components with bit depth higher than 16 bits.\n"); fprintf(stderr,"OpenJPEG cannot encode raw components with bit depth higher than 16 bits.\n");
fclose(f);
free(cmptparm);
opj_image_destroy(image);
return NULL; return NULL;
} }
@@ -2922,7 +2887,6 @@ opj_image_t* rawtoimage(const char *filename, opj_cparameters_t *parameters, raw
fprintf(stderr,"Warning. End of raw file not reached... processing anyway\n"); fprintf(stderr,"Warning. End of raw file not reached... processing anyway\n");
} }
fclose(f); fclose(f);
free(cmptparm);
return image; return image;
} }
@@ -2971,7 +2935,6 @@ int imagetoraw(opj_image_t * image, const char *outfile)
res = fwrite(&curr, sizeof(signed char), 1, rawFile); res = fwrite(&curr, sizeof(signed char), 1, rawFile);
if( res < 1 ) { if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile); fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(rawFile);
return 1; return 1;
} }
ptr++; ptr++;
@@ -2989,7 +2952,6 @@ int imagetoraw(opj_image_t * image, const char *outfile)
res = fwrite(&curr, sizeof(unsigned char), 1, rawFile); res = fwrite(&curr, sizeof(unsigned char), 1, rawFile);
if( res < 1 ) { if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile); fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(rawFile);
return 1; return 1;
} }
ptr++; ptr++;
@@ -3012,14 +2974,12 @@ int imagetoraw(opj_image_t * image, const char *outfile)
res = fwrite(&temp, 1, 1, rawFile); res = fwrite(&temp, 1, 1, rawFile);
if( res < 1 ) { if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile); fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(rawFile);
return 1; return 1;
} }
temp = (unsigned char) curr; temp = (unsigned char) curr;
res = fwrite(&temp, 1, 1, rawFile); res = fwrite(&temp, 1, 1, rawFile);
if( res < 1 ) { if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile); fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(rawFile);
return 1; return 1;
} }
ptr++; ptr++;
@@ -3039,14 +2999,12 @@ int imagetoraw(opj_image_t * image, const char *outfile)
res = fwrite(&temp, 1, 1, rawFile); res = fwrite(&temp, 1, 1, rawFile);
if( res < 1 ) { if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile); fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(rawFile);
return 1; return 1;
} }
temp = (unsigned char) curr; temp = (unsigned char) curr;
res = fwrite(&temp, 1, 1, rawFile); res = fwrite(&temp, 1, 1, rawFile);
if( res < 1 ) { if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile); fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(rawFile);
return 1; return 1;
} }
ptr++; ptr++;
@@ -3057,13 +3015,11 @@ int imagetoraw(opj_image_t * image, const char *outfile)
else if (image->comps[compno].prec <= 32) else if (image->comps[compno].prec <= 32)
{ {
fprintf(stderr,"More than 16 bits per component no handled yet\n"); fprintf(stderr,"More than 16 bits per component no handled yet\n");
fclose(rawFile);
return 1; return 1;
} }
else else
{ {
fprintf(stderr,"Error: invalid precision: %d\n", image->comps[compno].prec); fprintf(stderr,"Error: invalid precision: %d\n", image->comps[compno].prec);
fclose(rawFile);
return 1; return 1;
} }
} }

View File

@@ -82,7 +82,7 @@ typedef struct img_folder{
float *rates; float *rates;
}img_fol_t; }img_fol_t;
static void encode_help_display(void) { void encode_help_display(void) {
fprintf(stdout,"HELP for image_to_j2k\n----\n\n"); fprintf(stdout,"HELP for image_to_j2k\n----\n\n");
fprintf(stdout,"- the -h option displays this help information on screen\n\n"); fprintf(stdout,"- the -h option displays this help information on screen\n\n");
@@ -321,7 +321,7 @@ static void encode_help_display(void) {
fprintf(stdout,"TotalDisto\n\n"); fprintf(stdout,"TotalDisto\n\n");
} }
static OPJ_PROG_ORDER give_progression(char progression[4]) { OPJ_PROG_ORDER give_progression(char progression[4]) {
if(strncmp(progression, "LRCP", 4) == 0) { if(strncmp(progression, "LRCP", 4) == 0) {
return LRCP; return LRCP;
} }
@@ -341,7 +341,7 @@ static OPJ_PROG_ORDER give_progression(char progression[4]) {
return PROG_UNKNOWN; return PROG_UNKNOWN;
} }
static int get_num_images(char *imgdirpath){ int get_num_images(char *imgdirpath){
DIR *dir; DIR *dir;
struct dirent* content; struct dirent* content;
int num_images = 0; int num_images = 0;
@@ -360,11 +360,10 @@ static int get_num_images(char *imgdirpath){
continue; continue;
num_images++; num_images++;
} }
closedir(dir);
return num_images; return num_images;
} }
static int load_images(dircnt_t *dirptr, char *imgdirpath){ int load_images(dircnt_t *dirptr, char *imgdirpath){
DIR *dir; DIR *dir;
struct dirent* content; struct dirent* content;
int i = 0; int i = 0;
@@ -386,11 +385,10 @@ static int load_images(dircnt_t *dirptr, char *imgdirpath){
strcpy(dirptr->filename[i],content->d_name); strcpy(dirptr->filename[i],content->d_name);
i++; i++;
} }
closedir(dir);
return 0; return 0;
} }
static int get_file_format(char *filename) { int get_file_format(char *filename) {
unsigned int i; unsigned int i;
static const char *extension[] = { static const char *extension[] = {
"pgx", "pnm", "pgm", "ppm", "pbm", "pam", "bmp", "tif", "raw", "tga", "png", "j2k", "jp2", "j2c", "jpc" "pgx", "pnm", "pgm", "ppm", "pbm", "pam", "bmp", "tif", "raw", "tga", "png", "j2k", "jp2", "j2c", "jpc"
@@ -410,13 +408,14 @@ static int get_file_format(char *filename) {
return -1; return -1;
} }
static char * get_file_name(char *name){ char * get_file_name(char *name){
char *fname; char *fname;
fname= (char*)malloc(OPJ_PATH_LEN*sizeof(char));
fname= strtok(name,"."); fname= strtok(name,".");
return fname; return fname;
} }
static char get_next_file(int imageno,dircnt_t *dirptr,img_fol_t *img_fol, opj_cparameters_t *parameters){ char get_next_file(int imageno,dircnt_t *dirptr,img_fol_t *img_fol, opj_cparameters_t *parameters){
char image_filename[OPJ_PATH_LEN], infilename[OPJ_PATH_LEN],outfilename[OPJ_PATH_LEN],temp_ofname[OPJ_PATH_LEN]; char image_filename[OPJ_PATH_LEN], infilename[OPJ_PATH_LEN],outfilename[OPJ_PATH_LEN],temp_ofname[OPJ_PATH_LEN];
char *temp_p, temp1[OPJ_PATH_LEN]=""; char *temp_p, temp1[OPJ_PATH_LEN]="";
@@ -459,7 +458,7 @@ static int initialise_4K_poc(opj_poc_t *POC, int numres){
return 2; return 2;
} }
static void cinema_parameters(opj_cparameters_t *parameters){ void cinema_parameters(opj_cparameters_t *parameters){
parameters->tile_size_on = OPJ_FALSE; parameters->tile_size_on = OPJ_FALSE;
parameters->cp_tdx=1; parameters->cp_tdx=1;
parameters->cp_tdy=1; parameters->cp_tdy=1;
@@ -492,7 +491,7 @@ static void cinema_parameters(opj_cparameters_t *parameters){
} }
static void cinema_setup_encoder(opj_cparameters_t *parameters,opj_image_t *image, img_fol_t *img_fol){ void cinema_setup_encoder(opj_cparameters_t *parameters,opj_image_t *image, img_fol_t *img_fol){
int i; int i;
float temp_rate; float temp_rate;
@@ -577,7 +576,7 @@ static void cinema_setup_encoder(opj_cparameters_t *parameters,opj_image_t *imag
/* ------------------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------------------ */
static int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters,
img_fol_t *img_fol, raw_cparameters_t *raw_cp, char *indexfilename) { img_fol_t *img_fol, raw_cparameters_t *raw_cp, char *indexfilename) {
int i, j, totlen, c; int i, j, totlen, c;
opj_option_t long_option[]={ opj_option_t long_option[]={
@@ -590,8 +589,7 @@ static int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *param
{"OutFor",REQ_ARG, NULL ,'O'}, {"OutFor",REQ_ARG, NULL ,'O'},
{"POC",REQ_ARG, NULL ,'P'}, {"POC",REQ_ARG, NULL ,'P'},
{"ROI",REQ_ARG, NULL ,'R'}, {"ROI",REQ_ARG, NULL ,'R'},
{"jpip",NO_ARG, NULL, 'J'}, {"jpip",NO_ARG, NULL, 'J'}
{0,0,0,0} /* GNU getopt_long requirement */
}; };
/* parse the command line */ /* parse the command line */
@@ -601,16 +599,12 @@ static int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *param
#endif /* USE_JPWL */ #endif /* USE_JPWL */
"h"; "h";
totlen=sizeof(long_option)-1; totlen=sizeof(long_option);
img_fol->set_out_format=0; img_fol->set_out_format=0;
raw_cp->rawWidth = 0; raw_cp->rawWidth = 0;
do{ do{
#ifdef USE_SYSTEM_GETOPT
c = opj_getopt_long(argc, argv, optlist,long_option,0);
#else
c = opj_getopt_long(argc, argv, optlist,long_option,totlen); c = opj_getopt_long(argc, argv, optlist,long_option,totlen);
#endif
if (c == -1) if (c == -1)
break; break;
switch (c) { switch (c) {
@@ -1472,21 +1466,21 @@ static int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *param
/** /**
sample error callback expecting a FILE* client object sample error callback expecting a FILE* client object
*/ */
static void error_callback(const char *msg, void *client_data) { void error_callback(const char *msg, void *client_data) {
FILE *stream = (FILE*)client_data; FILE *stream = (FILE*)client_data;
fprintf(stream, "[ERROR] %s", msg); fprintf(stream, "[ERROR] %s", msg);
} }
/** /**
sample warning callback expecting a FILE* client object sample warning callback expecting a FILE* client object
*/ */
static void warning_callback(const char *msg, void *client_data) { void warning_callback(const char *msg, void *client_data) {
FILE *stream = (FILE*)client_data; FILE *stream = (FILE*)client_data;
fprintf(stream, "[WARNING] %s", msg); fprintf(stream, "[WARNING] %s", msg);
} }
/** /**
sample debug callback expecting a FILE* client object sample debug callback expecting a FILE* client object
*/ */
static void info_callback(const char *msg, void *client_data) { void info_callback(const char *msg, void *client_data) {
FILE *stream = (FILE*)client_data; FILE *stream = (FILE*)client_data;
fprintf(stream, "[INFO] %s", msg); fprintf(stream, "[INFO] %s", msg);
} }

View File

@@ -121,7 +121,6 @@ int get_num_images(char *imgdirpath){
continue; continue;
num_images++; num_images++;
} }
closedir(dir);
return num_images; return num_images;
} }
@@ -147,7 +146,6 @@ int load_images(dircnt_t *dirptr, char *imgdirpath){
strcpy(dirptr->filename[i],content->d_name); strcpy(dirptr->filename[i],content->d_name);
i++; i++;
} }
closedir(dir);
return 0; return 0;
} }
@@ -201,20 +199,15 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i
int totlen, c; int totlen, c;
opj_option_t long_option[]={ opj_option_t long_option[]={
{"ImgDir",REQ_ARG, NULL ,'y'}, {"ImgDir",REQ_ARG, NULL ,'y'},
{0,0,0,0} /* GNU getopt_long requirement */
}; };
const char optlist[] = "i:o:h"; const char optlist[] = "i:o:h";
OPJ_ARG_NOT_USED(indexfilename); OPJ_ARG_NOT_USED(indexfilename);
totlen=sizeof(long_option)-1; totlen=sizeof(long_option);
img_fol->set_out_format = 0; img_fol->set_out_format = 0;
do { do {
#ifdef USE_SYSTEM_GETOPT
c = opj_getopt_long(argc, argv,optlist,long_option,0);
#else
c = opj_getopt_long(argc, argv,optlist,long_option,totlen); c = opj_getopt_long(argc, argv,optlist,long_option,totlen);
#endif
if (c == -1) if (c == -1)
break; break;
switch (c) { switch (c) {

View File

@@ -85,7 +85,7 @@ typedef struct img_folder{
}img_fol_t; }img_fol_t;
static void decode_help_display(void) { void decode_help_display(void) {
fprintf(stdout,"HELP for j2k_to_image\n----\n\n"); fprintf(stdout,"HELP for j2k_to_image\n----\n\n");
fprintf(stdout,"- the -h option displays this help information on screen\n\n"); fprintf(stdout,"- the -h option displays this help information on screen\n\n");
@@ -144,7 +144,7 @@ static void decode_help_display(void) {
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
static int get_num_images(char *imgdirpath){ int get_num_images(char *imgdirpath){
DIR *dir; DIR *dir;
struct dirent* content; struct dirent* content;
int num_images = 0; int num_images = 0;
@@ -162,11 +162,10 @@ static int get_num_images(char *imgdirpath){
continue; continue;
num_images++; num_images++;
} }
closedir(dir);
return num_images; return num_images;
} }
static int load_images(dircnt_t *dirptr, char *imgdirpath){ int load_images(dircnt_t *dirptr, char *imgdirpath){
DIR *dir; DIR *dir;
struct dirent* content; struct dirent* content;
int i = 0; int i = 0;
@@ -188,11 +187,10 @@ static int load_images(dircnt_t *dirptr, char *imgdirpath){
strcpy(dirptr->filename[i],content->d_name); strcpy(dirptr->filename[i],content->d_name);
i++; i++;
} }
closedir(dir);
return 0; return 0;
} }
static int get_file_format(char *filename) { int get_file_format(char *filename) {
unsigned int i; unsigned int i;
static const char *extension[] = {"pgx", "pnm", "pgm", "ppm", "bmp","tif", "raw", "tga", "png", "j2k", "jp2", "jpt", "j2c", "jpc" }; static const char *extension[] = {"pgx", "pnm", "pgm", "ppm", "bmp","tif", "raw", "tga", "png", "j2k", "jp2", "jpt", "j2c", "jpc" };
static const int format[] = { PGX_DFMT, PXM_DFMT, PXM_DFMT, PXM_DFMT, BMP_DFMT, TIF_DFMT, RAW_DFMT, TGA_DFMT, PNG_DFMT, J2K_CFMT, JP2_CFMT, JPT_CFMT, J2K_CFMT, J2K_CFMT }; static const int format[] = { PGX_DFMT, PXM_DFMT, PXM_DFMT, PXM_DFMT, BMP_DFMT, TIF_DFMT, RAW_DFMT, TGA_DFMT, PNG_DFMT, J2K_CFMT, JP2_CFMT, JPT_CFMT, J2K_CFMT, J2K_CFMT };
@@ -211,7 +209,7 @@ static int get_file_format(char *filename) {
return -1; return -1;
} }
static char get_next_file(int imageno,dircnt_t *dirptr,img_fol_t *img_fol, opj_dparameters_t *parameters){ char get_next_file(int imageno,dircnt_t *dirptr,img_fol_t *img_fol, opj_dparameters_t *parameters){
char image_filename[OPJ_PATH_LEN], infilename[OPJ_PATH_LEN],outfilename[OPJ_PATH_LEN],temp_ofname[OPJ_PATH_LEN]; char image_filename[OPJ_PATH_LEN], infilename[OPJ_PATH_LEN],outfilename[OPJ_PATH_LEN],temp_ofname[OPJ_PATH_LEN];
char *temp_p, temp1[OPJ_PATH_LEN]=""; char *temp_p, temp1[OPJ_PATH_LEN]="";
@@ -237,13 +235,12 @@ static char get_next_file(int imageno,dircnt_t *dirptr,img_fol_t *img_fol, opj_d
} }
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
static int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,img_fol_t *img_fol, char *indexfilename) { int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,img_fol_t *img_fol, char *indexfilename) {
/* parse the command line */ /* parse the command line */
int totlen, c; int totlen, c;
opj_option_t long_option[]={ opj_option_t long_option[]={
{"ImgDir",REQ_ARG, NULL ,'y'}, {"ImgDir",REQ_ARG, NULL ,'y'},
{"OutFor",REQ_ARG, NULL ,'O'}, {"OutFor",REQ_ARG, NULL ,'O'},
{0,0,0,0} /* GNU getopt_long requirement */
}; };
const char optlist[] = "i:o:r:l:x:" const char optlist[] = "i:o:r:l:x:"
@@ -254,14 +251,10 @@ static int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *param
#endif /* USE_JPWL */ #endif /* USE_JPWL */
/* <<UniPG */ /* <<UniPG */
"h" ; "h" ;
totlen=sizeof(long_option) - 1; totlen=sizeof(long_option);
img_fol->set_out_format = 0; img_fol->set_out_format = 0;
do { do {
#ifdef USE_SYSTEM_GETOPT
c = opj_getopt_long(argc, argv,optlist,long_option,0);
#else
c = opj_getopt_long(argc, argv,optlist,long_option,totlen); c = opj_getopt_long(argc, argv,optlist,long_option,totlen);
#endif
if (c == -1) if (c == -1)
break; break;
switch (c) { switch (c) {
@@ -497,21 +490,21 @@ static int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *param
/** /**
sample error callback expecting a FILE* client object sample error callback expecting a FILE* client object
*/ */
static void error_callback(const char *msg, void *client_data) { void error_callback(const char *msg, void *client_data) {
FILE *stream = (FILE*)client_data; FILE *stream = (FILE*)client_data;
fprintf(stream, "[ERROR] %s", msg); fprintf(stream, "[ERROR] %s", msg);
} }
/** /**
sample warning callback expecting a FILE* client object sample warning callback expecting a FILE* client object
*/ */
static void warning_callback(const char *msg, void *client_data) { void warning_callback(const char *msg, void *client_data) {
FILE *stream = (FILE*)client_data; FILE *stream = (FILE*)client_data;
fprintf(stream, "[WARNING] %s", msg); fprintf(stream, "[WARNING] %s", msg);
} }
/** /**
sample debug callback expecting no client object sample debug callback expecting no client object
*/ */
static void info_callback(const char *msg, void *client_data) { void info_callback(const char *msg, void *client_data) {
(void)client_data; (void)client_data;
fprintf(stdout, "[INFO] %s", msg); fprintf(stdout, "[INFO] %s", msg);
} }

View File

@@ -293,14 +293,12 @@ void color_apply_icc_profile(opj_image_t *image)
if(in_prof == NULL) return; if(in_prof == NULL) return;
in_space = cmsGetPCS(in_prof); in_space = cmsGetPCS(in_prof);
(void)in_space;
out_space = cmsGetColorSpace(in_prof); out_space = cmsGetColorSpace(in_prof);
intent = cmsGetHeaderRenderingIntent(in_prof); intent = cmsGetHeaderRenderingIntent(in_prof);
max_w = image->comps[0].w; max_h = image->comps[0].h; max_w = image->comps[0].w; max_h = image->comps[0].h;
prec = image->comps[0].prec; prec = image->comps[0].prec;
(void)prec;
oldspace = image->color_space; oldspace = image->color_space;
if(out_space == cmsSigRgbData) /* enumCS 16 */ if(out_space == cmsSigRgbData) /* enumCS 16 */

View File

@@ -10,7 +10,11 @@
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software * may be used to endorse or promote products derived from this software
* without specific prior written permission. * without specific prior written permission.
* *
@@ -38,10 +42,6 @@ static char sccsid[] = "@(#)opj_getopt.c 8.3 (Berkeley) 4/27/95";
#include <string.h> #include <string.h>
#include "opj_getopt.h" #include "opj_getopt.h"
#ifdef USE_SYSTEM_GETOPT
#error
#endif
int opj_opterr = 1, /* if error message should be printed */ int opj_opterr = 1, /* if error message should be printed */
opj_optind = 1, /* index into parent argv vector */ opj_optind = 1, /* index into parent argv vector */
opj_optopt, /* character checked for validity */ opj_optopt, /* character checked for validity */

View File

@@ -1,26 +1,5 @@
/* last review : october 29th, 2002 */ /* last review : october 29th, 2002 */
#include "opj_config.h"
#ifdef USE_SYSTEM_GETOPT
#include <getopt.h>
#define opj_opterr opterr
#define opj_optind optind
#define opj_optopt optopt
#define opj_optreset optreset
#define opj_optarg optarg
typedef struct option opj_option_t;
#define NO_ARG no_argument
#define REQ_ARG required_argument
#define OPT_ARG optional_argument
#define opj_getopt getopt
#define opj_getopt_long getopt_long
#else
#ifndef _GETOPT_H_ #ifndef _GETOPT_H_
#define _GETOPT_H_ #define _GETOPT_H_
@@ -30,7 +9,7 @@ typedef struct opj_option
int has_arg; int has_arg;
int *flag; int *flag;
int val; int val;
} opj_option_t; }opj_option_t;
#define NO_ARG 0 #define NO_ARG 0
#define REQ_ARG 1 #define REQ_ARG 1
@@ -48,4 +27,3 @@ extern int opj_getopt_long(int argc, char * const argv[], const char *optstring,
extern void reset_options_reading(void); extern void reset_options_reading(void);
#endif /* _GETOPT_H_ */ #endif /* _GETOPT_H_ */
#endif /* USE_SYSTEM_GETOPT */

View File

@@ -62,7 +62,7 @@ INSTALL(TARGETS openjpip_local
IF(BUILD_JPIP_SERVER) IF(BUILD_JPIP_SERVER)
ADD_LIBRARY(openjpip_server STATIC ${OPENJPIP_SRCS} ${SERVER_SRCS}) ADD_LIBRARY(openjpip_server STATIC ${OPENJPIP_SRCS} ${SERVER_SRCS})
TARGET_LINK_LIBRARIES(openjpip_server ${FCGI_LIBRARIES} ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) TARGET_LINK_LIBRARIES(openjpip_server ${FCGI_LIBRARIES} ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS})
SET_TARGET_PROPERTIES(openjpip_server SET_TARGET_PROPERTIES(openjpip_server
PROPERTIES COMPILE_FLAGS "-DSERVER") PROPERTIES COMPILE_FLAGS "-DSERVER")
INSTALL(TARGETS openjpip_server INSTALL(TARGETS openjpip_server

View File

@@ -677,7 +677,7 @@ placeholder_param_t * parse_phld( Byte_t *datastream, Byte8_t metalength)
phld = (placeholder_param_t *)malloc( sizeof(placeholder_param_t)); phld = (placeholder_param_t *)malloc( sizeof(placeholder_param_t));
phld->LBox = big4( datastream); phld->LBox = big4( datastream);
strncpy( phld->TBox, "phld", 4); strcpy( phld->TBox, "phld");
phld->Flags = big4( datastream+8); phld->Flags = big4( datastream+8);
phld->OrigID = big8( datastream+12); phld->OrigID = big8( datastream+12);
phld->OrigBHlen = metalength - 20; phld->OrigBHlen = metalength - 20;

View File

@@ -57,14 +57,6 @@ ENDFOREACH(exe)
# Build the two java clients: # Build the two java clients:
FIND_PACKAGE(Java 1.5 COMPONENTS Development) # javac, jar FIND_PACKAGE(Java 1.5 COMPONENTS Development) # javac, jar
# User can override this:
if(NOT DEFINED JAVA_SOURCE_VERSION)
set(JAVA_SOURCE_VERSION 1.5)
endif()
if(NOT DEFINED JAVA_TARGET_VERSION)
set(JAVA_TARGET_VERSION 1.5)
endif()
# Only build the java viewer if dev is found: # Only build the java viewer if dev is found:
if(Java_Development_FOUND AND Java_JAVAC_EXECUTABLE) if(Java_Development_FOUND AND Java_JAVAC_EXECUTABLE)
set(jflags $ENV{JFLAGS}) set(jflags $ENV{JFLAGS})
@@ -78,7 +70,6 @@ if(Java_Development_FOUND AND Java_JAVAC_EXECUTABLE)
ADD_CUSTOM_COMMAND( ADD_CUSTOM_COMMAND(
OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar
COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags} COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
-source ${JAVA_SOURCE_VERSION} -target ${JAVA_TARGET_VERSION}
${java1_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes1 ${java1_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes1
COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar
${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt -C ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt -C
@@ -133,7 +124,6 @@ if(Java_Development_FOUND AND Java_JAVAC_EXECUTABLE)
ADD_CUSTOM_COMMAND( ADD_CUSTOM_COMMAND(
OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar
COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags} COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
-source ${JAVA_SOURCE_VERSION} -target ${JAVA_TARGET_VERSION}
-classpath ${APACHE_XERCES_JAR} -classpath ${APACHE_XERCES_JAR}
${java2_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes2 ${java2_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes2
COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar

View File

@@ -7,7 +7,7 @@
m4_define([OPJ_MAJOR], [1]) m4_define([OPJ_MAJOR], [1])
m4_define([OPJ_MINOR], [5]) m4_define([OPJ_MINOR], [5])
m4_define([OPJ_MICRO], [2]) m4_define([OPJ_MICRO], [0])
m4_define([lt_cur], m4_eval(OPJ_MAJOR + OPJ_MINOR)) m4_define([lt_cur], m4_eval(OPJ_MAJOR + OPJ_MINOR))
m4_define([lt_rev], OPJ_MICRO) m4_define([lt_rev], OPJ_MICRO)
@@ -23,6 +23,7 @@ AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([opj_config.h]) AC_CONFIG_HEADERS([opj_config.h])
AC_CANONICAL_SYSTEM
AC_CANONICAL_HOST AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([1.11 foreign dist-bzip2 dist-xz dist-zip]) AM_INIT_AUTOMAKE([1.11 foreign dist-bzip2 dist-xz dist-zip])
@@ -465,14 +466,8 @@ AC_HEADER_DIRENT
### Checks for compiler characteristics ### Checks for compiler characteristics
AM_PROG_CC_C_O AM_PROG_CC_C_O
ac_cv_c_big_endian=0 AC_C_BIGENDIAN
AC_C_BIGENDIAN([ac_cv_c_big_endian=yes], [ac_cv_c_big_endian=no],[])
#
if test "x${ac_cv_c_big_endian}" = "xyes" ; then
AC_DEFINE(OPJ_BIG_ENDIAN, [1], [define to 1 if your machine has BE])
AC_DEFINE(WORDS_BIGENDIAN, [1], [define to 1 if your machine has BE])
fi
#
#OPJ_COMPILER_FLAG([-Wall]) #OPJ_COMPILER_FLAG([-Wall])
#OPJ_COMPILER_FLAG([-Wextra]) #OPJ_COMPILER_FLAG([-Wextra])
#OPJ_COMPILER_FLAG([-Wshadow]) #OPJ_COMPILER_FLAG([-Wshadow])

View File

@@ -147,7 +147,7 @@ HTML_STYLESHEET =
HTML_COLORSTYLE_HUE = 220 HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_SAT = 100 HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_GAMMA = 80 HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = NO HTML_TIMESTAMP = YES
HTML_ALIGN_MEMBERS = YES HTML_ALIGN_MEMBERS = YES
HTML_DYNAMIC_SECTIONS = NO HTML_DYNAMIC_SECTIONS = NO
GENERATE_DOCSET = NO GENERATE_DOCSET = NO

View File

@@ -148,7 +148,7 @@ HTML_STYLESHEET =
HTML_COLORSTYLE_HUE = 220 HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_SAT = 100 HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_GAMMA = 80 HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = NO HTML_TIMESTAMP = YES
HTML_ALIGN_MEMBERS = YES HTML_ALIGN_MEMBERS = YES
HTML_DYNAMIC_SECTIONS = NO HTML_DYNAMIC_SECTIONS = NO
GENERATE_DOCSET = NO GENERATE_DOCSET = NO

View File

@@ -45,11 +45,6 @@ dist_man3_MANS = \
man/man3/libopenjpeg.3 man/man3/libopenjpeg.3
install-data-hook: install-data-hook:
@echo -e " (MAN)\t$(man1dir)/image_to_j2k.1" >> $(top_builddir)/report.txt
@echo -e " (MAN)\t$(man1dir)/j2k_dump.1" >> $(top_builddir)/report.txt
@echo -e " (MAN)\t$(man1dir)/j2k_to_image.1" >> $(top_builddir)/report.txt
@echo -e " (MAN)\t$(man3dir)/libopenjpeg.3" >> $(top_builddir)/report.txt
if WANT_JPWL
cd $(DESTDIR)$(man1dir) && \ cd $(DESTDIR)$(man1dir) && \
rm -f jpwl_image_to_j2k.1 && \ rm -f jpwl_image_to_j2k.1 && \
$(LN_S) image_to_j2k.1 jpwl_image_to_j2k.1 $(LN_S) image_to_j2k.1 jpwl_image_to_j2k.1
@@ -59,17 +54,18 @@ if WANT_JPWL
cd $(DESTDIR)$(man3dir) && \ cd $(DESTDIR)$(man3dir) && \
rm -f jpwl_libopenjpeg.3 && \ rm -f jpwl_libopenjpeg.3 && \
$(LN_S) libopenjpeg.3 jpwl_libopenjpeg.3 $(LN_S) libopenjpeg.3 jpwl_libopenjpeg.3
@echo -e " (MAN)\t$(man1dir)/image_to_j2k.1" >> $(top_builddir)/report.txt
@echo -e " (LN)\t$(man1dir)/jpwl_image_to_j2k.1" >> $(top_builddir)/report.txt @echo -e " (LN)\t$(man1dir)/jpwl_image_to_j2k.1" >> $(top_builddir)/report.txt
@echo -e " (MAN)\t$(man1dir)/j2k_dump.1" >> $(top_builddir)/report.txt
@echo -e " (MAN)\t$(man1dir)/j2k_to_image.1" >> $(top_builddir)/report.txt
@echo -e " (LN)\t$(man1dir)//jpwl_j2k_to_image.1" >> $(top_builddir)/report.txt @echo -e " (LN)\t$(man1dir)//jpwl_j2k_to_image.1" >> $(top_builddir)/report.txt
@echo -e " (MAN)\t$(man3dir)/libopenjpeg.3" >> $(top_builddir)/report.txt
@echo -e " (LN)\t$(man3dir)/jpwl_libopenjpeg.3" >> $(top_builddir)/report.txt @echo -e " (LN)\t$(man3dir)/jpwl_libopenjpeg.3" >> $(top_builddir)/report.txt
endif
uninstall-hook: uninstall-hook:
if WANT_JPWL
rm -f $(DESTDIR)$(man1dir)/jpwl_image_to_j2k.1 rm -f $(DESTDIR)$(man1dir)/jpwl_image_to_j2k.1
rm -f $(DESTDIR)$(man1dir)/jpwl_j2k_to_image.1 rm -f $(DESTDIR)$(man1dir)/jpwl_j2k_to_image.1
rm -f $(DESTDIR)$(man3dir)/jpwl_libopenjpeg.3 rm -f $(DESTDIR)$(man3dir)/jpwl_libopenjpeg.3
endif
EXTRA_DIST = \ EXTRA_DIST = \
CMakeLists.txt \ CMakeLists.txt \

View File

@@ -62,10 +62,3 @@ INSTALL(FILES openjpeg.h
INSTALL( INSTALL(
FILES ${OPENJPEG_SOURCE_DIR}/doc/man/man3/libopenjpeg.3 FILES ${OPENJPEG_SOURCE_DIR}/doc/man/man3/libopenjpeg.3
DESTINATION ${OPENJPEG_INSTALL_MAN_DIR}/man3) DESTINATION ${OPENJPEG_INSTALL_MAN_DIR}/man3)
# internal utilities to generate t1_luts.h
# no need to install:
ADD_EXECUTABLE(t1_generate_luts t1_generate_luts.c)
IF(UNIX)
TARGET_LINK_LIBRARIES(t1_generate_luts m)
ENDIF()

View File

@@ -35,6 +35,7 @@ openjpeg.c \
pi.c \ pi.c \
raw.c \ raw.c \
t1.c \ t1.c \
t1_generate_luts.c \
t2.c \ t2.c \
tcd.c \ tcd.c \
tgt.c \ tgt.c \

View File

@@ -42,7 +42,7 @@ Write a bit
@param bio BIO handle @param bio BIO handle
@param b Bit to write (0 or 1) @param b Bit to write (0 or 1)
*/ */
static void bio_putbit(opj_bio_t *bio, unsigned int b); static void bio_putbit(opj_bio_t *bio, int b);
/** /**
Read a bit Read a bit
@param bio BIO handle @param bio BIO handle
@@ -78,7 +78,7 @@ static int bio_byteout(opj_bio_t *bio) {
if (bio->bp >= bio->end) { if (bio->bp >= bio->end) {
return 1; return 1;
} }
*bio->bp++ = (unsigned char)(bio->buf >> 8); *bio->bp++ = bio->buf >> 8;
return 0; return 0;
} }
@@ -92,7 +92,7 @@ static int bio_bytein(opj_bio_t *bio) {
return 0; return 0;
} }
static void bio_putbit(opj_bio_t *bio, unsigned int b) { static void bio_putbit(opj_bio_t *bio, int b) {
if (bio->ct == 0) { if (bio->ct == 0) {
bio_byteout(bio); bio_byteout(bio);
} }
@@ -126,7 +126,7 @@ void bio_destroy(opj_bio_t *bio) {
} }
int bio_numbytes(opj_bio_t *bio) { int bio_numbytes(opj_bio_t *bio) {
return (int)(bio->bp - bio->start); return (bio->bp - bio->start);
} }
void bio_init_enc(opj_bio_t *bio, unsigned char *bp, int len) { void bio_init_enc(opj_bio_t *bio, unsigned char *bp, int len) {

View File

@@ -30,7 +30,6 @@
*/ */
#include "opj_includes.h" #include "opj_includes.h"
#include <assert.h>
/* ----------------------------------------------------------------------- */ /* ----------------------------------------------------------------------- */
@@ -107,7 +106,6 @@ int OPJ_CALLCONV cio_tell(opj_cio_t *cio) {
* pos : position, in number of bytes, from the beginning of the stream * pos : position, in number of bytes, from the beginning of the stream
*/ */
void OPJ_CALLCONV cio_seek(opj_cio_t *cio, int pos) { void OPJ_CALLCONV cio_seek(opj_cio_t *cio, int pos) {
assert((cio->start + pos) <= cio->end);
cio->bp = cio->start + pos; cio->bp = cio->start + pos;
} }
@@ -115,7 +113,6 @@ void OPJ_CALLCONV cio_seek(opj_cio_t *cio, int pos) {
* Number of bytes left before the end of the stream. * Number of bytes left before the end of the stream.
*/ */
int cio_numbytesleft(opj_cio_t *cio) { int cio_numbytesleft(opj_cio_t *cio) {
assert((cio->end - cio->bp) >= 0);
return cio->end - cio->bp; return cio->end - cio->bp;
} }
@@ -142,7 +139,6 @@ opj_bool cio_byteout(opj_cio_t *cio, unsigned char v) {
* Read a byte. * Read a byte.
*/ */
unsigned char cio_bytein(opj_cio_t *cio) { unsigned char cio_bytein(opj_cio_t *cio) {
assert(cio->bp >= cio->start);
if (cio->bp >= cio->end) { if (cio->bp >= cio->end) {
opj_event_msg(cio->cinfo, EVT_ERROR, "read error: passed the end of the codestream (start = %d, current = %d, end = %d\n", cio->start, cio->bp, cio->end); opj_event_msg(cio->cinfo, EVT_ERROR, "read error: passed the end of the codestream (start = %d, current = %d, end = %d\n", cio->start, cio->bp, cio->end);
return 0; return 0;
@@ -177,7 +173,7 @@ unsigned int cio_read(opj_cio_t *cio, int n) {
unsigned int v; unsigned int v;
v = 0; v = 0;
for (i = n - 1; i >= 0; i--) { for (i = n - 1; i >= 0; i--) {
v += (unsigned int)cio_bytein(cio) << (i << 3); v += cio_bytein(cio) << (i << 3);
} }
return v; return v;
} }
@@ -188,10 +184,6 @@ unsigned int cio_read(opj_cio_t *cio, int n) {
* n : number of bytes to skip * n : number of bytes to skip
*/ */
void cio_skip(opj_cio_t *cio, int n) { void cio_skip(opj_cio_t *cio, int n) {
assert((cio->bp + n) >= cio->bp);
if (((cio->bp + n) < cio->start) || ((cio->bp + n) > cio->end)) {
assert(0);
}
cio->bp += n; cio->bp += n;
} }

View File

@@ -40,7 +40,7 @@ opj_image_t* OPJ_CALLCONV opj_image_create(int numcmpts, opj_image_cmptparm_t *c
image->color_space = clrspc; image->color_space = clrspc;
image->numcomps = numcmpts; image->numcomps = numcmpts;
/* allocate memory for the per-component information */ /* allocate memory for the per-component information */
image->comps = (opj_image_comp_t*)opj_calloc(1,image->numcomps * sizeof(opj_image_comp_t)); image->comps = (opj_image_comp_t*)opj_malloc(image->numcomps * sizeof(opj_image_comp_t));
if(!image->comps) { if(!image->comps) {
fprintf(stderr,"Unable to allocate memory for image.\n"); fprintf(stderr,"Unable to allocate memory for image.\n");
opj_image_destroy(image); opj_image_destroy(image);

View File

@@ -32,7 +32,6 @@
*/ */
#include "opj_includes.h" #include "opj_includes.h"
#include <assert.h>
/** @defgroup J2K J2K - JPEG-2000 codestream reader/writer */ /** @defgroup J2K J2K - JPEG-2000 codestream reader/writer */
/*@{*/ /*@{*/
@@ -405,7 +404,6 @@ static void j2k_write_siz(opj_j2k_t *j2k) {
static void j2k_read_siz(opj_j2k_t *j2k) { static void j2k_read_siz(opj_j2k_t *j2k) {
int len, i; int len, i;
int n_comps;
opj_cio_t *cio = j2k->cio; opj_cio_t *cio = j2k->cio;
opj_image_t *image = j2k->image; opj_image_t *image = j2k->image;
@@ -424,32 +422,12 @@ static void j2k_read_siz(opj_j2k_t *j2k) {
if ((image->x0<0)||(image->x1<0)||(image->y0<0)||(image->y1<0)) { if ((image->x0<0)||(image->x1<0)||(image->y0<0)||(image->y1<0)) {
opj_event_msg(j2k->cinfo, EVT_ERROR, opj_event_msg(j2k->cinfo, EVT_ERROR,
"invalid image size (x0:%d, x1:%d, y0:%d, y1:%d)\n", "%s: invalid image size (x0:%d, x1:%d, y0:%d, y1:%d)\n",
image->x0,image->x1,image->y0,image->y1); image->x0,image->x1,image->y0,image->y1);
return; return;
} }
n_comps = (len - 36 - 2 ) / 3;
assert( (len - 36 - 2 ) % 3 == 0 );
image->numcomps = cio_read(cio, 2); /* Csiz */ image->numcomps = cio_read(cio, 2); /* Csiz */
assert( n_comps == image->numcomps );
/* testcase 4035.pdf.SIGSEGV.d8b.3375 */
if (image->x0 > image->x1 || image->y0 > image->y1) {
opj_event_msg(j2k->cinfo, EVT_ERROR, "Error with SIZ marker: negative image size (%d x %d)\n", image->x1 - image->x0, image->y1 - image->y0);
return;
}
/* testcase 2539.pdf.SIGFPE.706.1712 (also 3622.pdf.SIGFPE.706.2916 and 4008.pdf.SIGFPE.706.3345 and maybe more) */
if (!(cp->tdx * cp->tdy)) {
opj_event_msg(j2k->cinfo, EVT_ERROR, "Error with SIZ marker: invalid tile size (tdx: %d, tdy: %d)\n", cp->tdx, cp->tdy);
return;
}
/* testcase 1610.pdf.SIGSEGV.59c.681 */
if (((int64)image->x1) * ((int64)image->y1) != (image->x1 * image->y1)) {
opj_event_msg(j2k->cinfo, EVT_ERROR, "Prevent buffer overflow (x1: %d, y1: %d)\n", image->x1, image->y1);
return;
}
#ifdef USE_JPWL #ifdef USE_JPWL
if (j2k->cp->correct) { if (j2k->cp->correct) {
@@ -488,19 +466,11 @@ static void j2k_read_siz(opj_j2k_t *j2k) {
/* update components number in the jpwl_exp_comps filed */ /* update components number in the jpwl_exp_comps filed */
cp->exp_comps = image->numcomps; cp->exp_comps = image->numcomps;
} }
#else
(void)len;
#endif /* USE_JPWL */ #endif /* USE_JPWL */
/* prevent division by zero */
if (!(cp->tdx * cp->tdy)) {
opj_event_msg(j2k->cinfo, EVT_ERROR, "invalid tile size (tdx: %d, tdy: %d)\n", cp->tdx, cp->tdy);
return;
}
image->comps = (opj_image_comp_t*) opj_calloc(image->numcomps, sizeof(opj_image_comp_t)); image->comps = (opj_image_comp_t*) opj_calloc(image->numcomps, sizeof(opj_image_comp_t));
for (i = 0; i < image->numcomps; i++) { for (i = 0; i < image->numcomps; i++) {
int tmp; int tmp, w, h;
tmp = cio_read(cio, 1); /* Ssiz_i */ tmp = cio_read(cio, 1); /* Ssiz_i */
image->comps[i].prec = (tmp & 0x7f) + 1; image->comps[i].prec = (tmp & 0x7f) + 1;
image->comps[i].sgnd = tmp >> 7; image->comps[i].sgnd = tmp >> 7;
@@ -536,11 +506,9 @@ static void j2k_read_siz(opj_j2k_t *j2k) {
} }
#endif /* USE_JPWL */ #endif /* USE_JPWL */
/* prevent division by zero */ /* TODO: unused ? */
if (!(image->comps[i].dx * image->comps[i].dy)) { w = int_ceildiv(image->x1 - image->x0, image->comps[i].dx);
opj_event_msg(j2k->cinfo, EVT_ERROR, "JPWL: invalid component size (dx: %d, dy: %d)\n", image->comps[i].dx, image->comps[i].dy); h = int_ceildiv(image->y1 - image->y0, image->comps[i].dy);
return;
}
image->comps[i].resno_decoded = 0; /* number of resolution decoded */ image->comps[i].resno_decoded = 0; /* number of resolution decoded */
image->comps[i].factor = cp->reduce; /* reducing factor per component */ image->comps[i].factor = cp->reduce; /* reducing factor per component */
@@ -549,15 +517,6 @@ static void j2k_read_siz(opj_j2k_t *j2k) {
cp->tw = int_ceildiv(image->x1 - cp->tx0, cp->tdx); cp->tw = int_ceildiv(image->x1 - cp->tx0, cp->tdx);
cp->th = int_ceildiv(image->y1 - cp->ty0, cp->tdy); cp->th = int_ceildiv(image->y1 - cp->ty0, cp->tdy);
/* gdal_fuzzer_check_number_of_tiles.jp2 */
if (cp->tw == 0 || cp->th == 0 || cp->tw > 65535 / cp->th) {
opj_event_msg(j2k->cinfo, EVT_ERROR,
"Invalid number of tiles : %u x %u (maximum fixed by jpeg2000 norm is 65535 tiles)\n",
cp->tw, cp->th);
return;
}
#ifdef USE_JPWL #ifdef USE_JPWL
if (j2k->cp->correct) { if (j2k->cp->correct) {
/* if JPWL is on, we check whether TX errors have damaged /* if JPWL is on, we check whether TX errors have damaged
@@ -810,7 +769,6 @@ static void j2k_read_cod(opj_j2k_t *j2k) {
opj_image_t *image = j2k->image; opj_image_t *image = j2k->image;
len = cio_read(cio, 2); /* Lcod */ len = cio_read(cio, 2); /* Lcod */
(void)len;
tcp->csty = cio_read(cio, 1); /* Scod */ tcp->csty = cio_read(cio, 1); /* Scod */
tcp->prg = (OPJ_PROG_ORDER)cio_read(cio, 1); /* SGcod (A) */ tcp->prg = (OPJ_PROG_ORDER)cio_read(cio, 1); /* SGcod (A) */
tcp->numlayers = cio_read(cio, 2); /* SGcod (B) */ tcp->numlayers = cio_read(cio, 2); /* SGcod (B) */
@@ -864,14 +822,7 @@ static void j2k_read_coc(opj_j2k_t *j2k) {
opj_cio_t *cio = j2k->cio; opj_cio_t *cio = j2k->cio;
len = cio_read(cio, 2); /* Lcoc */ len = cio_read(cio, 2); /* Lcoc */
(void)len;
compno = cio_read(cio, image->numcomps <= 256 ? 1 : 2); /* Ccoc */ compno = cio_read(cio, image->numcomps <= 256 ? 1 : 2); /* Ccoc */
if (compno >= image->numcomps) {
opj_event_msg(j2k->cinfo, EVT_ERROR,
"bad component number in COC (%d out of a maximum of %d)\n",
compno, image->numcomps);
return;
}
tcp->tccps[compno].csty = cio_read(cio, 1); /* Scoc */ tcp->tccps[compno].csty = cio_read(cio, 1); /* Scoc */
j2k_read_cox(j2k, compno); j2k_read_cox(j2k, compno);
} }
@@ -942,8 +893,6 @@ static void j2k_read_qcx(opj_j2k_t *j2k, int compno, int len) {
opj_event_msg(j2k->cinfo, EVT_WARNING , opj_event_msg(j2k->cinfo, EVT_WARNING ,
"bad number of subbands in Sqcx (%d) regarding to J2K_MAXBANDS (%d) \n" "bad number of subbands in Sqcx (%d) regarding to J2K_MAXBANDS (%d) \n"
"- limiting number of bands to J2K_MAXBANDS and try to move to the next markers\n", numbands, J2K_MAXBANDS); "- limiting number of bands to J2K_MAXBANDS and try to move to the next markers\n", numbands, J2K_MAXBANDS);
/* edf_c2_1013627.jp2 */
numbands = 1;
} }
#endif /* USE_JPWL */ #endif /* USE_JPWL */
@@ -1055,16 +1004,9 @@ static void j2k_read_qcc(opj_j2k_t *j2k) {
/* keep your private count of tiles */ /* keep your private count of tiles */
backup_compno++; backup_compno++;
} };
#endif /* USE_JPWL */ #endif /* USE_JPWL */
if ((compno < 0) || (compno >= numcomp)) {
opj_event_msg(j2k->cinfo, EVT_ERROR,
"bad component number in QCC (%d out of a maximum of %d)\n",
compno, j2k->image->numcomps);
return;
}
j2k_read_qcx(j2k, compno, len - 2 - (numcomp <= 256 ? 1 : 2)); j2k_read_qcx(j2k, compno, len - 2 - (numcomp <= 256 ? 1 : 2));
} }
@@ -1110,15 +1052,6 @@ static void j2k_read_poc(opj_j2k_t *j2k) {
len = cio_read(cio, 2); /* Lpoc */ len = cio_read(cio, 2); /* Lpoc */
numpchgs = (len - 2) / (5 + 2 * (numcomps <= 256 ? 1 : 2)); numpchgs = (len - 2) / (5 + 2 * (numcomps <= 256 ? 1 : 2));
if( numpchgs >= 32 )
{
/* edf_c2_1103421.jp2 */
opj_event_msg(j2k->cinfo, EVT_ERROR,
"bad number of POCS (%d out of a maximum of %d)\n",
numpchgs, 32);
numpchgs = 0;
}
for (i = old_poc; i < numpchgs + old_poc; i++) { for (i = old_poc; i < numpchgs + old_poc; i++) {
opj_poc_t *poc; opj_poc_t *poc;
poc = &tcp->pocs[i]; poc = &tcp->pocs[i];
@@ -1141,12 +1074,9 @@ static void j2k_read_crg(opj_j2k_t *j2k) {
int numcomps = j2k->image->numcomps; int numcomps = j2k->image->numcomps;
len = cio_read(cio, 2); /* Lcrg */ len = cio_read(cio, 2); /* Lcrg */
(void)len;
for (i = 0; i < numcomps; i++) { for (i = 0; i < numcomps; i++) {
Xcrg_i = cio_read(cio, 2); /* Xcrg_i */ Xcrg_i = cio_read(cio, 2); /* Xcrg_i */
(void)Xcrg_i;
Ycrg_i = cio_read(cio, 2); /* Ycrg_i */ Ycrg_i = cio_read(cio, 2); /* Ycrg_i */
(void)Ycrg_i;
} }
} }
@@ -1158,16 +1088,13 @@ static void j2k_read_tlm(opj_j2k_t *j2k) {
len = cio_read(cio, 2); /* Ltlm */ len = cio_read(cio, 2); /* Ltlm */
Ztlm = cio_read(cio, 1); /* Ztlm */ Ztlm = cio_read(cio, 1); /* Ztlm */
(void)Ztlm;
Stlm = cio_read(cio, 1); /* Stlm */ Stlm = cio_read(cio, 1); /* Stlm */
ST = ((Stlm >> 4) & 0x01) + ((Stlm >> 4) & 0x02); ST = ((Stlm >> 4) & 0x01) + ((Stlm >> 4) & 0x02);
SP = (Stlm >> 6) & 0x01; SP = (Stlm >> 6) & 0x01;
tile_tlm = (len - 4) / ((SP + 1) * 2 + ST); tile_tlm = (len - 4) / ((SP + 1) * 2 + ST);
for (i = 0; i < tile_tlm; i++) { for (i = 0; i < tile_tlm; i++) {
Ttlm_i = cio_read(cio, ST); /* Ttlm_i */ Ttlm_i = cio_read(cio, ST); /* Ttlm_i */
(void)Ttlm_i;
Ptlm_i = cio_read(cio, SP ? 4 : 2); /* Ptlm_i */ Ptlm_i = cio_read(cio, SP ? 4 : 2); /* Ptlm_i */
(void)Ptlm_i;
} }
} }
@@ -1178,7 +1105,6 @@ static void j2k_read_plm(opj_j2k_t *j2k) {
len = cio_read(cio, 2); /* Lplm */ len = cio_read(cio, 2); /* Lplm */
Zplm = cio_read(cio, 1); /* Zplm */ Zplm = cio_read(cio, 1); /* Zplm */
(void)Zplm;
len -= 3; len -= 3;
while (len > 0) { while (len > 0) {
Nplm = cio_read(cio, 4); /* Nplm */ Nplm = cio_read(cio, 4); /* Nplm */
@@ -1204,7 +1130,6 @@ static void j2k_read_plt(opj_j2k_t *j2k) {
len = cio_read(cio, 2); /* Lplt */ len = cio_read(cio, 2); /* Lplt */
Zplt = cio_read(cio, 1); /* Zplt */ Zplt = cio_read(cio, 1); /* Zplt */
(void)Zplt;
for (i = len - 3; i > 0; i--) { for (i = len - 3; i > 0; i--) {
add = cio_read(cio, 1); add = cio_read(cio, 1);
packet_len = (packet_len << 7) + add; /* Iplt_i */ packet_len = (packet_len << 7) + add; /* Iplt_i */
@@ -1352,7 +1277,6 @@ static void j2k_read_sot(opj_j2k_t *j2k) {
opj_cio_t *cio = j2k->cio; opj_cio_t *cio = j2k->cio;
len = cio_read(cio, 2); len = cio_read(cio, 2);
(void)len;
tileno = cio_read(cio, 2); tileno = cio_read(cio, 2);
#ifdef USE_JPWL #ifdef USE_JPWL
@@ -1589,14 +1513,26 @@ static void j2k_read_sod(opj_j2k_t *j2k) {
truncate = 1; /* Case of a truncate codestream */ truncate = 1; /* Case of a truncate codestream */
} }
{/* chop padding bytes: */
unsigned char *s, *e;
s = cio_getbp(cio);
e = s + len;
if(len > 8) s = e - 8;
if(e[-2] == 0x00 && e[-1] == 0x00) /* padding bytes */
{
while(e > s)
{
if(e[-2] == 0xff && e[-1] == 0xd9) break;
--len; --e; truncate = 1;
}
}
}
data = j2k->tile_data[curtileno]; data = j2k->tile_data[curtileno];
data_ptr = data; /* store in case of failure */
data = (unsigned char*) opj_realloc(data, (j2k->tile_len[curtileno] + len) * sizeof(unsigned char)); data = (unsigned char*) opj_realloc(data, (j2k->tile_len[curtileno] + len) * sizeof(unsigned char));
if( data == NULL ) {
opj_event_msg(j2k->cinfo, EVT_ERROR, "Could not reallocated\n" );
opj_free( data_ptr );
return;
}
data_ptr = data + j2k->tile_len[curtileno]; data_ptr = data + j2k->tile_len[curtileno];
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
@@ -1636,10 +1572,8 @@ static void j2k_read_rgn(opj_j2k_t *j2k) {
int numcomps = j2k->image->numcomps; int numcomps = j2k->image->numcomps;
len = cio_read(cio, 2); /* Lrgn */ len = cio_read(cio, 2); /* Lrgn */
(void)len;
compno = cio_read(cio, numcomps <= 256 ? 1 : 2); /* Crgn */ compno = cio_read(cio, numcomps <= 256 ? 1 : 2); /* Crgn */
roisty = cio_read(cio, 1); /* Srgn */ roisty = cio_read(cio, 1); /* Srgn */
(void)roisty;
#ifdef USE_JPWL #ifdef USE_JPWL
if (j2k->cp->correct) { if (j2k->cp->correct) {
@@ -1656,13 +1590,6 @@ static void j2k_read_rgn(opj_j2k_t *j2k) {
}; };
#endif /* USE_JPWL */ #endif /* USE_JPWL */
if (compno >= numcomps) {
opj_event_msg(j2k->cinfo, EVT_ERROR,
"bad component number in RGN (%d out of a maximum of %d)\n",
compno, j2k->image->numcomps);
return;
}
tcp->tccps[compno].roishift = cio_read(cio, 1); /* SPrgn */ tcp->tccps[compno].roishift = cio_read(cio, 1); /* SPrgn */
} }
@@ -1693,7 +1620,6 @@ static void j2k_read_eoc(opj_j2k_t *j2k) {
{ {
tileno = j2k->cp->tileno[i]; tileno = j2k->cp->tileno[i];
success = tcd_decode_tile(tcd, j2k->tile_data[tileno], j2k->tile_len[tileno], tileno, j2k->cstr_info); success = tcd_decode_tile(tcd, j2k->tile_data[tileno], j2k->tile_len[tileno], tileno, j2k->cstr_info);
assert( tileno != -1 );
opj_free(j2k->tile_data[tileno]); opj_free(j2k->tile_data[tileno]);
j2k->tile_data[tileno] = NULL; j2k->tile_data[tileno] = NULL;
tcd_free_decode_tile(tcd, i); tcd_free_decode_tile(tcd, i);
@@ -1873,11 +1799,8 @@ void j2k_destroy_decompress(opj_j2k_t *j2k) {
if(j2k->cp != NULL) { if(j2k->cp != NULL) {
for (i = 0; i < j2k->cp->tileno_size; i++) { for (i = 0; i < j2k->cp->tileno_size; i++) {
int tileno = j2k->cp->tileno[i]; int tileno = j2k->cp->tileno[i];
if( tileno != -1 ) opj_free(j2k->tile_data[tileno]);
{ j2k->tile_data[tileno] = NULL;
opj_free(j2k->tile_data[tileno]);
j2k->tile_data[tileno] = NULL;
}
} }
} }
@@ -2041,11 +1964,6 @@ opj_image_t* j2k_decode(opj_j2k_t *j2k, opj_cio_t *cio, opj_codestream_info_t *c
} }
if (j2k->state == J2K_STATE_NEOC) { if (j2k->state == J2K_STATE_NEOC) {
j2k_read_eoc(j2k); j2k_read_eoc(j2k);
/* Check one last time for errors during decoding before returning */
if (j2k->state & J2K_STATE_ERR) {
opj_image_destroy(image);
return NULL;
}
} }
if (j2k->state != J2K_STATE_MT) { if (j2k->state != J2K_STATE_MT) {

View File

@@ -30,7 +30,6 @@
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
#include "opj_includes.h" #include "opj_includes.h"
#include <assert.h>
/** @defgroup JP2 JP2 - JPEG-2000 file format reader/writer */ /** @defgroup JP2 JP2 - JPEG-2000 file format reader/writer */
/*@{*/ /*@{*/
@@ -173,9 +172,6 @@ static opj_bool jp2_read_boxhdr(opj_common_ptr cinfo, opj_cio_t *cio, opj_jp2_bo
} }
else if (box->length == 0) { else if (box->length == 0) {
box->length = cio_numbytesleft(cio) + 8; box->length = cio_numbytesleft(cio) + 8;
} else if (box->length < 0) {
opj_event_msg(cinfo, EVT_ERROR, "Integer overflow in box->length\n");
return OPJ_FALSE; /* TODO: actually check jp2_read_boxhdr's return value */
} }
return OPJ_TRUE; return OPJ_TRUE;
@@ -522,8 +518,10 @@ static opj_bool jp2_read_cmap(opj_jp2_t *jp2, opj_cio_t *cio,
static void jp2_apply_cdef(opj_image_t *image, opj_jp2_color_t *color) static void jp2_apply_cdef(opj_image_t *image, opj_jp2_color_t *color)
{ {
opj_jp2_cdef_info_t *info; opj_jp2_cdef_info_t *info;
int color_space;
unsigned short i, n, cn, typ, asoc, acn; unsigned short i, n, cn, typ, asoc, acn;
color_space = image->color_space;
info = color->jp2_cdef->info; info = color->jp2_cdef->info;
n = color->jp2_cdef->n; n = color->jp2_cdef->n;
@@ -533,7 +531,6 @@ static void jp2_apply_cdef(opj_image_t *image, opj_jp2_color_t *color)
if((asoc = info[i].asoc) == 0) continue; if((asoc = info[i].asoc) == 0) continue;
cn = info[i].cn; typ = info[i].typ; acn = asoc - 1; cn = info[i].cn; typ = info[i].typ; acn = asoc - 1;
(void)typ;
if(cn != acn) if(cn != acn)
{ {
@@ -657,7 +654,6 @@ opj_bool jp2_read_jp2h(opj_jp2_t *jp2, opj_cio_t *cio, opj_jp2_color_t *color)
opj_event_msg(cinfo, EVT_ERROR, "Expected JP2H Marker\n"); opj_event_msg(cinfo, EVT_ERROR, "Expected JP2H Marker\n");
return OPJ_FALSE; return OPJ_FALSE;
} }
if (box.length <= 8) return OPJ_FALSE;
cio_skip(cio, box.length - 8); cio_skip(cio, box.length - 8);
if(cio->bp >= cio->end) return OPJ_FALSE; if(cio->bp >= cio->end) return OPJ_FALSE;
@@ -683,7 +679,6 @@ opj_bool jp2_read_jp2h(opj_jp2_t *jp2, opj_cio_t *cio, opj_jp2_color_t *color)
{ {
if( !jp2_read_colr(jp2, cio, &box, color)) if( !jp2_read_colr(jp2, cio, &box, color))
{ {
if (box.length <= 8) return OPJ_FALSE;
cio_seek(cio, box.init_pos + 8); cio_seek(cio, box.init_pos + 8);
cio_skip(cio, box.length - 8); cio_skip(cio, box.length - 8);
} }
@@ -694,7 +689,6 @@ opj_bool jp2_read_jp2h(opj_jp2_t *jp2, opj_cio_t *cio, opj_jp2_color_t *color)
{ {
if( !jp2_read_cdef(jp2, cio, &box, color)) if( !jp2_read_cdef(jp2, cio, &box, color))
{ {
if (box.length <= 8) return OPJ_FALSE;
cio_seek(cio, box.init_pos + 8); cio_seek(cio, box.init_pos + 8);
cio_skip(cio, box.length - 8); cio_skip(cio, box.length - 8);
} }
@@ -705,7 +699,6 @@ opj_bool jp2_read_jp2h(opj_jp2_t *jp2, opj_cio_t *cio, opj_jp2_color_t *color)
{ {
if( !jp2_read_pclr(jp2, cio, &box, color)) if( !jp2_read_pclr(jp2, cio, &box, color))
{ {
if (box.length <= 8) return OPJ_FALSE;
cio_seek(cio, box.init_pos + 8); cio_seek(cio, box.init_pos + 8);
cio_skip(cio, box.length - 8); cio_skip(cio, box.length - 8);
} }
@@ -716,14 +709,12 @@ opj_bool jp2_read_jp2h(opj_jp2_t *jp2, opj_cio_t *cio, opj_jp2_color_t *color)
{ {
if( !jp2_read_cmap(jp2, cio, &box, color)) if( !jp2_read_cmap(jp2, cio, &box, color))
{ {
if (box.length <= 8) return OPJ_FALSE;
cio_seek(cio, box.init_pos + 8); cio_seek(cio, box.init_pos + 8);
cio_skip(cio, box.length - 8); cio_skip(cio, box.length - 8);
} }
if( jp2_read_boxhdr(cinfo, cio, &box) == OPJ_FALSE ) return OPJ_FALSE; if( jp2_read_boxhdr(cinfo, cio, &box) == OPJ_FALSE ) return OPJ_FALSE;
continue; continue;
} }
if (box.length <= 8) return OPJ_FALSE;
cio_seek(cio, box.init_pos + 8); cio_seek(cio, box.init_pos + 8);
cio_skip(cio, box.length - 8); cio_skip(cio, box.length - 8);
if( jp2_read_boxhdr(cinfo, cio, &box) == OPJ_FALSE ) return OPJ_FALSE; if( jp2_read_boxhdr(cinfo, cio, &box) == OPJ_FALSE ) return OPJ_FALSE;
@@ -737,84 +728,6 @@ opj_bool jp2_read_jp2h(opj_jp2_t *jp2, opj_cio_t *cio, opj_jp2_color_t *color)
}/* jp2_read_jp2h() */ }/* jp2_read_jp2h() */
static opj_bool opj_jp2_check_color(opj_image_t *image, opj_jp2_color_t *color, opj_common_ptr cinfo)
{
int i;
/* testcase 4149.pdf.SIGSEGV.cf7.3501 */
if (color->jp2_cdef) {
opj_jp2_cdef_info_t *info = color->jp2_cdef->info;
int n = color->jp2_cdef->n;
for (i = 0; i < n; i++) {
if (info[i].cn >= image->numcomps) {
opj_event_msg(cinfo, EVT_ERROR, "Invalid component index %d (>= %d).\n", info[i].cn, image->numcomps);
return OPJ_FALSE;
}
if (info[i].asoc > 0 && (info[i].asoc - 1) >= image->numcomps) {
opj_event_msg(cinfo, EVT_ERROR, "Invalid component index %d (>= %d).\n", info[i].asoc - 1, image->numcomps);
return OPJ_FALSE;
}
}
}
/* testcases 451.pdf.SIGSEGV.f4c.3723, 451.pdf.SIGSEGV.5b5.3723 and
66ea31acbb0f23a2bbc91f64d69a03f5_signal_sigsegv_13937c0_7030_5725.pdf */
if (color->jp2_pclr && color->jp2_pclr->cmap) {
int nr_channels = color->jp2_pclr->nr_channels;
opj_jp2_cmap_comp_t *cmap = color->jp2_pclr->cmap;
opj_bool *pcol_usage, is_sane = OPJ_TRUE;
/* verify that all original components match an existing one */
for (i = 0; i < nr_channels; i++) {
if (cmap[i].cmp >= image->numcomps) {
opj_event_msg(cinfo, EVT_ERROR, "Invalid component index %d (>= %d).\n", cmap[i].cmp, image->numcomps);
is_sane = OPJ_FALSE;
}
}
pcol_usage = opj_calloc(nr_channels, sizeof(opj_bool));
if (!pcol_usage) {
opj_event_msg(cinfo, EVT_ERROR, "Unexpected OOM.\n");
return OPJ_FALSE;
}
/* verify that no component is targeted more than once */
for (i = 0; i < nr_channels; i++) {
int pcol = cmap[i].pcol;
assert(cmap[i].mtyp == 0 || cmap[i].mtyp == 1);
if (pcol >= nr_channels) {
opj_event_msg(cinfo, EVT_ERROR, "Invalid component/palette index for direct mapping %d.\n", pcol);
is_sane = OPJ_FALSE;
}
else if (pcol_usage[pcol] && cmap[i].mtyp == 1) {
opj_event_msg(cinfo, EVT_ERROR, "Component %d is mapped twice.\n", pcol);
is_sane = OPJ_FALSE;
}
else if (cmap[i].mtyp == 0 && cmap[i].pcol != 0) {
/* I.5.3.5 PCOL: If the value of the MTYP field for this channel is 0, then
* the value of this field shall be 0. */
opj_event_msg(cinfo, EVT_ERROR, "Direct use at #%d however pcol=%d.\n", i, pcol);
is_sane = OPJ_FALSE;
}
else
pcol_usage[pcol] = OPJ_TRUE;
}
/* verify that all components are targeted at least once */
for (i = 0; i < nr_channels; i++) {
if (!pcol_usage[i] && cmap[i].mtyp != 0) {
opj_event_msg(cinfo, EVT_ERROR, "Component %d doesn't have a mapping.\n", i);
is_sane = OPJ_FALSE;
}
}
opj_free(pcol_usage);
if (!is_sane) {
return OPJ_FALSE;
}
}
return OPJ_TRUE;
}
opj_image_t* opj_jp2_decode(opj_jp2_t *jp2, opj_cio_t *cio, opj_image_t* opj_jp2_decode(opj_jp2_t *jp2, opj_cio_t *cio,
opj_codestream_info_t *cstr_info) opj_codestream_info_t *cstr_info)
{ {
@@ -848,10 +761,6 @@ opj_image_t* opj_jp2_decode(opj_jp2_t *jp2, opj_cio_t *cio,
} }
if (!jp2->ignore_pclr_cmap_cdef){ if (!jp2->ignore_pclr_cmap_cdef){
if (!opj_jp2_check_color(image, &color, cinfo)) {
opj_event_msg(cinfo, EVT_ERROR, "Failed to decode PCRL box\n");
return NULL;
}
/* Set Image Color Space */ /* Set Image Color Space */
if (jp2->enumcs == 16) if (jp2->enumcs == 16)
@@ -947,14 +856,6 @@ static opj_bool jp2_read_ftyp(opj_jp2_t *jp2, opj_cio_t *cio) {
jp2->brand = cio_read(cio, 4); /* BR */ jp2->brand = cio_read(cio, 4); /* BR */
jp2->minversion = cio_read(cio, 4); /* MinV */ jp2->minversion = cio_read(cio, 4); /* MinV */
jp2->numcl = (box.length - 16) / 4; jp2->numcl = (box.length - 16) / 4;
/* edf_c2_1673169.jp2 */
if (cio_numbytesleft(cio) < ((int)jp2->numcl * 4)) {
opj_event_msg(cinfo, EVT_ERROR, "Not enough bytes in FTYP Box "
"(expected %d, but only %d left)\n",
((int)jp2->numcl * 4), cio_numbytesleft(cio));
return OPJ_FALSE;
}
jp2->cl = (unsigned int *) opj_malloc(jp2->numcl * sizeof(unsigned int)); jp2->cl = (unsigned int *) opj_malloc(jp2->numcl * sizeof(unsigned int));
for (i = 0; i < (int)jp2->numcl; i++) { for (i = 0; i < (int)jp2->numcl; i++) {
@@ -1009,14 +910,12 @@ static opj_bool jp2_read_jp2c(opj_jp2_t *jp2, opj_cio_t *cio, unsigned int *j2k_
} }
do { do {
if(JP2_JP2C != box.type) { if(JP2_JP2C != box.type) {
if (box.length <= 8) return OPJ_FALSE;
cio_skip(cio, box.length - 8); cio_skip(cio, box.length - 8);
if( jp2_read_boxhdr(cinfo, cio, &box) == OPJ_FALSE ) return OPJ_FALSE; if( jp2_read_boxhdr(cinfo, cio, &box) == OPJ_FALSE ) return OPJ_FALSE;
} }
} while(JP2_JP2C != box.type); } while(JP2_JP2C != box.type);
*j2k_codestream_offset = cio_tell(cio); *j2k_codestream_offset = cio_tell(cio);
if (box.length <= 8) return OPJ_FALSE;
*j2k_codestream_length = box.length - 8; *j2k_codestream_length = box.length - 8;
return OPJ_TRUE; return OPJ_TRUE;
@@ -1184,7 +1083,6 @@ void jp2_setup_decoder(opj_jp2_t *jp2, opj_dparameters_t *parameters) {
opj_jp2_t* jp2_create_compress(opj_common_ptr cinfo) { opj_jp2_t* jp2_create_compress(opj_common_ptr cinfo) {
opj_jp2_t *jp2 = (opj_jp2_t*)opj_malloc(sizeof(opj_jp2_t)); opj_jp2_t *jp2 = (opj_jp2_t*)opj_malloc(sizeof(opj_jp2_t));
if(jp2) { if(jp2) {
memset(jp2, 0, sizeof(opj_jp2_t));
jp2->cinfo = cinfo; jp2->cinfo = cinfo;
/* create the J2K codec */ /* create the J2K codec */
jp2->j2k = j2k_create_compress(cinfo); jp2->j2k = j2k_create_compress(cinfo);

View File

@@ -18,6 +18,7 @@ OPJ_SRC = \
../pi.c \ ../pi.c \
../raw.c \ ../raw.c \
../t1.c \ ../t1.c \
../t1_generate_luts.c \
../t2.c \ ../t2.c \
../tcd.c \ ../tcd.c \
../tgt.c \ ../tgt.c \

View File

@@ -89,17 +89,18 @@ Most compilers implement their own version of this keyword ...
/* MSVC and Borland C do not have lrintf */ /* MSVC and Borland C do not have lrintf */
#if defined(_MSC_VER) || defined(__BORLANDC__) #if defined(_MSC_VER) || defined(__BORLANDC__)
static INLINE long lrintf(float f){ static INLINE long lrintf(float f){
#ifdef _M_IX86 #ifdef _M_X64
long int i; return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f));
#else
int i;
_asm{ _asm{
fld f fld f
fistp i fistp i
}; };
return i; return i;
#else #endif
return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f));
#endif /* _M_IX86 */
} }
#endif #endif

View File

@@ -194,7 +194,7 @@ int main(){
printf("/* This file was automatically generated by t1_generate_luts.c */\n\n"); printf("/* This file was automatically generated by t1_generate_luts.c */\n\n");
/* lut_ctxno_zc */ // lut_ctxno_zc
for (j = 0; j < 4; ++j) { for (j = 0; j < 4; ++j) {
for (i = 0; i < 256; ++i) { for (i = 0; i < 256; ++i) {
int orient = j; int orient = j;
@@ -215,7 +215,7 @@ int main(){
} }
printf("%i\n};\n\n", lut_ctxno_zc[1023]); printf("%i\n};\n\n", lut_ctxno_zc[1023]);
/* lut_ctxno_sc */ // lut_ctxno_sc
printf("static char lut_ctxno_sc[256] = {\n "); printf("static char lut_ctxno_sc[256] = {\n ");
for (i = 0; i < 255; ++i) { for (i = 0; i < 255; ++i) {
printf("0x%x, ", t1_init_ctxno_sc(i << 4)); printf("0x%x, ", t1_init_ctxno_sc(i << 4));
@@ -224,7 +224,7 @@ int main(){
} }
printf("0x%x\n};\n\n", t1_init_ctxno_sc(255 << 4)); printf("0x%x\n};\n\n", t1_init_ctxno_sc(255 << 4));
/* lut_spb */ // lut_spb
printf("static char lut_spb[256] = {\n "); printf("static char lut_spb[256] = {\n ");
for (i = 0; i < 255; ++i) { for (i = 0; i < 255; ++i) {
printf("%i, ", t1_init_spb(i << 4)); printf("%i, ", t1_init_spb(i << 4));

View File

@@ -30,7 +30,6 @@
*/ */
#include "opj_includes.h" #include "opj_includes.h"
#include <assert.h>
/** @defgroup T2 T2 - Implementation of a tier-2 coding */ /** @defgroup T2 T2 - Implementation of a tier-2 coding */
/*@{*/ /*@{*/
@@ -341,15 +340,13 @@ static int t2_decode_packet(opj_t2_t* t2, unsigned char *src, int len, opj_tcd_t
int precno = pi->precno; /* precinct value */ int precno = pi->precno; /* precinct value */
int layno = pi->layno; /* quality layer value */ int layno = pi->layno; /* quality layer value */
opj_tcd_resolution_t* res = &tile->comps[compno].resolutions[resno];
unsigned char *hd = NULL; unsigned char *hd = NULL;
int present; int present;
opj_bio_t *bio = NULL; /* BIO component */ opj_bio_t *bio = NULL; /* BIO component */
opj_tcd_resolution_t* res;
assert(&tile->comps[compno] != NULL);
res = &tile->comps[compno].resolutions[resno];
if (layno == 0) { if (layno == 0) {
for (bandno = 0; bandno < res->numbands; bandno++) { for (bandno = 0; bandno < res->numbands; bandno++) {
opj_tcd_band_t *band = &res->bands[bandno]; opj_tcd_band_t *band = &res->bands[bandno];

View File

@@ -32,7 +32,6 @@
#define _ISOC99_SOURCE /* lrintf is C99 */ #define _ISOC99_SOURCE /* lrintf is C99 */
#include "opj_includes.h" #include "opj_includes.h"
#include <assert.h>
void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t * img) { void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t * img) {
int tileno, compno, resno, bandno, precno;/*, cblkno;*/ int tileno, compno, resno, bandno, precno;/*, cblkno;*/
@@ -251,8 +250,6 @@ void tcd_malloc_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int c
cbgwidthexpn = pdx - 1; cbgwidthexpn = pdx - 1;
cbgheightexpn = pdy - 1; cbgheightexpn = pdy - 1;
} }
(void)brcbgyend;
(void)brcbgxend;
cblkwidthexpn = int_min(tccp->cblkw, cbgwidthexpn); cblkwidthexpn = int_min(tccp->cblkw, cbgwidthexpn);
cblkheightexpn = int_min(tccp->cblkh, cbgheightexpn); cblkheightexpn = int_min(tccp->cblkh, cbgheightexpn);
@@ -515,8 +512,6 @@ void tcd_init_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int cur
cbgwidthexpn = pdx - 1; cbgwidthexpn = pdx - 1;
cbgheightexpn = pdy - 1; cbgheightexpn = pdy - 1;
} }
(void)brcbgyend;
(void)brcbgxend;
cblkwidthexpn = int_min(tccp->cblkw, cbgwidthexpn); cblkwidthexpn = int_min(tccp->cblkw, cbgwidthexpn);
cblkheightexpn = int_min(tccp->cblkh, cbgheightexpn); cblkheightexpn = int_min(tccp->cblkh, cbgheightexpn);
@@ -765,8 +760,6 @@ void tcd_malloc_decode_tile(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp,
cbgwidthexpn = pdx - 1; cbgwidthexpn = pdx - 1;
cbgheightexpn = pdy - 1; cbgheightexpn = pdy - 1;
} }
(void)brcbgyend;
(void)brcbgxend;
cblkwidthexpn = int_min(tccp->cblkw, cbgwidthexpn); cblkwidthexpn = int_min(tccp->cblkw, cbgwidthexpn);
cblkheightexpn = int_min(tccp->cblkh, cbgheightexpn); cblkheightexpn = int_min(tccp->cblkh, cbgheightexpn);
@@ -1388,7 +1381,6 @@ opj_bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno
if (l == -999) { if (l == -999) {
eof = 1; eof = 1;
opj_event_msg(tcd->cinfo, EVT_ERROR, "tcd_decode: incomplete bistream\n"); opj_event_msg(tcd->cinfo, EVT_ERROR, "tcd_decode: incomplete bistream\n");
return OPJ_FALSE;
} }
/*------------------TIER1-----------------*/ /*------------------TIER1-----------------*/
@@ -1409,7 +1401,6 @@ opj_bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno
if (tilec->data == NULL) if (tilec->data == NULL)
{ {
opj_event_msg(tcd->cinfo, EVT_ERROR, "Out of memory\n"); opj_event_msg(tcd->cinfo, EVT_ERROR, "Out of memory\n");
t1_destroy(t1);
return OPJ_FALSE; return OPJ_FALSE;
} }
@@ -1456,13 +1447,6 @@ opj_bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno
int n = (tile->comps[0].x1 - tile->comps[0].x0) * (tile->comps[0].y1 - tile->comps[0].y0); int n = (tile->comps[0].x1 - tile->comps[0].x0) * (tile->comps[0].y1 - tile->comps[0].y0);
if (tile->numcomps >= 3 ){ if (tile->numcomps >= 3 ){
/* testcase 1336.pdf.asan.47.376 */
if ((tile->comps[0].x1 - tile->comps[0].x0) * (tile->comps[0].y1 - tile->comps[0].y0) < n ||
( tile->comps[1].x1 - tile->comps[1].x0) * (tile->comps[1].y1 - tile->comps[1].y0) < n ||
( tile->comps[2].x1 - tile->comps[2].x0) * (tile->comps[2].y1 - tile->comps[2].y0) < n) {
opj_event_msg(tcd->cinfo, EVT_ERROR, "Tiles don't all have the same dimension. Skip the MCT step.\n");
return OPJ_FALSE;
}
if (tcd->tcp->tccps[0].qmfbid == 1) { if (tcd->tcp->tccps[0].qmfbid == 1) {
mct_decode( mct_decode(
tile->comps[0].data, tile->comps[0].data,
@@ -1494,19 +1478,10 @@ opj_bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno
int tw = tilec->x1 - tilec->x0; int tw = tilec->x1 - tilec->x0;
int w = imagec->w; int w = imagec->w;
int i, j;
int offset_x = int_ceildivpow2(imagec->x0, imagec->factor); int offset_x = int_ceildivpow2(imagec->x0, imagec->factor);
int offset_y = int_ceildivpow2(imagec->y0, imagec->factor); int offset_y = int_ceildivpow2(imagec->y0, imagec->factor);
/* NR-DEC-2977.pdf.asan.67.2198.jp2-52-decode */
if( res->x0 - offset_x < 0 || res->x1 - offset_x < 0
|| res->y0 - offset_y < 0 || res->y1 - offset_y < 0 )
{
opj_event_msg(tcd->cinfo, EVT_ERROR, "Impossible offsets %d / %d\n", offset_x, offset_y);
return OPJ_FALSE;
}
assert( 0 <= res->x0 - offset_x && 0 <= res->x1 - offset_x );
assert( 0 <= res->y0 - offset_y && 0 <= res->y1 - offset_y );
int i, j;
if(!imagec->data){ if(!imagec->data){
imagec->data = (int*) opj_malloc(imagec->w * imagec->h * sizeof(int)); imagec->data = (int*) opj_malloc(imagec->w * imagec->h * sizeof(int));
} }
@@ -1520,7 +1495,6 @@ opj_bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno
for(i = res->x0; i < res->x1; ++i) { for(i = res->x0; i < res->x1; ++i) {
int v = tilec->data[i - res->x0 + (j - res->y0) * tw]; int v = tilec->data[i - res->x0 + (j - res->y0) * tw];
v += adjust; v += adjust;
/*assert( (i - offset_x) + (j - offset_y) * w >= 0 );*/
imagec->data[(i - offset_x) + (j - offset_y) * w] = int_clamp(v, min, max); imagec->data[(i - offset_x) + (j - offset_y) * w] = int_clamp(v, min, max);
} }
} }
@@ -1530,7 +1504,6 @@ opj_bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno
float tmp = ((float*)tilec->data)[i - res->x0 + (j - res->y0) * tw]; float tmp = ((float*)tilec->data)[i - res->x0 + (j - res->y0) * tw];
int v = lrintf(tmp); int v = lrintf(tmp);
v += adjust; v += adjust;
/*assert( (i - offset_x) + (j - offset_y) * w >= 0 );*/
imagec->data[(i - offset_x) + (j - offset_y) * w] = int_clamp(v, min, max); imagec->data[(i - offset_x) + (j - offset_y) * w] = int_clamp(v, min, max);
} }
} }

View File

@@ -21,28 +21,16 @@ __opj_func=$4
__opj_have_dep="no" __opj_have_dep="no"
save_CPPFLAGS=${CPPFLAGS} save_CPPFLAGS=${CPPFLAGS}
save_LDFLAGS=${LDFLAGS}
save_LIBS=${LIBS} save_LIBS=${LIBS}
if test "x$UP[_CFLAGS]" != "x"; then if test "x${__opj_prefix}" = "x" ; then
CPPFLAGS="${CPPFLAGS} $UP[_CFLAGS]" CPPFLAGS="${CPPFLAGS} $UP[_CFLAGS]"
LDFLAGS="${LDFLAGS} $UP[_LIBS]"
else else
if test "x${__opj_prefix}" != "x" ; then CPPFLAGS="${CPPFLAGS} -I${__opj_prefix}/include"
__opj_CPPFLAGS="-I${__opj_prefix}/include" LDFLAGS="${LDFLAGS} -L${__opj_prefix}/lib"
else LIBS="${LIBS} -l${__opj_lib}"
__opj_CPPFLAGS=""
fi
CPPFLAGS="${CPPFLAGS} ${__opj_CPPFLAGS}"
fi
if test "x$UP[_LIBS]" != "x"; then
LIBS="${LIBS} $UP[_LIBS]"
else
if test "x${__opj_prefix}" != "x" ; then
__opj_LIBS="-L${__opj_prefix}/lib -l${__opj_lib}"
else
__opj_LIBS="-l${__opj_lib}"
fi
LIBS="${LIBS} ${__opj_LIBS}"
fi fi
AC_LINK_IFELSE( AC_LINK_IFELSE(
@@ -57,6 +45,7 @@ ${__opj_func}();
[__opj_have_dep="no"]) [__opj_have_dep="no"])
CPPFLAGS=${save_CPPFLAGS} CPPFLAGS=${save_CPPFLAGS}
LDFLAGS=${save_LDFLAGS}
LIBS=${save_LIBS} LIBS=${save_LIBS}
if test "x${__opj_prefix}" = "x" ; then if test "x${__opj_prefix}" = "x" ; then
@@ -66,12 +55,12 @@ else
fi fi
AC_MSG_RESULT([${__opj_have_dep}]) AC_MSG_RESULT([${__opj_have_dep}])
if test "x${__opj_have_dep}" = "xyes"; then if test "x${__opj_have_dep}" = "xyes" && ! test "x${__opj_prefix}" = "x"; then
if test "x${UP[]_CFLAGS}" = "x" ; then if test "x${UP[]_CFLAGS}" = "x" ; then
UP[]_CFLAGS="${__opj_CPPFLAGS}" UP[]_CFLAGS="-I${__opj_prefix}/include"
fi fi
if test "x${UP[]_LIBS}" = "x" ; then if test "x${UP[]_LIBS}" = "x" ; then
UP[]_LIBS="${__opj_LIBS}" UP[]_LIBS="-L${__opj_prefix}/lib -l${__opj_lib}"
fi fi
fi fi

View File

@@ -19,7 +19,6 @@
#cmakedefine HAVE_LIBLCMS2 #cmakedefine HAVE_LIBLCMS2
#cmakedefine HAVE_LCMS1_H #cmakedefine HAVE_LCMS1_H
#cmakedefine HAVE_LCMS2_H #cmakedefine HAVE_LCMS2_H
#cmakedefine USE_SYSTEM_GETOPT
/* Byte order. */ /* Byte order. */
/* All compilers that support Mac OS X define either __BIG_ENDIAN__ or /* All compilers that support Mac OS X define either __BIG_ENDIAN__ or

View File

@@ -11,15 +11,14 @@ INCLUDE_DIRECTORIES(
# First thing define the common source: # First thing define the common source:
SET(comparePGXimages_SRCS comparePGXimages.c SET(comparePGXimages_SRCS comparePGXimages.c
${OPENJPEG_SOURCE_DIR}/applications/codec/convert.c ${OPENJPEG_SOURCE_DIR}/applications/codec/convert.c
${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c
) )
SET(compare_dump_files_SRCS compare_dump_files.c)
SET(compareRAWimages_SRCS compareRAWimages.c)
if(NOT USE_SYSTEM_GETOPT) SET(compare_dump_files_SRCS compare_dump_files.c
list(APPEND comparePGXimages_SRCS ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c) ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
list(APPEND compare_dump_files_SRCS ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
list(APPEND compareRAWimages_SRCS ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c) SET(compareRAWimages_SRCS compareRAWimages.c
endif() ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
ADD_EXECUTABLE(comparePGXimages ${comparePGXimages_SRCS}) ADD_EXECUTABLE(comparePGXimages ${comparePGXimages_SRCS})
TARGET_LINK_LIBRARIES(comparePGXimages TARGET_LINK_LIBRARIES(comparePGXimages
@@ -52,7 +51,7 @@ IF(BUILD_JPIP)
SET(s "${JPIP_SERVER}?target=16.jp2&fsiz=170,170&cnew=http&type=jpp-stream") SET(s "${JPIP_SERVER}?target=16.jp2&fsiz=170,170&cnew=http&type=jpp-stream")
SET(p "${CMAKE_CURRENT_BINARY_DIR}/jpip.dat") SET(p "${CMAKE_CURRENT_BINARY_DIR}/jpip.dat")
SET(md5 "62b00c620fb0a600c5ffd413cada4674") SET(md5 "62b00c620fb0a600c5ffd413cada4674")
ADD_TEST(NAME TestJPIP1 COMMAND ${CMAKE_COMMAND} -DD_URL:STRING=${s} -DD_FILE:PATH=${p} ADD_TEST(TestJPIP1 ${CMAKE_COMMAND} -DD_URL:STRING=${s} -DD_FILE:PATH=${p}
-DEXPECTED_MD5=${md5} -P ${PROJECT_SOURCE_DIR}/CMake/JPIPTestDriver.cmake) -DEXPECTED_MD5=${md5} -P ${PROJECT_SOURCE_DIR}/CMake/JPIPTestDriver.cmake)
ENDIF(JPIP_SERVER) ENDIF(JPIP_SERVER)
ENDIF(BUILD_JPIP) ENDIF(BUILD_JPIP)

View File

@@ -11,9 +11,9 @@ SET(INPUT_CONF ${OPJ_DATA_ROOT}/input/conformance)
# List of components by file (normaly p0_13.j2k have 257 components but for this # List of components by file (normaly p0_13.j2k have 257 components but for this
#set of test we consider only 4) #set of test we consider only 4)
SET( CP0_nbC_list "not_used;1;1;1;3;4;4;3;3;1;3;1;1;4;3;1;1") SET( CP0_nbC_list "not_used;1;1;1;3;4;4;3;3;1;3;1;1;4;3;1;1")
SET( CP0_ignore_list "not_used;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0") SET( CP0_ignore_list "not_used;0;0;1;1;1;1;1;1;0;1;0;0;1;1;1;0")
SET( CP1_nbC_list "not_used;1;3;4;1;3;3;2") SET( CP1_nbC_list "not_used;1;3;4;1;3;3;2")
SET( CP1_ignore_list "not_used;0;0;0;0;0;0;0") SET( CP1_ignore_list "not_used;0;1;1;0;1;1;1")
SET(COMMENTCODEVAR FALSE) SET(COMMENTCODEVAR FALSE)
@@ -45,9 +45,7 @@ IF(ignore_test_value EQUAL 0)
# Get corresponding tests parameters # Get corresponding tests parameters
list(GET C0P0_ResFactor_list ${numFileC0P0} ResFactor) list(GET C0P0_ResFactor_list ${numFileC0P0} ResFactor)
#For Class-0 testing, we always focus on the first component only list(GET CP0_nbC_list ${numFileC0P0} nbComponents)
#list(GET CP0_nbC_list ${numFileC0P0} nbComponents)
set( nbComponents "1")
list(GET C0P0_PEAK_list ${numFileC0P0} PEAK_limit) list(GET C0P0_PEAK_list ${numFileC0P0} PEAK_limit)
list(GET C0P0_MSE_list ${numFileC0P0} MSE_limit) list(GET C0P0_MSE_list ${numFileC0P0} MSE_limit)
@@ -56,15 +54,15 @@ IF(ignore_test_value EQUAL 0)
get_filename_component(filenameRefSub ${filenameRef} NAME_WE) get_filename_component(filenameRefSub ${filenameRef} NAME_WE)
#r = 0 #r = 0
ADD_TEST(NAME ETS-C0P0-${filenameInput}-r0-decode ADD_TEST(ETS-C0P0-${filenameInput}-r0-decode
COMMAND j2k_to_image ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
-i ${INPUT_CONF}/${filenameInput} -i ${INPUT_CONF}/${filenameInput}
-o ${TEMP}/c0${filenameInput}-r0.pgx -o ${TEMP}/c0${filenameInput}-r0.pgx
-r 0 -r 0
) )
ADD_TEST(NAME ETS-C0P0-${filenameInput}-r0-compare2ref ADD_TEST(ETS-C0P0-${filenameInput}-r0-compare2ref
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_CONF}/${filenameRefSub}r0.pgx -b ${BASELINE_CONF}/${filenameRefSub}r0.pgx
-t ${TEMP}/c0${filenameInput}-r0.pgx -t ${TEMP}/c0${filenameInput}-r0.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -77,8 +75,8 @@ IF(ignore_test_value EQUAL 0)
PROPERTIES DEPENDS PROPERTIES DEPENDS
ETS-C0P0-${filenameInput}-r0-decode) ETS-C0P0-${filenameInput}-r0-decode)
ADD_TEST(NAME NR-C0P0-${filenameInput}-r0-compare2base ADD_TEST(NR-C0P0-${filenameInput}-r0-compare2base
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_NR}/opj_${filenameRefSub}-r0.pgx -b ${BASELINE_NR}/opj_${filenameRefSub}-r0.pgx
-t ${TEMP}/c0${filenameInput}-r0.pgx -t ${TEMP}/c0${filenameInput}-r0.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -91,15 +89,15 @@ IF(ignore_test_value EQUAL 0)
ETS-C0P0-${filenameInput}-r0-decode) ETS-C0P0-${filenameInput}-r0-decode)
#r = 1 #r = 1
ADD_TEST(NAME ETS-C0P0-${filenameInput}-r1-decode ADD_TEST(ETS-C0P0-${filenameInput}-r1-decode
COMMAND j2k_to_image ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
-i ${INPUT_CONF}/${filenameInput} -i ${INPUT_CONF}/${filenameInput}
-o ${TEMP}/c0${filenameInput}-r1.pgx -o ${TEMP}/c0${filenameInput}-r1.pgx
-r 1 -r 1
) )
ADD_TEST(NAME ETS-C0P0-${filenameInput}-r1-compare2ref ADD_TEST(ETS-C0P0-${filenameInput}-r1-compare2ref
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_CONF}/${filenameRefSub}r1.pgx -b ${BASELINE_CONF}/${filenameRefSub}r1.pgx
-t ${TEMP}/c0${filenameInput}-r1.pgx -t ${TEMP}/c0${filenameInput}-r1.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -112,8 +110,8 @@ IF(ignore_test_value EQUAL 0)
PROPERTIES DEPENDS PROPERTIES DEPENDS
ETS-C0P0-${filenameInput}-r1-decode) ETS-C0P0-${filenameInput}-r1-decode)
ADD_TEST(NAME NR-C0P0-${filenameInput}-r1-compare2base ADD_TEST(NR-C0P0-${filenameInput}-r1-compare2base
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_NR}/opj_${filenameRefSub}-r1.pgx -b ${BASELINE_NR}/opj_${filenameRefSub}-r1.pgx
-t ${TEMP}/c0${filenameInput}-r1.pgx -t ${TEMP}/c0${filenameInput}-r1.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -127,15 +125,15 @@ IF(ignore_test_value EQUAL 0)
ELSE(numFileC0P0 EQUAL 3 OR numFileC0P0 EQUAL 15) ELSE(numFileC0P0 EQUAL 3 OR numFileC0P0 EQUAL 15)
ADD_TEST(NAME ETS-C0P0-${filenameInput}-decode ADD_TEST(ETS-C0P0-${filenameInput}-decode
COMMAND j2k_to_image ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
-i ${INPUT_CONF}/${filenameInput} -i ${INPUT_CONF}/${filenameInput}
-o ${TEMP}/c0${filenameInput}.pgx -o ${TEMP}/c0${filenameInput}.pgx
-r ${ResFactor} -r ${ResFactor}
) )
ADD_TEST(NAME ETS-C0P0-${filenameInput}-compare2ref ADD_TEST(ETS-C0P0-${filenameInput}-compare2ref
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_CONF}/${filenameRef} -b ${BASELINE_CONF}/${filenameRef}
-t ${TEMP}/c0${filenameInput}.pgx -t ${TEMP}/c0${filenameInput}.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -148,8 +146,8 @@ IF(ignore_test_value EQUAL 0)
PROPERTIES DEPENDS PROPERTIES DEPENDS
ETS-C0P0-${filenameInput}-decode) ETS-C0P0-${filenameInput}-decode)
ADD_TEST(NAME NR-C0P0-${filenameInput}-compare2base ADD_TEST(NR-C0P0-${filenameInput}-compare2base
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_NR}/opj_${filenameRef} -b ${BASELINE_NR}/opj_${filenameRef}
-t ${TEMP}/c0${filenameInput}.pgx -t ${TEMP}/c0${filenameInput}.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -189,9 +187,7 @@ IF(ignore_test_value2 EQUAL 0)
# Get corresponding tests parameters # Get corresponding tests parameters
list(GET C0P1_ResFactor_list ${numFileC0P1} ResFactor) list(GET C0P1_ResFactor_list ${numFileC0P1} ResFactor)
#For Class-0 testing, we always focus on the first component only list(GET CP1_nbC_list ${numFileC0P1} nbComponents)
#list(GET CP0_nbC_list ${numFileC0P0} nbComponents)
set( nbComponents "1")
list(GET C0P1_PEAK_list ${numFileC0P1} PEAK_limit) list(GET C0P1_PEAK_list ${numFileC0P1} PEAK_limit)
list(GET C0P1_MSE_list ${numFileC0P1} MSE_limit) list(GET C0P1_MSE_list ${numFileC0P1} MSE_limit)
@@ -200,15 +196,15 @@ IF(ignore_test_value2 EQUAL 0)
get_filename_component(filenameRefSub ${filenameRef} NAME_WE) get_filename_component(filenameRefSub ${filenameRef} NAME_WE)
#r = 0 #r = 0
ADD_TEST(NAME ETS-C0P1-${filenameInput}-r0-decode ADD_TEST(ETS-C0P1-${filenameInput}-r0-decode
COMMAND j2k_to_image ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
-i ${INPUT_CONF}/${filenameInput} -i ${INPUT_CONF}/${filenameInput}
-o ${TEMP}/c0${filenameInput}-r0.pgx -o ${TEMP}/c0${filenameInput}-r0.pgx
-r 0 -r 0
) )
ADD_TEST(NAME ETS-C0P1-${filenameInput}-r0-compare2ref ADD_TEST(ETS-C0P1-${filenameInput}-r0-compare2ref
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_CONF}/${filenameRefSub}r0.pgx -b ${BASELINE_CONF}/${filenameRefSub}r0.pgx
-t ${TEMP}/c0${filenameInput}-r0.pgx -t ${TEMP}/c0${filenameInput}-r0.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -221,8 +217,8 @@ IF(ignore_test_value2 EQUAL 0)
PROPERTIES DEPENDS PROPERTIES DEPENDS
ETS-C0P1-${filenameInput}-r0-decode) ETS-C0P1-${filenameInput}-r0-decode)
ADD_TEST(NAME NR-C0P1-${filenameInput}-r0-compare2base ADD_TEST(NR-C0P1-${filenameInput}-r0-compare2base
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_NR}/opj_${filenameRefSub}-r0.pgx -b ${BASELINE_NR}/opj_${filenameRefSub}-r0.pgx
-t ${TEMP}/c0${filenameInput}-r0.pgx -t ${TEMP}/c0${filenameInput}-r0.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -235,15 +231,15 @@ IF(ignore_test_value2 EQUAL 0)
ETS-C0P1-${filenameInput}-r0-decode) ETS-C0P1-${filenameInput}-r0-decode)
#r = 3 #r = 3
ADD_TEST(NAME ETS-C0P1-${filenameInput}-r3-decode ADD_TEST(ETS-C0P1-${filenameInput}-r3-decode
COMMAND j2k_to_image ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
-i ${INPUT_CONF}/${filenameInput} -i ${INPUT_CONF}/${filenameInput}
-o ${TEMP}/c0${filenameInput}-r3.pgx -o ${TEMP}/c0${filenameInput}-r3.pgx
-r 3 -r 3
) )
ADD_TEST(NAME ETS-C0P1-${filenameInput}-r3-compare2ref ADD_TEST(ETS-C0P1-${filenameInput}-r3-compare2ref
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_CONF}/${filenameRefSub}r3.pgx -b ${BASELINE_CONF}/${filenameRefSub}r3.pgx
-t ${TEMP}/c0${filenameInput}-r3.pgx -t ${TEMP}/c0${filenameInput}-r3.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -256,8 +252,8 @@ IF(ignore_test_value2 EQUAL 0)
PROPERTIES DEPENDS PROPERTIES DEPENDS
ETS-C0P1-${filenameInput}-r3-decode) ETS-C0P1-${filenameInput}-r3-decode)
ADD_TEST(NAME NR-C0P1-${filenameInput}-r3-compare2base ADD_TEST(NR-C0P1-${filenameInput}-r3-compare2base
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_NR}/opj_${filenameRefSub}-r3.pgx -b ${BASELINE_NR}/opj_${filenameRefSub}-r3.pgx
-t ${TEMP}/c0${filenameInput}-r3.pgx -t ${TEMP}/c0${filenameInput}-r3.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -271,15 +267,15 @@ IF(ignore_test_value2 EQUAL 0)
ELSE(numFileC0P1 EQUAL 4) ELSE(numFileC0P1 EQUAL 4)
ADD_TEST(NAME ETS-C0P1-${filenameInput}-decode ADD_TEST(ETS-C0P1-${filenameInput}-decode
COMMAND j2k_to_image ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
-i ${INPUT_CONF}/${filenameInput} -i ${INPUT_CONF}/${filenameInput}
-o ${TEMP}/c0${filenameInput}.pgx -o ${TEMP}/c0${filenameInput}.pgx
-r ${ResFactor} -r ${ResFactor}
) )
ADD_TEST(NAME ETS-C0P1-${filenameInput}-compare2ref ADD_TEST(ETS-C0P1-${filenameInput}-compare2ref
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_CONF}/${filenameRef} -b ${BASELINE_CONF}/${filenameRef}
-t ${TEMP}/c0${filenameInput}.pgx -t ${TEMP}/c0${filenameInput}.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -292,8 +288,8 @@ IF(ignore_test_value2 EQUAL 0)
PROPERTIES DEPENDS PROPERTIES DEPENDS
ETS-C0P1-${filenameInput}-decode) ETS-C0P1-${filenameInput}-decode)
ADD_TEST(NAME NR-C0P1-${filenameInput}-compare2base ADD_TEST(NR-C0P1-${filenameInput}-compare2base
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_NR}/opj_${filenameRef} -b ${BASELINE_NR}/opj_${filenameRef}
-t ${TEMP}/c0${filenameInput}.pgx -t ${TEMP}/c0${filenameInput}.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -339,15 +335,15 @@ FOREACH(numFileC1P0 RANGE 1 16)
list(GET C1P0_PEAK_list ${numFileC1P0} PEAK_limit) list(GET C1P0_PEAK_list ${numFileC1P0} PEAK_limit)
list(GET C1P0_MSE_list ${numFileC1P0} MSE_limit) list(GET C1P0_MSE_list ${numFileC1P0} MSE_limit)
ADD_TEST(NAME ETS-C1P0-${filenameInput}-decode ADD_TEST(ETS-C1P0-${filenameInput}-decode
COMMAND j2k_to_image ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
-i ${INPUT_CONF}/${filenameInput} -i ${INPUT_CONF}/${filenameInput}
-o ${TEMP}/c1${filenameInput}.pgx -o ${TEMP}/c1${filenameInput}.pgx
-r ${ResFactor} -r ${ResFactor}
) )
ADD_TEST(NAME ETS-C1P0-${filenameInput}-compare2ref ADD_TEST(ETS-C1P0-${filenameInput}-compare2ref
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_CONF}/${filenameRef} -b ${BASELINE_CONF}/${filenameRef}
-t ${TEMP}/c1${filenameInput}.pgx -t ${TEMP}/c1${filenameInput}.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -360,8 +356,8 @@ FOREACH(numFileC1P0 RANGE 1 16)
PROPERTIES DEPENDS PROPERTIES DEPENDS
ETS-C1P0-${filenameInput}-decode) ETS-C1P0-${filenameInput}-decode)
ADD_TEST(NAME NR-C1P0-${filenameInput}-compare2base ADD_TEST(NR-C1P0-${filenameInput}-compare2base
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_NR}/opj_${filenameRef} -b ${BASELINE_NR}/opj_${filenameRef}
-t ${TEMP}/c1${filenameInput}.pgx -t ${TEMP}/c1${filenameInput}.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -398,15 +394,15 @@ FOREACH(numFileC1P1 RANGE 1 7)
list(GET C1P1_PEAK_list ${numFileC1P1} PEAK_limit) list(GET C1P1_PEAK_list ${numFileC1P1} PEAK_limit)
list(GET C1P1_MSE_list ${numFileC1P1} MSE_limit) list(GET C1P1_MSE_list ${numFileC1P1} MSE_limit)
ADD_TEST(NAME ETS-C1P1-${filenameInput}-decode ADD_TEST(ETS-C1P1-${filenameInput}-decode
COMMAND j2k_to_image ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
-i ${INPUT_CONF}/${filenameInput} -i ${INPUT_CONF}/${filenameInput}
-o ${TEMP}/c1${filenameInput}.pgx -o ${TEMP}/c1${filenameInput}.pgx
-r 0 -r 0
) )
ADD_TEST(NAME ETS-C1P1-${filenameInput}-compare2ref ADD_TEST(ETS-C1P1-${filenameInput}-compare2ref
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_CONF}/${filenameRef} -b ${BASELINE_CONF}/${filenameRef}
-t ${TEMP}/c1${filenameInput}.pgx -t ${TEMP}/c1${filenameInput}.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -419,8 +415,8 @@ FOREACH(numFileC1P1 RANGE 1 7)
PROPERTIES DEPENDS PROPERTIES DEPENDS
ETS-C1P1-${filenameInput}-decode) ETS-C1P1-${filenameInput}-decode)
ADD_TEST(NAME NR-C1P1-${filenameInput}-compare2base ADD_TEST(NR-C1P1-${filenameInput}-compare2base
COMMAND comparePGXimages ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
-b ${BASELINE_NR}/opj_${filenameRef} -b ${BASELINE_NR}/opj_${filenameRef}
-t ${TEMP}/c1${filenameInput}.pgx -t ${TEMP}/c1${filenameInput}.pgx
-n ${nbComponents} -n ${nbComponents}
@@ -451,16 +447,16 @@ FOREACH(numFileJP2 RANGE 1 9)
# Get corresponding tests parameters # Get corresponding tests parameters
list(GET JP2_PEAK_list ${numFileJP2} PEAK_limit) list(GET JP2_PEAK_list ${numFileJP2} PEAK_limit)
ADD_TEST(NAME ETS-JP2-${filenameInput}-decode ADD_TEST(ETS-JP2-${filenameInput}-decode
COMMAND j2k_to_image ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
-i ${INPUT_CONF}/${filenameInput} -i ${INPUT_CONF}/${filenameInput}
-o ${TEMP}/${filenameInput}.tif -o ${TEMP}/${filenameInput}.tif
) )
# #
# FIXME: Need to implement a compare tif images function # FIXME: Need to implement a compare tif images function
# #
# ADD_TEST(NAME ETS-JP2-${filenameInput}-compare2ref # ADD_TEST(ETS-JP2-${filenameInput}-compare2ref
# COMMAND compareTIFimages # ${EXECUTABLE_OUTPUT_PATH}/compareTIFimages
# -b ${BASELINE_CONF}/${filenameRef_tif} # -b ${BASELINE_CONF}/${filenameRef_tif}
# -t ${TEMP}/${filenameInput}.pgx # -t ${TEMP}/${filenameInput}.pgx
# -p 4 # -p 4
@@ -470,8 +466,8 @@ FOREACH(numFileJP2 RANGE 1 9)
# PROPERTIES DEPENDS # PROPERTIES DEPENDS
# ETS-JP2-${filenameInput}-decode) # ETS-JP2-${filenameInput}-decode)
# #
# ADD_TEST(NAME NR-JP2-${filenameInput}-compare2base # ADD_TEST(NR-JP2-${filenameInput}-compare2base
# COMMAND compareTIFimages # ${EXECUTABLE_OUTPUT_PATH}/compareTIFimages
# -b ${BASELINE_NR}/opj_${filenameRef} # -b ${BASELINE_NR}/opj_${filenameRef}
# -t ${TEMP}/${filenameInput}.tif # -t ${TEMP}/${filenameInput}.tif
# -d # -d
@@ -503,14 +499,14 @@ FOREACH(numFileP0 RANGE 1 16)
get_filename_component(filenameRefSub ${filenameInput} NAME_WE) get_filename_component(filenameRefSub ${filenameInput} NAME_WE)
ADD_TEST(NAME NR-${filenameInput}-dump ADD_TEST(NR-${filenameInput}-dump
COMMAND j2k_dump ${EXECUTABLE_OUTPUT_PATH}/j2k_dump
-i ${INPUT_CONF}/${filenameInput} -i ${INPUT_CONF}/${filenameInput}
-o ${TEMP}/${filenameInput}.txt -o ${TEMP}/${filenameInput}.txt
) )
ADD_TEST(NAME NR-${filenameInput}-compare_dump2base ADD_TEST(NR-${filenameInput}-compare_dump2base
COMMAND compare_dump_files ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
-b ${BASELINE_NR}/opj_${filenameRefSub}.txt -b ${BASELINE_NR}/opj_${filenameRefSub}.txt
-t ${TEMP}/${filenameInput}.txt -t ${TEMP}/${filenameInput}.txt
) )
@@ -532,14 +528,14 @@ FOREACH(numFileP1 RANGE 1 7)
SET( filenameInput p1_0${numFileP1}.j2k ) SET( filenameInput p1_0${numFileP1}.j2k )
get_filename_component(filenameInputSub ${filenameInput} NAME_WE) get_filename_component(filenameInputSub ${filenameInput} NAME_WE)
ADD_TEST(NAME NR-${filenameInput}-dump ADD_TEST(NR-${filenameInput}-dump
COMMAND j2k_dump ${EXECUTABLE_OUTPUT_PATH}/j2k_dump
-i ${INPUT_CONF}/${filenameInput} -i ${INPUT_CONF}/${filenameInput}
-o ${TEMP}/${filenameInput}.txt -o ${TEMP}/${filenameInput}.txt
) )
ADD_TEST(NAME NR-${filenameInput}-compare_dump2base ADD_TEST(NR-${filenameInput}-compare_dump2base
COMMAND compare_dump_files ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
-b ${BASELINE_NR}/opj_${filenameInputSub}.txt -b ${BASELINE_NR}/opj_${filenameInputSub}.txt
-t ${TEMP}/${filenameInput}.txt -t ${TEMP}/${filenameInput}.txt
) )
@@ -561,14 +557,14 @@ FOREACH(numFileJP2 RANGE 1 9)
SET( filenameInput "file${numFileJP2}.jp2" ) SET( filenameInput "file${numFileJP2}.jp2" )
get_filename_component(filenameInputSub ${filenameInput} NAME_WE) get_filename_component(filenameInputSub ${filenameInput} NAME_WE)
ADD_TEST(NAME NR-${filenameInput}-dump ADD_TEST(NR-${filenameInput}-dump
COMMAND j2k_dump ${EXECUTABLE_OUTPUT_PATH}/j2k_dump
-i ${INPUT_CONF}/${filenameInput} -i ${INPUT_CONF}/${filenameInput}
-o ${TEMP}/${filenameInput}.txt -o ${TEMP}/${filenameInput}.txt
) )
ADD_TEST(NAME NR-${filenameInput}-compare_dump2base ADD_TEST(NR-${filenameInput}-compare_dump2base
COMMAND compare_dump_files ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
-b ${BASELINE_NR}/opj_${filenameInputSub}.txt -b ${BASELINE_NR}/opj_${filenameInputSub}.txt
-t ${TEMP}/${filenameInput}.txt -t ${TEMP}/${filenameInput}.txt
) )

View File

@@ -166,8 +166,8 @@ FOREACH(OPJ_TEST_CMD_LINE ${OPJ_TEST_CMD_LINE_LIST})
math(EXPR IT_TEST_ENC "${IT_TEST_ENC}+1" ) math(EXPR IT_TEST_ENC "${IT_TEST_ENC}+1" )
# Encode an image into the jpeg2000 format # Encode an image into the jpeg2000 format
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode
COMMAND image_to_j2k ${EXECUTABLE_OUTPUT_PATH}/image_to_j2k
${CMD_ARG_LIST_2} ${CMD_ARG_LIST_2}
) )
@@ -176,8 +176,8 @@ FOREACH(OPJ_TEST_CMD_LINE ${OPJ_TEST_CMD_LINE_LIST})
ELSE(FAILED_TEST_FOUND) ELSE(FAILED_TEST_FOUND)
# Dump the encoding file # Dump the encoding file
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-dump ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-dump
COMMAND j2k_dump ${EXECUTABLE_OUTPUT_PATH}/j2k_dump
-i ${OUTPUT_FILENAME} -i ${OUTPUT_FILENAME}
-o ${OUTPUT_FILENAME}-ENC-${IT_TEST_ENC}.txt -o ${OUTPUT_FILENAME}-ENC-${IT_TEST_ENC}.txt
) )
@@ -186,8 +186,8 @@ FOREACH(OPJ_TEST_CMD_LINE ${OPJ_TEST_CMD_LINE_LIST})
NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode) NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode)
# Compare the dump file with the baseline # Compare the dump file with the baseline
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dump2base ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dump2base
COMMAND compare_dump_files ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
-b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${IT_TEST_ENC}.txt -b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${IT_TEST_ENC}.txt
-t ${OUTPUT_FILENAME}-ENC-${IT_TEST_ENC}.txt -t ${OUTPUT_FILENAME}-ENC-${IT_TEST_ENC}.txt
) )
@@ -198,8 +198,8 @@ FOREACH(OPJ_TEST_CMD_LINE ${OPJ_TEST_CMD_LINE_LIST})
# Decode the encoding file with kakadu expand command # Decode the encoding file with kakadu expand command
IF (KDU_EXPAND_EXECUTABLE) IF (KDU_EXPAND_EXECUTABLE)
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-decode-ref ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-decode-ref
COMMAND ${KDU_EXPAND_EXECUTABLE} ${KDU_EXPAND_EXECUTABLE}
-i ${OUTPUT_FILENAME} -i ${OUTPUT_FILENAME}
-o ${OUTPUT_FILENAME}.raw -o ${OUTPUT_FILENAME}.raw
) )
@@ -209,8 +209,8 @@ FOREACH(OPJ_TEST_CMD_LINE ${OPJ_TEST_CMD_LINE_LIST})
NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode) NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode)
# Compare the decoding file with baseline generated from the kdu_expand and baseline.j2k # Compare the decoding file with baseline generated from the kdu_expand and baseline.j2k
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dec-ref-out2base ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dec-ref-out2base
COMMAND compareRAWimages ${EXECUTABLE_OUTPUT_PATH}/compareRAWimages
-b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${IT_TEST_ENC}.raw -b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${IT_TEST_ENC}.raw
-t ${OUTPUT_FILENAME}.raw -t ${OUTPUT_FILENAME}.raw
) )
@@ -227,8 +227,8 @@ FOREACH(OPJ_TEST_CMD_LINE ${OPJ_TEST_CMD_LINE_LIST})
math(EXPR IT_TEST_DEC "${IT_TEST_DEC}+1" ) math(EXPR IT_TEST_DEC "${IT_TEST_DEC}+1" )
# Decode the input image # Decode the input image
ADD_TEST(NAME NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode ADD_TEST(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode
COMMAND j2k_to_image ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
${CMD_ARG_LIST_2} ${CMD_ARG_LIST_2}
) )
@@ -237,16 +237,11 @@ FOREACH(OPJ_TEST_CMD_LINE ${OPJ_TEST_CMD_LINE_LIST})
SET_TESTS_PROPERTIES(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode PROPERTIES WILL_FAIL TRUE) SET_TESTS_PROPERTIES(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode PROPERTIES WILL_FAIL TRUE)
ELSE(FAILED_TEST_FOUND) ELSE(FAILED_TEST_FOUND)
# if not failed, check against registered md5:
add_test(NAME NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode-md5 COMMAND ${CMAKE_COMMAND}
-DREFFILE:STRING=${CMAKE_CURRENT_SOURCE_DIR}/md5refs.txt
-DFILENAME:STRING=${INPUT_FILENAME_NAME}
-P ${CMAKE_CURRENT_SOURCE_DIR}/checkmd5refs.cmake)
# FIXME: add a compare2base function base on raw which # FIXME: add a compare2base function base on raw which
# can output png diff files if necesary # can output png diff files if necesary
# ADD_TEST(NAME NR-${filename}-compare2base # ADD_TEST(NR-${filename}-compare2base
# COMMAND comparePGXimages # ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
# -b ${BASELINE_NR}/opj_${filenameRef} # -b ${BASELINE_NR}/opj_${filenameRef}
# -t ${TEMP}/${filename}.pgx # -t ${TEMP}/${filename}.pgx
# -n ${nbComponents} # -n ${nbComponents}
@@ -259,15 +254,15 @@ FOREACH(OPJ_TEST_CMD_LINE ${OPJ_TEST_CMD_LINE_LIST})
# NR-${filename}-decode) # NR-${filename}-decode)
# Dump the input image # Dump the input image
ADD_TEST(NAME NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-dump ADD_TEST(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-dump
COMMAND j2k_dump ${EXECUTABLE_OUTPUT_PATH}/j2k_dump
-i ${INPUT_FILENAME} -i ${INPUT_FILENAME}
-o ${TEMP}/${INPUT_FILENAME_NAME}.txt -o ${TEMP}/${INPUT_FILENAME_NAME}.txt
) )
# Compare the dump output with the baseline # Compare the dump output with the baseline
ADD_TEST(NAME NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-compare_dump2base ADD_TEST(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-compare_dump2base
COMMAND compare_dump_files ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
-b ${BASELINE_NR}/opj_${INPUT_FILENAME_NAME_WE}.txt -b ${BASELINE_NR}/opj_${INPUT_FILENAME_NAME_WE}.txt
-t ${TEMP}/${INPUT_FILENAME_NAME}.txt -t ${TEMP}/${INPUT_FILENAME_NAME}.txt
) )

View File

@@ -1,56 +0,0 @@
# Copyright (c) 2014 Mathieu Malaterre <mathieu.malaterre@voxxl.com>
#
# Redistribution and use is allowed according to the terms of the New
# BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
# check md5 refs
#
# This script will be used to make sure we never introduce a regression on any
# of the nonregression file.
#
# The approach is relatively simple, we compute a md5sum for each of the decode
# file. Anytime the md5sum is different from the reference one, we assume
# something went wrong and simply fails. of course if could happen during the
# course of openjpeg development that the internals are changed that impact the
# decoding process that the output would be bitwise different (while PSNR would
# be kept identical).
#message("0: ${REFFILE}")
#message("1: ${CMAKE_CURRENT_BINARY_DIR}")
#message("2: ${FILENAME}")
file(GLOB globfiles "Temporary/${FILENAME}*.pgx" )
#message("6: ${globfiles}")
# REFFILE follow what md5sum -c would expect as input:
file(READ ${REFFILE} variable)
#string(REGEX REPLACE "\r?\n" ";" variable "${variable}")
foreach(pgxfullpath ${globfiles})
get_filename_component(pgxfile ${pgxfullpath} NAME)
#message("8: ${pgxfile}")
execute_process(
COMMAND ${CMAKE_COMMAND} -E md5sum ${pgxfile}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Temporary
RESULT_VARIABLE res
OUTPUT_VARIABLE output
ERROR_VARIABLE error_output
OUTPUT_STRIP_TRAILING_WHITESPACE # important
)
# Pass the output back to ctest
if(res)
message(SEND_ERROR "md5 could not be computed, it failed with value ${res}. Output was: ${error_output}")
endif()
#message("3: ${output}")
#message("4: ${variable}")
string(REGEX MATCH "[0-9a-f]+ ${pgxfile}" output_var "${variable}")
#message("5: ${output_var}")
if("${output_var}" STREQUAL "${output}")
#message("6: eqal")
else()
message(SEND_ERROR "not equal: [${output_var}] vs [${output}]")
endif()
endforeach()

View File

@@ -1,84 +0,0 @@
6f22c9a9bd474202ac6cd3a066e15200 _00042.j2k_0.pgx
a3a0606dfa0779d657c6a923b90e4678 _00042.j2k_1.pgx
106954dc468dfe0884d02268e91f9f5b _00042.j2k_2.pgx
8889def55f1e18dae6002b9b3a6dd152 123.j2c_0.pgx
4a0daf7a9065101379eaebc28e436b1e Bretagne2.j2k_0.pgx
07578fc7bf81d3da694de8ae27308b82 Bretagne2.j2k_1.pgx
3690c42f83bad42f4abea48525d45e0e Bretagne2.j2k_2.pgx
8889def55f1e18dae6002b9b3a6dd152 bug.j2c_0.pgx
22c8d33a956ba83079d1102457bc77a1 buxI.j2k_0.pgx
b8f473c07ba5ebfc195bdd53c3b3b97f buxR.j2k_0.pgx
05c062aca83d13b8095460f38a690a08 Cannotreaddatawithnosizeknown.j2k_0.pgx
6276da0ec5fac44d683d3468b290331d cthead1.j2k_0.pgx
8afcac9a696cc8d753b0eb9f4ae692ff CT_Phillips_JPEG2K_Decompr_Problem.j2k_0.pgx
04d35ab6160c9029549f72358df984da file409752_0.pgx
2813bd6fdc2c306b91b3da3688b8bf49 file409752_1.pgx
e273e2aaea4a4fc1b2cf7c09c53c3cc6 file409752_2.pgx
05c062aca83d13b8095460f38a690a08 illegalcolortransform.j2k_0.pgx
cb28787aa7c223f03e6acad71e244108 issue104_jpxstream.jp2_0.pgx
cb28787aa7c223f03e6acad71e244108 issue104_jpxstream.jp2_1.pgx
cb28787aa7c223f03e6acad71e244108 issue104_jpxstream.jp2_2.pgx
adda4f5e46845b96dd3df14a76aa7229 issue188_beach_64bitsbox.jp2_0.pgx
90a9709c166019d1e101e7b96d257ed9 issue188_beach_64bitsbox.jp2_1.pgx
37e23d2df06ee60bf0f9f5e1c16054d8 issue188_beach_64bitsbox.jp2_2.pgx
cb89739232898a823355861d834b5734 issue205.jp2_0.pgx
a09d34928fd86e6f2d7e6edc1764d2b7 issue205.jp2_1.pgx
6f712d0685f2c5522f01b238365f4284 issue205.jp2_2.pgx
de992d54d59032eb07d21983dbe8155b issue205.jp2_3.pgx
8fae7a39e459409f64e4529d2214087a issue206_image-000.jp2_0.pgx
555a504a93c9a14f61c894da3b393e87 issue206_image-000.jp2_1.pgx
5f06b7c45446ae20c22cada46478a9dc issue206_image-000.jp2_2.pgx
e1807db57b5f5192c4b77b83e8b5c477 issue228.j2k_0.pgx
4093cc34d838780b35a8be410247fa7f j2k32.j2k_0.pgx
ce4e556aaa0844b92a92c35c200fc43e j2k32.j2k_1.pgx
ea926520f990640862f3fe6616097613 j2k32.j2k_2.pgx
66b60e866991e03f9a2de18e80d3102b kakadu_v4-4_openjpegv2_broken.j2k_0.pgx
12a8a4668315d9ae27969991251ce85f kodak_2layers_lrcp.j2c_0.pgx
56d0b0c547d6d5bb12f0c36e88722b11 kodak_2layers_lrcp.j2c_1.pgx
48ba092fb40090c160bbd08bdf7bdbf2 kodak_2layers_lrcp.j2c_2.pgx
05c062aca83d13b8095460f38a690a08 MarkerIsNotCompliant.j2k_0.pgx
ff73d2bd32951d9e55b02186aac24aff Marrin.jp2_0.pgx
55ce884dd2346af6a5172a434ee578fa Marrin.jp2_1.pgx
29131264861b4ee21011149b27e4d488 mem-b2ace68c-1381.jp2_0.pgx
29131264861b4ee21011149b27e4d488 mem-b2ace68c-1381.jp2_1.pgx
29131264861b4ee21011149b27e4d488 mem-b2ace68c-1381.jp2_2.pgx
df568fe0529219cc2c8f215e236f4b3d mem-b2ace68c-1381.jp2_3.pgx
41ec1a0228c703b10f95388c1160753b mem-b2b86b74-2753.jp2_0.pgx
41ec1a0228c703b10f95388c1160753b mem-b2b86b74-2753.jp2_1.pgx
41ec1a0228c703b10f95388c1160753b mem-b2b86b74-2753.jp2_2.pgx
97557ab9e38a7aff621e583fbb66b099 merged.jp2_0.pgx
386fbdcd294429733e3272d62ed5a15a merged.jp2_1.pgx
d3907bbd67be1dae31b4377fa4dc0373 merged.jp2_2.pgx
de8bba9ac366eeb2f170f0cf3605cf12 movie_00000.j2k_0.pgx
334bac3285f7138e9dd29d59bdcb22ff movie_00000.j2k_1.pgx
5511d2c96d1d1f2062491e00d5234506 movie_00000.j2k_2.pgx
de8bba9ac366eeb2f170f0cf3605cf12 movie_00001.j2k_0.pgx
334bac3285f7138e9dd29d59bdcb22ff movie_00001.j2k_1.pgx
5511d2c96d1d1f2062491e00d5234506 movie_00001.j2k_2.pgx
de8bba9ac366eeb2f170f0cf3605cf12 movie_00002.j2k_0.pgx
334bac3285f7138e9dd29d59bdcb22ff movie_00002.j2k_1.pgx
5511d2c96d1d1f2062491e00d5234506 movie_00002.j2k_2.pgx
951a55623a92e97a064a350f11c2637d orb-blue10-lin-j2k.j2k_0.pgx
5033aaf699dfa3dfe041af33c9ad688d orb-blue10-lin-j2k.j2k_1.pgx
dbe33d72484caedf9c2cc18fd670884c orb-blue10-lin-j2k.j2k_2.pgx
0fec67d9546171699958c6682e725b79 orb-blue10-lin-j2k.j2k_3.pgx
84462261381b6732ec4f2addb0070d24 orb-blue10-lin-jp2.jp2_0.pgx
6129edf57e5db2344fcde5ce99ae8732 orb-blue10-lin-jp2.jp2_1.pgx
fdad26b1e078aa32bd4b77a5f44da43c orb-blue10-lin-jp2.jp2_2.pgx
0fec67d9546171699958c6682e725b79 orb-blue10-lin-jp2.jp2_3.pgx
671feee525e2485060536edbf21380f1 orb-blue10-win-j2k.j2k_0.pgx
912cdee24dd360b7999f7ee4a51083b4 orb-blue10-win-j2k.j2k_1.pgx
64833b4b7557936b9233087e92f8ae28 orb-blue10-win-j2k.j2k_2.pgx
789a299a1523b2d9d3f561d12a2da817 orb-blue10-win-j2k.j2k_3.pgx
671feee525e2485060536edbf21380f1 orb-blue10-win-jp2.jp2_0.pgx
7442756e83571c0e87493e03f12b2d34 orb-blue10-win-jp2.jp2_1.pgx
5f99ff2aeb17e167fe7049bcf339d0b3 orb-blue10-win-jp2.jp2_2.pgx
fe028d56d6c7aaee87239a115093412a orb-blue10-win-jp2.jp2_3.pgx
371aa0a7ff40a73b45f1fa41e210d1db pacs.ge.j2k_0.pgx
6ae110e1fb5a869af3dbc5fbc735b0bd relax.jp2_0.pgx
518a8f28dacc034982507f43763b88dd relax.jp2_1.pgx
c678b04f4d3e59b9d66a8bce37c553c0 relax.jp2_2.pgx
cdb1d69eb48ffd8545751326b86d9d7e test_lossless.j2k_0.pgx
a37e7e5811d7c0c7adb61582790ccd33 text_GBR.jp2_0.pgx
fc2173be54954a146b4e2887ee14be06 text_GBR.jp2_1.pgx
14108b4fb8d9126750db0424417ed17d text_GBR.jp2_2.pgx

View File

@@ -37,11 +37,10 @@ image_to_j2k -i @INPUT_NR_PATH@/X_6_2K_24_FULL_CBR_CIRCLE_000.tif -o @TEMP_PATH@
j2k_to_image -i @INPUT_NR_PATH@/Bretagne2.j2k -o @TEMP_PATH@/Bretagne2.j2k.pgx j2k_to_image -i @INPUT_NR_PATH@/Bretagne2.j2k -o @TEMP_PATH@/Bretagne2.j2k.pgx
j2k_to_image -i @INPUT_NR_PATH@/_00042.j2k -o @TEMP_PATH@/_00042.j2k.pgx j2k_to_image -i @INPUT_NR_PATH@/_00042.j2k -o @TEMP_PATH@/_00042.j2k.pgx
j2k_to_image -i @INPUT_NR_PATH@/123.j2c -o @TEMP_PATH@/123.j2c.pgx j2k_to_image -i @INPUT_NR_PATH@/123.j2c -o @TEMP_PATH@/123.j2c.pgx
# The 4 following tests should failed (kakadu indicates that they are corrupted) j2k_to_image -i @INPUT_NR_PATH@/broken.jp2 -o @TEMP_PATH@/broken.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/broken.jp2 -o @TEMP_PATH@/broken.jp2.pgx j2k_to_image -i @INPUT_NR_PATH@/broken2.jp2 -o @TEMP_PATH@/broken2.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/broken2.jp2 -o @TEMP_PATH@/broken2.jp2.pgx j2k_to_image -i @INPUT_NR_PATH@/broken3.jp2 -o @TEMP_PATH@/broken3.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/broken3.jp2 -o @TEMP_PATH@/broken3.jp2.pgx j2k_to_image -i @INPUT_NR_PATH@/broken4.jp2 -o @TEMP_PATH@/broken4.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/broken4.jp2 -o @TEMP_PATH@/broken4.jp2.pgx
j2k_to_image -i @INPUT_NR_PATH@/bug.j2c -o @TEMP_PATH@/bug.j2c.pgx j2k_to_image -i @INPUT_NR_PATH@/bug.j2c -o @TEMP_PATH@/bug.j2c.pgx
j2k_to_image -i @INPUT_NR_PATH@/buxI.j2k -o @TEMP_PATH@/buxI.j2k.pgx j2k_to_image -i @INPUT_NR_PATH@/buxI.j2k -o @TEMP_PATH@/buxI.j2k.pgx
j2k_to_image -i @INPUT_NR_PATH@/buxR.j2k -o @TEMP_PATH@/buxR.j2k.pgx j2k_to_image -i @INPUT_NR_PATH@/buxR.j2k -o @TEMP_PATH@/buxR.j2k.pgx
@@ -63,93 +62,6 @@ j2k_to_image -i @INPUT_NR_PATH@/orb-blue10-win-j2k.j2k -o @TEMP_PATH@/orb-blue1
j2k_to_image -i @INPUT_NR_PATH@/orb-blue10-win-jp2.jp2 -o @TEMP_PATH@/orb-blue10-win-jp2.jp2.pgx j2k_to_image -i @INPUT_NR_PATH@/orb-blue10-win-jp2.jp2 -o @TEMP_PATH@/orb-blue10-win-jp2.jp2.pgx
j2k_to_image -i @INPUT_NR_PATH@/relax.jp2 -o @TEMP_PATH@/relax.jp2.pgx j2k_to_image -i @INPUT_NR_PATH@/relax.jp2 -o @TEMP_PATH@/relax.jp2.pgx
j2k_to_image -i @INPUT_NR_PATH@/test_lossless.j2k -o @TEMP_PATH@/test_lossless.j2k.pgx j2k_to_image -i @INPUT_NR_PATH@/test_lossless.j2k -o @TEMP_PATH@/test_lossless.j2k.pgx
# text_GBR.jp2 file exhibt a error about a tile part with a index > of the number of tile-part in this tile (related to issue 202, 206, 208)
j2k_to_image -i @INPUT_NR_PATH@/text_GBR.jp2 -o @TEMP_PATH@/text_GBR.jp2.pgx j2k_to_image -i @INPUT_NR_PATH@/text_GBR.jp2 -o @TEMP_PATH@/text_GBR.jp2.pgx
# pacs.ge file should throw an error but finally it seems work with v2
j2k_to_image -i @INPUT_NR_PATH@/pacs.ge.j2k -o @TEMP_PATH@/pacs.ge.j2k.pgx
# related to issue 135
j2k_to_image -i @INPUT_NR_PATH@/kodak_2layers_lrcp.j2c -o @TEMP_PATH@/kodak_2layers_lrcp.j2c.pgx
j2k_to_image -i @INPUT_NR_PATH@/kodak_2layers_lrcp.j2c -o @TEMP_PATH@/kodak_2layers_lrcp.j2c.pgx -l 2
# related to issue 104 and 110
j2k_to_image -i @INPUT_NR_PATH@/issue104_jpxstream.jp2 -o @TEMP_PATH@/issue104_jpxstream.jp2.pgx j2k_to_image -i @INPUT_NR_PATH@/issue104_jpxstream.jp2 -o @TEMP_PATH@/issue104_jpxstream.jp2.pgx
# File not supported by kakadu (Malformed PCLR box) and not supoprter by openjpeg (problem with value of TPSot)
!j2k_to_image -i @INPUT_NR_PATH@/mem-b2ace68c-1381.jp2 -o @TEMP_PATH@/mem-b2ace68c-1381.jp2.pgx
# File which produced weird output with kakadu and not supoprter by openjpeg (problem with value of TPSot, issue 202, 206, 208)
j2k_to_image -i @INPUT_NR_PATH@/mem-b2b86b74-2753.jp2 -o @TEMP_PATH@/mem-b2b86b74-2753.jp2.pgx
# issue 191 raised by the gdal fuzzer test (should properly failed)
!j2k_to_image -i @INPUT_NR_PATH@/gdal_fuzzer_unchecked_numresolutions.jp2 -o @TEMP_PATH@/gdal_fuzzer_unchecked_numresolutions.pgx
# issue 192 raised by the gdal fuzzer test (should nicely failed)
!j2k_to_image -i @INPUT_NR_PATH@/gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.jp2 -o @TEMP_PATH@/gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.pgx
# issue 193 raised by the gdal fuzzer test (should nicely failed)
!j2k_to_image -i @INPUT_NR_PATH@/gdal_fuzzer_check_number_of_tiles.jp2 -o @TEMP_PATH@/gdal_fuzzer_check_number_of_tiles.pgx
# issue 194 raised by the gdal fuzzer test (should nicely failed)
!j2k_to_image -i @INPUT_NR_PATH@/gdal_fuzzer_check_comp_dx_dy.jp2 -o @TEMP_PATH@/gdal_fuzzer_check_comp_dx_dy.pgx
# issue 202
j2k_to_image -i @INPUT_NR_PATH@/file409752.jp2 -o @TEMP_PATH@/file409752.jp2.pgx j2k_to_image -i @INPUT_NR_PATH@/file409752.jp2 -o @TEMP_PATH@/file409752.jp2.pgx
# issue 188
j2k_to_image -i @INPUT_NR_PATH@/issue188_beach_64bitsbox.jp2 -o @TEMP_PATH@/issue188_beach_64bitsbox.jp2.pgx
# issue 206
j2k_to_image -i @INPUT_NR_PATH@/issue206_image-000.jp2 -o @TEMP_PATH@/issue206_image-000.jp2.pgx
# issue 205
j2k_to_image -i @INPUT_NR_PATH@/issue205.jp2 -o @TEMP_PATH@/issue205.jp2.pgx
# issue 225 (sumatrapdf)
!j2k_to_image -i @INPUT_NR_PATH@/451.pdf.SIGSEGV.5b5.3723.jp2 -o @TEMP_PATH@/451.pdf.SIGSEGV.5b5.3723.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/1888.pdf.asan.35.988.jp2 -o @TEMP_PATH@/1888.pdf.asan.35.988.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/2539.pdf.SIGFPE.706.1712.jp2 -o @TEMP_PATH@/2539.pdf.SIGFPE.706.1712.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/2236.pdf.SIGSEGV.398.1376.jp2 -o @TEMP_PATH@/2236.pdf.SIGSEGV.398.1376.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/1336.pdf.asan.47.376.jp2 -o @TEMP_PATH@/1336.pdf.asan.47.376.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/1851.pdf.SIGSEGV.ce9.948.jp2 -o @TEMP_PATH@/1851.pdf.SIGSEGV.ce9.948.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/4149.pdf.SIGSEGV.cf7.3501.jp2 -o @TEMP_PATH@/4149.pdf.SIGSEGV.cf7.3501.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/4035.pdf.SIGSEGV.d8b.3375.jp2 -o @TEMP_PATH@/4035.pdf.SIGSEGV.d8b.3375.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/2977.pdf.asan.67.2198.jp2 -o @TEMP_PATH@/2977.pdf.asan.67.2198.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/451.pdf.SIGSEGV.ce9.3723.jp2 -o @TEMP_PATH@/451.pdf.SIGSEGV.ce9.3723.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/3635.pdf.asan.77.2930.jp2 -o @TEMP_PATH@/3635.pdf.asan.77.2930.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/1802.pdf.SIGSEGV.36e.894.jp2 -o @TEMP_PATH@/1802.pdf.SIGSEGV.36e.894.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/451.pdf.SIGSEGV.f4c.3723.jp2 -o @TEMP_PATH@/451.pdf.SIGSEGV.f4c.3723.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/2.pdf.SIGFPE.706.1112.jp2 -o @TEMP_PATH@/2.pdf.SIGFPE.706.1112.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2 -o @TEMP_PATH@/147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2 -o @TEMP_PATH@/4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2
# issue 228 (16bits/lossy)
j2k_to_image -i @INPUT_NR_PATH@/issue228.j2k -o @TEMP_PATH@/issue228.j2k.pgx
# issue 229
!j2k_to_image -i @INPUT_NR_PATH@/27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc -o @TEMP_PATH@27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc.pgx
!j2k_to_image -i @INPUT_NR_PATH@/26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2 -o @TEMP_PATH@26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2 -o @TEMP_PATH@0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc -o @TEMP_PATH@3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc.pgx
# issue 254 (loss in quality)
j2k_to_image -i @INPUT_NR_PATH@/issue254.jp2 -o @TEMP_PATH@/issue254.jp2.pgx
# issue 142
j2k_to_image -i @INPUT_NR_PATH@/issue142.j2k -o @TEMP_PATH@/issue142.j2k.pgx
# issue 134
j2k_to_image -i @INPUT_NR_PATH@/issue134.jp2 -o @TEMP_PATH@/issue134.jp2.pgx
# issue 135
j2k_to_image -i @INPUT_NR_PATH@/issue135.j2k -o @TEMP_PATH@/issue135.j2k.pgx
# issue 208
j2k_to_image -i @INPUT_NR_PATH@/issue208.jp2 -o @TEMP_PATH@/issue208.jp2.pgx
# issue 211
j2k_to_image -i @INPUT_NR_PATH@/issue211.jp2 -o @TEMP_PATH@/issue211.jp2.pgx
# issue 171
j2k_to_image -i @INPUT_NR_PATH@/issue171.jp2 -o @TEMP_PATH@/issue171.jp2.pgx
# issue 171
!j2k_to_image -i @INPUT_NR_PATH@/issue165.jp2 -o @TEMP_PATH@/issue165.jp2.pgx
#
!j2k_to_image -i @INPUT_NR_PATH@/broken.jpc -o @TEMP_PATH@/broken.jpc.pgx
# issue 226
j2k_to_image -i @INPUT_NR_PATH@/issue226.j2k -o @TEMP_PATH@/issue226.j2k.pgx
# issue 297
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1103421.jp2 -o @TEMP_PATH@/edf_c2_1103421.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1178956.jp2 -o @TEMP_PATH@/edf_c2_1178956.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1000290.jp2 -o @TEMP_PATH@/edf_c2_1000290.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1000691.jp2 -o @TEMP_PATH@/edf_c2_1000691.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_20.jp2 -o @TEMP_PATH@/edf_c2_20.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1377017.jp2 -o @TEMP_PATH@/edf_c2_1377017.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1002767.jp2 -o @TEMP_PATH@/edf_c2_1002767.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_10025.jp2 -o @TEMP_PATH@/edf_c2_10025.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1000234.jp2 -o @TEMP_PATH@/edf_c2_1000234.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_225881.jp2 -o @TEMP_PATH@/edf_c2_225881.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1000671.jp2 -o @TEMP_PATH@/edf_c2_1000671.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1013627.jp2 -o @TEMP_PATH@/edf_c2_1013627.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1015644.jp2 -o @TEMP_PATH@/edf_c2_1015644.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_101463.jp2 -o @TEMP_PATH@/edf_c2_101463.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1674177.jp2 -o @TEMP_PATH@/edf_c2_1674177.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1673169.jp2 -o @TEMP_PATH@/edf_c2_1673169.jp2.pgx

View File

@@ -5,5 +5,5 @@ add_executable(testempty2 testempty2.c)
target_link_libraries(testempty1 openjpeg) target_link_libraries(testempty1 openjpeg)
target_link_libraries(testempty2 openjpeg) target_link_libraries(testempty2 openjpeg)
add_test(NAME testempty1 COMMAND testempty1) add_test(testempty1 ${EXECUTABLE_OUTPUT_PATH}/testempty1)
add_test(NAME testempty2 COMMAND testempty2) add_test(testempty2 ${EXECUTABLE_OUTPUT_PATH}/testempty2)

View File

@@ -63,8 +63,8 @@ int main(int argc, char *argv[])
opj_cparameters_t parameters; opj_cparameters_t parameters;
int subsampling_dx; int subsampling_dx = parameters.subsampling_dx;
int subsampling_dy; int subsampling_dy = parameters.subsampling_dy;
const char outputfile[] = "testempty2.j2k"; const char outputfile[] = "testempty2.j2k";
opj_image_cmptparm_t cmptparm; opj_image_cmptparm_t cmptparm;
@@ -81,8 +81,6 @@ int main(int argc, char *argv[])
opj_set_default_encoder_parameters(&parameters); opj_set_default_encoder_parameters(&parameters);
parameters.cod_format = J2K_CFMT; parameters.cod_format = J2K_CFMT;
puts(v); puts(v);
subsampling_dx = parameters.subsampling_dx;
subsampling_dy = parameters.subsampling_dy;
cmptparm.prec = 8; cmptparm.prec = 8;
cmptparm.bpp = 8; cmptparm.bpp = 8;
cmptparm.sgnd = 0; cmptparm.sgnd = 0;