OpenJPEG  2.5.0
Data Structures | Macros
t1.c File Reference
#include "opj_includes.h"
#include "t1_luts.h"

Data Structures

struct  opj_t1_cblk_decode_processing_job_t
 
struct  opj_t1_cblk_encode_processing_job_t
 

Macros

#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_smr_abs(x)   (((OPJ_UINT32)(x)) & 0x7FFFFFFFU)
 
#define opj_smr_sign(x)   (((OPJ_UINT32)(x)) >> 31)
 
#define opj_to_smr(x)   ((x) >= 0 ? (OPJ_UINT32)(x) : ((OPJ_UINT32)(-x) | 0x80000000U))
 

Local static functions

#define opj_t1_update_flags_macro(flags, flagsp, ci, s, stride, vsc)
 
#define opj_t1_enc_sigpass_step_macro(mqc, curctx, a, c, ct, flagspIn, datapIn, bpno, one, nmsedec, type, ciIn, vscIn)
 Encode significant pass. More...
 
#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_enc_refpass_step_macro(mqc, curctx, a, c, ct, flags, flagsUpdated, datap, bpno, one, nmsedec, type, ci)
 Encode refinement pass step. More...
 
#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_enc_clnpass_step_macro(mqc, curctx, a, c, ct, flagspIn, datapIn, bpno, one, nmsedec, agg, runlen, lim, cblksty)
 Encode clean-up pass step. More...
 
#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)
 
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. More...
 
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. More...
 
static void opj_t1_dec_sigpass_raw (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
 Decode significant pass. More...
 
static void opj_t1_enc_refpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_BYTE type)
 Encode refinement pass. More...
 
static void opj_t1_dec_refpass_raw (opj_t1_t *t1, OPJ_INT32 bpno)
 Decode refinement pass. More...
 
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. 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_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. More...
 
static void opj_t1_enc_clnpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_UINT32 cblksty)
 Encode 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 double 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, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
 Return "cumwmsedec" that should be used to increase tile->distotile. 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, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
 Decode 1 code-block. More...
 
OPJ_BOOL opj_t1_ht_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 HT code-block. More...
 
static OPJ_BOOL opj_t1_allocate_buffers (opj_t1_t *t1, OPJ_UINT32 w, OPJ_UINT32 h)
 
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 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 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_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. More...
 
void opj_t1_destroy (opj_t1_t *p_t1)
 Destroys a previously created T1 handle. More...
 
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. More...
 
static void opj_t1_cblk_encode_processor (void *user_data, opj_tls_t *tls)
 Procedure to deal with a asynchronous code-block encoding job. More...
 
OPJ_BOOL opj_t1_encode_cblks (opj_tcd_t *tcd, 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...
 
static int opj_t1_enc_is_term_pass (opj_tcd_cblk_enc_t *cblk, OPJ_UINT32 cblksty, OPJ_INT32 bpno, OPJ_UINT32 passtype)
 

Macro Definition Documentation

◆ OPJ_SKIP_POISON

#define OPJ_SKIP_POISON

◆ opj_smr_abs

#define opj_smr_abs (   x)    (((OPJ_UINT32)(x)) & 0x7FFFFFFFU)

◆ opj_smr_sign

#define opj_smr_sign (   x)    (((OPJ_UINT32)(x)) >> 31)

◆ opj_t1_dec_clnpass_internal

#define opj_t1_dec_clnpass_internal (   t1,
  bpno,
  vsc,
  w,
  h,
  flags_stride 
)

◆ opj_t1_dec_clnpass_step_macro

#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; \
} \
{ \
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); \
} \
}

◆ opj_t1_dec_refpass_mqc_internal

#define opj_t1_dec_refpass_mqc_internal (   t1,
  bpno,
  w,
  h,
  flags_stride 
)

◆ opj_t1_dec_refpass_step_mqc_macro

#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); \
} \
}

◆ opj_t1_dec_sigpass_mqc_internal

#define opj_t1_dec_sigpass_mqc_internal (   t1,
  bpno,
  vsc,
  w,
  h,
  flags_stride 
)

◆ opj_t1_dec_sigpass_step_mqc_macro

#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) { \
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); \
} \
}

◆ opj_t1_enc_clnpass_step_macro

