X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libopenjpeg%2Fjp2.c;h=524bfa6a1ea638a75dfbfc0cc8cb254f9bb24d67;hb=9ed88f6a8de45fdb2fba0b6544dce25f949b36ed;hp=c4cc9fe95c9804a053d8ffa7aa04a52ff55b24bf;hpb=0fb657651126804f8f5dc891cc4e8772121a7945;p=openjpeg.git diff --git a/libopenjpeg/jp2.c b/libopenjpeg/jp2.c index c4cc9fe9..524bfa6a 100644 --- a/libopenjpeg/jp2.c +++ b/libopenjpeg/jp2.c @@ -64,14 +64,12 @@ static opj_bool jp2_read_ihdr(opj_jp2_t *jp2, opj_cio_t *cio); * @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); @@ -656,11 +654,10 @@ static opj_bool jp2_read_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 */ @@ -677,7 +674,7 @@ opj_bool jp2_read_ihdr_v2( 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 */ @@ -1160,7 +1157,7 @@ static opj_bool jp2_read_pclr(opj_jp2_t *jp2, opj_cio_t *cio, 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); } } @@ -1230,9 +1227,10 @@ opj_bool jp2_read_pclr_v2( opj_jp2_v2_t *jp2, 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++; }