OpenJPEG: t1.c File Reference

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.
#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)
| mod fixed_quality
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_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.
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 | ) | (((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; \
} \
{ \
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); \
} \
}
OPJ_UINT32
uint32_t OPJ_UINT32
Definition openjpeg.h:132
opj_t1_getspb
static INLINE OPJ_BYTE opj_t1_getspb(OPJ_UINT32 lu)
Definition t1.c:298
opj_t1_getctxno_zc
static INLINE OPJ_BYTE opj_t1_getctxno_zc(opj_mqc_t *mqc, OPJ_UINT32 f)
Definition t1.c:251
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_THIS
#define T1_SIGMA_THIS
Definition t1.h:153
T1_PI_THIS
#define T1_PI_THIS
Definition t1.h:163

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

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

## ◆ 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); \
} \
}
OPJ_INT32
int32_t OPJ_INT32
Definition openjpeg.h:131
opj_t1_getnmsedec_ref
static OPJ_INT16 opj_t1_getnmsedec_ref(OPJ_UINT32 x, OPJ_UINT32 bitpos)
Definition t1.c:312
opj_smr_abs
#define opj_smr_abs(x)
Definition t1.c:66
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

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

## ◆ opj_to_smr

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

## ◆ T1_FLAGS

#define T1_FLAGS | ( |  | x,
|  |  | y
| ) |  | (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

References opj_t1::data, opj_t1::datasize, opj_t1::flags, opj_t1::flagssize, opj_t1::h, opj_aligned_free(), opj_aligned_malloc(), OPJ_FALSE, OPJ_TRUE, T1_PI_0, T1_PI_1, T1_PI_2, T1_PI_3, and opj_t1::w.

Referenced by opj_t1_cblk_encode_processor(), and opj_t1_decode_cblk().

## ◆ opj_t1_cblk_encode_processor()

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

Procedure to deal with a asynchronous code-block encoding job.

Parameters

  user_data | Pointer to a opj_t1_cblk_encode_processing_job_t* structure
  tls | TLS handle.

References opj_t1_cblk_encode_processing_job_t::band, opj_tcd_band::bandno, opj_t1_cblk_encode_processing_job_t::cblk, opj_tccp::cblksty, opj_t1_cblk_encode_processing_job_t::compno, opj_t1::data, opj_tcd_tilecomp::data, opj_tcd_tile::distotile, opj_t1::h, opj_t1_cblk_encode_processing_job_t::mct_norms, opj_t1_cblk_encode_processing_job_t::mct_numcomps, opj_t1_cblk_encode_processing_job_t::mutex, opj_tcd_tile::numcomps, opj_tcd_tilecomp::numresolutions, OPJ_FALSE, opj_free(), opj_lrintf(), opj_mutex_lock(), opj_mutex_unlock(), OPJ_RESTRICT, opj_t1_allocate_buffers(), opj_t1_create(), opj_t1_destroy_wrapper(), opj_t1_encode_cblk(), opj_tls_get(), OPJ_TLS_KEY_T1, opj_tls_set(), OPJ_TRUE, opj_t1_cblk_encode_processing_job_t::pret, opj_tccp::qmfbid, opj_t1_cblk_encode_processing_job_t::resno, opj_tcd_tilecomp::resolutions, opj_tcd_band::stepsize, T1_NMSEDEC_FRACBITS, opj_t1_cblk_encode_processing_job_t::tccp, opj_t1_cblk_encode_processing_job_t::tile, opj_t1_cblk_encode_processing_job_t::tilec, opj_t1::w, opj_tcd_cblk_enc::x0, opj_tcd_band::x0, opj_tcd_resolution::x0, opj_tcd_tilecomp::x0, opj_tcd_cblk_enc::x1, opj_tcd_resolution::x1, opj_tcd_tilecomp::x1, opj_tcd_cblk_enc::y0, opj_tcd_band::y0, opj_tcd_resolution::y0, opj_tcd_cblk_enc::y1, and opj_tcd_resolution::y1.

Referenced by opj_t1_encode_cblks().

## ◆ opj_t1_clbl_decode_processor()

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

References opj_t1_cblk_decode_processing_job_t::band, opj_tcd_band::bandno, opj_t1_cblk_decode_processing_job_t::cblk, opj_tccp::cblksty, opj_t1_cblk_decode_processing_job_t::check_pterm, opj_t1::data, opj_tcd_tilecomp::data, opj_tcd_cblk_dec::decoded_data, EVT_ERROR, opj_t1::h, J2K_CCP_CBLKSTY_HT, opj_tcd_tilecomp::minimum_num_resolutions, opj_t1_cblk_decode_processing_job_t::mustuse_cblkdatabuffer, opj_t1::mustuse_cblkdatabuffer, opj_aligned_free(), opj_aligned_malloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_mutex_lock(), opj_mutex_unlock(), OPJ_RESTRICT, opj_t1_create(), opj_t1_decode_cblk(), opj_t1_destroy(), opj_t1_destroy_wrapper(), opj_t1_ht_decode_cblk(), opj_tls_get(), OPJ_TLS_KEY_T1, opj_tls_set(), opj_t1_cblk_decode_processing_job_t::p_manager, opj_t1_cblk_decode_processing_job_t::p_manager_mutex, opj_t1_cblk_decode_processing_job_t::pret, opj_tccp::qmfbid, opj_t1_cblk_decode_processing_job_t::resno, opj_tcd_tilecomp::resolutions, opj_tccp::roishift, opj_tcd_band::stepsize, opj_t1_cblk_decode_processing_job_t::tccp, opj_t1_cblk_decode_processing_job_t::tilec, opj_t1::w, opj_t1_cblk_decode_processing_job_t::whole_tile_decoding, opj_tcd_cblk_dec::x0, opj_tcd_band::x0, opj_tcd_resolution::x0, opj_tcd_cblk_dec::x1, opj_tcd_resolution::x1, opj_tcd_cblk_dec::y0, opj_tcd_band::y0, opj_tcd_resolution::y0, opj_tcd_cblk_dec::y1, and opj_tcd_resolution::y1.

Referenced by opj_t1_decode_cblks().

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

References opj_t1::h, J2K_CCP_CBLKSTY_VSC, opj_t1_dec_clnpass_64x64_novsc(), opj_t1_dec_clnpass_64x64_vsc(), opj_t1_dec_clnpass_check_segsym(), opj_t1_dec_clnpass_generic_novsc(), opj_t1_dec_clnpass_generic_vsc(), and opj_t1::w.

Referenced by opj_t1_decode_cblk().

## ◆ opj_t1_dec_clnpass_64x64_novsc()

static void opj_t1_dec_clnpass_64x64_novsc | ( | opj_t1_t * | t1,
|  | OPJ_INT32 | bpno
| ) |  |
| static

References OPJ_FALSE, and opj_t1_dec_clnpass_internal.

Referenced by opj_t1_dec_clnpass().

## ◆ opj_t1_dec_clnpass_64x64_vsc()

static void opj_t1_dec_clnpass_64x64_vsc | ( | opj_t1_t * | t1,
|  | OPJ_INT32 | bpno
| ) |  |
| static

References opj_t1_dec_clnpass_internal, and OPJ_TRUE.

Referenced by opj_t1_dec_clnpass().

## ◆ opj_t1_dec_clnpass_check_segsym()

static void opj_t1_dec_clnpass_check_segsym | ( | opj_t1_t * | t1,
|  | OPJ_INT32 | cblksty
| ) |  |
| static

References J2K_CCP_CBLKSTY_SEGSYM, opj_t1::mqc, opj_mqc_decode, opj_mqc_setcurctx, and T1_CTXNO_UNI.

Referenced by opj_t1_dec_clnpass().

## ◆ opj_t1_dec_clnpass_generic_novsc()

static void opj_t1_dec_clnpass_generic_novsc | ( | opj_t1_t * | t1,
|  | OPJ_INT32 | bpno
| ) |  |
| static

References opj_t1::h, OPJ_FALSE, opj_t1_dec_clnpass_internal, and opj_t1::w.

Referenced by opj_t1_dec_clnpass().

## ◆ opj_t1_dec_clnpass_generic_vsc()

static void opj_t1_dec_clnpass_generic_vsc | ( | opj_t1_t * | t1,
|  | OPJ_INT32 | bpno
| ) |  |
| static

References opj_t1::h, opj_t1_dec_clnpass_internal, OPJ_TRUE, and opj_t1::w.

Referenced by opj_t1_dec_clnpass().

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

Decode clean-up pass.

References opj_mqc::a, opj_mqc::c, opj_mqc::ct, opj_mqc::curctx, opj_t1::mqc, OPJ_FALSE, opj_t1_dec_clnpass_step_macro, OPJ_TRUE, and opj_t1::w.

## ◆ opj_t1_dec_refpass_mqc()

static void opj_t1_dec_refpass_mqc | ( | opj_t1_t * | t1,
|  | OPJ_INT32 | bpno
| ) |  |
| static

References opj_t1::h, opj_t1_dec_refpass_mqc_64x64(), opj_t1_dec_refpass_mqc_generic(), and opj_t1::w.

Referenced by opj_t1_decode_cblk().

## ◆ opj_t1_dec_refpass_mqc_64x64()

static void opj_t1_dec_refpass_mqc_64x64 | ( | opj_t1_t * | t1,
|  | OPJ_INT32 | bpno
| ) |  |
| static

References opj_t1_dec_refpass_mqc_internal.

Referenced by opj_t1_dec_refpass_mqc().

## ◆ opj_t1_dec_refpass_mqc_generic()

static void opj_t1_dec_refpass_mqc_generic | ( | opj_t1_t * | t1,
|  | OPJ_INT32 | bpno
| ) |  |
| static

References opj_t1::h, opj_t1_dec_refpass_mqc_internal, and opj_t1::w.

Referenced by opj_t1_dec_refpass_mqc().

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

References opj_mqc::a, opj_mqc::c, opj_mqc::ct, opj_mqc::curctx, opj_t1::mqc, and opj_t1_dec_refpass_step_mqc_macro.

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

References opj_t1::h, J2K_CCP_CBLKSTY_VSC, opj_t1_dec_sigpass_mqc_64x64_novsc(), opj_t1_dec_sigpass_mqc_64x64_vsc(), opj_t1_dec_sigpass_mqc_generic_novsc(), opj_t1_dec_sigpass_mqc_generic_vsc(), and opj_t1::w.

Referenced by opj_t1_decode_cblk().

## ◆ opj_t1_dec_sigpass_mqc_64x64_novsc()

static void opj_t1_dec_sigpass_mqc_64x64_novsc | ( | opj_t1_t * | t1,
|  | OPJ_INT32 | bpno
| ) |  |
| static

References OPJ_FALSE, and opj_t1_dec_sigpass_mqc_internal.

Referenced by opj_t1_dec_sigpass_mqc().

## ◆ opj_t1_dec_sigpass_mqc_64x64_vsc()

static void opj_t1_dec_sigpass_mqc_64x64_vsc | ( | opj_t1_t * | t1,
|  | OPJ_INT32 | bpno
| ) |  |
| static

References opj_t1_dec_sigpass_mqc_internal, and OPJ_TRUE.

Referenced by opj_t1_dec_sigpass_mqc().

## ◆ opj_t1_dec_sigpass_mqc_generic_novsc()

static void opj_t1_dec_sigpass_mqc_generic_novsc | ( | opj_t1_t * | t1,
|  | OPJ_INT32 | bpno
| ) |  |
| static

References opj_t1::h, OPJ_FALSE, opj_t1_dec_sigpass_mqc_internal, and opj_t1::w.

Referenced by opj_t1_dec_sigpass_mqc().

## ◆ opj_t1_dec_sigpass_mqc_generic_vsc()

static void opj_t1_dec_sigpass_mqc_generic_vsc | ( | opj_t1_t * | t1,
|  | OPJ_INT32 | bpno
| ) |  |
| static

References opj_t1::h, opj_t1_dec_sigpass_mqc_internal, OPJ_TRUE, and opj_t1::w.

Referenced by opj_t1_dec_sigpass_mqc().

## ◆ opj_t1_dec_sigpass_raw()

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

Decode significant pass.

References opj_t1::data, opj_t1::h, J2K_CCP_CBLKSTY_VSC, OPJ_FALSE, opj_t1_dec_sigpass_step_raw(), T1_FLAGS, and opj_t1::w.

Referenced by opj_t1_decode_cblk().

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

References opj_mqc::a, opj_mqc::c, opj_mqc::ct, opj_mqc::curctx, opj_t1::mqc, and opj_t1_dec_sigpass_step_mqc_macro.

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

Decode significant pass.

References opj_t1::mqc, opj_mqc_raw_decode(), opj_t1_update_flags(), T1_PI_THIS, T1_SIGMA_NEIGHBOURS, T1_SIGMA_THIS, and opj_t1::w.

Referenced by opj_t1_dec_sigpass_raw().

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

Decode 1 code-block.

Parameters

  t1 | T1 handle
  cblk | Code-block coding parameters
  orient |
  roishift | Region of interest shifting value
  cblksty | Code-block style
  p_manager | the event manager
  p_manager_mutex | mutex for the event manager
  check_pterm | whether PTERM correct termination should be checked

References opj_mqc::bp, opj_t1::cblkdatabuffer, opj_t1::cblkdatabuffersize, opj_tcd_cblk_dec::chunks, opj_t1::data, opj_tcd_seg_data_chunk::data, opj_tcd_cblk_dec::decoded_data, opj_mqc::end, opj_mqc::end_of_byte_stream_counter, EVT_WARNING, J2K_CCP_CBLKSTY_LAZY, J2K_CCP_CBLKSTY_RESET, opj_tcd_seg_data_chunk::len, opj_tcd_seg::len, lut_ctxno_zc, opj_mqc::lut_ctxno_zc_orient, opj_t1::mqc, opj_t1::mustuse_cblkdatabuffer, opj_tcd_cblk_dec::numbps, opj_tcd_cblk_dec::numchunks, OPJ_COMMON_CBLK_DATA_EXTRA, opj_event_msg(), OPJ_FALSE, opj_mqc_init_dec(), opj_mqc_raw_init_dec(), opj_mqc_resetstates(), opj_mqc_setstate(), opj_mutex_lock(), opj_mutex_unlock(), opj_realloc(), opj_t1_allocate_buffers(), opj_t1_dec_clnpass(), opj_t1_dec_refpass_mqc(), opj_t1_dec_refpass_raw(), opj_t1_dec_sigpass_mqc(), opj_t1_dec_sigpass_raw(), OPJ_TRUE, opq_mqc_finish_dec(), opj_tcd_seg::real_num_passes, opj_tcd_cblk_dec::real_num_segs, opj_tcd_cblk_dec::segs, opj_mqc::start, T1_CTXNO_AGG, T1_CTXNO_UNI, T1_CTXNO_ZC, T1_TYPE_MQ, T1_TYPE_RAW, 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_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

  tcd | TCD handle
  pret | Pointer to return value
  tilec | The tile to decode
  tccp | Tile coding parameters
  p_manager | the event manager
  p_manager_mutex | mutex for the event manager
  check_pterm | whether 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_t1 | Tier 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

References opj_t1_destroy().

Referenced by opj_t1_cblk_encode_processor(), and opj_t1_clbl_decode_processor().

## ◆ opj_t1_enc_clnpass()

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

Encode clean-up pass.

References opj_t1::data, DOWNLOAD_MQC_VARIABLES, opj_t1::h, opj_t1::mqc, opj_mqc_encode_macro, opj_smr_abs, opj_t1_enc_clnpass_step_macro, opj_t1_setcurctx, T1_CTXNO_AGG, T1_CTXNO_UNI, T1_FLAGS, T1_NMSEDEC_FRACBITS, UPLOAD_MQC_VARIABLES, and opj_t1::w.

Referenced by opj_t1_encode_cblk().

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

References J2K_CCP_CBLKSTY_LAZY, J2K_CCP_CBLKSTY_TERMALL, opj_tcd_cblk_enc::numbps, OPJ_FALSE, and OPJ_TRUE.

Referenced by opj_t1_encode_cblk().

## ◆ opj_t1_enc_refpass()

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

Encode refinement pass.

References opj_t1::data, DOWNLOAD_MQC_VARIABLES, opj_t1::h, opj_t1::mqc, opj_t1_enc_refpass_step_macro, T1_FLAGS, T1_NMSEDEC_FRACBITS, T1_PI_0, T1_PI_1, T1_PI_2, T1_PI_3, T1_SIGMA_10, T1_SIGMA_13, T1_SIGMA_4, T1_SIGMA_7, UPLOAD_MQC_VARIABLES, and opj_t1::w.

Referenced by opj_t1_encode_cblk().

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

Encode significant pass.

References opj_t1::data, DOWNLOAD_MQC_VARIABLES, opj_t1::h, J2K_CCP_CBLKSTY_VSC, opj_t1::mqc, opj_t1_enc_sigpass_step_macro, T1_FLAGS, T1_NMSEDEC_FRACBITS, UPLOAD_MQC_VARIABLES, and opj_t1::w.

Referenced by opj_t1_encode_cblk().

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

Return "cumwmsedec" that should be used to increase tile->distotile.

mod fixed_quality

References opj_t1::data, opj_tcd_cblk_enc::data, opj_tcd_pass::distortiondec, opj_t1::h, J2K_CCP_CBLKSTY_LAZY, J2K_CCP_CBLKSTY_PTERM, J2K_CCP_CBLKSTY_RESET, J2K_CCP_CBLKSTY_SEGSYM, opj_tcd_pass::len, lut_ctxno_zc, opj_mqc::lut_ctxno_zc_orient, max(), opj_t1::mqc, opj_tcd_cblk_enc::numbps, opj_int_floorlog2(), opj_int_max(), opj_mqc_bypass_flush_enc(), opj_mqc_bypass_get_extra_bytes(), opj_mqc_bypass_init_enc(), opj_mqc_erterm_enc(), opj_mqc_flush(), opj_mqc_init_enc(), opj_mqc_numbytes(), opj_mqc_reset_enc(), opj_mqc_resetstates(), opj_mqc_restart_init_enc(), opj_mqc_segmark_enc(), opj_mqc_setstate(), opj_t1_enc_clnpass(), opj_t1_enc_is_term_pass(), opj_t1_enc_refpass(), opj_t1_enc_sigpass(), opj_t1_getwmsedec(), opj_to_smr, opj_tcd_cblk_enc::passes, opj_tcd_pass::rate, T1_CTXNO_AGG, T1_CTXNO_UNI, T1_CTXNO_ZC, T1_NMSEDEC_FRACBITS, T1_TYPE_MQ, T1_TYPE_RAW, opj_tcd_pass::term, opj_tcd_cblk_enc::totalpasses, opj_t1::w, opj_tcd_cblk_enc::x0, opj_tcd_cblk_enc::x1, opj_tcd_cblk_enc::y0, and opj_tcd_cblk_enc::y1.

Referenced by opj_t1_cblk_encode_processor().

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

Encode the code-blocks of a tile.

Parameters

  tcd | TCD handle
  tile | The tile to encode
  tcp | Tile coding parameters
  mct_norms | FIXME DOC
  mct_numcomps | Number of components used for MCT

References opj_t1_cblk_encode_processing_job_t::band, opj_tcd_resolution::bands, opj_t1_cblk_encode_processing_job_t::cblk, opj_tcd_precinct::cblks, opj_tcd_precinct::ch, opj_t1_cblk_encode_processing_job_t::compno, opj_tcd_tile::comps, opj_tcd_precinct::cw, opj_tcd_tile::distotile, opj_tcd_precinct::enc, opj_t1_cblk_encode_processing_job_t::mct_norms, opj_t1_cblk_encode_processing_job_t::mct_numcomps, opj_t1_cblk_encode_processing_job_t::mutex, opj_tcd_resolution::numbands, opj_tcd_tile::numcomps, opj_tcd_tilecomp::numresolutions, opj_calloc(), OPJ_FALSE, opj_mutex_create(), opj_mutex_destroy(), OPJ_RESTRICT, opj_t1_cblk_encode_processor(), opj_tcd_is_band_empty(), opj_thread_pool_submit_job(), opj_thread_pool_wait_completion(), OPJ_TRUE, opj_tcd_resolution::ph, opj_t1_cblk_encode_processing_job_t::pret, opj_tcd_resolution::pw, opj_t1_cblk_encode_processing_job_t::resno, opj_tcd_tilecomp::resolutions, opj_t1_cblk_encode_processing_job_t::tccp, tcp, opj_tcd::thread_pool, opj_t1_cblk_encode_processing_job_t::tile, and opj_t1_cblk_encode_processing_job_t::tilec.

Referenced by opj_tcd_t1_encode().

## ◆ opj_t1_getctxno_mag()

static INLINE OPJ_UINT32 opj_t1_getctxno_mag | ( | OPJ_UINT32 | f | ) |
| static

References T1_CTXNO_MAG, T1_MU_0, and T1_SIGMA_NEIGHBOURS.

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

References opj_mqc::lut_ctxno_zc_orient, and T1_SIGMA_NEIGHBOURS.

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

References T1_CHI_0_I, T1_CHI_1_I, T1_CHI_2_I, T1_CHI_THIS_I, T1_SIGMA_1, T1_SIGMA_3, T1_SIGMA_5, and T1_SIGMA_7.

## ◆ opj_t1_getnmsedec_ref()

static OPJ_INT16 opj_t1_getnmsedec_ref | ( | OPJ_UINT32 | x,
|  | OPJ_UINT32 | bitpos
| ) |  |
| static

References lut_nmsedec_ref, lut_nmsedec_ref0, and T1_NMSEDEC_BITS.

## ◆ opj_t1_getnmsedec_sig()

static OPJ_INT16 opj_t1_getnmsedec_sig | ( | OPJ_UINT32 | x,
|  | OPJ_UINT32 | bitpos
| ) |  |
| static

References lut_nmsedec_sig, lut_nmsedec_sig0, and T1_NMSEDEC_BITS.

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

  t1 | T1 handle
  cblk | Code-block coding parameters
  orient |
  roishift | Region of interest shifting value
  cblksty | Code-block style
  p_manager | the event manager
  p_manager_mutex | mutex for the event manager
  check_pterm | whether PTERM correct termination should be checked

Decode 1 HT code-block.

Parameters

  [in,out] | t1 | is codeblock cofficients storage
  [in] | cblk | is codeblock properties
  [in] | orient | is the subband to which the codeblock belongs (not needed)
  [in] | roishift | is region of interest shift
  [in] | cblksty | is codeblock style
  [in] | p_manager | is events print manager
  [in] | p_manager_mutex | a mutex to control access to p_manager
  [in] | check_pterm | check 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_data_chunk::len, opj_tcd_seg::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

References opj_t1_update_flags_macro.

Referenced by opj_t1_dec_sigpass_step_raw().