OpenJPEG  2.1.2
Data Structures | Macros | Typedefs
T1 - Implementation of the tier-1 coding

Data Structures

struct  opj_t1
 Tier-1 coding (coding of code-block coefficients) More...
 

Macros

#define T1_NMSEDEC_BITS   7
 
#define T1_SIG_NE   0x0001
 Context orientation : North-East direction. More...
 
#define T1_SIG_SE   0x0002
 Context orientation : South-East direction. More...
 
#define T1_SIG_SW   0x0004
 Context orientation : South-West direction. More...
 
#define T1_SIG_NW   0x0008
 Context orientation : North-West direction. More...
 
#define T1_SIG_N   0x0010
 Context orientation : North direction. More...
 
#define T1_SIG_E   0x0020
 Context orientation : East direction. More...
 
#define T1_SIG_S   0x0040
 Context orientation : South direction. More...
 
#define T1_SIG_W   0x0080
 Context orientation : West direction. More...
 
#define T1_SIG_OTH   (T1_SIG_N|T1_SIG_NE|T1_SIG_E|T1_SIG_SE|T1_SIG_S|T1_SIG_SW|T1_SIG_W|T1_SIG_NW)
 
#define T1_SIG_PRIM   (T1_SIG_N|T1_SIG_E|T1_SIG_S|T1_SIG_W)
 
#define T1_SGN_N   0x0100
 
#define T1_SGN_E   0x0200
 
#define T1_SGN_S   0x0400
 
#define T1_SGN_W   0x0800
 
#define T1_SGN   (T1_SGN_N|T1_SGN_E|T1_SGN_S|T1_SGN_W)
 
#define T1_SIG   0x1000
 
#define T1_REFINE   0x2000
 
#define T1_VISIT   0x4000
 
#define T1_NUMCTXS_ZC   9
 
#define T1_NUMCTXS_SC   5
 
#define T1_NUMCTXS_MAG   3
 
#define T1_NUMCTXS_AGG   1
 
#define T1_NUMCTXS_UNI   1
 
#define T1_CTXNO_ZC   0
 
#define T1_CTXNO_SC   (T1_CTXNO_ZC+T1_NUMCTXS_ZC)
 
#define T1_CTXNO_MAG   (T1_CTXNO_SC+T1_NUMCTXS_SC)
 
#define T1_CTXNO_AGG   (T1_CTXNO_MAG+T1_NUMCTXS_MAG)
 
#define T1_CTXNO_UNI   (T1_CTXNO_AGG+T1_NUMCTXS_AGG)
 
#define T1_NUMCTXS   (T1_CTXNO_UNI+T1_NUMCTXS_UNI)
 
#define T1_NMSEDEC_FRACBITS   (T1_NMSEDEC_BITS-1)
 
#define T1_TYPE_MQ   0
 Normal coding using entropy coder. More...
 
#define T1_TYPE_RAW   1
 No encoding the information is store under raw format in codestream (mode switch RAW) More...
 
#define MACRO_t1_flags(x, y)   t1->flags[((x)*(t1->flags_stride))+(y)]
 

Typedefs

typedef OPJ_INT16 opj_flag_t
 
typedef struct opj_t1 opj_t1_t
 Tier-1 coding (coding of code-block coefficients) More...
 

Local static functions

static INLINE OPJ_BYTE opj_t1_getctxno_zc (OPJ_UINT32 f, OPJ_UINT32 orient)
 
static OPJ_BYTE opj_t1_getctxno_sc (OPJ_UINT32 f)
 
static INLINE OPJ_UINT32 opj_t1_getctxno_mag (OPJ_UINT32 f)
 
static OPJ_BYTE opj_t1_getspb (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 void opj_t1_updateflags (opj_flag_t *flagsp, OPJ_UINT32 s, OPJ_UINT32 stride)
 
static void opj_t1_enc_sigpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_UINT32 orient, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 vsc)
 Encode significant pass. More...
 
static INLINE void opj_t1_dec_sigpass_step_raw (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 orient, OPJ_INT32 oneplushalf, OPJ_INT32 vsc)
 Decode significant pass. More...
 
