t1.c File Reference

#include "opj_includes.h"
#include "t1_luts.h"

Data Structures

struct  opj_t1_cblk_decode_processing_job_t

Defines

#define OPJ_SKIP_POISON
#define T1_FLAGS(x, y)   (t1->flags[x + 1 + ((y / 4) + 1) * (t1->w+2)])
#define opj_t1_setcurctx(curctx, ctxno)   curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
#define opj_t1_update_flags_macro(flags, flagsp, ci, s, stride, vsc)
#define opj_t1_dec_sigpass_step_mqc_macro(flags, flagsp, flags_stride, data, data_stride, ci, mqc, curctx, v, a, c, ct, oneplushalf, vsc)
#define opj_t1_dec_sigpass_mqc_internal(t1, bpno, vsc, w, h, flags_stride)
#define opj_t1_dec_refpass_step_mqc_macro(flags, data, data_stride, ci, mqc, curctx, v, a, c, ct, poshalf)
#define opj_t1_dec_refpass_mqc_internal(t1, bpno, w, h, flags_stride)
#define opj_t1_dec_clnpass_step_macro(check_flags, partial, flags, flagsp, flags_stride, data, data_stride, ci, mqc, curctx, v, a, c, ct, oneplushalf, vsc)
#define opj_t1_dec_clnpass_internal(t1, bpno, vsc, w, h, flags_stride)

Functions

static INLINE OPJ_UINT32 opj_t1_getctxtno_sc_or_spb_index (OPJ_UINT32 fX, OPJ_UINT32 pfX, OPJ_UINT32 nfX, OPJ_UINT32 ci)
static INLINE OPJ_BYTE opj_t1_getctxno_sc (OPJ_UINT32 lu)
static INLINE OPJ_BYTE opj_t1_getspb (OPJ_UINT32 lu)
static INLINE void opj_t1_enc_sigpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 ci, OPJ_UINT32 vsc)
 Encode significant pass.
static void opj_t1_dec_sigpass_mqc_64x64_novsc (opj_t1_t *t1, OPJ_INT32 bpno)
static void opj_t1_dec_sigpass_mqc_64x64_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
static void opj_t1_dec_sigpass_mqc_generic_novsc (opj_t1_t *t1, OPJ_INT32 bpno)
static void opj_t1_dec_sigpass_mqc_generic_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
static void opj_t1_dec_sigpass_mqc (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
static INLINE void opj_t1_enc_refpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 ci)
 Encode refinement pass step.
static void opj_t1_dec_refpass_mqc_64x64 (opj_t1_t *t1, OPJ_INT32 bpno)
static void opj_t1_dec_refpass_mqc_generic (opj_t1_t *t1, OPJ_INT32 bpno)
static void opj_t1_dec_refpass_mqc (opj_t1_t *t1, OPJ_INT32 bpno)
static void opj_t1_enc_clnpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_UINT32 agg, OPJ_UINT32 runlen, OPJ_UINT32 lim, OPJ_UINT32 cblksty)
 Encode clean-up pass step.
static void opj_t1_dec_clnpass_check_segsym (opj_t1_t *t1, OPJ_INT32 cblksty)
static void opj_t1_dec_clnpass_64x64_novsc (opj_t1_t *t1, OPJ_INT32 bpno)
static void opj_t1_dec_clnpass_64x64_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
static void opj_t1_dec_clnpass_generic_novsc (opj_t1_t *t1, OPJ_INT32 bpno)
static void opj_t1_dec_clnpass_generic_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
static void opj_t1_dec_clnpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
opj_t1_topj_t1_create (OPJ_BOOL isEncoder)
 Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder.
void opj_t1_destroy (opj_t1_t *p_t1)
 Destroys a previously created T1 handle.
