diff --git a/ChangeLog b/ChangeLog index 1d4442ef..5dd9201f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,8 @@ What's New for OpenJPEG ! : changed + : added +March 24, 2010 +* [FOD] Code improvements using 'g++-4.4.0' to trace the code. Thanks to Winfried for this patch. March 7, 2010 * [FOD] Fixed small compatibility issues with win32 in codec (moved include ) diff --git a/codec/compat/getopt.c b/codec/compat/getopt.c index f434924b..5e444d39 100644 --- a/codec/compat/getopt.c +++ b/codec/compat/getopt.c @@ -49,7 +49,7 @@ const char *optarg; /* argument associated with option */ typedef struct option { - char *name; + const char *name; int has_arg; int *flag; int val; diff --git a/codec/compat/getopt.h b/codec/compat/getopt.h index 3477e069..f84fbc06 100644 --- a/codec/compat/getopt.h +++ b/codec/compat/getopt.h @@ -5,7 +5,7 @@ typedef struct option { - char *name; + const char *name; int has_arg; int *flag; int val; diff --git a/codec/convert.c b/codec/convert.c index a9ffb0da..182477b3 100644 --- a/codec/convert.c +++ b/codec/convert.c @@ -1463,7 +1463,7 @@ int imagetotif(opj_image_t * image, const char *outfile) { unsigned char *dat8; int i, ssize; ssize = TIFFStripSize(tif); - dat8 = buf; + dat8 = (unsigned char*)buf; if (image->comps[0].prec == 8){ for (i=0; icomps[0].prec == 8){ for (i=0; i= tile->Cztile_parts) { tilepart_tmp = (info_tile_part_t*)malloc((INCREMENT + tile->Cztile_parts) * sizeof(info_tile_part_t)); - memcpy(tmp, tile->tile_parts, tile->Cztile_parts); + memcpy(tilepart_tmp, tile->tile_parts, tile->Cztile_parts); tile->Cztile_parts += INCREMENT; free(tile->tile_parts); tile->tile_parts = tilepart_tmp; @@ -1008,7 +1008,7 @@ void j2k_read_unk() { int j2k_index_JPIP(char *Idx_file, char *J2K_file, int len, int version){ FILE *dest; - char *index; + unsigned char *index; int pos_iptr, end_pos; int len_cidx, pos_cidx; int len_jp2c, pos_jp2c; @@ -1021,7 +1021,7 @@ int j2k_index_JPIP(char *Idx_file, char *J2K_file, int len, int version){ } /* INDEX MODE JPIP */ - index = (char*)malloc(len); + index = (unsigned char*)malloc(len); cio_init(index, len); jp2_write_jp(); jp2_write_ftyp(); @@ -1149,7 +1149,7 @@ int main(int argc, char **argv) { FILE *src; int totlen; - char *j2kfile; + unsigned char *j2kfile; j2k_image_t *imgg; j2k_cp_t *cp; int version; @@ -1171,7 +1171,7 @@ int main(int argc, char **argv) totlen = ftell(src); fseek(src, 0, SEEK_SET); - j2kfile = (char*)malloc(totlen); + j2kfile = (unsigned char*)malloc(totlen); fread(j2kfile, 1, totlen, src); fclose(src); @@ -1197,6 +1197,7 @@ int main(int argc, char **argv) if (!j2k_decode(j2kfile, totlen, &imgg, &cp)) { fprintf(stderr, "Index_creator: failed to decode image!\n"); + free(j2kfile); return 1; } free(j2kfile); diff --git a/indexer_JPIP/jp2.c b/indexer_JPIP/jp2.c index 1c193ad7..ff2d22e2 100644 --- a/indexer_JPIP/jp2.c +++ b/indexer_JPIP/jp2.c @@ -50,7 +50,8 @@ void jp2_write_url(char *Idx_file) { - int len, lenp, i; + int len, lenp; + unsigned int i; char str[256]; sprintf(str, "%s", Idx_file); diff --git a/libopenjpeg/j2k.c b/libopenjpeg/j2k.c index 563efd68..89677eb5 100644 --- a/libopenjpeg/j2k.c +++ b/libopenjpeg/j2k.c @@ -245,7 +245,7 @@ j2k_prog_order_t j2k_prog_order_list[] = { {PCRL, "PCRL"}, {RLCP, "RLCP"}, {RPCL, "RPCL"}, - {-1, ""} + {(OPJ_PROG_ORDER)-1, ""} }; char *j2k_convert_progression_order(OPJ_PROG_ORDER prg_order){ diff --git a/mj2/extract_j2k_from_mj2.c b/mj2/extract_j2k_from_mj2.c index 6ecaf834..ce5e4d15 100644 --- a/mj2/extract_j2k_from_mj2.c +++ b/mj2/extract_j2k_from_mj2.c @@ -105,7 +105,7 @@ int main(int argc, char *argv[]) { /* setup the decoder decoding parameters using user parameters */ movie = (opj_mj2_t*) dinfo->mj2_handle; - mj2_setup_decoder(dinfo->mj2_handle, ¶meters); + mj2_setup_decoder((opj_mj2_t*)dinfo->mj2_handle, ¶meters); if (mj2_read_struct(file, movie)) // Creating the movie structure return 1; diff --git a/mj2/frames_to_mj2.c b/mj2/frames_to_mj2.c index 299b8e66..671ec8e5 100644 --- a/mj2/frames_to_mj2.c +++ b/mj2/frames_to_mj2.c @@ -234,12 +234,12 @@ int main(int argc, char **argv) opj_cparameters_t *j2k_parameters; /* J2K compression parameters */ opj_event_mgr_t event_mgr; /* event manager */ opj_cio_t *cio; - char value; + int value; opj_mj2_t *movie; opj_image_t *img; int i, j; char *s, S1, S2, S3; - char *buf; + unsigned char *buf; int x1, y1, len; long mdat_initpos, offset; FILE *mj2file; @@ -519,7 +519,7 @@ int main(int argc, char **argv) while (sscanf(s, "T%d=%d,%d,%d,%d,%d,%4s", &POC[numpocs].tile, &POC[numpocs].resno0, &POC[numpocs].compno0, &POC[numpocs].layno1, &POC[numpocs].resno1, - &POC[numpocs].compno1, &POC[numpocs].progorder) == 7) { + &POC[numpocs].compno1, POC[numpocs].progorder) == 7) { POC[numpocs].prg1 = give_progression(POC[numpocs].progorder); numpocs++; while (*s && *s != '/') { @@ -671,7 +671,7 @@ int main(int argc, char **argv) /* get a MJ2 decompressor handle */ cinfo = mj2_create_compress(); - movie = cinfo->mj2_handle; + movie = (opj_mj2_t*)cinfo->mj2_handle; /* catch events using our callbacks and give a local context */ opj_set_event_mgr((opj_common_ptr)cinfo, &event_mgr, stderr); @@ -694,7 +694,7 @@ int main(int argc, char **argv) }; // Writing JP, FTYP and MDAT boxes - buf = (char*) malloc (300 * sizeof(char)); // Assuming that the JP and FTYP + buf = (unsigned char*) malloc (300 * sizeof(unsigned char)); // Assuming that the JP and FTYP // boxes won't be longer than 300 bytes cio = opj_cio_open((opj_common_ptr)movie->cinfo, buf, 300); mj2_write_jp(cio); @@ -722,7 +722,7 @@ int main(int argc, char **argv) img = mj2_image_create(tk, j2k_parameters); buflen = 2 * (tk->w * tk->h * 8); - buf = (char *) malloc(buflen*sizeof(char)); + buf = (unsigned char *) malloc(buflen*sizeof(unsigned char)); for (sampleno = 0; sampleno < numframes; sampleno++) { double init_time = opj_clock(); @@ -771,7 +771,7 @@ int main(int argc, char **argv) fseek(mj2file, mdat_initpos, SEEK_SET); - buf = (char*) malloc(4*sizeof(char)); + buf = (unsigned char*) malloc(4*sizeof(unsigned char)); // Init a cio to write box length variable in a little endian way cio = opj_cio_open(NULL, buf, 4); @@ -781,7 +781,7 @@ int main(int argc, char **argv) free(buf); // Writing MOOV box - buf = (char*) malloc ((TEMP_BUF+numframes*20) * sizeof(char)); + buf = (unsigned char*) malloc ((TEMP_BUF+numframes*20) * sizeof(unsigned char)); cio = opj_cio_open(movie->cinfo, buf, (TEMP_BUF+numframes*20)); mj2_write_moov(movie, cio); fwrite(buf,cio_tell(cio),1,mj2file); diff --git a/mj2/mj2.c b/mj2/mj2.c index 1a15550d..8b5bf699 100644 --- a/mj2/mj2.c +++ b/mj2/mj2.c @@ -42,8 +42,9 @@ Read box headers @param box @return Returns true if successful, returns false otherwise */ +/*-- UNUSED static bool jp2_read_boxhdr(opj_common_ptr cinfo, opj_cio_t *cio, opj_jp2_box_t *box); - +--*/ /* * * Read box headers @@ -269,7 +270,8 @@ void mj2_stsc_decompact(mj2_tk_t * tk) tk->chunk[k].num_samples = tk->sampletochunk[tk->num_samplestochunk - 1].samples_per_chunk; } - tk->chunk = opj_realloc(tk->chunk, tk->num_chunks * sizeof(mj2_chunk_t)); + tk->chunk = (mj2_chunk_t*) + opj_realloc(tk->chunk, tk->num_chunks * sizeof(mj2_chunk_t)); } } @@ -1163,7 +1165,7 @@ int mj2_read_smj2(opj_image_t * img, mj2_tk_t * tk, opj_cio_t *cio) } tk->jp2_struct.comps = (opj_jp2_comps_t*) opj_malloc(tk->jp2_struct.numcomps * sizeof(opj_jp2_comps_t)); - tk->jp2_struct.cl = (int*) opj_malloc(sizeof(int)); + tk->jp2_struct.cl = (unsigned int*) opj_malloc(sizeof(unsigned int)); tk->num_br = 0; tk->num_jp2x = 0; @@ -2604,13 +2606,13 @@ int mj2_read_moov(opj_mj2_t * movie, opj_image_t * img, opj_cio_t *cio) int mj2_read_struct(FILE *file, opj_mj2_t *movie) { mj2_box_t box; opj_image_t img; - char * src; + unsigned char * src; int fsresult; int foffset; opj_cio_t *cio; /* open a byte stream for reading */ - src = (char*) opj_malloc(300 * sizeof(char)); + src = (unsigned char*) opj_malloc(300 * sizeof(unsigned char)); /* Assuming that jp and ftyp markers size do not exceed 300 bytes */ @@ -2694,7 +2696,7 @@ int mj2_read_struct(FILE *file, opj_mj2_t *movie) { } fseek(file,foffset,SEEK_SET); - src = opj_realloc(src,box.length); + src = (unsigned char*)opj_realloc(src,box.length); fsresult = fread(src,box.length,1,file); if (fsresult != 1) { opj_event_msg(cio->cinfo, EVT_ERROR, "End of file reached while trying to read MOOV box\n"); @@ -2738,7 +2740,8 @@ void mj2_setup_decoder(opj_mj2_t *movie, mj2_dparameters_t *mj2_parameters) { movie->num_htk=0; /* setup the J2K decoder parameters */ - j2k_setup_decoder(movie->cinfo->j2k_handle, &mj2_parameters->j2k_parameters); + j2k_setup_decoder((opj_j2k_t*)movie->cinfo->j2k_handle, + &mj2_parameters->j2k_parameters); } @@ -2846,7 +2849,7 @@ void mj2_setup_encoder(opj_mj2_t *movie, mj2_cparameters_t *parameters) { jp2_struct->brand = JP2_JP2; /* BR */ jp2_struct->minversion = 0; /* MinV */ jp2_struct->numcl = 1; - jp2_struct->cl = (unsigned int*) opj_malloc(jp2_struct->numcl * sizeof(int)); + jp2_struct->cl = (unsigned int*) opj_malloc(jp2_struct->numcl * sizeof(unsigned int)); jp2_struct->cl[0] = JP2_JP2; /* CL0 : JP2 */ jp2_struct->C = 7; /* C : Always 7*/ jp2_struct->UnkC = 0; /* UnkC, colorspace specified in colr box*/ diff --git a/mj2/mj2_to_frames.c b/mj2/mj2_to_frames.c index a94f6612..b87703cc 100644 --- a/mj2/mj2_to_frames.c +++ b/mj2/mj2_to_frames.c @@ -112,7 +112,7 @@ int main(int argc, char *argv[]) { /* get a MJ2 decompressor handle */ dinfo = mj2_create_decompress(); - movie = dinfo->mj2_handle; + movie = (opj_mj2_t*)dinfo->mj2_handle; /* catch events using our callbacks and give a local context */ opj_set_event_mgr((opj_common_ptr)dinfo, &event_mgr, stderr); @@ -121,7 +121,7 @@ int main(int argc, char *argv[]) { opj_set_default_decoder_parameters(&mj2_parameters.j2k_parameters); /* setup the decoder decoding parameters using user parameters */ - mj2_setup_decoder(dinfo->mj2_handle, &mj2_parameters); + mj2_setup_decoder((opj_mj2_t*)dinfo->mj2_handle, &mj2_parameters); if (mj2_read_struct(file, movie)) // Creating the movie structure return 1; @@ -156,7 +156,8 @@ int main(int argc, char *argv[]) { sample = &track->sample[snum]; if (sample->sample_size-8 > max_codstrm_size) { max_codstrm_size = sample->sample_size-8; - if ((frame_codestream = realloc(frame_codestream, max_codstrm_size)) == NULL) { + if ((frame_codestream = (unsigned char*) + realloc(frame_codestream, max_codstrm_size)) == NULL) { printf("Error reallocation memory\n"); return 1; }; diff --git a/mj2/wrap_j2k_in_mj2.c b/mj2/wrap_j2k_in_mj2.c index dd2af757..0237d8bc 100644 --- a/mj2/wrap_j2k_in_mj2.c +++ b/mj2/wrap_j2k_in_mj2.c @@ -78,7 +78,7 @@ static void read_siz_marker(FILE *file, opj_image_t *image) { int len,i; char buf, buf2[2]; - char *siz_buffer; + unsigned char *siz_buffer; opj_cio_t *cio; fseek(file, 0, SEEK_SET); @@ -92,7 +92,7 @@ static void read_siz_marker(FILE *file, opj_image_t *image) fread(buf2,2,1,file); /* Lsiz */ len = ((buf2[0])<<8) + buf2[1]; - siz_buffer = (char*) malloc(len * sizeof(char)); + siz_buffer = (unsigned char*) malloc(len * sizeof(unsigned char)); fread(siz_buffer,len, 1, file); cio = opj_cio_open(NULL, siz_buffer, len); @@ -119,6 +119,7 @@ static void read_siz_marker(FILE *file, opj_image_t *image) } fseek(file, 0, SEEK_SET); opj_cio_close(cio); + free(siz_buffer); } static void setparams(opj_mj2_t *movie, opj_image_t *image) { @@ -213,7 +214,7 @@ int main(int argc, char *argv[]) { unsigned char* frame_codestream; FILE *mj2file, *j2kfile; char j2kfilename[50]; - char *buf; + unsigned char *buf; int offset, mdat_initpos; opj_image_t img; opj_cio_t *cio; @@ -249,13 +250,13 @@ int main(int argc, char *argv[]) { /* setup the decoder encoding parameters using user parameters */ movie = (opj_mj2_t*) cinfo->mj2_handle; - mj2_setup_encoder(cinfo->mj2_handle, ¶meters); + mj2_setup_encoder((opj_mj2_t*)cinfo->mj2_handle, ¶meters); /* Writing JP, FTYP and MDAT boxes Assuming that the JP and FTYP boxes won't be longer than 300 bytes */ - buf = (char*) malloc (300 * sizeof(char)); + buf = (unsigned char*) malloc (300 * sizeof(unsigned char)); cio = opj_cio_open(movie->cinfo, buf, 300); mj2_write_jp(cio); mj2_write_ftyp(movie, cio); @@ -312,14 +313,16 @@ int main(int argc, char *argv[]) { // Ending loop fclose(j2kfile); snum++; - movie->tk[0].sample = realloc(movie->tk[0].sample, (snum+1) * sizeof(mj2_sample_t)); - movie->tk[0].chunk = realloc(movie->tk[0].chunk, (snum+1) * sizeof(mj2_chunk_t)); + movie->tk[0].sample = (mj2_sample_t*) + realloc(movie->tk[0].sample, (snum+1) * sizeof(mj2_sample_t)); + movie->tk[0].chunk = (mj2_chunk_t*) + realloc(movie->tk[0].chunk, (snum+1) * sizeof(mj2_chunk_t)); free(frame_codestream); } // Writing the MDAT box length in header offset += cio_tell(cio); - buf = (char*) malloc (4 * sizeof(char)); + buf = (unsigned char*) malloc (4 * sizeof(unsigned char)); cio = opj_cio_open(movie->cinfo, buf, 4); cio_write(cio,offset-mdat_initpos,4); fseek(mj2file,(long)mdat_initpos,SEEK_SET); @@ -333,7 +336,7 @@ int main(int argc, char *argv[]) { setparams(movie, &img); // Writing MOOV box - buf = (char*) malloc ((TEMP_BUF+snum*20) * sizeof(char)); + buf = (unsigned char*) malloc ((TEMP_BUF+snum*20) * sizeof(unsigned char)); cio = opj_cio_open(movie->cinfo, buf, (TEMP_BUF+snum*20)); mj2_write_moov(movie, cio); fwrite(buf,cio_tell(cio),1,mj2file);