static INLINE void opj_t1_dec_sigpass_step_mqc (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 orient, OPJ_INT32 oneplushalf)
 
static INLINE void opj_t1_dec_sigpass_step_mqc_vsc (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 orient, OPJ_INT32 oneplushalf, OPJ_INT32 vsc)
 
static void opj_t1_enc_sigpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_UINT32 orient, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 cblksty)
 Encode significant pass. More...
 
static void opj_t1_dec_sigpass_raw (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 orient, OPJ_INT32 cblksty)
 Decode significant pass. More...
 
static void opj_t1_dec_sigpass_mqc (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 orient)
 
static void opj_t1_dec_sigpass_mqc_vsc (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 orient)
 
static 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 vsc)
 Encode refinement pass. More...
 
static void opj_t1_enc_refpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 cblksty)
 Encode refinement pass. More...
 
static void opj_t1_dec_refpass_raw (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
 Decode refinement pass. More...
 
static void opj_t1_dec_refpass_mqc (opj_t1_t *t1, OPJ_INT32 bpno)
 
static void opj_t1_dec_refpass_mqc_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
 
static INLINE void opj_t1_dec_refpass_step_raw (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_INT32 neghalf, OPJ_INT32 vsc)
 Decode refinement pass. More...
 
static INLINE void opj_t1_dec_refpass_step_mqc (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_INT32 neghalf)
 
static INLINE void opj_t1_dec_refpass_step_mqc_vsc (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_INT32 neghalf, OPJ_INT32 vsc)
 
static void opj_t1_enc_clnpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_UINT32 orient, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_UINT32 partial, OPJ_UINT32 vsc)
 Encode clean-up pass. More...
 
static void opj_t1_dec_clnpass_step_partial (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 orient, OPJ_INT32 oneplushalf)
 Decode clean-up pass. More...
 
static void opj_t1_dec_clnpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 orient, OPJ_INT32 oneplushalf)
 
static void opj_t1_dec_clnpass_step_vsc (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 orient, OPJ_INT32 oneplushalf, OPJ_INT32 partial, OPJ_INT32 vsc)
 
static void opj_t1_enc_clnpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_UINT32 orient, OPJ_INT32 *nmsedec, OPJ_UINT32 cblksty)
 Encode clean-up pass. More...
 
static void opj_t1_dec_clnpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 orient, OPJ_INT32 cblksty)
 Decode clean-up pass. More...
 
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 More...
 
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 More...
 
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)
 Decode 1 code-block. More...
 
static OPJ_BOOL opj_t1_allocate_buffers (opj_t1_t *t1, OPJ_UINT32 w, OPJ_UINT32 h)
 

Exported functions

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. More...
 
OPJ_BOOL opj_t1_decode_cblks (opj_t1_t *t1, opj_tcd_tilecomp_t *tilec, opj_tccp_t *tccp)
 Decode the code-blocks of a tile. More...
 
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. More...
 
void opj_t1_destroy (opj_t1_t *p_t1)
 Destroys a previously created T1 handle. More...
 

Detailed Description

Macro Definition Documentation

#define MACRO_t1_flags (   x,
 
)    t1->flags[((x)*(t1->flags_stride))+(y)]
#define T1_CTXNO_AGG   (T1_CTXNO_MAG+T1_NUMCTXS_MAG)
#define T1_CTXNO_MAG   (T1_CTXNO_SC+T1_NUMCTXS_SC)

Referenced by opj_t1_getctxno_mag().

#define T1_CTXNO_SC   (T1_CTXNO_ZC+T1_NUMCTXS_ZC)

Referenced by t1_init_ctxno_sc().