static void opj_t1_destroy_wrapper (void *t1)
static void opj_t1_clbl_decode_processor (void *user_data, opj_tls_t *tls)
void opj_t1_decode_cblks (opj_tcd_t *tcd, volatile OPJ_BOOL *pret, opj_tcd_tilecomp_t *tilec, opj_tccp_t *tccp, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
 Decode the code-blocks of a tile.
OPJ_BOOL opj_t1_encode_cblks (opj_t1_t *t1, opj_tcd_tile_t *tile, opj_tcp_t *tcp, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
 Encode the code-blocks of a tile.
static int opj_t1_enc_is_term_pass (opj_tcd_cblk_enc_t *cblk, OPJ_UINT32 cblksty, OPJ_INT32 bpno, OPJ_UINT32 passtype)
Local static functions



static INLINE OPJ_BYTE opj_t1_getctxno_zc (opj_mqc_t *mqc, OPJ_UINT32 f)
static INLINE OPJ_UINT32 opj_t1_getctxno_mag (OPJ_UINT32 f)
static OPJ_INT16 opj_t1_getnmsedec_sig (OPJ_UINT32 x, OPJ_UINT32 bitpos)
static OPJ_INT16 opj_t1_getnmsedec_ref (OPJ_UINT32 x, OPJ_UINT32 bitpos)
static INLINE void opj_t1_update_flags (opj_flag_t *flagsp, OPJ_UINT32 ci, OPJ_UINT32 s, OPJ_UINT32 stride, OPJ_UINT32 vsc)
static INLINE void opj_t1_dec_sigpass_step_raw (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 vsc, OPJ_UINT32 row)
 Decode significant pass.
static INLINE void opj_t1_dec_sigpass_step_mqc (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 row, OPJ_UINT32 flags_stride, OPJ_UINT32 vsc)
static void opj_t1_enc_sigpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 cblksty)
 Encode significant pass.
static void opj_t1_dec_sigpass_raw (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
 Decode significant pass.
static void opj_t1_enc_refpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_BYTE type)
 Encode refinement pass.
static void opj_t1_dec_refpass_raw (opj_t1_t *t1, OPJ_INT32 bpno)
 Decode refinement pass.
static INLINE void opj_t1_dec_refpass_step_raw (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_UINT32 row)
 Decode refinement pass.
static INLINE void opj_t1_dec_refpass_step_mqc (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_UINT32 row)
static void opj_t1_dec_clnpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 row, OPJ_UINT32 vsc)
 Decode clean-up pass.
static void opj_t1_enc_clnpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_UINT32 cblksty)
 Encode clean-up pass.
static OPJ_FLOAT64 opj_t1_getwmsedec (OPJ_INT32 nmsedec, OPJ_UINT32 compno, OPJ_UINT32 level, OPJ_UINT32 orient, OPJ_INT32 bpno, OPJ_UINT32 qmfbid, OPJ_FLOAT64 stepsize, OPJ_UINT32 numcomps, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
 mod fixed_quality
static void opj_t1_encode_cblk (opj_t1_t *t1, opj_tcd_cblk_enc_t *cblk, OPJ_UINT32 orient, OPJ_UINT32 compno, OPJ_UINT32 level, OPJ_UINT32 qmfbid, OPJ_FLOAT64 stepsize, OPJ_UINT32 cblksty, OPJ_UINT32 numcomps, opj_tcd_tile_t *tile, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
 mod fixed_quality
static OPJ_BOOL opj_t1_decode_cblk (opj_t1_t *t1, opj_tcd_cblk_dec_t *cblk, OPJ_UINT32 orient, OPJ_UINT32 roishift, OPJ_UINT32 cblksty, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
 Decode 1 code-block.
static OPJ_BOOL opj_t1_allocate_buffers (opj_t1_t *t1, OPJ_UINT32 w, OPJ_UINT32 h)

Define Documentation

#define OPJ_SKIP_POISON
#define opj_t1_dec_clnpass_internal ( t1,
bpno,
vsc,
w,
h,
flags_stride   ) 
#define opj_t1_dec_clnpass_step_macro ( check_flags,
partial,
flags,
flagsp,
flags_stride,
data,
data_stride,
ci,
mqc,
curctx,
v,
a,
c,
ct,
oneplushalf,
vsc   ) 
Value:
{ \
    if ( !check_flags || !(flags & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci * 3U)))) {\
        do { \
            if( !partial ) { \
                OPJ_UINT32 ctxt1 = opj_t1_getctxno_zc(mqc, flags >> (ci * 3U)); \
                opj_t1_setcurctx(curctx, ctxt1); \
                opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
                if( !v ) \
                    break; \
            } \
            { \
                OPJ_UINT32 lu = opj_t1_getctxtno_sc_or_spb_index( \
                                    flags, flagsp[-1], flagsp[1], \
                                    ci); \
                opj_t1_setcurctx(curctx, opj_t1_getctxno_sc(lu)); \
                opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
                v = v ^ opj_t1_getspb(lu); \
                data[ci*data_stride] = v ? -oneplushalf : oneplushalf; \
                opj_t1_update_flags_macro(flags, flagsp, ci, v, flags_stride, vsc); \
            } \
        } while(0); \
    } \
}

