remove deprecated v1 style function j2k_read_cod
[openjpeg.git] / libopenjpeg / cio.c
index 32203a459182b2a27a3245c2b2e8e70915ced346..1e9cdebd30f365a97cb00382c05bf1f3a3f9cc99 100644 (file)
@@ -58,8 +58,9 @@ opj_cio_t* OPJ_CALLCONV opj_cio_open(opj_common_ptr cinfo, unsigned char *buffer
                                opj_free(cio);
                                return NULL;
                }
-               cio->length = (unsigned int) (0.1625 * cp->img_size + 2000); /* 0.1625 = 1.3/8 and 2000 bytes as a minimum for headers */
-               cio->buffer = (unsigned char *)opj_malloc(cio->length);
+               cio->length = (int) (0.1625 * cp->img_size + 2000); /* 0.1625 = 1.3/8 and 2000 bytes as a minimum for headers */
+               assert(cio->length >= 0);
+               cio->buffer = (unsigned char *)opj_malloc((OPJ_SIZE_T)cio->length);
                if(!cio->buffer) {
                        opj_event_msg(cio->cinfo, EVT_ERROR, "Error allocating memory for compressed bitstream\n");
                        opj_free(cio);
@@ -96,7 +97,7 @@ void OPJ_CALLCONV opj_cio_close(opj_cio_t *cio) {
 /*
  * Get position in byte stream.
  */
-int OPJ_CALLCONV cio_tell(opj_cio_t *cio) {
+OPJ_OFF_T OPJ_CALLCONV cio_tell(opj_cio_t *cio) {
        return cio->bp - cio->start;
 }
 
@@ -112,8 +113,10 @@ void OPJ_CALLCONV cio_seek(opj_cio_t *cio, int pos) {
 /*
  * Number of bytes left before the end of the stream.
  */
-int cio_numbytesleft(opj_cio_t *cio) {
-       return cio->end - cio->bp;
+OPJ_SIZE_T cio_numbytesleft(opj_cio_t *cio) {
+       const ptrdiff_t diff = cio->end - cio->bp;
+  assert( diff >= 0 );
+  return (OPJ_SIZE_T)diff;
 }
 
 /*
@@ -158,7 +161,8 @@ unsigned int cio_write(opj_cio_t *cio, unsigned long long int v, int n) {
                if( !cio_byteout(cio, (unsigned char) ((v >> (i << 3)) & 0xff)) )
                        return 0;
        }
-       return n;
+  assert( n >= 0 );
+       return (unsigned int)n;
 }
 
 /*
@@ -170,10 +174,10 @@ unsigned int cio_write(opj_cio_t *cio, unsigned long long int v, int n) {
  */
 unsigned int cio_read(opj_cio_t *cio, int n) {
        int i;
-       unsigned int v;
-       v = 0;
+       unsigned int v = 0;
        for (i = n - 1; i >= 0; i--) {
-               v += cio_bytein(cio) << (i << 3);
+    const unsigned int c = cio_bytein(cio);
+               v += c << (i << 3);
        }
        return v;
 }
@@ -371,7 +375,7 @@ void opj_read_float_LE(const OPJ_BYTE * p_buffer, OPJ_FLOAT32 * p_value)
  * Creates an abstract stream. This function does nothing except allocating memory and initializing the abstract stream.
  * @return a stream object.
 */
-opj_stream_t* OPJ_CALLCONV opj_stream_create(OPJ_UINT32 p_size,opj_bool l_is_input)
+opj_stream_t* OPJ_CALLCONV opj_stream_create(OPJ_SIZE_T p_buffer_size,opj_bool l_is_input)
 {
        opj_stream_private_t * l_stream = 00;
        l_stream = (opj_stream_private_t*) opj_malloc(sizeof(opj_stream_private_t));
@@ -380,8 +384,8 @@ opj_stream_t* OPJ_CALLCONV opj_stream_create(OPJ_UINT32 p_size,opj_bool l_is_inp
        }
 
        memset(l_stream,0,sizeof(opj_stream_private_t));
-       l_stream->m_buffer_size = p_size;
-       l_stream->m_stored_data = (OPJ_BYTE *) opj_malloc(p_size);
+       l_stream->m_buffer_size = p_buffer_size;
+       l_stream->m_stored_data = (OPJ_BYTE *) opj_malloc(p_buffer_size);
        if (! l_stream->m_stored_data) {
                opj_free(l_stream);
                return 00;
@@ -424,6 +428,7 @@ opj_stream_t* OPJ_CALLCONV opj_stream_default_create(opj_bool l_is_input)
 OPJ_API void OPJ_CALLCONV opj_stream_destroy(opj_stream_t* p_stream)
 {
        opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream;
+       
        if (l_stream) {
                opj_free(l_stream->m_stored_data);
                l_stream->m_stored_data = 00;
@@ -450,9 +455,8 @@ OPJ_API void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t* p_stream, o
 OPJ_API void OPJ_CALLCONV opj_stream_set_seek_function(opj_stream_t* p_stream, opj_stream_seek_fn p_function)
 {
        opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream;
-       if
-               (!l_stream)
-       {
+       
+       if (!l_stream) {
                return;
        }
        l_stream->m_seek_fn = p_function;
@@ -466,11 +470,11 @@ OPJ_API void OPJ_CALLCONV opj_stream_set_seek_function(opj_stream_t* p_stream, o
 OPJ_API void OPJ_CALLCONV opj_stream_set_write_function(opj_stream_t* p_stream, opj_stream_write_fn p_function)
 {
        opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream;
-       if
-               ((!l_stream )|| (! (l_stream->m_status & opj_stream_e_output)))
-       {
+       
+       if ((!l_stream )|| (! (l_stream->m_status & opj_stream_e_output))) {
                return;
        }
+
        l_stream->m_write_fn = p_function;
 }
 
@@ -482,11 +486,11 @@ OPJ_API void OPJ_CALLCONV opj_stream_set_write_function(opj_stream_t* p_stream,
 OPJ_API void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t* p_stream, opj_stream_skip_fn p_function)
 {
        opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream;
-       if
-               (! l_stream)
-       {
+       
+       if (! l_stream) {
                return;
        }
+
        l_stream->m_skip_fn = p_function;
 }
 
@@ -506,10 +510,9 @@ OPJ_API void OPJ_CALLCONV opj_stream_set_user_data(opj_stream_t* p_stream, void
  * @param              p_stream        the stream to modify
  * @param              p_data          the data to set.
 */
-OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t* p_stream, OPJ_UINT32 data_length)
+OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t* p_stream, OPJ_UINT64 data_length)
 {
        opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream;
-
        l_stream->m_user_data_length = data_length;
 }
 
@@ -521,15 +524,15 @@ OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t* p_stream
  * @param              p_event_mgr     the user event manager to be notified of special events.
  * @return             the number of bytes read, or -1 if an error occured or if the stream is at the end.
  */
-OPJ_UINT32 opj_stream_read_data (opj_stream_private_t * p_stream,OPJ_BYTE * p_buffer, OPJ_UINT32 p_size, opj_event_mgr_t * p_event_mgr)
+OPJ_SIZE_T opj_stream_read_data (opj_stream_private_t * p_stream,OPJ_BYTE * p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t * p_event_mgr)
 {
-       OPJ_UINT32 l_read_nb_bytes = 0;
+       OPJ_SIZE_T l_read_nb_bytes = 0;
        if (p_stream->m_bytes_in_buffer >= p_size) {
                memcpy(p_buffer,p_stream->m_current_data,p_size);
                p_stream->m_current_data += p_size;
                p_stream->m_bytes_in_buffer -= p_size;
                l_read_nb_bytes += p_size;
-               p_stream->m_byte_offset += p_size;
+               p_stream->m_byte_offset += (OPJ_OFF_T)p_size;
                return l_read_nb_bytes;
        }
 
@@ -538,9 +541,9 @@ OPJ_UINT32 opj_stream_read_data (opj_stream_private_t * p_stream,OPJ_BYTE * p_bu
                l_read_nb_bytes += p_stream->m_bytes_in_buffer;
                memcpy(p_buffer,p_stream->m_current_data,p_stream->m_bytes_in_buffer);
                p_stream->m_current_data += p_stream->m_bytes_in_buffer;
-               p_stream->m_byte_offset += p_stream->m_bytes_in_buffer;
+               p_stream->m_byte_offset += (OPJ_OFF_T)p_stream->m_bytes_in_buffer;
                p_stream->m_bytes_in_buffer = 0;
-               return l_read_nb_bytes ? l_read_nb_bytes : -1;
+               return l_read_nb_bytes ? l_read_nb_bytes : (OPJ_SIZE_T)-1;
        }
 
        /* the flag is not set, we copy data and then do an actual read on the stream */
@@ -550,7 +553,7 @@ OPJ_UINT32 opj_stream_read_data (opj_stream_private_t * p_stream,OPJ_BYTE * p_bu
                p_stream->m_current_data = p_stream->m_stored_data;
                p_buffer += p_stream->m_bytes_in_buffer;
                p_size -= p_stream->m_bytes_in_buffer;
-               p_stream->m_byte_offset += p_stream->m_bytes_in_buffer;
+               p_stream->m_byte_offset += (OPJ_OFF_T)p_stream->m_bytes_in_buffer;
                p_stream->m_bytes_in_buffer = 0;
        }
        else {
@@ -567,14 +570,14 @@ OPJ_UINT32 opj_stream_read_data (opj_stream_private_t * p_stream,OPJ_BYTE * p_bu
                        /* we should do an actual read on the media */
                        p_stream->m_bytes_in_buffer = p_stream->m_read_fn(p_stream->m_stored_data,p_stream->m_buffer_size,p_stream->m_user_data);
 
-                       if (p_stream->m_bytes_in_buffer == -1) {
+                       if (p_stream->m_bytes_in_buffer == (OPJ_SIZE_T)-1) {
                                /* end of stream */
                                opj_event_msg_v2(p_event_mgr, EVT_INFO, "Stream reached its end !\n");
 
                                p_stream->m_bytes_in_buffer = 0;
                                p_stream->m_status |= opj_stream_e_end;
                                /* end of stream */
-                               return l_read_nb_bytes ? l_read_nb_bytes : -1;
+                               return l_read_nb_bytes ? l_read_nb_bytes : (OPJ_SIZE_T)-1;
                        }
                        else if (p_stream->m_bytes_in_buffer < p_size) {
                                /* not enough data */
@@ -583,7 +586,7 @@ OPJ_UINT32 opj_stream_read_data (opj_stream_private_t * p_stream,OPJ_BYTE * p_bu
                                p_stream->m_current_data = p_stream->m_stored_data;
                                p_buffer += p_stream->m_bytes_in_buffer;
                                p_size -= p_stream->m_bytes_in_buffer;
-                               p_stream->m_byte_offset += p_stream->m_bytes_in_buffer;
+                               p_stream->m_byte_offset += (OPJ_OFF_T)p_stream->m_bytes_in_buffer;
                                p_stream->m_bytes_in_buffer = 0;
                        }
                        else {
@@ -591,7 +594,7 @@ OPJ_UINT32 opj_stream_read_data (opj_stream_private_t * p_stream,OPJ_BYTE * p_bu
                                memcpy(p_buffer,p_stream->m_current_data,p_size);
                                p_stream->m_current_data += p_size;
                                p_stream->m_bytes_in_buffer -= p_size;
-                               p_stream->m_byte_offset += p_size;
+                               p_stream->m_byte_offset += (OPJ_OFF_T)p_size;
                                return l_read_nb_bytes;
                        }
                }
@@ -599,14 +602,14 @@ OPJ_UINT32 opj_stream_read_data (opj_stream_private_t * p_stream,OPJ_BYTE * p_bu
                        /* direct read on the dest buffer */
                        p_stream->m_bytes_in_buffer = p_stream->m_read_fn(p_buffer,p_size,p_stream->m_user_data);
 
-                       if (p_stream->m_bytes_in_buffer == -1) {
+                       if (p_stream->m_bytes_in_buffer == (OPJ_SIZE_T)-1) {
                                /*  end of stream */
                                opj_event_msg_v2(p_event_mgr, EVT_INFO, "Stream reached its end !\n");
 
                                p_stream->m_bytes_in_buffer = 0;
                                p_stream->m_status |= opj_stream_e_end;
                                /* end of stream */
-                               return l_read_nb_bytes ? l_read_nb_bytes : -1;
+                               return l_read_nb_bytes ? l_read_nb_bytes : (OPJ_SIZE_T)-1;
                        }
                        else if (p_stream->m_bytes_in_buffer < p_size) {
                                /* not enough data */
@@ -614,13 +617,13 @@ OPJ_UINT32 opj_stream_read_data (opj_stream_private_t * p_stream,OPJ_BYTE * p_bu
                                p_stream->m_current_data = p_stream->m_stored_data;
                                p_buffer += p_stream->m_bytes_in_buffer;
                                p_size -= p_stream->m_bytes_in_buffer;
-                               p_stream->m_byte_offset += p_stream->m_bytes_in_buffer;
+                               p_stream->m_byte_offset += (OPJ_OFF_T)p_stream->m_bytes_in_buffer;
                                p_stream->m_bytes_in_buffer = 0;
                        }
                        else {
                                /* we have read the exact size */
                                l_read_nb_bytes += p_stream->m_bytes_in_buffer;
-                               p_stream->m_byte_offset += p_stream->m_bytes_in_buffer;
+                               p_stream->m_byte_offset += (OPJ_OFF_T)p_stream->m_bytes_in_buffer;
                                p_stream->m_current_data = p_stream->m_stored_data;
                                p_stream->m_bytes_in_buffer = 0;
                                return l_read_nb_bytes;
@@ -637,48 +640,49 @@ OPJ_UINT32 opj_stream_read_data (opj_stream_private_t * p_stream,OPJ_BYTE * p_bu
  * @param              p_event_mgr     the user event manager to be notified of special events.
  * @return             the number of bytes writtent, or -1 if an error occured.
  */
-OPJ_UINT32 opj_stream_write_data (opj_stream_private_t * p_stream,const OPJ_BYTE * p_buffer,OPJ_UINT32 p_size, opj_event_mgr_t * p_event_mgr)
+OPJ_SIZE_T opj_stream_write_data (opj_stream_private_t * p_stream,
+                                                                 const OPJ_BYTE * p_buffer,
+                                                                 OPJ_SIZE_T p_size, 
+                                                                 opj_event_mgr_t * p_event_mgr)
 {
-       OPJ_UINT32 l_remaining_bytes = 0;
-       OPJ_UINT32 l_write_nb_bytes = 0;
+       OPJ_SIZE_T l_remaining_bytes = 0;
+       OPJ_SIZE_T l_write_nb_bytes = 0;
 
-       if
-               (p_stream->m_status & opj_stream_e_error)
-       {
-               return -1;
+       if (p_stream->m_status & opj_stream_e_error) {
+               return (OPJ_SIZE_T)-1;
        }
 
-       while(1)
-       {
+       while(1) {
                l_remaining_bytes = p_stream->m_buffer_size - p_stream->m_bytes_in_buffer;
-               // we have more memory than required
-               if
-                       (l_remaining_bytes >= p_size)
-               {
-                       memcpy(p_stream->m_current_data,p_buffer,p_size);
+               
+               /* we have more memory than required */
+               if (l_remaining_bytes >= p_size) {
+                       memcpy(p_stream->m_current_data, p_buffer, p_size);
+                       
                        p_stream->m_current_data += p_size;
                        p_stream->m_bytes_in_buffer += p_size;
                        l_write_nb_bytes += p_size;
-                       p_stream->m_byte_offset += p_size;
+                       p_stream->m_byte_offset += (OPJ_OFF_T)p_size;
+                       
                        return l_write_nb_bytes;
                }
 
-               // we copy data and then do an actual read on the stream
-               if
-                       (l_remaining_bytes)
-               {
+               /* we copy data and then do an actual read on the stream */
+               if (l_remaining_bytes) {
                        l_write_nb_bytes += l_remaining_bytes;
+                       
                        memcpy(p_stream->m_current_data,p_buffer,l_remaining_bytes);
+                       
                        p_stream->m_current_data = p_stream->m_stored_data;
+                       
                        p_buffer += l_remaining_bytes;
                        p_size -= l_remaining_bytes;
                        p_stream->m_bytes_in_buffer += l_remaining_bytes;
-                       p_stream->m_byte_offset += l_remaining_bytes;
+                       p_stream->m_byte_offset += (OPJ_OFF_T)l_remaining_bytes;
                }
-               if
-                       (! opj_stream_flush(p_stream, p_event_mgr))
-               {
-                       return -1;
+
+               if (! opj_stream_flush(p_stream, p_event_mgr)) {
+                       return (OPJ_SIZE_T)-1;
                }
        }
 
@@ -692,28 +696,31 @@ OPJ_UINT32 opj_stream_write_data (opj_stream_private_t * p_stream,const OPJ_BYTE
  */
 opj_bool opj_stream_flush (opj_stream_private_t * p_stream, opj_event_mgr_t * p_event_mgr)
 {
-       // the number of bytes written on the media.
-       OPJ_UINT32 l_current_write_nb_bytes = 0;
+       /* the number of bytes written on the media. */
+       OPJ_SIZE_T l_current_write_nb_bytes = 0;
+
        p_stream->m_current_data = p_stream->m_stored_data;
 
-       while
-               (p_stream->m_bytes_in_buffer)
-       {
-               // we should do an actual write on the media
-               l_current_write_nb_bytes = p_stream->m_write_fn(p_stream->m_current_data,p_stream->m_bytes_in_buffer,p_stream->m_user_data);
-               if
-                       (l_current_write_nb_bytes == -1)
-               {
+       while (p_stream->m_bytes_in_buffer) {
+               /* we should do an actual write on the media */
+               l_current_write_nb_bytes = p_stream->m_write_fn(p_stream->m_current_data,
+                                                                                                               p_stream->m_bytes_in_buffer,
+                                                                                                               p_stream->m_user_data);
+               
+               if (l_current_write_nb_bytes == (OPJ_SIZE_T)-1) {
                        p_stream->m_status |= opj_stream_e_error;
                        opj_event_msg_v2(p_event_mgr, EVT_INFO, "Error on writting stream!\n");
 
-                       return EXIT_FAILURE;
+                       return OPJ_FALSE;
                }
+
                p_stream->m_current_data += l_current_write_nb_bytes;
                p_stream->m_bytes_in_buffer -= l_current_write_nb_bytes;
        }
+
        p_stream->m_current_data = p_stream->m_stored_data;
-       return EXIT_SUCCESS;
+       
+       return OPJ_TRUE;
 }
 
 /**
@@ -723,61 +730,57 @@ opj_bool opj_stream_flush (opj_stream_private_t * p_stream, opj_event_mgr_t * p_
  * @param              p_event_mgr     the user event manager to be notified of special events.
  * @return             the number of bytes skipped, or -1 if an error occured.
  */
-OPJ_SIZE_T opj_stream_read_skip (opj_stream_private_t * p_stream, OPJ_SIZE_T p_size, opj_event_mgr_t * p_event_mgr)
+OPJ_OFF_T opj_stream_read_skip (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, opj_event_mgr_t * p_event_mgr)
 {
-       OPJ_SIZE_T l_skip_nb_bytes = 0;
-       OPJ_SIZE_T l_current_skip_nb_bytes = 0;
-
-       if
-               (p_stream->m_bytes_in_buffer >= p_size)
-       {
+       OPJ_OFF_T l_skip_nb_bytes = 0;
+       OPJ_OFF_T l_current_skip_nb_bytes = 0;
+       
+       assert( p_size >= 0 );
+       
+       if (p_stream->m_bytes_in_buffer >= (OPJ_SIZE_T)p_size) {
                p_stream->m_current_data += p_size;
-               p_stream->m_bytes_in_buffer -= p_size;
+               /* it is safe to cast p_size to OPJ_SIZE_T since it is <= m_bytes_in_buffer
+               which is of type OPJ_SIZE_T */
+               p_stream->m_bytes_in_buffer -= (OPJ_SIZE_T)p_size;
                l_skip_nb_bytes += p_size;
                p_stream->m_byte_offset += l_skip_nb_bytes;
                return l_skip_nb_bytes;
        }
 
-       // we are now in the case when the remaining data if not sufficient
-       if
-               (p_stream->m_status & opj_stream_e_end)
-       {
-               l_skip_nb_bytes += p_stream->m_bytes_in_buffer;
+       /* we are now in the case when the remaining data if not sufficient */
+       if (p_stream->m_status & opj_stream_e_end) {
+               l_skip_nb_bytes += (OPJ_OFF_T)p_stream->m_bytes_in_buffer;
                p_stream->m_current_data += p_stream->m_bytes_in_buffer;
                p_stream->m_bytes_in_buffer = 0;
                p_stream->m_byte_offset += l_skip_nb_bytes;
-               return l_skip_nb_bytes ? l_skip_nb_bytes : (OPJ_SIZE_T) -1;
+               return l_skip_nb_bytes ? l_skip_nb_bytes : (OPJ_OFF_T) -1;
        }
 
-       // the flag is not set, we copy data and then do an actual skip on the stream
-       if
-               (p_stream->m_bytes_in_buffer)
-       {
-               l_skip_nb_bytes += p_stream->m_bytes_in_buffer;
+       /* the flag is not set, we copy data and then do an actual skip on the stream */
+       if (p_stream->m_bytes_in_buffer) {
+               l_skip_nb_bytes += (OPJ_OFF_T)p_stream->m_bytes_in_buffer;
                p_stream->m_current_data = p_stream->m_stored_data;
-               p_size -= p_stream->m_bytes_in_buffer;
+               p_size -= (OPJ_OFF_T)p_stream->m_bytes_in_buffer;
                p_stream->m_bytes_in_buffer = 0;
        }
 
-       while
-               (p_size > 0)
-       {
-               // we should do an actual skip on the media
+       while (p_size > 0) {
+               /* we should do an actual skip on the media */
                l_current_skip_nb_bytes = p_stream->m_skip_fn(p_size, p_stream->m_user_data);
-               if
-                       (l_current_skip_nb_bytes == (OPJ_SIZE_T) -1)
-               {
+               if (l_current_skip_nb_bytes == (OPJ_OFF_T) -1) {
                        opj_event_msg_v2(p_event_mgr, EVT_INFO, "Stream reached its end !\n");
 
                        p_stream->m_status |= opj_stream_e_end;
                        p_stream->m_byte_offset += l_skip_nb_bytes;
-                       // end if stream
-                       return l_skip_nb_bytes ? l_skip_nb_bytes : (OPJ_SIZE_T) -1;
+                       /* end if stream */
+                       return l_skip_nb_bytes ? l_skip_nb_bytes : (OPJ_OFF_T) -1;
                }
                p_size -= l_current_skip_nb_bytes;
                l_skip_nb_bytes += l_current_skip_nb_bytes;
        }
+
        p_stream->m_byte_offset += l_skip_nb_bytes;
+       
        return l_skip_nb_bytes;
 }
 
@@ -788,49 +791,44 @@ OPJ_SIZE_T opj_stream_read_skip (opj_stream_private_t * p_stream, OPJ_SIZE_T p_s
  * @param              p_event_mgr     the user event manager to be notified of special events.
  * @return             the number of bytes skipped, or -1 if an error occured.
  */
-OPJ_SIZE_T opj_stream_write_skip (opj_stream_private_t * p_stream, OPJ_SIZE_T p_size, opj_event_mgr_t * p_event_mgr)
+OPJ_OFF_T opj_stream_write_skip (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, opj_event_mgr_t * p_event_mgr)
 {
        opj_bool l_is_written = 0;
-       OPJ_SIZE_T l_current_skip_nb_bytes = 0;
-       OPJ_SIZE_T l_skip_nb_bytes = 0;
+       OPJ_OFF_T l_current_skip_nb_bytes = 0;
+       OPJ_OFF_T l_skip_nb_bytes = 0;
 
-       if
-               (p_stream->m_status & opj_stream_e_error)
-       {
-               return (OPJ_SIZE_T) -1;
+       if (p_stream->m_status & opj_stream_e_error) {
+               return (OPJ_OFF_T) -1;
        }
 
-       // we should flush data
+       /* we should flush data */
        l_is_written = opj_stream_flush (p_stream, p_event_mgr);
-       if
-               (! l_is_written)
-       {
+       if (! l_is_written) {
                p_stream->m_status |= opj_stream_e_error;
                p_stream->m_bytes_in_buffer = 0;
                p_stream->m_current_data = p_stream->m_current_data;
-               return (OPJ_SIZE_T) -1;
+               return (OPJ_OFF_T) -1;
        }
-       // then skip
+       /* then skip */
 
-       while
-               (p_size > 0)
-       {
-               // we should do an actual skip on the media
+       while (p_size > 0) {
+               /* we should do an actual skip on the media */
                l_current_skip_nb_bytes = p_stream->m_skip_fn(p_size, p_stream->m_user_data);
-               if
-                       (l_current_skip_nb_bytes == (OPJ_SIZE_T)-1)
-               {
+               
+               if (l_current_skip_nb_bytes == (OPJ_OFF_T)-1) {
                        opj_event_msg_v2(p_event_mgr, EVT_INFO, "Stream error!\n");
 
                        p_stream->m_status |= opj_stream_e_error;
                        p_stream->m_byte_offset += l_skip_nb_bytes;
-                       // end if stream
-                       return l_skip_nb_bytes ? l_skip_nb_bytes : (OPJ_SIZE_T)-1;
+                       /* end if stream */
+                       return l_skip_nb_bytes ? l_skip_nb_bytes : (OPJ_OFF_T)-1;
                }
                p_size -= l_current_skip_nb_bytes;
                l_skip_nb_bytes += l_current_skip_nb_bytes;
        }
+
        p_stream->m_byte_offset += l_skip_nb_bytes;
+       
        return l_skip_nb_bytes;
 }
 
@@ -841,7 +839,7 @@ OPJ_SIZE_T opj_stream_write_skip (opj_stream_private_t * p_stream, OPJ_SIZE_T p_
  *
  * @return             the current position of the stream.
  */
-OPJ_SIZE_T opj_stream_tell (const opj_stream_private_t * p_stream)
+OPJ_OFF_T opj_stream_tell (const opj_stream_private_t * p_stream)
 {
        return p_stream->m_byte_offset;
 }
@@ -854,10 +852,12 @@ OPJ_SIZE_T opj_stream_tell (const opj_stream_private_t * p_stream)
  *
  * @return             Number of bytes left before the end of the stream.
  */
-OPJ_SIZE_T opj_stream_get_number_byte_left (const opj_stream_private_t * p_stream)
+OPJ_OFF_T opj_stream_get_number_byte_left (const opj_stream_private_t * p_stream)
 {
-       return p_stream->m_user_data_length ?
-                               p_stream->m_user_data_length - p_stream->m_byte_offset :
+  assert( p_stream->m_byte_offset >= 0 );
+  assert( p_stream->m_user_data_length >= (OPJ_UINT64)p_stream->m_byte_offset);
+  return p_stream->m_user_data_length ?
+                               (OPJ_OFF_T)(p_stream->m_user_data_length) - p_stream->m_byte_offset :
                                0;
 }
 
@@ -868,8 +868,9 @@ OPJ_SIZE_T opj_stream_get_number_byte_left (const opj_stream_private_t * p_strea
  * @param              p_event_mgr     the user event manager to be notified of special events.
  * @return             the number of bytes skipped, or -1 if an error occured.
  */
-OPJ_SIZE_T opj_stream_skip (opj_stream_private_t * p_stream, OPJ_SIZE_T p_size, opj_event_mgr_t * p_event_mgr)
+OPJ_OFF_T opj_stream_skip (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, opj_event_mgr_t * p_event_mgr)
 {
+       assert(p_size >= 0);
        return p_stream->m_opj_skip(p_stream,p_size,p_event_mgr);
 }
 
@@ -881,23 +882,24 @@ OPJ_SIZE_T opj_stream_skip (opj_stream_private_t * p_stream, OPJ_SIZE_T p_size,
  * @param              p_event_mgr     the user event manager to be notified of special events.
  * @return             the number of bytes skipped, or -1 if an error occured.
  */
-opj_bool opj_stream_read_seek (opj_stream_private_t * p_stream, OPJ_SIZE_T p_size, opj_event_mgr_t * p_event_mgr)
+opj_bool opj_stream_read_seek (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, opj_event_mgr_t * p_event_mgr)
 {
+       OPJ_ARG_NOT_USED(p_event_mgr);
        p_stream->m_current_data = p_stream->m_stored_data;
        p_stream->m_bytes_in_buffer = 0;
 
-       if( p_stream->m_seek_fn(p_size,p_stream->m_user_data)) {
+       if( !(p_stream->m_seek_fn(p_size,p_stream->m_user_data)) ) {
                p_stream->m_status |= opj_stream_e_end;
-               return EXIT_FAILURE;
+               return OPJ_FALSE;
        }
        else {
-               // reset stream status
+               /* reset stream status */
                p_stream->m_status &= (~opj_stream_e_end);
                p_stream->m_byte_offset = p_size;
 
        }
 
-       return EXIT_SUCCESS;
+       return OPJ_TRUE;
 }
 
 /**
@@ -907,29 +909,25 @@ opj_bool opj_stream_read_seek (opj_stream_private_t * p_stream, OPJ_SIZE_T p_siz
  * @param              p_event_mgr     the user event manager to be notified of special events.
  * @return             the number of bytes skipped, or -1 if an error occured.
  */
-opj_bool opj_stream_write_seek (opj_stream_private_t * p_stream, OPJ_SIZE_T p_size, opj_event_mgr_t * p_event_mgr)
+opj_bool opj_stream_write_seek (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, opj_event_mgr_t * p_event_mgr)
 {
-       if
-               (! opj_stream_flush(p_stream,p_event_mgr))
-       {
+       if (! opj_stream_flush(p_stream,p_event_mgr)) {
                p_stream->m_status |= opj_stream_e_error;
-               return EXIT_FAILURE;
+               return OPJ_FALSE;
        }
 
        p_stream->m_current_data = p_stream->m_stored_data;
        p_stream->m_bytes_in_buffer = 0;
 
-       if
-               (! p_stream->m_seek_fn(p_size,p_stream->m_user_data))
-       {
+       if (! p_stream->m_seek_fn(p_size,p_stream->m_user_data)) {
                p_stream->m_status |= opj_stream_e_error;
-               return EXIT_FAILURE;
+               return OPJ_FALSE;
        }
-       else
-       {
+       else {
                p_stream->m_byte_offset = p_size;
        }
-       return EXIT_SUCCESS;
+
+       return OPJ_TRUE;
 }
 
 
@@ -940,8 +938,9 @@ opj_bool opj_stream_write_seek (opj_stream_private_t * p_stream, OPJ_SIZE_T p_si
  * @param              p_event_mgr     the user event manager to be notified of special events.
  * @return             true if the stream is seekable.
  */
-opj_bool opj_stream_seek (opj_stream_private_t * p_stream, OPJ_SIZE_T p_size, struct opj_event_mgr * p_event_mgr)
+opj_bool opj_stream_seek (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr)
 {
+       assert(p_size >= 0);
        return p_stream->m_opj_seek(p_stream,p_size,p_event_mgr);
 }
 
@@ -953,28 +952,32 @@ opj_bool opj_stream_has_seek (const opj_stream_private_t * p_stream)
        return p_stream->m_seek_fn != opj_stream_default_seek;
 }
 
-
-
-
-
-OPJ_UINT32 opj_stream_default_read (void * p_buffer, OPJ_UINT32 p_nb_bytes, void * p_user_data)
+OPJ_SIZE_T opj_stream_default_read (void * p_buffer, OPJ_SIZE_T p_nb_bytes, void * p_user_data)
 {
-       return (OPJ_UINT32) -1;
-}
-OPJ_UINT32 opj_stream_default_write (void * p_buffer, OPJ_UINT32 p_nb_bytes, void * p_user_data)
-{
-       return (OPJ_UINT32) -1;
+       OPJ_ARG_NOT_USED(p_buffer);
+       OPJ_ARG_NOT_USED(p_nb_bytes);
+       OPJ_ARG_NOT_USED(p_user_data);
+       return (OPJ_SIZE_T) -1;
 }
-OPJ_SIZE_T opj_stream_default_skip (OPJ_SIZE_T p_nb_bytes, void * p_user_data)
+
+OPJ_SIZE_T opj_stream_default_write (void * p_buffer, OPJ_SIZE_T p_nb_bytes, void * p_user_data)
 {
+       OPJ_ARG_NOT_USED(p_buffer);
+       OPJ_ARG_NOT_USED(p_nb_bytes);
+       OPJ_ARG_NOT_USED(p_user_data);
        return (OPJ_SIZE_T) -1;
 }
 
-opj_bool opj_stream_default_seek (OPJ_SIZE_T p_nb_bytes, void * p_user_data)
+OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes, void * p_user_data)
 {
-       return EXIT_FAILURE;
+       OPJ_ARG_NOT_USED(p_nb_bytes);
+       OPJ_ARG_NOT_USED(p_user_data);
+       return (OPJ_OFF_T) -1;
 }
 
-
-
-
+opj_bool opj_stream_default_seek (OPJ_OFF_T p_nb_bytes, void * p_user_data)
+{
+       OPJ_ARG_NOT_USED(p_nb_bytes);
+       OPJ_ARG_NOT_USED(p_user_data);
+       return OPJ_FALSE;
+}