#define T1_CTXNO_UNI   (T1_CTXNO_AGG+T1_NUMCTXS_AGG)
#define T1_CTXNO_ZC   0
#define T1_NMSEDEC_BITS   7
#define T1_NMSEDEC_FRACBITS   (T1_NMSEDEC_BITS-1)
#define T1_NUMCTXS   (T1_CTXNO_UNI+T1_NUMCTXS_UNI)
#define T1_NUMCTXS_AGG   1
#define T1_NUMCTXS_MAG   3
#define T1_NUMCTXS_SC   5
#define T1_NUMCTXS_UNI   1
#define T1_NUMCTXS_ZC   9
#define T1_REFINE   0x2000
#define T1_SGN   (T1_SGN_N|T1_SGN_E|T1_SGN_S|T1_SGN_W)
#define T1_SGN_E   0x0200
#define T1_SGN_N   0x0100
#define T1_SGN_S   0x0400
#define T1_SGN_W   0x0800
#define T1_SIG   0x1000
#define T1_SIG_E   0x0020

Context orientation : East direction.

Referenced by opj_t1_updateflags(), t1_init_ctxno_sc(), t1_init_ctxno_zc(), and t1_init_spb().

#define T1_SIG_N   0x0010

Context orientation : North direction.

Referenced by opj_t1_updateflags(), t1_init_ctxno_sc(), t1_init_ctxno_zc(), and t1_init_spb().

#define T1_SIG_NE   0x0001

Context orientation : North-East direction.

Referenced by opj_t1_updateflags(), and t1_init_ctxno_zc().

#define T1_SIG_NW   0x0008

Context orientation : North-West direction.

Referenced by opj_t1_updateflags(), and t1_init_ctxno_zc().

#define T1_SIG_PRIM   (T1_SIG_N|T1_SIG_E|T1_SIG_S|T1_SIG_W)
#define T1_SIG_S   0x0040
#define T1_SIG_SE   0x0002
#define T1_SIG_SW   0x0004
#define T1_SIG_W   0x0080

Context orientation : West direction.

Referenced by opj_t1_updateflags(), t1_init_ctxno_sc(), t1_init_ctxno_zc(), and t1_init_spb().

#define T1_TYPE_MQ   0

Normal coding using entropy coder.

Referenced by opj_t1_decode_cblk(), and opj_t1_encode_cblk().

#define T1_TYPE_RAW   1

No encoding the information is store under raw format in codestream (mode switch RAW)

Referenced by opj_t1_decode_cblk(), opj_t1_enc_refpass_step(), opj_t1_enc_sigpass_step(), and opj_t1_encode_cblk().

#define T1_VISIT   0x4000

Typedef Documentation

typedef struct opj_t1 opj_t1_t

Tier-1 coding (coding of code-block coefficients)

Function Documentation

static OPJ_BOOL opj_t1_allocate_buffers ( opj_t1_t t1,
OPJ_UINT32  w,
OPJ_UINT32  h 
)
static
opj_t1_t* opj_t1_create ( OPJ_BOOL  isEncoder)

Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder.

Returns
a new T1 handle if successful, returns NULL otherwise

References opj_t1::encoder, opj_t1::mqc, opj_calloc(), opj_mqc_create(), opj_raw_create(), opj_t1_destroy(), and opj_t1::raw.

Referenced by opj_tcd_t1_decode(), and opj_tcd_t1_encode().

static void opj_t1_dec_clnpass ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32  orient,
OPJ_INT32  cblksty 
)
static
static void opj_t1_dec_clnpass_step ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_INT32  orient,
OPJ_INT32  oneplushalf 
)
static
static void opj_t1_dec_clnpass_step_partial ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_INT32  orient,
OPJ_INT32  oneplushalf 
)
static
static void opj_t1_dec_clnpass_step_vsc ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_INT32  orient,
OPJ_INT32  oneplushalf,
OPJ_INT32  partial,
OPJ_INT32  vsc 
)
static
static void opj_t1_dec_refpass_mqc ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static
static void opj_t1_dec_refpass_mqc_vsc ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static
static void opj_t1_dec_refpass_raw ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32  cblksty 
)
static
static INLINE void opj_t1_dec_refpass_step_mqc ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_INT32  poshalf,
OPJ_INT32  neghalf 
)
static
static INLINE void opj_t1_dec_refpass_step_mqc_vsc ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_INT32  poshalf,
OPJ_INT32  neghalf,
OPJ_INT32  vsc 
)
static
static INLINE void opj_t1_dec_refpass_step_raw ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_INT32  poshalf,
OPJ_INT32  neghalf,
OPJ_INT32  vsc 
)
static

