75 #include "jasper/jas_fix.h"    76 #include "jasper/jas_math.h"    78 #include "jpc_mqcod.h"    86 #define JPC_NMSEDEC_BITS        7    87 #define JPC_NMSEDEC_FRACBITS    (JPC_NMSEDEC_BITS - 1)    94 #define JPC_SEG_INVALID 0   104 #define JPC_SIGPASS     0          105 #define JPC_REFPASS     1          106 #define JPC_CLNPASS     2          113 #define JPC_NESIG       0x0001   115 #define JPC_SESIG       0x0002   117 #define JPC_SWSIG       0x0004   119 #define JPC_NWSIG       0x0008   121 #define JPC_NSIG        0x0010   123 #define JPC_ESIG        0x0020   125 #define JPC_SSIG        0x0040   127 #define JPC_WSIG        0x0080   129 #define JPC_OTHSIGMSK \   130         (JPC_NSIG | JPC_NESIG | JPC_ESIG | JPC_SESIG | JPC_SSIG | JPC_SWSIG | JPC_WSIG | JPC_NWSIG)   132 #define JPC_PRIMSIGMSK  (JPC_NSIG | JPC_ESIG | JPC_SSIG | JPC_WSIG)   135 #define JPC_NSGN        0x0100   137 #define JPC_ESGN        0x0200   139 #define JPC_SSGN        0x0400   141 #define JPC_WSGN        0x0800   143 #define JPC_SGNMSK      (JPC_NSGN | JPC_ESGN | JPC_SSGN | JPC_WSGN)   146 #define JPC_SIG         0x1000   148 #define JPC_REFINE      0x2000   150 #define JPC_VISIT       0x4000   153 #define JPC_NUMAGGCTXS  1   155 #define JPC_NUMZCCTXS   9   157 #define JPC_NUMMAGCTXS  3   159 #define JPC_NUMSCCTXS   5   161 #define JPC_NUMUCTXS    1   164 #define JPC_AGGCTXNO    0   166 #define JPC_ZCCTXNO             (JPC_AGGCTXNO + JPC_NUMAGGCTXS)   168 #define JPC_MAGCTXNO    (JPC_ZCCTXNO + JPC_NUMZCCTXS)   170 #define JPC_SCCTXNO             (JPC_MAGCTXNO + JPC_NUMMAGCTXS)   172 #define JPC_UCTXNO              (JPC_SCCTXNO + JPC_NUMSCCTXS)   174 #define JPC_NUMCTXS             (JPC_UCTXNO + JPC_NUMUCTXS)   182 extern int jpc_zcctxnolut[];
   183 extern int jpc_spblut[];
   184 extern int jpc_scctxnolut[];
   185 extern int jpc_magctxnolut[];
   186 extern jpc_fix_t jpc_refnmsedec[];
   187 extern jpc_fix_t jpc_signmsedec[];
   188 extern jpc_fix_t jpc_refnmsedec0[];
   189 extern jpc_fix_t jpc_signmsedec0[];
   192 extern jpc_mqctx_t jpc_mqctxs[];
   199 void jpc_initctxs(jpc_mqctx_t *ctxs);
   202 int jpc_getzcctxno(
int f, 
int orient);
   203 #define JPC_GETZCCTXNO(f, orient) \   204         (jpc_zcctxnolut[((orient) << 8) | ((f) & JPC_OTHSIGMSK)])   207 int jpc_getspb(
int f);
   208 #define JPC_GETSPB(f) \   209         (jpc_spblut[((f) & (JPC_PRIMSIGMSK | JPC_SGNMSK)) >> 4])   212 int jpc_getscctxno(
int f);
   213 #define JPC_GETSCCTXNO(f) \   214         (jpc_scctxnolut[((f) & (JPC_PRIMSIGMSK | JPC_SGNMSK)) >> 4])   217 int jpc_getmagctxno(
int f);
   218 #define JPC_GETMAGCTXNO(f) \   219         (jpc_magctxnolut[((f) & JPC_OTHSIGMSK) | ((((f) & JPC_REFINE) != 0) << 11)])   222 #define JPC_GETSIGNMSEDEC(x, bitpos)    jpc_getsignmsedec_macro(x, bitpos)   223 jpc_fix_t jpc_getsignmsedec_func(jpc_fix_t x, 
int bitpos);
   224 #define jpc_getsignmsedec_macro(x, bitpos) \   225         ((bitpos > JPC_NMSEDEC_FRACBITS) ? jpc_signmsedec[JPC_ASR(x, bitpos - JPC_NMSEDEC_FRACBITS) & JAS_ONES(JPC_NMSEDEC_BITS)] : \   226           (jpc_signmsedec0[JPC_ASR(x, bitpos - JPC_NMSEDEC_FRACBITS) & JAS_ONES(JPC_NMSEDEC_BITS)]))   229 #define JPC_GETREFNMSEDEC(x, bitpos)    jpc_getrefnmsedec_macro(x, bitpos)   230 jpc_fix_t jpc_refsignmsedec_func(jpc_fix_t x, 
int bitpos);
   231 #define jpc_getrefnmsedec_macro(x, bitpos) \   232         ((bitpos > JPC_NMSEDEC_FRACBITS) ? jpc_refnmsedec[JPC_ASR(x, bitpos - JPC_NMSEDEC_FRACBITS) & JAS_ONES(JPC_NMSEDEC_BITS)] : \   233           (jpc_refnmsedec0[JPC_ASR(x, bitpos - JPC_NMSEDEC_FRACBITS) & JAS_ONES(JPC_NMSEDEC_BITS)]))   236 #define JPC_ASR(x, n) \   237         (((n) >= 0) ? ((x) >> (n)) : ((x) << (-(n))))   240 #define JPC_UPDATEFLAGS4(fp, rowstep, s, vcausalflag) \   242         register jpc_fix_t *np = (fp) - (rowstep); \   243         register jpc_fix_t *sp = (fp) + (rowstep); \   244         if ((vcausalflag)) { \   245                 sp[-1] |= JPC_NESIG; \   246                 sp[1] |= JPC_NWSIG; \   248                         *sp |= JPC_NSIG | JPC_NSGN; \   249                         (fp)[-1] |= JPC_ESIG | JPC_ESGN; \   250                         (fp)[1] |= JPC_WSIG | JPC_WSGN; \   253                         (fp)[-1] |= JPC_ESIG; \   254                         (fp)[1] |= JPC_WSIG; \   257                 np[-1] |= JPC_SESIG; \   258                 np[1] |= JPC_SWSIG; \   259                 sp[-1] |= JPC_NESIG; \   260                 sp[1] |= JPC_NWSIG; \   262                         *np |= JPC_SSIG | JPC_SSGN; \   263                         *sp |= JPC_NSIG | JPC_NSGN; \   264                         (fp)[-1] |= JPC_ESIG | JPC_ESGN; \   265                         (fp)[1] |= JPC_WSIG | JPC_WSGN; \   269                         (fp)[-1] |= JPC_ESIG; \   270                         (fp)[1] |= JPC_WSIG; \   276 void jpc_initluts(
void);
   279 int JPC_NOMINALGAIN(
int qmfbid, 
int numlvls, 
int lvlno, 
int orient);
   282 int JPC_PASSTYPE(
int passno);
   285 int JPC_SEGTYPE(
int passno, 
int firstpassno, 
int bypass);
   288 int JPC_SEGPASSCNT(
int passno, 
int firstpassno, 
int numpasses, 
int bypass,
   292 int JPC_ISTERMINATED(
int passno, 
int firstpassno, 
int numpasses, 
int termall,