Referenced by opj_t1_dec_clnpass_step().

#define opj_t1_dec_refpass_mqc_internal ( t1,
bpno,
w,
h,
flags_stride   ) 
#define opj_t1_dec_refpass_step_mqc_macro ( flags,
data,
data_stride,
ci,
mqc,
curctx,
v,
a,
c,
ct,
poshalf   ) 
Value:
{ \
    if ((flags & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci * 3U))) == \
            (T1_SIGMA_THIS << (ci * 3U))) { \
        OPJ_UINT32 ctxt = opj_t1_getctxno_mag(flags >> (ci * 3U)); \
        opj_t1_setcurctx(curctx, ctxt); \
        opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
        data[ci*data_stride] += (v ^ (data[ci*data_stride] < 0)) ? poshalf : -poshalf; \
        flags |= T1_MU_THIS << (ci * 3U); \
    } \
}

Referenced by opj_t1_dec_refpass_step_mqc().

#define opj_t1_dec_sigpass_mqc_internal ( t1,
bpno,
vsc,
w,
h,
flags_stride   ) 
#define opj_t1_dec_sigpass_step_mqc_macro ( flags,
flagsp,
flags_stride,
data,
data_stride,
ci,
mqc,
curctx,
v,
a,
c,
ct,
oneplushalf,
vsc   ) 
Value:
{ \
    if ((flags & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci * 3U))) == 0U && \
        (flags & (T1_SIGMA_NEIGHBOURS << (ci * 3U))) != 0U) { \
        OPJ_UINT32 ctxt1 = opj_t1_getctxno_zc(mqc, flags >> (ci * 3U)); \
        opj_t1_setcurctx(curctx, ctxt1); \
        opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
        if (v) { \
            OPJ_UINT32 lu = opj_t1_getctxtno_sc_or_spb_index( \
                                flags, \
                                flagsp[-1], flagsp[1], \
                                ci); \
            OPJ_UINT32 ctxt2 = opj_t1_getctxno_sc(lu); \
            OPJ_UINT32 spb = opj_t1_getspb(lu); \
            opj_t1_setcurctx(curctx, ctxt2); \
            opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
            v = v ^ spb; \
            data[ci*data_stride] = v ? -oneplushalf : oneplushalf; \
            opj_t1_update_flags_macro(flags, flagsp, ci, v, flags_stride, vsc); \
        } \
        flags |= T1_PI_THIS << (ci * 3U); \
    } \
}

Referenced by opj_t1_dec_sigpass_step_mqc().

#define opj_t1_update_flags_macro ( flags,
flagsp,
ci,
s,
stride,
vsc   ) 
Value:
{ \
    /* east */ \
    flagsp[-1] |= T1_SIGMA_5 << (3U * ci); \
 \
    /* mark target as significant */ \
    flags |= ((s << T1_CHI_1_I) | T1_SIGMA_4) << (3U * ci); \
 \
    /* west */ \
    flagsp[1] |= T1_SIGMA_3 << (3U * ci); \
 \
    /* north-west, north, north-east */ \
    if (ci == 0U && !(vsc)) { \
        opj_flag_t* north = flagsp - (stride); \
        *north |= (s << T1_CHI_5_I) | T1_SIGMA_16; \
        north[-1] |= T1_SIGMA_17; \
        north[1] |= T1_SIGMA_15; \
    } \
 \
    /* south-west, south, south-east */ \
    if (ci == 3U) { \
        opj_flag_t* south = flagsp + (stride); \
        *south |= (s << T1_CHI_0_I) | T1_SIGMA_1; \
        south[-1] |= T1_SIGMA_2; \
        south[1] |= T1_SIGMA_0; \
    } \
}

