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); |