#define opj_t1_enc_clnpass_step_macro (   mqc,
  curctx,
  a,
  c,
  ct,
  flagspIn,
  datapIn,
  bpno,
  one,
  nmsedec,
  agg,
  runlen,
  lim,
  cblksty 
)

Encode clean-up pass step.

◆ opj_t1_enc_refpass_step_macro

#define opj_t1_enc_refpass_step_macro (   mqc,
  curctx,
  a,
  c,
  ct,
  flags,
  flagsUpdated,
  datap,
  bpno,
  one,
  nmsedec,
  type,
  ci 
)
Value:
{\
OPJ_UINT32 v; \
if ((flags & ((T1_SIGMA_THIS | T1_PI_THIS) << ((ci) * 3U))) == (T1_SIGMA_THIS << ((ci) * 3U))) { \
const OPJ_UINT32 shift_flags = (flags >> ((ci) * 3U)); \
OPJ_UINT32 ctxt = opj_t1_getctxno_mag(shift_flags); \
OPJ_UINT32 abs_data = opj_smr_abs(*datap); \
*nmsedec += opj_t1_getnmsedec_ref(abs_data, \
(OPJ_UINT32)bpno); \
v = ((OPJ_INT32)abs_data & one) ? 1 : 0; \
/* #ifdef DEBUG_ENC_REF */ \
/* fprintf(stderr, " ctxt=%d\n", ctxt); */ \
/* #endif */ \
opj_t1_setcurctx(curctx, ctxt); \
if (type == T1_TYPE_RAW) { /* BYPASS/LAZY MODE */ \
opj_mqc_bypass_enc_macro(mqc, c, ct, v); \
} else { \
opj_mqc_encode_macro(mqc, curctx, a, c, ct, v); \
} \
flagsUpdated |= T1_MU_THIS << ((ci) * 3U); \
} \
}

Encode refinement pass step.

◆ opj_t1_enc_sigpass_step_macro

#define opj_t1_enc_sigpass_step_macro (   mqc,
  curctx,
  a,
  c,
  ct,
  flagspIn,
  datapIn,
  bpno,
  one,
  nmsedec,
  type,
  ciIn,
  vscIn 
)

Encode significant pass.

◆ opj_t1_setcurctx

#define opj_t1_setcurctx (   curctx,
  ctxno 
)    curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]

◆ opj_t1_update_flags_macro

#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; \
} \
}

◆ opj_to_smr

#define opj_to_smr (   x)    ((x) >= 0 ? (OPJ_UINT32)(x) : ((OPJ_UINT32)(-x) | 0x80000000U))

◆ T1_FLAGS

#define T1_FLAGS (   x,
 
)    (t1->flags[x + 1 + ((y / 4) + 1) * (t1->w+2)])

Function Documentation

◆ opj_t1_allocate_buffers()

static OPJ_BOOL opj_t1_allocate_buffers ( opj_t1_t t1,
OPJ_UINT32  w,
OPJ_UINT32  h 
)
static

◆ opj_t1_cblk_encode_processor()

static void opj_t1_cblk_encode_processor ( void *  user_data,
opj_tls_t tls 
)
static

◆ opj_t1_clbl_decode_processor()

static void opj_t1_clbl_decode_processor ( void *  user_data,
opj_tls_t tls 
)
static

◆ opj_t1_create()

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, and opj_calloc().

Referenced by opj_t1_cblk_encode_processor(), and opj_t1_clbl_decode_processor().

◆ opj_t1_dec_clnpass()

static void opj_t1_dec_clnpass ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32  cblksty 
)
static

◆ opj_t1_dec_clnpass_64x64_novsc()

static void opj_t1_dec_clnpass_64x64_novsc ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static

◆ opj_t1_dec_clnpass_64x64_vsc()

static void opj_t1_dec_clnpass_64x64_vsc ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static

◆ opj_t1_dec_clnpass_check_segsym()

static void opj_t1_dec_clnpass_check_segsym ( opj_t1_t t1,
OPJ_INT32  cblksty 
)
static

◆ opj_t1_dec_clnpass_generic_novsc()

static void opj_t1_dec_clnpass_generic_novsc ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static

◆ opj_t1_dec_clnpass_generic_vsc()

static void opj_t1_dec_clnpass_generic_vsc ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static

