Compare commits
43 Commits
version.1.
...
version.1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9586bc669c | ||
|
|
78dc93512b | ||
|
|
6778ef6a25 | ||
|
|
20eb15b760 | ||
|
|
8c71728242 | ||
|
|
4140dfdea8 | ||
|
|
259f629a46 | ||
|
|
c302efcf86 | ||
|
|
e0b5b08f9a | ||
|
|
dac95eff3a | ||
|
|
4f4de7070e | ||
|
|
78d1820881 | ||
|
|
de73cfeec1 | ||
|
|
49044ae2a8 | ||
|
|
6e0162a8a6 | ||
|
|
910af7edec | ||
|
|
69cd4f9211 | ||
|
|
6fc2b56847 | ||
|
|
773bd89130 | ||
|
|
5d356d6fcb | ||
|
|
a2f90ab2cb | ||
|
|
a05a9aa4ed | ||
|
|
af2be2d456 | ||
|
|
96dba34ddc | ||
|
|
6aad1208b2 | ||
|
|
d2be8c5d21 | ||
|
|
b42f76cb7f | ||
|
|
07163be7ed | ||
|
|
4e672cc1e9 | ||
|
|
ced9a50367 | ||
|
|
a1683bd7c2 | ||
|
|
f968a70e22 | ||
|
|
2fe6bac6eb | ||
|
|
15243144c4 | ||
|
|
c0c69d1c36 | ||
|
|
d9d62a77ee | ||
|
|
15488c94d2 | ||
|
|
75175b715c | ||
|
|
46831582b2 | ||
|
|
e55d5e29e0 | ||
|
|
c02f145cd1 | ||
|
|
6280b5ad8d | ||
|
|
7720188fa7 |
198
CHANGES
Normal file
198
CHANGES
Normal file
@@ -0,0 +1,198 @@
|
|||||||
|
2012-10-01 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2028] CMakeLists.txt: [1.5] Start opj 1.5.2
|
||||||
|
* [r2029] libopenjpeg/jp2.c: [1.5] jp2_read_boxhdr() can trigger
|
||||||
|
random pointer memory access
|
||||||
|
|
||||||
|
Fixes issue 155
|
||||||
|
|
||||||
|
2012-10-02 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2031] libopenjpeg/Makefile.am, libopenjpeg/jpwl/Makefile.am:
|
||||||
|
[1.5] int main() in t1_generate_luts.c breaks mplayer
|
||||||
|
|
||||||
|
Fixes issue 152
|
||||||
|
* [r2032] libopenjpeg/j2k.c: [1.5] division by zero in j2k_read_siz
|
||||||
|
|
||||||
|
Fixes issue 169
|
||||||
|
* [r2033] libopenjpeg/j2k.c: [1.5] missing range check in
|
||||||
|
j2k_read_coc et al.
|
||||||
|
|
||||||
|
Fixes issue 166
|
||||||
|
* [r2035] libopenjpeg/CMakeLists.txt: [1.5] Build small internal
|
||||||
|
tools to generate t1_luts.h
|
||||||
|
|
||||||
|
2012-10-22 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2107] CMakeLists.txt, applications/JavaOpenJPEG/CMakeLists.txt:
|
||||||
|
[1.5] Fix Java binding issues.
|
||||||
|
|
||||||
|
Properly link to math lib on UNIX
|
||||||
|
Make JNI install location a user configuration
|
||||||
|
Remove SONAME property from the java module
|
||||||
|
|
||||||
|
2012-12-07 Rex Dieter
|
||||||
|
|
||||||
|
* [r2260] doc/Doxyfile.dox, doc/Doxyfile.dox.cmake.in: backport
|
||||||
|
r2259
|
||||||
|
|
||||||
|
Doxyfile: HTML_TIMESTAMP = NO
|
||||||
|
|
||||||
|
helps when comparing the output of multiple runs,
|
||||||
|
and distros will appreciate avoiding multilib conflicts.
|
||||||
|
|
||||||
|
2012-12-18 Mickaël Savinaud
|
||||||
|
|
||||||
|
* [r2265] applications/codec/convert.c: [1.5] improve the bmp read
|
||||||
|
function for RGB8 case (thanks Winfried). Update issue 203
|
||||||
|
|
||||||
|
2013-02-27 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2299] libopenjpeg/opj_includes.h: [1.5] Rework #ifdef checks.
|
||||||
|
We should check for _M_IX86 instead of not(_M_X64). Thanks to
|
||||||
|
Misha Ulyutin for report on ML
|
||||||
|
|
||||||
|
2013-03-14 Mickaël Savinaud
|
||||||
|
|
||||||
|
* [r2305] configure.ac: [b1.5.x] update the micro version into the
|
||||||
|
configure file (thanks to winfried)
|
||||||
|
|
||||||
|
2013-07-11 Antonin Descampe
|
||||||
|
|
||||||
|
* [r2345] tests/conformance/CMakeLists.txt: tests : reactivated
|
||||||
|
conformance tests in openjpeg 1.5 branch to enable comparison
|
||||||
|
with trunk
|
||||||
|
|
||||||
|
2013-09-26 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2346] libopenjpeg/image.c: [1.5] Import patch suggested in bug
|
||||||
|
#241
|
||||||
|
|
||||||
|
2014-02-24 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2390] libopenjpeg/bio.c: [1.5] Remove some simple warnings
|
||||||
|
* [r2391] CMake/CTestCustom.cmake.in: [1.5] Do not report warning
|
||||||
|
on third party lib
|
||||||
|
|
||||||
|
2014-02-25 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2420] tests/nonregression/CMakeLists.txt,
|
||||||
|
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
|
||||||
|
|
||||||
|
2014-02-26 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2437] tests/CMakeLists.txt, tests/conformance/CMakeLists.txt,
|
||||||
|
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
|
||||||
|
* [r2439] applications/codec/image_to_j2k.c,
|
||||||
|
applications/codec/j2k_to_image.c: [1.5] Declare functions static
|
||||||
|
to track unused ones.
|
||||||
|
|
||||||
|
2014-03-04 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2564] CMakeLists.txt: [1.5] Use improved find_path syntax to
|
||||||
|
help cross-compilation setup find openjpeg data root
|
||||||
|
|
||||||
|
2014-03-12 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2696] applications/codec/convert.c, tests/unit/testempty2.c:
|
||||||
|
[1.5] Fix remainings warnings on 1.5 branch
|
||||||
|
* [r2697] applications/jpip/libopenjpip/msgqueue_manager.c: [1.5]
|
||||||
|
Prevent buffer overflow in openjpip code
|
||||||
|
|
||||||
|
2014-03-17 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2750] applications/common/opj_getopt.c: [1.5] Update BSD-4
|
||||||
|
copyright into a BSD-3 copyright
|
||||||
|
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
|
||||||
|
|
||||||
|
* [r2757] libopenjpeg/cio.c, libopenjpeg/j2k.c, libopenjpeg/jp2.c,
|
||||||
|
libopenjpeg/t2.c, libopenjpeg/tcd.c,
|
||||||
|
tests/nonregression/test_suite.ctest.in: [1.5] Import portion of
|
||||||
|
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
|
||||||
|
|
||||||
|
* [r2780] configure.ac: Calling AC_CANONICAL_SYSTEM implies
|
||||||
|
AC_CANONICAL_TARGET, which
|
||||||
|
gives incorrect results when cross compiling. Calling only
|
||||||
|
AC_CANONICAL_HOST is enough.
|
||||||
|
|
||||||
|
issue: 129
|
||||||
|
* [r2781] doc/Makefile.am: Install jpwl man pages only if jpwl is
|
||||||
|
enabled
|
||||||
|
|
||||||
|
issue: 129
|
||||||
|
* [r2782] m4/opj_check_lib.m4: Improve check for standard libs
|
||||||
|
|
||||||
|
Previously, with <lib>_LIBS and <lib>_CFLAGS undefined,
|
||||||
|
the most basic compile command "$CC conftest.c -l<lib>" was not
|
||||||
|
tested.
|
||||||
|
|
||||||
|
issue: 129
|
||||||
|
|
||||||
|
2014-03-25 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2800] applications/codec/Makefile.am,
|
||||||
|
applications/jpip/libopenjpip/CMakeLists.txt: [1.5] Import patch
|
||||||
|
from bug tracker
|
||||||
|
Thanks to winfried
|
||||||
|
Fixes issue 304
|
||||||
|
|
||||||
|
2014-03-26 Mathieu Malaterre
|
||||||
|
|
||||||
|
* [r2807] configure.ac: [1.5] Fix big endian checking with
|
||||||
|
autotools
|
||||||
|
Thanks to winfried for patch
|
||||||
|
Fixes issue 302
|
||||||
|
|
||||||
@@ -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"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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 0)
|
SET(OPENJPEG_VERSION_BUILD 2)
|
||||||
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
|
||||||
@@ -44,6 +44,7 @@ SET(PACKAGE_VERSION
|
|||||||
# 1.3 | 3
|
# 1.3 | 3
|
||||||
# 1.4 | 4
|
# 1.4 | 4
|
||||||
# 1.5 | 5
|
# 1.5 | 5
|
||||||
|
# 1.5.1 | 5
|
||||||
# 2.0 | 6
|
# 2.0 | 6
|
||||||
# above is the recommendation by the OPJ team. If you really need to override this default,
|
# above is the recommendation by the OPJ team. If you really need to override this default,
|
||||||
# you can specify your own OPENJPEG_SOVERSION at cmake configuration time:
|
# you can specify your own OPENJPEG_SOVERSION at cmake configuration time:
|
||||||
@@ -135,6 +136,14 @@ 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
|
||||||
@@ -224,6 +233,8 @@ 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)
|
||||||
|
|
||||||
@@ -261,10 +272,9 @@ 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
|
PATHS $ENV{OPJ_DATA_ROOT} ${CMAKE_SOURCE_DIR}/../data
|
||||||
$ENV{OPJ_DATA_ROOT}
|
${CMAKE_SOURCE_DIR}/../../data
|
||||||
${CMAKE_SOURCE_DIR}/../data
|
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
|
||||||
${CMAKE_SOURCE_DIR}/../../data
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add repository where to find tests
|
# Add repository where to find tests
|
||||||
|
|||||||
19
NEWS
19
NEWS
@@ -2,23 +2,24 @@
|
|||||||
OpenJPEG NEWS - user visible changes
|
OpenJPEG NEWS - user visible changes
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
Changes from OpenJPEG 1.5.1 to OpenJPEG 1.5.0
|
Changes from OpenJPEG 1.5.2 to OpenJPEG 1.5.1
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
|
||||||
Security:
|
Security:
|
||||||
|
|
||||||
* Fixes: CVE-2012-3535
|
* Fixes: CVE-2013-4289 CVE-2013-4290
|
||||||
* Fixes: CVE-2012-3358
|
* Fixes: CVE-2013-1447 CVE-2013-6045 CVE-2013-6052 CVE-2013-6054 CVE-2013-6053 CVE-2013-6887
|
||||||
|
|
||||||
New Features:
|
New Features:
|
||||||
|
|
||||||
* Use a new API scheme and solve the SOVERSIONing in OpenJPEG
|
* Compile Java with source/target specific java version
|
||||||
* Allow better integration with multi-arch system
|
* Do not set SONAME for Java module, fix linking (missing math lib)
|
||||||
* Compile & Install Java bindings (CMake)
|
* Support some BMP/RGB8 files
|
||||||
* Install required addXMLinJP2 (JPIP)
|
* Fix compilation on ARM
|
||||||
|
|
||||||
Misc:
|
Misc:
|
||||||
|
|
||||||
* fix linker error by resolving all symbols (eg. missing -lm)
|
* Remove BSD-4 license from getopt copy, since upstream switched to BSD-3
|
||||||
* fix some man page typos
|
* Support compilation against system installed getopt
|
||||||
|
* Fix Big Endian checking (autotools)
|
||||||
* Huge amount of bug fixes. See CHANGES for details.
|
* Huge amount of bug fixes. See CHANGES for details.
|
||||||
|
|||||||
@@ -24,13 +24,14 @@ 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(WIN32)
|
if(UNIX)
|
||||||
SET(OPENJPEG_INSTALL_JNI_DIR ${OPENJPEG_INSTALL_BIN_DIR})
|
target_link_libraries(openjpegjni m)
|
||||||
ELSE()
|
endif()
|
||||||
SET(OPENJPEG_INSTALL_JNI_DIR ${OPENJPEG_INSTALL_LIB_DIR})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
INSTALL(TARGETS openjpegjni
|
INSTALL(TARGETS openjpegjni
|
||||||
EXPORT OpenJPEGTargets
|
EXPORT OpenJPEGTargets
|
||||||
|
|||||||
@@ -5,8 +5,12 @@ 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(
|
||||||
|
|||||||
@@ -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@
|
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_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@
|
JPWL_image_to_j2k_LDADD = $(top_builddir)/libopenjpeg/jpwl/libopenjpeg_JPWL.la @TIFF_LIBS@ @PNG_LIBS@ -lm
|
||||||
|
|
||||||
JPWL_image_to_j2k_SOURCES = \
|
JPWL_image_to_j2k_SOURCES = \
|
||||||
../common/opj_getopt.c \
|
../common/opj_getopt.c \
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ struct tga_header
|
|||||||
|
|
||||||
static unsigned short get_ushort(unsigned short val) {
|
static unsigned short get_ushort(unsigned short val) {
|
||||||
|
|
||||||
#ifdef WORDS_BIGENDIAN
|
#ifdef OPJ_BIG_ENDIAN
|
||||||
return( ((val & 0xff) << 8) + (val >> 8) );
|
return( ((val & 0xff) << 8) + (val >> 8) );
|
||||||
#else
|
#else
|
||||||
return( val );
|
return( val );
|
||||||
@@ -116,23 +116,28 @@ 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(18);
|
tga = (unsigned char*)malloc(TGA_HEADER_SIZE);
|
||||||
|
|
||||||
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");
|
||||||
return 0 ;
|
free(tga);
|
||||||
|
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];
|
||||||
@@ -179,7 +184,7 @@ static int tga_readheader(FILE *fp, unsigned int *bits_per_pixel,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WORDS_BIGENDIAN == 1
|
#ifdef OPJ_BIG_ENDIAN
|
||||||
|
|
||||||
static inline int16_t swap16(int16_t x)
|
static inline int16_t swap16(int16_t x)
|
||||||
{
|
{
|
||||||
@@ -226,7 +231,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;
|
||||||
|
|
||||||
#if WORDS_BIGENDIAN == 0
|
#ifndef OPJ_BIG_ENDIAN
|
||||||
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
|
||||||
@@ -271,12 +276,16 @@ 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));
|
||||||
@@ -309,8 +318,10 @@ 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;
|
||||||
@@ -338,19 +349,22 @@ 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);
|
||||||
return NULL;
|
fclose(f);
|
||||||
|
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);
|
||||||
return NULL;
|
fclose(f);
|
||||||
|
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);
|
||||||
return NULL;
|
fclose(f);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
image->comps[0].data[index]=r;
|
image->comps[0].data[index]=r;
|
||||||
@@ -368,25 +382,29 @@ 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);
|
||||||
return NULL;
|
fclose(f);
|
||||||
|
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);
|
||||||
return NULL;
|
fclose(f);
|
||||||
|
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);
|
||||||
return NULL;
|
fclose(f);
|
||||||
|
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);
|
||||||
return NULL;
|
fclose(f);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
image->comps[0].data[index]=r;
|
image->comps[0].data[index]=r;
|
||||||
@@ -400,6 +418,7 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -425,6 +444,7 @@ 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -437,8 +457,10 @@ 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;
|
||||||
|
|
||||||
@@ -468,6 +490,7 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -475,6 +498,7 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -482,6 +506,7 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -491,12 +516,14 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -534,6 +561,37 @@ 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;
|
||||||
@@ -727,37 +785,24 @@ 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;
|
||||||
|
|
||||||
table_R = (unsigned char *) malloc(256 * sizeof(unsigned char));
|
fseek(IN, 14+Info_h.biSize, SEEK_SET);
|
||||||
table_G = (unsigned char *) malloc(256 * sizeof(unsigned char));
|
memset(&cmap, 0, sizeof(struct bmp_cmap) * 256);
|
||||||
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++)
|
||||||
{
|
{
|
||||||
table_B[j] = (unsigned char)getc(IN);
|
cmap[j].blue = (unsigned char)getc(IN);
|
||||||
table_G[j] = (unsigned char)getc(IN);
|
cmap[j].green = (unsigned char)getc(IN);
|
||||||
table_R[j] = (unsigned char)getc(IN);
|
cmap[j].red = (unsigned char)getc(IN);
|
||||||
getc(IN);
|
getc(IN);
|
||||||
has_color +=
|
|
||||||
!(table_R[j] == table_G[j] && table_R[j] == table_B[j]);
|
|
||||||
}
|
}
|
||||||
if(has_color) gray_scale = 0;
|
numcomps = 3;
|
||||||
|
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++)
|
||||||
@@ -775,7 +820,6 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -785,55 +829,21 @@ 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)
|
||||||
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))
|
BMP_read_RGB8(red, green, blue, line, &Info_h, cmap, IN, offset);
|
||||||
{
|
|
||||||
image->comps[0].data[index] =
|
|
||||||
table_R[RGB[W * H - ((j) / (W) + 1) * W + (j) % (W)]];
|
|
||||||
index++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
red += w; green += w; blue += w;
|
||||||
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*/
|
||||||
@@ -1125,6 +1135,11 @@ 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;
|
||||||
|
|
||||||
@@ -1293,6 +1308,7 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1310,6 +1326,7 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1430,10 +1447,6 @@ 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;
|
||||||
@@ -1453,10 +1466,19 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2837,6 +2859,7 @@ 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 */
|
||||||
@@ -2852,6 +2875,9 @@ 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;
|
||||||
@@ -2866,11 +2892,17 @@ 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;
|
||||||
@@ -2880,6 +2912,9 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2887,6 +2922,7 @@ 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;
|
||||||
}
|
}
|
||||||
@@ -2935,6 +2971,7 @@ 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++;
|
||||||
@@ -2952,6 +2989,7 @@ 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++;
|
||||||
@@ -2974,12 +3012,14 @@ 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++;
|
||||||
@@ -2999,12 +3039,14 @@ 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++;
|
||||||
@@ -3015,11 +3057,13 @@ 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ typedef struct img_folder{
|
|||||||
float *rates;
|
float *rates;
|
||||||
}img_fol_t;
|
}img_fol_t;
|
||||||
|
|
||||||
void encode_help_display(void) {
|
static 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 @@ void encode_help_display(void) {
|
|||||||
fprintf(stdout,"TotalDisto\n\n");
|
fprintf(stdout,"TotalDisto\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
OPJ_PROG_ORDER give_progression(char progression[4]) {
|
static 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 @@ OPJ_PROG_ORDER give_progression(char progression[4]) {
|
|||||||
return PROG_UNKNOWN;
|
return PROG_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_num_images(char *imgdirpath){
|
static 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,10 +360,11 @@ int get_num_images(char *imgdirpath){
|
|||||||
continue;
|
continue;
|
||||||
num_images++;
|
num_images++;
|
||||||
}
|
}
|
||||||
|
closedir(dir);
|
||||||
return num_images;
|
return num_images;
|
||||||
}
|
}
|
||||||
|
|
||||||
int load_images(dircnt_t *dirptr, char *imgdirpath){
|
static int load_images(dircnt_t *dirptr, char *imgdirpath){
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
struct dirent* content;
|
struct dirent* content;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
@@ -385,10 +386,11 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_file_format(char *filename) {
|
static 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"
|
||||||
@@ -408,14 +410,13 @@ int get_file_format(char *filename) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
char * get_file_name(char *name){
|
static 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
char get_next_file(int imageno,dircnt_t *dirptr,img_fol_t *img_fol, opj_cparameters_t *parameters){
|
static 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]="";
|
||||||
|
|
||||||
@@ -458,7 +459,7 @@ static int initialise_4K_poc(opj_poc_t *POC, int numres){
|
|||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cinema_parameters(opj_cparameters_t *parameters){
|
static 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;
|
||||||
@@ -491,7 +492,7 @@ void cinema_parameters(opj_cparameters_t *parameters){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cinema_setup_encoder(opj_cparameters_t *parameters,opj_image_t *image, img_fol_t *img_fol){
|
static 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;
|
||||||
|
|
||||||
@@ -576,7 +577,7 @@ void cinema_setup_encoder(opj_cparameters_t *parameters,opj_image_t *image, img_
|
|||||||
|
|
||||||
/* ------------------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------------------ */
|
||||||
|
|
||||||
int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters,
|
static 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[]={
|
||||||
@@ -589,7 +590,8 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters,
|
|||||||
{"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 */
|
||||||
@@ -599,12 +601,16 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters,
|
|||||||
#endif /* USE_JPWL */
|
#endif /* USE_JPWL */
|
||||||
"h";
|
"h";
|
||||||
|
|
||||||
totlen=sizeof(long_option);
|
totlen=sizeof(long_option)-1;
|
||||||
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) {
|
||||||
@@ -1466,21 +1472,21 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters,
|
|||||||
/**
|
/**
|
||||||
sample error callback expecting a FILE* client object
|
sample error callback expecting a FILE* client object
|
||||||
*/
|
*/
|
||||||
void error_callback(const char *msg, void *client_data) {
|
static 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
|
||||||
*/
|
*/
|
||||||
void warning_callback(const char *msg, void *client_data) {
|
static 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
|
||||||
*/
|
*/
|
||||||
void info_callback(const char *msg, void *client_data) {
|
static 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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ int get_num_images(char *imgdirpath){
|
|||||||
continue;
|
continue;
|
||||||
num_images++;
|
num_images++;
|
||||||
}
|
}
|
||||||
|
closedir(dir);
|
||||||
return num_images;
|
return num_images;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,6 +147,7 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,15 +201,20 @@ 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);
|
totlen=sizeof(long_option)-1;
|
||||||
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) {
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ typedef struct img_folder{
|
|||||||
|
|
||||||
}img_fol_t;
|
}img_fol_t;
|
||||||
|
|
||||||
void decode_help_display(void) {
|
static 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 @@ void decode_help_display(void) {
|
|||||||
|
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
int get_num_images(char *imgdirpath){
|
static 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,10 +162,11 @@ int get_num_images(char *imgdirpath){
|
|||||||
continue;
|
continue;
|
||||||
num_images++;
|
num_images++;
|
||||||
}
|
}
|
||||||
|
closedir(dir);
|
||||||
return num_images;
|
return num_images;
|
||||||
}
|
}
|
||||||
|
|
||||||
int load_images(dircnt_t *dirptr, char *imgdirpath){
|
static int load_images(dircnt_t *dirptr, char *imgdirpath){
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
struct dirent* content;
|
struct dirent* content;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
@@ -187,10 +188,11 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_file_format(char *filename) {
|
static 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 };
|
||||||
@@ -209,7 +211,7 @@ int get_file_format(char *filename) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
char get_next_file(int imageno,dircnt_t *dirptr,img_fol_t *img_fol, opj_dparameters_t *parameters){
|
static 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]="";
|
||||||
|
|
||||||
@@ -235,12 +237,13 @@ char get_next_file(int imageno,dircnt_t *dirptr,img_fol_t *img_fol, opj_dparamet
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,img_fol_t *img_fol, char *indexfilename) {
|
static 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:"
|
||||||
@@ -251,10 +254,14 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i
|
|||||||
#endif /* USE_JPWL */
|
#endif /* USE_JPWL */
|
||||||
/* <<UniPG */
|
/* <<UniPG */
|
||||||
"h" ;
|
"h" ;
|
||||||
totlen=sizeof(long_option);
|
totlen=sizeof(long_option) - 1;
|
||||||
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) {
|
||||||
@@ -490,21 +497,21 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i
|
|||||||
/**
|
/**
|
||||||
sample error callback expecting a FILE* client object
|
sample error callback expecting a FILE* client object
|
||||||
*/
|
*/
|
||||||
void error_callback(const char *msg, void *client_data) {
|
static 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
|
||||||
*/
|
*/
|
||||||
void warning_callback(const char *msg, void *client_data) {
|
static 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
|
||||||
*/
|
*/
|
||||||
void info_callback(const char *msg, void *client_data) {
|
static 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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -293,12 +293,14 @@ 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 */
|
||||||
|
|||||||
@@ -10,11 +10,7 @@
|
|||||||
* 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. All advertising materials mentioning features or use of this software
|
* 3. Neither the name of the University nor the names of its contributors
|
||||||
* 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.
|
||||||
*
|
*
|
||||||
@@ -42,6 +38,10 @@ 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 */
|
||||||
|
|||||||
@@ -1,5 +1,26 @@
|
|||||||
/* 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_
|
||||||
|
|
||||||
@@ -9,7 +30,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
|
||||||
@@ -27,3 +48,4 @@ 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 */
|
||||||
|
|||||||
@@ -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})
|
TARGET_LINK_LIBRARIES(openjpip_server ${FCGI_LIBRARIES} ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
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
|
||||||
|
|||||||
@@ -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);
|
||||||
strcpy( phld->TBox, "phld");
|
strncpy( phld->TBox, "phld", 4);
|
||||||
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;
|
||||||
|
|||||||
@@ -57,6 +57,14 @@ 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})
|
||||||
@@ -70,6 +78,7 @@ 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
|
||||||
@@ -124,6 +133,7 @@ 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
|
||||||
|
|||||||
13
configure.ac
13
configure.ac
@@ -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], [0])
|
m4_define([OPJ_MICRO], [2])
|
||||||
|
|
||||||
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,7 +23,6 @@ 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])
|
||||||
@@ -466,8 +465,14 @@ AC_HEADER_DIRENT
|
|||||||
### Checks for compiler characteristics
|
### Checks for compiler characteristics
|
||||||
|
|
||||||
AM_PROG_CC_C_O
|
AM_PROG_CC_C_O
|
||||||
AC_C_BIGENDIAN
|
ac_cv_c_big_endian=0
|
||||||
|
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])
|
||||||
|
|||||||
@@ -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 = YES
|
HTML_TIMESTAMP = NO
|
||||||
HTML_ALIGN_MEMBERS = YES
|
HTML_ALIGN_MEMBERS = YES
|
||||||
HTML_DYNAMIC_SECTIONS = NO
|
HTML_DYNAMIC_SECTIONS = NO
|
||||||
GENERATE_DOCSET = NO
|
GENERATE_DOCSET = NO
|
||||||
|
|||||||
@@ -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 = YES
|
HTML_TIMESTAMP = NO
|
||||||
HTML_ALIGN_MEMBERS = YES
|
HTML_ALIGN_MEMBERS = YES
|
||||||
HTML_DYNAMIC_SECTIONS = NO
|
HTML_DYNAMIC_SECTIONS = NO
|
||||||
GENERATE_DOCSET = NO
|
GENERATE_DOCSET = NO
|
||||||
|
|||||||
@@ -45,6 +45,11 @@ 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
|
||||||
@@ -54,18 +59,17 @@ install-data-hook:
|
|||||||
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 \
|
||||||
|
|||||||
@@ -62,3 +62,10 @@ 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()
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ 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 \
|
||||||
|
|||||||
@@ -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, int b);
|
static void bio_putbit(opj_bio_t *bio, unsigned 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++ = bio->buf >> 8;
|
*bio->bp++ = (unsigned char)(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, int b) {
|
static void bio_putbit(opj_bio_t *bio, unsigned 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 (bio->bp - bio->start);
|
return (int)(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) {
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "opj_includes.h"
|
#include "opj_includes.h"
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------- */
|
/* ----------------------------------------------------------------------- */
|
||||||
|
|
||||||
@@ -106,6 +107,7 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,6 +115,7 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,6 +142,7 @@ 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;
|
||||||
@@ -173,7 +177,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 += cio_bytein(cio) << (i << 3);
|
v += (unsigned int)cio_bytein(cio) << (i << 3);
|
||||||
}
|
}
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
@@ -184,6 +188,10 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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_malloc(image->numcomps * sizeof(opj_image_comp_t));
|
image->comps = (opj_image_comp_t*)opj_calloc(1,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);
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#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 */
|
||||||
/*@{*/
|
/*@{*/
|
||||||
@@ -404,6 +405,7 @@ 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;
|
||||||
@@ -422,12 +424,32 @@ 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,
|
||||||
"%s: invalid image size (x0:%d, x1:%d, y0:%d, y1:%d)\n",
|
"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) {
|
||||||
@@ -466,11 +488,19 @@ 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, w, h;
|
int tmp;
|
||||||
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;
|
||||||
@@ -506,9 +536,11 @@ static void j2k_read_siz(opj_j2k_t *j2k) {
|
|||||||
}
|
}
|
||||||
#endif /* USE_JPWL */
|
#endif /* USE_JPWL */
|
||||||
|
|
||||||
/* TODO: unused ? */
|
/* prevent division by zero */
|
||||||
w = int_ceildiv(image->x1 - image->x0, image->comps[i].dx);
|
if (!(image->comps[i].dx * image->comps[i].dy)) {
|
||||||
h = int_ceildiv(image->y1 - image->y0, image->comps[i].dy);
|
opj_event_msg(j2k->cinfo, EVT_ERROR, "JPWL: invalid component size (dx: %d, dy: %d)\n", image->comps[i].dx, 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 */
|
||||||
@@ -517,6 +549,15 @@ 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
|
||||||
@@ -769,6 +810,7 @@ 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) */
|
||||||
@@ -822,7 +864,14 @@ 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);
|
||||||
}
|
}
|
||||||
@@ -893,6 +942,8 @@ 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 */
|
||||||
@@ -1004,9 +1055,16 @@ 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));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1052,6 +1110,15 @@ 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];
|
||||||
@@ -1074,9 +1141,12 @@ 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1088,13 +1158,16 @@ 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1105,6 +1178,7 @@ 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 */
|
||||||
@@ -1130,6 +1204,7 @@ 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 */
|
||||||
@@ -1277,6 +1352,7 @@ 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
|
||||||
@@ -1513,26 +1589,14 @@ 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++) {
|
||||||
@@ -1572,8 +1636,10 @@ 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) {
|
||||||
@@ -1590,6 +1656,13 @@ 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 */
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1620,6 +1693,7 @@ 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);
|
||||||
@@ -1799,8 +1873,11 @@ 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];
|
||||||
opj_free(j2k->tile_data[tileno]);
|
if( tileno != -1 )
|
||||||
j2k->tile_data[tileno] = NULL;
|
{
|
||||||
|
opj_free(j2k->tile_data[tileno]);
|
||||||
|
j2k->tile_data[tileno] = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1964,6 +2041,11 @@ 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) {
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
* 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 */
|
||||||
/*@{*/
|
/*@{*/
|
||||||
@@ -172,6 +173,9 @@ 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;
|
||||||
@@ -518,10 +522,8 @@ 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;
|
||||||
|
|
||||||
@@ -531,6 +533,7 @@ 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)
|
||||||
{
|
{
|
||||||
@@ -654,6 +657,7 @@ 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;
|
||||||
@@ -679,6 +683,7 @@ 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);
|
||||||
}
|
}
|
||||||
@@ -689,6 +694,7 @@ 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);
|
||||||
}
|
}
|
||||||
@@ -699,6 +705,7 @@ 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);
|
||||||
}
|
}
|
||||||
@@ -709,12 +716,14 @@ 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;
|
||||||
@@ -728,6 +737,84 @@ 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)
|
||||||
{
|
{
|
||||||
@@ -761,6 +848,10 @@ 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)
|
||||||
@@ -856,6 +947,14 @@ 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++) {
|
||||||
@@ -910,12 +1009,14 @@ 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;
|
||||||
@@ -1083,6 +1184,7 @@ 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);
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ 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 \
|
||||||
|
|||||||
@@ -89,18 +89,17 @@ 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_X64
|
#ifdef _M_IX86
|
||||||
return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f));
|
long int i;
|
||||||
#else
|
|
||||||
int i;
|
|
||||||
|
|
||||||
_asm{
|
_asm{
|
||||||
fld f
|
fld f
|
||||||
fistp i
|
fistp i
|
||||||
};
|
};
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
#endif
|
#else
|
||||||
|
return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f));
|
||||||
|
#endif /* _M_IX86 */
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#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 */
|
||||||
/*@{*/
|
/*@{*/
|
||||||
@@ -340,13 +341,15 @@ 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];
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
|
|
||||||
#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;*/
|
||||||
@@ -250,6 +251,8 @@ 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);
|
||||||
@@ -512,6 +515,8 @@ 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);
|
||||||
@@ -760,6 +765,8 @@ 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);
|
||||||
@@ -1381,6 +1388,7 @@ 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-----------------*/
|
||||||
@@ -1401,6 +1409,7 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1447,6 +1456,13 @@ 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,
|
||||||
@@ -1478,10 +1494,19 @@ 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));
|
||||||
}
|
}
|
||||||
@@ -1495,6 +1520,7 @@ 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1504,6 +1530,7 @@ 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,16 +21,28 @@ __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${__opj_prefix}" = "x" ; then
|
if test "x$UP[_CFLAGS]" != "x"; then
|
||||||
CPPFLAGS="${CPPFLAGS} $UP[_CFLAGS]"
|
CPPFLAGS="${CPPFLAGS} $UP[_CFLAGS]"
|
||||||
LDFLAGS="${LDFLAGS} $UP[_LIBS]"
|
|
||||||
else
|
else
|
||||||
CPPFLAGS="${CPPFLAGS} -I${__opj_prefix}/include"
|
if test "x${__opj_prefix}" != "x" ; then
|
||||||
LDFLAGS="${LDFLAGS} -L${__opj_prefix}/lib"
|
__opj_CPPFLAGS="-I${__opj_prefix}/include"
|
||||||
LIBS="${LIBS} -l${__opj_lib}"
|
else
|
||||||
|
__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(
|
||||||
@@ -45,7 +57,6 @@ ${__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
|
||||||
@@ -55,12 +66,12 @@ else
|
|||||||
fi
|
fi
|
||||||
AC_MSG_RESULT([${__opj_have_dep}])
|
AC_MSG_RESULT([${__opj_have_dep}])
|
||||||
|
|
||||||
if test "x${__opj_have_dep}" = "xyes" && ! test "x${__opj_prefix}" = "x"; then
|
if test "x${__opj_have_dep}" = "xyes"; then
|
||||||
if test "x${UP[]_CFLAGS}" = "x" ; then
|
if test "x${UP[]_CFLAGS}" = "x" ; then
|
||||||
UP[]_CFLAGS="-I${__opj_prefix}/include"
|
UP[]_CFLAGS="${__opj_CPPFLAGS}"
|
||||||
fi
|
fi
|
||||||
if test "x${UP[]_LIBS}" = "x" ; then
|
if test "x${UP[]_LIBS}" = "x" ; then
|
||||||
UP[]_LIBS="-L${__opj_prefix}/lib -l${__opj_lib}"
|
UP[]_LIBS="${__opj_LIBS}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
#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
|
||||||
|
|||||||
@@ -11,14 +11,15 @@ 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)
|
||||||
|
|
||||||
SET(compare_dump_files_SRCS compare_dump_files.c
|
if(NOT USE_SYSTEM_GETOPT)
|
||||||
${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
|
list(APPEND comparePGXimages_SRCS ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
|
||||||
|
list(APPEND compare_dump_files_SRCS ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
|
||||||
SET(compareRAWimages_SRCS compareRAWimages.c
|
list(APPEND compareRAWimages_SRCS ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
|
||||||
${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
|
endif()
|
||||||
|
|
||||||
ADD_EXECUTABLE(comparePGXimages ${comparePGXimages_SRCS})
|
ADD_EXECUTABLE(comparePGXimages ${comparePGXimages_SRCS})
|
||||||
TARGET_LINK_LIBRARIES(comparePGXimages
|
TARGET_LINK_LIBRARIES(comparePGXimages
|
||||||
@@ -51,7 +52,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(TestJPIP1 ${CMAKE_COMMAND} -DD_URL:STRING=${s} -DD_FILE:PATH=${p}
|
ADD_TEST(NAME TestJPIP1 COMMAND ${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)
|
||||||
|
|||||||
@@ -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;1;1;1;1;1;1;0;1;0;0;1;1;1;0")
|
SET( CP0_ignore_list "not_used;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;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;1;1;0;1;1;1")
|
SET( CP1_ignore_list "not_used;0;0;0;0;0;0;0")
|
||||||
|
|
||||||
SET(COMMENTCODEVAR FALSE)
|
SET(COMMENTCODEVAR FALSE)
|
||||||
|
|
||||||
@@ -45,7 +45,9 @@ 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)
|
||||||
list(GET CP0_nbC_list ${numFileC0P0} nbComponents)
|
#For Class-0 testing, we always focus on the first component only
|
||||||
|
#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)
|
||||||
|
|
||||||
@@ -54,15 +56,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(ETS-C0P0-${filenameInput}-r0-decode
|
ADD_TEST(NAME ETS-C0P0-${filenameInput}-r0-decode
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
|
COMMAND 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(ETS-C0P0-${filenameInput}-r0-compare2ref
|
ADD_TEST(NAME ETS-C0P0-${filenameInput}-r0-compare2ref
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND 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}
|
||||||
@@ -75,8 +77,8 @@ IF(ignore_test_value EQUAL 0)
|
|||||||
PROPERTIES DEPENDS
|
PROPERTIES DEPENDS
|
||||||
ETS-C0P0-${filenameInput}-r0-decode)
|
ETS-C0P0-${filenameInput}-r0-decode)
|
||||||
|
|
||||||
ADD_TEST(NR-C0P0-${filenameInput}-r0-compare2base
|
ADD_TEST(NAME NR-C0P0-${filenameInput}-r0-compare2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND 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}
|
||||||
@@ -89,15 +91,15 @@ IF(ignore_test_value EQUAL 0)
|
|||||||
ETS-C0P0-${filenameInput}-r0-decode)
|
ETS-C0P0-${filenameInput}-r0-decode)
|
||||||
|
|
||||||
#r = 1
|
#r = 1
|
||||||
ADD_TEST(ETS-C0P0-${filenameInput}-r1-decode
|
ADD_TEST(NAME ETS-C0P0-${filenameInput}-r1-decode
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
|
COMMAND 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(ETS-C0P0-${filenameInput}-r1-compare2ref
|
ADD_TEST(NAME ETS-C0P0-${filenameInput}-r1-compare2ref
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND 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}
|
||||||
@@ -110,8 +112,8 @@ IF(ignore_test_value EQUAL 0)
|
|||||||
PROPERTIES DEPENDS
|
PROPERTIES DEPENDS
|
||||||
ETS-C0P0-${filenameInput}-r1-decode)
|
ETS-C0P0-${filenameInput}-r1-decode)
|
||||||
|
|
||||||
ADD_TEST(NR-C0P0-${filenameInput}-r1-compare2base
|
ADD_TEST(NAME NR-C0P0-${filenameInput}-r1-compare2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND 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}
|
||||||
@@ -125,15 +127,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(ETS-C0P0-${filenameInput}-decode
|
ADD_TEST(NAME ETS-C0P0-${filenameInput}-decode
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
|
COMMAND 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(ETS-C0P0-${filenameInput}-compare2ref
|
ADD_TEST(NAME ETS-C0P0-${filenameInput}-compare2ref
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND comparePGXimages
|
||||||
-b ${BASELINE_CONF}/${filenameRef}
|
-b ${BASELINE_CONF}/${filenameRef}
|
||||||
-t ${TEMP}/c0${filenameInput}.pgx
|
-t ${TEMP}/c0${filenameInput}.pgx
|
||||||
-n ${nbComponents}
|
-n ${nbComponents}
|
||||||
@@ -146,8 +148,8 @@ IF(ignore_test_value EQUAL 0)
|
|||||||
PROPERTIES DEPENDS
|
PROPERTIES DEPENDS
|
||||||
ETS-C0P0-${filenameInput}-decode)
|
ETS-C0P0-${filenameInput}-decode)
|
||||||
|
|
||||||
ADD_TEST(NR-C0P0-${filenameInput}-compare2base
|
ADD_TEST(NAME NR-C0P0-${filenameInput}-compare2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND 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}
|
||||||
@@ -187,7 +189,9 @@ 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)
|
||||||
list(GET CP1_nbC_list ${numFileC0P1} nbComponents)
|
#For Class-0 testing, we always focus on the first component only
|
||||||
|
#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)
|
||||||
|
|
||||||
@@ -196,15 +200,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(ETS-C0P1-${filenameInput}-r0-decode
|
ADD_TEST(NAME ETS-C0P1-${filenameInput}-r0-decode
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
|
COMMAND 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(ETS-C0P1-${filenameInput}-r0-compare2ref
|
ADD_TEST(NAME ETS-C0P1-${filenameInput}-r0-compare2ref
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND 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}
|
||||||
@@ -217,8 +221,8 @@ IF(ignore_test_value2 EQUAL 0)
|
|||||||
PROPERTIES DEPENDS
|
PROPERTIES DEPENDS
|
||||||
ETS-C0P1-${filenameInput}-r0-decode)
|
ETS-C0P1-${filenameInput}-r0-decode)
|
||||||
|
|
||||||
ADD_TEST(NR-C0P1-${filenameInput}-r0-compare2base
|
ADD_TEST(NAME NR-C0P1-${filenameInput}-r0-compare2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND 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}
|
||||||
@@ -231,15 +235,15 @@ IF(ignore_test_value2 EQUAL 0)
|
|||||||
ETS-C0P1-${filenameInput}-r0-decode)
|
ETS-C0P1-${filenameInput}-r0-decode)
|
||||||
|
|
||||||
#r = 3
|
#r = 3
|
||||||
ADD_TEST(ETS-C0P1-${filenameInput}-r3-decode
|
ADD_TEST(NAME ETS-C0P1-${filenameInput}-r3-decode
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
|
COMMAND 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(ETS-C0P1-${filenameInput}-r3-compare2ref
|
ADD_TEST(NAME ETS-C0P1-${filenameInput}-r3-compare2ref
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND 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}
|
||||||
@@ -252,8 +256,8 @@ IF(ignore_test_value2 EQUAL 0)
|
|||||||
PROPERTIES DEPENDS
|
PROPERTIES DEPENDS
|
||||||
ETS-C0P1-${filenameInput}-r3-decode)
|
ETS-C0P1-${filenameInput}-r3-decode)
|
||||||
|
|
||||||
ADD_TEST(NR-C0P1-${filenameInput}-r3-compare2base
|
ADD_TEST(NAME NR-C0P1-${filenameInput}-r3-compare2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND 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}
|
||||||
@@ -267,15 +271,15 @@ IF(ignore_test_value2 EQUAL 0)
|
|||||||
|
|
||||||
ELSE(numFileC0P1 EQUAL 4)
|
ELSE(numFileC0P1 EQUAL 4)
|
||||||
|
|
||||||
ADD_TEST(ETS-C0P1-${filenameInput}-decode
|
ADD_TEST(NAME ETS-C0P1-${filenameInput}-decode
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
|
COMMAND 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(ETS-C0P1-${filenameInput}-compare2ref
|
ADD_TEST(NAME ETS-C0P1-${filenameInput}-compare2ref
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND comparePGXimages
|
||||||
-b ${BASELINE_CONF}/${filenameRef}
|
-b ${BASELINE_CONF}/${filenameRef}
|
||||||
-t ${TEMP}/c0${filenameInput}.pgx
|
-t ${TEMP}/c0${filenameInput}.pgx
|
||||||
-n ${nbComponents}
|
-n ${nbComponents}
|
||||||
@@ -288,8 +292,8 @@ IF(ignore_test_value2 EQUAL 0)
|
|||||||
PROPERTIES DEPENDS
|
PROPERTIES DEPENDS
|
||||||
ETS-C0P1-${filenameInput}-decode)
|
ETS-C0P1-${filenameInput}-decode)
|
||||||
|
|
||||||
ADD_TEST(NR-C0P1-${filenameInput}-compare2base
|
ADD_TEST(NAME NR-C0P1-${filenameInput}-compare2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND 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}
|
||||||
@@ -335,15 +339,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(ETS-C1P0-${filenameInput}-decode
|
ADD_TEST(NAME ETS-C1P0-${filenameInput}-decode
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
|
COMMAND 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(ETS-C1P0-${filenameInput}-compare2ref
|
ADD_TEST(NAME ETS-C1P0-${filenameInput}-compare2ref
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND comparePGXimages
|
||||||
-b ${BASELINE_CONF}/${filenameRef}
|
-b ${BASELINE_CONF}/${filenameRef}
|
||||||
-t ${TEMP}/c1${filenameInput}.pgx
|
-t ${TEMP}/c1${filenameInput}.pgx
|
||||||
-n ${nbComponents}
|
-n ${nbComponents}
|
||||||
@@ -356,8 +360,8 @@ FOREACH(numFileC1P0 RANGE 1 16)
|
|||||||
PROPERTIES DEPENDS
|
PROPERTIES DEPENDS
|
||||||
ETS-C1P0-${filenameInput}-decode)
|
ETS-C1P0-${filenameInput}-decode)
|
||||||
|
|
||||||
ADD_TEST(NR-C1P0-${filenameInput}-compare2base
|
ADD_TEST(NAME NR-C1P0-${filenameInput}-compare2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND 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}
|
||||||
@@ -394,15 +398,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(ETS-C1P1-${filenameInput}-decode
|
ADD_TEST(NAME ETS-C1P1-${filenameInput}-decode
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
|
COMMAND 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(ETS-C1P1-${filenameInput}-compare2ref
|
ADD_TEST(NAME ETS-C1P1-${filenameInput}-compare2ref
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND comparePGXimages
|
||||||
-b ${BASELINE_CONF}/${filenameRef}
|
-b ${BASELINE_CONF}/${filenameRef}
|
||||||
-t ${TEMP}/c1${filenameInput}.pgx
|
-t ${TEMP}/c1${filenameInput}.pgx
|
||||||
-n ${nbComponents}
|
-n ${nbComponents}
|
||||||
@@ -415,8 +419,8 @@ FOREACH(numFileC1P1 RANGE 1 7)
|
|||||||
PROPERTIES DEPENDS
|
PROPERTIES DEPENDS
|
||||||
ETS-C1P1-${filenameInput}-decode)
|
ETS-C1P1-${filenameInput}-decode)
|
||||||
|
|
||||||
ADD_TEST(NR-C1P1-${filenameInput}-compare2base
|
ADD_TEST(NAME NR-C1P1-${filenameInput}-compare2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
COMMAND 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}
|
||||||
@@ -447,16 +451,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(ETS-JP2-${filenameInput}-decode
|
ADD_TEST(NAME ETS-JP2-${filenameInput}-decode
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
|
COMMAND 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(ETS-JP2-${filenameInput}-compare2ref
|
# ADD_TEST(NAME ETS-JP2-${filenameInput}-compare2ref
|
||||||
# ${EXECUTABLE_OUTPUT_PATH}/compareTIFimages
|
# COMMAND compareTIFimages
|
||||||
# -b ${BASELINE_CONF}/${filenameRef_tif}
|
# -b ${BASELINE_CONF}/${filenameRef_tif}
|
||||||
# -t ${TEMP}/${filenameInput}.pgx
|
# -t ${TEMP}/${filenameInput}.pgx
|
||||||
# -p 4
|
# -p 4
|
||||||
@@ -466,8 +470,8 @@ FOREACH(numFileJP2 RANGE 1 9)
|
|||||||
# PROPERTIES DEPENDS
|
# PROPERTIES DEPENDS
|
||||||
# ETS-JP2-${filenameInput}-decode)
|
# ETS-JP2-${filenameInput}-decode)
|
||||||
#
|
#
|
||||||
# ADD_TEST(NR-JP2-${filenameInput}-compare2base
|
# ADD_TEST(NAME NR-JP2-${filenameInput}-compare2base
|
||||||
# ${EXECUTABLE_OUTPUT_PATH}/compareTIFimages
|
# COMMAND compareTIFimages
|
||||||
# -b ${BASELINE_NR}/opj_${filenameRef}
|
# -b ${BASELINE_NR}/opj_${filenameRef}
|
||||||
# -t ${TEMP}/${filenameInput}.tif
|
# -t ${TEMP}/${filenameInput}.tif
|
||||||
# -d
|
# -d
|
||||||
@@ -499,14 +503,14 @@ FOREACH(numFileP0 RANGE 1 16)
|
|||||||
get_filename_component(filenameRefSub ${filenameInput} NAME_WE)
|
get_filename_component(filenameRefSub ${filenameInput} NAME_WE)
|
||||||
|
|
||||||
|
|
||||||
ADD_TEST(NR-${filenameInput}-dump
|
ADD_TEST(NAME NR-${filenameInput}-dump
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_dump
|
COMMAND j2k_dump
|
||||||
-i ${INPUT_CONF}/${filenameInput}
|
-i ${INPUT_CONF}/${filenameInput}
|
||||||
-o ${TEMP}/${filenameInput}.txt
|
-o ${TEMP}/${filenameInput}.txt
|
||||||
)
|
)
|
||||||
|
|
||||||
ADD_TEST(NR-${filenameInput}-compare_dump2base
|
ADD_TEST(NAME NR-${filenameInput}-compare_dump2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
|
COMMAND compare_dump_files
|
||||||
-b ${BASELINE_NR}/opj_${filenameRefSub}.txt
|
-b ${BASELINE_NR}/opj_${filenameRefSub}.txt
|
||||||
-t ${TEMP}/${filenameInput}.txt
|
-t ${TEMP}/${filenameInput}.txt
|
||||||
)
|
)
|
||||||
@@ -528,14 +532,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(NR-${filenameInput}-dump
|
ADD_TEST(NAME NR-${filenameInput}-dump
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_dump
|
COMMAND j2k_dump
|
||||||
-i ${INPUT_CONF}/${filenameInput}
|
-i ${INPUT_CONF}/${filenameInput}
|
||||||
-o ${TEMP}/${filenameInput}.txt
|
-o ${TEMP}/${filenameInput}.txt
|
||||||
)
|
)
|
||||||
|
|
||||||
ADD_TEST(NR-${filenameInput}-compare_dump2base
|
ADD_TEST(NAME NR-${filenameInput}-compare_dump2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
|
COMMAND compare_dump_files
|
||||||
-b ${BASELINE_NR}/opj_${filenameInputSub}.txt
|
-b ${BASELINE_NR}/opj_${filenameInputSub}.txt
|
||||||
-t ${TEMP}/${filenameInput}.txt
|
-t ${TEMP}/${filenameInput}.txt
|
||||||
)
|
)
|
||||||
@@ -557,14 +561,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(NR-${filenameInput}-dump
|
ADD_TEST(NAME NR-${filenameInput}-dump
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_dump
|
COMMAND j2k_dump
|
||||||
-i ${INPUT_CONF}/${filenameInput}
|
-i ${INPUT_CONF}/${filenameInput}
|
||||||
-o ${TEMP}/${filenameInput}.txt
|
-o ${TEMP}/${filenameInput}.txt
|
||||||
)
|
)
|
||||||
|
|
||||||
ADD_TEST(NR-${filenameInput}-compare_dump2base
|
ADD_TEST(NAME NR-${filenameInput}-compare_dump2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
|
COMMAND compare_dump_files
|
||||||
-b ${BASELINE_NR}/opj_${filenameInputSub}.txt
|
-b ${BASELINE_NR}/opj_${filenameInputSub}.txt
|
||||||
-t ${TEMP}/${filenameInput}.txt
|
-t ${TEMP}/${filenameInput}.txt
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode
|
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode
|
||||||
${EXECUTABLE_OUTPUT_PATH}/image_to_j2k
|
COMMAND 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(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-dump
|
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-dump
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_dump
|
COMMAND 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(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dump2base
|
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dump2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
|
COMMAND 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(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-decode-ref
|
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-decode-ref
|
||||||
${KDU_EXPAND_EXECUTABLE}
|
COMMAND ${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(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dec-ref-out2base
|
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dec-ref-out2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/compareRAWimages
|
COMMAND 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(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode
|
ADD_TEST(NAME NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
|
COMMAND j2k_to_image
|
||||||
${CMD_ARG_LIST_2}
|
${CMD_ARG_LIST_2}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -237,11 +237,16 @@ 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(NR-${filename}-compare2base
|
# ADD_TEST(NAME NR-${filename}-compare2base
|
||||||
# ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
|
# COMMAND comparePGXimages
|
||||||
# -b ${BASELINE_NR}/opj_${filenameRef}
|
# -b ${BASELINE_NR}/opj_${filenameRef}
|
||||||
# -t ${TEMP}/${filename}.pgx
|
# -t ${TEMP}/${filename}.pgx
|
||||||
# -n ${nbComponents}
|
# -n ${nbComponents}
|
||||||
@@ -254,15 +259,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(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-dump
|
ADD_TEST(NAME NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-dump
|
||||||
${EXECUTABLE_OUTPUT_PATH}/j2k_dump
|
COMMAND 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(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-compare_dump2base
|
ADD_TEST(NAME NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-compare_dump2base
|
||||||
${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
|
COMMAND 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
|
||||||
)
|
)
|
||||||
|
|||||||
56
tests/nonregression/checkmd5refs.cmake
Normal file
56
tests/nonregression/checkmd5refs.cmake
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# 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()
|
||||||
84
tests/nonregression/md5refs.txt
Normal file
84
tests/nonregression/md5refs.txt
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
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
|
||||||
@@ -37,10 +37,11 @@ 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
|
||||||
j2k_to_image -i @INPUT_NR_PATH@/broken.jp2 -o @TEMP_PATH@/broken.jp2.pgx
|
# The 4 following tests should failed (kakadu indicates that they are corrupted)
|
||||||
j2k_to_image -i @INPUT_NR_PATH@/broken2.jp2 -o @TEMP_PATH@/broken2.jp2.pgx
|
!j2k_to_image -i @INPUT_NR_PATH@/broken.jp2 -o @TEMP_PATH@/broken.jp2.pgx
|
||||||
j2k_to_image -i @INPUT_NR_PATH@/broken3.jp2 -o @TEMP_PATH@/broken3.jp2.pgx
|
!j2k_to_image -i @INPUT_NR_PATH@/broken2.jp2 -o @TEMP_PATH@/broken2.jp2.pgx
|
||||||
j2k_to_image -i @INPUT_NR_PATH@/broken4.jp2 -o @TEMP_PATH@/broken4.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@/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
|
||||||
@@ -62,6 +63,93 @@ 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
|
||||||
|
|||||||
@@ -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(testempty1 ${EXECUTABLE_OUTPUT_PATH}/testempty1)
|
add_test(NAME testempty1 COMMAND testempty1)
|
||||||
add_test(testempty2 ${EXECUTABLE_OUTPUT_PATH}/testempty2)
|
add_test(NAME testempty2 COMMAND testempty2)
|
||||||
|
|||||||
@@ -63,8 +63,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
opj_cparameters_t parameters;
|
opj_cparameters_t parameters;
|
||||||
|
|
||||||
int subsampling_dx = parameters.subsampling_dx;
|
int subsampling_dx;
|
||||||
int subsampling_dy = parameters.subsampling_dy;
|
int subsampling_dy;
|
||||||
const char outputfile[] = "testempty2.j2k";
|
const char outputfile[] = "testempty2.j2k";
|
||||||
|
|
||||||
opj_image_cmptparm_t cmptparm;
|
opj_image_cmptparm_t cmptparm;
|
||||||
@@ -81,6 +81,8 @@ int main(int argc, char *argv[])
|
|||||||
opj_set_default_encoder_parameters(¶meters);
|
opj_set_default_encoder_parameters(¶meters);
|
||||||
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;
|
||||||
|
|||||||
Reference in New Issue
Block a user