85#define JPC_NMSEDEC_BITS        7 
   86#define JPC_NMSEDEC_FRACBITS    (JPC_NMSEDEC_BITS - 1) 
  118#define JPC_NESIG       0x0001 
  120#define JPC_SESIG       0x0002 
  122#define JPC_SWSIG       0x0004 
  124#define JPC_NWSIG       0x0008 
  126#define JPC_NSIG        0x0010 
  128#define JPC_ESIG        0x0020 
  130#define JPC_SSIG        0x0040 
  132#define JPC_WSIG        0x0080 
  134#define JPC_OTHSIGMSK \ 
  135        (JPC_NSIG | JPC_NESIG | JPC_ESIG | JPC_SESIG | JPC_SSIG | JPC_SWSIG | JPC_WSIG | JPC_NWSIG) 
  137#define JPC_PRIMSIGMSK  (JPC_NSIG | JPC_ESIG | JPC_SSIG | JPC_WSIG) 
  140#define JPC_NSGN        0x0100 
  142#define JPC_ESGN        0x0200 
  144#define JPC_SSGN        0x0400 
  146#define JPC_WSGN        0x0800 
  148#define JPC_SGNMSK      (JPC_NSGN | JPC_ESGN | JPC_SSGN | JPC_WSGN) 
  151#define JPC_SIG         0x1000 
  153#define JPC_REFINE      0x2000 
  155#define JPC_VISIT       0x4000 
  158#define JPC_NUMAGGCTXS  1 
  160#define JPC_NUMZCCTXS   9 
  162#define JPC_NUMMAGCTXS  3 
  164#define JPC_NUMSCCTXS   5 
  166#define JPC_NUMUCTXS    1 
  169#define JPC_AGGCTXNO    0 
  171#define JPC_ZCCTXNO             (JPC_AGGCTXNO + JPC_NUMAGGCTXS) 
  173#define JPC_MAGCTXNO    (JPC_ZCCTXNO + JPC_NUMZCCTXS) 
  175#define JPC_SCCTXNO             (JPC_MAGCTXNO + JPC_NUMMAGCTXS) 
  177#define JPC_UCTXNO              (JPC_SCCTXNO + JPC_NUMSCCTXS) 
  179#define JPC_NUMCTXS             (JPC_UCTXNO + JPC_NUMUCTXS) 
  187extern uint_least8_t jpc_zcctxnolut[];
 
  188extern bool jpc_spblut[];
 
  189extern uint_least8_t jpc_scctxnolut[];
 
  190extern uint_least8_t jpc_magctxnolut[];
 
  191extern jpc_fix_t jpc_refnmsedec[];
 
  192extern jpc_fix_t jpc_signmsedec[];
 
  193extern jpc_fix_t jpc_refnmsedec0[];
 
  194extern jpc_fix_t jpc_signmsedec0[];
 
  197extern jpc_mqctx_t jpc_mqctxs[];
 
  205static inline jpc_fix_t JPC_ASR(jpc_fix_t x, 
int n)
 
  214static inline uint_least8_t JPC_GETZCCTXNO(
unsigned f, 
enum jpc_tsfb_orient orient)
 
  216        return jpc_zcctxnolut[((unsigned)orient << 8) | (f & JPC_OTHSIGMSK)];
 
  221static inline bool JPC_GETSPB(
unsigned f)
 
  223        return jpc_spblut[(f & (JPC_PRIMSIGMSK | JPC_SGNMSK)) >> 4];
 
  228static inline uint_least8_t JPC_GETSCCTXNO(
unsigned f)
 
  230        return jpc_scctxnolut[(f & (JPC_PRIMSIGMSK | JPC_SGNMSK)) >> 4];
 
  235static inline uint_least8_t JPC_GETMAGCTXNO(
unsigned f)
 
  237        return jpc_magctxnolut[(f & JPC_OTHSIGMSK) | (((f & JPC_REFINE) != 0) << 11)];
 
  242static inline jpc_fix_t JPC_GETSIGNMSEDEC(jpc_fix_t x, 
int bitpos)
 
  244        return bitpos > JPC_NMSEDEC_FRACBITS
 
  245                ? jpc_signmsedec[JPC_ASR(x, bitpos - JPC_NMSEDEC_FRACBITS) & JAS_ONES(JPC_NMSEDEC_BITS)]
 
  246                : jpc_signmsedec0[JPC_ASR(x, bitpos - JPC_NMSEDEC_FRACBITS) & JAS_ONES(JPC_NMSEDEC_BITS)];
 
  251static inline jpc_fix_t JPC_GETREFNMSEDEC(jpc_fix_t x, 
int bitpos)
 
  253        return bitpos > JPC_NMSEDEC_FRACBITS
 
  254                ? jpc_refnmsedec[JPC_ASR(x, bitpos - JPC_NMSEDEC_FRACBITS) & JAS_ONES(JPC_NMSEDEC_BITS)]
 
  255                : jpc_refnmsedec0[JPC_ASR(x, bitpos - JPC_NMSEDEC_FRACBITS) & JAS_ONES(JPC_NMSEDEC_BITS)];
 
  259static inline void JPC_UPDATEFLAGS4(jpc_fix_t *fp, 
unsigned rowstep, 
bool s, 
bool vcausalflag)
 
  261        jpc_fix_t *np = fp - rowstep;
 
  262        jpc_fix_t *sp = fp + rowstep;
 
  267                        *sp |= JPC_NSIG | JPC_NSGN;
 
  268                        fp[-1] |= JPC_ESIG | JPC_ESGN;
 
  269                        fp[1] |= JPC_WSIG | JPC_WSGN;
 
  281                        *np |= JPC_SSIG | JPC_SSGN;
 
  282                        *sp |= JPC_NSIG | JPC_NSGN;
 
  283                        fp[-1] |= JPC_ESIG | JPC_ESGN;
 
  284                        fp[1] |= JPC_WSIG | JPC_WSGN;
 
  295void jpc_initluts(
void);
 
  297void jpc_initmqctxs(
void);
 
  301unsigned JPC_NOMINALGAIN(
unsigned qmfbid, 
unsigned numlvls, 
unsigned lvlno, 
enum jpc_tsfb_orient orient);
 
  305enum jpc_passtype JPC_PASSTYPE(
unsigned passno);
 
  309enum jpc_segtype JPC_SEGTYPE(
unsigned passno, 
unsigned firstpassno, 
bool bypass);
 
  313unsigned JPC_SEGPASSCNT(
unsigned passno, 
unsigned firstpassno, 
unsigned numpasses, 
bool bypass,
 
  318bool JPC_ISTERMINATED(
unsigned passno, 
unsigned firstpassno, 
unsigned numpasses, 
bool termall,