◆ opj_t1_dec_clnpass_step()

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 
)
static

◆ opj_t1_dec_refpass_mqc()

static void opj_t1_dec_refpass_mqc ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static

◆ opj_t1_dec_refpass_mqc_64x64()

static void opj_t1_dec_refpass_mqc_64x64 ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static

◆ opj_t1_dec_refpass_mqc_generic()

static void opj_t1_dec_refpass_mqc_generic ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static

◆ opj_t1_dec_refpass_raw()

static void opj_t1_dec_refpass_raw ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static

Decode refinement pass.

References opj_t1::data, opj_t1::h, opj_t1_dec_refpass_step_raw(), T1_FLAGS, and opj_t1::w.

Referenced by opj_t1_decode_cblk().

◆ opj_t1_dec_refpass_step_mqc()

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

◆ opj_t1_dec_refpass_step_raw()

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 
)
static

Decode refinement pass.

References opj_t1::mqc, opj_mqc_raw_decode(), T1_MU_THIS, T1_PI_THIS, and T1_SIGMA_THIS.

Referenced by opj_t1_dec_refpass_raw().

◆ opj_t1_dec_sigpass_mqc()

static void opj_t1_dec_sigpass_mqc ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32  cblksty 
)
static

◆ opj_t1_dec_sigpass_mqc_64x64_novsc()

static void opj_t1_dec_sigpass_mqc_64x64_novsc ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static

◆ opj_t1_dec_sigpass_mqc_64x64_vsc()

static void opj_t1_dec_sigpass_mqc_64x64_vsc ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static

◆ opj_t1_dec_sigpass_mqc_generic_novsc()

static void opj_t1_dec_sigpass_mqc_generic_novsc ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static

◆ opj_t1_dec_sigpass_mqc_generic_vsc()

static void opj_t1_dec_sigpass_mqc_generic_vsc ( opj_t1_t t1,
OPJ_INT32  bpno 
)
static

◆ opj_t1_dec_sigpass_raw()

static void opj_t1_dec_sigpass_raw ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32  cblksty 
)
static

◆ opj_t1_dec_sigpass_step_mqc()

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

◆ opj_t1_dec_sigpass_step_raw()

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 
)
static

◆ opj_t1_decode_cblk()

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 
)
static

◆ opj_t1_decode_cblks()

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.

Parameters
tcdTCD handle
pretPointer to return value
tilecThe tile to decode
tccpTile coding parameters
p_managerthe event manager
p_manager_mutexmutex for the event manager
check_ptermwhether PTERM correct termination should be checked

References opj_t1_cblk_decode_processing_job_t::band, opj_tcd_resolution::bands, opj_t1_cblk_decode_processing_job_t::cblk, opj_tcd_precinct::cblks, opj_tcd_precinct::ch, opj_t1_cblk_decode_processing_job_t::check_pterm, opj_tcd_tilecomp::compno, opj_tcd_precinct::cw, opj_tcd_precinct::dec, opj_tcd_cblk_dec::decoded_data, opj_tcd_tilecomp::minimum_num_resolutions, opj_t1_cblk_decode_processing_job_t::mustuse_cblkdatabuffer, opj_tcd_resolution::numbands, opj_aligned_free(), opj_calloc(), OPJ_FALSE, OPJ_RESTRICT, opj_t1_clbl_decode_processor(), opj_tcd_is_subband_area_of_interest(), opj_thread_pool_get_thread_count(), opj_thread_pool_submit_job(), opj_t1_cblk_decode_processing_job_t::p_manager, opj_t1_cblk_decode_processing_job_t::p_manager_mutex, opj_tcd_resolution::ph, opj_t1_cblk_decode_processing_job_t::pret, opj_tcd_resolution::pw, opj_t1_cblk_decode_processing_job_t::resno, opj_tcd_tilecomp::resolutions, opj_t1_cblk_decode_processing_job_t::tccp, opj_tcd::thread_pool, opj_t1_cblk_decode_processing_job_t::tilec, opj_tcd::whole_tile_decoding, opj_t1_cblk_decode_processing_job_t::whole_tile_decoding, opj_tcd_cblk_dec::x0, opj_tcd_precinct::x0, opj_tcd_cblk_dec::x1, opj_tcd_precinct::x1, opj_tcd_cblk_dec::y0, opj_tcd_precinct::y0, opj_tcd_cblk_dec::y1, and opj_tcd_precinct::y1.

