OpenJPEG 2.5.2
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)
 
#define opj_t1_setcurctx(curctx, ctxno)
 
#define opj_smr_abs(x)
 
#define opj_smr_sign(x)
 
#define opj_to_smr(x)
 

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.
 
#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.
 
#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.
 
#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.
 
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)
 
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.
 
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.
 
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.
 
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.
 
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.
 
static void opj_t1_cblk_encode_processor (void *user_data, opj_tls_t *tls)
 Procedure to deal with a asynchronous code-block encoding job.
 
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.
 
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)
Value:
(((OPJ_UINT32)(x)) & 0x7FFFFFFFU)
uint32_t OPJ_UINT32
Definition openjpeg.h:132

Referenced by opj_t1_enc_clnpass().

◆ opj_smr_sign

#define opj_smr_sign ( x)
Value:
(((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); \
} \
}
static INLINE OPJ_BYTE opj_t1_getspb(OPJ_UINT32 lu)
Definition t1.c:298
static INLINE OPJ_BYTE opj_t1_getctxno_zc(opj_mqc_t *mqc, OPJ_UINT32 f)
Definition t1.c:251
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
static INLINE OPJ_BYTE opj_t1_getctxno_sc(OPJ_UINT32 lu)
Definition t1.c:286
#define T1_SIGMA_THIS
Definition t1.h:153
#define T1_PI_THIS
Definition t1.h:163

Referenced by opj_t1_dec_clnpass_step().

◆ 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); \
} \
}
static INLINE OPJ_UINT32 opj_t1_getctxno_mag(OPJ_UINT32 f)
Definition t1.c:291
#define T1_MU_THIS
Definition t1.h:162

Referenced by opj_t1_dec_refpass_step_mqc().

◆ 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_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); \
} \
}
#define T1_SIGMA_NEIGHBOURS
Definition t1.h:158

Referenced by opj_t1_dec_sigpass_step_mqc().

◆ 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.

Referenced by opj_t1_enc_clnpass().

◆ 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:
{\
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); \
} \
}
int32_t OPJ_INT32
Definition openjpeg.h:131
static OPJ_INT16 opj_t1_getnmsedec_ref(OPJ_UINT32 x, OPJ_UINT32 bitpos)
Definition t1.c:312
#define opj_smr_abs(x)
Definition t1.c:66
#define T1_TYPE_RAW
No encoding the information is store under raw format in codestream (mode switch RAW)
Definition t1.h:71

Encode refinement pass step.

Referenced by opj_t1_enc_refpass().

◆ 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.

Referenced by opj_t1_enc_sigpass().

◆ opj_t1_setcurctx

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

Referenced by opj_t1_enc_clnpass().

◆ 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; \
} \
}
#define T1_SIGMA_15
Definition t1.h:106
#define T1_SIGMA_16
Definition t1.h:107
#define T1_CHI_0_I
Definition t1.h:111
#define T1_SIGMA_17
Definition t1.h:108
#define T1_CHI_1_I
Definition t1.h:113
#define T1_SIGMA_3
Definition t1.h:94
#define T1_SIGMA_5
Definition t1.h:96
#define T1_SIGMA_4
Definition t1.h:95
#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
OPJ_UINT32 opj_flag_t
Flags for 4 consecutive rows of a column.
Definition t1.h:179
#define T1_SIGMA_1
Definition t1.h:92
#define T1_SIGMA_2
Definition t1.h:93
#define T1_CHI_5_I
Definition t1.h:127

Referenced by opj_t1_update_flags().

◆ opj_to_smr

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

Referenced by opj_t1_encode_cblk().

◆ T1_FLAGS

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

Referenced by opj_t1_dec_refpass_raw(), opj_t1_dec_sigpass_raw(), opj_t1_enc_clnpass(), opj_t1_enc_refpass(), and opj_t1_enc_sigpass().

Function Documentation

◆ opj_t1_allocate_buffers()

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

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

◆ 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_t1_cblk_decode_processing_job_t::whole_tile_decoding, opj_tcd::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()

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

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

◆ opj_t1_encode_cblks()

◆ 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

◆ 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

Decodes one codeblock, processing the cleanup, siginificance propagation, and magnitude refinement pass.

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
[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_t1::cblkdatabuffer, opj_t1::cblkdatabuffersize, opj_tcd_cblk_dec::chunks, count_leading_zeros(), opj_t1::data, opj_tcd_seg_data_chunk::data, decode_init_uvlc(), decode_noninit_uvlc(), EVT_ERROR, EVT_WARNING, opj_t1::flags, frwd_advance(), frwd_fetch(), frwd_init(), J2K_CCP_CBLKSTY_VSC, opj_tcd_seg::len, opj_tcd_seg_data_chunk::len, opj_tcd_cblk_dec::Mb, mel_get_run(), mel_init(), opj_t1::mustuse_cblkdatabuffer, opj_tcd_cblk_dec::numbps, opj_tcd_cblk_dec::numchunks, opj_tcd_cblk_dec::numsegs, only_cleanup_pass_is_decoded, opj_event_msg(), OPJ_FALSE, opj_mutex_lock(), opj_mutex_unlock(), opj_realloc(), opj_t1_allocate_buffers(), OPJ_TRUE, population_count(), opj_tcd_seg::real_num_passes, rev_advance(), rev_advance_mrp(), rev_fetch(), rev_fetch_mrp(), rev_init(), rev_init_mrp(), opj_tcd_cblk_dec::segs, vlc_tbl0, vlc_tbl1, 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