| Index: core/src/fxcodec/fx_libopenjpeg/libopenjpeg20/mct.c
|
| diff --git a/core/src/fxcodec/fx_libopenjpeg/libopenjpeg20/mct.c b/core/src/fxcodec/fx_libopenjpeg/libopenjpeg20/mct.c
|
| index c4341ec1bbd942dee320d1b4dc5da7d53832b269..89f82225a06d27a5d16bab697772613f6d6155a3 100644
|
| --- a/core/src/fxcodec/fx_libopenjpeg/libopenjpeg20/mct.c
|
| +++ b/core/src/fxcodec/fx_libopenjpeg/libopenjpeg20/mct.c
|
| @@ -150,58 +150,43 @@ void opj_mct_decode_real(
|
| {
|
| OPJ_UINT32 i;
|
| #ifdef __SSE__
|
| - // Mantis BUGID: 0056291. The address must be 16-byte aligned.
|
| - // TestFile: fuzz-signal_sigsegv_6e9e7f_5076_5265.pdf
|
| - if ((OPJ_UINT32)c0 % 16 == 0 && (OPJ_UINT32)c1 % 16 == 0 && (OPJ_UINT32)c2 % 16 == 0){
|
| - __m128 vrv, vgu, vgv, vbu;
|
| - vrv = _mm_set1_ps(1.402f);
|
| - vgu = _mm_set1_ps(0.34413f);
|
| - vgv = _mm_set1_ps(0.71414f);
|
| - vbu = _mm_set1_ps(1.772f);
|
| - for (i = 0; i < (n >> 3); ++i) {
|
| - __m128 vy, vu, vv;
|
| - __m128 vr, vg, vb;
|
| -
|
| - vy = _mm_load_ps(c0);
|
| - vu = _mm_load_ps(c1);
|
| - vv = _mm_load_ps(c2);
|
| - vr = _mm_add_ps(vy, _mm_mul_ps(vv, vrv));
|
| - vg = _mm_sub_ps(_mm_sub_ps(vy, _mm_mul_ps(vu, vgu)), _mm_mul_ps(vv, vgv));
|
| - vb = _mm_add_ps(vy, _mm_mul_ps(vu, vbu));
|
| - _mm_store_ps(c0, vr);
|
| - _mm_store_ps(c1, vg);
|
| - _mm_store_ps(c2, vb);
|
| - c0 += 4;
|
| - c1 += 4;
|
| - c2 += 4;
|
| -
|
| - vy = _mm_load_ps(c0);
|
| - vu = _mm_load_ps(c1);
|
| - vv = _mm_load_ps(c2);
|
| - vr = _mm_add_ps(vy, _mm_mul_ps(vv, vrv));
|
| - vg = _mm_sub_ps(_mm_sub_ps(vy, _mm_mul_ps(vu, vgu)), _mm_mul_ps(vv, vgv));
|
| - vb = _mm_add_ps(vy, _mm_mul_ps(vu, vbu));
|
| - _mm_store_ps(c0, vr);
|
| - _mm_store_ps(c1, vg);
|
| - _mm_store_ps(c2, vb);
|
| - c0 += 4;
|
| - c1 += 4;
|
| - c2 += 4;
|
| - }
|
| - n &= 7;
|
| - } else {
|
| - for (i = 0; i < n; ++i) {
|
| - OPJ_FLOAT32 y = c0[i];
|
| - OPJ_FLOAT32 u = c1[i];
|
| - OPJ_FLOAT32 v = c2[i];
|
| - OPJ_FLOAT32 r = y + (v * 1.402f);
|
| - OPJ_FLOAT32 g = y - (u * 0.34413f) - (v * (0.71414f));
|
| - OPJ_FLOAT32 b = y + (u * 1.772f);
|
| - c0[i] = r;
|
| - c1[i] = g;
|
| - c2[i] = b;
|
| - }
|
| - }
|
| + __m128 vrv, vgu, vgv, vbu;
|
| + vrv = _mm_set1_ps(1.402f);
|
| + vgu = _mm_set1_ps(0.34413f);
|
| + vgv = _mm_set1_ps(0.71414f);
|
| + vbu = _mm_set1_ps(1.772f);
|
| + for (i = 0; i < (n >> 3); ++i) {
|
| + __m128 vy, vu, vv;
|
| + __m128 vr, vg, vb;
|
| +
|
| + vy = _mm_load_ps(c0);
|
| + vu = _mm_load_ps(c1);
|
| + vv = _mm_load_ps(c2);
|
| + vr = _mm_add_ps(vy, _mm_mul_ps(vv, vrv));
|
| + vg = _mm_sub_ps(_mm_sub_ps(vy, _mm_mul_ps(vu, vgu)), _mm_mul_ps(vv, vgv));
|
| + vb = _mm_add_ps(vy, _mm_mul_ps(vu, vbu));
|
| + _mm_store_ps(c0, vr);
|
| + _mm_store_ps(c1, vg);
|
| + _mm_store_ps(c2, vb);
|
| + c0 += 4;
|
| + c1 += 4;
|
| + c2 += 4;
|
| +
|
| + vy = _mm_load_ps(c0);
|
| + vu = _mm_load_ps(c1);
|
| + vv = _mm_load_ps(c2);
|
| + vr = _mm_add_ps(vy, _mm_mul_ps(vv, vrv));
|
| + vg = _mm_sub_ps(_mm_sub_ps(vy, _mm_mul_ps(vu, vgu)), _mm_mul_ps(vv, vgv));
|
| + vb = _mm_add_ps(vy, _mm_mul_ps(vu, vbu));
|
| + _mm_store_ps(c0, vr);
|
| + _mm_store_ps(c1, vg);
|
| + _mm_store_ps(c2, vb);
|
| + c0 += 4;
|
| + c1 += 4;
|
| + c2 += 4;
|
| + }
|
| + n &= 7;
|
| +
|
| #endif
|
| for(i = 0; i < n; ++i) {
|
| OPJ_FLOAT32 y = c0[i];
|
|
|