Referenced by opj_tcd_t1_decode().

◆ opj_t1_destroy()

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::cblkdatabuffer, opj_t1::data, opj_t1::flags, opj_aligned_free(), and opj_free().

Referenced by opj_t1_clbl_decode_processor(), and opj_t1_destroy_wrapper().

◆ opj_t1_destroy_wrapper()

static void opj_t1_destroy_wrapper ( void *  t1)
static

◆ opj_t1_enc_clnpass()

static void opj_t1_enc_clnpass ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32 nmsedec,
OPJ_UINT32  cblksty 
)
static

◆ opj_t1_enc_is_term_pass()

static int opj_t1_enc_is_term_pass ( opj_tcd_cblk_enc_t cblk,
OPJ_UINT32  cblksty,
OPJ_INT32  bpno,
OPJ_UINT32  passtype 
)
static

◆ opj_t1_enc_refpass()

static void opj_t1_enc_refpass ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32 nmsedec,
OPJ_BYTE  type 
)
static

◆ opj_t1_enc_sigpass()

static void opj_t1_enc_sigpass ( opj_t1_t t1,
OPJ_INT32  bpno,
OPJ_INT32 nmsedec,
OPJ_BYTE  type,
OPJ_UINT32  cblksty 
)
static

◆ opj_t1_encode_cblk()

static OPJ_FLOAT64 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,
const OPJ_FLOAT64 mct_norms,
OPJ_UINT32  mct_numcomps 
)
static

◆ opj_t1_encode_cblks()

OPJ_BOOL opj_t1_encode_cblks ( opj_tcd_t tcd,
opj_tcd_tile_t tile,
opj_tcp_t tcp,
const OPJ_FLOAT64 mct_norms,
OPJ_UINT32  mct_numcomps 
)

◆ opj_t1_getctxno_mag()

static INLINE OPJ_UINT32 opj_t1_getctxno_mag ( OPJ_UINT32  f)
static

◆ opj_t1_getctxno_sc()

static INLINE OPJ_BYTE opj_t1_getctxno_sc ( OPJ_UINT32  lu)
static

References lut_ctxno_sc.

◆ opj_t1_getctxno_zc()

static INLINE OPJ_BYTE opj_t1_getctxno_zc ( opj_mqc_t mqc,
OPJ_UINT32  f 
)
static

◆ opj_t1_getctxtno_sc_or_spb_index()

static INLINE OPJ_UINT32 opj_t1_getctxtno_sc_or_spb_index ( OPJ_UINT32  fX,
OPJ_UINT32  pfX,
OPJ_UINT32  nfX,
OPJ_UINT32  ci 
)
static

◆ opj_t1_getnmsedec_ref()

static OPJ_INT16 opj_t1_getnmsedec_ref ( OPJ_UINT32  x,
OPJ_UINT32  bitpos 
)
static

◆ opj_t1_getnmsedec_sig()

static OPJ_INT16 opj_t1_getnmsedec_sig ( OPJ_UINT32  x,
OPJ_UINT32  bitpos 
)
static

◆ opj_t1_getspb()

static INLINE OPJ_BYTE opj_t1_getspb ( OPJ_UINT32  lu)
static

References lut_spb.

◆ opj_t1_getwmsedec()

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().

◆ opj_t1_ht_decode_cblk()

OPJ_BOOL opj_t1_ht_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 HT code-block.

Parameters
t1T1 handle
cblkCode-block coding parameters
orient
roishiftRegion of interest shifting value
cblkstyCode-block style
p_managerthe event manager
p_manager_mutexmutex for the event manager
check_ptermwhether PTERM correct termination should be checked

Decode 1 HT code-block.

Parameters
[in,out]t1is codeblock cofficients storage
[in]cblkis codeblock properties
[in]orientis the subband to which the codeblock belongs (not needed)
[in]roishiftis region of interest shift
[in]cblkstyis codeblock style
[in]p_manageris events print manager
[in]p_manager_mutexa mutex to control access to p_manager
[in]check_ptermcheck termination (not used)

State storage One byte per quad; for 1024 columns, or 512 quads, we need 512 bytes. We are using 2 extra bytes one on the left and one on the right for convenience.

