Compare commits

...

43 Commits

Author SHA1 Message Date
Mathieu Malaterre
9586bc669c [1.5.2] Add NEWS file 2014-03-28 08:20:25 +00:00
Mathieu Malaterre
78dc93512b [1.5.2] Set mime-type to text/plain; charset=UTF-8 2014-03-28 08:15:30 +00:00
Mathieu Malaterre
6778ef6a25 [1.5] Add missing changes files
Fixes issue 320
2014-03-27 10:54:49 +00:00
Mathieu Malaterre
20eb15b760 Create 1.5.2
Update issue 320
2014-03-27 10:53:26 +00:00
Mathieu Malaterre
8c71728242 [1.5] Fix big endian checking with autotools
Thanks to winfried for patch
Fixes issue 302
2014-03-26 15:25:37 +00:00
Mathieu Malaterre
4140dfdea8 [1.5] Import patch from bug tracker
Thanks to winfried
Fixes issue 304
2014-03-25 16:42:49 +00:00
Rex Dieter
259f629a46 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-24 17:01:23 +00:00
Rex Dieter
c302efcf86 Install jpwl man pages only if jpwl is enabled
issue: 129
2014-03-24 16:58:46 +00:00
Rex Dieter
e0b5b08f9a Calling AC_CANONICAL_SYSTEM implies AC_CANONICAL_TARGET, which
gives incorrect results when cross compiling. Calling only
AC_CANONICAL_HOST is enough.

