| 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 1180bfc102ab1d36b2840c4829ac20c3baf24a80..8dcecf9061796df363ddfb59347b75d47f27eb7a 100644
|
| --- a/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
|
| +++ b/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
|
| @@ -166,13 +166,19 @@ static void sycc422_to_rgb(opj_image_t *img)
|
| d0 = r = FX_Alloc(int, (size_t)max);
|
| d1 = g = FX_Alloc(int, (size_t)max);
|
| d2 = b = FX_Alloc(int, (size_t)max);
|
| - for(i = 0; i < maxh; ++i) {
|
| - for (j = 0; j < maxw; ++j, ++y, ++r, ++g, ++b) {
|
| - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
|
| - if (j % 2){
|
| - ++cb;
|
| - ++cr;
|
| - }
|
| + for(i = 0; i < maxh; ++i)
|
| + {
|
| + for (j = 0; (OPJ_UINT32)j < (maxw & ~(OPJ_UINT32)1); j += 2)
|
| + {
|
| + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
|
| + ++y; ++r; ++g; ++b;
|
| + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
|
| + ++y; ++r; ++g; ++b; ++cb; ++cr;
|
| + }
|
| + if (j < maxw)
|
| + {
|
| + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
|
| + ++y; ++r; ++g; ++b; ++cb; ++cr;
|
| }
|
| }
|
| FX_Free(img->comps[0].data);
|
| @@ -212,40 +218,47 @@ static void sycc420_to_rgb(opj_image_t *img)
|
| d0 = r = FX_Alloc(int, (size_t)max);
|
| d1 = g = FX_Alloc(int, (size_t)max);
|
| d2 = b = FX_Alloc(int, (size_t)max);
|
| - for(i = 0; i < maxh; i += 2) {
|
| - ny = y + maxw;
|
| - nr = r + maxw;
|
| - ng = g + maxw;
|
| - nb = b + maxw;
|
| - for(j = 0; j < maxw; j += 2) {
|
| - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
|
| - ++y;
|
| - ++r;
|
| - ++g;
|
| - ++b;
|
| - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
|
| - ++y;
|
| - ++r;
|
| - ++g;
|
| - ++b;
|
| - sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb);
|
| - ++ny;
|
| - ++nr;
|
| - ++ng;
|
| - ++nb;
|
| - sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb);
|
| - ++ny;
|
| - ++nr;
|
| - ++ng;
|
| - ++nb;
|
| - ++cb;
|
| - ++cr;
|
| - }
|
| - y += maxw;
|
| - r += maxw;
|
| - g += maxw;
|
| - b += maxw;
|
| - }
|
| + for (i = 0; (OPJ_UINT32)i < (maxh & ~(OPJ_UINT32)1); i += 2)
|
| + {
|
| + ny = y + maxw;
|
| + nr = r + maxw;
|
| + ng = g + maxw;
|
| + nb = b + maxw;
|
| + for (j = 0; (OPJ_UINT32)j < (maxw & ~(OPJ_UINT32)1); j += 2)
|
| + {
|
| + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
|
| + ++y; ++r; ++g; ++b;
|
| + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
|
| + ++y; ++r; ++g; ++b;
|
| + sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb);
|
| + ++ny; ++nr; ++ng; ++nb;
|
| + sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb);
|
| + ++ny; ++nr; ++ng; ++nb; ++cb; ++cr;
|
| + }
|
| + if (j < maxw)
|
| + {
|
| + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
|
| + ++y; ++r; ++g; ++b;
|
| + sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb);
|
| + ++ny; ++nr; ++ng; ++nb; ++cb; ++cr;
|
| + }
|
| + y += maxw; r += maxw; g += maxw; b += maxw;
|
| + }
|
| + if (i < maxh)
|
| + {
|
| + for (j = 0; (OPJ_UINT32)j < (maxw & ~(OPJ_UINT32)1); j += 2)
|
| + {
|
| + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
|
| + ++y; ++r; ++g; ++b;
|
| + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
|
| + ++y; ++r; ++g; ++b; ++cb; ++cr;
|
| + }
|
| + if (j < maxw)
|
| + {
|
| + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
|
| + }
|
| + }
|
| +
|
| FX_Free(img->comps[0].data);
|
| img->comps[0].data = d0;
|
| FX_Free(img->comps[1].data);
|
|
|