Referenced by opj_t1_update_flags().


Function Documentation

static void opj_t1_clbl_decode_processor ( void *  user_data,
opj_tls_t tls 
) [static]
static void opj_t1_dec_clnpass ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32  cblksty 
) [static]
static void opj_t1_dec_clnpass_64x64_novsc ( opj_t1_t t1,
OPJ_INT32  bpno 
) [static]
static void opj_t1_dec_clnpass_64x64_vsc ( opj_t1_t t1,
OPJ_INT32  bpno 
) [static]
static void opj_t1_dec_clnpass_check_segsym ( opj_t1_t t1,
OPJ_INT32  cblksty 
) [static]
static void opj_t1_dec_clnpass_generic_novsc ( opj_t1_t t1,
OPJ_INT32  bpno 
) [static]
static void opj_t1_dec_clnpass_generic_vsc ( opj_t1_t t1,
OPJ_INT32  bpno 
) [static]
static void opj_t1_dec_refpass_mqc ( opj_t1_t t1,
OPJ_INT32  bpno 
) [static]
static void opj_t1_dec_refpass_mqc_64x64 ( opj_t1_t t1,
OPJ_INT32  bpno 
) [static]
static void opj_t1_dec_refpass_mqc_generic ( opj_t1_t t1,
OPJ_INT32  bpno 
) [static]
static void opj_t1_dec_sigpass_mqc ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32  cblksty 
) [static]
static void opj_t1_dec_sigpass_mqc_64x64_novsc ( opj_t1_t t1,
OPJ_INT32  bpno 
) [static]
static void opj_t1_dec_sigpass_mqc_64x64_vsc ( opj_t1_t t1,
OPJ_INT32  bpno 
) [static]
static void opj_t1_dec_sigpass_mqc_generic_novsc ( opj_t1_t t1,
OPJ_INT32  bpno 
) [static]
static void opj_t1_dec_sigpass_mqc_generic_vsc ( opj_t1_t t1,
OPJ_INT32  bpno 
) [static]
static void opj_t1_destroy_wrapper ( void *  t1  )  [static]
static void opj_t1_enc_clnpass_step ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_INT32  bpno,
OPJ_INT32  one,
OPJ_INT32 nmsedec,
OPJ_UINT32  agg,
OPJ_UINT32  runlen,
OPJ_UINT32  lim,
OPJ_UINT32  cblksty 
) [static]
static int opj_t1_enc_is_term_pass ( opj_tcd_cblk_enc_t cblk,
OPJ_UINT32  cblksty,
OPJ_INT32  bpno,
OPJ_UINT32  passtype 
) [static]
static INLINE void opj_t1_enc_refpass_step ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_INT32  bpno,
OPJ_INT32  one,
OPJ_INT32 nmsedec,
OPJ_BYTE  type,
OPJ_UINT32  ci 
) [static]
static INLINE void opj_t1_enc_sigpass_step ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_INT32  bpno,
OPJ_INT32  one,
OPJ_INT32 nmsedec,
OPJ_BYTE  type,
OPJ_UINT32  ci,
OPJ_UINT32  vsc 
) [static]
static INLINE OPJ_BYTE opj_t1_getctxno_sc ( OPJ_UINT32  lu  )  [static]
static INLINE OPJ_UINT32 opj_t1_getctxtno_sc_or_spb_index ( OPJ_UINT32  fX,
OPJ_UINT32  pfX,
OPJ_UINT32  nfX,
OPJ_UINT32  ci 
) [static]
static INLINE OPJ_BYTE opj_t1_getspb ( OPJ_UINT32  lu  )  [static]

Generated on 20 Feb 2018 for OpenJPEG by  doxygen 1.6.1