[trunk] update test suite with issue 191 to 194 and update patch for 191 which should...
[openjpeg.git] / src / lib / openjp2 / j2k.c
index 47f9601ef6c9e5d6c87e9d8161f262a63dbe51f3..2fda7385d1485ce9f31b7f221c9efb26ccede1c2 100644 (file)
@@ -8,7 +8,8 @@
  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
  * Copyright (c) 2006-2007, Parvatha Elangovan
  * Copyright (c) 2010-2011, Kaori Hagihara
- * Copyright (c) 2011-2012, Mickael Savinaud, Communications & Systemes <mickael.savinaud@c-s.fr>
+ * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France 
+ * Copyright (c) 2012, CS Systemes d'Information, France
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -49,7 +50,7 @@ static void opj_j2k_setup_header_reading (opj_j2k_t *p_j2k);
 /**
  * The read header procedure.
  */
-static opj_bool opj_j2k_read_header_procedure(  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_header_procedure(  opj_j2k_t *p_j2k,
                                                 opj_stream_private_t *p_stream,
                                                 opj_event_mgr_t * p_manager);
 
@@ -62,7 +63,7 @@ static opj_bool opj_j2k_read_header_procedure(  opj_j2k_t *p_j2k,
  *
  * @return true if the parameters are correct.
  */
-static opj_bool opj_j2k_encoding_validation (   opj_j2k_t * p_j2k,
+static OPJ_BOOL opj_j2k_encoding_validation (   opj_j2k_t * p_j2k,
                                                 opj_stream_private_t *p_stream,
                                                 opj_event_mgr_t * p_manager );
 
@@ -75,7 +76,7 @@ static opj_bool opj_j2k_encoding_validation (   opj_j2k_t * p_j2k,
  *
  * @return true if the parameters are correct.
  */
-static opj_bool opj_j2k_decoding_validation (   opj_j2k_t * p_j2k,
+static OPJ_BOOL opj_j2k_decoding_validation (   opj_j2k_t * p_j2k,
                                                 opj_stream_private_t *p_stream,
                                                 opj_event_mgr_t * p_manager );
 
@@ -106,20 +107,20 @@ static void opj_j2k_setup_end_compress (opj_j2k_t *p_j2k);
  *
  * @return true if the parameters are correct.
  */
-static opj_bool opj_j2k_mct_validation (opj_j2k_t * p_j2k,
+static OPJ_BOOL opj_j2k_mct_validation (opj_j2k_t * p_j2k,
                                         opj_stream_private_t *p_stream,
                                         opj_event_mgr_t * p_manager );
 
 /**
  * Builds the tcd decoder to use to decode tile.
  */
-static opj_bool opj_j2k_build_decoder ( opj_j2k_t * p_j2k,
+static OPJ_BOOL opj_j2k_build_decoder ( opj_j2k_t * p_j2k,
                                         opj_stream_private_t *p_stream,
                                         opj_event_mgr_t * p_manager );
 /**
  * Builds the tcd encoder to use to encode tile.
  */
-static opj_bool opj_j2k_build_encoder ( opj_j2k_t * p_j2k,
+static OPJ_BOOL opj_j2k_build_encoder ( opj_j2k_t * p_j2k,
                                         opj_stream_private_t *p_stream,
                                         opj_event_mgr_t * p_manager );
 
@@ -130,7 +131,7 @@ static opj_bool opj_j2k_build_encoder ( opj_j2k_t * p_j2k,
  * @param       p_j2k                           J2K codec.
  * @param       p_manager                   the user event manager.
 */
-static opj_bool opj_j2k_create_tcd(     opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_create_tcd(     opj_j2k_t *p_j2k,
                                                                     opj_stream_private_t *p_stream,
                                                                     opj_event_mgr_t * p_manager );
 
@@ -144,7 +145,7 @@ static opj_bool opj_j2k_create_tcd(     opj_j2k_t *p_j2k,
  *
  * @return      true                            if all the procedures were successfully executed.
  */
-static opj_bool opj_j2k_exec (  opj_j2k_t * p_j2k,
+static OPJ_BOOL opj_j2k_exec (  opj_j2k_t * p_j2k,
                             opj_procedure_list_t * p_procedure_list,
                             opj_stream_private_t *p_stream,
                             opj_event_mgr_t * p_manager);
@@ -156,7 +157,7 @@ static opj_bool opj_j2k_exec (  opj_j2k_t * p_j2k,
  * @param       p_j2k                           J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_update_rates(   opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_update_rates(   opj_j2k_t *p_j2k,
                                                                             opj_stream_private_t *p_stream,
                                                                             opj_event_mgr_t * p_manager );
 
@@ -164,14 +165,14 @@ static opj_bool opj_j2k_update_rates(   opj_j2k_t *p_j2k,
  * Copies the decoding tile parameters onto all the tile parameters.
  * Creates also the tile decoder.
  */
-static opj_bool opj_j2k_copy_default_tcp_and_create_tcd (       opj_j2k_t * p_j2k,
+static OPJ_BOOL opj_j2k_copy_default_tcp_and_create_tcd (       opj_j2k_t * p_j2k,
                                                             opj_stream_private_t *p_stream,
                                                             opj_event_mgr_t * p_manager );
 
 /**
  * Destroys the memory associated with the decoding of headers.
  */
-static opj_bool opj_j2k_destroy_header_memory ( opj_j2k_t * p_j2k,
+static OPJ_BOOL opj_j2k_destroy_header_memory ( opj_j2k_t * p_j2k,
                                                 opj_stream_private_t *p_stream,
                                                 opj_event_mgr_t * p_manager );
 
@@ -217,7 +218,7 @@ static void opj_j2k_cp_destroy (opj_cp_t *p_cp);
  *
  * @return FIXME DOC
 */
-static opj_bool opj_j2k_write_SPCod_SPCoc(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_SPCod_SPCoc(      opj_j2k_t *p_j2k,
                                                                                     OPJ_UINT32 p_tile_no,
                                                                                     OPJ_UINT32 p_comp_no,
                                                                                     OPJ_BYTE * p_data,
@@ -245,7 +246,7 @@ static OPJ_UINT32 opj_j2k_get_SPCod_SPCoc_size (opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the COM marker.
  * @param       p_manager       the user event manager.
 */
-static opj_bool opj_j2k_read_SPCod_SPCoc(   opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_SPCod_SPCoc(   opj_j2k_t *p_j2k,
                                             OPJ_UINT32 compno,
                                             OPJ_BYTE * p_header_data,
                                             OPJ_UINT32 * p_header_size,
@@ -275,7 +276,7 @@ static OPJ_UINT32 opj_j2k_get_SQcd_SQcc_size (  opj_j2k_t *p_j2k,
  * @param       p_manager               the user event manager.
  *
 */
-static opj_bool opj_j2k_write_SQcd_SQcc(opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_SQcd_SQcc(opj_j2k_t *p_j2k,
                                                                             OPJ_UINT32 p_tile_no,
                                                                             OPJ_UINT32 p_comp_no,
                                                                             OPJ_BYTE * p_data,
@@ -297,7 +298,7 @@ static void opj_j2k_update_tlm ( opj_j2k_t * p_j2k, OPJ_UINT32 p_tile_part_size)
  * @param       p_manager       the user event manager.
  *
 */
-static opj_bool opj_j2k_read_SQcd_SQcc( opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_SQcd_SQcc( opj_j2k_t *p_j2k,
                                         OPJ_UINT32 compno,
                                         OPJ_BYTE * p_header_data,
                                         OPJ_UINT32 * p_header_size,
@@ -320,20 +321,20 @@ static void opj_j2k_copy_tile_quantization_parameters( opj_j2k_t *p_j2k );
 /**
  * Reads the tiles.
  */
-static opj_bool opj_j2k_decode_tiles (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_decode_tiles (  opj_j2k_t *p_j2k,
                                         opj_stream_private_t *p_stream,
                                         opj_event_mgr_t * p_manager);
 
-static opj_bool opj_j2k_pre_write_tile ( opj_j2k_t * p_j2k,
+static OPJ_BOOL opj_j2k_pre_write_tile ( opj_j2k_t * p_j2k,
                                                                              OPJ_UINT32 p_tile_index,
                                                                              opj_stream_private_t *p_stream,
                                                                              opj_event_mgr_t * p_manager );
 
-static opj_bool opj_j2k_update_image_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data, opj_image_t* p_output_image);
+static OPJ_BOOL opj_j2k_update_image_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data, opj_image_t* p_output_image);
 
 static void opj_j2k_get_tile_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data);
 
-static opj_bool opj_j2k_post_write_tile (opj_j2k_t * p_j2k,
+static OPJ_BOOL opj_j2k_post_write_tile (opj_j2k_t * p_j2k,
                                                                              OPJ_BYTE * p_data,
                                                                              OPJ_UINT32 p_data_size,
                                                                              opj_stream_private_t *p_stream,
@@ -345,14 +346,14 @@ static opj_bool opj_j2k_post_write_tile (opj_j2k_t * p_j2k,
  */
 static void opj_j2k_setup_header_writing (opj_j2k_t *p_j2k);
 
-static opj_bool opj_j2k_write_first_tile_part(  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_first_tile_part(  opj_j2k_t *p_j2k,
                                                                                             OPJ_BYTE * p_data,
                                                                                             OPJ_UINT32 * p_data_written,
                                                                                             OPJ_UINT32 p_total_data_size,
                                                                                             opj_stream_private_t *p_stream,
                                                                                             struct opj_event_mgr * p_manager );
 
-static opj_bool opj_j2k_write_all_tile_parts(   opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_all_tile_parts(   opj_j2k_t *p_j2k,
                                                                                             OPJ_BYTE * p_data,
                                                                                             OPJ_UINT32 * p_data_written,
                                                                                             OPJ_UINT32 p_total_data_size,
@@ -366,11 +367,11 @@ static opj_bool opj_j2k_write_all_tile_parts(   opj_j2k_t *p_j2k,
  * @param       p_j2k                   J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_get_end_header( opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_get_end_header( opj_j2k_t *p_j2k,
                                         opj_stream_private_t *p_stream,
                                         opj_event_mgr_t * p_manager );
 
-static opj_bool opj_j2k_allocate_tile_element_cstr_index(opj_j2k_t *p_j2k);
+static OPJ_BOOL opj_j2k_allocate_tile_element_cstr_index(opj_j2k_t *p_j2k);
 
 /*
  * -----------------------------------------------------------------------
@@ -385,7 +386,7 @@ static opj_bool opj_j2k_allocate_tile_element_cstr_index(opj_j2k_t *p_j2k);
  * @param       p_j2k                   J2K codec.
  * @param       p_manager       the user event manager.
 */
-static opj_bool opj_j2k_write_soc(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_soc(      opj_j2k_t *p_j2k,
                                                         opj_stream_private_t *p_stream,
                                                             opj_event_mgr_t * p_manager );
 
@@ -395,7 +396,7 @@ static opj_bool opj_j2k_write_soc(      opj_j2k_t *p_j2k,
  * @param       p_stream        XXX needs data
  * @param       p_manager       the user event manager.
 */
-static opj_bool opj_j2k_read_soc(   opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_soc(   opj_j2k_t *p_j2k,
                                     opj_stream_private_t *p_stream,
                                     opj_event_mgr_t * p_manager );
 
@@ -406,7 +407,7 @@ static opj_bool opj_j2k_read_soc(   opj_j2k_t *p_j2k,
  * @param       p_stream        the stream to write data to.
  * @param       p_manager       the user event manager.
 */
-static opj_bool opj_j2k_write_siz(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_siz(      opj_j2k_t *p_j2k,
                                                                 opj_stream_private_t *p_stream,
                                                                 opj_event_mgr_t * p_manager );
 
@@ -417,7 +418,7 @@ static opj_bool opj_j2k_write_siz(      opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the SIZ marker.
  * @param       p_manager       the user event manager.
 */
-static opj_bool opj_j2k_read_siz(opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_siz(opj_j2k_t *p_j2k,
                                  OPJ_BYTE * p_header_data,
                                  OPJ_UINT32 p_header_size,
                                  opj_event_mgr_t * p_manager);
@@ -429,7 +430,7 @@ static opj_bool opj_j2k_read_siz(opj_j2k_t *p_j2k,
  * @param       p_j2k                   J2K codec.
  * @param       p_manager       the user event manager.
 */
-static opj_bool opj_j2k_write_com(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_com(      opj_j2k_t *p_j2k,
                                                                         opj_stream_private_t *p_stream,
                                                                         opj_event_mgr_t * p_manager );
 
@@ -440,7 +441,7 @@ static opj_bool opj_j2k_write_com(      opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the COM marker.
  * @param       p_manager       the user event manager.
 */
-static opj_bool opj_j2k_read_com (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_com (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager );
@@ -451,7 +452,7 @@ static opj_bool opj_j2k_read_com (  opj_j2k_t *p_j2k,
  * @param       p_j2k                   J2K codec.
  * @param       p_manager       the user event manager.
 */
-static opj_bool opj_j2k_write_cod(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_cod(      opj_j2k_t *p_j2k,
                                                                         opj_stream_private_t *p_stream,
                                                                         opj_event_mgr_t * p_manager );
 
@@ -462,7 +463,7 @@ static opj_bool opj_j2k_write_cod(      opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the COD marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_cod (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_cod (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager);
@@ -475,7 +476,7 @@ static opj_bool opj_j2k_read_cod (  opj_j2k_t *p_j2k,
  * @param       p_stream    the stream to write data to.
  * @param       p_manager   the user event manager.
 */
-static opj_bool opj_j2k_write_coc(  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_coc(  opj_j2k_t *p_j2k,
                                                                 OPJ_UINT32 p_comp_no,
                                                                 opj_stream_private_t *p_stream,
                                                                 opj_event_mgr_t * p_manager );
@@ -508,7 +509,7 @@ static OPJ_UINT32 opj_j2k_get_max_coc_size(opj_j2k_t *p_j2k);
  * @param       p_header_size   the size of the data contained in the COC marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_coc (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_coc (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager );
@@ -520,7 +521,7 @@ static opj_bool opj_j2k_read_coc (  opj_j2k_t *p_j2k,
  * @param       p_stream                the stream to write data to.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_qcd(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_qcd(      opj_j2k_t *p_j2k,
                                                                         opj_stream_private_t *p_stream,
                                                                         opj_event_mgr_t * p_manager );
 
@@ -531,7 +532,7 @@ static opj_bool opj_j2k_write_qcd(      opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the QCD marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_qcd (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_qcd (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager );
@@ -543,7 +544,7 @@ static opj_bool opj_j2k_read_qcd (  opj_j2k_t *p_j2k,
  * @param       p_j2k                   J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_qcc(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_qcc(      opj_j2k_t *p_j2k,
                                                                         OPJ_UINT32 p_comp_no,
                                                                         opj_stream_private_t *p_stream,
                                                                         opj_event_mgr_t * p_manager );
@@ -575,7 +576,7 @@ static OPJ_UINT32 opj_j2k_get_max_qcc_size (opj_j2k_t *p_j2k);
  * @param       p_header_size   the size of the data contained in the QCC marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_qcc(   opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_qcc(   opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager);
@@ -586,7 +587,7 @@ static opj_bool opj_j2k_read_qcc(   opj_j2k_t *p_j2k,
  * @param       p_j2k                           J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_poc(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_poc(      opj_j2k_t *p_j2k,
                                                                         opj_stream_private_t *p_stream,
                                                                         opj_event_mgr_t * p_manager );
 /**
@@ -614,7 +615,7 @@ static OPJ_UINT32 opj_j2k_get_max_poc_size(opj_j2k_t *p_j2k);
  * @param       p_header_size   the size of the data contained in the POC marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_poc (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_poc (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager );
@@ -639,7 +640,7 @@ static OPJ_UINT32 opj_j2k_get_specific_header_sizes(opj_j2k_t *p_j2k);
  * @param       p_header_size   the size of the data contained in the TLM marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_crg (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_crg (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager );
@@ -651,7 +652,7 @@ static opj_bool opj_j2k_read_crg (  opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the TLM marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_tlm (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_tlm (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager);
@@ -663,7 +664,7 @@ static opj_bool opj_j2k_read_tlm (  opj_j2k_t *p_j2k,
  * @param       p_j2k                   J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_updated_tlm(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_updated_tlm(      opj_j2k_t *p_j2k,
                                             opj_stream_private_t *p_stream,
                                             opj_event_mgr_t * p_manager );
 
@@ -675,7 +676,7 @@ static opj_bool opj_j2k_write_updated_tlm(      opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the TLM marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_plm (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_plm (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager);
@@ -687,7 +688,7 @@ static opj_bool opj_j2k_read_plm (  opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the PLT marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_plt (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_plt (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager );
@@ -701,7 +702,7 @@ static opj_bool opj_j2k_read_plt (  opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the POC marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool j2k_read_ppm_v2 (
+static OPJ_BOOL j2k_read_ppm_v2 (
                                                 opj_j2k_t *p_j2k,
                                                 OPJ_BYTE * p_header_data,
                                                 OPJ_UINT32 p_header_size,
@@ -709,7 +710,7 @@ static opj_bool j2k_read_ppm_v2 (
                                         );
 #endif
 
-static opj_bool j2k_read_ppm_v3 (
+static OPJ_BOOL j2k_read_ppm_v3 (
                                                 opj_j2k_t *p_j2k,
                                                 OPJ_BYTE * p_header_data,
                                                 OPJ_UINT32 p_header_size,
@@ -723,7 +724,7 @@ static opj_bool j2k_read_ppm_v3 (
  * @param       p_header_size   the size of the data contained in the PPT marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_ppt (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_ppt (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager );
@@ -734,7 +735,7 @@ static opj_bool opj_j2k_read_ppt (  opj_j2k_t *p_j2k,
  * @param       p_j2k                           J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_tlm(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_tlm(      opj_j2k_t *p_j2k,
                                                                         opj_stream_private_t *p_stream,
                                                                         opj_event_mgr_t * p_manager );
 
@@ -747,7 +748,7 @@ static opj_bool opj_j2k_write_tlm(      opj_j2k_t *p_j2k,
  * @param       p_stream         the stream to write data to.
  * @param       p_manager        the user event manager.
 */
-static opj_bool opj_j2k_write_sot(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_sot(      opj_j2k_t *p_j2k,
                                                                         OPJ_BYTE * p_data,
                                                                         OPJ_UINT32 * p_data_written,
                                                                         const opj_stream_private_t *p_stream,
@@ -761,7 +762,7 @@ static opj_bool opj_j2k_write_sot(      opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the PPT marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_sot (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_sot (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager );
@@ -776,7 +777,7 @@ static opj_bool opj_j2k_read_sot (  opj_j2k_t *p_j2k,
  * @param       p_stream            the stream to write data to.
  * @param       p_manager           the user event manager.
 */
-static opj_bool opj_j2k_write_sod(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_sod(      opj_j2k_t *p_j2k,
                                                                         opj_tcd_t * p_tile_coder,
                                                                         OPJ_BYTE * p_data,
                                                                         OPJ_UINT32 * p_data_written,
@@ -791,7 +792,7 @@ static opj_bool opj_j2k_write_sod(      opj_j2k_t *p_j2k,
  * @param       p_stream                FIXME DOC
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_sod(   opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_sod(   opj_j2k_t *p_j2k,
                                     opj_stream_private_t *p_stream,
                                     opj_event_mgr_t * p_manager );
 
@@ -809,15 +810,17 @@ void opj_j2k_update_tlm (opj_j2k_t * p_j2k, OPJ_UINT32 p_tile_part_size )
  *
  * @param       p_tile_no               the tile to output
  * @param       p_comp_no               the component to output
- * @param       p_stream                                the stream to write data to.
- * @param       p_j2k                           J2K codec.
+ * @param       nb_comps                the number of components
+ * @param       p_stream                the stream to write data to.
+ * @param       p_j2k                   J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_rgn(      opj_j2k_t *p_j2k,
-                                                                        OPJ_UINT32 p_tile_no,
-                                                                        OPJ_UINT32 p_comp_no,
-                                                                        opj_stream_private_t *p_stream,
-                                                                        opj_event_mgr_t * p_manager );
+static OPJ_BOOL opj_j2k_write_rgn(  opj_j2k_t *p_j2k,
+                                    OPJ_UINT32 p_tile_no,
+                                    OPJ_UINT32 p_comp_no,
+                                    OPJ_UINT32 nb_comps,
+                                    opj_stream_private_t *p_stream,
+                                    opj_event_mgr_t * p_manager );
 
 /**
  * Reads a RGN marker (Region Of Interest)
@@ -827,7 +830,7 @@ static opj_bool opj_j2k_write_rgn(      opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the POC marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_rgn (opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_rgn (opj_j2k_t *p_j2k,
                                   OPJ_BYTE * p_header_data,
                                   OPJ_UINT32 p_header_size,
                                   opj_event_mgr_t * p_manager );
@@ -839,7 +842,7 @@ static opj_bool opj_j2k_read_rgn (opj_j2k_t *p_j2k,
  * @param       p_j2k                   J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_eoc(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_eoc(      opj_j2k_t *p_j2k,
                                     opj_stream_private_t *p_stream,
                                     opj_event_mgr_t * p_manager );
 
@@ -850,7 +853,7 @@ static opj_bool opj_j2k_write_eoc(      opj_j2k_t *p_j2k,
  * @param       p_stream                FIXME DOC
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_eoc (      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_eoc (      opj_j2k_t *p_j2k,
                                                                 opj_stream_private_t *p_stream,
                                                                 opj_event_mgr_t * p_manager );
 
@@ -861,7 +864,7 @@ static opj_bool opj_j2k_read_eoc (      opj_j2k_t *p_j2k,
  * @param       p_j2k                   J2K codec.
  * @param       p_manager       the user event manager.
 */
-static opj_bool opj_j2k_write_mct_data_group(   opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_mct_data_group(   opj_j2k_t *p_j2k,
                                                 opj_stream_private_t *p_stream,
                                                 opj_event_mgr_t * p_manager );
 
@@ -872,7 +875,7 @@ static opj_bool opj_j2k_write_mct_data_group(   opj_j2k_t *p_j2k,
  * @param       p_j2k                   J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_init_info(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_init_info(      opj_j2k_t *p_j2k,
                                     opj_stream_private_t *p_stream,
                                     opj_event_mgr_t * p_manager );
 
@@ -883,7 +886,7 @@ Add main header marker information
 @param pos          byte offset of marker segment
 @param len          length of marker segment
  */
-static opj_bool opj_j2k_add_mhmarker(opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len) ;
+static OPJ_BOOL opj_j2k_add_mhmarker(opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len) ;
 /**
 Add tile header marker information
 @param tileno       tile index number
@@ -892,7 +895,7 @@ Add tile header marker information
 @param pos          byte offset of marker segment
 @param len          length of marker segment
  */
-static opj_bool opj_j2k_add_tlmarker(OPJ_UINT32 tileno, opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len);
+static OPJ_BOOL opj_j2k_add_tlmarker(OPJ_UINT32 tileno, opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len);
 
 /**
  * Reads an unknown marker
@@ -904,7 +907,7 @@ static opj_bool opj_j2k_add_tlmarker(OPJ_UINT32 tileno, opj_codestream_index_t *
  *
  * @return      true                    if the marker could be deduced.
 */
-static opj_bool opj_j2k_read_unk( opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_unk( opj_j2k_t *p_j2k,
                                   opj_stream_private_t *p_stream,
                                   OPJ_UINT32 *output_marker,
                                   opj_event_mgr_t * p_manager );
@@ -917,7 +920,7 @@ static opj_bool opj_j2k_read_unk( opj_j2k_t *p_j2k,
  * @param       p_stream        the stream to write data to.
  * @param       p_manager       the user event manager.
 */
-static opj_bool opj_j2k_write_mct_record(       opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_mct_record(       opj_j2k_t *p_j2k,
                                                                                     opj_mct_data_t * p_mct_record,
                                             opj_stream_private_t *p_stream,
                                             opj_event_mgr_t * p_manager );
@@ -930,7 +933,7 @@ static opj_bool opj_j2k_write_mct_record(       opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the MCT marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_mct (      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_mct (      opj_j2k_t *p_j2k,
                                                                     OPJ_BYTE * p_header_data,
                                                                     OPJ_UINT32 p_header_size,
                                                                     opj_event_mgr_t * p_manager );
@@ -943,7 +946,7 @@ static opj_bool opj_j2k_read_mct (      opj_j2k_t *p_j2k,
  * @param       p_stream                the stream to write data to.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_mcc_record(   opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_mcc_record(   opj_j2k_t *p_j2k,
                                             opj_simple_mcc_decorrelation_data_t * p_mcc_record,
                                             opj_stream_private_t *p_stream,
                                             opj_event_mgr_t * p_manager );
@@ -956,7 +959,7 @@ static opj_bool opj_j2k_write_mcc_record(   opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the MCC marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_mcc (      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_mcc (      opj_j2k_t *p_j2k,
                                                                     OPJ_BYTE * p_header_data,
                                                                     OPJ_UINT32 p_header_size,
                                                                     opj_event_mgr_t * p_manager );
@@ -968,7 +971,7 @@ static opj_bool opj_j2k_read_mcc (      opj_j2k_t *p_j2k,
  * @param       p_j2k                           J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_mco(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_mco(      opj_j2k_t *p_j2k,
                                     opj_stream_private_t *p_stream,
                                     opj_event_mgr_t * p_manager );
 
@@ -980,12 +983,12 @@ static opj_bool opj_j2k_write_mco(      opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the MCO marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_mco (      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_mco (      opj_j2k_t *p_j2k,
                                                                     OPJ_BYTE * p_header_data,
                                                                     OPJ_UINT32 p_header_size,
                                                                     opj_event_mgr_t * p_manager );
 
-static opj_bool opj_j2k_add_mct(opj_tcp_t * p_tcp, opj_image_t * p_image, OPJ_UINT32 p_index);
+static OPJ_BOOL opj_j2k_add_mct(opj_tcp_t * p_tcp, opj_image_t * p_image, OPJ_UINT32 p_index);
 
 static void  opj_j2k_read_int16_to_float (const void * p_src_data, void * p_dest_data, OPJ_UINT32 p_nb_elem);
 static void  opj_j2k_read_int32_to_float (const void * p_src_data, void * p_dest_data, OPJ_UINT32 p_nb_elem);
@@ -1009,7 +1012,7 @@ static void  opj_j2k_write_float_to_float64 (const void * p_src_data, void * p_d
  * @param       p_j2k                   J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_end_encoding(   opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_end_encoding(   opj_j2k_t *p_j2k,
                                                                             opj_stream_private_t *p_stream,
                                                                             opj_event_mgr_t * p_manager );
 
@@ -1020,7 +1023,7 @@ static opj_bool opj_j2k_end_encoding(   opj_j2k_t *p_j2k,
  * @param       p_j2k                           J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_cbd(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_cbd(      opj_j2k_t *p_j2k,
                                                                     opj_stream_private_t *p_stream,
                                                                         opj_event_mgr_t * p_manager );
 
@@ -1031,7 +1034,7 @@ static opj_bool opj_j2k_write_cbd(      opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the CBD marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_cbd (      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_cbd (      opj_j2k_t *p_j2k,
                                                                 OPJ_BYTE * p_header_data,
                                                                 OPJ_UINT32 p_header_size,
                                                                 opj_event_mgr_t * p_manager);
@@ -1043,7 +1046,7 @@ static opj_bool opj_j2k_read_cbd (      opj_j2k_t *p_j2k,
  * @param       p_j2k                   J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_image_components( opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_image_components( opj_j2k_t *p_j2k,
                                                                         opj_stream_private_t *p_stream,
                                                                         opj_event_mgr_t * p_manager );
 
@@ -1054,7 +1057,7 @@ static opj_bool opj_j2k_write_image_components( opj_j2k_t *p_j2k,
  * @param       p_j2k                   J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_regions(  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_regions(  opj_j2k_t *p_j2k,
                                                                         opj_stream_private_t *p_stream,
                                                                         opj_event_mgr_t * p_manager );
 
@@ -1065,7 +1068,7 @@ static opj_bool opj_j2k_write_regions(  opj_j2k_t *p_j2k,
  * @param       p_j2k                   J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_write_epc(      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_write_epc(      opj_j2k_t *p_j2k,
                                                                     opj_stream_private_t *p_stream,
                                                                     opj_event_mgr_t * p_manager );
 
@@ -1082,7 +1085,7 @@ static opj_bool opj_j2k_write_epc(      opj_j2k_t *p_j2k,
  *
  * @return      true if the pocs are valid.
  */
-static opj_bool opj_j2k_check_poc_val(  const opj_poc_t *p_pocs,
+static OPJ_BOOL opj_j2k_check_poc_val(  const opj_poc_t *p_pocs,
                                                                             OPJ_UINT32 p_nb_pocs,
                                                                             OPJ_UINT32 p_nb_resolutions,
                                                                             OPJ_UINT32 numcomps,
@@ -1112,7 +1115,7 @@ static OPJ_UINT32 opj_j2k_get_num_tp( opj_cp_t *cp, OPJ_UINT32 pino, OPJ_UINT32
  *
  * @return true if the function was successful, false else.
  */
-static opj_bool opj_j2k_calculate_tp(   opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_calculate_tp(   opj_j2k_t *p_j2k,
                                                                             opj_cp_t *cp,
                                                                             OPJ_UINT32 * p_nb_tiles,
                                                                             opj_image_t *image,
@@ -1139,11 +1142,11 @@ typedef struct j2k_prog_order{
 }j2k_prog_order_t;
 
 j2k_prog_order_t j2k_prog_order_list[] = {
-        {CPRL, "CPRL"},
-        {LRCP, "LRCP"},
-        {PCRL, "PCRL"},
-        {RLCP, "RLCP"},
-        {RPCL, "RPCL"},
+        {OPJ_CPRL, "CPRL"},
+        {OPJ_LRCP, "LRCP"},
+        {OPJ_PCRL, "PCRL"},
+        {OPJ_RLCP, "RLCP"},
+        {OPJ_RPCL, "RPCL"},
         {(OPJ_PROG_ORDER)-1, ""}
 };
 
@@ -1191,7 +1194,7 @@ typedef struct opj_dec_memory_marker_handler
         /** value of the state when the marker can appear */
         OPJ_UINT32 states;
         /** action linked to the marker */
-        opj_bool (*handler) (   opj_j2k_t *p_j2k,
+        OPJ_BOOL (*handler) (   opj_j2k_t *p_j2k,
                             OPJ_BYTE * p_header_data,
                             OPJ_UINT32 p_header_size,
                             opj_event_mgr_t * p_manager );
@@ -1437,7 +1440,7 @@ char *opj_j2k_convert_progression_order(OPJ_PROG_ORDER prg_order){
         return po->str_prog;
 }
 
-opj_bool opj_j2k_check_poc_val( const opj_poc_t *p_pocs,
+OPJ_BOOL opj_j2k_check_poc_val( const opj_poc_t *p_pocs,
                                                         OPJ_UINT32 p_nb_pocs,
                                                         OPJ_UINT32 p_nb_resolutions,
                                                         OPJ_UINT32 p_num_comps,
@@ -1450,7 +1453,7 @@ opj_bool opj_j2k_check_poc_val( const opj_poc_t *p_pocs,
         OPJ_UINT32 step_c = 1;
         OPJ_UINT32 step_r = p_num_comps * step_c;
         OPJ_UINT32 step_l = p_nb_resolutions * step_r;
-        opj_bool loss = OPJ_FALSE;
+        OPJ_BOOL loss = OPJ_FALSE;
         OPJ_UINT32 layno0 = 0;
 
         packet_array = (OPJ_UINT32*) opj_calloc(step_l * p_num_layers, sizeof(OPJ_UINT32));
@@ -1599,7 +1602,7 @@ OPJ_UINT32 opj_j2k_get_num_tp(opj_cp_t *cp, OPJ_UINT32 pino, OPJ_UINT32 tileno)
         return tpnum;
 }
 
-opj_bool opj_j2k_calculate_tp(  opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_calculate_tp(  opj_j2k_t *p_j2k,
                                                         opj_cp_t *cp,
                                                         OPJ_UINT32 * p_nb_tiles,
                                                         opj_image_t *image,
@@ -1677,7 +1680,7 @@ opj_bool opj_j2k_calculate_tp(  opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_soc(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_soc(     opj_j2k_t *p_j2k,
                                                 opj_stream_private_t *p_stream,
                                                     opj_event_mgr_t * p_manager )
 {
@@ -1702,7 +1705,7 @@ opj_bool opj_j2k_write_soc(     opj_j2k_t *p_j2k,
 #ifdef USE_JPWL
         /* update markers struct */
 /*
-        opj_bool res = j2k_add_marker(p_j2k->cstr_info, J2K_MS_SOC, p_stream_tell(p_stream) - 2, 2);
+        OPJ_BOOL res = j2k_add_marker(p_j2k->cstr_info, J2K_MS_SOC, p_stream_tell(p_stream) - 2, 2);
 */
   assert( 0 && "TODO" );
 #endif /* USE_JPWL */
@@ -1717,7 +1720,7 @@ opj_bool opj_j2k_write_soc(     opj_j2k_t *p_j2k,
  * @param       p_stream        FIXME DOC
  * @param       p_manager       the user event manager.
 */
-static opj_bool opj_j2k_read_soc(   opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_soc(   opj_j2k_t *p_j2k,
                                     opj_stream_private_t *p_stream,
                                     opj_event_mgr_t * p_manager
                                     )
@@ -1755,7 +1758,7 @@ static opj_bool opj_j2k_read_soc(   opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_siz(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_siz(     opj_j2k_t *p_j2k,
                                                         opj_stream_private_t *p_stream,
                                                         opj_event_mgr_t * p_manager )
 {
@@ -1857,7 +1860,7 @@ opj_bool opj_j2k_write_siz(     opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the SIZ marker.
  * @param       p_manager       the user event manager.
 */
-static opj_bool opj_j2k_read_siz(opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_siz(opj_j2k_t *p_j2k,
                                  OPJ_BYTE * p_header_data,
                                  OPJ_UINT32 p_header_size,
                                  opj_event_mgr_t * p_manager
@@ -2117,25 +2120,25 @@ static opj_bool opj_j2k_read_siz(opj_j2k_t *p_j2k,
         memset(p_j2k->m_specific_param.m_decoder.m_default_tcp->tccps ,0,l_image->numcomps*sizeof(opj_tccp_t));
 
         p_j2k->m_specific_param.m_decoder.m_default_tcp->m_mct_records =
-                        (opj_mct_data_t*)opj_malloc(J2K_MCT_DEFAULT_NB_RECORDS * sizeof(opj_mct_data_t));
+                        (opj_mct_data_t*)opj_malloc(OPJ_J2K_MCT_DEFAULT_NB_RECORDS * sizeof(opj_mct_data_t));
 
         if (! p_j2k->m_specific_param.m_decoder.m_default_tcp->m_mct_records) {
                 opj_event_msg(p_manager, EVT_ERROR, "Not enough memory to take in charge SIZ marker\n");
                 return OPJ_FALSE;
         }
-        memset(p_j2k->m_specific_param.m_decoder.m_default_tcp->m_mct_records,0,J2K_MCT_DEFAULT_NB_RECORDS * sizeof(opj_mct_data_t));
-        p_j2k->m_specific_param.m_decoder.m_default_tcp->m_nb_max_mct_records = J2K_MCT_DEFAULT_NB_RECORDS;
+        memset(p_j2k->m_specific_param.m_decoder.m_default_tcp->m_mct_records,0,OPJ_J2K_MCT_DEFAULT_NB_RECORDS * sizeof(opj_mct_data_t));
+        p_j2k->m_specific_param.m_decoder.m_default_tcp->m_nb_max_mct_records = OPJ_J2K_MCT_DEFAULT_NB_RECORDS;
 
         p_j2k->m_specific_param.m_decoder.m_default_tcp->m_mcc_records =
                         (opj_simple_mcc_decorrelation_data_t*)
-                        opj_malloc(J2K_MCC_DEFAULT_NB_RECORDS * sizeof(opj_simple_mcc_decorrelation_data_t));
+                        opj_malloc(OPJ_J2K_MCC_DEFAULT_NB_RECORDS * sizeof(opj_simple_mcc_decorrelation_data_t));
 
         if (! p_j2k->m_specific_param.m_decoder.m_default_tcp->m_mcc_records) {
                 opj_event_msg(p_manager, EVT_ERROR, "Not enough memory to take in charge SIZ marker\n");
                 return OPJ_FALSE;
         }
-        memset(p_j2k->m_specific_param.m_decoder.m_default_tcp->m_mcc_records,0,J2K_MCC_DEFAULT_NB_RECORDS * sizeof(opj_simple_mcc_decorrelation_data_t));
-        p_j2k->m_specific_param.m_decoder.m_default_tcp->m_nb_max_mcc_records = J2K_MCC_DEFAULT_NB_RECORDS;
+        memset(p_j2k->m_specific_param.m_decoder.m_default_tcp->m_mcc_records,0,OPJ_J2K_MCC_DEFAULT_NB_RECORDS * sizeof(opj_simple_mcc_decorrelation_data_t));
+        p_j2k->m_specific_param.m_decoder.m_default_tcp->m_nb_max_mcc_records = OPJ_J2K_MCC_DEFAULT_NB_RECORDS;
 
         /* set up default dc level shift */
         for (i=0;i<l_image->numcomps;++i) {
@@ -2162,7 +2165,7 @@ static opj_bool opj_j2k_read_siz(opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_com(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_com(     opj_j2k_t *p_j2k,
                                                         opj_stream_private_t *p_stream,
                                                         opj_event_mgr_t * p_manager
                             )
@@ -2221,7 +2224,7 @@ opj_bool opj_j2k_write_com(     opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the COM marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_com (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_com (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager
@@ -2236,7 +2239,7 @@ static opj_bool opj_j2k_read_com (  opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_cod(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_cod(     opj_j2k_t *p_j2k,
                                                         opj_stream_private_t *p_stream,
                                                         opj_event_mgr_t * p_manager )
 {
@@ -2314,7 +2317,7 @@ opj_bool opj_j2k_write_cod(     opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the COD marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_cod (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_cod (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager
@@ -2399,7 +2402,7 @@ static opj_bool opj_j2k_read_cod (  opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_coc( opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_coc( opj_j2k_t *p_j2k,
                                                 OPJ_UINT32 p_comp_no,
                                                 opj_stream_private_t *p_stream,
                                                 opj_event_mgr_t * p_manager )
@@ -2517,7 +2520,7 @@ OPJ_UINT32 opj_j2k_get_max_coc_size(opj_j2k_t *p_j2k)
  * @param       p_header_size   the size of the data contained in the COC marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_coc (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_coc (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager
@@ -2571,7 +2574,7 @@ static opj_bool opj_j2k_read_coc (  opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_qcd(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_qcd(     opj_j2k_t *p_j2k,
                                                         opj_stream_private_t *p_stream,
                                                         opj_event_mgr_t * p_manager
                             )
@@ -2634,7 +2637,7 @@ opj_bool opj_j2k_write_qcd(     opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the QCD marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_qcd (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_qcd (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager
@@ -2661,7 +2664,7 @@ static opj_bool opj_j2k_read_qcd (  opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_qcc(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_qcc(     opj_j2k_t *p_j2k,
                                                 OPJ_UINT32 p_comp_no,
                                                 opj_stream_private_t *p_stream,
                                                 opj_event_mgr_t * p_manager
@@ -2760,7 +2763,7 @@ OPJ_UINT32 opj_j2k_get_max_qcc_size (opj_j2k_t *p_j2k)
  * @param       p_header_size   the size of the data contained in the QCC marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_qcc(   opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_qcc(   opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager
@@ -2833,7 +2836,7 @@ static opj_bool opj_j2k_read_qcc(   opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_poc(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_poc(     opj_j2k_t *p_j2k,
                                                         opj_stream_private_t *p_stream,
                                                         opj_event_mgr_t * p_manager
                             )
@@ -3030,7 +3033,7 @@ OPJ_UINT32 opj_j2k_get_specific_header_sizes(opj_j2k_t *p_j2k)
  * @param       p_header_size   the size of the data contained in the POC marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_poc (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_poc (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager
@@ -3111,7 +3114,7 @@ static opj_bool opj_j2k_read_poc (  opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the TLM marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_crg (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_crg (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager
@@ -3151,7 +3154,7 @@ static opj_bool opj_j2k_read_crg (  opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the TLM marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_tlm (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_tlm (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager
@@ -3207,7 +3210,7 @@ static opj_bool opj_j2k_read_tlm (  opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the TLM marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_plm (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_plm (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager
@@ -3277,7 +3280,7 @@ static opj_bool opj_j2k_read_plm (  opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the PLT marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_plt (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_plt (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager
@@ -3322,7 +3325,7 @@ static opj_bool opj_j2k_read_plt (  opj_j2k_t *p_j2k,
 }
 
 #if 0
-opj_bool j2k_read_ppm_v2 (
+OPJ_BOOL j2k_read_ppm_v2 (
                                                 opj_j2k_t *p_j2k,
                                                 OPJ_BYTE * p_header_data,
                                                 OPJ_UINT32 p_header_size,
@@ -3424,7 +3427,7 @@ opj_bool j2k_read_ppm_v2 (
 }
 #endif
 
-opj_bool j2k_read_ppm_v3 (
+OPJ_BOOL j2k_read_ppm_v3 (
                                                 opj_j2k_t *p_j2k,
                                                 OPJ_BYTE * p_header_data,
                                                 OPJ_UINT32 p_header_size,
@@ -3651,7 +3654,7 @@ opj_bool j2k_read_ppm_v3 (
  * @param       p_header_size   the size of the data contained in the PPT marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_ppt (  opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_ppt (  opj_j2k_t *p_j2k,
                                     OPJ_BYTE * p_header_data,
                                     OPJ_UINT32 p_header_size,
                                     opj_event_mgr_t * p_manager
@@ -3726,7 +3729,7 @@ static opj_bool opj_j2k_read_ppt (  opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_tlm(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_tlm(     opj_j2k_t *p_j2k,
                                                         opj_stream_private_t *p_stream,
                                                         opj_event_mgr_t * p_manager
                             )
@@ -3780,7 +3783,7 @@ opj_bool opj_j2k_write_tlm(     opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_sot(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_sot(     opj_j2k_t *p_j2k,
                                                         OPJ_BYTE * p_data,
                                                         OPJ_UINT32 * p_data_written,
                                                         const opj_stream_private_t *p_stream,
@@ -3814,7 +3817,7 @@ opj_bool opj_j2k_write_sot(     opj_j2k_t *p_j2k,
 #ifdef USE_JPWL
         /* update markers struct */
 /*
-        opj_bool res = j2k_add_marker(p_j2k->cstr_info, J2K_MS_SOT, p_j2k->sot_start, len + 2);
+        OPJ_BOOL res = j2k_add_marker(p_j2k->cstr_info, J2K_MS_SOT, p_j2k->sot_start, len + 2);
 */
   assert( 0 && "TODO" );
 #endif /* USE_JPWL */
@@ -3824,7 +3827,7 @@ opj_bool opj_j2k_write_sot(     opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_read_sot ( opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_read_sot ( opj_j2k_t *p_j2k,
                             OPJ_BYTE * p_header_data,
                             OPJ_UINT32 p_header_size,
                             opj_event_mgr_t * p_manager )
@@ -4070,7 +4073,7 @@ opj_bool opj_j2k_read_sot ( opj_j2k_t *p_j2k,
                 return OPJ_TRUE;
         }
 
-opj_bool opj_j2k_write_sod(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_sod(     opj_j2k_t *p_j2k,
                                                         opj_tcd_t * p_tile_coder,
                                                         OPJ_BYTE * p_data,
                                                         OPJ_UINT32 * p_data_written,
@@ -4117,7 +4120,7 @@ opj_bool opj_j2k_write_sod(     opj_j2k_t *p_j2k,
                 /* UniPG>> */
 #ifdef USE_JPWL
                 /* update markers struct */
-                /*opj_bool res = j2k_add_marker(p_j2k->cstr_info, J2K_MS_SOD, p_j2k->sod_start, 2);
+                /*OPJ_BOOL res = j2k_add_marker(p_j2k->cstr_info, J2K_MS_SOD, p_j2k->sod_start, 2);
 */
   assert( 0 && "TODO" );
 #endif /* USE_JPWL */
@@ -4144,7 +4147,7 @@ opj_bool opj_j2k_write_sod(     opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_read_sod (opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_read_sod (opj_j2k_t *p_j2k,
                            opj_stream_private_t *p_stream,
                                                    opj_event_mgr_t * p_manager
                            )
@@ -4154,7 +4157,7 @@ opj_bool opj_j2k_read_sod (opj_j2k_t *p_j2k,
         OPJ_BYTE ** l_current_data = 00;
         opj_tcp_t * l_tcp = 00;
         OPJ_UINT32 * l_tile_len = 00;
-        opj_bool l_sot_length_pb_detected = OPJ_FALSE;
+        OPJ_BOOL l_sot_length_pb_detected = OPJ_FALSE;
 
         /* preconditions */
         assert(p_j2k != 00);
@@ -4259,17 +4262,16 @@ opj_bool opj_j2k_read_sod (opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
- opj_bool opj_j2k_write_rgn(opj_j2k_t *p_j2k,
-                                                        OPJ_UINT32 p_tile_no,
-                                                        OPJ_UINT32 p_comp_no,
-                                                        opj_stream_private_t *p_stream,
-                                                        opj_event_mgr_t * p_manager
+ OPJ_BOOL opj_j2k_write_rgn(opj_j2k_t *p_j2k,
+                            OPJ_UINT32 p_tile_no,
+                            OPJ_UINT32 p_comp_no,
+                            OPJ_UINT32 nb_comps,
+                            opj_stream_private_t *p_stream,
+                            opj_event_mgr_t * p_manager
                             )
 {
         OPJ_BYTE * l_current_data = 00;
-        OPJ_UINT32 l_nb_comp;
         OPJ_UINT32 l_rgn_size;
-        opj_image_t *l_image = 00;
         opj_cp_t *l_cp = 00;
         opj_tcp_t *l_tcp = 00;
         opj_tccp_t *l_tccp = 00;
@@ -4284,9 +4286,7 @@ opj_bool opj_j2k_read_sod (opj_j2k_t *p_j2k,
         l_tcp = &l_cp->tcps[p_tile_no];
         l_tccp = &l_tcp->tccps[p_comp_no];
 
-        l_nb_comp = l_image->numcomps;
-
-        if (l_nb_comp <= 256) {
+        if (nb_comps <= 256) {
                 l_comp_room = 1;
         }
         else {
@@ -4303,13 +4303,13 @@ opj_bool opj_j2k_read_sod (opj_j2k_t *p_j2k,
         opj_write_bytes(l_current_data,l_rgn_size-2,2);                                 /* Lrgn */
         l_current_data += 2;
 
-        opj_write_bytes(l_current_data,p_comp_no,l_comp_room);                  /* Crgn */
+        opj_write_bytes(l_current_data,p_comp_no,l_comp_room);                          /* Crgn */
         l_current_data+=l_comp_room;
 
-        opj_write_bytes(l_current_data, 0,1);                                                   /* Srgn */
+        opj_write_bytes(l_current_data, 0,1);                                           /* Srgn */
         ++l_current_data;
 
-        opj_write_bytes(l_current_data, l_tccp->roishift,1);                    /* SPrgn */
+        opj_write_bytes(l_current_data, l_tccp->roishift,1);                            /* SPrgn */
         ++l_current_data;
 
         if (opj_stream_write_data(p_stream,p_j2k->m_specific_param.m_encoder.m_header_tile_data,l_rgn_size,p_manager) != l_rgn_size) {
@@ -4319,7 +4319,7 @@ opj_bool opj_j2k_read_sod (opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_eoc(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_eoc(     opj_j2k_t *p_j2k,
                             opj_stream_private_t *p_stream,
                             opj_event_mgr_t * p_manager
                             )
@@ -4335,7 +4335,7 @@ opj_bool opj_j2k_write_eoc(     opj_j2k_t *p_j2k,
 #ifdef USE_JPWL
         /* update markers struct */
         /*
-        opj_bool res = j2k_add_marker(p_j2k->cstr_info, J2K_MS_EOC, p_stream_tell(p_stream) - 2, 2);
+        OPJ_BOOL res = j2k_add_marker(p_j2k->cstr_info, J2K_MS_EOC, p_stream_tell(p_stream) - 2, 2);
 */
 #endif /* USE_JPWL */
 
@@ -4358,7 +4358,7 @@ opj_bool opj_j2k_write_eoc(     opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the POC marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_rgn (opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_rgn (opj_j2k_t *p_j2k,
                                   OPJ_BYTE * p_header_data,
                                   OPJ_UINT32 p_header_size,
                                   opj_event_mgr_t * p_manager
@@ -4432,7 +4432,7 @@ OPJ_FLOAT32 opj_j2k_get_default_stride (opj_tcp_t * p_tcp)
     return 0;
 }
 
-opj_bool opj_j2k_update_rates(  opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_update_rates(  opj_j2k_t *p_j2k,
                                                             opj_stream_private_t *p_stream,
                                                             opj_event_mgr_t * p_manager )
 {
@@ -4484,7 +4484,7 @@ opj_bool opj_j2k_update_rates(  opj_j2k_t *p_j2k,
 
                         /* Modification of the RATE >> */
                         if (*l_rates) {
-                                *l_rates =              (( (float) (l_size_pixel * (l_x1 - l_x0) * (l_y1 - l_y0)))
+                                *l_rates =              (( (OPJ_FLOAT32) (l_size_pixel * (l_x1 - l_x0) * (l_y1 - l_y0)))
                                                                 /
                                                                 ((*l_rates) * l_bits_empty)
                                                                 )
@@ -4594,7 +4594,7 @@ opj_bool opj_j2k_update_rates(  opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_read_eoc (     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_read_eoc (     opj_j2k_t *p_j2k,
                                                         opj_stream_private_t *p_stream,
                                                         opj_event_mgr_t * p_manager )
 {
@@ -4602,7 +4602,7 @@ opj_bool opj_j2k_read_eoc (     opj_j2k_t *p_j2k,
         opj_tcd_t * l_tcd = 00;
         OPJ_UINT32 l_nb_tiles;
         opj_tcp_t * l_tcp = 00;
-        opj_bool l_success;
+        OPJ_BOOL l_success;
 
         /* preconditions */
         assert(p_j2k != 00);
@@ -4643,7 +4643,7 @@ opj_bool opj_j2k_read_eoc (     opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_get_end_header(opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_get_end_header(opj_j2k_t *p_j2k,
                                                         struct opj_stream_private *p_stream,
                                                         struct opj_event_mgr * p_manager )
 {
@@ -4657,7 +4657,7 @@ opj_bool opj_j2k_get_end_header(opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_mct_data_group(  opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_mct_data_group(  opj_j2k_t *p_j2k,
                                                                         struct opj_stream_private *p_stream,
                                                                         struct opj_event_mgr * p_manager )
 {
@@ -4705,7 +4705,7 @@ opj_bool opj_j2k_write_mct_data_group(  opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_image_components(opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_image_components(opj_j2k_t *p_j2k,
                                                                         struct opj_stream_private *p_stream,
                                                                         struct opj_event_mgr * p_manager )
 {
@@ -4730,7 +4730,7 @@ opj_bool opj_j2k_write_image_components(opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_regions( opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_regions( opj_j2k_t *p_j2k,
                                                         struct opj_stream_private *p_stream,
                                                         struct opj_event_mgr * p_manager )
 {
@@ -4747,7 +4747,7 @@ opj_bool opj_j2k_write_regions( opj_j2k_t *p_j2k,
         for     (compno = 0; compno < p_j2k->m_private_image->numcomps; ++compno)  {
                 if (l_tccp->roishift) {
 
-                        if (! opj_j2k_write_rgn(p_j2k,0,compno,p_stream,p_manager)) {
+                        if (! opj_j2k_write_rgn(p_j2k,0,compno,p_j2k->m_private_image->numcomps,p_stream,p_manager)) {
                                 return OPJ_FALSE;
                         }
                 }
@@ -4758,7 +4758,7 @@ opj_bool opj_j2k_write_regions( opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_epc(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_epc(     opj_j2k_t *p_j2k,
                                                 struct opj_stream_private *p_stream,
                                                 struct opj_event_mgr * p_manager )
 {
@@ -4796,7 +4796,7 @@ opj_bool opj_j2k_write_epc(     opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_read_unk (     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_read_unk (     opj_j2k_t *p_j2k,
                                                         opj_stream_private_t *p_stream,
                                                         OPJ_UINT32 *output_marker,
                                                         opj_event_mgr_t * p_manager
@@ -4837,7 +4837,7 @@ opj_bool opj_j2k_read_unk (     opj_j2k_t *p_j2k,
                                         /* Add the marker to the codestream index*/
                                         if (l_marker_handler->id != J2K_MS_SOT)
                                         {
-                                                opj_bool res = opj_j2k_add_mhmarker(p_j2k->cstr_index, J2K_MS_UNK,
+                                                OPJ_BOOL res = opj_j2k_add_mhmarker(p_j2k->cstr_index, J2K_MS_UNK,
                                                                 (OPJ_UINT32) opj_stream_tell(p_stream) - l_size_unk,
                                                                 l_size_unk);
                                                 if (res == OPJ_FALSE) {
@@ -4858,7 +4858,7 @@ opj_bool opj_j2k_read_unk (     opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_mct_record(      opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_mct_record(      opj_j2k_t *p_j2k,
                                                                 opj_mct_data_t * p_mct_record,
                                                                 struct opj_stream_private *p_stream,
                                                                 struct opj_event_mgr * p_manager )
@@ -4924,7 +4924,7 @@ opj_bool opj_j2k_write_mct_record(      opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the MCT marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_mct (      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_mct (      opj_j2k_t *p_j2k,
                                                                     OPJ_BYTE * p_header_data,
                                                                     OPJ_UINT32 p_header_size,
                                                                     opj_event_mgr_t * p_manager
@@ -4980,7 +4980,7 @@ static opj_bool opj_j2k_read_mct (      opj_j2k_t *p_j2k,
         if (i == l_tcp->m_nb_mct_records) {
                 if (l_tcp->m_nb_mct_records == l_tcp->m_nb_max_mct_records) {
                         opj_mct_data_t *new_mct_records;
-                        l_tcp->m_nb_max_mct_records += J2K_MCT_DEFAULT_NB_RECORDS;
+                        l_tcp->m_nb_max_mct_records += OPJ_J2K_MCT_DEFAULT_NB_RECORDS;
 
                         new_mct_records = (opj_mct_data_t *) opj_realloc(l_tcp->m_mct_records, l_tcp->m_nb_max_mct_records * sizeof(opj_mct_data_t));
                         if (! new_mct_records) {
@@ -5030,7 +5030,7 @@ static opj_bool opj_j2k_read_mct (      opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_mcc_record(      opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_mcc_record(      opj_j2k_t *p_j2k,
                                                                 struct opj_simple_mcc_decorrelation_data * p_mcc_record,
                                                                 struct opj_stream_private *p_stream,
                                                                 struct opj_event_mgr * p_manager )
@@ -5133,7 +5133,7 @@ opj_bool opj_j2k_write_mcc_record(      opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_read_mcc (     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_read_mcc (     opj_j2k_t *p_j2k,
                                                 OPJ_BYTE * p_header_data,
                                                 OPJ_UINT32 p_header_size,
                                                 opj_event_mgr_t * p_manager )
@@ -5191,7 +5191,7 @@ opj_bool opj_j2k_read_mcc (     opj_j2k_t *p_j2k,
         if (i == l_tcp->m_nb_mcc_records) {
                 if (l_tcp->m_nb_mcc_records == l_tcp->m_nb_max_mcc_records) {
                         opj_simple_mcc_decorrelation_data_t *new_mcc_records;
-                        l_tcp->m_nb_max_mcc_records += J2K_MCC_DEFAULT_NB_RECORDS;
+                        l_tcp->m_nb_max_mcc_records += OPJ_J2K_MCC_DEFAULT_NB_RECORDS;
 
                         new_mcc_records = (opj_simple_mcc_decorrelation_data_t *) opj_realloc(
                                         l_tcp->m_mcc_records, l_tcp->m_nb_max_mcc_records * sizeof(opj_simple_mcc_decorrelation_data_t));
@@ -5348,7 +5348,7 @@ opj_bool opj_j2k_read_mcc (     opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_mco(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_mco(     opj_j2k_t *p_j2k,
                                                 struct opj_stream_private *p_stream,
                                                 struct opj_event_mgr * p_manager
                                   )
@@ -5414,7 +5414,7 @@ opj_bool opj_j2k_write_mco(     opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the MCO marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_mco (      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_mco (      opj_j2k_t *p_j2k,
                                                                     OPJ_BYTE * p_header_data,
                                                                     OPJ_UINT32 p_header_size,
                                                                     opj_event_mgr_t * p_manager
@@ -5478,7 +5478,7 @@ static opj_bool opj_j2k_read_mco (      opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_add_mct(opj_tcp_t * p_tcp, opj_image_t * p_image, OPJ_UINT32 p_index)
+OPJ_BOOL opj_j2k_add_mct(opj_tcp_t * p_tcp, opj_image_t * p_image, OPJ_UINT32 p_index)
 {
         OPJ_UINT32 i;
         opj_simple_mcc_decorrelation_data_t * l_mcc_record;
@@ -5560,7 +5560,7 @@ opj_bool opj_j2k_add_mct(opj_tcp_t * p_tcp, opj_image_t * p_image, OPJ_UINT32 p_
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_cbd( opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_cbd( opj_j2k_t *p_j2k,
                                                 struct opj_stream_private *p_stream,
                                                 struct opj_event_mgr * p_manager )
 {
@@ -5625,7 +5625,7 @@ opj_bool opj_j2k_write_cbd( opj_j2k_t *p_j2k,
  * @param       p_header_size   the size of the data contained in the CBD marker.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_read_cbd (      opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_read_cbd (      opj_j2k_t *p_j2k,
                                                                 OPJ_BYTE * p_header_data,
                                                                 OPJ_UINT32 p_header_size,
                                                                 opj_event_mgr_t * p_manager
@@ -5702,13 +5702,13 @@ opj_j2k_t* opj_j2k_create_compress(void)
         l_j2k->m_is_decoder = 0;
         l_j2k->m_cp.m_is_decoder = 0;
 
-        l_j2k->m_specific_param.m_encoder.m_header_tile_data = (OPJ_BYTE *) opj_malloc(J2K_DEFAULT_HEADER_SIZE);
+        l_j2k->m_specific_param.m_encoder.m_header_tile_data = (OPJ_BYTE *) opj_malloc(OPJ_J2K_DEFAULT_HEADER_SIZE);
         if (! l_j2k->m_specific_param.m_encoder.m_header_tile_data) {
                 opj_j2k_destroy(l_j2k);
                 return NULL;
         }
 
-        l_j2k->m_specific_param.m_encoder.m_header_tile_data_size = J2K_DEFAULT_HEADER_SIZE;
+        l_j2k->m_specific_param.m_encoder.m_header_tile_data_size = OPJ_J2K_DEFAULT_HEADER_SIZE;
 
         /* validation list creation*/
         l_j2k->m_validation_list = opj_procedure_list_create();
@@ -5997,9 +5997,14 @@ void opj_j2k_setup_encoder(     opj_j2k_t *p_j2k,
                                                         }
 
                                                 } else {
-                                                        int res_spec = parameters->res_spec;
-                                                        int size_prcw = parameters->prcw_init[res_spec - 1] >> (p - (res_spec - 1));
-                                                        int size_prch = parameters->prch_init[res_spec - 1] >> (p - (res_spec - 1));
+                                                        OPJ_INT32 res_spec = parameters->res_spec;
+                                                        OPJ_INT32 size_prcw = 0;
+                                                        OPJ_INT32 size_prch = 0;
+
+                                                        assert(res_spec>0); /* issue 189 */
+                                                        size_prcw = parameters->prcw_init[res_spec - 1] >> (p - (res_spec - 1));
+                                                        size_prch = parameters->prch_init[res_spec - 1] >> (p - (res_spec - 1));
+
 
                                                         if (size_prcw < 1) {
                                                                 tccp->prcw[it_res] = 1;
@@ -6034,14 +6039,14 @@ void opj_j2k_setup_encoder(     opj_j2k_t *p_j2k,
         }
 }
 
-static opj_bool opj_j2k_add_mhmarker(opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len)
+static OPJ_BOOL opj_j2k_add_mhmarker(opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len)
 {
         assert(cstr_index != 00);
 
         /* expand the list? */
         if ((cstr_index->marknum + 1) > cstr_index->maxmarknum) {
                 opj_marker_info_t *new_marker;
-                cstr_index->maxmarknum = 100 + (int) ((float) cstr_index->maxmarknum * 1.0F);
+                cstr_index->maxmarknum = 100 + (OPJ_INT32) ((OPJ_FLOAT32) cstr_index->maxmarknum * 1.0F);
                 new_marker = (opj_marker_info_t *) opj_realloc(cstr_index->marker, cstr_index->maxmarknum *sizeof(opj_marker_info_t));
                 if (! new_marker) {
                         opj_free(cstr_index->marker);
@@ -6062,7 +6067,7 @@ static opj_bool opj_j2k_add_mhmarker(opj_codestream_index_t *cstr_index, OPJ_UIN
         return OPJ_TRUE;
 }
 
-static opj_bool opj_j2k_add_tlmarker(OPJ_UINT32 tileno, opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len)
+static OPJ_BOOL opj_j2k_add_tlmarker(OPJ_UINT32 tileno, opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len)
 {
         assert(cstr_index != 00);
         assert(cstr_index->tile_index != 00);
@@ -6070,7 +6075,7 @@ static opj_bool opj_j2k_add_tlmarker(OPJ_UINT32 tileno, opj_codestream_index_t *
         /* expand the list? */
         if ((cstr_index->tile_index[tileno].marknum + 1) > cstr_index->tile_index[tileno].maxmarknum) {
                 opj_marker_info_t *new_marker;
-                cstr_index->tile_index[tileno].maxmarknum = 100 + (int) ((float) cstr_index->tile_index[tileno].maxmarknum * 1.0F);
+                cstr_index->tile_index[tileno].maxmarknum = 100 + (OPJ_INT32) ((OPJ_FLOAT32) cstr_index->tile_index[tileno].maxmarknum * 1.0F);
                 new_marker = (opj_marker_info_t *) opj_realloc(
                                 cstr_index->tile_index[tileno].marker,
                                 cstr_index->tile_index[tileno].maxmarknum *sizeof(opj_marker_info_t));
@@ -6107,7 +6112,7 @@ static opj_bool opj_j2k_add_tlmarker(OPJ_UINT32 tileno, opj_codestream_index_t *
  * -----------------------------------------------------------------------
  */
 
-opj_bool opj_j2k_end_decompress(opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_end_decompress(opj_j2k_t *p_j2k,
                                 opj_stream_private_t *p_stream,
                                 opj_event_mgr_t * p_manager
                                 )
@@ -6118,7 +6123,7 @@ opj_bool opj_j2k_end_decompress(opj_j2k_t *p_j2k,
     return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_read_header(   opj_stream_private_t *p_stream,
+OPJ_BOOL opj_j2k_read_header(   opj_stream_private_t *p_stream,
                                                             opj_j2k_t* p_j2k,
                                                             opj_image_t** p_image,
                                                             opj_event_mgr_t* p_manager )
@@ -6193,11 +6198,11 @@ void opj_j2k_setup_decoding_validation (opj_j2k_t *p_j2k)
 
 }
 
-opj_bool opj_j2k_mct_validation (       opj_j2k_t * p_j2k,
+OPJ_BOOL opj_j2k_mct_validation (       opj_j2k_t * p_j2k,
                                                                 opj_stream_private_t *p_stream,
                                                                 opj_event_mgr_t * p_manager )
 {
-        opj_bool l_is_valid = OPJ_TRUE;
+        OPJ_BOOL l_is_valid = OPJ_TRUE;
         OPJ_UINT32 i,j;
 
         /* preconditions */
@@ -6226,7 +6231,7 @@ opj_bool opj_j2k_mct_validation (       opj_j2k_t * p_j2k,
         return l_is_valid;
 }
 
-opj_bool opj_j2k_setup_mct_encoding(opj_tcp_t * p_tcp, opj_image_t * p_image)
+OPJ_BOOL opj_j2k_setup_mct_encoding(opj_tcp_t * p_tcp, opj_image_t * p_image)
 {
         OPJ_UINT32 i;
         OPJ_UINT32 l_indix = 1;
@@ -6246,7 +6251,7 @@ opj_bool opj_j2k_setup_mct_encoding(opj_tcp_t * p_tcp, opj_image_t * p_image)
         if (p_tcp->m_mct_decoding_matrix) {
                 if (p_tcp->m_nb_mct_records == p_tcp->m_nb_max_mct_records) {
                         opj_mct_data_t *new_mct_records;
-                        p_tcp->m_nb_max_mct_records += J2K_MCT_DEFAULT_NB_RECORDS;
+                        p_tcp->m_nb_max_mct_records += OPJ_J2K_MCT_DEFAULT_NB_RECORDS;
 
                         new_mct_records = (opj_mct_data_t *) opj_realloc(p_tcp->m_mct_records, p_tcp->m_nb_max_mct_records * sizeof(opj_mct_data_t));
                         if (! new_mct_records) {
@@ -6288,7 +6293,7 @@ opj_bool opj_j2k_setup_mct_encoding(opj_tcp_t * p_tcp, opj_image_t * p_image)
 
         if (p_tcp->m_nb_mct_records == p_tcp->m_nb_max_mct_records) {
                 opj_mct_data_t *new_mct_records;
-                p_tcp->m_nb_max_mct_records += J2K_MCT_DEFAULT_NB_RECORDS;
+                p_tcp->m_nb_max_mct_records += OPJ_J2K_MCT_DEFAULT_NB_RECORDS;
                 new_mct_records = (opj_mct_data_t *) opj_realloc(p_tcp->m_mct_records, p_tcp->m_nb_max_mct_records * sizeof(opj_mct_data_t));
                 if (! new_mct_records) {
                         opj_free(p_tcp->m_mct_records);
@@ -6351,7 +6356,7 @@ opj_bool opj_j2k_setup_mct_encoding(opj_tcp_t * p_tcp, opj_image_t * p_image)
 
         if (p_tcp->m_nb_mcc_records == p_tcp->m_nb_max_mcc_records) {
                 opj_simple_mcc_decorrelation_data_t *new_mcc_records;
-                p_tcp->m_nb_max_mcc_records += J2K_MCT_DEFAULT_NB_RECORDS;
+                p_tcp->m_nb_max_mcc_records += OPJ_J2K_MCT_DEFAULT_NB_RECORDS;
                 new_mcc_records = (opj_simple_mcc_decorrelation_data_t *) opj_realloc(
                                 p_tcp->m_mcc_records, p_tcp->m_nb_max_mcc_records * sizeof(opj_simple_mcc_decorrelation_data_t));
                 if (! new_mcc_records) {
@@ -6379,7 +6384,7 @@ opj_bool opj_j2k_setup_mct_encoding(opj_tcp_t * p_tcp, opj_image_t * p_image)
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_build_decoder (opj_j2k_t * p_j2k,
+OPJ_BOOL opj_j2k_build_decoder (opj_j2k_t * p_j2k,
                                                             opj_stream_private_t *p_stream,
                                                             opj_event_mgr_t * p_manager )
 {
@@ -6391,7 +6396,7 @@ opj_bool opj_j2k_build_decoder (opj_j2k_t * p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_build_encoder (opj_j2k_t * p_j2k,
+OPJ_BOOL opj_j2k_build_encoder (opj_j2k_t * p_j2k,
                                                         opj_stream_private_t *p_stream,
                                                         opj_event_mgr_t * p_manager )
 {
@@ -6403,11 +6408,11 @@ opj_bool opj_j2k_build_encoder (opj_j2k_t * p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_encoding_validation (  opj_j2k_t * p_j2k,
+OPJ_BOOL opj_j2k_encoding_validation (  opj_j2k_t * p_j2k,
                                                                             opj_stream_private_t *p_stream,
                                                                             opj_event_mgr_t * p_manager )
 {
-        opj_bool l_is_valid = OPJ_TRUE;
+        OPJ_BOOL l_is_valid = OPJ_TRUE;
 
         /* preconditions */
         assert(p_j2k != 00);
@@ -6438,12 +6443,12 @@ opj_bool opj_j2k_encoding_validation (  opj_j2k_t * p_j2k,
         return l_is_valid;
 }
 
-opj_bool opj_j2k_decoding_validation (  opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_decoding_validation (  opj_j2k_t *p_j2k,
                                         opj_stream_private_t *p_stream,
                                         opj_event_mgr_t * p_manager
                                         )
 {
-        opj_bool l_is_valid = OPJ_TRUE;
+        OPJ_BOOL l_is_valid = OPJ_TRUE;
 
         /* preconditions*/
         assert(p_j2k != 00);
@@ -6468,7 +6473,7 @@ opj_bool opj_j2k_decoding_validation (  opj_j2k_t *p_j2k,
         return l_is_valid;
 }
 
-opj_bool opj_j2k_read_header_procedure( opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_read_header_procedure( opj_j2k_t *p_j2k,
                                                                             opj_stream_private_t *p_stream,
                                                                             opj_event_mgr_t * p_manager)
 {
@@ -6597,13 +6602,13 @@ opj_bool opj_j2k_read_header_procedure( opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_exec ( opj_j2k_t * p_j2k,
+OPJ_BOOL opj_j2k_exec ( opj_j2k_t * p_j2k,
                                         opj_procedure_list_t * p_procedure_list,
                                         opj_stream_private_t *p_stream,
                                         opj_event_mgr_t * p_manager )
 {
-        opj_bool (** l_procedure) (opj_j2k_t * ,opj_stream_private_t *,opj_event_mgr_t *) = 00;
-        opj_bool l_result = OPJ_TRUE;
+        OPJ_BOOL (** l_procedure) (opj_j2k_t * ,opj_stream_private_t *,opj_event_mgr_t *) = 00;
+        OPJ_BOOL l_result = OPJ_TRUE;
         OPJ_UINT32 l_nb_proc, i;
 
         /* preconditions*/
@@ -6613,7 +6618,7 @@ opj_bool opj_j2k_exec ( opj_j2k_t * p_j2k,
         assert(p_manager != 00);
 
         l_nb_proc = opj_procedure_list_get_nb_procedures(p_procedure_list);
-        l_procedure = (opj_bool (**) (opj_j2k_t * ,opj_stream_private_t *,opj_event_mgr_t *)) opj_procedure_list_get_first_procedure(p_procedure_list);
+        l_procedure = (OPJ_BOOL (**) (opj_j2k_t * ,opj_stream_private_t *,opj_event_mgr_t *)) opj_procedure_list_get_first_procedure(p_procedure_list);
 
         for     (i=0;i<l_nb_proc;++i) {
                 l_result = l_result && ((*l_procedure) (p_j2k,p_stream,p_manager));
@@ -6626,7 +6631,7 @@ opj_bool opj_j2k_exec ( opj_j2k_t * p_j2k,
 }
 
 /* FIXME DOC*/
-static opj_bool opj_j2k_copy_default_tcp_and_create_tcd (       opj_j2k_t * p_j2k,
+static OPJ_BOOL opj_j2k_copy_default_tcp_and_create_tcd (       opj_j2k_t * p_j2k,
                                                             opj_stream_private_t *p_stream,
                                                             opj_event_mgr_t * p_manager
                                                             )
@@ -6971,13 +6976,13 @@ void opj_j2k_cp_destroy (opj_cp_t *p_cp)
         }
 }
 
-opj_bool opj_j2k_read_tile_header(      opj_j2k_t * p_j2k,
+OPJ_BOOL opj_j2k_read_tile_header(      opj_j2k_t * p_j2k,
                                                                     OPJ_UINT32 * p_tile_index,
                                                                     OPJ_UINT32 * p_data_size,
                                                                     OPJ_INT32 * p_tile_x0, OPJ_INT32 * p_tile_y0,
                                                                     OPJ_INT32 * p_tile_x1, OPJ_INT32 * p_tile_y1,
                                                                     OPJ_UINT32 * p_nb_comps,
-                                                                    opj_bool * p_go_on,
+                                                                    OPJ_BOOL * p_go_on,
                                                                     opj_stream_private_t *p_stream,
                                                                     opj_event_mgr_t * p_manager )
 {
@@ -7183,7 +7188,7 @@ opj_bool opj_j2k_read_tile_header(      opj_j2k_t * p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_decode_tile (  opj_j2k_t * p_j2k,
+OPJ_BOOL opj_j2k_decode_tile (  opj_j2k_t * p_j2k,
                                                         OPJ_UINT32 p_tile_index,
                                                         OPJ_BYTE * p_data,
                                                         OPJ_UINT32 p_data_size,
@@ -7255,7 +7260,7 @@ opj_bool opj_j2k_decode_tile (  opj_j2k_t * p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_update_image_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data, opj_image_t* p_output_image)
+OPJ_BOOL opj_j2k_update_image_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data, opj_image_t* p_output_image)
 {
         OPJ_UINT32 i,j,k = 0;
         OPJ_UINT32 l_width_src,l_height_src;
@@ -7513,7 +7518,7 @@ opj_bool opj_j2k_update_image_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data, opj_im
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_set_decode_area(       opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_set_decode_area(       opj_j2k_t *p_j2k,
                                                                     opj_image_t* p_image,
                                                                     OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
                                                                     OPJ_INT32 p_end_x, OPJ_INT32 p_end_y,
@@ -7687,13 +7692,13 @@ opj_j2k_t* opj_j2k_create_decompress(void)
         }
         memset(l_j2k->m_specific_param.m_decoder.m_default_tcp,0,sizeof(opj_tcp_t));
 
-        l_j2k->m_specific_param.m_decoder.m_header_data = (OPJ_BYTE *) opj_malloc(J2K_DEFAULT_HEADER_SIZE);
+        l_j2k->m_specific_param.m_decoder.m_header_data = (OPJ_BYTE *) opj_malloc(OPJ_J2K_DEFAULT_HEADER_SIZE);
         if (! l_j2k->m_specific_param.m_decoder.m_header_data) {
                 opj_j2k_destroy(l_j2k);
                 return 00;
         }
 
-        l_j2k->m_specific_param.m_decoder.m_header_data_size = J2K_DEFAULT_HEADER_SIZE;
+        l_j2k->m_specific_param.m_decoder.m_header_data_size = OPJ_J2K_DEFAULT_HEADER_SIZE;
 
         l_j2k->m_specific_param.m_decoder.m_tile_ind_to_dec = -1 ;
 
@@ -7774,7 +7779,7 @@ OPJ_UINT32 opj_j2k_get_SPCod_SPCoc_size (       opj_j2k_t *p_j2k,
         }
 }
 
-opj_bool opj_j2k_write_SPCod_SPCoc(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_SPCod_SPCoc(     opj_j2k_t *p_j2k,
                                                                     OPJ_UINT32 p_tile_no,
                                                                     OPJ_UINT32 p_comp_no,
                                                                     OPJ_BYTE * p_data,
@@ -7840,7 +7845,7 @@ opj_bool opj_j2k_write_SPCod_SPCoc(     opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_read_SPCod_SPCoc(  opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_read_SPCod_SPCoc(  opj_j2k_t *p_j2k,
                                                                 OPJ_UINT32 compno,
                                                                 OPJ_BYTE * p_header_data,
                                                                 OPJ_UINT32 * p_header_size,
@@ -7876,6 +7881,12 @@ opj_bool opj_j2k_read_SPCod_SPCoc(  opj_j2k_t *p_j2k,
 
         opj_read_bytes(l_current_ptr, &l_tccp->numresolutions ,1);              /* SPcox (D) */
         ++l_tccp->numresolutions;                                                                               /* tccp->numresolutions = read() + 1 */
+        if (l_tccp->numresolutions > OPJ_J2K_MAXRLVLS) {
+                opj_event_msg(p_manager, EVT_ERROR,
+                              "Invalid value for numresolutions : %d, max value is set in openjpeg.h at %d\n",
+                              l_tccp->numresolutions, OPJ_J2K_MAXRLVLS);
+                return OPJ_FALSE;
+        }
         ++l_current_ptr;
 
         /* If user wants to remove more resolutions than the codestream contains, return error */
@@ -8010,7 +8021,7 @@ OPJ_UINT32 opj_j2k_get_SQcd_SQcc_size ( opj_j2k_t *p_j2k,
         }
 }
 
-opj_bool opj_j2k_write_SQcd_SQcc(       opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_SQcd_SQcc(       opj_j2k_t *p_j2k,
                                                                 OPJ_UINT32 p_tile_no,
                                                                 OPJ_UINT32 p_comp_no,
                                                                 OPJ_BYTE * p_data,
@@ -8083,7 +8094,7 @@ opj_bool opj_j2k_write_SQcd_SQcc(       opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_read_SQcd_SQcc(opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_read_SQcd_SQcc(opj_j2k_t *p_j2k,
                                                             OPJ_UINT32 p_comp_no,
                                                             OPJ_BYTE* p_header_data,
                                                             OPJ_UINT32 * p_header_size,
@@ -8134,10 +8145,10 @@ opj_bool opj_j2k_read_SQcd_SQcc(opj_j2k_t *p_j2k,
                         (*p_header_size) :
                         (*p_header_size) / 2;
 
-                if( l_num_band > J2K_MAXBANDS ) {
+                if( l_num_band > OPJ_J2K_MAXBANDS ) {
                         opj_event_msg(p_manager, EVT_WARNING, "While reading CCP_QNTSTY element inside QCD or QCC marker segment, "
-                                "number of subbands (%d) is greater to J2K_MAXBANDS (%d). So we limit the number of elements stored to "
-                                "J2K_MAXBANDS (%d) and skip the rest. \n", l_num_band, J2K_MAXBANDS, J2K_MAXBANDS);
+                                "number of subbands (%d) is greater to OPJ_J2K_MAXBANDS (%d). So we limit the number of elements stored to "
+                                "OPJ_J2K_MAXBANDS (%d) and skip the rest. \n", l_num_band, OPJ_J2K_MAXBANDS, OPJ_J2K_MAXBANDS);
                         /*return OPJ_FALSE;*/
                 }
         }
@@ -8146,7 +8157,7 @@ opj_bool opj_j2k_read_SQcd_SQcc(opj_j2k_t *p_j2k,
         if (l_cp->correct) {
 
                 /* if JPWL is on, we check whether there are too many subbands */
-                if (/*(l_num_band < 0) ||*/ (l_num_band >= J2K_MAXBANDS)) {
+                if (/*(l_num_band < 0) ||*/ (l_num_band >= OPJ_J2K_MAXBANDS)) {
                         opj_event_msg(p_manager, JPWL_ASSUME ? EVT_WARNING : EVT_ERROR,
                                 "JPWL: bad number of subbands in Sqcx (%d)\n",
                                 l_num_band);
@@ -8168,7 +8179,7 @@ opj_bool opj_j2k_read_SQcd_SQcc(opj_j2k_t *p_j2k,
                 for     (l_band_no = 0; l_band_no < l_num_band; l_band_no++) {
                         opj_read_bytes(l_current_ptr, &l_tmp ,1);                       /* SPqcx_i */
                         ++l_current_ptr;
-                        if (l_band_no < J2K_MAXBANDS){
+                        if (l_band_no < OPJ_J2K_MAXBANDS){
                                 l_tccp->stepsizes[l_band_no].expn = l_tmp>>3;
                                 l_tccp->stepsizes[l_band_no].mant = 0;
                         }
@@ -8179,7 +8190,7 @@ opj_bool opj_j2k_read_SQcd_SQcc(opj_j2k_t *p_j2k,
                 for     (l_band_no = 0; l_band_no < l_num_band; l_band_no++) {
                         opj_read_bytes(l_current_ptr, &l_tmp ,2);                       /* SPqcx_i */
                         l_current_ptr+=2;
-                        if (l_band_no < J2K_MAXBANDS){
+                        if (l_band_no < OPJ_J2K_MAXBANDS){
                                 l_tccp->stepsizes[l_band_no].expn = l_tmp >> 11;
                                 l_tccp->stepsizes[l_band_no].mant = l_tmp & 0x7ff;
                         }
@@ -8189,7 +8200,7 @@ opj_bool opj_j2k_read_SQcd_SQcc(opj_j2k_t *p_j2k,
 
         /* Add Antonin : if scalar_derived -> compute other stepsizes */
         if (l_tccp->qntsty == J2K_CCP_QNTSTY_SIQNT) {
-                for (l_band_no = 1; l_band_no < J2K_MAXBANDS; l_band_no++) {
+                for (l_band_no = 1; l_band_no < OPJ_J2K_MAXBANDS; l_band_no++) {
                         l_tccp->stepsizes[l_band_no].expn =
                                 ((l_tccp->stepsizes[0].expn) - ((l_band_no - 1) / 3) > 0) ?
                                         (l_tccp->stepsizes[0].expn) - ((l_band_no - 1) / 3) : 0;
@@ -8219,7 +8230,7 @@ void opj_j2k_copy_tile_quantization_parameters( opj_j2k_t *p_j2k )
 
         l_ref_tccp = &l_tcp->tccps[0];
         l_copied_tccp = l_ref_tccp + 1;
-        l_size = J2K_MAXBANDS * sizeof(opj_stepsize_t);
+        l_size = OPJ_J2K_MAXBANDS * sizeof(opj_stepsize_t);
 
         for     (i=1;i<p_j2k->m_private_image->numcomps;++i) {
                 l_copied_tccp->qntsty = l_ref_tccp->qntsty;
@@ -8399,7 +8410,7 @@ void opj_j2k_dump_MH_info(opj_j2k_t* p_j2k, FILE* out_stream)
 
 }
 
-void j2k_dump_image_header(opj_image_t* img_header, opj_bool dev_dump_flag, FILE* out_stream)
+void j2k_dump_image_header(opj_image_t* img_header, OPJ_BOOL dev_dump_flag, FILE* out_stream)
 {
         char tab[2];
 
@@ -8428,7 +8439,7 @@ void j2k_dump_image_header(opj_image_t* img_header, opj_bool dev_dump_flag, FILE
         fprintf(out_stream, "}\n");
 }
 
-void j2k_dump_image_comp_header(opj_image_comp_t* comp_header, opj_bool dev_dump_flag, FILE* out_stream)
+void j2k_dump_image_comp_header(opj_image_comp_t* comp_header, OPJ_BOOL dev_dump_flag, FILE* out_stream)
 {
         char tab[3];
 
@@ -8453,6 +8464,8 @@ opj_codestream_info_v2_t* j2k_get_cstr_info(opj_j2k_t* p_j2k)
         OPJ_UINT32 numcomps = p_j2k->m_private_image->numcomps;
         opj_tcp_t *l_default_tile;
         opj_codestream_info_v2_t* cstr_info = (opj_codestream_info_v2_t*) opj_calloc(1,sizeof(opj_codestream_info_v2_t));
+               if (!cstr_info)
+                       return NULL;
 
         cstr_info->nbcomps = p_j2k->m_private_image->numcomps;
 
@@ -8473,6 +8486,11 @@ opj_codestream_info_v2_t* j2k_get_cstr_info(opj_j2k_t* p_j2k)
         cstr_info->m_default_tile_info.mct = l_default_tile->mct;
 
         cstr_info->m_default_tile_info.tccp_info = (opj_tccp_info_t*) opj_calloc(cstr_info->nbcomps, sizeof(opj_tccp_info_t));
+               if (!cstr_info->m_default_tile_info.tccp_info)
+               {
+                       opj_destroy_cstr_info(&cstr_info);
+                       return NULL;
+               }
 
         for (compno = 0; compno < numcomps; compno++) {
                 opj_tccp_t *l_tccp = &(l_default_tile->tccps[compno]);
@@ -8486,7 +8504,7 @@ opj_codestream_info_v2_t* j2k_get_cstr_info(opj_j2k_t* p_j2k)
                 l_tccp_info->cblkh = l_tccp->cblkh;
                 l_tccp_info->cblksty = l_tccp->cblksty;
                 l_tccp_info->qmfbid = l_tccp->qmfbid;
-                if (l_tccp->numresolutions < J2K_MAXRLVLS)
+                if (l_tccp->numresolutions < OPJ_J2K_MAXRLVLS)
                 {
                         memcpy(l_tccp_info->prch, l_tccp->prch, l_tccp->numresolutions);
                         memcpy(l_tccp_info->prcw, l_tccp->prcw, l_tccp->numresolutions);
@@ -8497,7 +8515,7 @@ opj_codestream_info_v2_t* j2k_get_cstr_info(opj_j2k_t* p_j2k)
                 l_tccp_info->numgbits = l_tccp->numgbits;
 
                 numbands = (l_tccp->qntsty == J2K_CCP_QNTSTY_SIQNT) ? 1 : l_tccp->numresolutions * 3 - 2;
-                if (numbands < J2K_MAXBANDS) {
+                if (numbands < OPJ_J2K_MAXBANDS) {
                         for (bandno = 0; bandno < numbands; bandno++) {
                                 l_tccp_info->stepsizes_mant[bandno] = l_tccp->stepsizes[bandno].mant;
                                 l_tccp_info->stepsizes_expn[bandno] = l_tccp->stepsizes[bandno].expn;
@@ -8620,7 +8638,7 @@ opj_codestream_index_t* j2k_get_cstr_index(opj_j2k_t* p_j2k)
         return l_cstr_index;
 }
 
-opj_bool opj_j2k_allocate_tile_element_cstr_index(opj_j2k_t *p_j2k)
+OPJ_BOOL opj_j2k_allocate_tile_element_cstr_index(opj_j2k_t *p_j2k)
 {
         OPJ_UINT32 it_tile=0;
 
@@ -8641,11 +8659,11 @@ opj_bool opj_j2k_allocate_tile_element_cstr_index(opj_j2k_t *p_j2k)
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_decode_tiles ( opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_decode_tiles ( opj_j2k_t *p_j2k,
                                                             opj_stream_private_t *p_stream,
                                                             opj_event_mgr_t * p_manager)
 {
-        opj_bool l_go_on = OPJ_TRUE;
+        OPJ_BOOL l_go_on = OPJ_TRUE;
         OPJ_UINT32 l_current_tile_no;
         OPJ_UINT32 l_data_size,l_max_data_size;
         OPJ_INT32 l_tile_x0,l_tile_y0,l_tile_x1,l_tile_y1;
@@ -8723,11 +8741,11 @@ static void opj_j2k_setup_decoding (opj_j2k_t *p_j2k)
 /*
  * Read and decode one tile.
  */
-static opj_bool opj_j2k_decode_one_tile (       opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_decode_one_tile (       opj_j2k_t *p_j2k,
                                                                             opj_stream_private_t *p_stream,
                                                                             opj_event_mgr_t * p_manager)
 {
-        opj_bool l_go_on = OPJ_TRUE;
+        OPJ_BOOL l_go_on = OPJ_TRUE;
         OPJ_UINT32 l_current_tile_no;
         OPJ_UINT32 l_tile_no_to_dec;
         OPJ_UINT32 l_data_size,l_max_data_size;
@@ -8851,7 +8869,7 @@ static void opj_j2k_setup_decoding_tile (opj_j2k_t *p_j2k)
 
 }
 
-opj_bool opj_j2k_decode(opj_j2k_t * p_j2k,
+OPJ_BOOL opj_j2k_decode(opj_j2k_t * p_j2k,
                                                 opj_stream_private_t * p_stream,
                                                 opj_image_t * p_image,
                                                 opj_event_mgr_t * p_manager)
@@ -8887,7 +8905,7 @@ opj_bool opj_j2k_decode(opj_j2k_t * p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_get_tile(      opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_get_tile(      opj_j2k_t *p_j2k,
                                                     opj_stream_private_t *p_stream,
                                                     opj_image_t* p_image,
                                                     opj_event_mgr_t * p_manager,
@@ -8981,7 +8999,7 @@ opj_bool opj_j2k_get_tile(      opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_set_decoded_resolution_factor(opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_set_decoded_resolution_factor(opj_j2k_t *p_j2k,
                                                OPJ_UINT32 res_factor,
                                                opj_event_mgr_t * p_manager)
 {
@@ -9010,9 +9028,9 @@ opj_bool opj_j2k_set_decoded_resolution_factor(opj_j2k_t *p_j2k,
         return OPJ_FALSE;
 }
 
-opj_bool opj_j2k_encode_v2(     opj_j2k_t * p_j2k,
-                                                opj_stream_private_t *p_stream,
-                                                opj_event_mgr_t * p_manager )
+OPJ_BOOL opj_j2k_encode(opj_j2k_t * p_j2k,
+                        opj_stream_private_t *p_stream,
+                        opj_event_mgr_t * p_manager )
 {
         OPJ_UINT32 i;
         OPJ_UINT32 l_nb_tiles;
@@ -9061,7 +9079,7 @@ opj_bool opj_j2k_encode_v2(     opj_j2k_t * p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_end_compress(  opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_end_compress(  opj_j2k_t *p_j2k,
                                                         opj_stream_private_t *p_stream,
                                                         opj_event_mgr_t * p_manager)
 {
@@ -9076,7 +9094,7 @@ opj_bool opj_j2k_end_compress(  opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_start_compress(opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_start_compress(opj_j2k_t *p_j2k,
                                                             opj_stream_private_t *p_stream,
                                                             opj_image_t * p_image,
                                                             opj_event_mgr_t * p_manager)
@@ -9120,7 +9138,7 @@ opj_bool opj_j2k_start_compress(opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_pre_write_tile (       opj_j2k_t * p_j2k,
+OPJ_BOOL opj_j2k_pre_write_tile (       opj_j2k_t * p_j2k,
                                                                 OPJ_UINT32 p_tile_index,
                                                                 opj_stream_private_t *p_stream,
                                                                 opj_event_mgr_t * p_manager )
@@ -9248,7 +9266,7 @@ void opj_j2k_get_tile_data (opj_tcd_t * p_tcd, OPJ_BYTE * p_data)
         }
 }
 
-opj_bool opj_j2k_post_write_tile (      opj_j2k_t * p_j2k,
+OPJ_BOOL opj_j2k_post_write_tile (      opj_j2k_t * p_j2k,
                                                                 OPJ_BYTE * p_data,
                                                                 OPJ_UINT32 p_data_size,
                                                                 opj_stream_private_t *p_stream,
@@ -9344,7 +9362,7 @@ void opj_j2k_setup_header_writing (opj_j2k_t *p_j2k)
                 opj_procedure_list_add_procedure(p_j2k->m_procedure_list,(opj_procedure)opj_j2k_write_image_components );
                 opj_procedure_list_add_procedure(p_j2k->m_procedure_list,(opj_procedure)opj_j2k_write_tlm );
 
-                if (p_j2k->m_cp.m_specific_param.m_enc.m_cinema == CINEMA4K_24) {
+                if (p_j2k->m_cp.m_specific_param.m_enc.m_cinema == OPJ_CINEMA4K_24) {
                         opj_procedure_list_add_procedure(p_j2k->m_procedure_list,(opj_procedure)opj_j2k_write_poc );
                 }
         }
@@ -9356,7 +9374,7 @@ void opj_j2k_setup_header_writing (opj_j2k_t *p_j2k)
         }
 
         /* DEVELOPER CORNER, insert your custom procedures */
-        if (p_j2k->m_cp.rsiz & MCT) {
+        if (p_j2k->m_cp.rsiz & OPJ_MCT) {
                 opj_procedure_list_add_procedure(p_j2k->m_procedure_list,(opj_procedure)opj_j2k_write_mct_data_group );
         }
         /* End of Developer Corner */
@@ -9369,7 +9387,7 @@ void opj_j2k_setup_header_writing (opj_j2k_t *p_j2k)
         opj_procedure_list_add_procedure(p_j2k->m_procedure_list,(opj_procedure)opj_j2k_update_rates);
 }
 
-opj_bool opj_j2k_write_first_tile_part (opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_first_tile_part (opj_j2k_t *p_j2k,
                                                                         OPJ_BYTE * p_data,
                                                                         OPJ_UINT32 * p_data_written,
                                                                         OPJ_UINT32 p_total_data_size,
@@ -9448,7 +9466,7 @@ opj_bool opj_j2k_write_first_tile_part (opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_all_tile_parts(  opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_all_tile_parts(  opj_j2k_t *p_j2k,
                                                                         OPJ_BYTE * p_data,
                                                                         OPJ_UINT32 * p_data_written,
                                                                         OPJ_UINT32 p_total_data_size,
@@ -9557,7 +9575,7 @@ opj_bool opj_j2k_write_all_tile_parts(  opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_updated_tlm( opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_write_updated_tlm( opj_j2k_t *p_j2k,
                                                                     struct opj_stream_private *p_stream,
                                                                     struct opj_event_mgr * p_manager )
 {
@@ -9588,7 +9606,7 @@ opj_bool opj_j2k_write_updated_tlm( opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_end_encoding(  opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_end_encoding(  opj_j2k_t *p_j2k,
                                                         struct opj_stream_private *p_stream,
                                                         struct opj_event_mgr * p_manager )
 {
@@ -9619,7 +9637,7 @@ opj_bool opj_j2k_end_encoding(  opj_j2k_t *p_j2k,
 /**
  * Destroys the memory associated with the decoding of headers.
  */
-static opj_bool opj_j2k_destroy_header_memory ( opj_j2k_t * p_j2k,
+static OPJ_BOOL opj_j2k_destroy_header_memory ( opj_j2k_t * p_j2k,
                                                 opj_stream_private_t *p_stream,
                                                 opj_event_mgr_t * p_manager
                                                 )
@@ -9639,7 +9657,7 @@ static opj_bool opj_j2k_destroy_header_memory ( opj_j2k_t * p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_init_info(     opj_j2k_t *p_j2k,
+OPJ_BOOL opj_j2k_init_info(     opj_j2k_t *p_j2k,
                                                 struct opj_stream_private *p_stream,
                                                 struct opj_event_mgr * p_manager )
 {
@@ -9700,7 +9718,7 @@ opj_bool opj_j2k_init_info(     opj_j2k_t *p_j2k,
  * @param       p_j2k                   J2K codec.
  * @param       p_manager               the user event manager.
 */
-static opj_bool opj_j2k_create_tcd(     opj_j2k_t *p_j2k,
+static OPJ_BOOL opj_j2k_create_tcd(     opj_j2k_t *p_j2k,
                                                                     opj_stream_private_t *p_stream,
                                                                     opj_event_mgr_t * p_manager
                                     )
@@ -9726,7 +9744,7 @@ static opj_bool opj_j2k_create_tcd(     opj_j2k_t *p_j2k,
         return OPJ_TRUE;
 }
 
-opj_bool opj_j2k_write_tile (opj_j2k_t * p_j2k,
+OPJ_BOOL opj_j2k_write_tile (opj_j2k_t * p_j2k,
                                                  OPJ_UINT32 p_tile_index,
                                                  OPJ_BYTE * p_data,
                                                  OPJ_UINT32 p_data_size,