Decode refinement pass.

References opj_raw_decode(), opj_t1::raw, T1_REFINE, T1_SGN_S, T1_SIG, T1_SIG_S, T1_SIG_SE, T1_SIG_SW, and T1_VISIT.

Referenced by opj_t1_dec_refpass_raw().

static void opj_t1_dec_sigpass_mqc ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32  orient 
)
static
static void opj_t1_dec_sigpass_mqc_vsc ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32  orient 
)
static
static void opj_t1_dec_sigpass_raw ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32  orient,
OPJ_INT32  cblksty 
)
static
static INLINE void opj_t1_dec_sigpass_step_mqc ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_INT32  orient,
OPJ_INT32  oneplushalf 
)
static
static INLINE void opj_t1_dec_sigpass_step_mqc_vsc ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_INT32  orient,
OPJ_INT32  oneplushalf,
OPJ_INT32  vsc 
)
static
static INLINE void opj_t1_dec_sigpass_step_raw ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_INT32  orient,
OPJ_INT32  oneplushalf,
OPJ_INT32  vsc 
)
static
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 
)
static
OPJ_BOOL opj_t1_decode_cblks ( opj_t1_t t1,
opj_tcd_tilecomp_t tilec,
opj_tccp_t tccp 
)
void opj_t1_destroy ( opj_t1_t p_t1)

Destroys a previously created T1 handle.

Parameters
p_t1Tier 1 handle to destroy

References opj_t1::data, opj_t1::encoder, opj_t1::flags, opj_t1::mqc, opj_aligned_free(), opj_free(), opj_mqc_destroy(), opj_raw_destroy(), and opj_t1::raw.

Referenced by opj_t1_create(), opj_tcd_t1_decode(), and opj_tcd_t1_encode().

static void opj_t1_enc_clnpass ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_UINT32  orient,
OPJ_INT32 nmsedec,
OPJ_UINT32  cblksty 
)
static
static void opj_t1_enc_clnpass_step ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_UINT32  orient,
OPJ_INT32  bpno,
OPJ_INT32  one,
OPJ_INT32 nmsedec,
OPJ_UINT32  partial,
OPJ_UINT32  vsc 
)
static
static void opj_t1_enc_refpass ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32 nmsedec,
OPJ_BYTE  type,
OPJ_UINT32  cblksty 
)
static
static 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  vsc 
)
static
static void opj_t1_enc_sigpass ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_UINT32  orient,
OPJ_INT32 nmsedec,
OPJ_BYTE  type,
OPJ_UINT32  cblksty 
)
static
static void opj_t1_enc_sigpass_step ( opj_t1_t t1,
opj_flag_t flagsp,
OPJ_INT32 datap,
OPJ_UINT32  orient,
OPJ_INT32  bpno,
OPJ_INT32  one,
OPJ_INT32 nmsedec,
OPJ_BYTE  type,
OPJ_UINT32  vsc 
)
static
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 
)
static
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 
)
static OPJ_UINT32 opj_t1_getctxno_mag ( OPJ_UINT32  f)
static
static OPJ_BYTE opj_t1_getctxno_sc ( OPJ_UINT32  f)
static
static OPJ_BYTE opj_t1_getctxno_zc ( OPJ_UINT32  f,
OPJ_UINT32  orient 
)
static
static OPJ_INT16 opj_t1_getnmsedec_ref ( OPJ_UINT32  x,
OPJ_UINT32  bitpos 
)
static
static OPJ_INT16 opj_t1_getnmsedec_sig ( OPJ_UINT32  x,
OPJ_UINT32  bitpos 
)
static
static OPJ_BYTE opj_t1_getspb ( OPJ_UINT32  f)
static
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 
)
static

mod fixed_quality

References OPJ_ARG_NOT_USED, opj_dwt_getnorm(), and opj_dwt_getnorm_real().

Referenced by opj_t1_encode_cblk().

static void opj_t1_updateflags ( opj_flag_t flagsp,
OPJ_UINT32  s,
OPJ_UINT32  stride 
)
static