diff --git a/CMake/ImportJPEG2000.cmake b/CMake/ImportJPEG2000.cmake index 46d776bbc8711b8e103ce447780b1b6bc2698fa1..36929fd2487346f00d79e887d4e925325e43354b 100644 --- a/CMake/ImportJPEG2000.cmake +++ b/CMake/ImportJPEG2000.cmake @@ -35,6 +35,14 @@ ENDIF( OTB_USE_JPEG2000 ) # Check jpeg2000 support IF(OTB_COMPILE_JPEG2000) + + SET(OPENJPEG_SOURCE_DIR ${OTB_SOURCE_DIR}/Utilities/otbopenjpeg) + SET(OPENJPEG_BINARY_DIR ${OTB_BINARY_DIR}/Utilities/otbopenjpeg) + + SET(OPENJPEG_NAMESPACE "OTBOPENJPEG") + SET(OPJ_MANGLE_PREFIX "otbopenjpeg") + + ADD_DEFINITIONS(-DOTB_COMPILE_JPEG2000 -DUSE_OPJ_DEPRECATED) IF(NOT BUILD_SHARED_LIBS) ADD_DEFINITIONS(-DOPJ_STATIC) diff --git a/CMake/otbIncludeDirectories.cmake b/CMake/otbIncludeDirectories.cmake index 54cf7d4ca8a7cf52041b355821a323aa0adf7139..f7afeeee4eab796ebd8cdb461cd6729605c70dd0 100644 --- a/CMake/otbIncludeDirectories.cmake +++ b/CMake/otbIncludeDirectories.cmake @@ -99,8 +99,8 @@ ENDIF(NOT OTB_USE_EXTERNAL_OSSIM) IF(OTB_COMPILE_JPEG2000) SET(OTB_INCLUDE_DIRS_BUILD_TREE ${OTB_INCLUDE_DIRS_BUILD_TREE} - ${OTB_SOURCE_DIR}/Utilities/otbopenjpeg - ${OTB_SOURCE_DIR}/Utilities/otbopenjpeg/libopenjpeg) + ${OTB_SOURCE_DIR}/Utilities/otbopenjpeg/libopenjpeg + ${OTB_BINARY_DIR}/Utilities/otbopenjpeg) ENDIF(OTB_COMPILE_JPEG2000) IF(OTB_USE_PQXX) diff --git a/Code/IO/otbJPEG2000ImageIO.h b/Code/IO/otbJPEG2000ImageIO.h index 816411b627ba773c67a88d6518bbb071290d2e55..f3990388d57bcecf73ae986673f12273497d884c 100644 --- a/Code/IO/otbJPEG2000ImageIO.h +++ b/Code/IO/otbJPEG2000ImageIO.h @@ -26,7 +26,7 @@ extern "C" { -#include "otb_openjpeg.h" +#include "openjpeg.h" } namespace otb diff --git a/Utilities/CMakeLists.txt b/Utilities/CMakeLists.txt index fb05d78bf4f5e8b27db11fa0f631198584e71e04..38a854cdcf2890279568365863a44fab9cff0da3 100644 --- a/Utilities/CMakeLists.txt +++ b/Utilities/CMakeLists.txt @@ -30,8 +30,11 @@ ENDIF(NOT OTB_USE_EXTERNAL_LIBLAS) ENDIF(OTB_USE_LIBLAS) IF(OTB_COMPILE_JPEG2000) + SET(L_BUILD_TESTING BUILD_TESTING) + SET(BUILD_TESTING OFF) MESSAGE(STATUS "Configuring otbopenjpeg...") ADD_SUBDIRECTORY( otbopenjpeg ) + SET(BUILD_TESTING L_BUILD_TESTING) ENDIF(OTB_COMPILE_JPEG2000) diff --git a/Utilities/otbopenjpeg/CMakeLists.txt b/Utilities/otbopenjpeg/CMakeLists.txt index 47ebfdcd19886a7555275cb56210b529345594d1..e97525fc314b59490c30393e3e87a2366c384fb4 100644 --- a/Utilities/otbopenjpeg/CMakeLists.txt +++ b/Utilities/otbopenjpeg/CMakeLists.txt @@ -34,15 +34,26 @@ SET(OPENJPEG_VERSION "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}") SET(PACKAGE_VERSION "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}") + +# svn revision number of this openjpeg fork (used for .so versioning) +SET(OPENJPEG_SVN_REVISION "1029") +# patch number for OTB modifications applied on top of OPENJPEG_SVN_REVISION (used for .so versioning) +SET(OPENJPEG_OTB_PATCH "1") + +#SET(OPENJPEG_LIBRARY_PROPERTIES +# VERSION "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}" +# SOVERSION "${OPENJPEG_VERSION_MAJOR}" +#) + SET(OPENJPEG_LIBRARY_PROPERTIES - VERSION "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}" - SOVERSION "${OPENJPEG_VERSION_MAJOR}" + VERSION "${OPENJPEG_SVN_REVISION}.${OPENJPEG_OTB_PATCH}.0}" + SOVERSION "${OPENJPEG_SVN_REVISION}.${OPENJPEG_OTB_PATCH}" ) # -------------------------------------------------------------------------- # Path to additional CMake modules SET(CMAKE_MODULE_PATH - ${CMAKE_SOURCE_DIR}/CMake + ${OPENJPEG_SOURCE_DIR}/CMake ${CMAKE_MODULE_PATH}) # -------------------------------------------------------------------------- @@ -115,8 +126,8 @@ INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityC.cmake) #----------------------------------------------------------------------------- # Setup file for setting custom ctest vars CONFIGURE_FILE( - ${CMAKE_SOURCE_DIR}/CMake/CTestCustom.cmake.in - ${CMAKE_BINARY_DIR}/CTestCustom.cmake + ${OPENJPEG_SOURCE_DIR}/CMake/CTestCustom.cmake.in + ${OPENJPEG_BINARY_DIR}/CTestCustom.cmake @ONLY ) @@ -130,12 +141,21 @@ MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH) #----------------------------------------------------------------------------- # configure name mangling to allow multiple libraries to coexist # peacefully -IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in) -SET(MANGLE_PREFIX ${OPENJPEG_LIBRARY_NAME}) -CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in - ${CMAKE_CURRENT_BINARY_DIR}/openjpeg_mangle.h + +#SET(OPJ_MANGLE_PREFIX "" CACHE STRING "Prefix used to mangle all the symbols") +IF(OPJ_MANGLE_PREFIX) + SET(OPJ_USE_MANGLE_PREFIX ON) +ELSE(OPJ_MANGLE_PREFIX) + SET(OPJ_USE_MANGLE_PREFIX OFF) +ENDIF(OPJ_MANGLE_PREFIX) + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/openjpeg_mangle.h + @ONLY IMMEDIATE) + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle_private.h.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/openjpeg_mangle_private.h @ONLY IMMEDIATE) -ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in) #----------------------------------------------------------------------------- # pkgconfig support @@ -208,9 +228,9 @@ ADD_SUBDIRECTORY(libopenjpeg) #----------------------------------------------------------------------------- # Build Applications -OPTION(BUILD_CODEC "Build the CODEC executables" ON) -OPTION(BUILD_MJ2 "Build the MJ2 executables." OFF) -OPTION(BUILD_JPIP "Build the JPIP library and executables." OFF) +#OPTION(BUILD_CODEC "Build the CODEC executables" ON) +#OPTION(BUILD_MJ2 "Build the MJ2 executables." OFF) +#OPTION(BUILD_JPIP "Build the JPIP library and executables." OFF) IF(BUILD_CODEC OR BUILD_MJ2 OR BUILD_JPIP) OPTION(BUILD_THIRDPARTY "Build the thirdparty executables if it is needed" OFF) @@ -227,18 +247,18 @@ CONFIGURE_FILE("${OPENJPEG_SOURCE_DIR}/opj_config.h.cmake.in" #----------------------------------------------------------------------------- # Build JPWL-flavoured library and executables -OPTION(BUILD_JPWL "Build the JPWL library and executables" OFF) +#OPTION(BUILD_JPWL "Build the JPWL library and executables" OFF) #----------------------------------------------------------------------------- # Build DOCUMENTATION (not in ALL target and only if Doxygen is found) -OPTION(BUILD_DOC "Build the HTML documentation (with doxygen if available)." OFF) -IF(BUILD_DOC) - ADD_SUBDIRECTORY(doc) -ENDIF(BUILD_DOC) +#OPTION(BUILD_DOC "Build the HTML documentation (with doxygen if available)." OFF) +#IF(BUILD_DOC) +# ADD_SUBDIRECTORY(doc) +#ENDIF(BUILD_DOC) #----------------------------------------------------------------------------- # Buld Testing -OPTION(BUILD_TESTING "Build the tests." OFF) +#OPTION(BUILD_TESTING "Build the tests." OFF) IF(BUILD_TESTING) IF(BUILD_CODEC) ENABLE_TESTING() @@ -279,3 +299,16 @@ INSTALL( FILES CHANGES LICENSE DESTINATION ${OPENJPEG_INSTALL_DOC_DIR}) + + +#----------------------------------------------------------------------------- +# otb added +IF(NOT OTB_INSTALL_NO_DEVELOPMENT) + # Install OTB specifics includes files + + INSTALL(FILES otb_openjpeg.h otb_openjpeg_mangle.h + DESTINATION ${OTB_INSTALL_INCLUDE_DIR_CM24}/Utilities/otbopenjpeg + COMPONENT Development) + +ENDIF(NOT OTB_INSTALL_NO_DEVELOPMENT) + diff --git a/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt b/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt index 24ecf4091053e8d04c243858efc251f41eb65f4c..5efa8c292ef101968899cfa1367c18487ffb2c74 100644 --- a/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt +++ b/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt @@ -59,6 +59,14 @@ INSTALL(FILES openjpeg.h INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink ${OPENJPEG_INSTALL_SUBDIR}/openjpeg.h \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${OPENJPEG_INSTALL_INCLUDE_DIR}/openjpeg.h)") +INSTALL(FILES ${OPENJPEG_BINARY_DIR}/openjpeg_mangle.h + DESTINATION ${OPENJPEG_INSTALL_INCLUDE_DIR}/${OPENJPEG_INSTALL_SUBDIR} COMPONENT Headers +) +INSTALL(CODE + "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink ${OPENJPEG_INSTALL_SUBDIR}/openjpeg_mangle.h \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${OPENJPEG_INSTALL_INCLUDE_DIR}/openjpeg_mangle.h)") + + + # install man page of the library INSTALL( FILES ${OPENJPEG_SOURCE_DIR}/doc/man/man3/libopenjpeg.3 diff --git a/Utilities/otbopenjpeg/libopenjpeg/openjpeg.h b/Utilities/otbopenjpeg/libopenjpeg/openjpeg.h index 095ab2490ef3a9dd731329034e834f3bc171b33f..77c3f9cb1289530227cfc0f1a6dc4e1e75436dfc 100644 --- a/Utilities/otbopenjpeg/libopenjpeg/openjpeg.h +++ b/Utilities/otbopenjpeg/libopenjpeg/openjpeg.h @@ -1,4 +1,4 @@ - /* +/* * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium * Copyright (c) 2002-2007, Professor Benoit Macq * Copyright (c) 2001-2003, David Janssens @@ -35,6 +35,7 @@ #define OPENJPEG_H + /* ========================================================== Compiler directives @@ -75,6 +76,8 @@ typedef unsigned int OPJ_SIZE_T; typedef double OPJ_FLOAT64; typedef float OPJ_FLOAT32; +#include "openjpeg_mangle.h" + // Avoid compile-time warning because parameter is not used #define OPJ_ARG_NOT_USED(x) (void)(x) diff --git a/Utilities/otbopenjpeg/libopenjpeg/opj_includes.h b/Utilities/otbopenjpeg/libopenjpeg/opj_includes.h index d94237e7fbff290e120ab12337e81bc10a4451a6..f67e3ee098088bf74767fb81fd456fef4734f2df 100644 --- a/Utilities/otbopenjpeg/libopenjpeg/opj_includes.h +++ b/Utilities/otbopenjpeg/libopenjpeg/opj_includes.h @@ -55,6 +55,8 @@ ========================================================== */ +#include "openjpeg_mangle_private.h" + /* Ignore GCC attributes if this is not GCC */ #ifndef __GNUC__ #define __attribute__(x) /* __attribute__(x) */ diff --git a/Utilities/otbopenjpeg/openjpeg_mangle.h.cmake.in b/Utilities/otbopenjpeg/openjpeg_mangle.h.cmake.in new file mode 100644 index 0000000000000000000000000000000000000000..c02cb8470826755a40405252b3fb351b65166105 --- /dev/null +++ b/Utilities/otbopenjpeg/openjpeg_mangle.h.cmake.in @@ -0,0 +1,89 @@ +/* This file was generated by CMake http://www.cmake.org */ + +#ifndef openjpeg_mangle_h +#define openjpeg_mangle_h + +/* + * This header file mangles all symbols exported from the openjpeg library. + * It is included in all files while building or using the openjpeg library. + * + * The following command was used to generate the file content (after a standard static build without mangling): + * + * nm bin/libopenjpeg.a | grep " T " | cut -d ' ' -f 3 | grep "opj_\|cio_tell\|cio_seek" | sort | sed 's/.<star>/#define & @OPJ_MANGLE_PREFIX@_&/' | awk '{printf "%-8s%-40s%s\n", $1, $2, $3}' + * + * (be sure to replace the "<star>" by a real "*") + */ + +#cmakedefine OPJ_USE_MANGLE_PREFIX + +#ifdef OPJ_USE_MANGLE_PREFIX + +#define opj_version @OPJ_MANGLE_PREFIX@_opj_version + +#define opj_cio_close @OPJ_MANGLE_PREFIX@_opj_cio_close +#define opj_cio_open @OPJ_MANGLE_PREFIX@_opj_cio_open +#define cio_tell @OPJ_MANGLE_PREFIX@_cio_tell +#define cio_seek @OPJ_MANGLE_PREFIX@_cio_seek + + + +#define opj_create_compress @OPJ_MANGLE_PREFIX@_opj_create_compress +#define opj_create_decompress @OPJ_MANGLE_PREFIX@_opj_create_decompress +#define opj_setup_decoder @OPJ_MANGLE_PREFIX@_opj_setup_decoder +#define opj_setup_encoder @OPJ_MANGLE_PREFIX@_opj_setup_encoder +#define opj_decode @OPJ_MANGLE_PREFIX@_opj_decode +#define opj_decode_with_info @OPJ_MANGLE_PREFIX@_opj_decode_with_info +#define opj_encode @OPJ_MANGLE_PREFIX@_opj_encode +#define opj_encode_with_info @OPJ_MANGLE_PREFIX@_opj_encode_with_info +#define opj_destroy_compress @OPJ_MANGLE_PREFIX@_opj_destroy_compress +#define opj_destroy_decompress @OPJ_MANGLE_PREFIX@_opj_destroy_decompress + +#define opj_image_create @OPJ_MANGLE_PREFIX@_opj_image_create +#define opj_image_destroy @OPJ_MANGLE_PREFIX@_opj_image_destroy + + +#define opj_set_default_decoder_parameters @OPJ_MANGLE_PREFIX@_opj_set_default_decoder_parameters +#define opj_set_default_encoder_parameters @OPJ_MANGLE_PREFIX@_opj_set_default_encoder_parameters + +#define opj_set_event_mgr @OPJ_MANGLE_PREFIX@_opj_set_event_mgr + + +#define opj_create_decompress_v2 @OPJ_MANGLE_PREFIX@_opj_create_decompress_v2 +#define opj_set_decode_area @OPJ_MANGLE_PREFIX@_opj_set_decode_area +#define opj_setup_decoder_v2 @OPJ_MANGLE_PREFIX@_opj_setup_decoder_v2 +#define opj_read_header @OPJ_MANGLE_PREFIX@_opj_read_header +#define opj_read_tile_header @OPJ_MANGLE_PREFIX@_opj_read_tile_header +#define opj_decode_tile_data @OPJ_MANGLE_PREFIX@_opj_decode_tile_data +#define opj_decode_v2 @OPJ_MANGLE_PREFIX@_opj_decode_v2 +#define opj_default_callback @OPJ_MANGLE_PREFIX@_opj_default_callback +#define opj_destroy_codec @OPJ_MANGLE_PREFIX@_opj_destroy_codec +#define opj_end_decompress @OPJ_MANGLE_PREFIX@_opj_end_decompress + +#define opj_dump_codec @OPJ_MANGLE_PREFIX@_opj_dump_codec +#define opj_get_cstr_index @OPJ_MANGLE_PREFIX@_opj_get_cstr_index +#define opj_get_cstr_info @OPJ_MANGLE_PREFIX@_opj_get_cstr_info +#define opj_get_jp2_metadata @OPJ_MANGLE_PREFIX@_opj_get_jp2_metadata +#define opj_get_jp2_index @OPJ_MANGLE_PREFIX@_opj_get_jp2_index + +#define opj_destroy_cstr_info @OPJ_MANGLE_PREFIX@_opj_destroy_cstr_info +#define opj_destroy_cstr_index @OPJ_MANGLE_PREFIX@_opj_destroy_cstr_index +#define opj_destroy_cstr_info_v2 @OPJ_MANGLE_PREFIX@_opj_destroy_cstr_info_v2 + +#define opj_initialize_default_event_handler @OPJ_MANGLE_PREFIX@_opj_initialize_default_event_handler + + +#define opj_stream_create @OPJ_MANGLE_PREFIX@_opj_stream_create +#define opj_stream_default_create @OPJ_MANGLE_PREFIX@_opj_stream_default_create +#define opj_stream_create_default_file_stream @OPJ_MANGLE_PREFIX@_opj_stream_create_default_file_stream +#define opj_stream_create_file_stream @OPJ_MANGLE_PREFIX@_opj_stream_create_file_stream +#define opj_stream_set_user_data @OPJ_MANGLE_PREFIX@_opj_stream_set_user_data +#define opj_stream_set_user_data_length @OPJ_MANGLE_PREFIX@_opj_stream_set_user_data_length +#define opj_stream_set_read_function @OPJ_MANGLE_PREFIX@_opj_stream_set_read_function +#define opj_stream_set_seek_function @OPJ_MANGLE_PREFIX@_opj_stream_set_seek_function +#define opj_stream_set_write_function @OPJ_MANGLE_PREFIX@_opj_stream_set_write_function +#define opj_stream_set_skip_function @OPJ_MANGLE_PREFIX@_opj_stream_set_skip_function +#define opj_stream_destroy @OPJ_MANGLE_PREFIX@_opj_stream_destroy + +#endif + +#endif \ No newline at end of file diff --git a/Utilities/otbopenjpeg/openjpeg_mangle_private.h.cmake.in b/Utilities/otbopenjpeg/openjpeg_mangle_private.h.cmake.in new file mode 100644 index 0000000000000000000000000000000000000000..78bb3df365e233d5b7e85e74333b44f27c6061a5 --- /dev/null +++ b/Utilities/otbopenjpeg/openjpeg_mangle_private.h.cmake.in @@ -0,0 +1,276 @@ +/* This file was generated by CMake http://www.cmake.org */ + +#ifndef openjpeg_mangle_private_h +#define openjpeg_mangle_private_h + +/* + * This header file mangles all symbols exported from the openjpeg library. + * It is included in all files while building or using the openjpeg library. + * + * The following command was used to generate the file content (after a standard static build without mangling): + * + * nm bin/libopenjpeg.a | grep " T " | cut -d ' ' -f 3 | grep -v "opj_\|cio_tell\|cio_seek" | sort | sed 's/.<star>/#define & @OPJ_MANGLE_PREFIX@_&/' | awk '{printf "%-8s%-40s%s\n", $1, $2, $3}' + * + * (be sure to replace the "<star>" by a real "*") + */ + +/* Import the definition of USE_MANGLE_PREFIX */ +#include "openjpeg_mangle.h" + +#ifdef OPJ_USE_MANGLE_PREFIX + + +#define dwt_decode_real_v2 @OPJ_MANGLE_PREFIX@_dwt_decode_real_v2 +#define dwt_decode_v2 @OPJ_MANGLE_PREFIX@_dwt_decode_v2 +#define dwt_getgain_real_v2 @OPJ_MANGLE_PREFIX@_dwt_getgain_real_v2 +#define dwt_getgain_v2 @OPJ_MANGLE_PREFIX@_dwt_getgain_v2 +#define get_all_encoding_parameters @OPJ_MANGLE_PREFIX@_get_all_encoding_parameters +#define j2k_allocate_tile_element_cstr_index @OPJ_MANGLE_PREFIX@_j2k_allocate_tile_element_cstr_index +#define j2k_build_decoder @OPJ_MANGLE_PREFIX@_j2k_build_decoder +#define j2k_copy_default_tcp_and_create_tcd @OPJ_MANGLE_PREFIX@_j2k_copy_default_tcp_and_create_tcd +#define j2k_create_compress_v2 @OPJ_MANGLE_PREFIX@_j2k_create_compress_v2 +#define j2k_create_decompress_v2 @OPJ_MANGLE_PREFIX@_j2k_create_decompress_v2 +#define j2k_decode_tile @OPJ_MANGLE_PREFIX@_j2k_decode_tile +#define j2k_decode_tiles @OPJ_MANGLE_PREFIX@_j2k_decode_tiles +#define j2k_decode_v2 @OPJ_MANGLE_PREFIX@_j2k_decode_v2 +#define j2k_decoding_validation @OPJ_MANGLE_PREFIX@_j2k_decoding_validation +#define j2k_destroy @OPJ_MANGLE_PREFIX@_j2k_destroy +#define j2k_destroy_cstr_index @OPJ_MANGLE_PREFIX@_j2k_destroy_cstr_index +#define j2k_dump @OPJ_MANGLE_PREFIX@_j2k_dump +#define j2k_dump_image_comp_header @OPJ_MANGLE_PREFIX@_j2k_dump_image_comp_header +#define j2k_dump_image_header @OPJ_MANGLE_PREFIX@_j2k_dump_image_header +#define j2k_end_decompress @OPJ_MANGLE_PREFIX@_j2k_end_decompress +#define j2k_get_cstr_index @OPJ_MANGLE_PREFIX@_j2k_get_cstr_index +#define j2k_get_cstr_info @OPJ_MANGLE_PREFIX@_j2k_get_cstr_info +#define j2k_read_header @OPJ_MANGLE_PREFIX@_j2k_read_header +#define j2k_read_header_procedure @OPJ_MANGLE_PREFIX@_j2k_read_header_procedure +#define j2k_read_tile_header @OPJ_MANGLE_PREFIX@_j2k_read_tile_header +#define j2k_set_decode_area @OPJ_MANGLE_PREFIX@_j2k_set_decode_area +#define j2k_setup_decoder_v2 @OPJ_MANGLE_PREFIX@_j2k_setup_decoder_v2 +#define j2k_setup_decoding @OPJ_MANGLE_PREFIX@_j2k_setup_decoding +#define j2k_setup_header_reading @OPJ_MANGLE_PREFIX@_j2k_setup_header_reading +#define jp2_create @OPJ_MANGLE_PREFIX@_jp2_create +#define jp2_decode_tile @OPJ_MANGLE_PREFIX@_jp2_decode_tile +#define jp2_decode_v2 @OPJ_MANGLE_PREFIX@_jp2_decode_v2 +#define jp2_destroy @OPJ_MANGLE_PREFIX@_jp2_destroy +#define jp2_dump @OPJ_MANGLE_PREFIX@_jp2_dump +#define jp2_end_decompress @OPJ_MANGLE_PREFIX@_jp2_end_decompress +#define jp2_get_cstr_index @OPJ_MANGLE_PREFIX@_jp2_get_cstr_index +#define jp2_get_cstr_info @OPJ_MANGLE_PREFIX@_jp2_get_cstr_info +#define jp2_read_header @OPJ_MANGLE_PREFIX@_jp2_read_header +#define jp2_read_header_procedure @OPJ_MANGLE_PREFIX@_jp2_read_header_procedure +#define jp2_read_tile_header @OPJ_MANGLE_PREFIX@_jp2_read_tile_header +#define jp2_set_decode_area @OPJ_MANGLE_PREFIX@_jp2_set_decode_area +#define jp2_setup_decoder_v2 @OPJ_MANGLE_PREFIX@_jp2_setup_decoder_v2 +#define mct_decode_custom @OPJ_MANGLE_PREFIX@_mct_decode_custom +#define opj_clock @OPJ_MANGLE_PREFIX@_opj_clock +#define opj_copy_image_header @OPJ_MANGLE_PREFIX@_opj_copy_image_header +#define opj_error_default_callback @OPJ_MANGLE_PREFIX@_opj_error_default_callback +#define opj_event_msg @OPJ_MANGLE_PREFIX@_opj_event_msg +#define opj_event_msg_v2 @OPJ_MANGLE_PREFIX@_opj_event_msg_v2 +#define opj_get_data_length_from_file @OPJ_MANGLE_PREFIX@_opj_get_data_length_from_file +#define opj_image_comp_header_update @OPJ_MANGLE_PREFIX@_opj_image_comp_header_update +#define opj_image_create0 @OPJ_MANGLE_PREFIX@_opj_image_create0 +#define opj_info_default_callback @OPJ_MANGLE_PREFIX@_opj_info_default_callback +#define opj_jp2_decode @OPJ_MANGLE_PREFIX@_opj_jp2_decode +#define opj_jp2_encode @OPJ_MANGLE_PREFIX@_opj_jp2_encode +#define opj_procedure_list_add_procedure @OPJ_MANGLE_PREFIX@_opj_procedure_list_add_procedure +#define opj_procedure_list_clear @OPJ_MANGLE_PREFIX@_opj_procedure_list_clear +#define opj_procedure_list_create @OPJ_MANGLE_PREFIX@_opj_procedure_list_create +#define opj_procedure_list_destroy @OPJ_MANGLE_PREFIX@_opj_procedure_list_destroy +#define opj_procedure_list_get_first_procedure @OPJ_MANGLE_PREFIX@_opj_procedure_list_get_first_procedure +#define opj_procedure_list_get_nb_procedures @OPJ_MANGLE_PREFIX@_opj_procedure_list_get_nb_procedures +#define opj_read_bytes_BE @OPJ_MANGLE_PREFIX@_opj_read_bytes_BE +#define opj_read_bytes_LE @OPJ_MANGLE_PREFIX@_opj_read_bytes_LE +#define opj_read_double_BE @OPJ_MANGLE_PREFIX@_opj_read_double_BE +#define opj_read_double_LE @OPJ_MANGLE_PREFIX@_opj_read_double_LE +#define opj_read_float_BE @OPJ_MANGLE_PREFIX@_opj_read_float_BE +#define opj_read_float_LE @OPJ_MANGLE_PREFIX@_opj_read_float_LE +#define opj_read_from_file @OPJ_MANGLE_PREFIX@_opj_read_from_file +#define opj_seek_from_file @OPJ_MANGLE_PREFIX@_opj_seek_from_file +#define opj_skip_from_file @OPJ_MANGLE_PREFIX@_opj_skip_from_file +#define opj_stream_default_read @OPJ_MANGLE_PREFIX@_opj_stream_default_read +#define opj_stream_default_seek @OPJ_MANGLE_PREFIX@_opj_stream_default_seek +#define opj_stream_default_skip @OPJ_MANGLE_PREFIX@_opj_stream_default_skip +#define opj_stream_default_write @OPJ_MANGLE_PREFIX@_opj_stream_default_write +#define opj_stream_flush @OPJ_MANGLE_PREFIX@_opj_stream_flush +#define opj_stream_get_number_byte_left @OPJ_MANGLE_PREFIX@_opj_stream_get_number_byte_left +#define opj_stream_has_seek @OPJ_MANGLE_PREFIX@_opj_stream_has_seek +#define opj_stream_read_data @OPJ_MANGLE_PREFIX@_opj_stream_read_data +#define opj_stream_read_seek @OPJ_MANGLE_PREFIX@_opj_stream_read_seek +#define opj_stream_read_skip @OPJ_MANGLE_PREFIX@_opj_stream_read_skip +#define opj_stream_seek @OPJ_MANGLE_PREFIX@_opj_stream_seek +#define opj_stream_skip @OPJ_MANGLE_PREFIX@_opj_stream_skip +#define opj_stream_tell @OPJ_MANGLE_PREFIX@_opj_stream_tell +#define opj_stream_write_data @OPJ_MANGLE_PREFIX@_opj_stream_write_data +#define opj_stream_write_seek @OPJ_MANGLE_PREFIX@_opj_stream_write_seek +#define opj_stream_write_skip @OPJ_MANGLE_PREFIX@_opj_stream_write_skip +#define opj_warning_default_callback @OPJ_MANGLE_PREFIX@_opj_warning_default_callback +#define opj_write_bytes_BE @OPJ_MANGLE_PREFIX@_opj_write_bytes_BE +#define opj_write_bytes_LE @OPJ_MANGLE_PREFIX@_opj_write_bytes_LE +#define opj_write_double_BE @OPJ_MANGLE_PREFIX@_opj_write_double_BE +#define opj_write_double_LE @OPJ_MANGLE_PREFIX@_opj_write_double_LE +#define opj_write_float_BE @OPJ_MANGLE_PREFIX@_opj_write_float_BE +#define opj_write_float_LE @OPJ_MANGLE_PREFIX@_opj_write_float_LE +#define opj_write_from_file @OPJ_MANGLE_PREFIX@_opj_write_from_file + + +#define bio_create @OPJ_MANGLE_PREFIX@_bio_create +#define bio_destroy @OPJ_MANGLE_PREFIX@_bio_destroy +#define bio_flush @OPJ_MANGLE_PREFIX@_bio_flush +#define bio_inalign @OPJ_MANGLE_PREFIX@_bio_inalign +#define bio_init_dec @OPJ_MANGLE_PREFIX@_bio_init_dec +#define bio_init_enc @OPJ_MANGLE_PREFIX@_bio_init_enc +#define bio_numbytes @OPJ_MANGLE_PREFIX@_bio_numbytes +#define bio_read @OPJ_MANGLE_PREFIX@_bio_read +#define bio_write @OPJ_MANGLE_PREFIX@_bio_write +#define cio_bytein @OPJ_MANGLE_PREFIX@_cio_bytein +#define cio_byteout @OPJ_MANGLE_PREFIX@_cio_byteout +#define cio_getbp @OPJ_MANGLE_PREFIX@_cio_getbp +#define cio_numbytesleft @OPJ_MANGLE_PREFIX@_cio_numbytesleft +#define cio_read @OPJ_MANGLE_PREFIX@_cio_read +#define cio_skip @OPJ_MANGLE_PREFIX@_cio_skip +#define cio_write @OPJ_MANGLE_PREFIX@_cio_write +#define dwt_calc_explicit_stepsizes @OPJ_MANGLE_PREFIX@_dwt_calc_explicit_stepsizes +#define dwt_decode @OPJ_MANGLE_PREFIX@_dwt_decode +#define dwt_decode_real @OPJ_MANGLE_PREFIX@_dwt_decode_real +#define dwt_encode @OPJ_MANGLE_PREFIX@_dwt_encode +#define dwt_encode_real @OPJ_MANGLE_PREFIX@_dwt_encode_real +#define dwt_getgain @OPJ_MANGLE_PREFIX@_dwt_getgain +#define dwt_getgain_real @OPJ_MANGLE_PREFIX@_dwt_getgain_real +#define dwt_getnorm @OPJ_MANGLE_PREFIX@_dwt_getnorm +#define dwt_getnorm_real @OPJ_MANGLE_PREFIX@_dwt_getnorm_real +#define j2k_calculate_tp @OPJ_MANGLE_PREFIX@_j2k_calculate_tp +#define j2k_convert_progression_order @OPJ_MANGLE_PREFIX@_j2k_convert_progression_order +#define j2k_create_compress @OPJ_MANGLE_PREFIX@_j2k_create_compress +#define j2k_create_decompress @OPJ_MANGLE_PREFIX@_j2k_create_decompress +#define j2k_decode @OPJ_MANGLE_PREFIX@_j2k_decode +#define j2k_decode_jpt_stream @OPJ_MANGLE_PREFIX@_j2k_decode_jpt_stream +#define j2k_destroy_compress @OPJ_MANGLE_PREFIX@_j2k_destroy_compress +#define j2k_destroy_decompress @OPJ_MANGLE_PREFIX@_j2k_destroy_decompress +#define j2k_encode @OPJ_MANGLE_PREFIX@_j2k_encode +#define j2k_setup_decoder @OPJ_MANGLE_PREFIX@_j2k_setup_decoder +#define j2k_setup_encoder @OPJ_MANGLE_PREFIX@_j2k_setup_encoder +#define jp2_create_compress @OPJ_MANGLE_PREFIX@_jp2_create_compress +#define jp2_create_decompress @OPJ_MANGLE_PREFIX@_jp2_create_decompress +#define jp2_destroy_compress @OPJ_MANGLE_PREFIX@_jp2_destroy_compress +#define jp2_destroy_decompress @OPJ_MANGLE_PREFIX@_jp2_destroy_decompress +#define jp2_read_jp2h @OPJ_MANGLE_PREFIX@_jp2_read_jp2h +#define jp2_setup_decoder @OPJ_MANGLE_PREFIX@_jp2_setup_decoder +#define jp2_setup_encoder @OPJ_MANGLE_PREFIX@_jp2_setup_encoder +#define jp2_write_jp2h @OPJ_MANGLE_PREFIX@_jp2_write_jp2h +#define jpt_init_msg_header @OPJ_MANGLE_PREFIX@_jpt_init_msg_header +#define jpt_read_VBAS_info @OPJ_MANGLE_PREFIX@_jpt_read_VBAS_info +#define jpt_read_msg_header @OPJ_MANGLE_PREFIX@_jpt_read_msg_header +#define jpt_reinit_msg_header @OPJ_MANGLE_PREFIX@_jpt_reinit_msg_header +#define mct_decode @OPJ_MANGLE_PREFIX@_mct_decode +#define mct_decode_real @OPJ_MANGLE_PREFIX@_mct_decode_real +#define mct_encode @OPJ_MANGLE_PREFIX@_mct_encode +#define mct_encode_real @OPJ_MANGLE_PREFIX@_mct_encode_real +#define mct_getnorm @OPJ_MANGLE_PREFIX@_mct_getnorm +#define mct_getnorm_real @OPJ_MANGLE_PREFIX@_mct_getnorm_real +#define mqc_bypass_enc @OPJ_MANGLE_PREFIX@_mqc_bypass_enc +#define mqc_bypass_flush_enc @OPJ_MANGLE_PREFIX@_mqc_bypass_flush_enc +#define mqc_bypass_init_enc @OPJ_MANGLE_PREFIX@_mqc_bypass_init_enc +#define mqc_create @OPJ_MANGLE_PREFIX@_mqc_create +#define mqc_decode @OPJ_MANGLE_PREFIX@_mqc_decode +#define mqc_destroy @OPJ_MANGLE_PREFIX@_mqc_destroy +#define mqc_encode @OPJ_MANGLE_PREFIX@_mqc_encode +#define mqc_erterm_enc @OPJ_MANGLE_PREFIX@_mqc_erterm_enc +#define mqc_flush @OPJ_MANGLE_PREFIX@_mqc_flush +#define mqc_init_dec @OPJ_MANGLE_PREFIX@_mqc_init_dec +#define mqc_init_enc @OPJ_MANGLE_PREFIX@_mqc_init_enc +#define mqc_numbytes @OPJ_MANGLE_PREFIX@_mqc_numbytes +#define mqc_reset_enc @OPJ_MANGLE_PREFIX@_mqc_reset_enc +#define mqc_resetstates @OPJ_MANGLE_PREFIX@_mqc_resetstates +#define mqc_restart_enc @OPJ_MANGLE_PREFIX@_mqc_restart_enc +#define mqc_restart_init_enc @OPJ_MANGLE_PREFIX@_mqc_restart_init_enc +#define mqc_segmark_enc @OPJ_MANGLE_PREFIX@_mqc_segmark_enc +#define mqc_setstate @OPJ_MANGLE_PREFIX@_mqc_setstate +#define pi_create_decode @OPJ_MANGLE_PREFIX@_pi_create_decode +#define pi_create_encode @OPJ_MANGLE_PREFIX@_pi_create_encode +#define pi_destroy @OPJ_MANGLE_PREFIX@_pi_destroy +#define pi_initialise_encode @OPJ_MANGLE_PREFIX@_pi_initialise_encode +#define pi_next @OPJ_MANGLE_PREFIX@_pi_next +#define raw_create @OPJ_MANGLE_PREFIX@_raw_create +#define raw_decode @OPJ_MANGLE_PREFIX@_raw_decode +#define raw_destroy @OPJ_MANGLE_PREFIX@_raw_destroy +#define raw_init_dec @OPJ_MANGLE_PREFIX@_raw_init_dec +#define raw_numbytes @OPJ_MANGLE_PREFIX@_raw_numbytes +#define t1_create @OPJ_MANGLE_PREFIX@_t1_create +#define t1_decode_cblks @OPJ_MANGLE_PREFIX@_t1_decode_cblks +#define t1_destroy @OPJ_MANGLE_PREFIX@_t1_destroy +#define t1_encode_cblks @OPJ_MANGLE_PREFIX@_t1_encode_cblks +#define t2_create @OPJ_MANGLE_PREFIX@_t2_create +#define t2_decode_packets @OPJ_MANGLE_PREFIX@_t2_decode_packets +#define t2_destroy @OPJ_MANGLE_PREFIX@_t2_destroy +#define t2_encode_packets @OPJ_MANGLE_PREFIX@_t2_encode_packets +#define tcd_create @OPJ_MANGLE_PREFIX@_tcd_create +#define tcd_decode_tile @OPJ_MANGLE_PREFIX@_tcd_decode_tile +#define tcd_destroy @OPJ_MANGLE_PREFIX@_tcd_destroy +#define tcd_dump @OPJ_MANGLE_PREFIX@_tcd_dump +#define tcd_encode_tile @OPJ_MANGLE_PREFIX@_tcd_encode_tile +#define tcd_free_decode @OPJ_MANGLE_PREFIX@_tcd_free_decode +#define tcd_free_decode_tile @OPJ_MANGLE_PREFIX@_tcd_free_decode_tile +#define tcd_free_encode @OPJ_MANGLE_PREFIX@_tcd_free_encode +#define tcd_init_encode @OPJ_MANGLE_PREFIX@_tcd_init_encode +#define tcd_makelayer @OPJ_MANGLE_PREFIX@_tcd_makelayer +#define tcd_makelayer_fixed @OPJ_MANGLE_PREFIX@_tcd_makelayer_fixed +#define tcd_malloc_decode @OPJ_MANGLE_PREFIX@_tcd_malloc_decode +#define tcd_malloc_decode_tile @OPJ_MANGLE_PREFIX@_tcd_malloc_decode_tile +#define tcd_malloc_encode @OPJ_MANGLE_PREFIX@_tcd_malloc_encode +#define tcd_rateallocate @OPJ_MANGLE_PREFIX@_tcd_rateallocate +#define tcd_rateallocate_fixed @OPJ_MANGLE_PREFIX@_tcd_rateallocate_fixed +#define tgt_create @OPJ_MANGLE_PREFIX@_tgt_create +#define tgt_decode @OPJ_MANGLE_PREFIX@_tgt_decode +#define tgt_destroy @OPJ_MANGLE_PREFIX@_tgt_destroy +#define tgt_encode @OPJ_MANGLE_PREFIX@_tgt_encode +#define tgt_reset @OPJ_MANGLE_PREFIX@_tgt_reset +#define tgt_setvalue @OPJ_MANGLE_PREFIX@_tgt_setvalue +#define check_EPHuse @OPJ_MANGLE_PREFIX@_check_EPHuse +#define write_cidx @OPJ_MANGLE_PREFIX@_write_cidx +#define write_cptr @OPJ_MANGLE_PREFIX@_write_cptr +#define write_mainmhix @OPJ_MANGLE_PREFIX@_write_mainmhix +#define write_manf @OPJ_MANGLE_PREFIX@_write_manf +#define write_phix @OPJ_MANGLE_PREFIX@_write_phix +#define write_phixfaix @OPJ_MANGLE_PREFIX@_write_phixfaix +#define write_ppix @OPJ_MANGLE_PREFIX@_write_ppix +#define write_ppixfaix @OPJ_MANGLE_PREFIX@_write_ppixfaix +#define write_thix @OPJ_MANGLE_PREFIX@_write_thix +#define write_tilemhix @OPJ_MANGLE_PREFIX@_write_tilemhix +#define get_num_max_tile_parts @OPJ_MANGLE_PREFIX@_get_num_max_tile_parts +#define write_tpix @OPJ_MANGLE_PREFIX@_write_tpix +#define write_tpixfaix @OPJ_MANGLE_PREFIX@_write_tpixfaix + + +#define pi_create @OPJ_MANGLE_PREFIX@_pi_create +#define pi_create_decode_v2 @OPJ_MANGLE_PREFIX@_pi_create_decode_v2 +#define pi_destroy_v2 @OPJ_MANGLE_PREFIX@_pi_destroy_v2 +#define pi_update_decode_not_poc @OPJ_MANGLE_PREFIX@_pi_update_decode_not_poc +#define pi_update_decode_poc @OPJ_MANGLE_PREFIX@_pi_update_decode_poc +#define t1_create_v2 @OPJ_MANGLE_PREFIX@_t1_create_v2 +#define t1_decode_cblks_v2 @OPJ_MANGLE_PREFIX@_t1_decode_cblks_v2 +#define t1_destroy_v2 @OPJ_MANGLE_PREFIX@_t1_destroy_v2 +#define t2_create_v2 @OPJ_MANGLE_PREFIX@_t2_create_v2 +#define t2_decode_packets_v2 @OPJ_MANGLE_PREFIX@_t2_decode_packets_v2 +#define t2_destroy_v2 @OPJ_MANGLE_PREFIX@_t2_destroy_v2 +#define tcd_code_block_dec_deallocate @OPJ_MANGLE_PREFIX@_tcd_code_block_dec_deallocate +#define tcd_create_v2 @OPJ_MANGLE_PREFIX@_tcd_create_v2 +#define tcd_dc_level_shift_decode @OPJ_MANGLE_PREFIX@_tcd_dc_level_shift_decode +#define tcd_decode_tile_v2 @OPJ_MANGLE_PREFIX@_tcd_decode_tile_v2 +#define tcd_destroy_v2 @OPJ_MANGLE_PREFIX@_tcd_destroy_v2 +#define tcd_dwt_decode @OPJ_MANGLE_PREFIX@_tcd_dwt_decode +#define tcd_get_decoded_tile_size @OPJ_MANGLE_PREFIX@_tcd_get_decoded_tile_size +#define tcd_init_decode_tile @OPJ_MANGLE_PREFIX@_tcd_init_decode_tile +#define tcd_init_v2 @OPJ_MANGLE_PREFIX@_tcd_init_v2 +#define tcd_mct_decode @OPJ_MANGLE_PREFIX@_tcd_mct_decode +#define tcd_t1_decode @OPJ_MANGLE_PREFIX@_tcd_t1_decode +#define tcd_t2_decode @OPJ_MANGLE_PREFIX@_tcd_t2_decode +#define tcd_update_tile_data @OPJ_MANGLE_PREFIX@_tcd_update_tile_data +#define tgt_create_v2 @OPJ_MANGLE_PREFIX@_tgt_create_v2 +#define tgt_init @OPJ_MANGLE_PREFIX@_tgt_init + + +#endif + +#endif \ No newline at end of file