Reworks of t1_updateflags to get rid of the shift operation. mqc_setcurctx moved...
authorFrancois-Olivier Devaux <fodevaux@users.noreply.github.com>
Tue, 21 Aug 2007 12:30:08 +0000 (12:30 +0000)
committerFrancois-Olivier Devaux <fodevaux@users.noreply.github.com>
Tue, 21 Aug 2007 12:30:08 +0000 (12:30 +0000)
ChangeLog
libopenjpeg/mqc.c
libopenjpeg/mqc.h
libopenjpeg/t1.c

index b8cfd6206121d79b3ded8a47524b8655bc6a76f7..dbb072e5242c1529b23dfffe7d6d8d2fef59ccaf 100644 (file)
--- 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
index a9d5456574327b47091d067289289e95a7ade0bd..9aa9d2c2e5b7145c13869b5c31394cbe88c19635 100644 (file)
@@ -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);
index a3d44b017c92549f464b6f220ec8b89d9dbc50db..d3c0c5c8b1ba8ad345108be065547ca292b5992d 100644 (file)
@@ -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
index 724ec04d0c23e25234c3582bd6af0d3f61162935..c815cff19ec22292bed4ca72099ff3f63428be1b 100644 (file)
@@ -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);