Alien-FreeImage
view release on metacpan or search on metacpan
src/Source/LibOpenJPEG/openjpeg.c view on Meta::CPAN
}
memset(l_codec, 0, sizeof(opj_codec_private_t));
l_codec->is_decompressor = 1;
switch (p_format) {
case OPJ_CODEC_J2K:
l_codec->opj_dump_codec = (void (*) (void*, OPJ_INT32, FILE*)) j2k_dump;
l_codec->opj_get_codec_info = (opj_codestream_info_v2_t* (*) (void*) ) j2k_get_cstr_info;
l_codec->opj_get_codec_index = (opj_codestream_index_t* (*) (void*) ) j2k_get_cstr_index;
l_codec->m_codec_data.m_decompression.opj_decode =
(OPJ_BOOL (*) ( void *,
struct opj_stream_private *,
opj_image_t*, struct opj_event_mgr * )) opj_j2k_decode;
l_codec->m_codec_data.m_decompression.opj_end_decompress =
(OPJ_BOOL (*) ( void *,
struct opj_stream_private *,
struct opj_event_mgr *)) opj_j2k_end_decompress;
l_codec->m_codec_data.m_decompression.opj_read_header =
(OPJ_BOOL (*) ( struct opj_stream_private *,
void *,
opj_image_t **,
struct opj_event_mgr * )) opj_j2k_read_header;
l_codec->m_codec_data.m_decompression.opj_destroy =
(void (*) (void *))opj_j2k_destroy;
l_codec->m_codec_data.m_decompression.opj_setup_decoder =
(void (*) (void * , opj_dparameters_t * )) opj_j2k_setup_decoder;
l_codec->m_codec_data.m_decompression.opj_read_tile_header =
(OPJ_BOOL (*) ( void *,
OPJ_UINT32*,
OPJ_UINT32*,
OPJ_INT32*, OPJ_INT32*,
OPJ_INT32*, OPJ_INT32*,
OPJ_UINT32*,
OPJ_BOOL*,
struct opj_stream_private *,
struct opj_event_mgr * )) opj_j2k_read_tile_header;
l_codec->m_codec_data.m_decompression.opj_decode_tile_data =
(OPJ_BOOL (*) ( void *,
OPJ_UINT32,
OPJ_BYTE*,
OPJ_UINT32,
struct opj_stream_private *,
struct opj_event_mgr *)) opj_j2k_decode_tile;
l_codec->m_codec_data.m_decompression.opj_set_decode_area =
(OPJ_BOOL (*) ( void *,
opj_image_t*,
OPJ_INT32, OPJ_INT32, OPJ_INT32, OPJ_INT32,
struct opj_event_mgr *)) opj_j2k_set_decode_area;
l_codec->m_codec_data.m_decompression.opj_get_decoded_tile =
(OPJ_BOOL (*) ( void *p_codec,
opj_stream_private_t *p_cio,
opj_image_t *p_image,
struct opj_event_mgr * p_manager,
OPJ_UINT32 tile_index)) opj_j2k_get_tile;
l_codec->m_codec_data.m_decompression.opj_set_decoded_resolution_factor =
(OPJ_BOOL (*) ( void * p_codec,
OPJ_UINT32 res_factor,
struct opj_event_mgr * p_manager)) opj_j2k_set_decoded_resolution_factor;
l_codec->m_codec = opj_j2k_create_decompress();
if (! l_codec->m_codec) {
opj_free(l_codec);
return NULL;
}
break;
case OPJ_CODEC_JP2:
/* get a JP2 decoder handle */
l_codec->opj_dump_codec = (void (*) (void*, OPJ_INT32, FILE*)) jp2_dump;
l_codec->opj_get_codec_info = (opj_codestream_info_v2_t* (*) (void*) ) jp2_get_cstr_info;
l_codec->opj_get_codec_index = (opj_codestream_index_t* (*) (void*) ) jp2_get_cstr_index;
l_codec->m_codec_data.m_decompression.opj_decode =
(OPJ_BOOL (*) ( void *,
struct opj_stream_private *,
opj_image_t*,
struct opj_event_mgr * )) opj_jp2_decode;
l_codec->m_codec_data.m_decompression.opj_end_decompress =
(OPJ_BOOL (*) ( void *,
struct opj_stream_private *,
struct opj_event_mgr *)) opj_jp2_end_decompress;
l_codec->m_codec_data.m_decompression.opj_read_header =
(OPJ_BOOL (*) ( struct opj_stream_private *,
void *,
opj_image_t **,
struct opj_event_mgr * )) opj_jp2_read_header;
l_codec->m_codec_data.m_decompression.opj_read_tile_header =
(OPJ_BOOL (*) ( void *,
OPJ_UINT32*,
OPJ_UINT32*,
OPJ_INT32*,
OPJ_INT32*,
OPJ_INT32 * ,
OPJ_INT32 * ,
OPJ_UINT32 * ,
OPJ_BOOL *,
struct opj_stream_private *,
struct opj_event_mgr * )) opj_jp2_read_tile_header;
l_codec->m_codec_data.m_decompression.opj_decode_tile_data =
(OPJ_BOOL (*) ( void *,
OPJ_UINT32,OPJ_BYTE*,OPJ_UINT32,
struct opj_stream_private *,
struct opj_event_mgr * )) opj_jp2_decode_tile;
l_codec->m_codec_data.m_decompression.opj_destroy = (void (*) (void *))opj_jp2_destroy;
l_codec->m_codec_data.m_decompression.opj_setup_decoder =
(void (*) (void * ,opj_dparameters_t * )) opj_jp2_setup_decoder;
l_codec->m_codec_data.m_decompression.opj_set_decode_area =
(OPJ_BOOL (*) ( void *,
opj_image_t*,
OPJ_INT32,OPJ_INT32,OPJ_INT32,OPJ_INT32,
struct opj_event_mgr * )) opj_jp2_set_decode_area;
l_codec->m_codec_data.m_decompression.opj_get_decoded_tile =
(OPJ_BOOL (*) ( void *p_codec,
opj_stream_private_t *p_cio,
opj_image_t *p_image,
struct opj_event_mgr * p_manager,
OPJ_UINT32 tile_index)) opj_jp2_get_tile;
l_codec->m_codec_data.m_decompression.opj_set_decoded_resolution_factor =
(OPJ_BOOL (*) ( void * p_codec,
OPJ_UINT32 res_factor,
opj_event_mgr_t * p_manager)) opj_jp2_set_decoded_resolution_factor;
l_codec->m_codec = opj_jp2_create(OPJ_TRUE);
if (! l_codec->m_codec) {
opj_free(l_codec);
return 00;
}
break;
case OPJ_CODEC_UNKNOWN:
case OPJ_CODEC_JPT:
default:
opj_free(l_codec);
return 00;
}
opj_set_default_event_handler(&(l_codec->m_event_mgr));
return (opj_codec_t*) l_codec;
}
void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameters_t *parameters) {
if(parameters) {
memset(parameters, 0, sizeof(opj_dparameters_t));
/* default decoding parameters */
parameters->cp_layer = 0;
parameters->cp_reduce = 0;
parameters->decod_format = -1;
parameters->cod_format = -1;
parameters->flags = 0;
/* UniPG>> */
#ifdef USE_JPWL
parameters->jpwl_correct = OPJ_FALSE;
parameters->jpwl_exp_comps = JPWL_EXPECTED_COMPONENTS;
parameters->jpwl_max_tiles = JPWL_MAXIMUM_TILES;
#endif /* USE_JPWL */
/* <<UniPG */
}
}
OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec,
opj_dparameters_t *parameters
)
{
if (p_codec && parameters) {
opj_codec_private_t * l_codec = (opj_codec_private_t *) p_codec;
if (! l_codec->is_decompressor) {
opj_event_msg(&(l_codec->m_event_mgr), EVT_ERROR,
"Codec provided to the opj_setup_decoder function is not a decompressor handler.\n");
return OPJ_FALSE;
}
l_codec->m_codec_data.m_decompression.opj_setup_decoder(l_codec->m_codec,
parameters);
return OPJ_TRUE;
}
return OPJ_FALSE;
}
src/Source/LibOpenJPEG/openjpeg.c view on Meta::CPAN
&(l_codec->m_event_mgr) );
}
return OPJ_FALSE;
}
OPJ_BOOL OPJ_CALLCONV opj_read_tile_header( opj_codec_t *p_codec,
opj_stream_t * p_stream,
OPJ_UINT32 * p_tile_index,
OPJ_UINT32 * p_data_size,
OPJ_INT32 * p_tile_x0, OPJ_INT32 * p_tile_y0,
OPJ_INT32 * p_tile_x1, OPJ_INT32 * p_tile_y1,
OPJ_UINT32 * p_nb_comps,
OPJ_BOOL * p_should_go_on)
{
if (p_codec && p_stream && p_data_size && p_tile_index) {
opj_codec_private_t * l_codec = (opj_codec_private_t *) p_codec;
opj_stream_private_t * l_stream = (opj_stream_private_t *) p_stream;
if (! l_codec->is_decompressor) {
return OPJ_FALSE;
}
return l_codec->m_codec_data.m_decompression.opj_read_tile_header( l_codec->m_codec,
p_tile_index,
p_data_size,
p_tile_x0, p_tile_y0,
p_tile_x1, p_tile_y1,
p_nb_comps,
p_should_go_on,
l_stream,
&(l_codec->m_event_mgr));
}
return OPJ_FALSE;
}
OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data( opj_codec_t *p_codec,
OPJ_UINT32 p_tile_index,
OPJ_BYTE * p_data,
OPJ_UINT32 p_data_size,
opj_stream_t *p_stream
)
{
if (p_codec && p_data && p_stream) {
opj_codec_private_t * l_codec = (opj_codec_private_t *) p_codec;
opj_stream_private_t * l_stream = (opj_stream_private_t *) p_stream;
if (! l_codec->is_decompressor) {
return OPJ_FALSE;
}
return l_codec->m_codec_data.m_decompression.opj_decode_tile_data( l_codec->m_codec,
p_tile_index,
p_data,
p_data_size,
l_stream,
&(l_codec->m_event_mgr) );
}
return OPJ_FALSE;
}
OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile( opj_codec_t *p_codec,
opj_stream_t *p_stream,
opj_image_t *p_image,
OPJ_UINT32 tile_index)
{
if (p_codec && p_stream) {
opj_codec_private_t * l_codec = (opj_codec_private_t *) p_codec;
opj_stream_private_t * l_stream = (opj_stream_private_t *) p_stream;
if (! l_codec->is_decompressor) {
return OPJ_FALSE;
}
return l_codec->m_codec_data.m_decompression.opj_get_decoded_tile( l_codec->m_codec,
l_stream,
p_image,
&(l_codec->m_event_mgr),
tile_index);
}
return OPJ_FALSE;
}
OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor(opj_codec_t *p_codec,
OPJ_UINT32 res_factor )
{
opj_codec_private_t * l_codec = (opj_codec_private_t *) p_codec;
if ( !l_codec ){
fprintf(stderr, "[ERROR] Input parameters of the setup_decoder function are incorrect.\n");
return OPJ_FALSE;
}
l_codec->m_codec_data.m_decompression.opj_set_decoded_resolution_factor(l_codec->m_codec,
res_factor,
&(l_codec->m_event_mgr) );
return OPJ_TRUE;
}
/* ---------------------------------------------------------------------- */
/* COMPRESSION FUNCTIONS*/
opj_codec_t* OPJ_CALLCONV opj_create_compress(OPJ_CODEC_FORMAT p_format)
{
opj_codec_private_t *l_codec = 00;
l_codec = (opj_codec_private_t*)opj_calloc(1, sizeof(opj_codec_private_t));
if (!l_codec) {
return 00;
}
memset(l_codec, 0, sizeof(opj_codec_private_t));
l_codec->is_decompressor = 0;
switch(p_format) {
case OPJ_CODEC_J2K:
l_codec->m_codec_data.m_compression.opj_encode = (OPJ_BOOL (*) (void *,
struct opj_stream_private *,
struct opj_event_mgr * )) opj_j2k_encode;
l_codec->m_codec_data.m_compression.opj_end_compress = (OPJ_BOOL (*) ( void *,
struct opj_stream_private *,
struct opj_event_mgr *)) opj_j2k_end_compress;
l_codec->m_codec_data.m_compression.opj_start_compress = (OPJ_BOOL (*) (void *,
struct opj_stream_private *,
struct opj_image * ,
struct opj_event_mgr *)) opj_j2k_start_compress;
l_codec->m_codec_data.m_compression.opj_write_tile = (OPJ_BOOL (*) (void *,
OPJ_UINT32,
OPJ_BYTE*,
OPJ_UINT32,
struct opj_stream_private *,
struct opj_event_mgr *) ) opj_j2k_write_tile;
l_codec->m_codec_data.m_compression.opj_destroy = (void (*) (void *)) opj_j2k_destroy;
l_codec->m_codec_data.m_compression.opj_setup_encoder = (void (*) ( void *,
opj_cparameters_t *,
struct opj_image *,
struct opj_event_mgr * )) opj_j2k_setup_encoder;
l_codec->m_codec = opj_j2k_create_compress();
if (! l_codec->m_codec) {
opj_free(l_codec);
return 00;
}
break;
case OPJ_CODEC_JP2:
/* get a JP2 decoder handle */
l_codec->m_codec_data.m_compression.opj_encode = (OPJ_BOOL (*) (void *,
( run in 1.291 second using v1.01-cache-2.11-cpan-56fb94df46f )