]> granicus.if.org Git - openjpeg/commitdiff
[trunk] fix compilation on windows where getopt is not available
authorMathieu Malaterre <mathieu.malaterre@gmail.com>
Mon, 1 Oct 2012 10:19:12 +0000 (10:19 +0000)
committerMathieu Malaterre <mathieu.malaterre@gmail.com>
Mon, 1 Oct 2012 10:19:12 +0000 (10:19 +0000)
src/bin/jp3d/CMakeLists.txt
src/bin/jp3d/opj_jp3d_compress.c
src/bin/jp3d/opj_jp3d_decompress.c

index f17f99ccf54f21124a2176ff57b5bf603b23b545..2ff9f78fe07431ac2f6f6d4c6124658758f39c15 100644 (file)
@@ -8,6 +8,7 @@ SET(common_SRCS
 
 # Headers file are located here:
 include_directories(
+  ${OPENJPEG_BINARY_DIR}/src/lib/openjp2 # opj_config.h
   ${OPENJPEG_SOURCE_DIR}/src/lib/openjp3d
   ${LCMS_INCLUDE_DIRNAME}
   ${OPENJPEG_SOURCE_DIR}/src/bin/common
index 30996d2dfd0a1d1d7517c6a8a5f0b9de794e34b3..066de3505645e6f32b816d54d553a78b0ea12653 100755 (executable)
@@ -32,8 +32,9 @@
 #include <string.h>\r
 #include <stdlib.h>\r
 \r
+#include "opj_config.h"\r
 #include "openjp3d.h"\r
-#include "getopt.h"\r
+#include "opj_getopt.h"\r
 #include "convert.h"\r
 \r
 #ifdef _WIN32\r
@@ -238,13 +239,13 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
        /* parse the command line */\r
 \r
        while (1) {\r
-               int c = getopt(argc, argv, "i:m:o:r:q:f:t:n:c:b:x:p:s:d:hP:S:E:M:D:R:l:T:C:A:I");\r
+               int c = opj_getopt(argc, argv, "i:m:o:r:q:f:t:n:c:b:x:p:s:d:hP:S:E:M:D:R:l:T:C:A:I");\r
                if (c == -1)\r
                        break;\r
                switch (c) {\r
                        case 'i':                       /* input file */\r
                        {\r
-                               char *infile = optarg;\r
+                               char *infile = opj_optarg;\r
                                parameters->decod_format = get_file_format(infile);\r
                                switch(parameters->decod_format) {\r
                                        case PGX_DFMT:\r
@@ -265,7 +266,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                                /* ----------------------------------------------------- */\r
                        case 'm':                       /* input IMG file */\r
                        {\r
-                               char *imgfile = optarg;\r
+                               char *imgfile = opj_optarg;\r
                                int imgformat = get_file_format(imgfile);\r
                                switch(imgformat) {\r
                                        case IMG_DFMT:\r
@@ -283,7 +284,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                                /* ----------------------------------------------------- */\r
                        case 'o':                       /* output file */\r
                        {\r
-                               char *outfile = optarg;\r
+                               char *outfile = opj_optarg;\r
                                parameters->cod_format = get_file_format(outfile);\r
                                switch(parameters->cod_format) {\r
                                        case J3D_CFMT:\r
@@ -304,7 +305,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        \r
                        case 'r':                       /* define compression rates for each layer */\r
                        {\r
-                               char *s = optarg;\r
+                               char *s = opj_optarg;\r
                                while (sscanf(s, "%f", &parameters->tcp_rates[parameters->tcp_numlayers]) == 1) {\r
                                        parameters->tcp_numlayers++;\r
                                        while (*s && *s != ',') {\r
@@ -322,7 +323,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        \r
                        case 'q':                       /* define distorsion (PSNR) for each layer */\r
                        {\r
-                               char *s = optarg;\r
+                               char *s = opj_optarg;\r
                                while (sscanf(s, "%f", &parameters->tcp_distoratio[parameters->tcp_numlayers]) == 1) {\r
                                        parameters->tcp_numlayers++;\r
                                        while (*s && *s != ',') {\r
@@ -346,7 +347,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                                /*int *row = NULL, *col = NULL;\r
                                int numlayers = 0, matrix_width = 0;\r
 \r
-                               char *s = optarg;\r
+                               char *s = opj_optarg;\r
                                sscanf(s, "%d", &numlayers);\r
                                s++;\r
                                if (numlayers > 9)\r
@@ -389,7 +390,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
 \r
                        case 't':                       /* tiles */\r
                        {\r
-                               if (sscanf(optarg, "%d,%d,%d", &parameters->cp_tdx, &parameters->cp_tdy, &parameters->cp_tdz) !=3) {\r
+                               if (sscanf(opj_optarg, "%d,%d,%d", &parameters->cp_tdx, &parameters->cp_tdy, &parameters->cp_tdz) !=3) {\r
                                        fprintf(stdout, "[ERROR] '-t' 'dimensions of tiles' argument error !  [-t tdx,tdy,tdz]\n");\r
                                        return 1;\r
                                }\r
@@ -402,7 +403,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        case 'n':                       /* resolution */\r
                        {\r
                                int aux;\r
-                               aux = sscanf(optarg, "%d,%d,%d", &parameters->numresolution[0], &parameters->numresolution[1], &parameters->numresolution[2]);\r
+                               aux = sscanf(opj_optarg, "%d,%d,%d", &parameters->numresolution[0], &parameters->numresolution[1], &parameters->numresolution[2]);\r
                                if (aux == 2) \r
                                        parameters->numresolution[2] = 1;\r
                                else if (aux == 1) {\r
@@ -422,7 +423,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                                char sep;\r
                                int res_spec = 0;\r
                                int aux;\r
-                               char *s = optarg;\r
+                               char *s = opj_optarg;\r
                                do {\r
                                        sep = 0;\r
                                        aux = sscanf(s, "[%d,%d,%d]%c", &parameters->prct_init[0][res_spec], &parameters->prct_init[1][res_spec], &parameters->prct_init[2][res_spec], &sep);\r
@@ -444,7 +445,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        case 'b':                       /* code-block dimension */\r
                        {\r
                                int cblockw_init = 0, cblockh_init = 0, cblockl_init = 0;\r
-                               if (sscanf(optarg, "%d,%d,%d", &cblockw_init, &cblockh_init, &cblockl_init) != 3) {\r
+                               if (sscanf(opj_optarg, "%d,%d,%d", &cblockw_init, &cblockh_init, &cblockl_init) != 3) {\r
                                        fprintf(stdout, "[ERROR] '-b' 'dimensions of codeblocks' argument error !  [-b cblkx,cblky,cblkz]\n");\r
                                        return 1;\r
                                }\r
@@ -462,7 +463,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        \r
                        case 'x':                       /* creation of index file */\r
                        {\r
-                               char *index = optarg;\r
+                               char *index = opj_optarg;\r
                                strncpy(parameters->index, index, MAX_PATH);\r
                                parameters->index_on = 1;\r
                        }\r
@@ -474,7 +475,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        {\r
                                char progression[4];\r
 \r
-                               strncpy(progression, optarg, 4);\r
+                               strncpy(progression, opj_optarg, 4);\r
                                parameters->prog_order = give_progression(progression);\r
                                if (parameters->prog_order == -1) {\r
                                        fprintf(stdout, "[ERROR] Unrecognized progression order [LRCP, RLCP, RPCL, PCRL, CPRL] !!\n");\r
@@ -487,7 +488,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        \r
                        case 's':                       /* subsampling factor */\r
                        {\r
-                               if (sscanf(optarg, "%d,%d,%d", &parameters->subsampling_dx, &parameters->subsampling_dy, &parameters->subsampling_dz) != 2) {\r
+                               if (sscanf(opj_optarg, "%d,%d,%d", &parameters->subsampling_dx, &parameters->subsampling_dy, &parameters->subsampling_dz) != 2) {\r
                                        fprintf(stdout, "[ERROR] '-s' sub-sampling argument error !  [-s dx,dy,dz]\n");\r
                                        return 1;\r
                                }\r
@@ -498,7 +499,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        \r
                        case 'd':                       /* coordonnate of the reference grid */\r
                        {\r
-                               if (sscanf(optarg, "%d,%d,%d", &parameters->volume_offset_x0, &parameters->volume_offset_y0, &parameters->volume_offset_z0) != 3) {\r
+                               if (sscanf(opj_optarg, "%d,%d,%d", &parameters->volume_offset_x0, &parameters->volume_offset_y0, &parameters->volume_offset_z0) != 3) {\r
                                        fprintf(stdout, "[ERROR] -d 'coordonnate of the reference grid' argument error !! [-d x0,y0,z0]\n");\r
                                        return 1;\r
                                }\r
@@ -521,7 +522,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                                int numpocs = 0;                /* number of progression order change (POC) default 0 */\r
                                opj_poc_t *POC = NULL;  /* POC : used in case of Progression order change */\r
 \r
-                               char *s = optarg;\r
+                               char *s = opj_optarg;\r
                                POC = parameters->POC;\r
 \r
                                fprintf(stdout, "/----------------------------------\\\n");\r
@@ -569,7 +570,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        {\r
                                fprintf(stdout, "[INFO] Mode switch option not fully tested !!\n");\r
                                value = 0;\r
-                               if (sscanf(optarg, "%d", &value) == 1) {\r
+                               if (sscanf(opj_optarg, "%d", &value) == 1) {\r
                                        for (i = 0; i <= 6; i++) {\r
                                                int cache = value & (1 << i);\r
                                                if (cache)\r
@@ -583,7 +584,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        \r
                        case 'D':                       /* DCO */\r
                        {\r
-                               if (sscanf(optarg, "%d", &parameters->dcoffset) != 1) {\r
+                               if (sscanf(opj_optarg, "%d", &parameters->dcoffset) != 1) {\r
                                        fprintf(stdout, "[ERROR] DC offset error !! [-D %d]\n",parameters->dcoffset);\r
                                        return 1;\r
                                }\r
@@ -594,7 +595,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        \r
                        case 'R':                       /* ROI */\r
                        {\r
-                               if (sscanf(optarg, "OI:c=%d,U=%d", &parameters->roi_compno, &parameters->roi_shift) != 2) {\r
+                               if (sscanf(opj_optarg, "OI:c=%d,U=%d", &parameters->roi_compno, &parameters->roi_shift) != 2) {\r
                                        fprintf(stdout, "[ERROR] ROI error !! [-ROI:c='compno',U='shift']\n");\r
                                        return 1;\r
                                }\r
@@ -605,7 +606,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        \r
                        case 'l':                       /* Tile offset */\r
                        {\r
-                               if (sscanf(optarg, "%d,%d,%d", &parameters->cp_tx0, &parameters->cp_ty0, &parameters->cp_tz0) != 3) {\r
+                               if (sscanf(opj_optarg, "%d,%d,%d", &parameters->cp_tx0, &parameters->cp_ty0, &parameters->cp_tz0) != 3) {\r
                                        fprintf(stdout, "[ERROR] -l 'tile offset' argument error !! [-l X0,Y0,Z0]");\r
                                        return 1;\r
                                }\r
@@ -618,7 +619,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        {\r
                                char transform[4];\r
 \r
-                               strncpy(transform, optarg, 4);\r
+                               strncpy(transform, opj_optarg, 4);\r
                                parameters->transform_format = give_transform(transform);\r
                                if (parameters->transform_format == -1) {\r
                                        fprintf(stdout, "[ERROR] -T 'Transform domain' argument error !! [-T 2DWT, 3DWT, 3RLS or 3LSE only]");\r
@@ -633,7 +634,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        {\r
                                char coding[3];\r
 \r
-                               strncpy(coding, optarg, 3);\r
+                               strncpy(coding, opj_optarg, 3);\r
                                parameters->encoding_format = give_coding(coding);\r
                                if (parameters->encoding_format == -1) {\r
                                        fprintf(stdout, "[ERROR] -C 'Coding algorithm' argument error !! [-C 2EB, 3EB, 2GR, 3GR or GRI only]");\r
@@ -651,7 +652,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters)
                        break;\r
                                \r
                        default:\r
-                               fprintf(stdout, "[ERROR] This option is not valid \"-%c %s\"\n", c, optarg);\r
+                               fprintf(stdout, "[ERROR] This option is not valid \"-%c %s\"\n", c, opj_optarg);\r
                                return 1;\r
                }\r
        }\r
index 7afb448865edc82f665a3cd7f6c23a9e2777a5dd..0a58b678cb5a59dd8c92f35d5da6150507955f8a 100755 (executable)
@@ -33,8 +33,9 @@
 #include <stdlib.h>\r
 #include <math.h>\r
 \r
+#include "opj_config.h"\r
 #include "openjp3d.h"\r
-#include "getopt.h"\r
+#include "opj_getopt.h"\r
 #include "convert.h"\r
 \r
 #ifdef _WIN32\r
@@ -87,7 +88,7 @@ static double calc_PSNR(opj_volume_t *original, opj_volume_t *decoded)
                return -1.0;\r
        \r
        return total;\r
-       //return 20 * log10((max - 1) / sqrt(sum));\r
+       /*return 20 * log10((max - 1) / sqrt(sum));*/\r
 }\r
 \r
 static double calc_SSIM(opj_volume_t *original, opj_volume_t *decoded)\r
@@ -95,29 +96,29 @@ static double calc_SSIM(opj_volume_t *original, opj_volume_t *decoded)
        int max, i, compno = 0, size, sizeM;\r
        double sum;\r
        double mux = 0.0, muy = 0.0, sigmax = 0.0, sigmay = 0.0,\r
-               sigmaxy = 0.0, structx = 0.0, structy = 0.0;\r
+               sigmaxy = 0.0/*, structx = 0.0, structy = 0.0*/;\r
        double lcomp,ccomp,scomp;\r
        double C1,C2,C3;\r
 \r
        max = (original->comps[compno].prec <= 8) ? 255 : (1 << original->comps[compno].prec) - 1;\r
        size = (original->x1 - original->x0) * (original->y1 - original->y0) * (original->z1 - original->z0);\r
 \r
-       //MSSIM\r
+       /*MSSIM*/\r
 \r
-//     sizeM = size / (original->z1 - original->z0);\r
+/*     sizeM = size / (original->z1 - original->z0);*/\r
 \r
        sizeM = size;   \r
        for(sum = 0, i = 0; i < sizeM; ++i) {\r
-               // First, the luminance of each signal is compared.\r
+               /* First, the luminance of each signal is compared.*/\r
                mux += original->comps[compno].data[i];\r
                muy += decoded->comps[compno].data[i];\r
        }\r
        mux /= sizeM;\r
        muy /= sizeM;\r
        \r
-       //We use the standard deviation (the square root of variance) as an estimate of the signal contrast.\r
+       /*We use the standard deviation (the square root of variance) as an estimate of the signal contrast.*/\r
     for(sum = 0, i = 0; i < sizeM; ++i) {\r
-               // First, the luminance of each signal is compared.\r
+               /* First, the luminance of each signal is compared.*/\r
                sigmax += (original->comps[compno].data[i] - mux) * (original->comps[compno].data[i] - mux);\r
                sigmay += (decoded->comps[compno].data[i] - muy) * (decoded->comps[compno].data[i] - muy);\r
                sigmaxy += (original->comps[compno].data[i] - mux) * (decoded->comps[compno].data[i] - muy);\r
@@ -130,19 +131,19 @@ static double calc_SSIM(opj_volume_t *original, opj_volume_t *decoded)
        sigmay = sqrt(sigmay);\r
        sigmaxy = sqrt(sigmaxy);\r
 \r
-       //Third, the signal is normalized (divided) by its own standard deviation, \r
-       //so that the two signals being compared have unit standard deviation.\r
+       /*Third, the signal is normalized (divided) by its own standard deviation, */\r
+       /*so that the two signals being compared have unit standard deviation.*/\r
 \r
-       //Luminance comparison\r
+       /*Luminance comparison*/\r
        C1 = (0.01 * max) * (0.01 * max);\r
        lcomp = ((2 * mux * muy) + C1)/((mux*mux) + (muy*mux) + C1);\r
-       //Constrast comparison\r
+       /*Constrast comparison*/\r
        C2 = (0.03 * max) * (0.03 * max);\r
        ccomp = ((2 * sigmax * sigmay) + C2)/((sigmax*sigmax) + (sigmay*sigmay) + C2);\r
-       //Structure comparison\r
+       /*Structure comparison*/\r
        C3 = C2 / 2;\r
        scomp = (sigmaxy + C3) / (sigmax * sigmay + C3);\r
-       //Similarity measure\r
+       /*Similarity measure*/\r
 \r
        sum = lcomp * ccomp * scomp;\r
        return sum;\r
@@ -217,13 +218,13 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters)
        /* parse the command line */\r
 \r
        while (1) {\r
-               int c = getopt(argc, argv, "i:o:O:r:l:B:m:h");\r
+               int c = opj_getopt(argc, argv, "i:o:O:r:l:B:m:h");\r
                if (c == -1)                      \r
                        break;\r
                switch (c) {\r
                        case 'i':                       /* input file */\r
                        {\r
-                               char *infile = optarg;\r
+                               char *infile = opj_optarg;\r
                                parameters->decod_format = get_file_format(infile);\r
                                switch(parameters->decod_format) {\r
                                        case J3D_CFMT:\r
@@ -242,7 +243,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters)
 \r
                        case 'm':                       /* img file */\r
                        {\r
-                               char *imgfile = optarg;\r
+                               char *imgfile = opj_optarg;\r
                                int imgformat = get_file_format(imgfile);\r
                                switch(imgformat) {\r
                                        case IMG_DFMT:\r
@@ -261,7 +262,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters)
 \r
                        case 'o':                       /* output file */\r
                        {\r
-                               char *outfile = optarg;\r
+                               char *outfile = opj_optarg;\r
                                parameters->cod_format = get_file_format(outfile);\r
                                switch(parameters->cod_format) {\r
                                        case PGX_DFMT:\r
@@ -282,7 +283,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters)
 \r
                        case 'O':               /* Original image for PSNR computing */\r
                        {\r
-                               char *original = optarg;\r
+                               char *original = opj_optarg;\r
                                parameters->orig_format = get_file_format(original);\r
                                switch(parameters->orig_format) {\r
                                        case PGX_DFMT:\r
@@ -302,9 +303,9 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters)
            \r
                        case 'r':               /* reduce option */\r
                        {\r
-                               //sscanf(optarg, "%d, %d, %d", &parameters->cp_reduce[0], &parameters->cp_reduce[1], &parameters->cp_reduce[2]);\r
+                               /*sscanf(opj_optarg, "%d, %d, %d", &parameters->cp_reduce[0], &parameters->cp_reduce[1], &parameters->cp_reduce[2]);*/\r
                                int aux;\r
-                               aux = sscanf(optarg, "%d,%d,%d", &parameters->cp_reduce[0], &parameters->cp_reduce[1], &parameters->cp_reduce[2]);\r
+                               aux = sscanf(opj_optarg, "%d,%d,%d", &parameters->cp_reduce[0], &parameters->cp_reduce[1], &parameters->cp_reduce[2]);\r
                                if (aux == 2) \r
                                        parameters->cp_reduce[2] = 0;\r
                                else if (aux == 1) {\r
@@ -322,7 +323,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters)
 \r
                        case 'l':               /* layering option */\r
                        {\r
-                               sscanf(optarg, "%d", &parameters->cp_layer);\r
+                               sscanf(opj_optarg, "%d", &parameters->cp_layer);\r
                        }\r
                        break;\r
 \r
@@ -354,7 +355,7 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters)
                                /* ----------------------------------------------------- */\r
                        \r
                        default:\r
-                               fprintf(stdout,"[WARNING] This option is not valid \"-%c %s\"\n",c, optarg);\r
+                               fprintf(stdout,"[WARNING] This option is not valid \"-%c %s\"\n",c, opj_optarg);\r
                                break;\r
                }\r
        }\r