| Index: core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
|
| diff --git a/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp b/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
|
| index 3b0490f3c6f0fe7e052f368e1b39e6344c424399..3546f574f96c2de0b9c66cfd3bdb08db00dd80f9 100644
|
| --- a/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
|
| +++ b/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
|
| @@ -351,25 +351,24 @@ void color_sycc_to_rgb(opj_image_t *img)
|
| }
|
| void color_apply_icc_profile(opj_image_t *image)
|
| {
|
| - cmsHPROFILE in_prof, out_prof;
|
| - cmsHTRANSFORM transform;
|
| - cmsColorSpaceSignature in_space, out_space;
|
| - cmsUInt32Number intent, in_type, out_type, nr_samples;
|
| - int *r, *g, *b;
|
| - int prec, i, max, max_w, max_h;
|
| - OPJ_COLOR_SPACE oldspace;
|
| - in_prof =
|
| + cmsHPROFILE out_prof;
|
| + cmsUInt32Number in_type;
|
| + cmsUInt32Number out_type;
|
| + int *r;
|
| + int *g;
|
| + int *b;
|
| + int max;
|
| + cmsHPROFILE in_prof =
|
| cmsOpenProfileFromMem(image->icc_profile_buf, image->icc_profile_len);
|
| if(in_prof == NULL) {
|
| return;
|
| }
|
| - in_space = cmsGetPCS(in_prof);
|
| - out_space = cmsGetColorSpace(in_prof);
|
| - intent = cmsGetHeaderRenderingIntent(in_prof);
|
| - max_w = (int)image->comps[0].w;
|
| - max_h = (int)image->comps[0].h;
|
| - prec = (int)image->comps[0].prec;
|
| - oldspace = image->color_space;
|
| + cmsColorSpaceSignature out_space = cmsGetColorSpace(in_prof);
|
| + cmsUInt32Number intent = cmsGetHeaderRenderingIntent(in_prof);
|
| + int max_w = (int)image->comps[0].w;
|
| + int max_h = (int)image->comps[0].h;
|
| + int prec = (int)image->comps[0].prec;
|
| + OPJ_COLOR_SPACE oldspace = image->color_space;
|
| if(out_space == cmsSigRgbData) {
|
| if( prec <= 8 ) {
|
| in_type = TYPE_RGB_8;
|
| @@ -398,8 +397,8 @@ void color_apply_icc_profile(opj_image_t *image)
|
| } else {
|
| return;
|
| }
|
| - transform = cmsCreateTransform(in_prof, in_type,
|
| - out_prof, out_type, intent, 0);
|
| + cmsHTRANSFORM transform =
|
| + cmsCreateTransform(in_prof, in_type, out_prof, out_type, intent, 0);
|
| cmsCloseProfile(in_prof);
|
| cmsCloseProfile(out_prof);
|
| if(transform == NULL) {
|
| @@ -410,13 +409,13 @@ void color_apply_icc_profile(opj_image_t *image)
|
| if( prec <= 8 ) {
|
| unsigned char *inbuf, *outbuf, *in, *out;
|
| max = max_w * max_h;
|
| - nr_samples = (cmsUInt32Number)max * 3 * (cmsUInt32Number)sizeof(unsigned char);
|
| + cmsUInt32Number nr_samples = max * 3 * sizeof(unsigned char);
|
| in = inbuf = FX_Alloc(unsigned char, nr_samples);
|
| out = outbuf = FX_Alloc(unsigned char, nr_samples);
|
| r = image->comps[0].data;
|
| g = image->comps[1].data;
|
| b = image->comps[2].data;
|
| - for(i = 0; i < max; ++i) {
|
| + for(int i = 0; i < max; ++i) {
|
| *in++ = (unsigned char) * r++;
|
| *in++ = (unsigned char) * g++;
|
| *in++ = (unsigned char) * b++;
|
| @@ -425,7 +424,7 @@ void color_apply_icc_profile(opj_image_t *image)
|
| r = image->comps[0].data;
|
| g = image->comps[1].data;
|
| b = image->comps[2].data;
|
| - for(i = 0; i < max; ++i) {
|
| + for(int i = 0; i < max; ++i) {
|
| *r++ = (int) * out++;
|
| *g++ = (int) * out++;
|
| *b++ = (int) * out++;
|
| @@ -435,13 +434,13 @@ void color_apply_icc_profile(opj_image_t *image)
|
| } else {
|
| unsigned short *inbuf, *outbuf, *in, *out;
|
| max = max_w * max_h;
|
| - nr_samples = (cmsUInt32Number)max * 3 * (cmsUInt32Number)sizeof(unsigned short);
|
| + cmsUInt32Number nr_samples = max * 3 * sizeof(unsigned short);
|
| in = inbuf = FX_Alloc(unsigned short, nr_samples);
|
| out = outbuf = FX_Alloc(unsigned short, nr_samples);
|
| r = image->comps[0].data;
|
| g = image->comps[1].data;
|
| b = image->comps[2].data;
|
| - for(i = 0; i < max; ++i) {
|
| + for(int i = 0; i < max; ++i) {
|
| *in++ = (unsigned short) * r++;
|
| *in++ = (unsigned short) * g++;
|
| *in++ = (unsigned short) * b++;
|
| @@ -450,7 +449,7 @@ void color_apply_icc_profile(opj_image_t *image)
|
| r = image->comps[0].data;
|
| g = image->comps[1].data;
|
| b = image->comps[2].data;
|
| - for(i = 0; i < max; ++i) {
|
| + for(int i = 0; i < max; ++i) {
|
| *r++ = (int) * out++;
|
| *g++ = (int) * out++;
|
| *b++ = (int) * out++;
|
| @@ -461,7 +460,8 @@ void color_apply_icc_profile(opj_image_t *image)
|
| } else {
|
| unsigned char *in, *inbuf, *out, *outbuf;
|
| max = max_w * max_h;
|
| - nr_samples = (cmsUInt32Number)max * 3 * sizeof(unsigned char);
|
| + cmsUInt32Number nr_samples =
|
| + (cmsUInt32Number)max * 3 * sizeof(unsigned char);
|
| in = inbuf = FX_Alloc(unsigned char, nr_samples);
|
| out = outbuf = FX_Alloc(unsigned char, nr_samples);
|
| image->comps = (opj_image_comp_t*)
|
| @@ -477,14 +477,14 @@ void color_apply_icc_profile(opj_image_t *image)
|
| FXSYS_memset8(image->comps[2].data, 0, sizeof(int) * (size_t)max);
|
| image->numcomps += 2;
|
| r = image->comps[0].data;
|
| - for(i = 0; i < max; ++i) {
|
| + for(int i = 0; i < max; ++i) {
|
| *in++ = (unsigned char) * r++;
|
| }
|
| cmsDoTransform(transform, inbuf, outbuf, (cmsUInt32Number)max);
|
| r = image->comps[0].data;
|
| g = image->comps[1].data;
|
| b = image->comps[2].data;
|
| - for(i = 0; i < max; ++i) {
|
| + for(int i = 0; i < max; ++i) {
|
| *r++ = (int) * out++;
|
| *g++ = (int) * out++;
|
| *b++ = (int) * out++;
|
| @@ -508,14 +508,12 @@ void color_apply_conversion(opj_image_t *image)
|
| int *L, *a, *b, *red, *green, *blue, *src0, *src1, *src2;
|
| double rl, ol, ra, oa, rb, ob, prec0, prec1, prec2;
|
| double minL, maxL, mina, maxa, minb, maxb;
|
| - unsigned int default_type, il;
|
| - unsigned int i, max, illu;
|
| + unsigned int default_type;
|
| + unsigned int i, max;
|
| cmsHPROFILE in, out;
|
| cmsHTRANSFORM transform;
|
| cmsUInt16Number RGB[3];
|
| cmsCIELab Lab;
|
| - illu = 0;
|
| - il = 0;
|
| in = cmsCreateLab4Profile(NULL);
|
| out = cmsCreate_sRGBProfile();
|
| transform =
|
| @@ -706,10 +704,7 @@ void CJPX_Decoder::GetInfo(FX_DWORD& width, FX_DWORD& height, FX_DWORD& codestre
|
| }
|
| FX_BOOL CJPX_Decoder::Decode(FX_LPBYTE dest_buf, int pitch, FX_BOOL bTranslateColor, FX_LPBYTE offsets)
|
| {
|
| - FX_BYTE** channel_bufs;
|
| - int* adjust_comps;
|
| int i, wid, hei, row, col, channel, src;
|
| - FX_BOOL flag;
|
| FX_LPBYTE pChannel, pScanline, pPixel;
|
|
|
| if(image->comps[0].w != image->x1 || image->comps[0].h != image->y1) {
|
| @@ -719,16 +714,15 @@ FX_BOOL CJPX_Decoder::Decode(FX_LPBYTE dest_buf, int pitch, FX_BOOL bTranslateCo
|
| return FALSE;
|
| }
|
| FXSYS_memset8(dest_buf, 0xff, image->y1 * pitch);
|
| - channel_bufs = FX_Alloc(FX_BYTE*, image->numcomps);
|
| + FX_BYTE** channel_bufs = FX_Alloc(FX_BYTE*, image->numcomps);
|
| if (channel_bufs == NULL) {
|
| return FALSE;
|
| }
|
| - adjust_comps = FX_Alloc(int, image->numcomps);
|
| + FX_BOOL result = FALSE;
|
| + int* adjust_comps = FX_Alloc(int, image->numcomps);
|
| if (adjust_comps == NULL) {
|
| - FX_Free(channel_bufs);
|
| - return FALSE;
|
| + goto done;
|
| }
|
| - flag = TRUE;
|
| for (i = 0; i < (int)image->numcomps; i ++) {
|
| channel_bufs[i] = dest_buf + offsets[i];
|
| adjust_comps[i] = image->comps[i].prec - 8;
|
| @@ -736,8 +730,7 @@ FX_BOOL CJPX_Decoder::Decode(FX_LPBYTE dest_buf, int pitch, FX_BOOL bTranslateCo
|
| if(image->comps[i].dx != image->comps[i - 1].dx
|
| || image->comps[i].dy != image->comps[i - 1].dy
|
| || image->comps[i].prec != image->comps[i - 1].prec) {
|
| - flag = FALSE;
|
| - goto failed;
|
| + goto done;
|
| }
|
| }
|
| }
|
| @@ -784,14 +777,12 @@ FX_BOOL CJPX_Decoder::Decode(FX_LPBYTE dest_buf, int pitch, FX_BOOL bTranslateCo
|
| }
|
| }
|
| }
|
| + result = TRUE;
|
|
|
| +done:
|
| FX_Free(channel_bufs);
|
| FX_Free(adjust_comps);
|
| - return TRUE;
|
| -failed:
|
| - FX_Free(channel_bufs);
|
| - FX_Free(adjust_comps);
|
| - return FALSE;
|
| + return result;
|
| }
|
| void initialize_transition_table();
|
| void initialize_significance_luts();
|
|
|