Alien-FreeImage
view release on metacpan or search on metacpan
src/Source/LibOpenJPEG/jp2.c view on Meta::CPAN
memset(jp2,0,sizeof(opj_jp2_t));
/* create the J2K codec */
if (! p_is_decoder) {
jp2->j2k = opj_j2k_create_compress();
}
else {
jp2->j2k = opj_j2k_create_decompress();
}
if (jp2->j2k == 00) {
opj_jp2_destroy(jp2);
return 00;
}
/* Color structure */
jp2->color.icc_profile_buf = NULL;
jp2->color.icc_profile_len = 0;
jp2->color.jp2_cdef = NULL;
jp2->color.jp2_pclr = NULL;
jp2->color.jp2_has_colr = 0;
/* validation list creation */
jp2->m_validation_list = opj_procedure_list_create();
if (! jp2->m_validation_list) {
opj_jp2_destroy(jp2);
return 00;
}
/* execution list creation */
jp2->m_procedure_list = opj_procedure_list_create();
if (! jp2->m_procedure_list) {
opj_jp2_destroy(jp2);
return 00;
}
}
return jp2;
}
void jp2_dump(opj_jp2_t* p_jp2, OPJ_INT32 flag, FILE* out_stream)
{
/* preconditions */
assert(p_jp2 != 00);
j2k_dump(p_jp2->j2k,
flag,
out_stream);
}
opj_codestream_index_t* jp2_get_cstr_index(opj_jp2_t* p_jp2)
{
return j2k_get_cstr_index(p_jp2->j2k);
}
opj_codestream_info_v2_t* jp2_get_cstr_info(opj_jp2_t* p_jp2)
{
return j2k_get_cstr_info(p_jp2->j2k);
}
OPJ_BOOL opj_jp2_set_decoded_resolution_factor(opj_jp2_t *p_jp2,
OPJ_UINT32 res_factor,
opj_event_mgr_t * p_manager)
{
return opj_j2k_set_decoded_resolution_factor(p_jp2->j2k, res_factor, p_manager);
}
/* JPIP specific */
#ifdef USE_JPIP
static OPJ_BOOL opj_jpip_write_iptr(opj_jp2_t *jp2,
opj_stream_private_t *cio,
opj_event_mgr_t * p_manager )
{
OPJ_OFF_T j2k_codestream_exit;
OPJ_BYTE l_data_header [24];
/* preconditions */
assert(jp2 != 00);
assert(cio != 00);
assert(p_manager != 00);
assert(opj_stream_has_seek(cio));
j2k_codestream_exit = opj_stream_tell(cio);
opj_write_bytes(l_data_header, 24, 4); /* size of iptr */
opj_write_bytes(l_data_header + 4,JPIP_IPTR,4); /* IPTR */
#if 0
opj_write_bytes(l_data_header + 4 + 4, 0, 8); /* offset */
opj_write_bytes(l_data_header + 8 + 8, 0, 8); /* length */
#else
opj_write_double(l_data_header + 4 + 4, 0); /* offset */
opj_write_double(l_data_header + 8 + 8, 0); /* length */
#endif
if (! opj_stream_seek(cio,jp2->jpip_iptr_offset,p_manager)) {
opj_event_msg(p_manager, EVT_ERROR, "Failed to seek in the stream.\n");
return OPJ_FALSE;
}
if (opj_stream_write_data(cio,l_data_header,24,p_manager) != 24) {
opj_event_msg(p_manager, EVT_ERROR, "Failed to seek in the stream.\n");
return OPJ_FALSE;
}
if (! opj_stream_seek(cio,j2k_codestream_exit,p_manager)) {
opj_event_msg(p_manager, EVT_ERROR, "Failed to seek in the stream.\n");
return OPJ_FALSE;
}
return OPJ_TRUE;
}
static OPJ_BOOL opj_jpip_write_fidx(opj_jp2_t *jp2,
opj_stream_private_t *cio,
opj_event_mgr_t * p_manager )
{
OPJ_OFF_T j2k_codestream_exit;
OPJ_BYTE l_data_header [24];
/* preconditions */
assert(jp2 != 00);
assert(cio != 00);
assert(p_manager != 00);
assert(opj_stream_has_seek(cio));
( run in 1.265 second using v1.01-cache-2.11-cpan-56fb94df46f )