Fix some warnings (#838)

Fix warnings introduced by uclouvain/openjpeg#786
This commit is contained in:
Matthieu Darbois 2016-09-14 00:12:43 +02:00 committed by GitHub
parent 1e69940955
commit 0954bc11e3
7 changed files with 110 additions and 109 deletions

View File

@ -911,7 +911,7 @@ OPJ_FLOAT64 opj_clock(void) {
#elif defined(__linux) #elif defined(__linux)
struct timespec ts; struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts); clock_gettime(CLOCK_REALTIME, &ts);
return( ts.tv_sec + ts.tv_nsec * 1e-9 ); return( (OPJ_FLOAT64)ts.tv_sec + (OPJ_FLOAT64)ts.tv_nsec * 1e-9 );
#else #else
/* Unix : use resource usage */ /* Unix : use resource usage */
/* FIXME: this counts the total CPU time, instead of the user perceived time */ /* FIXME: this counts the total CPU time, instead of the user perceived time */

View File

@ -563,13 +563,13 @@ typedef struct
OPJ_UINT32 rw; OPJ_UINT32 rw;
OPJ_UINT32 w; OPJ_UINT32 w;
OPJ_INT32 * OPJ_RESTRICT tiledp; OPJ_INT32 * OPJ_RESTRICT tiledp;
int min_j; OPJ_UINT32 min_j;
int max_j; OPJ_UINT32 max_j;
} opj_dwd_decode_h_job_t; } opj_dwd_decode_h_job_t;
static void opj_dwt_decode_h_func(void* user_data, opj_tls_t* tls) static void opj_dwt_decode_h_func(void* user_data, opj_tls_t* tls)
{ {
int j; OPJ_UINT32 j;
opj_dwd_decode_h_job_t* job; opj_dwd_decode_h_job_t* job;
(void)tls; (void)tls;
@ -592,13 +592,13 @@ typedef struct
OPJ_UINT32 rh; OPJ_UINT32 rh;
OPJ_UINT32 w; OPJ_UINT32 w;
OPJ_INT32 * OPJ_RESTRICT tiledp; OPJ_INT32 * OPJ_RESTRICT tiledp;
int min_j; OPJ_UINT32 min_j;
int max_j; OPJ_UINT32 max_j;
} opj_dwd_decode_v_job_t; } opj_dwd_decode_v_job_t;
static void opj_dwt_decode_v_func(void* user_data, opj_tls_t* tls) static void opj_dwt_decode_v_func(void* user_data, opj_tls_t* tls)
{ {
int j; OPJ_UINT32 j;
opj_dwd_decode_v_job_t* job; opj_dwd_decode_v_job_t* job;
(void)tls; (void)tls;
@ -631,8 +631,8 @@ static OPJ_BOOL opj_dwt_decode_tile(opj_thread_pool_t* tp, opj_tcd_tilecomp_t* t
OPJ_UINT32 rh = (OPJ_UINT32)(tr->y1 - tr->y0); /* height of the resolution level computed */ OPJ_UINT32 rh = (OPJ_UINT32)(tr->y1 - tr->y0); /* height of the resolution level computed */
OPJ_UINT32 w = (OPJ_UINT32)(tilec->x1 - tilec->x0); OPJ_UINT32 w = (OPJ_UINT32)(tilec->x1 - tilec->x0);
size_t h_mem_size; size_t h_mem_size;
int num_threads; int num_threads;
if (numres == 1U) { if (numres == 1U) {
return OPJ_TRUE; return OPJ_TRUE;
@ -671,9 +671,10 @@ static OPJ_BOOL opj_dwt_decode_tile(opj_thread_pool_t* tp, opj_tcd_tilecomp_t* t
} }
else else
{ {
int num_jobs = num_threads; OPJ_UINT32 num_jobs = (OPJ_UINT32)num_threads;
if( rh < num_jobs ) if( rh < num_jobs ) {
num_jobs = rh; num_jobs = rh;
}
for( j = 0; j < num_jobs; j++ ) for( j = 0; j < num_jobs; j++ )
{ {
opj_dwd_decode_h_job_t* job; opj_dwd_decode_h_job_t* job;
@ -695,7 +696,7 @@ static OPJ_BOOL opj_dwt_decode_tile(opj_thread_pool_t* tp, opj_tcd_tilecomp_t* t
job->w = w; job->w = w;
job->tiledp = tiledp; job->tiledp = tiledp;
job->min_j = j * (rh / num_jobs); job->min_j = j * (rh / num_jobs);
job->max_j = (j+1) * (rh / num_jobs); job->max_j = (j+1) * (rh / num_jobs); /* TODO this can overflow */
if( job->max_j > rh || j == num_jobs - 1 ) if( job->max_j > rh || j == num_jobs - 1 )
job->max_j = rh; job->max_j = rh;
job->h.mem = (OPJ_INT32*)opj_aligned_malloc(h_mem_size); job->h.mem = (OPJ_INT32*)opj_aligned_malloc(h_mem_size);
@ -728,7 +729,7 @@ static OPJ_BOOL opj_dwt_decode_tile(opj_thread_pool_t* tp, opj_tcd_tilecomp_t* t
} }
else else
{ {
int num_jobs = num_threads; OPJ_UINT32 num_jobs = (OPJ_UINT32)num_threads;
if( rw < num_jobs ) if( rw < num_jobs )
num_jobs = rw; num_jobs = rw;
for( j = 0; j < num_jobs; j++ ) for( j = 0; j < num_jobs; j++ )
@ -752,7 +753,7 @@ static OPJ_BOOL opj_dwt_decode_tile(opj_thread_pool_t* tp, opj_tcd_tilecomp_t* t
job->w = w; job->w = w;
job->tiledp = tiledp; job->tiledp = tiledp;
job->min_j = j * (rw / num_jobs); job->min_j = j * (rw / num_jobs);
job->max_j = (j+1) * (rw / num_jobs); job->max_j = (j+1) * (rw / num_jobs); /* TODO this can overflow */
if( job->max_j > rw || j == num_jobs - 1 ) if( job->max_j > rw || j == num_jobs - 1 )
job->max_j = rw; job->max_j = rw;
job->v.mem = (OPJ_INT32*)opj_aligned_malloc(h_mem_size); job->v.mem = (OPJ_INT32*)opj_aligned_malloc(h_mem_size);

View File

@ -5953,8 +5953,11 @@ OPJ_BOOL opj_j2k_set_threads(opj_j2k_t *j2k, OPJ_UINT32 num_threads)
if( opj_has_thread_support() ) if( opj_has_thread_support() )
{ {
opj_thread_pool_destroy(j2k->m_tp); opj_thread_pool_destroy(j2k->m_tp);
j2k->m_tp = opj_thread_pool_create((int)num_threads); j2k->m_tp = NULL;
if( j2k->m_tp == 0 ) if (num_threads <= (OPJ_UINT32)INT_MAX ) {
j2k->m_tp = opj_thread_pool_create((int)num_threads);
}
if( j2k->m_tp == NULL )
{ {
j2k->m_tp = opj_thread_pool_create(0); j2k->m_tp = opj_thread_pool_create(0);
return OPJ_FALSE; return OPJ_FALSE;

View File

@ -361,15 +361,15 @@ void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameters_t *paramete
} }
OPJ_API OPJ_CALLCONV opj_codec_set_threads(opj_codec_t *p_codec, OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads(opj_codec_t *p_codec,
int num_threads) int num_threads)
{ {
if (p_codec ) { if (p_codec && (num_threads >= 0)) {
opj_codec_private_t * l_codec = (opj_codec_private_t *) p_codec; opj_codec_private_t * l_codec = (opj_codec_private_t *) p_codec;
return l_codec->opj_set_threads(l_codec->m_codec, num_threads); return l_codec->opj_set_threads(l_codec->m_codec, (OPJ_UINT32)num_threads);
} }
return OPJ_FALSE; return OPJ_FALSE;
} }
OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec, OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec,

View File

@ -54,6 +54,7 @@
#include <stdarg.h> #include <stdarg.h>
#include <ctype.h> #include <ctype.h>
#include <assert.h> #include <assert.h>
#include <limits.h>
/* /*
Use fseeko() and ftello() if they are available since they use Use fseeko() and ftello() if they are available since they use

View File

@ -86,15 +86,15 @@ static INLINE void opj_t1_dec_sigpass_step_raw(
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 vsc, OPJ_INT32 vsc,
OPJ_INT32 row); OPJ_UINT32 row);
static INLINE void opj_t1_dec_sigpass_step_mqc( static INLINE void opj_t1_dec_sigpass_step_mqc(
opj_t1_t *t1, opj_t1_t *t1,
opj_flag_t *flagsp, opj_flag_t *flagsp,
opj_colflag_t* colflagsp, opj_colflag_t* colflagsp,
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 row, OPJ_UINT32 row,
OPJ_INT32 flags_stride); OPJ_UINT32 flags_stride);
static INLINE void opj_t1_dec_sigpass_step_mqc_vsc( static INLINE void opj_t1_dec_sigpass_step_mqc_vsc(
opj_t1_t *t1, opj_t1_t *t1,
opj_flag_t *flagsp, opj_flag_t *flagsp,
@ -102,7 +102,7 @@ static INLINE void opj_t1_dec_sigpass_step_mqc_vsc(
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 vsc, OPJ_INT32 vsc,
OPJ_INT32 row); OPJ_UINT32 row);
/** /**
@ -154,8 +154,7 @@ Decode refinement pass
*/ */
static void opj_t1_dec_refpass_raw( static void opj_t1_dec_refpass_raw(
opj_t1_t *t1, opj_t1_t *t1,
OPJ_INT32 bpno, OPJ_INT32 bpno);
OPJ_INT32 cblksty);
static void opj_t1_dec_refpass_mqc_vsc( static void opj_t1_dec_refpass_mqc_vsc(
opj_t1_t *t1, opj_t1_t *t1,
OPJ_INT32 bpno); OPJ_INT32 bpno);
@ -176,12 +175,11 @@ static void opj_t1_dec_refpass_step(opj_t1_t *t1,
static INLINE void opj_t1_dec_refpass_step_raw( static INLINE void opj_t1_dec_refpass_step_raw(
opj_t1_t *t1, opj_t1_t *t1,
opj_flag_t *flagsp,
opj_colflag_t *colflagsp, opj_colflag_t *colflagsp,
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 poshalf, OPJ_INT32 poshalf,
OPJ_INT32 neghalf, OPJ_INT32 neghalf,
OPJ_INT32 row); OPJ_UINT32 row);
static INLINE void opj_t1_dec_refpass_step_mqc( static INLINE void opj_t1_dec_refpass_step_mqc(
opj_t1_t *t1, opj_t1_t *t1,
opj_flag_t *flagsp, opj_flag_t *flagsp,
@ -189,7 +187,7 @@ static INLINE void opj_t1_dec_refpass_step_mqc(
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 poshalf, OPJ_INT32 poshalf,
OPJ_INT32 neghalf, OPJ_INT32 neghalf,
OPJ_INT32 row); OPJ_UINT32 row);
static INLINE void opj_t1_dec_refpass_step_mqc_vsc( static INLINE void opj_t1_dec_refpass_step_mqc_vsc(
opj_t1_t *t1, opj_t1_t *t1,
opj_flag_t *flagsp, opj_flag_t *flagsp,
@ -198,7 +196,7 @@ static INLINE void opj_t1_dec_refpass_step_mqc_vsc(
OPJ_INT32 poshalf, OPJ_INT32 poshalf,
OPJ_INT32 neghalf, OPJ_INT32 neghalf,
OPJ_INT32 vsc, OPJ_INT32 vsc,
OPJ_INT32 row); OPJ_UINT32 row);
@ -223,14 +221,14 @@ static void opj_t1_dec_clnpass_step_partial(
opj_colflag_t *colflagsp, opj_colflag_t *colflagsp,
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 row); OPJ_UINT32 row);
static void opj_t1_dec_clnpass_step( static void opj_t1_dec_clnpass_step(
opj_t1_t *t1, opj_t1_t *t1,
opj_flag_t *flagsp, opj_flag_t *flagsp,
opj_colflag_t *colflagsp, opj_colflag_t *colflagsp,
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 row); OPJ_UINT32 row);
static void opj_t1_dec_clnpass_step_vsc( static void opj_t1_dec_clnpass_step_vsc(
opj_t1_t *t1, opj_t1_t *t1,
opj_flag_t *flagsp, opj_flag_t *flagsp,
@ -239,7 +237,7 @@ static void opj_t1_dec_clnpass_step_vsc(
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 partial, OPJ_INT32 partial,
OPJ_INT32 vsc, OPJ_INT32 vsc,
OPJ_INT32 row); OPJ_UINT32 row);
/** /**
Encode clean-up pass Encode clean-up pass
*/ */
@ -248,13 +246,6 @@ static void opj_t1_enc_clnpass(
OPJ_INT32 bpno, OPJ_INT32 bpno,
OPJ_INT32 *nmsedec, OPJ_INT32 *nmsedec,
OPJ_UINT32 cblksty); OPJ_UINT32 cblksty);
/**
Decode clean-up pass
*/
static void opj_t1_dec_clnpass(
opj_t1_t *t1,
OPJ_INT32 bpno,
OPJ_INT32 cblksty);
static OPJ_FLOAT64 opj_t1_getwmsedec( static OPJ_FLOAT64 opj_t1_getwmsedec(
OPJ_INT32 nmsedec, OPJ_INT32 nmsedec,
@ -362,10 +353,10 @@ static INLINE void opj_t1_updateflags(opj_flag_t *flagsp, OPJ_UINT32 s, OPJ_UINT
sp[1] |= T1_SIG_NW; sp[1] |= T1_SIG_NW;
} }
static INLINE void opj_t1_updateflagscolflags(opj_flag_t *flagsp, opj_colflag_t *colflagsp, OPJ_UINT32 s, OPJ_UINT32 stride, OPJ_INT32 row) static INLINE void opj_t1_updateflagscolflags(opj_flag_t *flagsp, opj_colflag_t *colflagsp, OPJ_UINT32 s, OPJ_UINT32 stride, OPJ_UINT32 row)
{ {
opj_t1_updateflags(flagsp, s, stride); opj_t1_updateflags(flagsp, s, stride);
if( row == 0 ) if( row == 0U )
{ {
*colflagsp |= (T1_COLFLAG_SIG_ROW_0 << (T1_COLFLAG_RBS * row)) | *colflagsp |= (T1_COLFLAG_SIG_ROW_0 << (T1_COLFLAG_RBS * row)) |
(T1_COLFLAG_SIG_OTHER_ROW_0 << (T1_COLFLAG_RBS * (row+1))); (T1_COLFLAG_SIG_OTHER_ROW_0 << (T1_COLFLAG_RBS * (row+1)));
@ -377,7 +368,7 @@ static INLINE void opj_t1_updateflagscolflags(opj_flag_t *flagsp, opj_colflag_t
*(colflagsp - stride) |= (T1_COLFLAG_SIG_OTHER_ROW_3); *(colflagsp - stride) |= (T1_COLFLAG_SIG_OTHER_ROW_3);
*(colflagsp - stride + 1) |= (T1_COLFLAG_SIG_OTHER_ROW_3); *(colflagsp - stride + 1) |= (T1_COLFLAG_SIG_OTHER_ROW_3);
} }
else if( row == 3 ) else if( row == 3U )
{ {
*colflagsp |= (T1_COLFLAG_SIG_ROW_0 << (T1_COLFLAG_RBS * row)) | *colflagsp |= (T1_COLFLAG_SIG_ROW_0 << (T1_COLFLAG_RBS * row)) |
(T1_COLFLAG_SIG_OTHER_ROW_0 << (T1_COLFLAG_RBS * (row-1))); (T1_COLFLAG_SIG_OTHER_ROW_0 << (T1_COLFLAG_RBS * (row-1)));
@ -450,7 +441,7 @@ static INLINE void opj_t1_dec_sigpass_step_raw(
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 vsc, OPJ_INT32 vsc,
OPJ_INT32 row) OPJ_UINT32 row)
{ {
OPJ_INT32 v, flag; OPJ_INT32 v, flag;
opj_raw_t *raw = t1->raw; /* RAW component */ opj_raw_t *raw = t1->raw; /* RAW component */
@ -475,8 +466,8 @@ static INLINE void opj_t1_dec_sigpass_step_mqc(
opj_colflag_t* colflagsp, opj_colflag_t* colflagsp,
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 row, OPJ_UINT32 row,
OPJ_INT32 flags_stride) OPJ_UINT32 flags_stride)
{ {
OPJ_INT32 v, flag; OPJ_INT32 v, flag;
@ -510,7 +501,7 @@ static INLINE void opj_t1_dec_sigpass_step_mqc_vsc(
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 vsc, OPJ_INT32 vsc,
OPJ_INT32 row) OPJ_UINT32 row)
{ {
OPJ_INT32 v, flag; OPJ_INT32 v, flag;
@ -611,16 +602,16 @@ static void opj_t1_dec_sigpass_raw(
opj_colflag_t *colflags2 = colflags1 + i; \ opj_colflag_t *colflags2 = colflags1 + i; \
if( *colflags2 == 0 ) continue; \ if( *colflags2 == 0 ) continue; \
flags2 += flags_stride; \ flags2 += flags_stride; \
opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 0, flags_stride); \ opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 0U, flags_stride); \
data2 += w; \ data2 += w; \
flags2 += flags_stride; \ flags2 += flags_stride; \
opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 1, flags_stride); \ opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 1U, flags_stride); \
data2 += w; \ data2 += w; \
flags2 += flags_stride; \ flags2 += flags_stride; \
opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 2, flags_stride); \ opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 2U, flags_stride); \
data2 += w; \ data2 += w; \
flags2 += flags_stride; \ flags2 += flags_stride; \
opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 3, flags_stride); \ opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 3U, flags_stride); \
data2 += w; \ data2 += w; \
} \ } \
data1 += w << 2; \ data1 += w << 2; \
@ -666,22 +657,22 @@ static void opj_t1_dec_sigpass_mqc_vsc(
one = 1 << bpno; one = 1 << bpno;
half = one >> 1; half = one >> 1;
oneplushalf = one | half; oneplushalf = one | half;
for (k = 0; k < (t1->h & ~3); k += 4) { for (k = 0; k < (t1->h & ~(OPJ_UINT32)3); k += 4U) {
for (i = 0; i < t1->w; ++i) { for (i = 0; i < t1->w; ++i) {
OPJ_INT32 *data2 = data1 + i; OPJ_INT32 *data2 = data1 + i;
opj_flag_t *flags2 = flags1 + i; opj_flag_t *flags2 = flags1 + i;
opj_colflag_t *colflags2 = colflags1 + i; opj_colflag_t *colflags2 = colflags1 + i;
flags2 += t1->flags_stride; flags2 += t1->flags_stride;
opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 0, 0); opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 0, 0U);
data2 += t1->w; data2 += t1->w;
flags2 += t1->flags_stride; flags2 += t1->flags_stride;
opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 0, 1); opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 0, 1U);
data2 += t1->w; data2 += t1->w;
flags2 += t1->flags_stride; flags2 += t1->flags_stride;
opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 0, 2); opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 0, 2U);
data2 += t1->w; data2 += t1->w;
flags2 += t1->flags_stride; flags2 += t1->flags_stride;
opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 1, 3); opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 1, 3U);
data2 += t1->w; data2 += t1->w;
} }
data1 += t1->w << 2; data1 += t1->w << 2;
@ -736,12 +727,11 @@ static void opj_t1_enc_refpass_step( opj_t1_t *t1,
static INLINE void opj_t1_dec_refpass_step_raw( static INLINE void opj_t1_dec_refpass_step_raw(
opj_t1_t *t1, opj_t1_t *t1,
opj_flag_t *flagsp,
opj_colflag_t *colflagsp, opj_colflag_t *colflagsp,
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 poshalf, OPJ_INT32 poshalf,
OPJ_INT32 neghalf, OPJ_INT32 neghalf,
OPJ_INT32 row) OPJ_UINT32 row)
{ {
OPJ_INT32 v, t; OPJ_INT32 v, t;
@ -767,7 +757,7 @@ static INLINE void opj_t1_dec_refpass_step_mqc(
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 poshalf, OPJ_INT32 poshalf,
OPJ_INT32 neghalf, OPJ_INT32 neghalf,
OPJ_INT32 row) OPJ_UINT32 row)
{ {
OPJ_INT32 v, t; OPJ_INT32 v, t;
@ -775,6 +765,8 @@ static INLINE void opj_t1_dec_refpass_step_mqc(
#ifdef CONSISTENCY_CHECK #ifdef CONSISTENCY_CHECK
assert( ((*flagsp & (T1_SIG | T1_VISIT)) == T1_SIG) == assert( ((*flagsp & (T1_SIG | T1_VISIT)) == T1_SIG) ==
((*colflagsp & ((T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0) << (T1_COLFLAG_RBS * row))) == ((T1_COLFLAG_SIG_ROW_0) << (T1_COLFLAG_RBS * row))) ); ((*colflagsp & ((T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0) << (T1_COLFLAG_RBS * row))) == ((T1_COLFLAG_SIG_ROW_0) << (T1_COLFLAG_RBS * row))) );
#else
(void)flagsp_unused;
#endif #endif
if ((*colflagsp & ((T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0) << (T1_COLFLAG_RBS * row))) == if ((*colflagsp & ((T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0) << (T1_COLFLAG_RBS * row))) ==
((T1_COLFLAG_SIG_ROW_0) << (T1_COLFLAG_RBS * row))) { ((T1_COLFLAG_SIG_ROW_0) << (T1_COLFLAG_RBS * row))) {
@ -796,9 +788,9 @@ static INLINE void opj_t1_dec_refpass_step_mqc_vsc(
OPJ_INT32 poshalf, OPJ_INT32 poshalf,
OPJ_INT32 neghalf, OPJ_INT32 neghalf,
OPJ_INT32 vsc, OPJ_INT32 vsc,
OPJ_INT32 row) OPJ_UINT32 row)
{ {
OPJ_INT32 v, t, flag; OPJ_INT32 v, t;
opj_mqc_t *mqc = t1->mqc; /* MQC component */ opj_mqc_t *mqc = t1->mqc; /* MQC component */
@ -848,12 +840,10 @@ static void opj_t1_enc_refpass(
static void opj_t1_dec_refpass_raw( static void opj_t1_dec_refpass_raw(
opj_t1_t *t1, opj_t1_t *t1,
OPJ_INT32 bpno, OPJ_INT32 bpno)
OPJ_INT32 cblksty)
{ {
OPJ_INT32 one, poshalf, neghalf; OPJ_INT32 one, poshalf, neghalf;
OPJ_UINT32 i, j, k; OPJ_UINT32 i, j, k;
OPJ_INT32 vsc;
opj_colflag_t *colflags1 = &t1->colflags[t1->flags_stride + 1]; opj_colflag_t *colflags1 = &t1->colflags[t1->flags_stride + 1];
one = 1 << bpno; one = 1 << bpno;
poshalf = one >> 1; poshalf = one >> 1;
@ -864,7 +854,6 @@ static void opj_t1_dec_refpass_raw(
for (j = k; j < k + 4 && j < t1->h; ++j) { for (j = k; j < k + 4 && j < t1->h; ++j) {
opj_t1_dec_refpass_step_raw( opj_t1_dec_refpass_step_raw(
t1, t1,
&t1->flags[((j+1) * t1->flags_stride) + i + 1],
colflags2, colflags2,
&t1->data[(j * t1->w) + i], &t1->data[(j * t1->w) + i],
poshalf, poshalf,
@ -892,16 +881,16 @@ static void opj_t1_dec_refpass_raw(
opj_colflag_t *colflags2 = colflags1 + i; \ opj_colflag_t *colflags2 = colflags1 + i; \
if( *colflags2 == 0 ) continue; \ if( *colflags2 == 0 ) continue; \
flags2 += flags_stride; \ flags2 += flags_stride; \
opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 0); \ opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 0U); \
data2 += w; \ data2 += w; \
flags2 += flags_stride; \ flags2 += flags_stride; \
opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 1); \ opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 1U); \
data2 += w; \ data2 += w; \
flags2 += flags_stride; \ flags2 += flags_stride; \
opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 2); \ opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 2U); \
data2 += w; \ data2 += w; \
flags2 += flags_stride; \ flags2 += flags_stride; \
opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 3); \ opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 3U); \
data2 += w; \ data2 += w; \
} \ } \
data1 += w << 2; \ data1 += w << 2; \
@ -948,22 +937,22 @@ static void opj_t1_dec_refpass_mqc_vsc(
one = 1 << bpno; one = 1 << bpno;
poshalf = one >> 1; poshalf = one >> 1;
neghalf = bpno > 0 ? -poshalf : -1; neghalf = bpno > 0 ? -poshalf : -1;
for (k = 0; k < (t1->h & ~3); k += 4) { for (k = 0; k < (t1->h & ~(OPJ_UINT32)3U); k += 4U) {
for (i = 0; i < t1->w; ++i) { for (i = 0; i < t1->w; ++i) {
OPJ_INT32 *data2 = data1 + i; OPJ_INT32 *data2 = data1 + i;
opj_flag_t *flags2 = flags1 + i; opj_flag_t *flags2 = flags1 + i;
opj_colflag_t *colflags2 = colflags1 + i; opj_colflag_t *colflags2 = colflags1 + i;
flags2 += t1->flags_stride; flags2 += t1->flags_stride;
opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 0, 0); opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 0, 0U);
data2 += t1->w; data2 += t1->w;
flags2 += t1->flags_stride; flags2 += t1->flags_stride;
opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 0, 1); opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 0, 1U);
data2 += t1->w; data2 += t1->w;
flags2 += t1->flags_stride; flags2 += t1->flags_stride;
opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 0, 2); opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 0, 2U);
data2 += t1->w; data2 += t1->w;
flags2 += t1->flags_stride; flags2 += t1->flags_stride;
opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 1, 3); opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 1, 3U);
data2 += t1->w; data2 += t1->w;
} }
data1 += t1->w << 2; data1 += t1->w << 2;
@ -1028,7 +1017,7 @@ static void opj_t1_dec_clnpass_step_partial(
opj_colflag_t *colflagsp, opj_colflag_t *colflagsp,
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 row) OPJ_UINT32 row)
{ {
OPJ_INT32 v, flag; OPJ_INT32 v, flag;
opj_mqc_t *mqc = t1->mqc; /* MQC component */ opj_mqc_t *mqc = t1->mqc; /* MQC component */
@ -1049,7 +1038,7 @@ static void opj_t1_dec_clnpass_step(
opj_colflag_t *colflagsp, opj_colflag_t *colflagsp,
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 row) OPJ_UINT32 row)
{ {
OPJ_INT32 v, flag; OPJ_INT32 v, flag;
@ -1078,8 +1067,8 @@ static void opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(
opj_colflag_t *colflagsp, opj_colflag_t *colflagsp,
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 row, OPJ_UINT32 row,
OPJ_INT32 flags_stride) OPJ_UINT32 flags_stride)
{ {
OPJ_INT32 v; OPJ_INT32 v;
OPJ_INT32 flag; OPJ_INT32 flag;
@ -1094,7 +1083,7 @@ static void opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(
opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc((OPJ_UINT32)flag)); opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc((OPJ_UINT32)flag));
v = opj_mqc_decode(mqc) ^ opj_t1_getspb((OPJ_UINT32)flag); v = opj_mqc_decode(mqc) ^ opj_t1_getspb((OPJ_UINT32)flag);
*datap = v ? -oneplushalf : oneplushalf; *datap = v ? -oneplushalf : oneplushalf;
opj_t1_updateflagscolflags(flagsp, colflagsp, v, flags_stride, row); opj_t1_updateflagscolflags(flagsp, colflagsp, (OPJ_UINT32)v, flags_stride, row);
} }
} }
/*flagsp &= ~T1_VISIT;*/ /*flagsp &= ~T1_VISIT;*/
@ -1103,12 +1092,12 @@ static void opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(
static void opj_t1_dec_clnpass_step_vsc( static void opj_t1_dec_clnpass_step_vsc(
opj_t1_t *t1, opj_t1_t *t1,
opj_flag_t *flagsp, opj_flag_t *flagsp,
opj_colflag_t *colflagsp, opj_colflag_t *colflagsp,
OPJ_INT32 *datap, OPJ_INT32 *datap,
OPJ_INT32 oneplushalf, OPJ_INT32 oneplushalf,
OPJ_INT32 partial, OPJ_INT32 partial,
OPJ_INT32 vsc, OPJ_INT32 vsc,
OPJ_INT32 row) OPJ_UINT32 row)
{ {
OPJ_INT32 v, flag; OPJ_INT32 v, flag;
@ -1125,7 +1114,7 @@ LABEL_PARTIAL:
opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc((OPJ_UINT32)flag)); opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc((OPJ_UINT32)flag));
v = opj_mqc_decode(mqc) ^ opj_t1_getspb((OPJ_UINT32)flag); v = opj_mqc_decode(mqc) ^ opj_t1_getspb((OPJ_UINT32)flag);
*datap = v ? -oneplushalf : oneplushalf; *datap = v ? -oneplushalf : oneplushalf;
opj_t1_updateflagscolflags(flagsp, colflagsp, v, t1->flags_stride, row); opj_t1_updateflagscolflags(flagsp, colflagsp, (OPJ_UINT32)v, t1->flags_stride, row);
} }
} }
#ifdef CONSISTENCY_CHECK #ifdef CONSISTENCY_CHECK
@ -1202,7 +1191,7 @@ static void opj_t1_enc_clnpass(
#define opj_t1_dec_clnpass_internal(consistency_check, t1, bpno, cblksty, w, h, flags_stride) \ #define opj_t1_dec_clnpass_internal(consistency_check, t1, bpno, cblksty, w, h, flags_stride) \
{ \ { \
OPJ_INT32 one, half, oneplushalf, agg, runlen, vsc; \ OPJ_INT32 one, half, oneplushalf, agg, runlen, vsc; \
OPJ_UINT32 i, j, k; \ OPJ_UINT32 i, j, k; \
OPJ_INT32 segsym = cblksty & J2K_CCP_CBLKSTY_SEGSYM; \ OPJ_INT32 segsym = cblksty & J2K_CCP_CBLKSTY_SEGSYM; \
\ \
opj_mqc_t *mqc = t1->mqc; /* MQC component */ \ opj_mqc_t *mqc = t1->mqc; /* MQC component */ \
@ -1294,28 +1283,28 @@ static void opj_t1_enc_clnpass(
flags2 += flags_stride; \ flags2 += flags_stride; \
if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \ if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \
if (!(colflags & (T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0))) {\ if (!(colflags & (T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0))) {\
opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 0, flags_stride); \ opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 0U, flags_stride); \
} \ } \
if( consistency_check ) *flags2 &= ~T1_VISIT; \ if( consistency_check ) *flags2 &= ~T1_VISIT; \
data2 += w; \ data2 += w; \
flags2 += flags_stride; \ flags2 += flags_stride; \
if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_1 | T1_COLFLAG_VISIT_ROW_1))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \ if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_1 | T1_COLFLAG_VISIT_ROW_1))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \
if (!(colflags & (T1_COLFLAG_SIG_ROW_1 | T1_COLFLAG_VISIT_ROW_1))) {\ if (!(colflags & (T1_COLFLAG_SIG_ROW_1 | T1_COLFLAG_VISIT_ROW_1))) {\
opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 1, flags_stride); \ opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 1U, flags_stride); \
} \ } \
if( consistency_check ) *flags2 &= ~T1_VISIT; \ if( consistency_check ) *flags2 &= ~T1_VISIT; \
data2 += w; \ data2 += w; \
flags2 += flags_stride; \ flags2 += flags_stride; \
if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_2 | T1_COLFLAG_VISIT_ROW_2))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \ if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_2 | T1_COLFLAG_VISIT_ROW_2))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \
if (!(colflags & (T1_COLFLAG_SIG_ROW_2 | T1_COLFLAG_VISIT_ROW_2))) {\ if (!(colflags & (T1_COLFLAG_SIG_ROW_2 | T1_COLFLAG_VISIT_ROW_2))) {\
opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 2, flags_stride); \ opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 2U, flags_stride); \
} \ } \
if( consistency_check ) *flags2 &= ~T1_VISIT; \ if( consistency_check ) *flags2 &= ~T1_VISIT; \
data2 += w; \ data2 += w; \
flags2 += flags_stride; \ flags2 += flags_stride; \
if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_3 | T1_COLFLAG_VISIT_ROW_3))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \ if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_3 | T1_COLFLAG_VISIT_ROW_3))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \
if (!(colflags & (T1_COLFLAG_SIG_ROW_3 | T1_COLFLAG_VISIT_ROW_3))) {\ if (!(colflags & (T1_COLFLAG_SIG_ROW_3 | T1_COLFLAG_VISIT_ROW_3))) {\
opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 3, flags_stride); \ opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 3U, flags_stride); \
} \ } \
if( consistency_check ) *flags2 &= ~T1_VISIT; \ if( consistency_check ) *flags2 &= ~T1_VISIT; \
data2 += w; \ data2 += w; \
@ -1634,19 +1623,19 @@ static void opj_t1_clbl_decode_processor(void* user_data, opj_tls_t* tls)
OPJ_INT32* OPJ_RESTRICT tiledp = &tilec->data[(OPJ_UINT32)y * tile_w + (OPJ_UINT32)x]; OPJ_INT32* OPJ_RESTRICT tiledp = &tilec->data[(OPJ_UINT32)y * tile_w + (OPJ_UINT32)x];
for (j = 0; j < cblk_h; ++j) { for (j = 0; j < cblk_h; ++j) {
i = 0; i = 0;
for (; i < (cblk_w & ~3); i += 4) { for (; i < (cblk_w & ~(OPJ_UINT32)3U); i += 4U) {
OPJ_INT32 tmp0 = datap[(j * cblk_w) + i]; OPJ_INT32 tmp0 = datap[(j * cblk_w) + i + 0U];
OPJ_INT32 tmp1 = datap[(j * cblk_w) + i+1]; OPJ_INT32 tmp1 = datap[(j * cblk_w) + i + 1U];
OPJ_INT32 tmp2 = datap[(j * cblk_w) + i+2]; OPJ_INT32 tmp2 = datap[(j * cblk_w) + i + 2U];
OPJ_INT32 tmp3 = datap[(j * cblk_w) + i+3]; OPJ_INT32 tmp3 = datap[(j * cblk_w) + i + 3U];
((OPJ_INT32*)tiledp)[(j * tile_w) + i] = tmp0/2; ((OPJ_INT32*)tiledp)[(j * tile_w) + i + 0U] = tmp0 / 2;
((OPJ_INT32*)tiledp)[(j * tile_w) + i+1] = tmp1/2; ((OPJ_INT32*)tiledp)[(j * tile_w) + i + 1U] = tmp1 / 2;
((OPJ_INT32*)tiledp)[(j * tile_w) + i+2] = tmp2/2; ((OPJ_INT32*)tiledp)[(j * tile_w) + i + 2U] = tmp2 / 2;
((OPJ_INT32*)tiledp)[(j * tile_w) + i+3] = tmp3/2; ((OPJ_INT32*)tiledp)[(j * tile_w) + i + 3U] = tmp3 / 2;
} }
for (; i < cblk_w; ++i) { for (; i < cblk_w; ++i) {
OPJ_INT32 tmp = datap[(j * cblk_w) + i]; OPJ_INT32 tmp = datap[(j * cblk_w) + i];
((OPJ_INT32*)tiledp)[(j * tile_w) + i] = tmp/2; ((OPJ_INT32*)tiledp)[(j * tile_w) + i] = tmp / 2;
} }
} }
} else { /* if (tccp->qmfbid == 0) */ } else { /* if (tccp->qmfbid == 0) */
@ -1778,7 +1767,7 @@ static OPJ_BOOL opj_t1_decode_cblk(opj_t1_t *t1,
break; break;
case 1: case 1:
if (type == T1_TYPE_RAW) { if (type == T1_TYPE_RAW) {
opj_t1_dec_refpass_raw(t1, bpno_plus_one, (OPJ_INT32)cblksty); opj_t1_dec_refpass_raw(t1, bpno_plus_one);
} else { } else {
if (cblksty & J2K_CCP_CBLKSTY_VSC) { if (cblksty & J2K_CCP_CBLKSTY_VSC) {
opj_t1_dec_refpass_mqc_vsc(t1, bpno_plus_one); opj_t1_dec_refpass_mqc_vsc(t1, bpno_plus_one);
@ -1821,7 +1810,7 @@ static OPJ_BOOL opj_t1_decode_cblk(opj_t1_t *t1,
break; break;
case 1: case 1:
if (type == T1_TYPE_RAW) { if (type == T1_TYPE_RAW) {
opj_t1_dec_refpass_raw(t1, bpno_plus_one, (OPJ_INT32)cblksty); opj_t1_dec_refpass_raw(t1, bpno_plus_one);
} else { } else {
if (cblksty & J2K_CCP_CBLKSTY_VSC) { if (cblksty & J2K_CCP_CBLKSTY_VSC) {
opj_t1_dec_refpass_mqc_vsc(t1, bpno_plus_one); opj_t1_dec_refpass_mqc_vsc(t1, bpno_plus_one);

View File

@ -314,11 +314,13 @@ struct opj_mutex_t
opj_mutex_t* opj_mutex_create(void) opj_mutex_t* opj_mutex_create(void)
{ {
opj_mutex_t* mutex = (opj_mutex_t*) opj_malloc(sizeof(opj_mutex_t)); opj_mutex_t* mutex = (opj_mutex_t*) opj_calloc(1U, sizeof(opj_mutex_t));
if( !mutex ) if( mutex != NULL ) {
return NULL; if ( pthread_mutex_init(&mutex->mutex, NULL) != 0) {
pthread_mutex_t pthr_mutex = PTHREAD_MUTEX_INITIALIZER; opj_free(mutex);
mutex->mutex = pthr_mutex; mutex = NULL;
}
}
return mutex; return mutex;
} }
@ -537,19 +539,24 @@ OPJ_BOOL opj_tls_set(opj_tls_t* tls, int key, void* value, opj_tls_free_func opj
{ {
opj_tls_key_val_t* new_key_val; opj_tls_key_val_t* new_key_val;
int i; int i;
if (tls->key_val_count == INT_MAX) {
return OPJ_FALSE;
}
for(i=0;i<tls->key_val_count;i++) for(i=0;i<tls->key_val_count;i++)
{ {
if( tls->key_val[i].key == key ) if( tls->key_val[i].key == key )
{ {
if( tls->key_val[i].opj_free_func ) if( tls->key_val[i].opj_free_func ) {
tls->key_val[i].opj_free_func(tls->key_val[i].value); tls->key_val[i].opj_free_func(tls->key_val[i].value);
}
tls->key_val[i].value = value; tls->key_val[i].value = value;
tls->key_val[i].opj_free_func = opj_free_func; tls->key_val[i].opj_free_func = opj_free_func;
return OPJ_TRUE; return OPJ_TRUE;
} }
} }
new_key_val = (opj_tls_key_val_t*) opj_realloc( tls->key_val, new_key_val = (opj_tls_key_val_t*) opj_realloc( tls->key_val,
(tls->key_val_count + 1) * sizeof(opj_tls_key_val_t) ); ((size_t)tls->key_val_count + 1U) * sizeof(opj_tls_key_val_t) );
if( !new_key_val ) if( !new_key_val )
return OPJ_FALSE; return OPJ_FALSE;
tls->key_val = new_key_val; tls->key_val = new_key_val;
@ -691,7 +698,7 @@ static OPJ_BOOL opj_thread_pool_setup(opj_thread_pool_t* tp, int num_threads)
if( tp->cond == NULL ) if( tp->cond == NULL )
return OPJ_FALSE; return OPJ_FALSE;
tp->worker_threads = (opj_worker_thread_t*) opj_calloc( num_threads, tp->worker_threads = (opj_worker_thread_t*) opj_calloc( (size_t)num_threads,
sizeof(opj_worker_thread_t) ); sizeof(opj_worker_thread_t) );
if( tp->worker_threads == NULL ) if( tp->worker_threads == NULL )
return OPJ_FALSE; return OPJ_FALSE;