Beispiel #1
0
opj_image_t* jp2_decode(opj_jp2_t *jp2, opj_cio_t *cio, opj_codestream_info_t *cstr_info) {
	opj_common_ptr cinfo;
	opj_image_t *image = NULL;

	if(!jp2 || !cio) {
		return NULL;
	}

	cinfo = jp2->cinfo;

	/* JP2 decoding */
	if(!jp2_read_struct(jp2, cio)) {
		opj_event_msg(cinfo, EVT_ERROR, "Failed to decode jp2 structure\n");
		return NULL;
	}

	/* J2K decoding */
	image = j2k_decode(jp2->j2k, cio, cstr_info);
	if(!image) {
		opj_event_msg(cinfo, EVT_ERROR, "Failed to decode J2K image\n");
		return NULL;
	}

	/* Set Image Color Space */
	if (jp2->enumcs == 16)
		image->color_space = CLRSPC_SRGB;
	else if (jp2->enumcs == 17)
		image->color_space = CLRSPC_GRAY;
	else if (jp2->enumcs == 18)
		image->color_space = CLRSPC_SYCC;
	else
		image->color_space = CLRSPC_UNKNOWN;

	return image;
}
Beispiel #2
0
opj_image_t* jp2_decode(opj_jp2_t *jp2, opj_cio_t *cio) {
	opj_common_ptr cinfo;
	opj_image_t *image = NULL;

	if(!jp2 || !cio) {
		return NULL;
	}

	cinfo = jp2->cinfo;

	/* JP2 decoding */
	if(!jp2_read_struct(jp2, cio)) {
		opj_event_msg(cinfo, EVT_ERROR, "Failed to decode jp2 structure\n");
		return NULL;
	}

	/* J2K decoding */
	image = j2k_decode(jp2->j2k, cio);
	if(!image) {
		opj_event_msg(cinfo, EVT_ERROR, "Failed to decode J2K image\n");
	}

	return image;
}
Beispiel #3
0
opj_image_t* opj_jp2_decode(opj_jp2_t *jp2, opj_cio_t *cio, 
	opj_codestream_info_t *cstr_info) 
{
	opj_common_ptr cinfo;
	opj_image_t *image = NULL;
	opj_jp2_color_t color;

	if(!jp2 || !cio) 
   {
	return NULL;
   }
	memset(&color, 0, sizeof(opj_jp2_color_t));
	cinfo = jp2->cinfo;

/* JP2 decoding */
	if(!jp2_read_struct(jp2, cio, &color)) 
   {
	free_color_data(&color);
	opj_event_msg(cinfo, EVT_ERROR, "Failed to decode jp2 structure\n");
	return NULL;
   }

/* J2K decoding */
	image = j2k_decode(jp2->j2k, cio, cstr_info);

	if(!image) 
   {
	free_color_data(&color);
	opj_event_msg(cinfo, EVT_ERROR, "Failed to decode J2K image\n");
	return NULL;
   }
   
    if (!jp2->ignore_pclr_cmap_cdef){

    /* Set Image Color Space */
	if (jp2->enumcs == 16)
		image->color_space = CLRSPC_SRGB;
	else if (jp2->enumcs == 17)
		image->color_space = CLRSPC_GRAY;
	else if (jp2->enumcs == 18)
		image->color_space = CLRSPC_SYCC;
	else
		image->color_space = CLRSPC_UNKNOWN;

	if(color.jp2_cdef)
   {
	jp2_apply_cdef(image, &color);
   }
	if(color.jp2_pclr)
   {
/* Part 1, I.5.3.4: Either both or none : */
	if( !color.jp2_pclr->cmap) 
	 jp2_free_pclr(&color);
	else
	 jp2_apply_pclr(&color, image, cinfo);
   }
	if(color.icc_profile_buf)
   {
	image->icc_profile_buf = color.icc_profile_buf;
	color.icc_profile_buf = NULL;
	image->icc_profile_len = color.icc_profile_len;
   }
   }
   
	return image;

}/* opj_jp2_decode() */