* @param p_image_header_size the size of the image header
* @param p_manager the user event manager.
*
- * @return true if the image header is valid, fale else.
+ * @return true if the image header is valid, false else.
*/
-static opj_bool jp2_read_ihdr_v2(
- opj_jp2_v2_t *jp2,
- unsigned char * p_image_header_data,
- unsigned int p_image_header_size,
- struct opj_event_mgr * p_manager
- );
+static opj_bool jp2_read_ihdr_v2( opj_jp2_v2_t *jp2,
+ OPJ_BYTE *p_image_header_data,
+ OPJ_INT32 p_image_header_size,
+ opj_event_mgr_t * p_manager );
static void jp2_write_ihdr(opj_jp2_t *jp2, opj_cio_t *cio);
*
* @return true if the image header is valid, fale else.
*/
-opj_bool jp2_read_ihdr_v2(
- opj_jp2_v2_t *jp2,
- unsigned char * p_image_header_data,
- unsigned int p_image_header_size,
- opj_event_mgr_t * p_manager
+opj_bool jp2_read_ihdr_v2( opj_jp2_v2_t *jp2,
+ OPJ_BYTE *p_image_header_data,
+ OPJ_INT32 p_image_header_size,
+ opj_event_mgr_t * p_manager
)
{
/* preconditions */
p_image_header_data += 4;
opj_read_bytes(p_image_header_data,&(jp2->w),4); /* WIDTH */
p_image_header_data += 4;
- opj_read_bytes(p_image_header_data,&(jp2->numcomps),2); /* NC */
+ opj_read_bytes(p_image_header_data,&(jp2->numcomps),2); /* NC */
p_image_header_data += 2;
/* allocate memory for components */
for(i = 0; i < nr_channels; ++i)
{
/* Cji */
- *entries++ = cio_read(cio, channel_size[i]>>3);
+ *entries++ = cio_read(cio, (channel_size[i]+7)>>3);
}
}
for(j = 0; j < nr_entries; ++j) {
for(i = 0; i < nr_channels; ++i) {
- /**entries++ = cio_read(cio, channel_size[i]>>3); */
- opj_read_bytes(p_pclr_header_data, &l_value , channel_size[i]>>3); /* Cji */
- p_pclr_header_data += channel_size[i]>>3;
+ int bytes_to_read = (channel_size[i]+7)>>3;
+
+ opj_read_bytes(p_pclr_header_data, &l_value , bytes_to_read); /* Cji */
+ p_pclr_header_data += bytes_to_read;
*entries = (OPJ_UINT32) l_value;
entries++;
}