#include <math.h>\r
\r
#include "openjpeg.h"\r
-#include "getopt.h"\r
+#include "opj_getopt.h"\r
#include "convert.h"\r
#include "index.h"\r
#include "dirent.h"\r
fprintf(stdout," Indicate multiple modes by adding their values. \n");\r
fprintf(stdout," ex: RESTART(4) + RESET(2) + SEGMARK(32) = -M 38\n");\r
fprintf(stdout,"\n");\r
+ fprintf(stdout,"-TP : devide packets of every tile into tile-parts (-TP R) [R, L, C]\n");\r
+ fprintf(stdout,"\n");\r
fprintf(stdout,"-x : create an index file *.Idx (-x index_name.Idx) \n");\r
fprintf(stdout,"\n");\r
fprintf(stdout,"-ROI : c=%%d,U=%%d : quantization indices upshifted \n");\r
fprintf(stdout,"\n");\r
fprintf(stdout,"-I : use the irreversible DWT 9-7 (-I) \n");\r
fprintf(stdout,"\n");\r
+ fprintf(stdout,"-jpip : write jpip codestream index box in JP2 output file\n");\r
+ fprintf(stdout," NOTICE: currently supports only RPCL order\n");\r
+ fprintf(stdout,"\n");\r
/* UniPG>> */\r
#ifdef USE_JPWL\r
fprintf(stdout,"-W : adoption of JPWL (Part 11) capabilities (-W params)\n");\r
}\r
\r
void cinema_parameters(opj_cparameters_t *parameters){\r
- parameters->tile_size_on = false;\r
+ parameters->tile_size_on = OPJ_FALSE;\r
parameters->cp_tdx=1;\r
parameters->cp_tdy=1;\r
\r
int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters,\r
img_fol_t *img_fol, char *indexfilename) {\r
int i, j,totlen;\r
- option_t long_option[]={\r
+ opj_option_t long_option[]={\r
{"cinema2K",REQ_ARG, NULL ,'w'},\r
{"cinema4K",NO_ARG, NULL ,'y'},\r
{"ImgDir",REQ_ARG, NULL ,'z'},\r
- {"TP",REQ_ARG, NULL ,'v'},\r
+ {"TP",REQ_ARG, NULL ,'u'},\r
{"SOP",NO_ARG, NULL ,'S'},\r
{"EPH",NO_ARG, NULL ,'E'},\r
{"OutFor",REQ_ARG, NULL ,'O'},\r
{"POC",REQ_ARG, NULL ,'P'},\r
{"ROI",REQ_ARG, NULL ,'R'},\r
+ {"jpip",NO_ARG, NULL, 'J'}\r
};\r
\r
/* parse the command line */\r
/* UniPG>> */\r
- const char optlist[] = "i:o:hr:q:n:b:c:t:p:s:SEM:x:R:d:T:If:P:C:F:"\r
+ const char optlist[] = "i:o:hr:q:n:b:c:t:p:s:SEM:x:R:d:T:If:P:C:F:u:J"\r
#ifdef USE_JPWL\r
"W:"\r
#endif /* USE_JPWL */\r
reset_options_reading();\r
\r
while (1) {\r
- int c = getopt_long(argc, argv, optlist,long_option,totlen);\r
+ int c = opj_getopt_long(argc, argv, optlist,long_option,totlen);\r
if (c == -1)\r
break;\r
switch (c) {\r
\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 J2K_CFMT:\r
case 'O': /* output format */\r
{\r
char outformat[50];\r
- char *of = optarg;\r
+ char *of = opj_optarg;\r
sprintf(outformat,".%s",of);\r
img_fol->set_out_format = 1;\r
parameters->cod_format = get_file_format(outformat);\r
switch(parameters->cod_format) {\r
case J2K_CFMT:\r
case JP2_CFMT:\r
- img_fol->out_format = optarg;\r
+ img_fol->out_format = opj_optarg;\r
break;\r
default:\r
fprintf(stderr, "Unknown output format image [only j2k, j2c, jp2]!! \n");\r
\r
case 'r': /* rates rates/distorsion */\r
{\r
- char *s = optarg;\r
+ char *s = opj_optarg;\r
while (sscanf(s, "%f", ¶meters->tcp_rates[parameters->tcp_numlayers]) == 1) {\r
parameters->tcp_numlayers++;\r
while (*s && *s != ',') {\r
\r
case 'q': /* add fixed_quality */\r
{\r
- char *s = optarg;\r
+ char *s = opj_optarg;\r
while (sscanf(s, "%f", ¶meters->tcp_distoratio[parameters->tcp_numlayers]) == 1) {\r
parameters->tcp_numlayers++;\r
while (*s && *s != ',') {\r
int *row = NULL, *col = NULL;\r
int numlayers = 0, numresolution = 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
\r
case 't': /* tiles */\r
{\r
- sscanf(optarg, "%d,%d", ¶meters->cp_tdx, ¶meters->cp_tdy);\r
- parameters->tile_size_on = true;\r
+ sscanf(opj_optarg, "%d,%d", ¶meters->cp_tdx, ¶meters->cp_tdy);\r
+ parameters->tile_size_on = OPJ_TRUE;\r
}\r
break;\r
\r
\r
case 'n': /* resolution */\r
{\r
- sscanf(optarg, "%d", ¶meters->numresolution);\r
+ sscanf(opj_optarg, "%d", ¶meters->numresolution);\r
}\r
break;\r
\r
char sep;\r
int res_spec = 0;\r
\r
- char *s = optarg;\r
+ char *s = opj_optarg;\r
do {\r
sep = 0;\r
sscanf(s, "[%d,%d]%c", ¶meters->prcw_init[res_spec],\r
case 'b': /* code-block dimension */\r
{\r
int cblockw_init = 0, cblockh_init = 0;\r
- sscanf(optarg, "%d,%d", &cblockw_init, &cblockh_init);\r
+ sscanf(opj_optarg, "%d,%d", &cblockw_init, &cblockh_init);\r
if (cblockw_init * cblockh_init > 4096 || cblockw_init > 1024\r
|| cblockw_init < 4 || cblockh_init > 1024 || cblockh_init < 4) {\r
fprintf(stderr,\r
\r
case 'x': /* creation of index file */\r
{\r
- char *index = optarg;\r
+ char *index = opj_optarg;\r
strncpy(indexfilename, index, OPJ_PATH_LEN);\r
}\r
break;\r
{\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(stderr, "Unrecognized progression order "\r
\r
case 's': /* subsampling factor */\r
{\r
- if (sscanf(optarg, "%d,%d", ¶meters->subsampling_dx,\r
+ if (sscanf(opj_optarg, "%d,%d", ¶meters->subsampling_dx,\r
¶meters->subsampling_dy) != 2) {\r
fprintf(stderr, "'-s' sub-sampling argument error ! [-s dx,dy]\n");\r
return 1;\r
\r
case 'd': /* coordonnate of the reference grid */\r
{\r
- if (sscanf(optarg, "%d,%d", ¶meters->image_offset_x0,\r
+ if (sscanf(opj_optarg, "%d,%d", ¶meters->image_offset_x0,\r
¶meters->image_offset_y0) != 2) {\r
fprintf(stderr, "-d 'coordonnate of the reference grid' argument "\r
"error !! [-d x0,y0]\n");\r
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
while (sscanf(s, "T%d=%d,%d,%d,%d,%d,%4s", &POC[numpocs].tile,\r
case 'M': /* Mode switch pas tous au point !! */\r
{\r
int value = 0;\r
- if (sscanf(optarg, "%d", &value) == 1) {\r
+ if (sscanf(opj_optarg, "%d", &value) == 1) {\r
for (i = 0; i <= 5; i++) {\r
int cache = value & (1 << i);\r
if (cache)\r
\r
case 'R': /* ROI */\r
{\r
- if (sscanf(optarg, "c=%d,U=%d", ¶meters->roi_compno,\r
+ if (sscanf(opj_optarg, "c=%d,U=%d", ¶meters->roi_compno,\r
¶meters->roi_shift) != 2) {\r
fprintf(stderr, "ROI error !! [-ROI c='compno',U='shift']\n");\r
return 1;\r
\r
case 'T': /* Tile offset */\r
{\r
- if (sscanf(optarg, "%d,%d", ¶meters->cp_tx0, ¶meters->cp_ty0) != 2) {\r
+ if (sscanf(opj_optarg, "%d,%d", ¶meters->cp_tx0, ¶meters->cp_ty0) != 2) {\r
fprintf(stderr, "-T 'tile offset' argument error !! [-T X0,Y0]");\r
return 1;\r
}\r
\r
case 'C': /* add a comment */\r
{\r
- parameters->cp_comment = (char*)malloc(strlen(optarg) + 1);\r
+ parameters->cp_comment = (char*)malloc(strlen(opj_optarg) + 1);\r
if(parameters->cp_comment) {\r
- strcpy(parameters->cp_comment, optarg);\r
+ strcpy(parameters->cp_comment, opj_optarg);\r
}\r
}\r
break;\r
\r
/* ------------------------------------------------------ */\r
\r
- case 'v': /* Tile part generation*/\r
+ case 'u': /* Tile part generation*/\r
{\r
- parameters->tp_flag = optarg[0];\r
+ parameters->tp_flag = opj_optarg[0];\r
parameters->tp_on = 1;\r
}\r
break; \r
\r
case 'z': /* Image Directory path */\r
{\r
- img_fol->imgdirpath = (char*)malloc(strlen(optarg) + 1);\r
- strcpy(img_fol->imgdirpath,optarg);\r
+ img_fol->imgdirpath = (char*)malloc(strlen(opj_optarg) + 1);\r
+ strcpy(img_fol->imgdirpath,opj_optarg);\r
img_fol->set_imgdir=1;\r
}\r
break;\r
case 'w': /* Digital Cinema 2K profile compliance*/\r
{\r
int fps=0;\r
- sscanf(optarg,"%d",&fps);\r
+ sscanf(opj_optarg,"%d",&fps);\r
if(fps == 24){\r
parameters->cp_cinema = CINEMA2K_24;\r
}else if(fps == 48 ){\r
/* search for different protection methods */\r
\r
/* break the option in comma points and parse the result */\r
- token = strtok(optarg, ",");\r
+ token = strtok(opj_optarg, ",");\r
while(token != NULL) {\r
\r
/* search header error protection method */\r
break;\r
#endif /* USE_JPWL */\r
/* <<UniPG */\r
-\r
+/* ------------------------------------------------------ */\r
+ \r
+ case 'J': /* jpip on */\r
+ {\r
+ parameters->jpip_on = OPJ_TRUE;\r
+ }\r
+ break;\r
/* ------------------------------------------------------ */\r
\r
default:\r
jbyte *jbBody;\r
jshort *jsBody;\r
jint *jiBody;\r
- boolean isCopy;\r
+ jboolean isCopy;\r
\r
// Image width, height and depth\r
fid = (*env)->GetFieldID(env, cls,"width", "I");\r
JNIEXPORT jlong JNICALL Java_org_openJpeg_OpenJPEGJavaEncoder_internalEncodeImageToJ2K(JNIEnv *env, jobject obj, jobjectArray javaParameters) {\r
int argc; /* To simulate the command line parameters (taken from the javaParameters variable) and be able to re-use the */\r
char **argv; /* 'parse_cmdline_decoder' method taken from the j2k_to_image project */\r
- bool bSuccess;\r
+ opj_bool bSuccess;\r
opj_cparameters_t parameters; /* compression parameters */\r
img_fol_t img_fol;\r
opj_event_mgr_t event_mgr; /* event manager */\r
if (parameters.cod_format == J2K_CFMT) { /* J2K format output */\r
cinfo = opj_create_compress(CODEC_J2K);\r
} else { /* JP2 format output */\r
- cinfo = opj_create_compress(CODEC_JP2);\r
+ cinfo = opj_create_compress(CODEC_JP2);\r
}\r
/* catch events using our callbacks and give a local context */\r
opj_set_event_mgr((opj_common_ptr)cinfo, &event_mgr, &msgErrorCallback_vars);\r