From d4d23c7eb56203d620b888fc67316e47ca9b20ca Mon Sep 17 00:00:00 2001 From: Francois-Olivier Devaux Date: Tue, 21 Aug 2007 12:30:08 +0000 Subject: [PATCH] Reworks of t1_updateflags to get rid of the shift operation. mqc_setcurctx moved to the header to allow it to be inlined into the t1. --- ChangeLog | 2 ++ libopenjpeg/mqc.c | 4 ---- libopenjpeg/mqc.h | 2 +- libopenjpeg/t1.c | 20 ++++++++------------ 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index b8cfd620..dbb072e5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,8 @@ August 21, 2007 * [Callum Lerwick] Minor cleanup patch, that gets rid of a bunch of "old style declaration" warnings from Intel's compiler * [Callum Lerwick] Aligned malloc using Intel's _mm_malloc(). Cleanup on the t1 memory allocation, getting rid of some leftover debug code * [Callum Lerwick] Memory leaks fixed +* [Callum Lerwick] Reworks of t1_updateflags to get rid of the shift operation +* [Callum Lerwick] mqc_setcurctx moved to the header to allow it to be inlined into the t1. August 20, 2007 + [FOD] Added support for the TGA file format in the codec diff --git a/libopenjpeg/mqc.c b/libopenjpeg/mqc.c index a9d54565..9aa9d2c2 100644 --- a/libopenjpeg/mqc.c +++ b/libopenjpeg/mqc.c @@ -371,10 +371,6 @@ void mqc_init_enc(opj_mqc_t *mqc, unsigned char *bp) { mqc->start = bp; } -void mqc_setcurctx(opj_mqc_t *mqc, int ctxno) { - mqc->curctx = &mqc->ctxs[ctxno]; -} - void mqc_encode(opj_mqc_t *mqc, int d) { if ((*mqc->curctx)->mps == d) { mqc_codemps(mqc); diff --git a/libopenjpeg/mqc.h b/libopenjpeg/mqc.h index a3d44b01..d3c0c5c8 100644 --- a/libopenjpeg/mqc.h +++ b/libopenjpeg/mqc.h @@ -116,7 +116,7 @@ Set the current context used for coding/decoding @param mqc MQC handle @param ctxno Number that identifies the context */ -void mqc_setcurctx(opj_mqc_t *mqc, int ctxno); +#define mqc_setcurctx(mqc, ctxno) (mqc)->curctx = &(mqc)->ctxs[(int)(ctxno)] /** Encode a symbol using the MQ-coder @param mqc MQC handle diff --git a/libopenjpeg/t1.c b/libopenjpeg/t1.c index 724ec04d..c815cff1 100644 --- a/libopenjpeg/t1.c +++ b/libopenjpeg/t1.c @@ -261,21 +261,22 @@ static void t1_updateflags(flag_t *flagsp, int s, int stride) { flag_t *sp = flagsp + stride; static const flag_t mod[] = { - T1_SIG_S, T1_SIG_N, T1_SIG_E, T1_SIG_W, - T1_SIG_S | T1_SGN_S, T1_SIG_N | T1_SGN_N, T1_SIG_E | T1_SGN_E, T1_SIG_W | T1_SGN_W + T1_SIG_S, T1_SIG_S|T1_SGN_S, + T1_SIG_E, T1_SIG_E|T1_SGN_E, + T1_SIG_W, T1_SIG_W|T1_SGN_W, + T1_SIG_N, T1_SIG_N|T1_SGN_N }; - s <<= 2; - np[-1] |= T1_SIG_SE; np[0] |= mod[s]; np[1] |= T1_SIG_SW; flagsp[-1] |= mod[s+2]; - flagsp[1] |= mod[s+3]; + flagsp[0] |= T1_SIG; + flagsp[1] |= mod[s+4]; sp[-1] |= T1_SIG_NE; - sp[0] |= mod[s+1]; + sp[0] |= mod[s+6]; sp[1] |= T1_SIG_NW; } @@ -315,7 +316,6 @@ static void t1_enc_sigpass_step( mqc_encode(mqc, v ^ t1_getspb(flag)); } t1_updateflags(flagsp, v, t1->flags_stride); - *flagsp |= T1_SIG; } *flagsp |= T1_VISIT; } @@ -342,7 +342,6 @@ static void t1_dec_sigpass_step( v = raw_decode(raw); /* ESSAI */ *datap = v ? -oneplushalf : oneplushalf; t1_updateflags(flagsp, v, t1->flags_stride); - *flagsp |= T1_SIG; } } else { mqc_setcurctx(mqc, t1_getctxno_zc(flag, orient)); @@ -351,7 +350,6 @@ static void t1_dec_sigpass_step( v = mqc_decode(mqc) ^ t1_getspb(flag); *datap = v ? -oneplushalf : oneplushalf; t1_updateflags(flagsp, v, t1->flags_stride); - *flagsp |= T1_SIG; } } *flagsp |= T1_VISIT; @@ -560,7 +558,6 @@ LABEL_PARTIAL: v = *datap < 0 ? 1 : 0; mqc_encode(mqc, v ^ t1_getspb(flag)); t1_updateflags(flagsp, v, t1->flags_stride); - *flagsp |= T1_SIG; } } *flagsp &= ~T1_VISIT; @@ -591,7 +588,6 @@ LABEL_PARTIAL: v = mqc_decode(mqc) ^ t1_getspb(flag); *datap = v ? -oneplushalf : oneplushalf; t1_updateflags(flagsp, v, t1->flags_stride); - *flagsp |= T1_SIG; } } *flagsp &= ~T1_VISIT; @@ -777,7 +773,7 @@ static bool allocate_buffers( memset(t1->data,0,datasize * sizeof(int)); t1->flags_stride=w+2; - flagssize = t1->flags_stride * (h+2); + flagssize=t1->flags_stride * (h+2); if(flagssize > t1->flagssize){ opj_aligned_free(t1->flags);