From 9a89e2f162804ab5d39dac0d1e0469816a2cfb45 Mon Sep 17 00:00:00 2001 From: Antonin Descampe Date: Thu, 1 Sep 2011 12:08:10 +0000 Subject: [PATCH] backport r898 to r907 in openjpeg-1.5 branch --- CHANGES | 10 + CMake/CTestCustom.cmake.in | 5 +- CMake/CheckHaveGetopt.cmake | 15 -- CMakeLists.txt | 17 +- applications/JavaOpenJPEG/CMakeLists.txt | 9 +- applications/JavaOpenJPEG/JavaOpenJPEG.c | 56 ++--- .../JavaOpenJPEG/JavaOpenJPEGDecoder.c | 24 +-- applications/JavaOpenJPEG/Makefile | 4 +- applications/Makefile.am | 4 +- applications/codec/CMakeLists.txt | 9 +- applications/codec/Makefile.am | 12 +- applications/codec/convert.c | 114 ++++++++--- applications/codec/image_to_j2k.c | 60 +++--- applications/codec/j2k_dump.c | 16 +- applications/codec/j2k_to_image.c | 26 +-- applications/codec/windirent.h | 2 +- applications/common/getopt.h | 29 --- .../common/{getopt.c => opj_getopt.c} | 157 +++++++------- applications/common/opj_getopt.h | 29 +++ applications/mj2/CMakeLists.txt | 5 +- applications/mj2/Makefile.am | 4 +- applications/mj2/frames_to_mj2.c | 50 ++--- applications/mj2/mj2_to_metadata.c | 2 +- applications/mj2/mj2_to_metadata.vcproj | 4 +- tests/CMakeLists.txt | 22 +- tests/comparePGXimages.c | 40 ++-- tests/compareRAWimages.c | 192 ++++++++++++++++++ tests/compare_dump_files.c | 73 +++---- tests/nonregression/CMakeLists.txt | 164 ++++++++++++++- tests/nonregression/encoder_test_suite.txt | 14 ++ tests/nonregression/opj_ref_decode_cmd.sh.in | 4 + 31 files changed, 781 insertions(+), 391 deletions(-) delete mode 100644 CMake/CheckHaveGetopt.cmake delete mode 100644 applications/common/getopt.h rename applications/common/{getopt.c => opj_getopt.c} (61%) create mode 100644 applications/common/opj_getopt.h create mode 100644 tests/compareRAWimages.c create mode 100644 tests/nonregression/encoder_test_suite.txt create mode 100644 tests/nonregression/opj_ref_decode_cmd.sh.in diff --git a/CHANGES b/CHANGES index 9d45c00e..1a3bd138 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,16 @@ What's New for OpenJPEG ! : changed + : added +September 1st, 2011 +! [antonin] renamed getopt.{c/h} to opj_getopt.{c/h} and forced the use of these files rather than the system ones. This fixed issue 78. Credit to Winfried. + +August 31, 2011 +* [mickael] fixed a segfault with fgets return value for some cases inside test function compare_dump_file() ++ [mickael] enhance the encoding test suite and remove unsued CONFIGURE_FILE into a CMakeList + +August 30, 2011 ++ [mickael] added first version of the encoding tests suite + August 16, 2011 + [antonin] added NEWS, AUTHORS and THANKS files. Cosmetic changes in autotools files. - [antonin] removed obsolete testing directory and *.nix files diff --git a/CMake/CTestCustom.cmake.in b/CMake/CTestCustom.cmake.in index cc5c273f..a85b0510 100644 --- a/CMake/CTestCustom.cmake.in +++ b/CMake/CTestCustom.cmake.in @@ -17,6 +17,7 @@ # #---------------------------------------------------------------------- +SET(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE 1000000) SET (CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS 50) SET (CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS 2000) @@ -25,7 +26,9 @@ SET(CTEST_CUSTOM_COVERAGE_EXCLUDE # Exclude files from the Testing directories ".*/tests/.*" - ".*/Testing/.*" + + # Exclude files from the ThirdParty Utilities directories + ".*/thirdparty/.*" ) SET(CTEST_CUSTOM_WARNING_EXCEPTION diff --git a/CMake/CheckHaveGetopt.cmake b/CMake/CheckHaveGetopt.cmake deleted file mode 100644 index c0fd5dcf..00000000 --- a/CMake/CheckHaveGetopt.cmake +++ /dev/null @@ -1,15 +0,0 @@ -# Check if getopt is present: -INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) -SET(DONT_HAVE_GETOPT 1) -IF(UNIX) #I am pretty sure only *nix sys have this anyway - CHECK_INCLUDE_FILE("getopt.h" CMAKE_HAVE_GETOPT_H) - # Seems like we need the contrary: - IF(CMAKE_HAVE_GETOPT_H) - SET(DONT_HAVE_GETOPT 0) - ENDIF(CMAKE_HAVE_GETOPT_H) -ENDIF(UNIX) - -IF(DONT_HAVE_GETOPT) - ADD_DEFINITIONS(-DDONT_HAVE_GETOPT) -ENDIF(DONT_HAVE_GETOPT) - diff --git a/CMakeLists.txt b/CMakeLists.txt index 513e9cdd..1af3a073 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,10 +110,6 @@ ENDIF(NOT OPENJPEG_INSTALL_PACKAGE_DIR) # Test for some required system information. INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityC.cmake) -#----------------------------------------------------------------------------- -# Test for getopt being available in this system -INCLUDE (${OPENJPEG_SOURCE_DIR}/CMake/CheckHaveGetopt.cmake ) - #----------------------------------------------------------------------------- # Setup file for setting custom ctest vars CONFIGURE_FILE( @@ -243,18 +239,19 @@ IF(BUILD_TESTING) ENABLE_TESTING() INCLUDE(CTest) - # Add repository where to find tests - ADD_SUBDIRECTORY(tests) - # Search openjpeg data needed for the tests # 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) - - SET (REF_DECODER_BIN_PATH "NOT-FOUND" CACHE PATH "Single directory where find the reference encoder binaries to enable encoding test suite.") + + # For encoding tests we need the path to the ref decoder exe/lib (kakadu) + SET (REF_DECODER_BIN_PATH "NOTFOUND" CACHE PATH "Single directory where find the reference decoder binaries to enable encoding test suite.") MARK_AS_ADVANCED(REF_DECODER_BIN_PATH) - + + # Add repository where to find tests + ADD_SUBDIRECTORY(tests) + ELSE(BUILD_CODEC) message(FATAL_ERROR "You need build codec to run the tests") ENDIF(BUILD_CODEC) diff --git a/applications/JavaOpenJPEG/CMakeLists.txt b/applications/JavaOpenJPEG/CMakeLists.txt index 6b1720b3..ecc8340d 100644 --- a/applications/JavaOpenJPEG/CMakeLists.txt +++ b/applications/JavaOpenJPEG/CMakeLists.txt @@ -4,16 +4,9 @@ SET(common_SRCS ../codec/convert.c ../codec/index.c + ../common/opj_getopt.c ) -# If not getopt was found then add it to the lib: -IF(DONT_HAVE_GETOPT) - SET(common_SRCS - ${common_SRCS} - ../common/getopt.c - ) -ENDIF(DONT_HAVE_GETOPT) - # Headers file are located here: INCLUDE_DIRECTORIES( diff --git a/applications/JavaOpenJPEG/JavaOpenJPEG.c b/applications/JavaOpenJPEG/JavaOpenJPEG.c index b1f03028..f03de1c3 100644 --- a/applications/JavaOpenJPEG/JavaOpenJPEG.c +++ b/applications/JavaOpenJPEG/JavaOpenJPEG.c @@ -37,7 +37,7 @@ #include #include "openjpeg.h" -#include "getopt.h" +#include "opj_getopt.h" #include "convert.h" #include "index.h" #include "dirent.h" @@ -492,7 +492,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, img_fol_t *img_fol, char *indexfilename) { int i, j,totlen; - option_t long_option[]={ + opj_option_t long_option[]={ {"cinema2K",REQ_ARG, NULL ,'w'}, {"cinema4K",NO_ARG, NULL ,'y'}, {"ImgDir",REQ_ARG, NULL ,'z'}, @@ -523,7 +523,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, reset_options_reading(); while (1) { - int c = getopt_long(argc, argv, optlist,long_option,totlen); + int c = opj_getopt_long(argc, argv, optlist,long_option,totlen); if (c == -1) break; switch (c) { @@ -532,7 +532,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'o': /* output file */ { - char *outfile = optarg; + char *outfile = opj_optarg; parameters->cod_format = get_file_format(outfile); switch(parameters->cod_format) { case J2K_CFMT: @@ -550,14 +550,14 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'O': /* output format */ { char outformat[50]; - char *of = optarg; + char *of = opj_optarg; sprintf(outformat,".%s",of); img_fol->set_out_format = 1; parameters->cod_format = get_file_format(outformat); switch(parameters->cod_format) { case J2K_CFMT: case JP2_CFMT: - img_fol->out_format = optarg; + img_fol->out_format = opj_optarg; break; default: fprintf(stderr, "Unknown output format image [only j2k, j2c, jp2]!! \n"); @@ -572,7 +572,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'r': /* rates rates/distorsion */ { - char *s = optarg; + char *s = opj_optarg; while (sscanf(s, "%f", ¶meters->tcp_rates[parameters->tcp_numlayers]) == 1) { parameters->tcp_numlayers++; while (*s && *s != ',') { @@ -590,7 +590,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'q': /* add fixed_quality */ { - char *s = optarg; + char *s = opj_optarg; while (sscanf(s, "%f", ¶meters->tcp_distoratio[parameters->tcp_numlayers]) == 1) { parameters->tcp_numlayers++; while (*s && *s != ',') { @@ -612,7 +612,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, int *row = NULL, *col = NULL; int numlayers = 0, numresolution = 0, matrix_width = 0; - char *s = optarg; + char *s = opj_optarg; sscanf(s, "%d", &numlayers); s++; if (numlayers > 9) @@ -656,7 +656,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 't': /* tiles */ { - sscanf(optarg, "%d,%d", ¶meters->cp_tdx, ¶meters->cp_tdy); + sscanf(opj_optarg, "%d,%d", ¶meters->cp_tdx, ¶meters->cp_tdy); parameters->tile_size_on = true; } break; @@ -665,7 +665,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'n': /* resolution */ { - sscanf(optarg, "%d", ¶meters->numresolution); + sscanf(opj_optarg, "%d", ¶meters->numresolution); } break; @@ -675,7 +675,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, char sep; int res_spec = 0; - char *s = optarg; + char *s = opj_optarg; do { sep = 0; sscanf(s, "[%d,%d]%c", ¶meters->prcw_init[res_spec], @@ -694,7 +694,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'b': /* code-block dimension */ { int cblockw_init = 0, cblockh_init = 0; - sscanf(optarg, "%d,%d", &cblockw_init, &cblockh_init); + sscanf(opj_optarg, "%d,%d", &cblockw_init, &cblockh_init); if (cblockw_init * cblockh_init > 4096 || cblockw_init > 1024 || cblockw_init < 4 || cblockh_init > 1024 || cblockh_init < 4) { fprintf(stderr, @@ -711,7 +711,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'x': /* creation of index file */ { - char *index = optarg; + char *index = opj_optarg; strncpy(indexfilename, index, OPJ_PATH_LEN); } break; @@ -722,7 +722,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, { char progression[4]; - strncpy(progression, optarg, 4); + strncpy(progression, opj_optarg, 4); parameters->prog_order = give_progression(progression); if (parameters->prog_order == -1) { fprintf(stderr, "Unrecognized progression order " @@ -736,7 +736,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 's': /* subsampling factor */ { - if (sscanf(optarg, "%d,%d", ¶meters->subsampling_dx, + if (sscanf(opj_optarg, "%d,%d", ¶meters->subsampling_dx, ¶meters->subsampling_dy) != 2) { fprintf(stderr, "'-s' sub-sampling argument error ! [-s dx,dy]\n"); return 1; @@ -748,7 +748,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'd': /* coordonnate of the reference grid */ { - if (sscanf(optarg, "%d,%d", ¶meters->image_offset_x0, + if (sscanf(opj_optarg, "%d,%d", ¶meters->image_offset_x0, ¶meters->image_offset_y0) != 2) { fprintf(stderr, "-d 'coordonnate of the reference grid' argument " "error !! [-d x0,y0]\n"); @@ -770,7 +770,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, int numpocs = 0; /* number of progression order change (POC) default 0 */ opj_poc_t *POC = NULL; /* POC : used in case of Progression order change */ - char *s = optarg; + char *s = opj_optarg; POC = parameters->POC; while (sscanf(s, "T%d=%d,%d,%d,%d,%d,%4s", &POC[numpocs].tile, @@ -812,7 +812,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'M': /* Mode switch pas tous au point !! */ { int value = 0; - if (sscanf(optarg, "%d", &value) == 1) { + if (sscanf(opj_optarg, "%d", &value) == 1) { for (i = 0; i <= 5; i++) { int cache = value & (1 << i); if (cache) @@ -826,7 +826,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'R': /* ROI */ { - if (sscanf(optarg, "c=%d,U=%d", ¶meters->roi_compno, + if (sscanf(opj_optarg, "c=%d,U=%d", ¶meters->roi_compno, ¶meters->roi_shift) != 2) { fprintf(stderr, "ROI error !! [-ROI c='compno',U='shift']\n"); return 1; @@ -838,7 +838,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'T': /* Tile offset */ { - if (sscanf(optarg, "%d,%d", ¶meters->cp_tx0, ¶meters->cp_ty0) != 2) { + if (sscanf(opj_optarg, "%d,%d", ¶meters->cp_tx0, ¶meters->cp_ty0) != 2) { fprintf(stderr, "-T 'tile offset' argument error !! [-T X0,Y0]"); return 1; } @@ -849,9 +849,9 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'C': /* add a comment */ { - parameters->cp_comment = (char*)malloc(strlen(optarg) + 1); + parameters->cp_comment = (char*)malloc(strlen(opj_optarg) + 1); if(parameters->cp_comment) { - strcpy(parameters->cp_comment, optarg); + strcpy(parameters->cp_comment, opj_optarg); } } break; @@ -869,7 +869,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'v': /* Tile part generation*/ { - parameters->tp_flag = optarg[0]; + parameters->tp_flag = opj_optarg[0]; parameters->tp_on = 1; } break; @@ -878,8 +878,8 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'z': /* Image Directory path */ { - img_fol->imgdirpath = (char*)malloc(strlen(optarg) + 1); - strcpy(img_fol->imgdirpath,optarg); + img_fol->imgdirpath = (char*)malloc(strlen(opj_optarg) + 1); + strcpy(img_fol->imgdirpath,opj_optarg); img_fol->set_imgdir=1; } break; @@ -889,7 +889,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'w': /* Digital Cinema 2K profile compliance*/ { int fps=0; - sscanf(optarg,"%d",&fps); + sscanf(opj_optarg,"%d",&fps); if(fps == 24){ parameters->cp_cinema = CINEMA2K_24; }else if(fps == 48 ){ @@ -933,7 +933,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, /* search for different protection methods */ /* break the option in comma points and parse the result */ - token = strtok(optarg, ","); + token = strtok(opj_optarg, ","); while(token != NULL) { /* search header error protection method */ diff --git a/applications/JavaOpenJPEG/JavaOpenJPEGDecoder.c b/applications/JavaOpenJPEG/JavaOpenJPEGDecoder.c index decc1373..a273028c 100644 --- a/applications/JavaOpenJPEG/JavaOpenJPEGDecoder.c +++ b/applications/JavaOpenJPEG/JavaOpenJPEGDecoder.c @@ -37,7 +37,7 @@ #include #include "openjpeg.h" -#include "getopt.h" +#include "opj_getopt.h" #include "convert.h" #include "dirent.h" #include "org_openJpeg_OpenJPEGJavaDecoder.h" @@ -206,7 +206,7 @@ int get_file_format(char *filename) { int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,img_fol_t *img_fol) { /* parse the command line */ int totlen; - option_t long_option[]={ + opj_option_t long_option[]={ {"ImgDir",REQ_ARG, NULL ,'y'}, {"OutFor",REQ_ARG, NULL ,'O'}, }; @@ -229,13 +229,13 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i reset_options_reading(); while (1) { - int c = getopt_long(argc, argv,optlist,long_option,totlen); + int c = opj_getopt_long(argc, argv,optlist,long_option,totlen); if (c == -1) break; switch (c) { case 'i': /* input file */ { - char *infile = optarg; + char *infile = opj_optarg; parameters->decod_format = get_file_format(infile); switch(parameters->decod_format) { case J2K_CFMT: @@ -256,7 +256,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i case 'o': /* output file */ { - char *outfile = optarg; + char *outfile = opj_optarg; parameters->cod_format = get_file_format(outfile); switch(parameters->cod_format) { case PGX_DFMT: @@ -279,7 +279,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i case 'O': /* output format */ { char outformat[50]; - char *of = optarg; + char *of = opj_optarg; sprintf(outformat,".%s",of); img_fol->set_out_format = 1; parameters->cod_format = get_file_format(outformat); @@ -315,7 +315,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i case 'r': /* reduce option */ { - sscanf(optarg, "%d", ¶meters->cp_reduce); + sscanf(opj_optarg, "%d", ¶meters->cp_reduce); } break; @@ -324,7 +324,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i case 'l': /* layering option */ { - sscanf(optarg, "%d", ¶meters->cp_layer); + sscanf(opj_optarg, "%d", ¶meters->cp_layer); } break; @@ -338,8 +338,8 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i case 'y': /* Image Directory path */ { - img_fol->imgdirpath = (char*)malloc(strlen(optarg) + 1); - strcpy(img_fol->imgdirpath,optarg); + img_fol->imgdirpath = (char*)malloc(strlen(opj_optarg) + 1); + strcpy(img_fol->imgdirpath,opj_optarg); img_fol->set_imgdir=1; } break; @@ -351,7 +351,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i { char *token = NULL; - token = strtok(optarg, ","); + token = strtok(opj_optarg, ","); while(token != NULL) { /* search expected number of components */ @@ -418,7 +418,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i /* ----------------------------------------------------- */ default: - fprintf(stderr,"WARNING -> this option is not valid \"-%c %s\"\n",c, optarg); + fprintf(stderr,"WARNING -> this option is not valid \"-%c %s\"\n",c, opj_optarg); break; } } diff --git a/applications/JavaOpenJPEG/Makefile b/applications/JavaOpenJPEG/Makefile index 9ac3e407..74d94056 100644 --- a/applications/JavaOpenJPEG/Makefile +++ b/applications/JavaOpenJPEG/Makefile @@ -5,10 +5,10 @@ CFLAGS = -O3 -lstdc++ # -g -p -pg all: j2k_to_image image_to_j2k j2k_to_image: j2k_to_image.c ../libopenjpeg.a - gcc $(CFLAGS) ../common/getopt.c convert.c j2k_to_image.c -o j2k_to_image -L.. -lopenjpeg -I ../libopenjpeg/ -lm -ltiff + gcc $(CFLAGS) ../common/opj_getopt.c convert.c j2k_to_image.c -o j2k_to_image -L.. -lopenjpeg -I ../libopenjpeg/ -lm -ltiff image_to_j2k: image_to_j2k.c ../libopenjpeg.a - gcc $(CFLAGS) ../common/getopt.c convert.c image_to_j2k.c -o image_to_j2k -L.. -lopenjpeg -I ../libopenjpeg/ -lm -ltiff + gcc $(CFLAGS) ../common/opj_getopt.c convert.c image_to_j2k.c -o image_to_j2k -L.. -lopenjpeg -I ../libopenjpeg/ -lm -ltiff clean: rm -f j2k_to_image image_to_j2k diff --git a/applications/Makefile.am b/applications/Makefile.am index e7d11e52..113afbe8 100644 --- a/applications/Makefile.am +++ b/applications/Makefile.am @@ -15,5 +15,5 @@ CMakeLists.txt \ common/color.c \ common/color.h \ common/format_defs.h \ -common/getopt.c \ -common/getopt.h +common/opj_getopt.c \ +common/opj_getopt.h diff --git a/applications/codec/CMakeLists.txt b/applications/codec/CMakeLists.txt index 8c1d3c25..77759f7b 100644 --- a/applications/codec/CMakeLists.txt +++ b/applications/codec/CMakeLists.txt @@ -5,15 +5,8 @@ SET(common_SRCS convert.c index.c ${OPENJPEG_SOURCE_DIR}/applications/common/color.c -) - -# If not getopt was found then add it to the lib: -IF(DONT_HAVE_GETOPT) - SET(common_SRCS - ${common_SRCS} - ${OPENJPEG_SOURCE_DIR}/applications/common/getopt.c + ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c ) -ENDIF(DONT_HAVE_GETOPT) # Headers file are located here: INCLUDE_DIRECTORIES( diff --git a/applications/codec/Makefile.am b/applications/codec/Makefile.am index 10542b04..17be3b88 100644 --- a/applications/codec/Makefile.am +++ b/applications/codec/Makefile.am @@ -22,7 +22,7 @@ j2k_to_image_CFLAGS = j2k_to_image_LDADD = $(top_builddir)/libopenjpeg/libopenjpeg.la @LCMS1_LIBS@ @LCMS2_LIBS@ @TIFF_LIBS@ @PNG_LIBS@ -lm j2k_to_image_SOURCES = \ ../common/color.c \ -../common/getopt.c \ +../common/opj_getopt.c \ convert.c \ index.c \ j2k_to_image.c \ @@ -41,7 +41,7 @@ image_to_j2k_CPPFLAGS = \ image_to_j2k_CFLAGS = image_to_j2k_LDADD = $(top_builddir)/libopenjpeg/libopenjpeg.la @TIFF_LIBS@ @PNG_LIBS@ -lm image_to_j2k_SOURCES = \ -../common/getopt.c \ +../common/opj_getopt.c \ convert.c \ index.c \ image_to_j2k.c \ @@ -60,10 +60,10 @@ j2k_dump_CPPFLAGS = \ j2k_dump_CFLAGS = j2k_dump_LDADD = $(top_builddir)/libopenjpeg/libopenjpeg.la -lm j2k_dump_SOURCES = \ -../common/getopt.c \ +../common/opj_getopt.c \ index.c \ j2k_dump.c \ -../common/getopt.h \ +../common/opj_getopt.h \ index.h JPWL_j2k_to_image_CPPFLAGS = \ @@ -81,7 +81,7 @@ 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_SOURCES = \ ../common/color.c \ -../common/getopt.c \ +../common/opj_getopt.c \ index.c \ convert.c \ j2k_to_image.c @@ -99,7 +99,7 @@ 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_SOURCES = \ -../common/getopt.c \ +../common/opj_getopt.c \ index.c \ convert.c \ image_to_j2k.c diff --git a/applications/codec/convert.c b/applications/codec/convert.c index c7afc074..fae8b131 100644 --- a/applications/codec/convert.c +++ b/applications/codec/convert.c @@ -67,9 +67,9 @@ static int int_floorlog2(int a) { <<-- <<-- <<-- <<-- */ +#ifdef INFORMATION_ONLY // TGA header definition. -#pragma pack(push,1) // Pack structure byte aligned -typedef struct tga_header +struct tga_header { unsigned char id_length; /* Image id field length */ unsigned char colour_map_type; /* Colour map type */ @@ -89,35 +89,66 @@ typedef struct tga_header unsigned short image_height; /* Image height */ unsigned char pixel_depth; /* Pixel depth */ unsigned char image_desc; /* Image descriptor */ -} tga_header; -#pragma pack(pop) // Return to normal structure packing alignment. +}; +#endif /* INFORMATION_ONLY */ + +static unsigned short get_ushort(unsigned short val) { + +#ifdef ORDER_BIGENDIAN + return( ((val & 0xff) << 8) + (val >> 8) ); +#else + return( val ); +#endif + +} + +#define TGA_HEADER_SIZE 18 int tga_readheader(FILE *fp, unsigned int *bits_per_pixel, unsigned int *width, unsigned int *height, int *flip_image) { int palette_size; - tga_header tga ; + unsigned char *tga ; + unsigned char id_len, cmap_type, image_type; + unsigned char pixel_depth, image_desc; + unsigned short cmap_index, cmap_len, cmap_entry_size; + unsigned short x_origin, y_origin, image_w, image_h; if (!bits_per_pixel || !width || !height || !flip_image) return 0; - - // Read TGA header - if ( fread((unsigned char*)&tga, sizeof(tga_header), 1, fp) != 1 ) + tga = (unsigned char*)malloc(18); + + 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 ; } + id_len = (unsigned char)tga[0]; + cmap_type = (unsigned char)tga[1]; + image_type = (unsigned char)tga[2]; + cmap_index = get_ushort(*(unsigned short*)(&tga[3])); + cmap_len = get_ushort(*(unsigned short*)(&tga[5])); + cmap_entry_size = (unsigned char)tga[7]; - *bits_per_pixel = tga.pixel_depth; - - *width = tga.image_width; - *height = tga.image_height ; + + x_origin = get_ushort(*(unsigned short*)(&tga[8])); + y_origin = get_ushort(*(unsigned short*)(&tga[10])); + image_w = get_ushort(*(unsigned short*)(&tga[12])); + image_h = get_ushort(*(unsigned short*)(&tga[14])); + pixel_depth = (unsigned char)tga[16]; + image_desc = (unsigned char)tga[17]; + + free(tga); + + *bits_per_pixel = (unsigned int)pixel_depth; + *width = (unsigned int)image_w; + *height = (unsigned int)image_h; // Ignore tga identifier, if present ... - if (tga.id_length) + if (id_len) { - unsigned char *id = (unsigned char *) malloc(tga.id_length); - if ( !fread(id, tga.id_length, 1, fp) ) + unsigned char *id = (unsigned char *) malloc(id_len); + if ( !fread(id, id_len, 1, fp) ) { fprintf(stderr, "\nError: fread return a number of element different from the expected.\n"); free(id); @@ -129,16 +160,16 @@ int tga_readheader(FILE *fp, unsigned int *bits_per_pixel, // Test for compressed formats ... not yet supported ... // Note :- 9 - RLE encoded palettized. // 10 - RLE encoded RGB. - if (tga.image_type > 8) + if (image_type > 8) { fprintf(stderr, "Sorry, compressed tga files are not currently supported.\n"); return 0 ; } - *flip_image = !(tga.image_desc & 32); + *flip_image = !(image_desc & 32); // Palettized formats are not yet supported, skip over the palette, if present ... - palette_size = tga.colour_map_length * (tga.colour_map_entry_size/8); + palette_size = cmap_len * (cmap_entry_size/8); if (palette_size>0) { @@ -151,31 +182,56 @@ int tga_readheader(FILE *fp, unsigned int *bits_per_pixel, int tga_writeheader(FILE *fp, int bits_per_pixel, int width, int height, opj_bool flip_image) { - tga_header tga; + unsigned short image_w, image_h, us0; + unsigned char uc0, image_type; + unsigned char pixel_depth, image_desc; if (!bits_per_pixel || !width || !height) return 0; - memset(&tga, 0, sizeof(tga_header)); + pixel_depth = 0; if ( bits_per_pixel < 256 ) - tga.pixel_depth = (unsigned char)bits_per_pixel; + pixel_depth = (unsigned char)bits_per_pixel; else{ fprintf(stderr,"ERROR: Wrong bits per pixel inside tga_header"); return 0; } - tga.image_width = (unsigned short)width; - tga.image_height = (unsigned short)height; - tga.image_type = 2; // Uncompressed. - tga.image_desc = 8; // 8 bits per component. + uc0 = 0; + + if(fwrite(&uc0, 1, 1, fp) != 1) goto fails; // id_length + if(fwrite(&uc0, 1, 1, fp) != 1) goto fails; // colour_map_type + + image_type = 2; // Uncompressed. + if(fwrite(&image_type, 1, 1, fp) != 1) goto fails; + + us0 = 0; + if(fwrite(&us0, 2, 1, fp) != 1) goto fails; // colour_map_index + if(fwrite(&us0, 2, 1, fp) != 1) goto fails; // colour_map_length + if(fwrite(&uc0, 1, 1, fp) != 1) goto fails; // colour_map_entry_size + + if(fwrite(&us0, 2, 1, fp) != 1) goto fails; // x_origin + if(fwrite(&us0, 2, 1, fp) != 1) goto fails; // y_origin + + image_w = (unsigned short)width; + image_h = (unsigned short) height; + + if(fwrite(&image_w, 2, 1, fp) != 1) goto fails; + if(fwrite(&image_h, 2, 1, fp) != 1) goto fails; + + if(fwrite(&pixel_depth, 1, 1, fp) != 1) goto fails; + + image_desc = 8; // 8 bits per component. if (flip_image) - tga.image_desc |= 32; - - // Write TGA header - fwrite((unsigned char*)&tga, sizeof(tga_header), 1, fp); + image_desc |= 32; + if(fwrite(&image_desc, 1, 1, fp) != 1) goto fails; return 1; + +fails: + fputs("\nwrite_tgaheader: write ERROR\n", stderr); + return 0; } opj_image_t* tgatoimage(const char *filename, opj_cparameters_t *parameters) { diff --git a/applications/codec/image_to_j2k.c b/applications/codec/image_to_j2k.c index 92353970..fa04a6fb 100644 --- a/applications/codec/image_to_j2k.c +++ b/applications/codec/image_to_j2k.c @@ -51,7 +51,7 @@ #include "opj_config.h" #include "openjpeg.h" -#include "getopt.h" +#include "opj_getopt.h" #include "convert.h" #include "index.h" @@ -574,7 +574,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, img_fol_t *img_fol, raw_cparameters_t *raw_cp, char *indexfilename) { int i, j, totlen, c; - option_t long_option[]={ + opj_option_t long_option[]={ {"cinema2K",REQ_ARG, NULL ,'w'}, {"cinema4K",NO_ARG, NULL ,'y'}, {"ImgDir",REQ_ARG, NULL ,'z'}, @@ -598,13 +598,13 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, raw_cp->rawWidth = 0; do{ - c = getopt_long(argc, argv, optlist,long_option,totlen); + c = opj_getopt_long(argc, argv, optlist,long_option,totlen); if (c == -1) break; switch (c) { case 'i': /* input file */ { - char *infile = optarg; + char *infile = opj_optarg; parameters->decod_format = get_file_format(infile); switch(parameters->decod_format) { case PGX_DFMT: @@ -630,7 +630,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'o': /* output file */ { - char *outfile = optarg; + char *outfile = opj_optarg; parameters->cod_format = get_file_format(outfile); switch(parameters->cod_format) { case J2K_CFMT: @@ -648,14 +648,14 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'O': /* output format */ { char outformat[50]; - char *of = optarg; + char *of = opj_optarg; sprintf(outformat,".%s",of); img_fol->set_out_format = 1; parameters->cod_format = get_file_format(outformat); switch(parameters->cod_format) { case J2K_CFMT: case JP2_CFMT: - img_fol->out_format = optarg; + img_fol->out_format = opj_optarg; break; default: fprintf(stderr, "Unknown output format image [only j2k, j2c, jp2]!! \n"); @@ -670,7 +670,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'r': /* rates rates/distorsion */ { - char *s = optarg; + char *s = opj_optarg; parameters->tcp_numlayers = 0; while (sscanf(s, "%f", ¶meters->tcp_rates[parameters->tcp_numlayers]) == 1) { parameters->tcp_numlayers++; @@ -691,7 +691,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'F': /* Raw image format parameters */ { char signo; - char *s = optarg; + char *s = opj_optarg; if (sscanf(s, "%d,%d,%d,%d,%c", &raw_cp->rawWidth, &raw_cp->rawHeight, &raw_cp->rawComp, &raw_cp->rawBitDepth, &signo) == 5) { if (signo == 's') { raw_cp->rawSigned = OPJ_TRUE; @@ -724,7 +724,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'q': /* add fixed_quality */ { - char *s = optarg; + char *s = opj_optarg; while (sscanf(s, "%f", ¶meters->tcp_distoratio[parameters->tcp_numlayers]) == 1) { parameters->tcp_numlayers++; while (*s && *s != ',') { @@ -746,7 +746,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, int *row = NULL, *col = NULL; int numlayers = 0, numresolution = 0, matrix_width = 0; - char *s = optarg; + char *s = opj_optarg; sscanf(s, "%d", &numlayers); s++; if (numlayers > 9) @@ -790,7 +790,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 't': /* tiles */ { - sscanf(optarg, "%d,%d", ¶meters->cp_tdx, ¶meters->cp_tdy); + sscanf(opj_optarg, "%d,%d", ¶meters->cp_tdx, ¶meters->cp_tdy); parameters->tile_size_on = OPJ_TRUE; } break; @@ -799,7 +799,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'n': /* resolution */ { - sscanf(optarg, "%d", ¶meters->numresolution); + sscanf(opj_optarg, "%d", ¶meters->numresolution); } break; @@ -809,7 +809,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, char sep; int res_spec = 0; - char *s = optarg; + char *s = opj_optarg; do { sep = 0; sscanf(s, "[%d,%d]%c", ¶meters->prcw_init[res_spec], @@ -828,7 +828,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'b': /* code-block dimension */ { int cblockw_init = 0, cblockh_init = 0; - sscanf(optarg, "%d,%d", &cblockw_init, &cblockh_init); + sscanf(opj_optarg, "%d,%d", &cblockw_init, &cblockh_init); if (cblockw_init * cblockh_init > 4096 || cblockw_init > 1024 || cblockw_init < 4 || cblockh_init > 1024 || cblockh_init < 4) { fprintf(stderr, @@ -845,7 +845,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'x': /* creation of index file */ { - char *index = optarg; + char *index = opj_optarg; strncpy(indexfilename, index, OPJ_PATH_LEN); } break; @@ -856,7 +856,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, { char progression[4]; - strncpy(progression, optarg, 4); + strncpy(progression, opj_optarg, 4); parameters->prog_order = give_progression(progression); if (parameters->prog_order == -1) { fprintf(stderr, "Unrecognized progression order " @@ -870,7 +870,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 's': /* subsampling factor */ { - if (sscanf(optarg, "%d,%d", ¶meters->subsampling_dx, + if (sscanf(opj_optarg, "%d,%d", ¶meters->subsampling_dx, ¶meters->subsampling_dy) != 2) { fprintf(stderr, "'-s' sub-sampling argument error ! [-s dx,dy]\n"); return 1; @@ -882,7 +882,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'd': /* coordonnate of the reference grid */ { - if (sscanf(optarg, "%d,%d", ¶meters->image_offset_x0, + if (sscanf(opj_optarg, "%d,%d", ¶meters->image_offset_x0, ¶meters->image_offset_y0) != 2) { fprintf(stderr, "-d 'coordonnate of the reference grid' argument " "error !! [-d x0,y0]\n"); @@ -904,7 +904,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, int numpocs = 0; /* number of progression order change (POC) default 0 */ opj_poc_t *POC = NULL; /* POC : used in case of Progression order change */ - char *s = optarg; + char *s = opj_optarg; POC = parameters->POC; while (sscanf(s, "T%d=%d,%d,%d,%d,%d,%4s", &POC[numpocs].tile, @@ -946,7 +946,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'M': /* Mode switch pas tous au point !! */ { int value = 0; - if (sscanf(optarg, "%d", &value) == 1) { + if (sscanf(opj_optarg, "%d", &value) == 1) { for (i = 0; i <= 5; i++) { int cache = value & (1 << i); if (cache) @@ -960,7 +960,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'R': /* ROI */ { - if (sscanf(optarg, "c=%d,U=%d", ¶meters->roi_compno, + if (sscanf(opj_optarg, "c=%d,U=%d", ¶meters->roi_compno, ¶meters->roi_shift) != 2) { fprintf(stderr, "ROI error !! [-ROI c='compno',U='shift']\n"); return 1; @@ -972,7 +972,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'T': /* Tile offset */ { - if (sscanf(optarg, "%d,%d", ¶meters->cp_tx0, ¶meters->cp_ty0) != 2) { + if (sscanf(opj_optarg, "%d,%d", ¶meters->cp_tx0, ¶meters->cp_ty0) != 2) { fprintf(stderr, "-T 'tile offset' argument error !! [-T X0,Y0]"); return 1; } @@ -983,9 +983,9 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'C': /* add a comment */ { - parameters->cp_comment = (char*)malloc(strlen(optarg) + 1); + parameters->cp_comment = (char*)malloc(strlen(opj_optarg) + 1); if(parameters->cp_comment) { - strcpy(parameters->cp_comment, optarg); + strcpy(parameters->cp_comment, opj_optarg); } } break; @@ -1003,7 +1003,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'v': /* Tile part generation*/ { - parameters->tp_flag = optarg[0]; + parameters->tp_flag = opj_optarg[0]; parameters->tp_on = 1; } break; @@ -1012,8 +1012,8 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'z': /* Image Directory path */ { - img_fol->imgdirpath = (char*)malloc(strlen(optarg) + 1); - strcpy(img_fol->imgdirpath,optarg); + img_fol->imgdirpath = (char*)malloc(strlen(opj_optarg) + 1); + strcpy(img_fol->imgdirpath,opj_optarg); img_fol->set_imgdir=1; } break; @@ -1023,7 +1023,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, case 'w': /* Digital Cinema 2K profile compliance*/ { int fps=0; - sscanf(optarg,"%d",&fps); + sscanf(opj_optarg,"%d",&fps); if(fps == 24){ parameters->cp_cinema = CINEMA2K_24; }else if(fps == 48 ){ @@ -1067,7 +1067,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters, /* search for different protection methods */ /* break the option in comma points and parse the result */ - token = strtok(optarg, ","); + token = strtok(opj_optarg, ","); while(token != NULL) { /* search header error protection method */ diff --git a/applications/codec/j2k_dump.c b/applications/codec/j2k_dump.c index 02f8316c..b490f4d4 100644 --- a/applications/codec/j2k_dump.c +++ b/applications/codec/j2k_dump.c @@ -47,7 +47,7 @@ #include "openjpeg.h" #include "j2k.h" #include "jp2.h" -#include "getopt.h" +#include "opj_getopt.h" #include "convert.h" #include "index.h" @@ -197,7 +197,7 @@ 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) { /* parse the command line */ int totlen, c; - option_t long_option[]={ + opj_option_t long_option[]={ {"ImgDir",REQ_ARG, NULL ,'y'}, }; const char optlist[] = "i:o:h"; @@ -207,13 +207,13 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i totlen=sizeof(long_option); img_fol->set_out_format = 0; do { - c = getopt_long(argc, argv,optlist,long_option,totlen); + c = opj_getopt_long(argc, argv,optlist,long_option,totlen); if (c == -1) break; switch (c) { case 'i': /* input file */ { - char *infile = optarg; + char *infile = opj_optarg; parameters->decod_format = get_file_format(infile); switch(parameters->decod_format) { case J2K_CFMT: @@ -234,7 +234,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i case 'o': /* output file */ { - char *outfile = optarg; + char *outfile = opj_optarg; strncpy(parameters->outfile, outfile, sizeof(parameters->outfile)-1); } break; @@ -249,8 +249,8 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i case 'y': /* Image Directory path */ { - img_fol->imgdirpath = (char*)malloc(strlen(optarg) + 1); - strcpy(img_fol->imgdirpath,optarg); + img_fol->imgdirpath = (char*)malloc(strlen(opj_optarg) + 1); + strcpy(img_fol->imgdirpath,opj_optarg); img_fol->set_imgdir=1; } break; @@ -258,7 +258,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i /* ----------------------------------------------------- */ default: - fprintf(stderr,"WARNING -> this option is not valid \"-%c %s\"\n",c, optarg); + fprintf(stderr,"WARNING -> this option is not valid \"-%c %s\"\n",c, opj_optarg); break; } }while(c != -1); diff --git a/applications/codec/j2k_to_image.c b/applications/codec/j2k_to_image.c index 2b421369..85bca04c 100644 --- a/applications/codec/j2k_to_image.c +++ b/applications/codec/j2k_to_image.c @@ -51,7 +51,7 @@ #include "opj_config.h" #include "openjpeg.h" -#include "getopt.h" +#include "opj_getopt.h" #include "convert.h" #include "index.h" @@ -238,7 +238,7 @@ 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) { /* parse the command line */ int totlen, c; - option_t long_option[]={ + opj_option_t long_option[]={ {"ImgDir",REQ_ARG, NULL ,'y'}, {"OutFor",REQ_ARG, NULL ,'O'}, }; @@ -254,13 +254,13 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i totlen=sizeof(long_option); img_fol->set_out_format = 0; do { - c = getopt_long(argc, argv,optlist,long_option,totlen); + c = opj_getopt_long(argc, argv,optlist,long_option,totlen); if (c == -1) break; switch (c) { case 'i': /* input file */ { - char *infile = optarg; + char *infile = opj_optarg; parameters->decod_format = get_file_format(infile); switch(parameters->decod_format) { case J2K_CFMT: @@ -281,7 +281,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i case 'o': /* output file */ { - char *outfile = optarg; + char *outfile = opj_optarg; parameters->cod_format = get_file_format(outfile); switch(parameters->cod_format) { case PGX_DFMT: @@ -305,7 +305,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i case 'O': /* output format */ { char outformat[50]; - char *of = optarg; + char *of = opj_optarg; sprintf(outformat,".%s",of); img_fol->set_out_format = 1; parameters->cod_format = get_file_format(outformat); @@ -344,7 +344,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i case 'r': /* reduce option */ { - sscanf(optarg, "%d", ¶meters->cp_reduce); + sscanf(opj_optarg, "%d", ¶meters->cp_reduce); } break; @@ -353,7 +353,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i case 'l': /* layering option */ { - sscanf(optarg, "%d", ¶meters->cp_layer); + sscanf(opj_optarg, "%d", ¶meters->cp_layer); } break; @@ -367,15 +367,15 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i case 'y': /* Image Directory path */ { - img_fol->imgdirpath = (char*)malloc(strlen(optarg) + 1); - strcpy(img_fol->imgdirpath,optarg); + img_fol->imgdirpath = (char*)malloc(strlen(opj_optarg) + 1); + strcpy(img_fol->imgdirpath,opj_optarg); img_fol->set_imgdir=1; } break; /* ----------------------------------------------------- */ case 'x': /* Creation of index file */ { - char *index = optarg; + char *index = opj_optarg; strncpy(indexfilename, index, OPJ_PATH_LEN); } break; @@ -387,7 +387,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i { char *token = NULL; - token = strtok(optarg, ","); + token = strtok(opj_optarg, ","); while(token != NULL) { /* search expected number of components */ @@ -454,7 +454,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,i /* ----------------------------------------------------- */ default: - fprintf(stderr,"WARNING -> this option is not valid \"-%c %s\"\n",c, optarg); + fprintf(stderr,"WARNING -> this option is not valid \"-%c %s\"\n",c, opj_optarg); break; } }while(c != -1); diff --git a/applications/codec/windirent.h b/applications/codec/windirent.h index 6bcc7787..7dd7fef3 100644 --- a/applications/codec/windirent.h +++ b/applications/codec/windirent.h @@ -124,7 +124,7 @@ # error "not implemented" # elif defined(__sgi) /* Silicon Graphics */ # define HAVE_DIRENT_H -# elif defined(sun) || defined(_sun) /* Sun Solaris */ +# elif defined(sun) || defined(__sun) /* Sun Solaris */ # define HAVE_DIRENT_H # elif defined(__FreeBSD__) /* FreeBSD */ # define HAVE_DIRENT_H diff --git a/applications/common/getopt.h b/applications/common/getopt.h deleted file mode 100644 index 1b32d2b6..00000000 --- a/applications/common/getopt.h +++ /dev/null @@ -1,29 +0,0 @@ -/* last review : october 29th, 2002 */ - -#ifndef _GETOPT_H_ -#define _GETOPT_H_ - -typedef struct option -{ - const char *name; - int has_arg; - int *flag; - int val; -}option_t; - -#define NO_ARG 0 -#define REQ_ARG 1 -#define OPT_ARG 2 - -extern int opterr; -extern int optind; -extern int optopt; -extern int optreset; -extern char *optarg; - -extern int getopt(int nargc, char *const *nargv, const char *ostr); -extern int getopt_long(int argc, char * const argv[], const char *optstring, - const struct option *longopts, int totlen); -extern void reset_options_reading(void); - -#endif /* _GETOPT_H_ */ diff --git a/applications/common/getopt.c b/applications/common/opj_getopt.c similarity index 61% rename from applications/common/getopt.c rename to applications/common/opj_getopt.c index 3edd969d..f6e6500a 100644 --- a/applications/common/getopt.c +++ b/applications/common/opj_getopt.c @@ -34,117 +34,110 @@ /* last review : october 29th, 2002 */ #if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)getopt.c 8.3 (Berkeley) 4/27/95"; +static char sccsid[] = "@(#)opj_getopt.c 8.3 (Berkeley) 4/27/95"; #endif /* LIBC_SCCS and not lint */ #include #include #include +#include "opj_getopt.h" -int opterr = 1, /* if error message should be printed */ - optind = 1, /* index into parent argv vector */ - optopt, /* character checked for validity */ - optreset; /* reset getopt */ -const char *optarg; /* argument associated with option */ - -typedef struct option -{ - const char *name; - int has_arg; - int *flag; - int val; -}option_t; +int opj_opterr = 1, /* if error message should be printed */ + opj_optind = 1, /* index into parent argv vector */ + opj_optopt, /* character checked for validity */ + opj_optreset; /* reset getopt */ + char *opj_optarg; /* argument associated with option */ #define BADCH (int)'?' #define BADARG (int)':' -#define EMSG "" +static char EMSG[]={""}; /* As this class remembers its values from one Java call to the other, reset the values before each use */ void reset_options_reading(void) { - opterr = 1; - optind = 1; + opj_opterr = 1; + opj_optind = 1; } /* * getopt -- * Parse argc/argv argument vector. */ -int getopt(int nargc, char *const *nargv, const char *ostr) { +int opj_getopt(int nargc, char *const *nargv, const char *ostr) { # define __progname nargv[0] - static const char *place = EMSG; /* option letter processing */ + static char *place = EMSG; /* option letter processing */ char *oli; /* option letter list index */ - if (optreset || !*place) { /* update scanning pointer */ - optreset = 0; - if (optind >= nargc || *(place = nargv[optind]) != '-') { + if (opj_optreset || !*place) { /* update scanning pointer */ + opj_optreset = 0; + if (opj_optind >= nargc || *(place = nargv[opj_optind]) != '-') { place = EMSG; return (-1); } if (place[1] && *++place == '-') { /* found "--" */ - ++optind; + ++opj_optind; place = EMSG; return (-1); } } /* option letter okay? */ - if ((optopt = (int) *place++) == (int) ':' || - !(oli = strchr(ostr, optopt))) { + if ((opj_optopt = (int) *place++) == (int) ':' || + !(oli = strchr(ostr, opj_optopt))) { /* * if the user didn't specify '-' as an option, * assume it means -1. */ - if (optopt == (int) '-') + if (opj_optopt == (int) '-') return (-1); if (!*place) - ++optind; - if (opterr && *ostr != ':') { + ++opj_optind; + if (opj_opterr && *ostr != ':') { fprintf(stderr, - "%s: illegal option -- %c\n", __progname, optopt); + "%s: illegal option -- %c\n", __progname, opj_optopt); return (BADCH); } } if (*++oli != ':') { /* don't need argument */ - optarg = NULL; + opj_optarg = NULL; if (!*place) - ++optind; + ++opj_optind; } else { /* need an argument */ if (*place) /* no white space */ - optarg = place; - else if (nargc <= ++optind) { /* no arg */ + opj_optarg = place; + else if (nargc <= ++opj_optind) { /* no arg */ place = EMSG; if (*ostr == ':') return (BADARG); - if (opterr) { + if (opj_opterr) { fprintf(stderr, "%s: option requires an argument -- %c\n", - __progname, optopt); + __progname, opj_optopt); return (BADCH); } } else /* white space */ - optarg = nargv[optind]; + opj_optarg = nargv[opj_optind]; place = EMSG; - ++optind; + ++opj_optind; } - return (optopt); /* dump back option letter */ + return (opj_optopt); /* dump back option letter */ } -int getopt_long(int argc, char * const argv[], const char *optstring, -const struct option *longopts, int totlen) { +int opj_getopt_long(int argc, char * const argv[], const char *optstring, +const opj_option_t *longopts, int totlen) { static int lastidx,lastofs; char *tmp; int i,len; char param = 1; again: - if (optind >= argc || !argv[optind] || *argv[optind]!='-') + if (opj_optind >= argc || !argv[opj_optind] || *argv[opj_optind]!='-') return -1; - if (argv[optind][0]=='-' && argv[optind][1]==0) { - if(optind >= (argc - 1)){ /* no more input parameters */ + if (argv[opj_optind][0]=='-' && argv[opj_optind][1]==0) { + if(opj_optind >= (argc - 1)){ /* no more input parameters */ param = 0; } else{ /* more input parameters */ - if(argv[optind + 1][0] == '-'){ + if(argv[opj_optind + 1][0] == '-'){ param = 0; /* Missing parameter after '-' */ } else{ @@ -154,50 +147,50 @@ again: } if (param == 0) { - ++optind; + ++opj_optind; return (BADCH); } - if (argv[optind][0]=='-') { /* long option */ - char* arg=argv[optind]+1; - const struct option* o; + if (argv[opj_optind][0]=='-') { /* long option */ + char* arg=argv[opj_optind]+1; + const opj_option_t* o; o=longopts; len=sizeof(longopts[0]); if (param > 1){ - arg = argv[optind+1]; - optind++; + arg = argv[opj_optind+1]; + opj_optind++; } else - arg = argv[optind]+1; + arg = argv[opj_optind]+1; if(strlen(arg)>1){ for (i=0;iname,arg)) { /* match */ if (o->has_arg == 0) { - if ((argv[optind+1])&&(!(argv[optind+1][0]=='-'))){ - fprintf(stderr,"%s: option does not require an argument. Ignoring %s\n",arg,argv[optind+1]); - ++optind; + if ((argv[opj_optind+1])&&(!(argv[opj_optind+1][0]=='-'))){ + fprintf(stderr,"%s: option does not require an argument. Ignoring %s\n",arg,argv[opj_optind+1]); + ++opj_optind; } }else{ - optarg=argv[optind+1]; - if(optarg){ - if (optarg[0] == '-'){ /* Has read next input parameter: No arg for current parameter */ - if (opterr) { + opj_optarg=argv[opj_optind+1]; + if(opj_optarg){ + if (opj_optarg[0] == '-'){ /* Has read next input parameter: No arg for current parameter */ + if (opj_opterr) { fprintf(stderr,"%s: option requires an argument\n",arg); return (BADCH); } } } - if (!optarg && o->has_arg==1) { /* no argument there */ - if (opterr) { + if (!opj_optarg && o->has_arg==1) { /* no argument there */ + if (opj_opterr) { fprintf(stderr,"%s: option requires an argument \n",arg); return (BADCH); } } - ++optind; + ++opj_optind; } - ++optind; + ++opj_optind; if (o->flag) *(o->flag)=o->val; else @@ -206,56 +199,56 @@ again: } }//(end for)String not found in the list fprintf(stderr,"Invalid option %s\n",arg); - ++optind; + ++opj_optind; return (BADCH); }else{ /*Single character input parameter*/ if (*optstring==':') return ':'; - if (lastidx!=optind) { - lastidx=optind; lastofs=0; + if (lastidx!=opj_optind) { + lastidx=opj_optind; lastofs=0; } - optopt=argv[optind][lastofs+1]; - if ((tmp=strchr(optstring,optopt))) {/*Found input parameter in list*/ + opj_optopt=argv[opj_optind][lastofs+1]; + if ((tmp=strchr(optstring,opj_optopt))) {/*Found input parameter in list*/ if (*tmp==0) { /* apparently, we looked for \0, i.e. end of argument */ - ++optind; + ++opj_optind; goto again; } if (tmp[1]==':') { /* argument expected */ - if (tmp[2]==':' || argv[optind][lastofs+2]) { /* "-foo", return "oo" as optarg */ - if (!*(optarg=argv[optind]+lastofs+2)) optarg=0; + if (tmp[2]==':' || argv[opj_optind][lastofs+2]) { /* "-foo", return "oo" as opj_optarg */ + if (!*(opj_optarg=argv[opj_optind]+lastofs+2)) opj_optarg=0; goto found; } - optarg=argv[optind+1]; - if(optarg){ - if (optarg[0] == '-'){ /* Has read next input parameter: No arg for current parameter */ - if (opterr) { + opj_optarg=argv[opj_optind+1]; + if(opj_optarg){ + if (opj_optarg[0] == '-'){ /* Has read next input parameter: No arg for current parameter */ + if (opj_opterr) { fprintf(stderr,"%s: option requires an argument\n",arg); return (BADCH); } } } - if (!optarg) { /* missing argument */ - if (opterr) { + if (!opj_optarg) { /* missing argument */ + if (opj_opterr) { fprintf(stderr,"%s: option requires an argument\n",arg); return (BADCH); } } - ++optind; + ++opj_optind; }else {/*Argument not expected*/ ++lastofs; - return optopt; + return opj_optopt; } found: - ++optind; - return optopt; + ++opj_optind; + return opj_optopt; } else { /* not found */ fprintf(stderr,"Invalid option %s\n",arg); - ++optind; + ++opj_optind; return (BADCH); }//end of not found }// end of single character }//end '-' fprintf(stderr,"Invalid option\n"); - ++optind; + ++opj_optind; return (BADCH);; }//end function diff --git a/applications/common/opj_getopt.h b/applications/common/opj_getopt.h new file mode 100644 index 00000000..e1f41a56 --- /dev/null +++ b/applications/common/opj_getopt.h @@ -0,0 +1,29 @@ +/* last review : october 29th, 2002 */ + +#ifndef _GETOPT_H_ +#define _GETOPT_H_ + +typedef struct opj_option +{ + const char *name; + int has_arg; + int *flag; + int val; +}opj_option_t; + +#define NO_ARG 0 +#define REQ_ARG 1 +#define OPT_ARG 2 + +extern int opj_opterr; +extern int opj_optind; +extern int opj_optopt; +extern int opj_optreset; +extern char *opj_optarg; + +extern int opj_getopt(int nargc, char *const *nargv, const char *ostr); +extern int opj_getopt_long(int argc, char * const argv[], const char *optstring, + const opj_option_t *longopts, int totlen); +extern void reset_options_reading(void); + +#endif /* _GETOPT_H_ */ diff --git a/applications/mj2/CMakeLists.txt b/applications/mj2/CMakeLists.txt index 4a43886f..32008a31 100644 --- a/applications/mj2/CMakeLists.txt +++ b/applications/mj2/CMakeLists.txt @@ -1,9 +1,6 @@ # Makefile for the MJ2 codecs of the OpenJPEG library: frames_to_mj2, mj2_to_frames, extract_j2k_from_mj2 and wrap_j2k_in_mj2 -SET(common_SRCS "") -IF(DONT_HAVE_GETOPT) - SET(common_SRCS ${OPENJPEG_SOURCE_DIR}/applications/common/getopt.c) -ENDIF(DONT_HAVE_GETOPT) +SET(common_SRCS ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c) # While mj2 executables do not use the API correctly, we do not link with the library but rather compile the sources files. SET(OPJ_SRCS diff --git a/applications/mj2/Makefile.am b/applications/mj2/Makefile.am index 6f8c225c..91bb3414 100644 --- a/applications/mj2/Makefile.am +++ b/applications/mj2/Makefile.am @@ -37,7 +37,7 @@ frames_to_mj2_CFLAGS = frames_to_mj2_LDADD = -lm frames_to_mj2_SOURCES = \ $(OPJ_SRC) \ -../common/getopt.c \ +../common/opj_getopt.c \ mj2_convert.c \ mj2.c \ frames_to_mj2.c \ @@ -58,7 +58,7 @@ mj2_to_frames_LDADD = @LCMS2_LIBS@ @LCMS1_LIBS@ mj2_to_frames_SOURCES = \ $(OPJ_SRC) \ ../common/color.c \ -../common/getopt.c \ +../common/opj_getopt.c \ mj2_convert.c \ mj2.c \ mj2_to_frames.c \ diff --git a/applications/mj2/frames_to_mj2.c b/applications/mj2/frames_to_mj2.c index 1e0d29a9..799d42ab 100644 --- a/applications/mj2/frames_to_mj2.c +++ b/applications/mj2/frames_to_mj2.c @@ -36,7 +36,7 @@ #include "cio.h" #include "mj2.h" #include "mj2_convert.h" -#include "getopt.h" +#include "opj_getopt.h" /** Size of memory first allocated for MOOV box @@ -289,15 +289,15 @@ int main(int argc, char **argv) } while (1) { - int c = getopt(argc, argv, + int c = opj_getopt(argc, argv, "i:o:r:q:f:t:n:c:b:p:s:d:P:S:E:M:R:T:C:I:W:F:D:h"); if (c == -1) break; switch (c) { case 'i': /* IN fill */ { - char *infile = optarg; - s = optarg; + char *infile = opj_optarg; + s = opj_optarg; while (*s) { s++; } @@ -324,7 +324,7 @@ int main(int argc, char **argv) /* ----------------------------------------------------- */ case 'o': /* OUT fill */ { - char *outfile = optarg; + char *outfile = opj_optarg; while (*outfile) { outfile++; } @@ -335,7 +335,7 @@ int main(int argc, char **argv) outfile--; S1 = *outfile; - outfile = optarg; + outfile = opj_optarg; if ((S1 == 'm' && S2 == 'j' && S3 == '2') || (S1 == 'M' && S2 == 'J' && S3 == '2')) @@ -353,7 +353,7 @@ int main(int argc, char **argv) case 'r': /* rates rates/distorsion */ { float rate; - s = optarg; + s = opj_optarg; while (sscanf(s, "%f", &rate) == 1) { j2k_parameters->tcp_rates[j2k_parameters->tcp_numlayers] = rate * 2; j2k_parameters->tcp_numlayers++; @@ -369,7 +369,7 @@ int main(int argc, char **argv) break; /* ----------------------------------------------------- */ case 'q': /* add fixed_quality */ - s = optarg; + s = opj_optarg; while (sscanf(s, "%f", &j2k_parameters->tcp_distoratio[j2k_parameters->tcp_numlayers]) == 1) { j2k_parameters->tcp_numlayers++; while (*s && *s != ',') { @@ -388,7 +388,7 @@ int main(int argc, char **argv) int *row = NULL, *col = NULL; int numlayers = 0, numresolution = 0, matrix_width = 0; - s = optarg; + s = opj_optarg; sscanf(s, "%d", &numlayers); s++; if (numlayers > 9) @@ -429,12 +429,12 @@ int main(int argc, char **argv) break; /* ----------------------------------------------------- */ case 't': /* tiles */ - sscanf(optarg, "%d,%d", &j2k_parameters->cp_tdx, &j2k_parameters->cp_tdy); + sscanf(opj_optarg, "%d,%d", &j2k_parameters->cp_tdx, &j2k_parameters->cp_tdy); j2k_parameters->tile_size_on = OPJ_TRUE; break; /* ----------------------------------------------------- */ case 'n': /* resolution */ - sscanf(optarg, "%d", &j2k_parameters->numresolution); + sscanf(opj_optarg, "%d", &j2k_parameters->numresolution); break; /* ----------------------------------------------------- */ case 'c': /* precinct dimension */ @@ -442,7 +442,7 @@ int main(int argc, char **argv) char sep; int res_spec = 0; - char *s = optarg; + char *s = opj_optarg; do { sep = 0; sscanf(s, "[%d,%d]%c", &j2k_parameters->prcw_init[res_spec], @@ -460,7 +460,7 @@ int main(int argc, char **argv) case 'b': /* code-block dimension */ { int cblockw_init = 0, cblockh_init = 0; - sscanf(optarg, "%d,%d", &cblockw_init, &cblockh_init); + sscanf(opj_optarg, "%d,%d", &cblockw_init, &cblockh_init); if (cblockw_init * cblockh_init > 4096 || cblockw_init > 1024 || cblockw_init < 4 || cblockh_init > 1024 || cblockh_init < 4) { fprintf(stderr, @@ -477,7 +477,7 @@ int main(int argc, char **argv) { char progression[5]; - strncpy(progression, optarg, 5); + strncpy(progression, opj_optarg, 5); j2k_parameters->prog_order = give_progression(progression); if (j2k_parameters->prog_order == -1) { fprintf(stderr, "Unrecognized progression order " @@ -489,7 +489,7 @@ int main(int argc, char **argv) /* ----------------------------------------------------- */ case 's': /* subsampling factor */ { - if (sscanf(optarg, "%d,%d", &j2k_parameters->subsampling_dx, + if (sscanf(opj_optarg, "%d,%d", &j2k_parameters->subsampling_dx, &j2k_parameters->subsampling_dy) != 2) { fprintf(stderr, "'-s' sub-sampling argument error ! [-s dx,dy]\n"); return 1; @@ -499,7 +499,7 @@ int main(int argc, char **argv) /* ----------------------------------------------------- */ case 'd': /* coordonnate of the reference grid */ { - if (sscanf(optarg, "%d,%d", &j2k_parameters->image_offset_x0, + if (sscanf(opj_optarg, "%d,%d", &j2k_parameters->image_offset_x0, &j2k_parameters->image_offset_y0) != 2) { fprintf(stderr, "-d 'coordonnate of the reference grid' argument " "error !! [-d x0,y0]\n"); @@ -518,7 +518,7 @@ int main(int argc, char **argv) int numpocs = 0; /* number of progression order change (POC) default 0 */ opj_poc_t *POC = NULL; /* POC : used in case of Progression order change */ - char *s = optarg; + char *s = opj_optarg; POC = j2k_parameters->POC; while (sscanf(s, "T%d=%d,%d,%d,%d,%d,%4s", &POC[numpocs].tile, @@ -548,7 +548,7 @@ int main(int argc, char **argv) break; /* ------------------------------------------------------ */ case 'M': /* Mode switch pas tous au point !! */ - if (sscanf(optarg, "%d", &value) == 1) { + if (sscanf(opj_optarg, "%d", &value) == 1) { for (i = 0; i <= 5; i++) { int cache = value & (1 << i); if (cache) @@ -559,7 +559,7 @@ int main(int argc, char **argv) /* ------------------------------------------------------ */ case 'R': /* ROI */ { - if (sscanf(optarg, "OI:c=%d,U=%d", &j2k_parameters->roi_compno, + if (sscanf(opj_optarg, "OI:c=%d,U=%d", &j2k_parameters->roi_compno, &j2k_parameters->roi_shift) != 2) { fprintf(stderr, "ROI error !! [-ROI:c='compno',U='shift']\n"); return 1; @@ -569,7 +569,7 @@ int main(int argc, char **argv) /* ------------------------------------------------------ */ case 'T': /* Tile offset */ { - if (sscanf(optarg, "%d,%d", &j2k_parameters->cp_tx0, &j2k_parameters->cp_ty0) != 2) { + if (sscanf(opj_optarg, "%d,%d", &j2k_parameters->cp_tx0, &j2k_parameters->cp_ty0) != 2) { fprintf(stderr, "-T 'tile offset' argument error !! [-T X0,Y0]"); return 1; } @@ -578,9 +578,9 @@ int main(int argc, char **argv) /* ------------------------------------------------------ */ case 'C': /* Add a comment */ { - j2k_parameters->cp_comment = (char*)malloc(strlen(optarg) + 1); + j2k_parameters->cp_comment = (char*)malloc(strlen(opj_optarg) + 1); if(j2k_parameters->cp_comment) { - strcpy(j2k_parameters->cp_comment, optarg); + strcpy(j2k_parameters->cp_comment, opj_optarg); } } break; @@ -593,7 +593,7 @@ int main(int argc, char **argv) /* ------------------------------------------------------ */ case 'W': /* Width and Height and Cb and Cr subsampling in case of YUV format files */ if (sscanf - (optarg, "%d,%d,%d,%d", &mj2_parameters.w, &mj2_parameters.h, &mj2_parameters.CbCr_subsampling_dx, + (opj_optarg, "%d,%d,%d,%d", &mj2_parameters.w, &mj2_parameters.h, &mj2_parameters.CbCr_subsampling_dx, &mj2_parameters.CbCr_subsampling_dy) != 4) { fprintf(stderr, "-W argument error"); return 1; @@ -601,14 +601,14 @@ int main(int argc, char **argv) break; /* ------------------------------------------------------ */ case 'F': /* Video frame rate */ - if (sscanf(optarg, "%d", &mj2_parameters.frame_rate) != 1) { + if (sscanf(opj_optarg, "%d", &mj2_parameters.frame_rate) != 1) { fprintf(stderr, "-F argument error"); return 1; } break; /* ------------------------------------------------------ */ case 'D': /* Depth: the precision */ - if(sscanf(optarg, "%d", &prec) != 1) prec = 0; + if(sscanf(opj_optarg, "%d", &prec) != 1) prec = 0; break; default: diff --git a/applications/mj2/mj2_to_metadata.c b/applications/mj2/mj2_to_metadata.c index ed2ce413..489f19cb 100644 --- a/applications/mj2/mj2_to_metadata.c +++ b/applications/mj2/mj2_to_metadata.c @@ -16,7 +16,7 @@ can be bound by the Open JPEG open-source license and disclaimer, expressed else #include "mj2_to_metadata.h" #include -#include "getopt.h" +#include "opj_getopt.h" /* -------------------------------------------------------------------------- */ diff --git a/applications/mj2/mj2_to_metadata.vcproj b/applications/mj2/mj2_to_metadata.vcproj index 4207365c..b280bfe5 100644 --- a/applications/mj2/mj2_to_metadata.vcproj +++ b/applications/mj2/mj2_to_metadata.vcproj @@ -208,7 +208,7 @@ Name="MJ2 Header Files" > #include "opj_config.h" -#include "getopt.h" +#include "opj_getopt.h" #include "openjpeg.h" #include "format_defs.h" @@ -110,60 +110,60 @@ int parse_cmdline_cmp(int argc, char **argv, test_cmp_parameters* param) param->tabPEAKvalues = NULL; param->nr_flag = 0; - opterr = 0; + opj_opterr = 0; - while ((c = getopt(argc, argv, optlist)) != -1) + while ((c = opj_getopt(argc, argv, optlist)) != -1) switch (c) { case 'b': - sizemembasefile = (int)strlen(optarg)+1; + sizemembasefile = (int)strlen(opj_optarg)+1; param->base_filename = (char*) malloc(sizemembasefile); param->base_filename[0] = '\0'; - strncpy(param->base_filename, optarg, strlen(optarg)); - param->base_filename[strlen(optarg)] = '\0'; + strncpy(param->base_filename, opj_optarg, strlen(opj_optarg)); + param->base_filename[strlen(opj_optarg)] = '\0'; //printf("param->base_filename = %s [%d / %d]\n", param->base_filename, strlen(param->base_filename), sizemembasefile ); break; case 't': - sizememtestfile = (int) strlen(optarg) + 1; + sizememtestfile = (int) strlen(opj_optarg) + 1; param->test_filename = (char*) malloc(sizememtestfile); param->test_filename[0] = '\0'; - strncpy(param->test_filename, optarg, strlen(optarg)); - param->test_filename[strlen(optarg)] = '\0'; + strncpy(param->test_filename, opj_optarg, strlen(opj_optarg)); + param->test_filename[strlen(opj_optarg)] = '\0'; //printf("param->test_filename = %s [%d / %d]\n", param->test_filename, strlen(param->test_filename), sizememtestfile); break; case 'n': - param->nbcomp = atoi(optarg); + param->nbcomp = atoi(opj_optarg); break; case 'm': - MSElistvalues = optarg; + MSElistvalues = opj_optarg; flagM = 1; break; case 'p': - PEAKlistvalues = optarg; + PEAKlistvalues = opj_optarg; flagP = 1; break; case 'd': param->nr_flag = 1; break; case 's': - separatorList = optarg; + separatorList = opj_optarg; break; case '?': - if ((optopt == 'b') || (optopt == 't') || (optopt == 'n') || (optopt == 'p') || (optopt == 'm') || (optopt + if ((opj_optopt == 'b') || (opj_optopt == 't') || (opj_optopt == 'n') || (opj_optopt == 'p') || (opj_optopt == 'm') || (opj_optopt == 's')) - fprintf(stderr, "Option -%c requires an argument.\n", optopt); + fprintf(stderr, "Option -%c requires an argument.\n", opj_optopt); else - if (isprint(optopt)) fprintf(stderr, "Unknown option `-%c'.\n", optopt); - else fprintf(stderr, "Unknown option character `\\x%x'.\n", optopt); + if (isprint(opj_optopt)) fprintf(stderr, "Unknown option `-%c'.\n", opj_optopt); + else fprintf(stderr, "Unknown option character `\\x%x'.\n", opj_optopt); return 1; default: - fprintf(stderr, "WARNING -> this option is not valid \"-%c %s\"\n", c, optarg); + fprintf(stderr, "WARNING -> this option is not valid \"-%c %s\"\n", c, opj_optarg); break; } - if (optind != argc) + if (opj_optind != argc) { - for (index = optind; index < argc; index++) + for (index = opj_optind; index < argc; index++) fprintf(stderr,"Non-option argument %s\n", argv[index]); return EXIT_FAILURE; } diff --git a/tests/compareRAWimages.c b/tests/compareRAWimages.c new file mode 100644 index 00000000..24738873 --- /dev/null +++ b/tests/compareRAWimages.c @@ -0,0 +1,192 @@ +/* + * Copyright (c) 2011, Mickael Savinaud, Communications & Systemes + * 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. + */ + +/* + * compareRAWimages.c + * + * Created on: 31 August 2011 + * Author: mickael + */ + +#include +#include +#include +#include + +#include "opj_getopt.h" + +void compareRAWimages_help_display(void); + +typedef struct test_cmp_parameters +{ + /** */ + char* base_filename; + /** */ + char* test_filename; +} test_cmp_parameters; + +/******************************************************************************* + * Command line help function + *******************************************************************************/ +void compareRAWimages_help_display(void) { + fprintf(stdout,"\nList of parameters for the comparePGX function \n"); + fprintf(stdout,"\n"); + fprintf(stdout," -b \t REQUIRED \t filename to the reference/baseline RAW image \n"); + fprintf(stdout," -t \t REQUIRED \t filename to the test RAW image\n"); + fprintf(stdout,"\n"); +} + +/******************************************************************************* + * Parse command line + *******************************************************************************/ +int parse_cmdline_cmp(int argc, char **argv, test_cmp_parameters* param) +{ + int sizemembasefile, sizememtestfile; + int index; + const char optlist[] = "b:t:"; + int c; + + // Init parameters + param->base_filename = NULL; + param->test_filename = NULL; + + opj_opterr = 0; + while ((c = getopt(argc, argv, optlist)) != -1) + switch (c) + { + case 'b': + sizemembasefile = (int)strlen(opj_optarg)+1; + param->base_filename = (char*) malloc(sizemembasefile); + param->base_filename[0] = '\0'; + strncpy(param->base_filename, opj_optarg, strlen(opj_optarg)); + param->base_filename[strlen(opj_optarg)] = '\0'; + //printf("param->base_filename = %s [%d / %d]\n", param->base_filename, strlen(param->base_filename), sizemembasefile ); + break; + case 't': + sizememtestfile = (int) strlen(opj_optarg) + 1; + param->test_filename = (char*) malloc(sizememtestfile); + param->test_filename[0] = '\0'; + strncpy(param->test_filename, opj_optarg, strlen(opj_optarg)); + param->test_filename[strlen(opj_optarg)] = '\0'; + //printf("param->test_filename = %s [%d / %d]\n", param->test_filename, strlen(param->test_filename), sizememtestfile); + break; + case '?': + if ((opj_optopt == 'b') || (opj_optopt == 't')) + fprintf(stderr, "Option -%c requires an argument.\n", opj_optopt); + else + if (isprint(opj_optopt)) fprintf(stderr, "Unknown option `-%c'.\n", opj_optopt); + else fprintf(stderr, "Unknown option character `\\x%x'.\n", opj_optopt); + return 1; + default: + fprintf(stderr, "WARNING -> this option is not valid \"-%c %s\"\n", c, opj_optarg); + break; + } + + if (opj_optind != argc) { + for (index = opj_optind; index < argc; index++) + fprintf(stderr,"Non-option argument %s\n", argv[index]); + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +} + +/******************************************************************************* + * MAIN + *******************************************************************************/ +int main(int argc, char **argv) +{ + test_cmp_parameters inParam; + FILE *file_test=NULL, *file_base=NULL; + unsigned char equal = 1; + + // Get parameters from command line + if (parse_cmdline_cmp(argc, argv, &inParam) == EXIT_FAILURE) + { + compareRAWimages_help_display(); + return EXIT_FAILURE; + } + + file_test = fopen(inParam.test_filename, "rb"); + if (!file_test) { + fprintf(stderr, "Failed to open %s for reading !!\n", inParam.test_filename); + return EXIT_FAILURE; + } + + file_base = fopen(inParam.base_filename, "rb"); + if (!file_base) { + fprintf(stderr, "Failed to open %s for reading !!\n", inParam.base_filename); + return EXIT_FAILURE; + } + + // Read simultaneously the two files + while (equal) + { + unsigned char value_test = 0; + unsigned char eof_test = 0; + unsigned char value_base = 0; + unsigned char eof_base = 0; + + // Read one byte + if (!fread(&value_test, 1, 1, file_test)) { + eof_test = 1; + } + + // Read one byte + if (!fread(&value_base, 1, 1, file_base)) { + eof_base = 1;; + } + + // End of file reached by the two files? + if (eof_test && eof_base) + break; + + // End of file reached only by one file? + if (eof_test || eof_base) + { + fprintf(stdout,"Files have different sizes.\n"); + equal = 0; + } + + // Binary values are equal? + if (value_test != value_base) + { + fprintf(stdout,"Binary values read in the file are different.\n"); + equal = 0; + } + } + + fclose(file_test); + fclose(file_base); + + if (equal) + { + fprintf(stdout,"---- TEST SUCCEED: Files are equal ----\n"); + return EXIT_SUCCESS; + } + else + return EXIT_FAILURE; +} diff --git a/tests/compare_dump_files.c b/tests/compare_dump_files.c index c95d1610..cd962bd4 100644 --- a/tests/compare_dump_files.c +++ b/tests/compare_dump_files.c @@ -37,7 +37,7 @@ #include #include -#include "getopt.h" +#include "opj_getopt.h" typedef struct test_cmp_parameters { @@ -71,42 +71,42 @@ int parse_cmdline_cmp(int argc, char **argv, test_cmp_parameters* param) param->base_filename = NULL; param->test_filename = NULL; - opterr = 0; + opj_opterr = 0; - while ((c = getopt(argc, argv, optlist)) != -1) + while ((c = opj_getopt(argc, argv, optlist)) != -1) switch (c) { case 'b': - sizemembasefile = (int)strlen(optarg)+1; + sizemembasefile = (int)strlen(opj_optarg)+1; param->base_filename = (char*) malloc(sizemembasefile); param->base_filename[0] = '\0'; - strncpy(param->base_filename, optarg, strlen(optarg)); - param->base_filename[strlen(optarg)] = '\0'; + strncpy(param->base_filename, opj_optarg, strlen(opj_optarg)); + param->base_filename[strlen(opj_optarg)] = '\0'; //printf("param->base_filename = %s [%d / %d]\n", param->base_filename, strlen(param->base_filename), sizemembasefile ); break; case 't': - sizememtestfile = (int) strlen(optarg) + 1; + sizememtestfile = (int) strlen(opj_optarg) + 1; param->test_filename = (char*) malloc(sizememtestfile); param->test_filename[0] = '\0'; - strncpy(param->test_filename, optarg, strlen(optarg)); - param->test_filename[strlen(optarg)] = '\0'; + strncpy(param->test_filename, opj_optarg, strlen(opj_optarg)); + param->test_filename[strlen(opj_optarg)] = '\0'; //printf("param->test_filename = %s [%d / %d]\n", param->test_filename, strlen(param->test_filename), sizememtestfile); break; case '?': - if ( (optopt == 'b') || (optopt == 't') ) - fprintf(stderr, "Option -%c requires an argument.\n", optopt); + if ( (opj_optopt == 'b') || (opj_optopt == 't') ) + fprintf(stderr, "Option -%c requires an argument.\n", opj_optopt); else - if (isprint(optopt)) fprintf(stderr, "Unknown option `-%c'.\n", optopt); - else fprintf(stderr, "Unknown option character `\\x%x'.\n", optopt); + if (isprint(opj_optopt)) fprintf(stderr, "Unknown option `-%c'.\n", opj_optopt); + else fprintf(stderr, "Unknown option character `\\x%x'.\n", opj_optopt); return 1; default: - fprintf(stderr, "WARNING -> this option is not valid \"-%c %s\"\n", c, optarg); + fprintf(stderr, "WARNING -> this option is not valid \"-%c %s\"\n", c, opj_optarg); break; } - if (optind != argc) + if (opj_optind != argc) { - for (index = optind; index < argc; index++) + for (index = opj_optind; index < argc; index++) fprintf(stderr,"Non-option argument %s\n", argv[index]); return EXIT_FAILURE; } @@ -190,7 +190,6 @@ int main(int argc, char **argv) size_t nbytes = 2048; int CRLF_shift=1; char *strbase, *strtest, *strbase_d, *strtest_d; - char *return_value_fgets; printf("Files differ at line %lu:\n", l); fseek(fbase,pos,SEEK_SET); @@ -207,27 +206,29 @@ int main(int argc, char **argv) strbase = (char *) malloc(nbytes + 1); strtest = (char *) malloc(nbytes + 1); - return_value_fgets = fgets(strbase, nbytes, fbase); - if (!strcmp(return_value_fgets,strbase)) - fprintf(stderr,"\nWARNING: fgets return a value different that the first argument"); - free(return_value_fgets); + if (fgets(strbase, nbytes, fbase) == NULL) + fprintf(stderr,"\nWARNING: fgets return a NULL value"); + else + { + if (fgets(strtest, nbytes, ftest) == NULL) + fprintf(stderr,"\nWARNING: fgets return a NULL value"); + else + { + strbase_d = (char *) malloc(strlen(strbase)+1); + strtest_d = (char *) malloc(strlen(strtest)+1); + strncpy(strbase_d, strbase, strlen(strbase)-1); + strncpy(strtest_d, strtest, strlen(strtest)-CRLF_shift); + strbase_d[strlen(strbase)-1] = '\0'; + strtest_d[strlen(strtest)-CRLF_shift] = '\0'; + printf("<%s> vs. <%s>\n", strbase_d, strtest_d); + free(strbase_d);free(strtest_d); + } + } - return_value_fgets = fgets(strtest, nbytes, ftest); - if (!strcmp(return_value_fgets,strtest)) - fprintf(stderr,"\nWARNING: fgets return a value different that the first argument"); - free(return_value_fgets); + free(strbase);free(strtest); + + same = 0; - strbase_d = (char *) malloc(strlen(strbase)+1); - strtest_d = (char *) malloc(strlen(strtest)+1); - strncpy(strbase_d, strbase, strlen(strbase)-1); - strncpy(strtest_d, strtest, strlen(strtest)-CRLF_shift); - strbase_d[strlen(strbase)-1] = '\0'; - strtest_d[strlen(strtest)-CRLF_shift] = '\0'; - printf("<%s> vs. <%s>\n", strbase_d, strtest_d); - - free(strbase);free(strtest); - free(strbase_d);free(strtest_d); - same = 0; break; } else diff --git a/tests/nonregression/CMakeLists.txt b/tests/nonregression/CMakeLists.txt index f8a67ceb..954f646d 100644 --- a/tests/nonregression/CMakeLists.txt +++ b/tests/nonregression/CMakeLists.txt @@ -51,4 +51,166 @@ FOREACH(filepath ${OPJ_DATA_NR_LIST}) # PROPERTIES DEPENDS # NR-${filename}-decode) -ENDFOREACH(filepath) \ No newline at end of file +<<<<<<< .working +ENDFOREACH(filepath)======= +ENDFOREACH(filepath) + + +# TEST ENCODER SUITE +# Read a input file to know which files processed and with which options. + +IF (NOT WIN32) +CONFIGURE_FILE("opj_ref_decode_cmd.sh.in" + "${CMAKE_CURRENT_BINARY_DIR}/opj_ref_decode_cmd.sh" + @ONLY) +ENDIF (NOT WIN32) + +string(COMPARE EQUAL ${REF_DECODER_BIN_PATH} "NOTFOUND" REF_DECODER_NOTFOUND) +IF (REF_DECODER_NOTFOUND) + MESSAGE(STATUS "REF_DECODER_BIN_PATH not found, if you want all the encoding tests suite please provide a regular path") +ENDIF (REF_DECODER_NOTFOUND) + + +# Read the file into a list +FILE(STRINGS encoder_test_suite.txt OPJ_TEST_ENC_CMD_LINE_LIST) + +SET(it_test 0) + +FOREACH(OPJ_TEST_ENC_CMD_LINE ${OPJ_TEST_ENC_CMD_LINE_LIST}) + math(EXPR it_test "${it_test}+1" ) + + #message(STATUS ${OPJ_TEST_ENC_CMD_LINE}) + + string(REPLACE " " ";" CMD_ARG_LIST ${OPJ_TEST_ENC_CMD_LINE}) + + #message(STATUS "list = ${CMD_ARG_LIST}") + + list(GET CMD_ARG_LIST 0 EXE_NAME) + string(COMPARE EQUAL ${EXE_NAME} "image_to_j2k" EXE_NAME_FOUND) + IF(EXE_NAME_FOUND) + list(REMOVE_AT CMD_ARG_LIST 0) + ELSE(EXE_NAME_FOUND) + string(COMPARE EQUAL ${EXE_NAME} "#" IGNORE_LINE_FOUND) + IF(IGNORE_LINE_FOUND) + message( STATUS "Current line is ignored: ${OPJ_TEST_ENC_CMD_LINE}") + ELSE(IGNORE_LINE_FOUND) + message( FATAL_ERROR "${EXE_ARG} is not the right executable name to encode file (try to use image_to_j2k)") + ENDIF(IGNORE_LINE_FOUND) + ENDIF(EXE_NAME_FOUND) + + IF(NOT IGNORE_LINE_FOUND) + SET(CMD_ARG_LIST_2 "") + SET(ARG_POS 0) + SET(INPUT_ARG_POS 0) + SET(OUTPUT_ARG_POS 0) + + FOREACH(CMD_ARG_ELT ${CMD_ARG_LIST}) + math(EXPR ARG_POS "${ARG_POS}+1" ) + + # Will work only with cmake version > 2.8.4 + #message(STATUS "${CMD_ARG_ELT}") + #string(FIND "${CMD_ARG_ELT}" "-i input/" INPUT_ARG_FOUND) + #message(STATUS "pos = ${INPUT_ARG_FOUND}") + #IF(INPUT_ARG_FOUND) + # string(SUBSTRING ${CMD_ARG_ELT} INPUT_ARG_FOUND -1 filename_input) + # message(STATUS "filename = ${filename_input}") + #ELSE(INPUT_ARG_FOUND) + # message( FATAL_ERROR "Not found a input image into the list of arguments") + #ENDIF(INPUT_ARG_FOUND) + + + string(COMPARE EQUAL ${CMD_ARG_ELT} "-i" INPUT_ARG_FOUND) + IF(INPUT_ARG_FOUND) + SET(INPUT_ARG_POS ${ARG_POS}) + SET(INPUT_ARG_FOUND 0) + ENDIF(INPUT_ARG_FOUND) + + string(COMPARE EQUAL ${CMD_ARG_ELT} "-o" OUTPUT_ARG_FOUND) + IF(OUTPUT_ARG_FOUND) + SET(OUTPUT_ARG_POS ${ARG_POS}) + SET(OUTPUT_ARG_FOUND 0) + ENDIF(OUTPUT_ARG_FOUND) + + string(REPLACE "input/" "${INPUT_NR}/" CMD_ARG_ELT ${CMD_ARG_ELT}) + string(REPLACE "temp/" "${TEMP}/" CMD_ARG_ELT ${CMD_ARG_ELT}) + + list (APPEND CMD_ARG_LIST_2 ${CMD_ARG_ELT}) + + ENDFOREACH(CMD_ARG_ELT) + + list(GET CMD_ARG_LIST_2 ${INPUT_ARG_POS} INPUT_FILENAME) + get_filename_component(INPUT_FILENAME_NAME ${INPUT_FILENAME} NAME) + list(GET CMD_ARG_LIST_2 ${OUTPUT_ARG_POS} OUTPUT_FILENAME) + get_filename_component(OUTPUT_FILENAME_NAME_WE ${OUTPUT_FILENAME} NAME_WE) + + + # Encode an image into the jpeg2000 format + ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-encode + ${EXECUTABLE_OUTPUT_PATH}/${EXE_NAME} + ${CMD_ARG_LIST_2} + ) + + # Dump the encoding file + ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-dump + ${EXECUTABLE_OUTPUT_PATH}/j2k_dump + -i ${OUTPUT_FILENAME} + -o ${OUTPUT_FILENAME}-ENC-${it_test}.txt + ) + SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-dump + PROPERTIES DEPENDS + NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-encode) + + # Compare the dump file with the baseline + ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dump2base + ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files + -b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${it_test}.txt + -t ${OUTPUT_FILENAME}-ENC-${it_test}.txt + ) + + SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dump2base + PROPERTIES DEPENDS + NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-dump) + + # Decode the encoding file with kakadu expand command + IF (NOT REF_DECODER_NOTFOUND) + IF (NOT WIN32) + # Need a bash script to export the path of the kakadu library into PATH + ADD_TEST( NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref + bash ${CMAKE_CURRENT_BINARY_DIR}/opj_ref_decode_cmd.sh + -i ${OUTPUT_FILENAME} + -o ${OUTPUT_FILENAME}.raw + ) + ELSE (NOT WIN32) + ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref + ${REF_DECODER_BIN_PATH}/kdu_expand + -i ${OUTPUT_FILENAME} + -o ${OUTPUT_FILENAME}.raw + ) + ENDIF (NOT WIN32) + + SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref + PROPERTIES DEPENDS + NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-encode) + + # Compare the decoding file with baseline generated from the kdu_expand and baseline.j2k + ADD_TEST(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dec-ref-out2base + ${EXECUTABLE_OUTPUT_PATH}/compareRAWimages + #-b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${it_test}.raw + -b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${it_test}.raw + -t ${OUTPUT_FILENAME}.raw + ) + + SET_TESTS_PROPERTIES(NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-compare_dec-ref-out2base + PROPERTIES DEPENDS + NR-ENC-${INPUT_FILENAME_NAME}-${it_test}-decode-ref) + + ENDIF (NOT REF_DECODER_NOTFOUND) + + ENDIF(NOT IGNORE_LINE_FOUND) + +ENDFOREACH(OPJ_TEST_ENC_CMD_LINE) + + + + +>>>>>>> .merge-right.r907 diff --git a/tests/nonregression/encoder_test_suite.txt b/tests/nonregression/encoder_test_suite.txt new file mode 100644 index 00000000..d80d2bb5 --- /dev/null +++ b/tests/nonregression/encoder_test_suite.txt @@ -0,0 +1,14 @@ +image_to_j2k -i input/Bretagne1.ppm -o temp/Bretagne1_0.j2k -r 200,50,10 +image_to_j2k -i input/Bretagne1.ppm -o temp/Bretagne1_1.j2k -q 30,35,40 -n 2 +image_to_j2k -i input/Bretagne1.ppm -o temp/Bretagne1_2.j2k -q 30,35,40 -b 16,16 -c [64,64] +image_to_j2k -i input/Bretagne2.ppm -o temp/Bretagne2_0.j2k -c [128,128],[128,128],[128,128] -r 100,20,2 -t 640,480 -b 32,32 +image_to_j2k -i input/Bretagne2.ppm -o temp/Bretagne2_1.j2k -t 127,127 -p PCRL +image_to_j2k -i input/Bretagne2.ppm -o temp/Bretagne2_2.j2k -s 2,2 -SOP +image_to_j2k -i input/Bretagne2.ppm -o temp/Bretagne2_3.j2k -EPH -M 38 +image_to_j2k -i input/Bretagne2.ppm -o temp/Bretagne2_4.j2k -d 150,300 -r 800 +image_to_j2k -i input/Cevennes1.bmp -o temp/Cevennes1.j2k -r 10 +image_to_j2k -i input/Cevennes2.ppm -o temp/Cevennes2.jp2 -r 50 +image_to_j2k -i input/Rome.bmp -o temp/Rome.jp2 -q 30,35,50 -p LRCP -n 3 +# image_to_j2k -i input/X_4_2K_24_185_CBR_WB_000.tif -o temp/X_4_2K_24_185_CBR_WB_000.j2k -cinema2K 24 +# image_to_j2k -i input/X_5_2K_24_235_CBR_STEM24_000.tif -o temp/X_5_2K_24_235_CBR_STEM24_000.j2k -cinema2K 24 +# image_to_j2k -i input/X_6_2K_24_FULL_CBR_CIRCLE_000.tif -o temp/X_6_2K_24_FULL_CBR_CIRCLE_000.j2k -cinema2K 24 diff --git a/tests/nonregression/opj_ref_decode_cmd.sh.in b/tests/nonregression/opj_ref_decode_cmd.sh.in new file mode 100644 index 00000000..f2147886 --- /dev/null +++ b/tests/nonregression/opj_ref_decode_cmd.sh.in @@ -0,0 +1,4 @@ +#!/bin/bash +export LD_LIBRARY_PATH="@REF_DECODER_BIN_PATH@" +echo run following command: @REF_DECODER_BIN_PATH@/kdu_expand $@ +@REF_DECODER_BIN_PATH@/kdu_expand $@ \ No newline at end of file