issue: 129
2014-03-24 16:58:06 +00:00
Mathieu Malaterre
dac95eff3a [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-18 16:26:39 +00:00
Mathieu Malaterre
4f4de7070e [1.5] Create a new cmake option to choose between convienient copy of getopt and system installed one
Udapte issue 301
2014-03-18 15:59:08 +00:00
Mathieu Malaterre
78d1820881 [1.5] Add a way for user to override source/target java version
Update issue 303
2014-03-18 14:58:14 +00:00
Mathieu Malaterre
de73cfeec1 [1.5] Fix issues with big endian handling
Fixes issue 302
2014-03-18 14:40:37 +00:00
Mathieu Malaterre
49044ae2a8 [1.5] Rework r2758 the conditions were not quite right. Update checks. 2014-03-18 14:27:56 +00:00
Mathieu Malaterre
6e0162a8a6 [1.5] Check the number of tiles 2014-03-18 14:19:21 +00:00
Mathieu Malaterre
910af7edec [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 2014-03-18 14:05:44 +00:00
Mathieu Malaterre
69cd4f9211 [1.5] Import portion of patch from issue 297
Run test suite on new datasets
Update issue 297
2014-03-18 12:47:45 +00:00
Mathieu Malaterre
6fc2b56847 [1.5] Remove another set of simple warnings 2014-03-17 16:11:48 +00:00
Mathieu Malaterre
773bd89130 [1.5] Remove simple warning about C++ style comments 2014-03-17 16:03:07 +00:00
Mathieu Malaterre
5d356d6fcb [1.5] Update BSD-4 copyright into a BSD-3 copyright
Update issue 300
2014-03-17 15:02:20 +00:00
Mathieu Malaterre
a2f90ab2cb [1.5] Prevent buffer overflow in openjpip code 2014-03-12 11:55:54 +00:00
Mathieu Malaterre
a05a9aa4ed [1.5] Fix remainings warnings on 1.5 branch 2014-03-12 11:52:26 +00:00
Mathieu Malaterre
af2be2d456 [1.5] Use improved find_path syntax to help cross-compilation setup find openjpeg data root 2014-03-04 08:29:53 +00:00
Mathieu Malaterre
96dba34ddc [1.5] Declare functions static to track unused ones. 2014-02-26 08:43:20 +00:00
Mathieu Malaterre
6aad1208b2 [1.5] Import first patch (fixes.patch) from issue 249 to fix leaks on error condition.
Update issue 249
2014-02-26 08:38:19 +00:00
Mathieu Malaterre
d2be8c5d21 [1.5] Use new add_test signature to handle cross compilation and execution using wine 2014-02-26 08:34:28 +00:00
Mathieu Malaterre
b42f76cb7f [1.5] Remove addition from r1702 this introduced a regression as seen in issue 205
Fixes issue 205
2014-02-25 14:44:55 +00:00
Mathieu Malaterre
07163be7ed [1.5] Import md5 checker from trunk back onto 1.5 branch 2014-02-25 14:28:30 +00:00
Mathieu Malaterre
4e672cc1e9 [1.5] Do not report warning on third party lib 2014-02-24 12:26:51 +00:00
Mathieu Malaterre
ced9a50367 [1.5] Remove some simple warnings 2014-02-24 10:01:27 +00:00
Mathieu Malaterre
a1683bd7c2 [1.5] Import patch suggested in bug #241 2013-09-26 09:24:55 +00:00
Antonin Descampe
f968a70e22 tests : reactivated conformance tests in openjpeg 1.5 branch to enable comparison with trunk 2013-07-11 17:09:02 +00:00
Mickael Savinaud
2fe6bac6eb [b1.5.x] update the micro version into the configure file (thanks to winfried) 2013-03-14 08:52:38 +00:00
Mathieu Malaterre
15243144c4 [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-02-27 08:03:39 +00:00
Mickael Savinaud
c0c69d1c36 [1.5] improve the bmp read function for RGB8 case (thanks Winfried). Update issue 203 2012-12-18 08:47:19 +00:00
Rex Dieter
d9d62a77ee backport r2259
Doxyfile: HTML_TIMESTAMP = NO

helps when comparing the output of multiple runs,
and distros will appreciate avoiding multilib conflicts.
2012-12-07 15:10:24 +00:00
Mathieu Malaterre
15488c94d2 [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-10-22 11:29:32 +00:00
Mathieu Malaterre
75175b715c [1.5] Build small internal tools to generate t1_luts.h 2012-10-02 07:43:12 +00:00
Mathieu Malaterre
46831582b2 [1.5] missing range check in j2k_read_coc et al.
Fixes issue 166
2012-10-02 07:17:09 +00:00
Mathieu Malaterre
e55d5e29e0 [1.5] division by zero in j2k_read_siz
Fixes issue 169
2012-10-02 07:09:57 +00:00
Mathieu Malaterre
c02f145cd1 [1.5] int main() in t1_generate_luts.c breaks mplayer
Fixes issue 152
2012-10-02 07:02:56 +00:00
Mathieu Malaterre
6280b5ad8d [1.5] jp2_read_boxhdr() can trigger random pointer memory access
Fixes issue 155
2012-10-01 15:57:01 +00:00
Mathieu Malaterre
7720188fa7 [1.5] Start opj 1.5.2 2012-10-01 15:49:16 +00:00
43 changed files with 1122 additions and 323 deletions

198
CHANGES Normal file
View 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

View File

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

View File

@@ -29,7 +29,7 @@ INCLUDE_REGULAR_EXPRESSION("^.*$")
# OPENJPEG version number, useful for packaging and doxygen doc:
SET(OPENJPEG_VERSION_MAJOR 1)
SET(OPENJPEG_VERSION_MINOR 5)
SET(OPENJPEG_VERSION_BUILD 0)
SET(OPENJPEG_VERSION_BUILD 2)
SET(OPENJPEG_VERSION
"${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}")
SET(PACKAGE_VERSION
@@ -44,6 +44,7 @@ SET(PACKAGE_VERSION
# 1.3 | 3
# 1.4 | 4
# 1.5 | 5
# 1.5.1 | 5
# 2.0 | 6
# 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:
@@ -135,6 +136,14 @@ IF(NOT OPENJPEG_INSTALL_DOC_DIR)
SET(OPENJPEG_INSTALL_DOC_DIR "share/doc/${OPENJPEG_INSTALL_SUBDIR}")
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)
# We could install *.cmake files in share/ however those files contains
# hardcoded path to libraries on a multi-arch system (fedora/debian) those
@@ -224,6 +233,8 @@ IF(BUILD_JPIP)
ENDIF(BUILD_JPIP)
OPTION(BUILD_VIEWER "Build the OPJViewer executable (C++)" 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_JAVA)
@@ -261,10 +272,9 @@ IF(BUILD_TESTING)
# They could be found via svn on the OpenJPEG google code project
# svn checkout http://openjpeg.googlecode.com/svn/data (about 70 Mo)
FIND_PATH(OPJ_DATA_ROOT README-OPJ-Data
PATHS
$ENV{OPJ_DATA_ROOT}
${CMAKE_SOURCE_DIR}/../data
${CMAKE_SOURCE_DIR}/../../data
PATHS $ENV{OPJ_DATA_ROOT} ${CMAKE_SOURCE_DIR}/../data
${CMAKE_SOURCE_DIR}/../../data
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
)
# Add repository where to find tests

19
NEWS
View File

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

View File

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

View File

@@ -5,8 +5,12 @@ SET(common_SRCS
convert.c
index.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:
INCLUDE_DIRECTORIES(

View File

@@ -78,7 +78,7 @@ JPWL_j2k_to_image_CPPFLAGS = \
@LCMS1_CFLAGS@ \
@LCMS2_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 = \
../common/color.c \
../common/opj_getopt.c \
@@ -96,7 +96,7 @@ JPWL_image_to_j2k_CPPFLAGS = \
@TIFF_CFLAGS@ \
@PNG_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 = \
../common/opj_getopt.c \

View File

@@ -94,7 +94,7 @@ struct tga_header
static unsigned short get_ushort(unsigned short val) {
#ifdef WORDS_BIGENDIAN
#ifdef OPJ_BIG_ENDIAN
return( ((val & 0xff) << 8) + (val >> 8) );
#else
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)
return 0;
tga = (unsigned char*)malloc(18);
tga = (unsigned char*)malloc(TGA_HEADER_SIZE);
if ( fread(tga, TGA_HEADER_SIZE, 1, fp) != 1 )
{
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];
cmap_type = (unsigned char)tga[1];
(void)cmap_type;
image_type = (unsigned char)tga[2];
cmap_index = get_ushort(*(unsigned short*)(&tga[3]));
(void)cmap_index;
cmap_len = get_ushort(*(unsigned short*)(&tga[5]));
cmap_entry_size = (unsigned char)tga[7];
x_origin = get_ushort(*(unsigned short*)(&tga[8]));
(void)x_origin;
y_origin = get_ushort(*(unsigned short*)(&tga[10]));
(void)y_origin;
image_w = get_ushort(*(unsigned short*)(&tga[12]));
image_h = get_ushort(*(unsigned short*)(&tga[14]));
pixel_depth = (unsigned char)tga[16];
@@ -179,7 +184,7 @@ static int tga_readheader(FILE *fp, unsigned int *bits_per_pixel,
return 1;
}
#if WORDS_BIGENDIAN == 1
#ifdef OPJ_BIG_ENDIAN
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_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_h, 2, 1, fp) != 1) goto fails;
#else
@@ -271,12 +276,16 @@ opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) {
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;
}
/* 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;
}
/* initialize image components */
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 */
image = opj_image_create(numcomps, &cmptparm[0], color_space);
if (!image)
if (!image) {
fclose(f);
return NULL;
}
/* set image offset and reference grid */
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");
opj_image_destroy(image);
return NULL;
fclose(f);
return NULL;
}
if ( !fread(&g, 1, 1, f) )
{
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
opj_image_destroy(image);
return NULL;
fclose(f);
return NULL;
}
if ( !fread(&r, 1, 1, f) )
{
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
opj_image_destroy(image);
return NULL;
fclose(f);
return NULL;
}
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");
opj_image_destroy(image);
return NULL;
fclose(f);
return NULL;
}
if ( !fread(&g, 1, 1, f) )
{
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
opj_image_destroy(image);
return NULL;
fclose(f);
return NULL;
}
if ( !fread(&r, 1, 1, f) )
{
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
opj_image_destroy(image);
return NULL;
fclose(f);
return NULL;
}
if ( !fread(&a, 1, 1, f) )
{
fprintf(stderr, "\nError: fread return a number of element different from the expected.\n");
opj_image_destroy(image);
return NULL;
fclose(f);
return NULL;
}
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);
}
}
fclose(f);
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].prec != image->comps[i+1].prec)) {
fprintf(stderr, "Unable to create a tga file with such J2K image charateristics.");
fclose(fdest);
return 1;
}
}
@@ -437,8 +457,10 @@ int imagetotga(opj_image_t * image, const char *outfile) {
/* Write TGA header */
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;
}
alpha_channel = image->numcomps-1;
@@ -468,6 +490,7 @@ int imagetotga(opj_image_t * image, const char *outfile) {
res = fwrite(&value,1,1,fdest);
if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(fdest);
return 1;
}
@@ -475,6 +498,7 @@ int imagetotga(opj_image_t * image, const char *outfile) {
res = fwrite(&value,1,1,fdest);
if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(fdest);
return 1;
}
@@ -482,6 +506,7 @@ int imagetotga(opj_image_t * image, const char *outfile) {
res = fwrite(&value,1,1,fdest);
if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(fdest);
return 1;
}
@@ -491,12 +516,14 @@ int imagetotga(opj_image_t * image, const char *outfile) {
res = fwrite(&value,1,1,fdest);
if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(fdest);
return 1;
}
}
}
}
fclose(fdest);
return 0;
}
@@ -534,6 +561,37 @@ typedef struct {
DWORD biClrImportant; /* Number of important color (0: ALL) */
} 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)
{
int subsampling_dx = parameters->subsampling_dx;
@@ -727,37 +785,24 @@ opj_image_t* bmptoimage(const char *filename, opj_cparameters_t *parameters)
else
if (Info_h.biBitCount == 8 && Info_h.biCompression == 0)/*RGB */
{
struct bmp_cmap cmap [256];
if(Info_h.biClrUsed == 0) Info_h.biClrUsed = 256;
else
if(Info_h.biClrUsed > 256) Info_h.biClrUsed = 256;
table_R = (unsigned char *) malloc(256 * sizeof(unsigned char));
table_G = (unsigned char *) malloc(256 * sizeof(unsigned char));
table_B = (unsigned char *) malloc(256 * sizeof(unsigned char));
fseek(IN, 14+Info_h.biSize, SEEK_SET);
memset(&cmap, 0, sizeof(struct bmp_cmap) * 256);
has_color = 0;
for (j = 0; j < Info_h.biClrUsed; j++)
{
table_B[j] = (unsigned char)getc(IN);
table_G[j] = (unsigned char)getc(IN);
table_R[j] = (unsigned char)getc(IN);
cmap[j].blue = (unsigned char)getc(IN);
cmap[j].green = (unsigned char)getc(IN);
cmap[j].red = (unsigned char)getc(IN);
getc(IN);
has_color +=
!(table_R[j] == table_G[j] && table_R[j] == table_B[j]);
}
if(has_color) gray_scale = 0;
/* 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;
numcomps = 3;
color_space = CLRSPC_SRGB;
/* initialize image components */
memset(&cmptparm[0], 0, 3 * sizeof(opj_image_cmptparm_t));
for(i = 0; i < numcomps; i++)
@@ -775,7 +820,6 @@ opj_image_t* bmptoimage(const char *filename, opj_cparameters_t *parameters)
if(!image)
{
fclose(IN);
free(table_R); free(table_G); free(table_B);
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->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 */
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++)
for(line = 0; line < h; ++line)
{
if ((j % W < W - 1 && Info_h.biWidth % 2) || !(Info_h.biWidth % 2))
{
image->comps[0].data[index] =
table_R[RGB[W * H - ((j) / (W) + 1) * W + (j) % (W)]];
index++;
}
}
BMP_read_RGB8(red, green, blue, line, &Info_h, cmap, IN, offset);
}
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++;
}
red += w; green += w; blue += w;
}
}
free(RGB);
free(table_R);
free(table_G);
free(table_B);
}/* RGB8 */
else
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");
if (!fdest) {
fprintf(stderr, "ERROR -> failed to open %s for writing\n", outfile);
return 1;
}
w = image->comps[0].w;
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);
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");
fclose(f);
return NULL;
}
@@ -1310,6 +1326,7 @@ opj_image_t* pgxtoimage(const char *filename, opj_cparameters_t *parameters) {
bigendian = 0;
} else {
fprintf(stderr, "Bad pgx header, please check input file\n");
fclose(f);
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);
return 1;
}
/* dont need name anymore */
if( total > 256 ) {
free(name);
}
w = image->comps[compno].w;
h = image->comps[compno].h;
@@ -1453,10 +1466,19 @@ int imagetopgx(opj_image_t * image, const char *outfile) {
res = fwrite(&byte, 1, 1, fdest);
if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", name);
if( total > 256 ) {
free(name);
}
fclose(fdest);
return 1;
}
}
}
/* dont need name anymore */
if( total > 256 ) {
free(name);
}
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);
if(!image) {
fclose(f);
free(cmptparm);
return NULL;
}
/* 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++) {
if (!fread(&value, 1, 1, f)) {
fprintf(stderr,"Error reading raw file. End of file probably reached.\n");
fclose(f);
free(cmptparm);
opj_image_destroy(image);
return NULL;
}
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;
if (!fread(&temp, 1, 1, f)) {
fprintf(stderr,"Error reading raw file. End of file probably reached.\n");
fclose(f);
free(cmptparm);
opj_image_destroy(image);
return NULL;
}
value = temp << 8;
if (!fread(&temp, 1, 1, f)) {
fprintf(stderr,"Error reading raw file. End of file probably reached.\n");
fclose(f);
free(cmptparm);
opj_image_destroy(image);
return NULL;
}
value += temp;
@@ -2880,6 +2912,9 @@ opj_image_t* rawtoimage(const char *filename, opj_cparameters_t *parameters, raw
}
else {
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;
}
@@ -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");
}
fclose(f);
free(cmptparm);
return image;
}
@@ -2935,6 +2971,7 @@ int imagetoraw(opj_image_t * image, const char *outfile)
res = fwrite(&curr, sizeof(signed char), 1, rawFile);
if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(rawFile);
return 1;
}
ptr++;
@@ -2952,6 +2989,7 @@ int imagetoraw(opj_image_t * image, const char *outfile)
res = fwrite(&curr, sizeof(unsigned char), 1, rawFile);
if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(rawFile);
return 1;
}
ptr++;
@@ -2974,12 +3012,14 @@ int imagetoraw(opj_image_t * image, const char *outfile)
res = fwrite(&temp, 1, 1, rawFile);
if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(rawFile);
return 1;
}
temp = (unsigned char) curr;
res = fwrite(&temp, 1, 1, rawFile);
if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(rawFile);
return 1;
}
ptr++;
@@ -2999,12 +3039,14 @@ int imagetoraw(opj_image_t * image, const char *outfile)
res = fwrite(&temp, 1, 1, rawFile);
if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(rawFile);
return 1;
}
temp = (unsigned char) curr;
res = fwrite(&temp, 1, 1, rawFile);
if( res < 1 ) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
fclose(rawFile);
return 1;
}
ptr++;
@@ -3015,11 +3057,13 @@ int imagetoraw(opj_image_t * image, const char *outfile)
else if (image->comps[compno].prec <= 32)
{
fprintf(stderr,"More than 16 bits per component no handled yet\n");
fclose(rawFile);
return 1;
}
else
{
fprintf(stderr,"Error: invalid precision: %d\n", image->comps[compno].prec);
fclose(rawFile);
return 1;
}
}

View File

@@ -82,7 +82,7 @@ typedef struct img_folder{
float *rates;
}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,"- 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");
}
OPJ_PROG_ORDER give_progression(char progression[4]) {
static OPJ_PROG_ORDER give_progression(char progression[4]) {
if(strncmp(progression, "LRCP", 4) == 0) {
return LRCP;
}
@@ -341,7 +341,7 @@ OPJ_PROG_ORDER give_progression(char progression[4]) {
return PROG_UNKNOWN;
}
int get_num_images(char *imgdirpath){
static int get_num_images(char *imgdirpath){
DIR *dir;
struct dirent* content;
int num_images = 0;
@@ -360,10 +360,11 @@ int get_num_images(char *imgdirpath){
continue;
num_images++;
}
closedir(dir);
return num_images;
}
int load_images(dircnt_t *dirptr, char *imgdirpath){
static int load_images(dircnt_t *dirptr, char *imgdirpath){
DIR *dir;
struct dirent* content;
int i = 0;
@@ -385,10 +386,11 @@ int load_images(dircnt_t *dirptr, char *imgdirpath){
strcpy(dirptr->filename[i],content->d_name);
i++;
}
closedir(dir);
return 0;
}
int get_file_format(char *filename) {
static int get_file_format(char *filename) {
unsigned int i;
static const char *extension[] = {
"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;
}
char * get_file_name(char *name){
static char * get_file_name(char *name){
char *fname;
fname= (char*)malloc(OPJ_PATH_LEN*sizeof(char));
fname= strtok(name,".");
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 *temp_p, temp1[OPJ_PATH_LEN]="";
@@ -458,7 +459,7 @@ static int initialise_4K_poc(opj_poc_t *POC, int numres){
return 2;
}
void cinema_parameters(opj_cparameters_t *parameters){
static void cinema_parameters(opj_cparameters_t *parameters){
parameters->tile_size_on = OPJ_FALSE;
parameters->cp_tdx=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;
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) {
int i, j, totlen, c;
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'},
{"POC",REQ_ARG, NULL ,'P'},
{"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 */
@@ -599,12 +601,16 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters,
#endif /* USE_JPWL */
"h";
totlen=sizeof(long_option);
totlen=sizeof(long_option)-1;
img_fol->set_out_format=0;
raw_cp->rawWidth = 0;
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);
#endif
if (c == -1)
break;
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
*/
void error_callback(const char *msg, void *client_data) {
static void error_callback(const char *msg, void *client_data) {
FILE *stream = (FILE*)client_data;
fprintf(stream, "[ERROR] %s", msg);
}
/**
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;
fprintf(stream, "[WARNING] %s", msg);
}
/**
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;
fprintf(stream, "[INFO] %s", msg);
}

View File

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

View File

@@ -85,7 +85,7 @@ typedef struct img_folder{
}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,"- 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;
struct dirent* content;
int num_images = 0;
@@ -162,10 +162,11 @@ int get_num_images(char *imgdirpath){
continue;
num_images++;
}
closedir(dir);
return num_images;
}
int load_images(dircnt_t *dirptr, char *imgdirpath){
static int load_images(dircnt_t *dirptr, char *imgdirpath){
DIR *dir;
struct dirent* content;
int i = 0;
@@ -187,10 +188,11 @@ int load_images(dircnt_t *dirptr, char *imgdirpath){
strcpy(dirptr->filename[i],content->d_name);
i++;
}
closedir(dir);
return 0;
}
int get_file_format(char *filename) {
static int get_file_format(char *filename) {
unsigned int i;
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 };
@@ -209,7 +211,7 @@ int get_file_format(char *filename) {
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 *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 */
int totlen, c;
opj_option_t long_option[]={
{"ImgDir",REQ_ARG, NULL ,'y'},
{"OutFor",REQ_ARG, NULL ,'O'},
{0,0,0,0} /* GNU getopt_long requirement */
};
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 */
/* <<UniPG */
"h" ;
totlen=sizeof(long_option);
totlen=sizeof(long_option) - 1;
img_fol->set_out_format = 0;
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);
#endif
if (c == -1)
break;
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
*/
void error_callback(const char *msg, void *client_data) {
static void error_callback(const char *msg, void *client_data) {
FILE *stream = (FILE*)client_data;
fprintf(stream, "[ERROR] %s", msg);
}
/**
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;
fprintf(stream, "[WARNING] %s", msg);
}
/**
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;
fprintf(stdout, "[INFO] %s", msg);
}

View File

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

View File

@@ -10,11 +10,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* 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 "opj_getopt.h"
#ifdef USE_SYSTEM_GETOPT
#error
#endif
int opj_opterr = 1, /* if error message should be printed */
opj_optind = 1, /* index into parent argv vector */
opj_optopt, /* character checked for validity */

View File

@@ -1,5 +1,26 @@
/* 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_
#define _GETOPT_H_
@@ -9,7 +30,7 @@ typedef struct opj_option
int has_arg;
int *flag;
int val;
}opj_option_t;
} opj_option_t;
#define NO_ARG 0
#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);
#endif /* _GETOPT_H_ */
#endif /* USE_SYSTEM_GETOPT */

View File

@@ -62,7 +62,7 @@ INSTALL(TARGETS openjpip_local
IF(BUILD_JPIP_SERVER)
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
PROPERTIES COMPILE_FLAGS "-DSERVER")
INSTALL(TARGETS openjpip_server

View File

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

View File

@@ -57,6 +57,14 @@ ENDFOREACH(exe)
# Build the two java clients:
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:
if(Java_Development_FOUND AND Java_JAVAC_EXECUTABLE)
set(jflags $ENV{JFLAGS})
@@ -70,6 +78,7 @@ if(Java_Development_FOUND AND Java_JAVAC_EXECUTABLE)
ADD_CUSTOM_COMMAND(
OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar
COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
-source ${JAVA_SOURCE_VERSION} -target ${JAVA_TARGET_VERSION}
${java1_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes1
COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar
${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(
OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar
COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
-source ${JAVA_SOURCE_VERSION} -target ${JAVA_TARGET_VERSION}
-classpath ${APACHE_XERCES_JAR}
${java2_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes2
COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar

View File

@@ -7,7 +7,7 @@
m4_define([OPJ_MAJOR], [1])
m4_define([OPJ_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_rev], OPJ_MICRO)
@@ -23,7 +23,6 @@ AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([opj_config.h])
AC_CANONICAL_SYSTEM
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([1.11 foreign dist-bzip2 dist-xz dist-zip])
@@ -466,8 +465,14 @@ AC_HEADER_DIRENT
### Checks for compiler characteristics
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([-Wextra])
#OPJ_COMPILER_FLAG([-Wshadow])

View File

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

View File

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

View File

@@ -45,6 +45,11 @@ dist_man3_MANS = \
man/man3/libopenjpeg.3
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) && \
rm -f 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) && \
rm -f 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 " (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 " (MAN)\t$(man3dir)/libopenjpeg.3" >> $(top_builddir)/report.txt
@echo -e " (LN)\t$(man3dir)/jpwl_libopenjpeg.3" >> $(top_builddir)/report.txt
endif
uninstall-hook:
if WANT_JPWL
rm -f $(DESTDIR)$(man1dir)/jpwl_image_to_j2k.1
rm -f $(DESTDIR)$(man1dir)/jpwl_j2k_to_image.1
rm -f $(DESTDIR)$(man3dir)/jpwl_libopenjpeg.3
endif
EXTRA_DIST = \
CMakeLists.txt \

View File

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

View File

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

View File

@@ -42,7 +42,7 @@ Write a bit
@param bio BIO handle
@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
@param bio BIO handle
@@ -78,7 +78,7 @@ static int bio_byteout(opj_bio_t *bio) {
if (bio->bp >= bio->end) {
return 1;
}
*bio->bp++ = bio->buf >> 8;
*bio->bp++ = (unsigned char)(bio->buf >> 8);
return 0;
}
@@ -92,7 +92,7 @@ static int bio_bytein(opj_bio_t *bio) {
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) {
bio_byteout(bio);
}
@@ -126,7 +126,7 @@ void bio_destroy(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) {

View File

@@ -30,6 +30,7 @@
*/
#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
*/
void OPJ_CALLCONV cio_seek(opj_cio_t *cio, int pos) {
assert((cio->start + pos) <= cio->end);
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.
*/
int cio_numbytesleft(opj_cio_t *cio) {
assert((cio->end - cio->bp) >= 0);
return cio->end - cio->bp;
}
@@ -139,6 +142,7 @@ opj_bool cio_byteout(opj_cio_t *cio, unsigned char v) {
* Read a byte.
*/
unsigned char cio_bytein(opj_cio_t *cio) {
assert(cio->bp >= cio->start);
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);
return 0;
@@ -173,7 +177,7 @@ unsigned int cio_read(opj_cio_t *cio, int n) {
unsigned int v;
v = 0;
for (i = n - 1; i >= 0; i--) {
v += cio_bytein(cio) << (i << 3);
v += (unsigned int)cio_bytein(cio) << (i << 3);
}
return v;
}
@@ -184,6 +188,10 @@ unsigned int cio_read(opj_cio_t *cio, int n) {
* n : number of bytes to skip
*/
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;
}

View File

@@ -40,7 +40,7 @@ opj_image_t* OPJ_CALLCONV opj_image_create(int numcmpts, opj_image_cmptparm_t *c
image->color_space = clrspc;
image->numcomps = numcmpts;
/* 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) {
fprintf(stderr,"Unable to allocate memory for image.\n");
opj_image_destroy(image);

View File

@@ -32,6 +32,7 @@
*/
#include "opj_includes.h"
#include <assert.h>
/** @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) {
int len, i;
int n_comps;
opj_cio_t *cio = j2k->cio;
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)) {
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);
return;
}
n_comps = (len - 36 - 2 ) / 3;
assert( (len - 36 - 2 ) % 3 == 0 );
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
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 */
cp->exp_comps = image->numcomps;
}
#else
(void)len;
#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));
for (i = 0; i < image->numcomps; i++) {
int tmp, w, h;
int tmp;
tmp = cio_read(cio, 1); /* Ssiz_i */
image->comps[i].prec = (tmp & 0x7f) + 1;
image->comps[i].sgnd = tmp >> 7;
@@ -506,9 +536,11 @@ static void j2k_read_siz(opj_j2k_t *j2k) {
}
#endif /* USE_JPWL */
/* TODO: unused ? */
w = int_ceildiv(image->x1 - image->x0, image->comps[i].dx);
h = int_ceildiv(image->y1 - image->y0, image->comps[i].dy);
/* prevent division by zero */
if (!(image->comps[i].dx * 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].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->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
if (j2k->cp->correct) {
/* 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;
len = cio_read(cio, 2); /* Lcod */
(void)len;
tcp->csty = cio_read(cio, 1); /* Scod */
tcp->prg = (OPJ_PROG_ORDER)cio_read(cio, 1); /* SGcod (A) */
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;
len = cio_read(cio, 2); /* Lcoc */
(void)len;
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 */
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 ,
"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);
/* edf_c2_1013627.jp2 */
numbands = 1;
}
#endif /* USE_JPWL */
@@ -1004,9 +1055,16 @@ static void j2k_read_qcc(opj_j2k_t *j2k) {
/* keep your private count of tiles */
backup_compno++;
};
}
#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));
}
@@ -1052,6 +1110,15 @@ static void j2k_read_poc(opj_j2k_t *j2k) {
len = cio_read(cio, 2); /* Lpoc */
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++) {
opj_poc_t *poc;
poc = &tcp->pocs[i];
@@ -1074,9 +1141,12 @@ static void j2k_read_crg(opj_j2k_t *j2k) {
int numcomps = j2k->image->numcomps;
len = cio_read(cio, 2); /* Lcrg */
(void)len;
for (i = 0; i < numcomps; i++) {
Xcrg_i = cio_read(cio, 2); /* Xcrg_i */
(void)Xcrg_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 */
Ztlm = cio_read(cio, 1); /* Ztlm */
(void)Ztlm;
Stlm = cio_read(cio, 1); /* Stlm */
ST = ((Stlm >> 4) & 0x01) + ((Stlm >> 4) & 0x02);
SP = (Stlm >> 6) & 0x01;
tile_tlm = (len - 4) / ((SP + 1) * 2 + ST);
for (i = 0; i < tile_tlm; i++) {
Ttlm_i = cio_read(cio, ST); /* Ttlm_i */
(void)Ttlm_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 */
Zplm = cio_read(cio, 1); /* Zplm */
(void)Zplm;
len -= 3;
while (len > 0) {
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 */
Zplt = cio_read(cio, 1); /* Zplt */
(void)Zplt;
for (i = len - 3; i > 0; i--) {
add = cio_read(cio, 1);
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;
len = cio_read(cio, 2);
(void)len;
tileno = cio_read(cio, 2);
#ifdef USE_JPWL
@@ -1513,26 +1589,14 @@ static void j2k_read_sod(opj_j2k_t *j2k) {
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_ptr = data; /* store in case of failure */
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];
for (i = 0; i < len; i++) {
@@ -1572,8 +1636,10 @@ static void j2k_read_rgn(opj_j2k_t *j2k) {
int numcomps = j2k->image->numcomps;
len = cio_read(cio, 2); /* Lrgn */
(void)len;
compno = cio_read(cio, numcomps <= 256 ? 1 : 2); /* Crgn */
roisty = cio_read(cio, 1); /* Srgn */
(void)roisty;
#ifdef USE_JPWL
if (j2k->cp->correct) {
@@ -1590,6 +1656,13 @@ static void j2k_read_rgn(opj_j2k_t *j2k) {
};
#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 */
}
@@ -1620,6 +1693,7 @@ static void j2k_read_eoc(opj_j2k_t *j2k) {
{
tileno = j2k->cp->tileno[i];
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]);
j2k->tile_data[tileno] = NULL;
tcd_free_decode_tile(tcd, i);
@@ -1799,8 +1873,11 @@ void j2k_destroy_decompress(opj_j2k_t *j2k) {
if(j2k->cp != NULL) {
for (i = 0; i < j2k->cp->tileno_size; i++) {
int tileno = j2k->cp->tileno[i];
opj_free(j2k->tile_data[tileno]);
j2k->tile_data[tileno] = NULL;
if( tileno != -1 )
{
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) {
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) {

View File

@@ -30,6 +30,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include "opj_includes.h"
#include <assert.h>
/** @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) {
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;
@@ -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)
{
opj_jp2_cdef_info_t *info;
int color_space;
unsigned short i, n, cn, typ, asoc, acn;
color_space = image->color_space;
info = color->jp2_cdef->info;
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;
cn = info[i].cn; typ = info[i].typ; acn = asoc - 1;
(void)typ;
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");
return OPJ_FALSE;
}
if (box.length <= 8) return OPJ_FALSE;
cio_skip(cio, box.length - 8);
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 (box.length <= 8) return OPJ_FALSE;
cio_seek(cio, box.init_pos + 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 (box.length <= 8) return OPJ_FALSE;
cio_seek(cio, box.init_pos + 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 (box.length <= 8) return OPJ_FALSE;
cio_seek(cio, box.init_pos + 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 (box.length <= 8) return OPJ_FALSE;
cio_seek(cio, box.init_pos + 8);
cio_skip(cio, box.length - 8);
}
if( jp2_read_boxhdr(cinfo, cio, &box) == OPJ_FALSE ) return OPJ_FALSE;
continue;
}
if (box.length <= 8) return OPJ_FALSE;
cio_seek(cio, box.init_pos + 8);
cio_skip(cio, box.length - 8);
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() */
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_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 (!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 */
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->minversion = cio_read(cio, 4); /* MinV */
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));
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 {
if(JP2_JP2C != box.type) {
if (box.length <= 8) return OPJ_FALSE;
cio_skip(cio, box.length - 8);
if( jp2_read_boxhdr(cinfo, cio, &box) == OPJ_FALSE ) return OPJ_FALSE;
}
} while(JP2_JP2C != box.type);
*j2k_codestream_offset = cio_tell(cio);
if (box.length <= 8) return OPJ_FALSE;
*j2k_codestream_length = box.length - 8;
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 = (opj_jp2_t*)opj_malloc(sizeof(opj_jp2_t));
if(jp2) {
memset(jp2, 0, sizeof(opj_jp2_t));
jp2->cinfo = cinfo;
/* create the J2K codec */
jp2->j2k = j2k_create_compress(cinfo);

View File

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

View File

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

View File

@@ -194,7 +194,7 @@ int main(){
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 (i = 0; i < 256; ++i) {
int orient = j;
@@ -215,7 +215,7 @@ int main(){
}
printf("%i\n};\n\n", lut_ctxno_zc[1023]);
// lut_ctxno_sc
/* lut_ctxno_sc */
printf("static char lut_ctxno_sc[256] = {\n ");
for (i = 0; i < 255; ++i) {
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));
// lut_spb
/* lut_spb */
printf("static char lut_spb[256] = {\n ");
for (i = 0; i < 255; ++i) {
printf("%i, ", t1_init_spb(i << 4));

View File

@@ -30,6 +30,7 @@
*/
#include "opj_includes.h"
#include <assert.h>
/** @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 layno = pi->layno; /* quality layer value */
opj_tcd_resolution_t* res = &tile->comps[compno].resolutions[resno];
unsigned char *hd = NULL;
int present;
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) {
for (bandno = 0; bandno < res->numbands; bandno++) {
opj_tcd_band_t *band = &res->bands[bandno];

View File

@@ -32,6 +32,7 @@
#define _ISOC99_SOURCE /* lrintf is C99 */
#include "opj_includes.h"
#include <assert.h>
void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t * img) {
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;
cbgheightexpn = pdy - 1;
}
(void)brcbgyend;
(void)brcbgxend;
cblkwidthexpn = int_min(tccp->cblkw, cbgwidthexpn);
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;
cbgheightexpn = pdy - 1;
}
(void)brcbgyend;
(void)brcbgxend;
cblkwidthexpn = int_min(tccp->cblkw, cbgwidthexpn);
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;
cbgheightexpn = pdy - 1;
}
(void)brcbgyend;
(void)brcbgxend;
cblkwidthexpn = int_min(tccp->cblkw, cbgwidthexpn);
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) {
eof = 1;
opj_event_msg(tcd->cinfo, EVT_ERROR, "tcd_decode: incomplete bistream\n");
return OPJ_FALSE;
}
/*------------------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)
{
opj_event_msg(tcd->cinfo, EVT_ERROR, "Out of memory\n");
t1_destroy(t1);
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);
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) {
mct_decode(
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 w = imagec->w;
int i, j;
int offset_x = int_ceildivpow2(imagec->x0, 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){
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) {
int v = tilec->data[i - res->x0 + (j - res->y0) * tw];
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);
}
}
@@ -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];
int v = lrintf(tmp);
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);
}
}

View File

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

View File

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

View File

@@ -11,14 +11,15 @@ INCLUDE_DIRECTORIES(
# First thing define the common source:
SET(comparePGXimages_SRCS comparePGXimages.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
${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
SET(compareRAWimages_SRCS compareRAWimages.c
${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
if(NOT USE_SYSTEM_GETOPT)
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)
list(APPEND compareRAWimages_SRCS ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
endif()
ADD_EXECUTABLE(comparePGXimages ${comparePGXimages_SRCS})
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(p "${CMAKE_CURRENT_BINARY_DIR}/jpip.dat")
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)
ENDIF(JPIP_SERVER)
ENDIF(BUILD_JPIP)

View File

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

View File

@@ -166,8 +166,8 @@ FOREACH(OPJ_TEST_CMD_LINE ${OPJ_TEST_CMD_LINE_LIST})
math(EXPR IT_TEST_ENC "${IT_TEST_ENC}+1" )
# Encode an image into the jpeg2000 format
ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode
${EXECUTABLE_OUTPUT_PATH}/image_to_j2k
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode
COMMAND image_to_j2k
${CMD_ARG_LIST_2}
)
@@ -176,8 +176,8 @@ FOREACH(OPJ_TEST_CMD_LINE ${OPJ_TEST_CMD_LINE_LIST})
ELSE(FAILED_TEST_FOUND)
# Dump the encoding file
ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-dump
${EXECUTABLE_OUTPUT_PATH}/j2k_dump
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-dump
COMMAND j2k_dump
-i ${OUTPUT_FILENAME}
-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)
# Compare the dump file with the baseline
ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dump2base
${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dump2base
COMMAND compare_dump_files
-b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-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
IF (KDU_EXPAND_EXECUTABLE)
ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-decode-ref
${KDU_EXPAND_EXECUTABLE}
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-decode-ref
COMMAND ${KDU_EXPAND_EXECUTABLE}
-i ${OUTPUT_FILENAME}
-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)
# 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
${EXECUTABLE_OUTPUT_PATH}/compareRAWimages
ADD_TEST(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dec-ref-out2base
COMMAND compareRAWimages
-b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${IT_TEST_ENC}.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" )
# Decode the input image
ADD_TEST(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode
${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
ADD_TEST(NAME NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode
COMMAND j2k_to_image
${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)
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
# can output png diff files if necesary
# ADD_TEST(NR-${filename}-compare2base
# ${EXECUTABLE_OUTPUT_PATH}/comparePGXimages
# ADD_TEST(NAME NR-${filename}-compare2base
# COMMAND comparePGXimages
# -b ${BASELINE_NR}/opj_${filenameRef}
# -t ${TEMP}/${filename}.pgx
# -n ${nbComponents}
@@ -254,15 +259,15 @@ FOREACH(OPJ_TEST_CMD_LINE ${OPJ_TEST_CMD_LINE_LIST})
# NR-${filename}-decode)
# Dump the input image
ADD_TEST(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-dump
${EXECUTABLE_OUTPUT_PATH}/j2k_dump
ADD_TEST(NAME NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-dump
COMMAND j2k_dump
-i ${INPUT_FILENAME}
-o ${TEMP}/${INPUT_FILENAME_NAME}.txt
)
# Compare the dump output with the baseline
ADD_TEST(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-compare_dump2base
${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
ADD_TEST(NAME NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-compare_dump2base
COMMAND compare_dump_files
-b ${BASELINE_NR}/opj_${INPUT_FILENAME_NAME_WE}.txt
-t ${TEMP}/${INPUT_FILENAME_NAME}.txt
)

View 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()

View 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

View File

@@ -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@/_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@/broken.jp2 -o @TEMP_PATH@/broken.jp2.pgx
j2k_to_image -i @INPUT_NR_PATH@/broken2.jp2 -o @TEMP_PATH@/broken2.jp2.pgx
j2k_to_image -i @INPUT_NR_PATH@/broken3.jp2 -o @TEMP_PATH@/broken3.jp2.pgx
j2k_to_image -i @INPUT_NR_PATH@/broken4.jp2 -o @TEMP_PATH@/broken4.jp2.pgx
# The 4 following tests should failed (kakadu indicates that they are corrupted)
!j2k_to_image -i @INPUT_NR_PATH@/broken.jp2 -o @TEMP_PATH@/broken.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/broken2.jp2 -o @TEMP_PATH@/broken2.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/broken3.jp2 -o @TEMP_PATH@/broken3.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/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@/buxI.j2k -o @TEMP_PATH@/buxI.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@/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
# 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
# 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
# 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
# issue 188
j2k_to_image -i @INPUT_NR_PATH@/issue188_beach_64bitsbox.jp2 -o @TEMP_PATH@/issue188_beach_64bitsbox.jp2.pgx
# issue 206
j2k_to_image -i @INPUT_NR_PATH@/issue206_image-000.jp2 -o @TEMP_PATH@/issue206_image-000.jp2.pgx
# issue 205
j2k_to_image -i @INPUT_NR_PATH@/issue205.jp2 -o @TEMP_PATH@/issue205.jp2.pgx
# issue 225 (sumatrapdf)
!j2k_to_image -i @INPUT_NR_PATH@/451.pdf.SIGSEGV.5b5.3723.jp2 -o @TEMP_PATH@/451.pdf.SIGSEGV.5b5.3723.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/1888.pdf.asan.35.988.jp2 -o @TEMP_PATH@/1888.pdf.asan.35.988.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/2539.pdf.SIGFPE.706.1712.jp2 -o @TEMP_PATH@/2539.pdf.SIGFPE.706.1712.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/2236.pdf.SIGSEGV.398.1376.jp2 -o @TEMP_PATH@/2236.pdf.SIGSEGV.398.1376.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/1336.pdf.asan.47.376.jp2 -o @TEMP_PATH@/1336.pdf.asan.47.376.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/1851.pdf.SIGSEGV.ce9.948.jp2 -o @TEMP_PATH@/1851.pdf.SIGSEGV.ce9.948.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/4149.pdf.SIGSEGV.cf7.3501.jp2 -o @TEMP_PATH@/4149.pdf.SIGSEGV.cf7.3501.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/4035.pdf.SIGSEGV.d8b.3375.jp2 -o @TEMP_PATH@/4035.pdf.SIGSEGV.d8b.3375.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/2977.pdf.asan.67.2198.jp2 -o @TEMP_PATH@/2977.pdf.asan.67.2198.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/451.pdf.SIGSEGV.ce9.3723.jp2 -o @TEMP_PATH@/451.pdf.SIGSEGV.ce9.3723.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/3635.pdf.asan.77.2930.jp2 -o @TEMP_PATH@/3635.pdf.asan.77.2930.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/1802.pdf.SIGSEGV.36e.894.jp2 -o @TEMP_PATH@/1802.pdf.SIGSEGV.36e.894.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/451.pdf.SIGSEGV.f4c.3723.jp2 -o @TEMP_PATH@/451.pdf.SIGSEGV.f4c.3723.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/2.pdf.SIGFPE.706.1112.jp2 -o @TEMP_PATH@/2.pdf.SIGFPE.706.1112.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2 -o @TEMP_PATH@/147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2 -o @TEMP_PATH@/4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2
# issue 228 (16bits/lossy)
j2k_to_image -i @INPUT_NR_PATH@/issue228.j2k -o @TEMP_PATH@/issue228.j2k.pgx
# issue 229
!j2k_to_image -i @INPUT_NR_PATH@/27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc -o @TEMP_PATH@27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc.pgx
!j2k_to_image -i @INPUT_NR_PATH@/26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2 -o @TEMP_PATH@26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2 -o @TEMP_PATH@0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc -o @TEMP_PATH@3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc.pgx
# issue 254 (loss in quality)
j2k_to_image -i @INPUT_NR_PATH@/issue254.jp2 -o @TEMP_PATH@/issue254.jp2.pgx
# issue 142
j2k_to_image -i @INPUT_NR_PATH@/issue142.j2k -o @TEMP_PATH@/issue142.j2k.pgx
# issue 134
j2k_to_image -i @INPUT_NR_PATH@/issue134.jp2 -o @TEMP_PATH@/issue134.jp2.pgx
# issue 135
j2k_to_image -i @INPUT_NR_PATH@/issue135.j2k -o @TEMP_PATH@/issue135.j2k.pgx
# issue 208
j2k_to_image -i @INPUT_NR_PATH@/issue208.jp2 -o @TEMP_PATH@/issue208.jp2.pgx
# issue 211
j2k_to_image -i @INPUT_NR_PATH@/issue211.jp2 -o @TEMP_PATH@/issue211.jp2.pgx
# issue 171
j2k_to_image -i @INPUT_NR_PATH@/issue171.jp2 -o @TEMP_PATH@/issue171.jp2.pgx
# issue 171
!j2k_to_image -i @INPUT_NR_PATH@/issue165.jp2 -o @TEMP_PATH@/issue165.jp2.pgx
#
!j2k_to_image -i @INPUT_NR_PATH@/broken.jpc -o @TEMP_PATH@/broken.jpc.pgx
# issue 226
j2k_to_image -i @INPUT_NR_PATH@/issue226.j2k -o @TEMP_PATH@/issue226.j2k.pgx
# issue 297
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1103421.jp2 -o @TEMP_PATH@/edf_c2_1103421.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1178956.jp2 -o @TEMP_PATH@/edf_c2_1178956.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1000290.jp2 -o @TEMP_PATH@/edf_c2_1000290.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1000691.jp2 -o @TEMP_PATH@/edf_c2_1000691.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_20.jp2 -o @TEMP_PATH@/edf_c2_20.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1377017.jp2 -o @TEMP_PATH@/edf_c2_1377017.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1002767.jp2 -o @TEMP_PATH@/edf_c2_1002767.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_10025.jp2 -o @TEMP_PATH@/edf_c2_10025.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1000234.jp2 -o @TEMP_PATH@/edf_c2_1000234.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_225881.jp2 -o @TEMP_PATH@/edf_c2_225881.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1000671.jp2 -o @TEMP_PATH@/edf_c2_1000671.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1013627.jp2 -o @TEMP_PATH@/edf_c2_1013627.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1015644.jp2 -o @TEMP_PATH@/edf_c2_1015644.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_101463.jp2 -o @TEMP_PATH@/edf_c2_101463.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1674177.jp2 -o @TEMP_PATH@/edf_c2_1674177.jp2.pgx
!j2k_to_image -i @INPUT_NR_PATH@/edf_c2_1673169.jp2 -o @TEMP_PATH@/edf_c2_1673169.jp2.pgx

View File

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

View File

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