X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmJpeg2000.cxx;h=4611a60aeba8927373739242cabd7f61cef2625b;hb=0fb6716cd0eff6a09b845e3ae1601dce2c9d9718;hp=691fc38c542c5ca6322de263bca47a565ef11b35;hpb=59d14564f55e1a4a3cb0145d210d82ebfa4018f6;p=gdcm.git diff --git a/src/gdcmJpeg2000.cxx b/src/gdcmJpeg2000.cxx index 691fc38c..4611a60a 100644 --- a/src/gdcmJpeg2000.cxx +++ b/src/gdcmJpeg2000.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmJpeg2000.cxx,v $ Language: C++ - Date: $Date: 2006/01/24 20:25:23 $ - Version: $Revision: 1.35 $ + Date: $Date: 2006/02/07 16:05:13 $ + Version: $Revision: 1.41 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -21,6 +21,10 @@ #include #include +#if defined(__BORLANDC__) + #include // for memset +#endif + extern "C" { #include } @@ -63,12 +67,13 @@ void info_callback(const char *msg, void *) { #define PGX_DFMT 1 #define BMP_DFMT 2 #define YUV_DFMT 3 + /* * Divide an integer by a power of 2 and round upwards. * * a divided by 2^b */ -static int int_ceildivpow2(int a, int b) { +inline int int_ceildivpow2(int a, int b) { return (a + (1 << b) - 1) >> b; } @@ -79,9 +84,9 @@ bool gdcm_read_JPEG2000_file (void* raw, char *inputdata, size_t inputlength) { opj_dparameters_t parameters; /* decompression parameters */ opj_event_mgr_t event_mgr; /* event manager */ - opj_image_t *image = NULL; - opj_dinfo_t* dinfo = NULL; /* handle to a decompressor */ - opj_cio_t *cio = NULL; + opj_image_t *image; + opj_dinfo_t* dinfo; /* handle to a decompressor */ + opj_cio_t *cio; unsigned char *src = (unsigned char*)inputdata; int file_length = inputlength; @@ -93,15 +98,24 @@ bool gdcm_read_JPEG2000_file (void* raw, char *inputdata, size_t inputlength) /* set decoding parameters to default values */ opj_set_default_decoder_parameters(¶meters); + + // default blindly copied + parameters.cp_layer=0; + parameters.cp_reduce=0; +// parameters.decod_format=-1; +// parameters.cod_format=-1; /* JPEG-2000 codestream */ + parameters.decod_format = J2K_CFMT; assert(parameters.decod_format == J2K_CFMT); + parameters.cod_format = PGX_DFMT; + assert(parameters.cod_format == PGX_DFMT); /* get a decoder handle */ dinfo = opj_create_decompress(CODEC_J2K); /* catch events using our callbacks and give a local context */ - opj_set_event_mgr((opj_common_ptr)dinfo, &event_mgr, stderr); + opj_set_event_mgr((opj_common_ptr)dinfo, &event_mgr, NULL); /* setup the decoder decoding parameters using user parameters */ opj_setup_decoder(dinfo, ¶meters); @@ -112,7 +126,6 @@ bool gdcm_read_JPEG2000_file (void* raw, char *inputdata, size_t inputlength) /* decode the stream and fill the image structure */ image = opj_decode(dinfo, cio); if(!image) { - fprintf(stderr, "ERROR -> j2k_to_image: failed to decode image!\n"); opj_destroy_decompress(dinfo); opj_cio_close(cio); return 1; @@ -123,7 +136,6 @@ bool gdcm_read_JPEG2000_file (void* raw, char *inputdata, size_t inputlength) /* free the memory containing the code-stream */ delete[] src; //FIXME - src = NULL; // Copy buffer for (int compno = 0; compno < image->numcomps; compno++) @@ -174,7 +186,8 @@ bool gdcm_read_JPEG2000_file (void* raw, char *inputdata, size_t inputlength) /* free image data structure */ opj_image_destroy(image); - return true; + + return true; } #if 0