[trunk] WIP: add output elements about decoding of jp2 files with last tile part lenght equal zero
This commit is contained in:
parent
c7d3b83164
commit
c4642d4fda
3
CHANGES
3
CHANGES
|
@ -6,7 +6,8 @@ What's New for OpenJPEG
|
||||||
+ : added
|
+ : added
|
||||||
|
|
||||||
October 11, 2011
|
October 11, 2011
|
||||||
* [mickael] WIP: correct mistake with JP2 files and manage correctly the text_GBR.jp2 filecase.
|
* [mickael] WIP: add output elements about decoding of jp2 files with last tile part lenght equal zero
|
||||||
|
* [mickael] WIP: correct mistake with JP2 files and manage correctly the text_GBR.jp2 filecase
|
||||||
|
|
||||||
October 10, 2011
|
October 10, 2011
|
||||||
* [vincent] fix 'distcheck' rule
|
* [vincent] fix 'distcheck' rule
|
||||||
|
|
|
@ -3350,8 +3350,11 @@ opj_bool j2k_read_sot_v2 (
|
||||||
};
|
};
|
||||||
#endif /* USE_JPWL */
|
#endif /* USE_JPWL */
|
||||||
|
|
||||||
|
/* Ref A.4.2: Psot could be equal zero if it is the last tile-part of the codestream.*/
|
||||||
if (!l_tot_len) {
|
if (!l_tot_len) {
|
||||||
opj_event_msg_v2(p_manager, EVT_ERROR, "Cannot read data with no size known, giving up\n");
|
opj_event_msg_v2(p_manager, EVT_ERROR, "Psot value of the current tile-part is equal to zero, "
|
||||||
|
"for the moment we couldn't manage this case (need to compute the number of byte left"
|
||||||
|
" in the codestream).\n");
|
||||||
return OPJ_FALSE;
|
return OPJ_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3368,6 +3371,7 @@ opj_bool j2k_read_sot_v2 (
|
||||||
if (l_current_part >= l_tcp->m_nb_tile_parts){
|
if (l_current_part >= l_tcp->m_nb_tile_parts){
|
||||||
opj_event_msg_v2(p_manager, EVT_ERROR, "In SOT marker, TPSot (%d) is not valid regards to the current "
|
opj_event_msg_v2(p_manager, EVT_ERROR, "In SOT marker, TPSot (%d) is not valid regards to the current "
|
||||||
"number of tile-part (%d), giving up\n", l_current_part, l_tcp->m_nb_tile_parts );
|
"number of tile-part (%d), giving up\n", l_current_part, l_tcp->m_nb_tile_parts );
|
||||||
|
p_j2k->m_specific_param.m_decoder.m_last_tile_part = 1;
|
||||||
return OPJ_FALSE;
|
return OPJ_FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3381,8 +3385,15 @@ opj_bool j2k_read_sot_v2 (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Keep the size of data to skip after this marker */
|
if (!p_j2k->m_specific_param.m_decoder.m_last_tile_part){
|
||||||
p_j2k->m_specific_param.m_decoder.m_sot_length = l_tot_len - 12; /* SOT_marker_size = 12 */
|
/* Keep the size of data to skip after this marker */
|
||||||
|
p_j2k->m_specific_param.m_decoder.m_sot_length = l_tot_len - 12; /* SOT_marker_size = 12 */
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* FIXME: need to be computed from the number of bytes remaining in the codestream */
|
||||||
|
p_j2k->m_specific_param.m_decoder.m_sot_length = 0;
|
||||||
|
}
|
||||||
|
|
||||||
p_j2k->m_specific_param.m_decoder.m_state = J2K_STATE_TPH;
|
p_j2k->m_specific_param.m_decoder.m_state = J2K_STATE_TPH;
|
||||||
|
|
||||||
/* Check if the current tile is outside the area we want decode (in tile index)*/
|
/* Check if the current tile is outside the area we want decode (in tile index)*/
|
||||||
|
|
|
@ -632,6 +632,12 @@ typedef struct opj_j2k_dec
|
||||||
OPJ_UINT32 m_start_tile_y;
|
OPJ_UINT32 m_start_tile_y;
|
||||||
OPJ_UINT32 m_end_tile_x;
|
OPJ_UINT32 m_end_tile_x;
|
||||||
OPJ_UINT32 m_end_tile_y;
|
OPJ_UINT32 m_end_tile_y;
|
||||||
|
/**
|
||||||
|
* Indicate that the current tile-part is assume as the last tile part of the codestream.
|
||||||
|
* It is useful in the case of PSot is equal to zero. The sot length will be compute in the
|
||||||
|
* SOD reader function. FIXME NOT USED for the moment
|
||||||
|
*/
|
||||||
|
opj_bool m_last_tile_part;
|
||||||
/** to tell that a tile can be decoded. */
|
/** to tell that a tile can be decoded. */
|
||||||
OPJ_UINT32 m_can_decode : 1;
|
OPJ_UINT32 m_can_decode : 1;
|
||||||
OPJ_UINT32 m_discard_tiles : 1;
|
OPJ_UINT32 m_discard_tiles : 1;
|
||||||
|
|
Loading…
Reference in New Issue