Alien-FreeImage

 view release on metacpan or  search on metacpan

src/Source/LibOpenJPEG/openjpeg.c  view on Meta::CPAN

																			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;

src/Source/LibOpenJPEG/openjpeg.c  view on Meta::CPAN

	return OPJ_TRUE;
}

OPJ_BOOL OPJ_CALLCONV opj_write_tile (	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_stream && p_data) {
		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_compression.opj_write_tile(	l_codec->m_codec,
																	p_tile_index,
																	p_data,
																	p_data_size,
																	l_stream,
																	&(l_codec->m_event_mgr) );
	}

	return OPJ_FALSE;
}

/* ---------------------------------------------------------------------- */

void OPJ_CALLCONV opj_destroy_codec(opj_codec_t *p_codec)
{
	if (p_codec) {
		opj_codec_private_t * l_codec = (opj_codec_private_t *) p_codec;

		if (l_codec->is_decompressor) {
			l_codec->m_codec_data.m_decompression.opj_destroy(l_codec->m_codec);
		}
		else {
			l_codec->m_codec_data.m_compression.opj_destroy(l_codec->m_codec);
		}

		l_codec->m_codec = 00;
		opj_free(l_codec);
	}
}

/* ---------------------------------------------------------------------- */

void OPJ_CALLCONV opj_dump_codec(	opj_codec_t *p_codec,
									OPJ_INT32 info_flag,
									FILE* output_stream)
{
	if (p_codec) {
		opj_codec_private_t* l_codec = (opj_codec_private_t*) p_codec;

		l_codec->opj_dump_codec(l_codec->m_codec, info_flag, output_stream);
		return;
	}

	fprintf(stderr, "[ERROR] Input parameter of the dump_codec function are incorrect.\n");
	return;
}

opj_codestream_info_v2_t* OPJ_CALLCONV opj_get_cstr_info(opj_codec_t *p_codec)
{
	if (p_codec) {
		opj_codec_private_t* l_codec = (opj_codec_private_t*) p_codec;

		return l_codec->opj_get_codec_info(l_codec->m_codec);
	}

	return NULL;
}

void OPJ_CALLCONV opj_destroy_cstr_info(opj_codestream_info_v2_t **cstr_info) {
	if (cstr_info) {

		if ((*cstr_info)->m_default_tile_info.tccp_info){
			opj_free((*cstr_info)->m_default_tile_info.tccp_info);
		}

		if ((*cstr_info)->tile_info){
			/* FIXME not used for the moment*/
		}

		opj_free((*cstr_info));
		(*cstr_info) = NULL;
	}
}

opj_codestream_index_t * OPJ_CALLCONV opj_get_cstr_index(opj_codec_t *p_codec)
{
	if (p_codec) {
		opj_codec_private_t* l_codec = (opj_codec_private_t*) p_codec;

		return l_codec->opj_get_codec_index(l_codec->m_codec);
	}

	return NULL;
}

void OPJ_CALLCONV opj_destroy_cstr_index(opj_codestream_index_t **p_cstr_index)
{
	if (*p_cstr_index){
		j2k_destroy_cstr_index(*p_cstr_index);
		(*p_cstr_index) = NULL;
	}
}

opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream_v3 (const char *fname, OPJ_BOOL p_is_read_stream)
{
    return opj_stream_create_file_stream_v3(fname, OPJ_J2K_STREAM_CHUNK_SIZE, p_is_read_stream);
}

opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream_v3 (
        const char *fname, 
		OPJ_SIZE_T p_size, 
        OPJ_BOOL p_is_read_stream)
{
    opj_stream_t* l_stream = 00;



( run in 0.996 second using v1.01-cache-2.11-cpan-d7f47b0818f )