[trunk] WIP: add a read CBD marker function (JPEG2000 part 2)
This commit is contained in:
parent
aeabfaf417
commit
195190b612
1
CHANGES
1
CHANGES
|
@ -6,6 +6,7 @@ What's New for OpenJPEG
|
||||||
+ : added
|
+ : added
|
||||||
|
|
||||||
October 12, 2011
|
October 12, 2011
|
||||||
|
+ [mickael] WIP: add a read CBD marker function (JPEG2000 part 2)
|
||||||
+ [mickael] WIP: add a read MCO marker function (JPEG2000 part 2)
|
+ [mickael] WIP: add a read MCO marker function (JPEG2000 part 2)
|
||||||
+ [mickael] WIP: add a read MCC marker function (JPEG2000 part 2)
|
+ [mickael] WIP: add a read MCC marker function (JPEG2000 part 2)
|
||||||
+ [mickael] WIP: add a read MCT marker function (JPEG2000 part 2)
|
+ [mickael] WIP: add a read MCT marker function (JPEG2000 part 2)
|
||||||
|
|
|
@ -755,6 +755,17 @@ static void j2k_write_float_to_int32 (const void * p_src_data, void * p_dest_da
|
||||||
static void j2k_write_float_to_float (const void * p_src_data, void * p_dest_data, OPJ_UINT32 p_nb_elem);
|
static void j2k_write_float_to_float (const void * p_src_data, void * p_dest_data, OPJ_UINT32 p_nb_elem);
|
||||||
static void j2k_write_float_to_float64 (const void * p_src_data, void * p_dest_data, OPJ_UINT32 p_nb_elem);
|
static void j2k_write_float_to_float64 (const void * p_src_data, void * p_dest_data, OPJ_UINT32 p_nb_elem);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a CBD marker (Component bit depth definition)
|
||||||
|
* @param p_header_data the data contained in the CBD box.
|
||||||
|
* @param p_j2k the jpeg2000 codec.
|
||||||
|
* @param p_header_size the size of the data contained in the CBD marker.
|
||||||
|
* @param p_manager the user event manager.
|
||||||
|
*/
|
||||||
|
static opj_bool j2k_read_cbd ( opj_j2k_v2_t *p_j2k,
|
||||||
|
OPJ_BYTE * p_header_data,
|
||||||
|
OPJ_UINT32 p_header_size,
|
||||||
|
struct opj_event_mgr * p_manager);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -887,8 +898,8 @@ const opj_dec_memory_marker_handler_t j2k_memory_marker_handler_tab [] =
|
||||||
{J2K_MS_CRG, J2K_STATE_MH, j2k_read_crg_v2},
|
{J2K_MS_CRG, J2K_STATE_MH, j2k_read_crg_v2},
|
||||||
{J2K_MS_COM, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_com_v2},
|
{J2K_MS_COM, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_com_v2},
|
||||||
{J2K_MS_MCT, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_mct},
|
{J2K_MS_MCT, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_mct},
|
||||||
/*FIXME MSD {J2K_MS_CBD, J2K_STATE_MH , j2k_read_cbd},
|
{J2K_MS_CBD, J2K_STATE_MH , j2k_read_cbd},
|
||||||
*/{J2K_MS_MCC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_mcc},
|
{J2K_MS_MCC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_mcc},
|
||||||
{J2K_MS_MCO, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_mco},
|
{J2K_MS_MCO, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_mco},
|
||||||
#ifdef USE_JPWL
|
#ifdef USE_JPWL
|
||||||
#ifdef TODO_MS /* FIXME */
|
#ifdef TODO_MS /* FIXME */
|
||||||
|
@ -4807,6 +4818,54 @@ opj_bool j2k_add_mct(opj_tcp_v2_t * p_tcp, opj_image_t * p_image, OPJ_UINT32 p_i
|
||||||
return OPJ_TRUE;
|
return OPJ_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a CBD marker (Component bit depth definition)
|
||||||
|
* @param p_header_data the data contained in the CBD box.
|
||||||
|
* @param p_j2k the jpeg2000 codec.
|
||||||
|
* @param p_header_size the size of the data contained in the CBD marker.
|
||||||
|
* @param p_manager the user event manager.
|
||||||
|
*/
|
||||||
|
opj_bool j2k_read_cbd ( opj_j2k_v2_t *p_j2k,
|
||||||
|
OPJ_BYTE * p_header_data,
|
||||||
|
OPJ_UINT32 p_header_size,
|
||||||
|
struct opj_event_mgr * p_manager)
|
||||||
|
{
|
||||||
|
OPJ_UINT32 l_nb_comp,l_num_comp;
|
||||||
|
OPJ_UINT32 l_comp_def;
|
||||||
|
OPJ_UINT32 i;
|
||||||
|
opj_image_comp_t * l_comp = 00;
|
||||||
|
|
||||||
|
/* preconditions */
|
||||||
|
assert(p_header_data != 00);
|
||||||
|
assert(p_j2k != 00);
|
||||||
|
assert(p_manager != 00);
|
||||||
|
|
||||||
|
l_num_comp = p_j2k->m_image->numcomps;
|
||||||
|
|
||||||
|
if (p_header_size != (p_j2k->m_image->numcomps + 2)) {
|
||||||
|
opj_event_msg_v2(p_manager, EVT_ERROR, "Crror reading CBD marker\n");
|
||||||
|
return OPJ_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
opj_read_bytes(p_header_data,&l_nb_comp,2); /* Ncbd */
|
||||||
|
p_header_data+=2;
|
||||||
|
|
||||||
|
if (l_nb_comp != l_num_comp) {
|
||||||
|
opj_event_msg_v2(p_manager, EVT_ERROR, "Crror reading CBD marker\n");
|
||||||
|
return OPJ_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
l_comp = p_j2k->m_image->comps;
|
||||||
|
for (i=0;i<l_num_comp;++i) {
|
||||||
|
opj_read_bytes(p_header_data,&l_comp_def,1); /* Component bit depth */
|
||||||
|
++p_header_data;
|
||||||
|
l_comp->sgnd = (l_comp_def>>7) & 1;
|
||||||
|
l_comp->prec = (l_comp_def&0x7f) + 1;
|
||||||
|
++l_comp;
|
||||||
|
}
|
||||||
|
|
||||||
|
return OPJ_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------- */
|
/* ----------------------------------------------------------------------- */
|
||||||
|
|
Loading…
Reference in New Issue