75#include "jasper/jas_fix.h"
76#include "jasper/jas_math.h"
86#define JPC_NMSEDEC_BITS 7
87#define JPC_NMSEDEC_FRACBITS (JPC_NMSEDEC_BITS - 1)
94#define JPC_SEG_INVALID 0
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)
182extern int jpc_zcctxnolut[];
183extern int jpc_spblut[];
184extern int jpc_scctxnolut[];
185extern int jpc_magctxnolut[];
186extern jpc_fix_t jpc_refnmsedec[];
187extern jpc_fix_t jpc_signmsedec[];
188extern jpc_fix_t jpc_refnmsedec0[];
189extern jpc_fix_t jpc_signmsedec0[];
192extern jpc_mqctx_t jpc_mqctxs[];
199void jpc_initctxs(jpc_mqctx_t *ctxs);
202int jpc_getzcctxno(
int f,
int orient);
203#define JPC_GETZCCTXNO(f, orient) \
204 (jpc_zcctxnolut[((orient) << 8) | ((f) & JPC_OTHSIGMSK)])
207int jpc_getspb(
int f);
208#define JPC_GETSPB(f) \
209 (jpc_spblut[((f) & (JPC_PRIMSIGMSK | JPC_SGNMSK)) >> 4])
212int jpc_getscctxno(
int f);
213#define JPC_GETSCCTXNO(f) \
214 (jpc_scctxnolut[((f) & (JPC_PRIMSIGMSK | JPC_SGNMSK)) >> 4])
217int 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)
223jpc_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)
230jpc_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; \
276void jpc_initluts(
void);
279int JPC_NOMINALGAIN(
int qmfbid,
int numlvls,
int lvlno,
int orient);
282int JPC_PASSTYPE(
int passno);
285int JPC_SEGTYPE(
int passno,
int firstpassno,
int bypass);
288int JPC_SEGPASSCNT(
int passno,
int firstpassno,
int numpasses,
int bypass,
292int JPC_ISTERMINATED(
int passno,
int firstpassno,
int numpasses,
int termall,