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,