The MSB bit in each byte is (\sigma^nw | \sigma^n), and the 7 LSBs contain max(E^nw | E^n)

References opj_tcd_cblk_dec::chunks, EVT_ERROR, J2K_CCP_CBLKSTY_VSC, opj_tcd_seg_data_chunk::len, opj_tcd_cblk_dec::Mb, opj_tcd_cblk_dec::numbps, opj_tcd_cblk_dec::numchunks, opj_event_msg(), OPJ_FALSE, opj_mutex_lock(), opj_mutex_unlock(), opj_t1_allocate_buffers(), OPJ_TRUE, opj_tcd_cblk_dec::x0, opj_tcd_cblk_dec::x1, opj_tcd_cblk_dec::y0, and opj_tcd_cblk_dec::y1.

Referenced by opj_t1_clbl_decode_processor().

◆ opj_t1_update_flags()

static INLINE void opj_t1_update_flags ( opj_flag_t flagsp,
OPJ_UINT32  ci,
OPJ_UINT32  s,
OPJ_UINT32  stride,
OPJ_UINT32  vsc 
)
static
T1_MU_THIS
#define T1_MU_THIS
Definition: t1.h:162
T1_CHI_5_I
#define T1_CHI_5_I
Definition: t1.h:127
T1_SIGMA_4
#define T1_SIGMA_4
Definition: t1.h:95
T1_SIGMA_2
#define T1_SIGMA_2
Definition: t1.h:93
opj_smr_abs
#define opj_smr_abs(x)
Definition: t1.c:66
T1_SIGMA_NEIGHBOURS
#define T1_SIGMA_NEIGHBOURS
Definition: t1.h:158
opj_t1_getnmsedec_ref
static OPJ_INT16 opj_t1_getnmsedec_ref(OPJ_UINT32 x, OPJ_UINT32 bitpos)
Definition: t1.c:312
opj_t1_getctxtno_sc_or_spb_index
static INLINE OPJ_UINT32 opj_t1_getctxtno_sc_or_spb_index(OPJ_UINT32 fX, OPJ_UINT32 pfX, OPJ_UINT32 nfX, OPJ_UINT32 ci)
Definition: t1.c:256
opj_t1_getctxno_sc
static INLINE OPJ_BYTE opj_t1_getctxno_sc(OPJ_UINT32 lu)
Definition: t1.c:286
T1_SIGMA_0
#define T1_SIGMA_0
We hold the state of individual data points for the T1 encoder using a single 32-bit flags word to ho...
Definition: t1.h:91
T1_SIGMA_1
#define T1_SIGMA_1
Definition: t1.h:92
OPJ_INT32
int32_t OPJ_INT32
Definition: openjpeg.h:131
T1_SIGMA_16
#define T1_SIGMA_16
Definition: t1.h:107
T1_SIGMA_3
#define T1_SIGMA_3
Definition: t1.h:94
T1_SIGMA_17
#define T1_SIGMA_17
Definition: t1.h:108
T1_SIGMA_5
#define T1_SIGMA_5
Definition: t1.h:96
opj_t1_getctxno_zc
static INLINE OPJ_BYTE opj_t1_getctxno_zc(opj_mqc_t *mqc, OPJ_UINT32 f)
Definition: t1.c:251
T1_SIGMA_15
#define T1_SIGMA_15
Definition: t1.h:106
opj_t1_getspb
static INLINE OPJ_BYTE opj_t1_getspb(OPJ_UINT32 lu)
Definition: t1.c:298
OPJ_UINT32
uint32_t OPJ_UINT32
Definition: openjpeg.h:132
T1_SIGMA_THIS
#define T1_SIGMA_THIS
Definition: t1.h:153
T1_CHI_1_I
#define T1_CHI_1_I
Definition: t1.h:113
T1_CHI_0_I
#define T1_CHI_0_I
Definition: t1.h:111
T1_PI_THIS
#define T1_PI_THIS
Definition: t1.h:163
T1_TYPE_RAW
#define T1_TYPE_RAW
No encoding the information is store under raw format in codestream (mode switch RAW)
Definition: t1.h:71
opj_t1_getctxno_mag
static INLINE OPJ_UINT32 opj_t1_getctxno_mag(OPJ_UINT32 f)
Definition: t1.c:291