summaryrefslogtreecommitdiff
path: root/libopenjpeg
diff options
context:
space:
mode:
authorMickael Savinaud <savmickael@users.noreply.github.com>2011-09-27 12:32:28 +0000
committerMickael Savinaud <savmickael@users.noreply.github.com>2011-09-27 12:32:28 +0000
commitb8efd02c7feba78097eeb5bc4ef3781633382a47 (patch)
tree28e6109be9929125ba5b646c91ed6d401b33c082 /libopenjpeg
parenta600d8f4e2c21ea0532d4af3dc6374b60b93c583 (diff)
[trunk] WIP: fix some warnings about a static function and j2k_read_unk_v2
Diffstat (limited to 'libopenjpeg')
-rw-r--r--libopenjpeg/j2k.c90
-rw-r--r--libopenjpeg/t1.c15
-rw-r--r--libopenjpeg/t1.h15
3 files changed, 44 insertions, 76 deletions
diff --git a/libopenjpeg/j2k.c b/libopenjpeg/j2k.c
index 8e6ecb91..1bd29e7c 100644
--- a/libopenjpeg/j2k.c
+++ b/libopenjpeg/j2k.c
@@ -686,6 +686,7 @@ static void j2k_add_tlmarker( int tileno, opj_codestream_info_t *cstr_info, unsi
*/
static opj_bool j2k_read_unk_v2 ( opj_j2k_v2_t *p_j2k,
struct opj_stream_private *p_stream,
+ OPJ_UINT32 *output_marker,
struct opj_event_mgr * p_manager );
/**
@@ -3928,12 +3929,13 @@ static void j2k_read_unk(opj_j2k_t *j2k) {
*/
opj_bool j2k_read_unk_v2 ( opj_j2k_v2_t *p_j2k,
struct opj_stream_private *p_stream,
+ OPJ_UINT32 *output_marker,
struct opj_event_mgr * p_manager
)
{
- OPJ_BYTE l_data [2];
- OPJ_UINT32 l_unknown_size, l_unknown_marker;
- const opj_dec_memory_marker_handler_t * l_marker_handler = 00;
+ OPJ_UINT32 l_unknown_marker;
+ const opj_dec_memory_marker_handler_t * l_marker_handler;
+ OPJ_UINT32 l_size_unk = 2;
// preconditions
assert(p_j2k != 00);
@@ -3942,22 +3944,6 @@ opj_bool j2k_read_unk_v2 ( opj_j2k_v2_t *p_j2k,
opj_event_msg_v2(p_manager, EVT_WARNING, "Unknown marker\n");
-
-
-/* if (opj_stream_read_data(p_stream,l_data,2,p_manager) != 2) {
- opj_event_msg_v2(p_manager, EVT_WARNING, "Unknown marker\n");
- return OPJ_FALSE;
- }
-
- opj_read_bytes(l_data,&l_unknown_size,2);
- if (l_unknown_size < 2) {
- return OPJ_FALSE;
- }
- l_unknown_size-=2;
-
- if (opj_stream_skip(p_stream,l_unknown_size,p_manager) != l_unknown_size) {
- return OPJ_FALSE;
- }*/
while(1) {
// Try to read 2 bytes (the next marker ID) from stream and copy them into the buffer
if (opj_stream_read_data(p_stream,p_j2k->m_specific_param.m_decoder.m_header_data,2,p_manager) != 2) {
@@ -3978,12 +3964,22 @@ opj_bool j2k_read_unk_v2 ( opj_j2k_v2_t *p_j2k,
return OPJ_FALSE;
}
else {
- if (l_marker_handler->id != J2K_MS_UNK)
- break; // next marker is known and well located
+ if (l_marker_handler->id != J2K_MS_UNK) {
+ /* Add the marker to the codestream index*/
+ if (l_marker_handler->id != J2K_MS_SOT)
+ j2k_add_mhmarker_v2(p_j2k->cstr_index, J2K_MS_UNK,
+ (OPJ_UINT32) opj_stream_tell(p_stream) - l_size_unk,
+ l_size_unk);
+ break; /* next marker is known and well located */
+ }
+ else
+ l_size_unk += 2;
}
}
}
+ *output_marker = l_marker_handler->id ;
+
return OPJ_TRUE;
}
@@ -5139,53 +5135,23 @@ opj_bool j2k_read_header_procedure( opj_j2k_v2_t *p_j2k,
/* Get the marker handler from the marker ID */
l_marker_handler = j2k_get_marker_handler(l_current_marker);
- /* Check if the marker is known and if it is the right place to find it */
- if (! (p_j2k->m_specific_param.m_decoder.m_state & l_marker_handler->states) ) {
- opj_event_msg_v2(p_manager, EVT_ERROR, "Marker is not compliant with its position\n");
- return OPJ_FALSE;
- }
-
/* Manage case where marker is unknown */
if (l_marker_handler->id == J2K_MS_UNK) {
- OPJ_UINT32 l_size_unk = 2;
- opj_event_msg_v2(p_manager, EVT_WARNING, "Unknown marker\n");
-
- /* Try to detect the next valid marker */
- while(1) {
- /* Try to read 2 bytes (the next marker ID) from stream and copy them into the buffer */
- if (opj_stream_read_data(p_stream,p_j2k->m_specific_param.m_decoder.m_header_data,2,p_manager) != 2) {
- opj_event_msg_v2(p_manager, EVT_ERROR, "Stream too short\n");
- return OPJ_FALSE;
- }
-
- /* Read 2 bytes as the new marker ID */
- opj_read_bytes(p_j2k->m_specific_param.m_decoder.m_header_data,&l_current_marker,2);
-
- /* Check if the current marker ID is valid */
- if ( !(l_current_marker < 0xff00) ) {
- /* Get the marker handler from the marker ID */
- l_marker_handler = j2k_get_marker_handler(l_current_marker);
-
- if ( !(p_j2k->m_specific_param.m_decoder.m_state & l_marker_handler->states) ) {
- opj_event_msg_v2(p_manager, EVT_ERROR, "Marker is not compliant with its position\n");
- return OPJ_FALSE;
- }
- else{
- if (l_marker_handler->id != J2K_MS_UNK) {
- /* Add the marker to the codestream index*/
- j2k_add_mhmarker_v2(p_j2k->cstr_index, J2K_MS_UNK,
- (OPJ_UINT32) opj_stream_tell(p_stream) - l_size_unk,
- l_size_unk);
- break; /* next marker is known and well located */
- }
- else
- l_size_unk += 2;
- }
- }
+ if (! j2k_read_unk_v2(p_j2k, p_stream, &l_current_marker, p_manager)){
+ opj_event_msg_v2(p_manager, EVT_ERROR, "Unknow marker have been detected and generated error.\n");
+ return OPJ_FALSE;
}
if (l_current_marker == J2K_MS_SOT)
break; /* SOT marker is detected main header is completely read */
+ else /* Get the marker handler from the marker ID */
+ l_marker_handler = j2k_get_marker_handler(l_current_marker);
+ }
+
+ /* Check if the marker is known and if it is the right place to find it */
+ if (! (p_j2k->m_specific_param.m_decoder.m_state & l_marker_handler->states) ) {
+ opj_event_msg_v2(p_manager, EVT_ERROR, "Marker is not compliant with its position\n");
+ return OPJ_FALSE;
}
/* Try to read 2 bytes (the marker size) from stream and copy them into the buffer */
diff --git a/libopenjpeg/t1.c b/libopenjpeg/t1.c
index 2fb19776..92da1d7b 100644
--- a/libopenjpeg/t1.c
+++ b/libopenjpeg/t1.c
@@ -315,6 +315,21 @@ static void t1_decode_cblk(
int roishift,
int cblksty);
+/**
+Decode 1 code-block
+@param t1 T1 handle
+@param cblk Code-block coding parameters
+@param orient
+@param roishift Region of interest shifting value
+@param cblksty Code-block style
+*/
+static void t1_decode_cblk_v2(
+ opj_t1_t *t1,
+ opj_tcd_cblk_dec_v2_t* cblk,
+ OPJ_UINT32 orient,
+ OPJ_UINT32 roishift,
+ OPJ_UINT32 cblksty);
+
/*@}*/
/*@}*/
diff --git a/libopenjpeg/t1.h b/libopenjpeg/t1.h
index c38bfb82..bebf47ca 100644
--- a/libopenjpeg/t1.h
+++ b/libopenjpeg/t1.h
@@ -146,20 +146,7 @@ void t1_decode_cblks_v2(
opj_tcd_tilecomp_v2_t* tilec,
opj_tccp_t* tccp);
-/**
-Decode 1 code-block
-@param t1 T1 handle
-@param cblk Code-block coding parameters
-@param orient
-@param roishift Region of interest shifting value
-@param cblksty Code-block style
-*/
-static void t1_decode_cblk_v2(
- opj_t1_t *t1,
- opj_tcd_cblk_dec_v2_t* cblk,
- OPJ_UINT32 orient,
- OPJ_UINT32 roishift,
- OPJ_UINT32 cblksty);
+
/**
* Creates a new Tier 1 handle