- j2k_image_t img;
- j2k_cp_t cp;
-
- // default blindly copied
- cp.layer=0;
- cp.reduce=0;
- cp.decod_format=-1;
- cp.cod_format=-1;
-
- cp.cod_format=J2K_CFMT;
- cp.decod_format = PGX_DFMT;
- int len = inputlength;
- unsigned char *src = (unsigned char*)inputdata;
-
- // Decompression
- if (!j2k_decode(src, len, &img, &cp)) {
- std::cerr << "ERROR -> j2k_to_image: failed to decode image!\n";
- return false;
- }
+ 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;
+ unsigned char *src = (unsigned char*)inputdata;
+ int file_length = inputlength;
+
+ /* configure the event callbacks (not required) */
+ memset(&event_mgr, 0, sizeof(opj_event_mgr_t));
+ event_mgr.error_handler = error_callback;
+ event_mgr.warning_handler = warning_callback;
+ event_mgr.info_handler = info_callback;
+
+ /* 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, NULL);
+
+ /* setup the decoder decoding parameters using user parameters */
+ opj_setup_decoder(dinfo, ¶meters);