From e4d8262727d94a7a38edc674cffaf1b5db20d8ca Mon Sep 17 00:00:00 2001 From: szukw000 Date: Tue, 30 Jun 2015 02:44:50 +0000 Subject: [PATCH] git commit -a --- CMakeLists.txt | 4 +- README.insource.md | 13 + src/bin/common/color.c | 7 + src/bin/jpwl/convert.c | 4 +- src/bin/jpwl/index.c | 2 +- src/bin/jpwl/opj_jpwl_compress.c | 4 +- src/bin/jpwl/opj_jpwl_decompress.c | 4 +- src/bin/mj2/CMakeLists.txt | 1 - src/bin/mj2/meta_out.c | 2 +- src/bin/mj2/mj2_to_metadata.c | 2 +- src/bin/mj2/opj_mj2_compress.c | 4 +- src/bin/mj2/opj_mj2_decompress.c | 4 +- src/bin/mj2/opj_mj2_extract.c | 2 +- src/bin/mj2/opj_mj2_wrap.c | 2 +- src/lib/openjpwl/jpwl.c | 2 +- src/lib/openjpwl/jpwl_lib.c | 2 +- src/lib/openmj2/CMakeLists.txt | 11 + src/lib/openmj2/bio.c | 2 +- src/lib/openmj2/cio.c | 2 +- src/lib/openmj2/dwt.c | 2 +- src/lib/openmj2/event.c | 2 +- src/lib/openmj2/image.c | 2 +- src/lib/openmj2/j2k.c | 2 +- src/lib/openmj2/j2k_lib.c | 2 +- src/lib/openmj2/jp2.c | 2 +- src/lib/openmj2/mct.c | 2 +- src/lib/openmj2/mj2.c | 2 +- src/lib/openmj2/mj2_apps_config.h.cmake.in | 15 + src/lib/openmj2/mj2_config_private.h.cmake.in | 31 + src/lib/openmj2/mj2_convert.c | 2 +- src/lib/openmj2/mj2_includes.h | 142 +++ src/lib/openmj2/mj2_openjpeg.h | 924 ++++++++++++++++++ src/lib/openmj2/mqc.c | 2 +- src/lib/openmj2/openjpeg.c | 4 +- src/lib/openmj2/pi.c | 2 +- src/lib/openmj2/raw.c | 2 +- src/lib/openmj2/t1.c | 2 +- src/lib/openmj2/t2.c | 2 +- src/lib/openmj2/tcd.c | 2 +- src/lib/openmj2/tgt.c | 2 +- 40 files changed, 1183 insertions(+), 39 deletions(-) create mode 100644 README.insource.md create mode 100644 src/lib/openmj2/mj2_apps_config.h.cmake.in create mode 100644 src/lib/openmj2/mj2_config_private.h.cmake.in create mode 100644 src/lib/openmj2/mj2_includes.h create mode 100644 src/lib/openmj2/mj2_openjpeg.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 79f66c35..12455852 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -192,7 +192,9 @@ if(CMAKE_COMPILER_IS_GNUCC) # Do not use ffast-math for all build, it would produce incorrect results, only set for release: set(CMAKE_C_FLAGS_RELEASE "-ffast-math ${CMAKE_C_FLAGS_RELEASE}") endif() - +if(UNIX) + set(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}") +endif() #----------------------------------------------------------------------------- # opj_config.h generation (1/2) diff --git a/README.insource.md b/README.insource.md new file mode 100644 index 00000000..ce73bdd3 --- /dev/null +++ b/README.insource.md @@ -0,0 +1,13 @@ +**This patch allows to compile OPENJPEG out-out-source and in-source** + +It has been compiled on + +* Linux SLACKWARE-14.x 64-Bit OK +* PPC64 Debian Jessie 8.1.0 OK +* RaspberryPi OK +* Windows7 64-Bit OK + +Redundant files are: + +* OPENJPEG/src/lib/openmj2/openjpeg.h +* OPENJPEG/src/lib/openmj2/opj_includes.h diff --git a/src/bin/common/color.c b/src/bin/common/color.c index 598a080d..191f7032 100644 --- a/src/bin/common/color.c +++ b/src/bin/common/color.c @@ -41,8 +41,15 @@ #include #include +#ifdef OPJ_USE_LEGACY +#include "mj2_apps_config.h" +#include "mj2_openjpeg.h" +#define OPJ_CLRSPC_GRAY CLRSPC_GRAY +#define OPJ_CLRSPC_SRGB CLRSPC_SRGB +#else #include "opj_apps_config.h" #include "openjpeg.h" +#endif #include "color.h" #ifdef OPJ_HAVE_LIBLCMS2 diff --git a/src/bin/jpwl/convert.c b/src/bin/jpwl/convert.c index 5d9219b3..7c0bb634 100644 --- a/src/bin/jpwl/convert.c +++ b/src/bin/jpwl/convert.c @@ -35,7 +35,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_apps_config.h" +#include "mj2_apps_config.h" #include #include @@ -51,7 +51,7 @@ #include #endif /* OPJ_HAVE_LIBPNG */ -#include "openjpeg.h" +#include "mj2_openjpeg.h" #include "convert.h" /* diff --git a/src/bin/jpwl/index.c b/src/bin/jpwl/index.c index 173e1633..0e51d7de 100644 --- a/src/bin/jpwl/index.c +++ b/src/bin/jpwl/index.c @@ -34,7 +34,7 @@ #include #include #include -#include "openjpeg.h" +#include "mj2_openjpeg.h" #include "index.h" /* ------------------------------------------------------------------------------------ */ diff --git a/src/bin/jpwl/opj_jpwl_compress.c b/src/bin/jpwl/opj_jpwl_compress.c index 7537b61d..72405a44 100644 --- a/src/bin/jpwl/opj_jpwl_compress.c +++ b/src/bin/jpwl/opj_jpwl_compress.c @@ -55,8 +55,8 @@ #include #endif /* _WIN32 */ -#include "opj_apps_config.h" -#include "openjpeg.h" +#include "mj2_apps_config.h" +#include "mj2_openjpeg.h" #include "opj_getopt.h" #include "convert.h" #include "index.h" diff --git a/src/bin/jpwl/opj_jpwl_decompress.c b/src/bin/jpwl/opj_jpwl_decompress.c index 3e4ca23d..b572d3a8 100644 --- a/src/bin/jpwl/opj_jpwl_decompress.c +++ b/src/bin/jpwl/opj_jpwl_decompress.c @@ -55,8 +55,8 @@ #define _strnicmp strncasecmp #endif /* _WIN32 */ -#include "opj_apps_config.h" -#include "openjpeg.h" +#include "mj2_apps_config.h" +#include "mj2_openjpeg.h" #include "opj_getopt.h" #include "convert.h" #include "index.h" diff --git a/src/bin/mj2/CMakeLists.txt b/src/bin/mj2/CMakeLists.txt index 78ad7543..f3406828 100644 --- a/src/bin/mj2/CMakeLists.txt +++ b/src/bin/mj2/CMakeLists.txt @@ -12,7 +12,6 @@ endif() # Headers file are located here: include_directories( - ${OPENJPEG_BINARY_DIR}/src/lib/openjp2 # opj_config.h ${OPENJPEG_BINARY_DIR}/src/bin/common # opj_apps_config.h ${OPENJPEG_SOURCE_DIR}/src/lib/openmj2 ${OPENJPEG_SOURCE_DIR}/src/bin/common diff --git a/src/bin/mj2/meta_out.c b/src/bin/mj2/meta_out.c index b6795045..2fd55fdb 100644 --- a/src/bin/mj2/meta_out.c +++ b/src/bin/mj2/meta_out.c @@ -14,7 +14,7 @@ can be bound by the Open JPEG open-source license and disclaimer, expressed else #include /* for time functions */ -#include "opj_includes.h" +#include "mj2_includes.h" #include "mj2.h" #include diff --git a/src/bin/mj2/mj2_to_metadata.c b/src/bin/mj2/mj2_to_metadata.c index 489f19cb..02edc250 100644 --- a/src/bin/mj2/mj2_to_metadata.c +++ b/src/bin/mj2/mj2_to_metadata.c @@ -11,7 +11,7 @@ Except for copyright, inclusion of the code within Open JPEG for distribution an can be bound by the Open JPEG open-source license and disclaimer, expressed elsewhere. */ -#include "opj_includes.h" +#include "mj2_includes.h" #include "mj2.h" #include "mj2_to_metadata.h" diff --git a/src/bin/mj2/opj_mj2_compress.c b/src/bin/mj2/opj_mj2_compress.c index afe37679..65708589 100644 --- a/src/bin/mj2/opj_mj2_compress.c +++ b/src/bin/mj2/opj_mj2_compress.c @@ -29,8 +29,8 @@ #include #include -#include "opj_apps_config.h" -#include "openjpeg.h" +#include "mj2_apps_config.h" +#include "mj2_openjpeg.h" #include "j2k_lib.h" #include "cio.h" #include "j2k.h" diff --git a/src/bin/mj2/opj_mj2_decompress.c b/src/bin/mj2/opj_mj2_decompress.c index 086918c7..62d86126 100644 --- a/src/bin/mj2/opj_mj2_decompress.c +++ b/src/bin/mj2/opj_mj2_decompress.c @@ -29,8 +29,8 @@ #include #include -#include "opj_apps_config.h" -#include "openjpeg.h" +#include "mj2_apps_config.h" +#include "mj2_openjpeg.h" #include "j2k_lib.h" #include "cio.h" #include "j2k.h" diff --git a/src/bin/mj2/opj_mj2_extract.c b/src/bin/mj2/opj_mj2_extract.c index 25e6b79b..f990f9de 100644 --- a/src/bin/mj2/opj_mj2_extract.c +++ b/src/bin/mj2/opj_mj2_extract.c @@ -35,7 +35,7 @@ #include #include -#include "openjpeg.h" +#include "mj2_openjpeg.h" #include "cio.h" #include "j2k.h" #include "jp2.h" diff --git a/src/bin/mj2/opj_mj2_wrap.c b/src/bin/mj2/opj_mj2_wrap.c index 7daa147f..9c985ec2 100644 --- a/src/bin/mj2/opj_mj2_wrap.c +++ b/src/bin/mj2/opj_mj2_wrap.c @@ -35,7 +35,7 @@ #include #include -#include "openjpeg.h" +#include "mj2_openjpeg.h" #include "cio.h" #include "j2k.h" #include "jp2.h" diff --git a/src/lib/openjpwl/jpwl.c b/src/lib/openjpwl/jpwl.c index 79d0e04c..5b84523c 100644 --- a/src/lib/openjpwl/jpwl.c +++ b/src/lib/openjpwl/jpwl.c @@ -34,7 +34,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" #ifdef USE_JPWL diff --git a/src/lib/openjpwl/jpwl_lib.c b/src/lib/openjpwl/jpwl_lib.c index 772c8db3..5d6fefb7 100644 --- a/src/lib/openjpwl/jpwl_lib.c +++ b/src/lib/openjpwl/jpwl_lib.c @@ -36,7 +36,7 @@ #ifdef USE_JPWL -#include "opj_includes.h" +#include "mj2_includes.h" #include /** Minimum and maximum values for the double->pfp conversion */ diff --git a/src/lib/openmj2/CMakeLists.txt b/src/lib/openmj2/CMakeLists.txt index 775c9318..419fe77c 100644 --- a/src/lib/openmj2/CMakeLists.txt +++ b/src/lib/openmj2/CMakeLists.txt @@ -1,6 +1,17 @@ # openmj2: set(OPENMJ2_LIBRARY_NAME openmj2) +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/mj2_apps_config.h.cmake.in + ${CMAKE_CURRENT_SOURCE_DIR}/mj2_apps_config.h + @ONLY + ) +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/mj2_config_private.h.cmake.in + ${CMAKE_CURRENT_SOURCE_DIR}/mj2_config_private.h + @ONLY + ) + include_directories( ${OPENJPEG_BINARY_DIR}/src/lib/openjp2 # opj_config.h ) diff --git a/src/lib/openmj2/bio.c b/src/lib/openmj2/bio.c index a4f983d3..5892a469 100644 --- a/src/lib/openmj2/bio.c +++ b/src/lib/openmj2/bio.c @@ -35,7 +35,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" /** @defgroup BIO BIO - Individual bit input-output stream */ /*@{*/ diff --git a/src/lib/openmj2/cio.c b/src/lib/openmj2/cio.c index 51ea135d..b845679d 100644 --- a/src/lib/openmj2/cio.c +++ b/src/lib/openmj2/cio.c @@ -35,7 +35,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" /* ----------------------------------------------------------------------- */ diff --git a/src/lib/openmj2/dwt.c b/src/lib/openmj2/dwt.c index 178e4d02..b0db7405 100644 --- a/src/lib/openmj2/dwt.c +++ b/src/lib/openmj2/dwt.c @@ -41,7 +41,7 @@ #include #endif -#include "opj_includes.h" +#include "mj2_includes.h" /** @defgroup DWT DWT - Implementation of a discrete wavelet transform */ /*@{*/ diff --git a/src/lib/openmj2/event.c b/src/lib/openmj2/event.c index 0210ed68..35718ee7 100644 --- a/src/lib/openmj2/event.c +++ b/src/lib/openmj2/event.c @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" /* ========================================================== Utility functions diff --git a/src/lib/openmj2/image.c b/src/lib/openmj2/image.c index 18d0cac4..1d39ece2 100644 --- a/src/lib/openmj2/image.c +++ b/src/lib/openmj2/image.c @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" opj_image_t* opj_image_create0(void) { opj_image_t *image = (opj_image_t*)opj_calloc(1, sizeof(opj_image_t)); diff --git a/src/lib/openmj2/j2k.c b/src/lib/openmj2/j2k.c index f31937a4..c2c1051c 100644 --- a/src/lib/openmj2/j2k.c +++ b/src/lib/openmj2/j2k.c @@ -37,7 +37,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" /** @defgroup J2K J2K - JPEG-2000 codestream reader/writer */ /*@{*/ diff --git a/src/lib/openmj2/j2k_lib.c b/src/lib/openmj2/j2k_lib.c index 1359812f..9355ed4f 100644 --- a/src/lib/openmj2/j2k_lib.c +++ b/src/lib/openmj2/j2k_lib.c @@ -36,7 +36,7 @@ #include #include #endif /* _WIN32 */ -#include "opj_includes.h" +#include "mj2_includes.h" double OPJ_CALLCONV opj_clock(void) { #ifdef _WIN32 diff --git a/src/lib/openmj2/jp2.c b/src/lib/openmj2/jp2.c index bb46005a..b55bada1 100644 --- a/src/lib/openmj2/jp2.c +++ b/src/lib/openmj2/jp2.c @@ -35,7 +35,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" /** @defgroup JP2 JP2 - JPEG-2000 file format reader/writer */ /*@{*/ diff --git a/src/lib/openmj2/mct.c b/src/lib/openmj2/mct.c index e507a781..90a839d7 100644 --- a/src/lib/openmj2/mct.c +++ b/src/lib/openmj2/mct.c @@ -39,7 +39,7 @@ #include #endif -#include "opj_includes.h" +#include "mj2_includes.h" /* */ /* This table contains the norms of the basis function of the reversible MCT. */ diff --git a/src/lib/openmj2/mj2.c b/src/lib/openmj2/mj2.c index b9034a30..10243ba3 100644 --- a/src/lib/openmj2/mj2.c +++ b/src/lib/openmj2/mj2.c @@ -31,7 +31,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" #include "mj2.h" /** @defgroup JP2 JP2 - JPEG-2000 file format reader/writer */ diff --git a/src/lib/openmj2/mj2_apps_config.h.cmake.in b/src/lib/openmj2/mj2_apps_config.h.cmake.in new file mode 100644 index 00000000..45a85e7e --- /dev/null +++ b/src/lib/openmj2/mj2_apps_config.h.cmake.in @@ -0,0 +1,15 @@ +#include "mj2_config_private.h" + +/* create mj2_apps_config.h for CMake */ + +#cmakedefine OPJ_HAVE_LIBPNG @HAVE_LIBPNG@ +#cmakedefine OPJ_HAVE_PNG_H @HAVE_PNG_H@ +#cmakedefine OPJ_HAVE_LIBTIFF @HAVE_LIBTIFF@ +#cmakedefine OPJ_HAVE_TIFF_H @HAVE_TIFF_H@ + +#cmakedefine OPJ_HAVE_LIBLCMS1 +#cmakedefine OPJ_HAVE_LIBLCMS2 +#cmakedefine OPJ_HAVE_LCMS1_H +#cmakedefine OPJ_HAVE_LCMS2_H + + diff --git a/src/lib/openmj2/mj2_config_private.h.cmake.in b/src/lib/openmj2/mj2_config_private.h.cmake.in new file mode 100644 index 00000000..ead059d7 --- /dev/null +++ b/src/lib/openmj2/mj2_config_private.h.cmake.in @@ -0,0 +1,31 @@ +/* create mj2_config_private.h for CMake */ +#cmakedefine OPJ_HAVE_INTTYPES_H @OPJ_HAVE_INTTYPES_H@ + +#define OPJ_PACKAGE_VERSION "@PACKAGE_VERSION@" + +/* Not used by openjp2*/ +/*#cmakedefine HAVE_MEMORY_H @HAVE_MEMORY_H@*/ +/*#cmakedefine HAVE_STDLIB_H @HAVE_STDLIB_H@*/ +/*#cmakedefine HAVE_STRINGS_H @HAVE_STRINGS_H@*/ +/*#cmakedefine HAVE_STRING_H @HAVE_STRING_H@*/ +/*#cmakedefine HAVE_SYS_STAT_H @HAVE_SYS_STAT_H@*/ +/*#cmakedefine HAVE_SYS_TYPES_H @HAVE_SYS_TYPES_H@ */ +/*#cmakedefine HAVE_UNISTD_H @HAVE_UNISTD_H@*/ + +#cmakedefine _LARGEFILE_SOURCE +#cmakedefine _LARGE_FILES +#cmakedefine _FILE_OFFSET_BITS @_FILE_OFFSET_BITS@ +#cmakedefine OPJ_HAVE_FSEEKO @OPJ_HAVE_FSEEKO@ + +/* Byte order. */ +/* All compilers that support Mac OS X define either __BIG_ENDIAN__ or +__LITTLE_ENDIAN__ to match the endianness of the architecture being +compiled for. This is not necessarily the same as the architecture of the +machine doing the building. In order to support Universal Binaries on +Mac OS X, we prefer those defines to decide the endianness. +On other platforms we use the result of the TRY_RUN. */ +#if !defined(__APPLE__) +#cmakedefine OPJ_BIG_ENDIAN +#elif defined(__BIG_ENDIAN__) +# define OPJ_BIG_ENDIAN +#endif diff --git a/src/lib/openmj2/mj2_convert.c b/src/lib/openmj2/mj2_convert.c index f2265094..2f784524 100644 --- a/src/lib/openmj2/mj2_convert.c +++ b/src/lib/openmj2/mj2_convert.c @@ -26,7 +26,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" #include "mj2_convert.h" /* ----------------------- */ diff --git a/src/lib/openmj2/mj2_includes.h b/src/lib/openmj2/mj2_includes.h new file mode 100644 index 00000000..add1e3ad --- /dev/null +++ b/src/lib/openmj2/mj2_includes.h @@ -0,0 +1,142 @@ +/* + * The copyright in this software is being made available under the 2-clauses + * BSD License, included below. This software may be subject to other third + * party and contributor rights, including patent rights, and no such rights + * are granted under this license. + * + * Copyright (c) 2005, Herve Drolon, FreeImage Team + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef OPJ_INCLUDES_H +#define OPJ_INCLUDES_H + +/* + ========================================================== + Standard includes used by the library + ========================================================== +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + ========================================================== + OpenJPEG interface + ========================================================== + */ +#include "mj2_openjpeg.h" + +/* + ========================================================== + OpenJPEG modules + ========================================================== +*/ + +/* Ignore GCC attributes if this is not GCC */ +#ifndef __GNUC__ + #define __attribute__(x) /* __attribute__(x) */ +#endif + +/* +The inline keyword is supported by C99 but not by C90. +Most compilers implement their own version of this keyword ... +*/ +#ifndef INLINE + #if defined(_MSC_VER) + #define INLINE __forceinline + #elif defined(__GNUC__) + #define INLINE __inline__ + #elif defined(__MWERKS__) + #define INLINE inline + #else + /* add other compilers here ... */ + #define INLINE + #endif /* defined() */ +#endif /* INLINE */ + +/* Are restricted pointers available? (C99) */ +#if (__STDC_VERSION__ != 199901L) + /* Not a C99 compiler */ + #ifdef __GNUC__ + #define restrict __restrict__ + #else + #define restrict /* restrict */ + #endif +#endif + +/* 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; + + _asm{ + fld f + fistp i + }; + + return i; +#endif +} +#endif + +#include "j2k_lib.h" +#include "opj_malloc.h" +#include "event.h" +#include "bio.h" +#include "cio.h" + +#include "image.h" +#include "j2k.h" +#include "jp2.h" +#include "jpt.h" + +#include "mqc.h" +#include "raw.h" +#include "bio.h" +#include "tgt.h" +#include "pi.h" +#include "tcd.h" +#include "t1.h" +#include "dwt.h" +#include "t2.h" +#include "mct.h" +#include "int.h" +#include "fix.h" + +/* JPWL>> */ +#ifdef USE_JPWL +#include "jpwl.h" +#endif /* USE_JPWL */ +/* <= 4 +#define OPJ_API __attribute__ ((visibility ("default"))) +#define OPJ_LOCAL __attribute__ ((visibility ("hidden"))) +#else +#define OPJ_API +#define OPJ_LOCAL +#endif +#define OPJ_CALLCONV +#else +#define OPJ_CALLCONV __stdcall +/* +The following ifdef block is the standard way of creating macros which make exporting +from a DLL simpler. All files within this DLL are compiled with the OPJ_EXPORTS +symbol defined on the command line. this symbol should not be defined on any project +that uses this DLL. This way any other project whose source files include this file see +OPJ_API functions as being imported from a DLL, wheras this DLL sees symbols +defined with this macro as being exported. +*/ +#if defined(OPJ_EXPORTS) || defined(DLL_EXPORT) +#define OPJ_API __declspec(dllexport) +#else +#define OPJ_API __declspec(dllimport) +#endif /* OPJ_EXPORTS */ +#endif /* !OPJ_STATIC || !_WIN32 */ + +typedef int opj_bool; +#define OPJ_TRUE 1 +#define OPJ_FALSE 0 + +/* Avoid compile-time warning because parameter is not used */ +#define OPJ_ARG_NOT_USED(x) (void)(x) +/* +========================================================== + Useful constant definitions +========================================================== +*/ + +#define OPJ_PATH_LEN 4096 /**< Maximum allowed size for filenames */ + +#define J2K_MAXRLVLS 33 /**< Number of maximum resolution level authorized */ +#define J2K_MAXBANDS (3*J2K_MAXRLVLS-2) /**< Number of maximum sub-band linked to number of resolution level */ + +/* UniPG>> */ +#define JPWL_MAX_NO_TILESPECS 16 /**< Maximum number of tile parts expected by JPWL: increase at your will */ +#define JPWL_MAX_NO_PACKSPECS 16 /**< Maximum number of packet parts expected by JPWL: increase at your will */ +#define JPWL_MAX_NO_MARKERS 512 /**< Maximum number of JPWL markers: increase at your will */ +#define JPWL_PRIVATEINDEX_NAME "jpwl_index_privatefilename" /**< index file name used when JPWL is on */ +#define JPWL_EXPECTED_COMPONENTS 3 /**< Expect this number of components, so you'll find better the first EPB */ +#define JPWL_MAXIMUM_TILES 8192 /**< Expect this maximum number of tiles, to avoid some crashes */ +#define JPWL_MAXIMUM_HAMMING 2 /**< Expect this maximum number of bit errors in marker id's */ +#define JPWL_MAXIMUM_EPB_ROOM 65450 /**< Expect this maximum number of bytes for composition of EPBs */ +/* < +
  • Error messages +
  • Warning messages +
  • Debugging messages + +*/ +typedef struct opj_event_mgr { + /** Error message callback if available, NULL otherwise */ + opj_msg_callback error_handler; + /** Warning message callback if available, NULL otherwise */ + opj_msg_callback warning_handler; + /** Debug message callback if available, NULL otherwise */ + opj_msg_callback info_handler; +} opj_event_mgr_t; + + +/* +========================================================== + codec typedef definitions +========================================================== +*/ + +/** +Progression order changes +*/ +typedef struct opj_poc { + /** Resolution num start, Component num start, given by POC */ + int resno0, compno0; + /** Layer num end,Resolution num end, Component num end, given by POC */ + int layno1, resno1, compno1; + /** Layer num start,Precinct num start, Precinct num end */ + int layno0, precno0, precno1; + /** Progression order enum*/ + OPJ_PROG_ORDER prg1,prg; + /** Progression order string*/ + char progorder[5]; + /** Tile number */ + int tile; + /** Start and end values for Tile width and height*/ + int tx0,tx1,ty0,ty1; + /** Start value, initialised in pi_initialise_encode*/ + int layS, resS, compS, prcS; + /** End value, initialised in pi_initialise_encode */ + int layE, resE, compE, prcE; + /** Start and end values of Tile width and height, initialised in pi_initialise_encode*/ + int txS,txE,tyS,tyE,dx,dy; + /** Temporary values for Tile parts, initialised in pi_create_encode */ + int lay_t, res_t, comp_t, prc_t,tx0_t,ty0_t; +} opj_poc_t; + +/** +Compression parameters +*/ +typedef struct opj_cparameters { + /** size of tile: tile_size_on = false (not in argument) or = true (in argument) */ + opj_bool tile_size_on; + /** XTOsiz */ + int cp_tx0; + /** YTOsiz */ + int cp_ty0; + /** XTsiz */ + int cp_tdx; + /** YTsiz */ + int cp_tdy; + /** allocation by rate/distortion */ + int cp_disto_alloc; + /** allocation by fixed layer */ + int cp_fixed_alloc; + /** add fixed_quality */ + int cp_fixed_quality; + /** fixed layer */ + int *cp_matrice; + /** comment for coding */ + char *cp_comment; + /** csty : coding style */ + int csty; + /** progression order (default LRCP) */ + OPJ_PROG_ORDER prog_order; + /** progression order changes */ + opj_poc_t POC[32]; + /** number of progression order changes (POC), default to 0 */ + int numpocs; + /** number of layers */ + int tcp_numlayers; + /** rates of layers */ + float tcp_rates[100]; + /** different psnr for successive layers */ + float tcp_distoratio[100]; + /** number of resolutions */ + int numresolution; + /** initial code block width, default to 64 */ + int cblockw_init; + /** initial code block height, default to 64 */ + int cblockh_init; + /** mode switch (cblk_style) */ + int mode; + /** 1 : use the irreversible DWT 9-7, 0 : use lossless compression (default) */ + int irreversible; + /** region of interest: affected component in [0..3], -1 means no ROI */ + int roi_compno; + /** region of interest: upshift value */ + int roi_shift; + /* number of precinct size specifications */ + int res_spec; + /** initial precinct width */ + int prcw_init[J2K_MAXRLVLS]; + /** initial precinct height */ + int prch_init[J2K_MAXRLVLS]; + + /**@name command line encoder parameters (not used inside the library) */ + /*@{*/ + /** input file name */ + char infile[OPJ_PATH_LEN]; + /** output file name */ + char outfile[OPJ_PATH_LEN]; + /** DEPRECATED. Index generation is now handeld with the opj_encode_with_info() function. Set to NULL */ + int index_on; + /** DEPRECATED. Index generation is now handeld with the opj_encode_with_info() function. Set to NULL */ + char index[OPJ_PATH_LEN]; + /** subimage encoding: origin image offset in x direction */ + int image_offset_x0; + /** subimage encoding: origin image offset in y direction */ + int image_offset_y0; + /** subsampling value for dx */ + int subsampling_dx; + /** subsampling value for dy */ + int subsampling_dy; + /** input file format 0: PGX, 1: PxM, 2: BMP 3:TIF*/ + int decod_format; + /** output file format 0: J2K, 1: JP2, 2: JPT */ + int cod_format; + /*@}*/ + +/* UniPG>> */ + /**@name JPWL encoding parameters */ + /*@{*/ + /** enables writing of EPC in MH, thus activating JPWL */ + opj_bool jpwl_epc_on; + /** error protection method for MH (0,1,16,32,37-128) */ + int jpwl_hprot_MH; + /** tile number of header protection specification (>=0) */ + int jpwl_hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]; + /** error protection methods for TPHs (0,1,16,32,37-128) */ + int jpwl_hprot_TPH[JPWL_MAX_NO_TILESPECS]; + /** tile number of packet protection specification (>=0) */ + int jpwl_pprot_tileno[JPWL_MAX_NO_PACKSPECS]; + /** packet number of packet protection specification (>=0) */ + int jpwl_pprot_packno[JPWL_MAX_NO_PACKSPECS]; + /** error protection methods for packets (0,1,16,32,37-128) */ + int jpwl_pprot[JPWL_MAX_NO_PACKSPECS]; + /** enables writing of ESD, (0=no/1/2 bytes) */ + int jpwl_sens_size; + /** sensitivity addressing size (0=auto/2/4 bytes) */ + int jpwl_sens_addr; + /** sensitivity range (0-3) */ + int jpwl_sens_range; + /** sensitivity method for MH (-1=no,0-7) */ + int jpwl_sens_MH; + /** tile number of sensitivity specification (>=0) */ + int jpwl_sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]; + /** sensitivity methods for TPHs (-1=no,0-7) */ + int jpwl_sens_TPH[JPWL_MAX_NO_TILESPECS]; + /*@}*/ +/* <> */ + /**@name JPWL decoding parameters */ + /*@{*/ + /** activates the JPWL correction capabilities */ + opj_bool jpwl_correct; + /** expected number of components */ + int jpwl_exp_comps; + /** maximum number of tiles */ + int jpwl_max_tiles; + /*@}*/ +/* <> */ +/** +Marker structure +*/ +typedef struct opj_marker_info_t { + /** marker type */ + unsigned short int type; + /** position in codestream */ + int pos; + /** length, marker val included */ + int len; +} opj_marker_info_t; +/* <> */ + /** number of markers */ + int marknum; + /** list of markers */ + opj_marker_info_t *marker; + /** actual size of markers array */ + int maxmarknum; +/* <cp. +@param dinfo decompressor handle +@param parameters decompression parameters +*/ +OPJ_API void OPJ_CALLCONV opj_setup_decoder(opj_dinfo_t *dinfo, opj_dparameters_t *parameters); +/** +Decode an image from a JPEG-2000 codestream +@param dinfo decompressor handle +@param cio Input buffer stream +@return Returns a decoded image if successful, returns NULL otherwise +*/ +OPJ_API opj_image_t* OPJ_CALLCONV opj_decode(opj_dinfo_t *dinfo, opj_cio_t *cio); + +/** +Decode an image from a JPEG-2000 codestream and extract the codestream information +@param dinfo decompressor handle +@param cio Input buffer stream +@param cstr_info Codestream information structure if needed afterwards, NULL otherwise +@return Returns a decoded image if successful, returns NULL otherwise +*/ +OPJ_API opj_image_t* OPJ_CALLCONV opj_decode_with_info(opj_dinfo_t *dinfo, opj_cio_t *cio, opj_codestream_info_t *cstr_info); +/** +Creates a J2K/JP2 compression structure +@param format Coder to select +@return Returns a handle to a compressor if successful, returns NULL otherwise +*/ +OPJ_API opj_cinfo_t* OPJ_CALLCONV opj_create_compress(OPJ_CODEC_FORMAT format); +/** +Destroy a compressor handle +@param cinfo compressor handle to destroy +*/ +OPJ_API void OPJ_CALLCONV opj_destroy_compress(opj_cinfo_t *cinfo); +/** +Set encoding parameters to default values, that means : +
      +
    • Lossless +
    • 1 tile +
    • Size of precinct : 2^15 x 2^15 (means 1 precinct) +
    • Size of code-block : 64 x 64 +
    • Number of resolutions: 6 +
    • No SOP marker in the codestream +
    • No EPH marker in the codestream +
    • No sub-sampling in x or y direction +
    • No mode switch activated +
    • Progression order: LRCP +
    • No index file +
    • No ROI upshifted +
    • No offset of the origin of the image +
    • No offset of the origin of the tiles +
    • Reversible DWT 5-3 +
    +@param parameters Compression parameters +*/ +OPJ_API void OPJ_CALLCONV opj_set_default_encoder_parameters(opj_cparameters_t *parameters); +/** +Setup the encoder parameters using the current image and using user parameters. +@param cinfo Compressor handle +@param parameters Compression parameters +@param image Input filled image +*/ +OPJ_API void OPJ_CALLCONV opj_setup_encoder(opj_cinfo_t *cinfo, opj_cparameters_t *parameters, opj_image_t *image); +/** +Encode an image into a JPEG-2000 codestream +3@param cinfo compressor handle +@param cio Output buffer stream +@param image Image to encode +@param index Depreacted -> Set to NULL. To extract index, used opj_encode_wci() +@return Returns true if successful, returns false otherwise +*/ +OPJ_API opj_bool OPJ_CALLCONV opj_encode(opj_cinfo_t *cinfo, opj_cio_t *cio, opj_image_t *image, char *index); +/** +Encode an image into a JPEG-2000 codestream and extract the codestream information +@param cinfo compressor handle +@param cio Output buffer stream +@param image Image to encode +@param cstr_info Codestream information structure if needed afterwards, NULL otherwise +@return Returns true if successful, returns false otherwise +*/ +OPJ_API opj_bool OPJ_CALLCONV opj_encode_with_info(opj_cinfo_t *cinfo, opj_cio_t *cio, opj_image_t *image, opj_codestream_info_t *cstr_info); +/** +Destroy Codestream information after compression or decompression +@param cstr_info Codestream information structure +*/ +OPJ_API void OPJ_CALLCONV opj_destroy_cstr_info(opj_codestream_info_t *cstr_info); + + +#ifdef __cplusplus +} +#endif + +#endif /* OPENJPEG_H */ diff --git a/src/lib/openmj2/mqc.c b/src/lib/openmj2/mqc.c index 0b561629..b8e11670 100644 --- a/src/lib/openmj2/mqc.c +++ b/src/lib/openmj2/mqc.c @@ -35,7 +35,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" /** @defgroup MQC MQC - Implementation of an MQ-Coder */ /*@{*/ diff --git a/src/lib/openmj2/openjpeg.c b/src/lib/openmj2/openjpeg.c index a2621f5d..e72a7b88 100644 --- a/src/lib/openmj2/openjpeg.c +++ b/src/lib/openmj2/openjpeg.c @@ -33,8 +33,8 @@ #include #endif /* _WIN32 */ -#include "opj_config_private.h" -#include "opj_includes.h" +#include "mj2_config_private.h" +#include "mj2_includes.h" /* ---------------------------------------------------------------------- */ #ifdef _WIN32 diff --git a/src/lib/openmj2/pi.c b/src/lib/openmj2/pi.c index a22078bb..8e98f20b 100644 --- a/src/lib/openmj2/pi.c +++ b/src/lib/openmj2/pi.c @@ -36,7 +36,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" /** @defgroup PI PI - Implementation of a packet iterator */ /*@{*/ diff --git a/src/lib/openmj2/raw.c b/src/lib/openmj2/raw.c index dd82d1fb..2a6b0f0c 100644 --- a/src/lib/openmj2/raw.c +++ b/src/lib/openmj2/raw.c @@ -33,7 +33,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" /* ========================================================== diff --git a/src/lib/openmj2/t1.c b/src/lib/openmj2/t1.c index af2d564d..08d61ada 100644 --- a/src/lib/openmj2/t1.c +++ b/src/lib/openmj2/t1.c @@ -36,7 +36,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" #include "t1_luts.h" /** @defgroup T1 T1 - Implementation of the tier-1 coding */ diff --git a/src/lib/openmj2/t2.c b/src/lib/openmj2/t2.c index 9762762f..d7c77b3f 100644 --- a/src/lib/openmj2/t2.c +++ b/src/lib/openmj2/t2.c @@ -35,7 +35,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" /** @defgroup T2 T2 - Implementation of a tier-2 coding */ /*@{*/ diff --git a/src/lib/openmj2/tcd.c b/src/lib/openmj2/tcd.c index 5eb5f4bb..ea8c4a62 100644 --- a/src/lib/openmj2/tcd.c +++ b/src/lib/openmj2/tcd.c @@ -37,7 +37,7 @@ */ #define _ISOC99_SOURCE /* lrintf is C99 */ -#include "opj_includes.h" +#include "mj2_includes.h" void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t * img) { int tileno, compno, resno, bandno, precno;/*, cblkno;*/ diff --git a/src/lib/openmj2/tgt.c b/src/lib/openmj2/tgt.c index d5d280d7..d3bfaa03 100644 --- a/src/lib/openmj2/tgt.c +++ b/src/lib/openmj2/tgt.c @@ -35,7 +35,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opj_includes.h" +#include "mj2_includes.h" /* ==========================================================