OpenJPEG  2.5.0
Data Structures | Macros
dwt.c File Reference
#include <assert.h>
#include "opj_includes.h"

Data Structures

struct  dwt_local
 
union  opj_v8_t
 
struct  v8dwt_local
 
struct  opj_dwt_encode_h_job_t
 
struct  opj_dwt_encode_v_job_t
 
struct  opj_dwt_decode_h_job_t
 
struct  opj_dwt_decode_v_job_t
 
struct  opj_dwt97_decode_h_job_t
 
struct  opj_dwt97_decode_v_job_t
 

Macros

#define OPJ_SKIP_POISON
 
#define OPJ_WS(i)   v->mem[(i)*2]
 
#define OPJ_WD(i)   v->mem[(1+(i)*2)]
 
#define VREG_INT_COUNT   4
 Number of int32 values in a SSE2 register. More...
 
#define PARALLEL_COLS_53   (2*VREG_INT_COUNT)
 Number of columns that we can process in parallel in the vertical pass. More...
 
#define OPJ_Sc(i)   tmp[(i)*2* NB_ELTS_V8 + c]
 
#define OPJ_Dc(i)   tmp[((1+(i)*2))* NB_ELTS_V8 + c]
 

Local data structures

#define NB_ELTS_V8   8
 
typedef struct dwt_local opj_dwt_t
 
typedef struct v8dwt_local opj_v8dwt_t
 
static const OPJ_FLOAT32 opj_dwt_alpha = -1.586134342f
 
static const OPJ_FLOAT32 opj_dwt_beta = -0.052980118f
 
static const OPJ_FLOAT32 opj_dwt_gamma = 0.882911075f
 
static const OPJ_FLOAT32 opj_dwt_delta = 0.443506852f
 
static const OPJ_FLOAT32 opj_K = 1.230174105f
 
static const OPJ_FLOAT32 opj_invK = (OPJ_FLOAT32)(1.0 / 1.230174105)
 

Local static functions

#define OPJ_S(i)   a[(i)*2]
 
#define OPJ_D(i)   a[(1+(i)*2)]
 
#define OPJ_S_(i)   ((i)<0?OPJ_S(0):((i)>=sn?OPJ_S(sn-1):OPJ_S(i)))
 
#define OPJ_D_(i)   ((i)<0?OPJ_D(0):((i)>=dn?OPJ_D(dn-1):OPJ_D(i)))
 
#define OPJ_SS_(i)   ((i)<0?OPJ_S(0):((i)>=dn?OPJ_S(dn-1):OPJ_S(i)))
 
#define OPJ_DD_(i)   ((i)<0?OPJ_D(0):((i)>=sn?OPJ_D(sn-1):OPJ_D(i)))
 
#define OPJ_S_off(i, off)   a[(OPJ_UINT32)(i)*2*4+off]
 
#define OPJ_D_off(i, off)   a[(1+(OPJ_UINT32)(i)*2)*4+off]
 
#define OPJ_S__off(i, off)   ((i)<0?OPJ_S_off(0,off):((i)>=sn?OPJ_S_off(sn-1,off):OPJ_S_off(i,off)))
 
#define OPJ_D__off(i, off)   ((i)<0?OPJ_D_off(0,off):((i)>=dn?OPJ_D_off(dn-1,off):OPJ_D_off(i,off)))
 
#define OPJ_SS__off(i, off)   ((i)<0?OPJ_S_off(0,off):((i)>=dn?OPJ_S_off(dn-1,off):OPJ_S_off(i,off)))
 
#define OPJ_DD__off(i, off)   ((i)<0?OPJ_D_off(0,off):((i)>=sn?OPJ_D_off(sn-1,off):OPJ_D_off(i,off)))
 
typedef void(* opj_encode_and_deinterleave_v_fnptr_type) (void *array, void *tmp, OPJ_UINT32 height, OPJ_BOOL even, OPJ_UINT32 stride_width, OPJ_UINT32 cols)
 
typedef void(* opj_encode_and_deinterleave_h_one_row_fnptr_type) (void *row, void *tmp, OPJ_UINT32 width, OPJ_BOOL even)
 
static const OPJ_FLOAT64 opj_dwt_norms [4][10]
 
static const OPJ_FLOAT64 opj_dwt_norms_real [4][10]
 
static void opj_dwt_deinterleave_h (const OPJ_INT32 *OPJ_RESTRICT a, OPJ_INT32 *OPJ_RESTRICT b, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
 Forward lazy transform (horizontal) More...
 
static void opj_dwt_encode_1_real (void *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
 Forward 9-7 wavelet transform in 1-D. More...
 
static void opj_dwt_encode_stepsize (OPJ_INT32 stepsize, OPJ_INT32 numbps, opj_stepsize_t *bandno_stepsize)
 Explicit calculation of the Quantization Stepsizes. More...
 
static OPJ_BOOL opj_dwt_decode_tile (opj_thread_pool_t *tp, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 i)
 Inverse wavelet transform in 2-D. More...
 
static OPJ_BOOL opj_dwt_decode_partial_tile (opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
 
static OPJ_BOOL opj_dwt_encode_procedure (opj_thread_pool_t *tp, opj_tcd_tilecomp_t *tilec, opj_encode_and_deinterleave_v_fnptr_type p_encode_and_deinterleave_v, opj_encode_and_deinterleave_h_one_row_fnptr_type p_encode_and_deinterleave_h_one_row)
 
static OPJ_UINT32 opj_dwt_max_resolution (opj_tcd_resolution_t *OPJ_RESTRICT r, OPJ_UINT32 i)
 
static void opj_idwt53_h_cas0 (OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp)
 
static void opj_idwt53_h_cas1 (OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp)
 
static void opj_idwt53_h (const opj_dwt_t *dwt, OPJ_INT32 *tiledp)
 
static void opj_idwt3_v_cas0 (OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp_col, const OPJ_SIZE_T stride)
 Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on even coordinate. More...
 
static void opj_idwt3_v_cas1 (OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp_col, const OPJ_SIZE_T stride)
 Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on odd coordinate. More...
 
static void opj_idwt53_v (const opj_dwt_t *dwt, OPJ_INT32 *tiledp_col, OPJ_SIZE_T stride, OPJ_INT32 nb_cols)
 
static void opj_dwt_encode_step1_combined (OPJ_FLOAT32 *fw, OPJ_UINT32 iters_c1, OPJ_UINT32 iters_c2, const OPJ_FLOAT32 c1, const OPJ_FLOAT32 c2)
 
static void opj_dwt_encode_step2 (OPJ_FLOAT32 *fl, OPJ_FLOAT32 *fw, OPJ_UINT32 end, OPJ_UINT32 m, OPJ_FLOAT32 c)
 
static void opj_dwt_encode_and_deinterleave_h_one_row (void *rowIn, void *tmpIn, OPJ_UINT32 width, OPJ_BOOL even)
 Process one line for the horizontal pass of the 5x3 forward transform. More...
 
static void opj_dwt_encode_and_deinterleave_h_one_row_real (void *rowIn, void *tmpIn, OPJ_UINT32 width, OPJ_BOOL even)
 Process one line for the horizontal pass of the 9x7 forward transform. More...
 
static void opj_dwt_encode_h_func (void *user_data, opj_tls_t *tls)
 
static void opj_dwt_encode_v_func (void *user_data, opj_tls_t *tls)
 
static void opj_dwt_fetch_cols_vertical_pass (const void *arrayIn, void *tmpOut, OPJ_UINT32 height, OPJ_UINT32 stride_width, OPJ_UINT32 cols)
 Fetch up to cols <= NB_ELTS_V8 for each line, and put them in tmpOut. More...
 
static INLINE void opj_dwt_deinterleave_v_cols (const OPJ_INT32 *OPJ_RESTRICT src, OPJ_INT32 *OPJ_RESTRICT dst, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_UINT32 stride_width, OPJ_INT32 cas, OPJ_UINT32 cols)
 
static void opj_dwt_encode_and_deinterleave_v (void *arrayIn, void *tmpIn, OPJ_UINT32 height, OPJ_BOOL even, OPJ_UINT32 stride_width, OPJ_UINT32 cols)
 
static void opj_v8dwt_encode_step1 (OPJ_FLOAT32 *fw, OPJ_UINT32 end, const OPJ_FLOAT32 cst)
 
static void opj_v8dwt_encode_step2 (OPJ_FLOAT32 *fl, OPJ_FLOAT32 *fw, OPJ_UINT32 end, OPJ_UINT32 m, OPJ_FLOAT32 cst)
 
static void opj_dwt_encode_and_deinterleave_v_real (void *arrayIn, void *tmpIn, OPJ_UINT32 height, OPJ_BOOL even, OPJ_UINT32 stride_width, OPJ_UINT32 cols)
 
OPJ_BOOL opj_dwt_encode (opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec)
 Forward 5-3 wavelet transform in 2-D. More...
 
OPJ_BOOL opj_dwt_decode (opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
 Inverse 5-3 wavelet transform in 2-D. More...
 
OPJ_FLOAT64 opj_dwt_getnorm (OPJ_UINT32 level, OPJ_UINT32 orient)
 Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT. More...
 
OPJ_BOOL opj_dwt_encode_real (opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec)
 Forward 9-7 wavelet transform in 2-D. More...
 
OPJ_FLOAT64 opj_dwt_getnorm_real (OPJ_UINT32 level, OPJ_UINT32 orient)
 Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT. More...
 
void opj_dwt_calc_explicit_stepsizes (opj_tccp_t *tccp, OPJ_UINT32 prec)
 Explicit calculation of the Quantization Stepsizes. More...
 
static void opj_dwt_decode_h_func (void *user_data, opj_tls_t *tls)
 
static void opj_dwt_decode_v_func (void *user_data, opj_tls_t *tls)
 
static void opj_dwt_interleave_partial_h (OPJ_INT32 *dest, OPJ_INT32 cas, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_line, OPJ_UINT32 sn, OPJ_UINT32 win_l_x0, OPJ_UINT32 win_l_x1, OPJ_UINT32 win_h_x0, OPJ_UINT32 win_h_x1)
 
static void opj_dwt_interleave_partial_v (OPJ_INT32 *dest, OPJ_INT32 cas, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_col, OPJ_UINT32 nb_cols, OPJ_UINT32 sn, OPJ_UINT32 win_l_y0, OPJ_UINT32 win_l_y1, OPJ_UINT32 win_h_y0, OPJ_UINT32 win_h_y1)
 
static void opj_dwt_decode_partial_1 (OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas, OPJ_INT32 win_l_x0, OPJ_INT32 win_l_x1, OPJ_INT32 win_h_x0, OPJ_INT32 win_h_x1)
 
static void opj_dwt_decode_partial_1_parallel (OPJ_INT32 *a, OPJ_UINT32 nb_cols, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas, OPJ_INT32 win_l_x0, OPJ_INT32 win_l_x1, OPJ_INT32 win_h_x0, OPJ_INT32 win_h_x1)
 
static void opj_dwt_get_band_coordinates (opj_tcd_tilecomp_t *tilec, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 tcx0, OPJ_UINT32 tcy0, OPJ_UINT32 tcx1, OPJ_UINT32 tcy1, OPJ_UINT32 *tbx0, OPJ_UINT32 *tby0, OPJ_UINT32 *tbx1, OPJ_UINT32 *tby1)
 
static void opj_dwt_segment_grow (OPJ_UINT32 filter_width, OPJ_UINT32 max_size, OPJ_UINT32 *start, OPJ_UINT32 *end)
 
static opj_sparse_array_int32_topj_dwt_init_sparse_array (opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
 
static void opj_v8dwt_interleave_h (opj_v8dwt_t *OPJ_RESTRICT dwt, OPJ_FLOAT32 *OPJ_RESTRICT a, OPJ_UINT32 width, OPJ_UINT32 remaining_height)
 
static void opj_v8dwt_interleave_partial_h (opj_v8dwt_t *dwt, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_line, OPJ_UINT32 remaining_height)
 
static INLINE void opj_v8dwt_interleave_v (opj_v8dwt_t *OPJ_RESTRICT dwt, OPJ_FLOAT32 *OPJ_RESTRICT a, OPJ_UINT32 width, OPJ_UINT32 nb_elts_read)
 
static void opj_v8dwt_interleave_partial_v (opj_v8dwt_t *OPJ_RESTRICT dwt, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_col, OPJ_UINT32 nb_elts_read)
 
static void opj_v8dwt_decode_step1 (opj_v8_t *w, OPJ_UINT32 start, OPJ_UINT32 end, const OPJ_FLOAT32 c)
 
static void opj_v8dwt_decode_step2 (opj_v8_t *l, opj_v8_t *w, OPJ_UINT32 start, OPJ_UINT32 end, OPJ_UINT32 m, OPJ_FLOAT32 c)
 
static void opj_v8dwt_decode (opj_v8dwt_t *OPJ_RESTRICT dwt)
 
static void opj_dwt97_decode_h_func (void *user_data, opj_tls_t *tls)
 
static void opj_dwt97_decode_v_func (void *user_data, opj_tls_t *tls)
 
static OPJ_BOOL opj_dwt_decode_tile_97 (opj_thread_pool_t *tp, opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
 
static OPJ_BOOL opj_dwt_decode_partial_97 (opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
 
OPJ_BOOL opj_dwt_decode_real (opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
 Inverse 9-7 wavelet transform in 2-D. More...
 

Macro Definition Documentation

◆ NB_ELTS_V8

#define NB_ELTS_V8   8

◆ OPJ_D

#define OPJ_D (   i)    a[(1+(i)*2)]

◆ OPJ_D_

#define OPJ_D_ (   i)    ((i)<0?OPJ_D(0):((i)>=dn?OPJ_D(dn-1):OPJ_D(i)))

◆ OPJ_D__off

#define OPJ_D__off (   i,
  off 
)    ((i)<0?OPJ_D_off(0,off):((i)>=dn?OPJ_D_off(dn-1,off):OPJ_D_off(i,off)))

◆ OPJ_D_off

#define OPJ_D_off (   i,
  off 
)    a[(1+(OPJ_UINT32)(i)*2)*4+off]

◆ OPJ_Dc

#define OPJ_Dc (   i)    tmp[((1+(i)*2))* NB_ELTS_V8 + c]

◆ OPJ_DD_

#define OPJ_DD_ (   i)    ((i)<0?OPJ_D(0):((i)>=sn?OPJ_D(sn-1):OPJ_D(i)))

◆ OPJ_DD__off

#define OPJ_DD__off (   i,
  off 
)    ((i)<0?OPJ_D_off(0,off):((i)>=sn?OPJ_D_off(sn-1,off):OPJ_D_off(i,off)))

◆ OPJ_S

#define OPJ_S (   i)    a[(i)*2]

◆ OPJ_S_

#define OPJ_S_ (   i)    ((i)<0?OPJ_S(0):((i)>=sn?OPJ_S(sn-1):OPJ_S(i)))

◆ OPJ_S__off

#define OPJ_S__off (   i,
  off 
)    ((i)<0?OPJ_S_off(0,off):((i)>=sn?OPJ_S_off(sn-1,off):OPJ_S_off(i,off)))

◆ OPJ_S_off

#define OPJ_S_off (   i,
  off 
)    a[(OPJ_UINT32)(i)*2*4+off]

◆ OPJ_Sc

#define OPJ_Sc (   i)    tmp[(i)*2* NB_ELTS_V8 + c]

◆ OPJ_SKIP_POISON

#define OPJ_SKIP_POISON

◆ OPJ_SS_

#define OPJ_SS_ (   i)    ((i)<0?OPJ_S(0):((i)>=dn?OPJ_S(dn-1):OPJ_S(i)))

◆ OPJ_SS__off

#define OPJ_SS__off (   i,
  off 
)    ((i)<0?OPJ_S_off(0,off):((i)>=dn?OPJ_S_off(dn-1,off):OPJ_S_off(i,off)))

◆ OPJ_WD

#define OPJ_WD (   i)    v->mem[(1+(i)*2)]

◆ OPJ_WS

#define OPJ_WS (   i)    v->mem[(i)*2]

◆ PARALLEL_COLS_53

#define PARALLEL_COLS_53   (2*VREG_INT_COUNT)

Number of columns that we can process in parallel in the vertical pass.

◆ VREG_INT_COUNT

#define VREG_INT_COUNT   4

Number of int32 values in a SSE2 register.

Typedef Documentation

◆ opj_dwt_t

typedef struct dwt_local opj_dwt_t

◆ opj_encode_and_deinterleave_h_one_row_fnptr_type

typedef void(* opj_encode_and_deinterleave_h_one_row_fnptr_type) (void *row, void *tmp, OPJ_UINT32 width, OPJ_BOOL even)

◆ opj_encode_and_deinterleave_v_fnptr_type

typedef void(* opj_encode_and_deinterleave_v_fnptr_type) (void *array, void *tmp, OPJ_UINT32 height, OPJ_BOOL even, OPJ_UINT32 stride_width, OPJ_UINT32 cols)

◆ opj_v8dwt_t

typedef struct v8dwt_local opj_v8dwt_t

Function Documentation

◆ opj_dwt97_decode_h_func()

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

◆ opj_dwt97_decode_v_func()

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

◆ opj_dwt_calc_explicit_stepsizes()

void opj_dwt_calc_explicit_stepsizes ( opj_tccp_t tccp,
OPJ_UINT32  prec 
)

Explicit calculation of the Quantization Stepsizes.

Parameters
tccpTile-component coding parameters
precPrecint analyzed

References J2K_CCP_QNTSTY_NOQNT, opj_tccp::numresolutions, opj_dwt_encode_stepsize(), opj_dwt_getnorm_real(), opj_tccp::qmfbid, opj_tccp::qntsty, and opj_tccp::stepsizes.

Referenced by opj_j2k_setup_encoder().

◆ opj_dwt_decode()

OPJ_BOOL opj_dwt_decode ( opj_tcd_t p_tcd,
opj_tcd_tilecomp_t tilec,
OPJ_UINT32  numres 
)

Inverse 5-3 wavelet transform in 2-D.

Apply a reversible inverse DWT transform to a component of an image.

Parameters
p_tcdTCD handle
tilecTile component information (current tile)
numresNumber of resolution levels to decode

References opj_dwt_decode_partial_tile(), opj_dwt_decode_tile(), opj_tcd::thread_pool, and opj_tcd::whole_tile_decoding.

Referenced by main(), and opj_tcd_dwt_decode().

◆ opj_dwt_decode_h_func()

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

◆ opj_dwt_decode_partial_1()

static void opj_dwt_decode_partial_1 ( OPJ_INT32 a,
OPJ_INT32  dn,
OPJ_INT32  sn,
OPJ_INT32  cas,
OPJ_INT32  win_l_x0,
OPJ_INT32  win_l_x1,
OPJ_INT32  win_h_x0,
OPJ_INT32  win_h_x1 
)
static

◆ opj_dwt_decode_partial_1_parallel()

static void opj_dwt_decode_partial_1_parallel ( OPJ_INT32 a,
OPJ_UINT32  nb_cols,
OPJ_INT32  dn,
OPJ_INT32  sn,
OPJ_INT32  cas,
OPJ_INT32  win_l_x0,
OPJ_INT32  win_l_x1,
OPJ_INT32  win_h_x0,
OPJ_INT32  win_h_x1 
)
static

◆ opj_dwt_decode_partial_97()

static OPJ_BOOL opj_dwt_decode_partial_97 ( opj_tcd_tilecomp_t *OPJ_RESTRICT  tilec,
OPJ_UINT32  numres 
)
static

◆ opj_dwt_decode_partial_tile()

static OPJ_BOOL opj_dwt_decode_partial_tile ( opj_tcd_tilecomp_t tilec,
OPJ_UINT32  numres 
)
static

◆ opj_dwt_decode_real()

OPJ_BOOL opj_dwt_decode_real ( opj_tcd_t p_tcd,
opj_tcd_tilecomp_t *OPJ_RESTRICT  tilec,
OPJ_UINT32  numres 
)

Inverse 9-7 wavelet transform in 2-D.

Apply an irreversible inverse DWT transform to a component of an image.

Parameters
p_tcdTCD handle
tilecTile component information (current tile)
numresNumber of resolution levels to decode

References opj_dwt_decode_partial_97(), opj_dwt_decode_tile_97(), opj_tcd::thread_pool, and opj_tcd::whole_tile_decoding.

Referenced by main(), and opj_tcd_dwt_decode().

◆ opj_dwt_decode_tile()

static OPJ_BOOL opj_dwt_decode_tile ( opj_thread_pool_t tp,
opj_tcd_tilecomp_t tilec,
OPJ_UINT32  i 
)
static

◆ opj_dwt_decode_tile_97()

static OPJ_BOOL opj_dwt_decode_tile_97 ( opj_thread_pool_t tp,
opj_tcd_tilecomp_t *OPJ_RESTRICT  tilec,
OPJ_UINT32  numres 
)
static

◆ opj_dwt_decode_v_func()

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

◆ opj_dwt_deinterleave_h()

static void opj_dwt_deinterleave_h ( const OPJ_INT32 *OPJ_RESTRICT  a,
OPJ_INT32 *OPJ_RESTRICT  b,
OPJ_INT32  dn,
OPJ_INT32  sn,
OPJ_INT32  cas 
)
static

Forward lazy transform (horizontal)

References OPJ_RESTRICT.

Referenced by opj_dwt_encode_and_deinterleave_h_one_row_real().

◆ opj_dwt_deinterleave_v_cols()

static INLINE void opj_dwt_deinterleave_v_cols ( const OPJ_INT32 *OPJ_RESTRICT  src,
OPJ_INT32 *OPJ_RESTRICT  dst,
OPJ_INT32  dn,
OPJ_INT32  sn,
OPJ_UINT32  stride_width,
OPJ_INT32  cas,
OPJ_UINT32  cols 
)
static

◆ opj_dwt_encode()

OPJ_BOOL opj_dwt_encode ( opj_tcd_t p_tcd,
opj_tcd_tilecomp_t tilec 
)

Forward 5-3 wavelet transform in 2-D.

Apply a reversible DWT transform to a component of an image.

Parameters
p_tcdTCD handle
tilecTile component information (current tile)

References opj_dwt_encode_and_deinterleave_h_one_row(), opj_dwt_encode_and_deinterleave_v(), opj_dwt_encode_procedure(), and opj_tcd::thread_pool.

Referenced by main(), and opj_tcd_dwt_encode().

◆ opj_dwt_encode_1_real()

static void opj_dwt_encode_1_real ( void *  a,
OPJ_INT32  dn,
OPJ_INT32  sn,
OPJ_INT32  cas 
)
static

◆ opj_dwt_encode_and_deinterleave_h_one_row()

static void opj_dwt_encode_and_deinterleave_h_one_row ( void *  rowIn,
void *  tmpIn,
OPJ_UINT32  width,
OPJ_BOOL  even 
)
static

Process one line for the horizontal pass of the 5x3 forward transform.

References OPJ_RESTRICT.

Referenced by opj_dwt_encode().

◆ opj_dwt_encode_and_deinterleave_h_one_row_real()

static void opj_dwt_encode_and_deinterleave_h_one_row_real ( void *  rowIn,
void *  tmpIn,
OPJ_UINT32  width,
OPJ_BOOL  even 
)
static

Process one line for the horizontal pass of the 9x7 forward transform.

References opj_dwt_deinterleave_h(), opj_dwt_encode_1_real(), and OPJ_RESTRICT.

Referenced by opj_dwt_encode_real().

◆ opj_dwt_encode_and_deinterleave_v()

static void opj_dwt_encode_and_deinterleave_v ( void *  arrayIn,
void *  tmpIn,
OPJ_UINT32  height,
OPJ_BOOL  even,
OPJ_UINT32  stride_width,
OPJ_UINT32  cols 
)
static

◆ opj_dwt_encode_and_deinterleave_v_real()

static void opj_dwt_encode_and_deinterleave_v_real ( void *  arrayIn,
void *  tmpIn,
OPJ_UINT32  height,
OPJ_BOOL  even,
OPJ_UINT32  stride_width,
OPJ_UINT32  cols 
)
static

◆ opj_dwt_encode_h_func()

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

◆ opj_dwt_encode_procedure()

static INLINE OPJ_BOOL opj_dwt_encode_procedure ( opj_thread_pool_t tp,
opj_tcd_tilecomp_t tilec,
opj_encode_and_deinterleave_v_fnptr_type  p_encode_and_deinterleave_v,
opj_encode_and_deinterleave_h_one_row_fnptr_type  p_encode_and_deinterleave_h_one_row 
)
static

◆ opj_dwt_encode_real()

OPJ_BOOL opj_dwt_encode_real ( opj_tcd_t p_tcd,
opj_tcd_tilecomp_t tilec 
)

Forward 9-7 wavelet transform in 2-D.

Apply an irreversible DWT transform to a component of an image.

Parameters
p_tcdTCD handle
tilecTile component information (current tile)

References opj_dwt_encode_and_deinterleave_h_one_row_real(), opj_dwt_encode_and_deinterleave_v_real(), opj_dwt_encode_procedure(), and opj_tcd::thread_pool.

Referenced by main(), and opj_tcd_dwt_encode().

◆ opj_dwt_encode_step1_combined()

static void opj_dwt_encode_step1_combined ( OPJ_FLOAT32 fw,
OPJ_UINT32  iters_c1,
OPJ_UINT32  iters_c2,
const OPJ_FLOAT32  c1,
const OPJ_FLOAT32  c2 
)
static

References opj_int_abs(), and opj_uint_min().

Referenced by opj_dwt_encode_1_real().

◆ opj_dwt_encode_step2()

static void opj_dwt_encode_step2 ( OPJ_FLOAT32 fl,
OPJ_FLOAT32 fw,
OPJ_UINT32  end,
OPJ_UINT32  m,
OPJ_FLOAT32  c 
)
static

References opj_uint_min().

Referenced by opj_dwt_encode_1_real().

◆ opj_dwt_encode_stepsize()

static void opj_dwt_encode_stepsize ( OPJ_INT32  stepsize,
OPJ_INT32  numbps,
opj_stepsize_t bandno_stepsize 
)
static

Explicit calculation of the Quantization Stepsizes.

References opj_stepsize::expn, opj_stepsize::mant, and opj_int_floorlog2().

Referenced by opj_dwt_calc_explicit_stepsizes().

◆ opj_dwt_encode_v_func()

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

◆ opj_dwt_fetch_cols_vertical_pass()

static void opj_dwt_fetch_cols_vertical_pass ( const void *  arrayIn,
void *  tmpOut,
OPJ_UINT32  height,
OPJ_UINT32  stride_width,
OPJ_UINT32  cols 
)
static

Fetch up to cols <= NB_ELTS_V8 for each line, and put them in tmpOut.

References NB_ELTS_V8, and OPJ_RESTRICT.

Referenced by opj_dwt_encode_and_deinterleave_v(), and opj_dwt_encode_and_deinterleave_v_real().

◆ opj_dwt_get_band_coordinates()

static void opj_dwt_get_band_coordinates ( opj_tcd_tilecomp_t tilec,
OPJ_UINT32  resno,
OPJ_UINT32  bandno,
OPJ_UINT32  tcx0,
OPJ_UINT32  tcy0,
OPJ_UINT32  tcx1,
OPJ_UINT32  tcy1,
OPJ_UINT32 tbx0,
OPJ_UINT32 tby0,
OPJ_UINT32 tbx1,
OPJ_UINT32 tby1 
)
static

◆ opj_dwt_getnorm()

OPJ_FLOAT64 opj_dwt_getnorm ( OPJ_UINT32  level,
OPJ_UINT32  orient 
)

Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.

Parameters
levelLevel of the wavelet function
orientBand of the wavelet function
Returns
Returns the norm of the wavelet function

References opj_dwt_norms.

Referenced by opj_t1_getwmsedec().

◆ opj_dwt_getnorm_real()

OPJ_FLOAT64 opj_dwt_getnorm_real ( OPJ_UINT32  level,
OPJ_UINT32  orient 
)

Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.

Parameters
levelLevel of the wavelet function
orientBand of the wavelet function
Returns
Returns the norm of the 9-7 wavelet

References opj_dwt_norms_real.

Referenced by opj_dwt_calc_explicit_stepsizes(), and opj_t1_getwmsedec().

◆ opj_dwt_init_sparse_array()

static opj_sparse_array_int32_t* opj_dwt_init_sparse_array ( opj_tcd_tilecomp_t tilec,
OPJ_UINT32  numres 
)
static

◆ opj_dwt_interleave_partial_h()

static void opj_dwt_interleave_partial_h ( OPJ_INT32 dest,
OPJ_INT32  cas,
opj_sparse_array_int32_t sa,
OPJ_UINT32  sa_line,
OPJ_UINT32  sn,
OPJ_UINT32  win_l_x0,
OPJ_UINT32  win_l_x1,
OPJ_UINT32  win_h_x0,
OPJ_UINT32  win_h_x1 
)
static

◆ opj_dwt_interleave_partial_v()

static void opj_dwt_interleave_partial_v ( OPJ_INT32 dest,
OPJ_INT32  cas,
opj_sparse_array_int32_t sa,
OPJ_UINT32  sa_col,
OPJ_UINT32  nb_cols,
OPJ_UINT32  sn,
OPJ_UINT32  win_l_y0,
OPJ_UINT32  win_l_y1,
OPJ_UINT32  win_h_y0,
OPJ_UINT32  win_h_y1 
)
static

◆ opj_dwt_max_resolution()

static OPJ_UINT32 opj_dwt_max_resolution ( opj_tcd_resolution_t *OPJ_RESTRICT  r,
OPJ_UINT32  i 
)
static

◆ opj_dwt_segment_grow()

static void opj_dwt_segment_grow ( OPJ_UINT32  filter_width,
OPJ_UINT32  max_size,
OPJ_UINT32 start,
OPJ_UINT32 end 
)
static

◆ opj_idwt3_v_cas0()

static void opj_idwt3_v_cas0 ( OPJ_INT32 tmp,
const OPJ_INT32  sn,
const OPJ_INT32  len,
OPJ_INT32 tiledp_col,
const OPJ_SIZE_T  stride 
)
static

Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on even coordinate.

References opj_int_add_no_overflow(), and opj_int_sub_no_overflow().

Referenced by opj_idwt53_v().

◆ opj_idwt3_v_cas1()

static void opj_idwt3_v_cas1 ( OPJ_INT32 tmp,
const OPJ_INT32  sn,
const OPJ_INT32  len,
OPJ_INT32 tiledp_col,
const OPJ_SIZE_T  stride 
)
static

Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on odd coordinate.

Referenced by opj_idwt53_v().

◆ opj_idwt53_h()

static void opj_idwt53_h ( const opj_dwt_t dwt,
OPJ_INT32 tiledp 
)
static

◆ opj_idwt53_h_cas0()

static void opj_idwt53_h_cas0 ( OPJ_INT32 tmp,
const OPJ_INT32  sn,
const OPJ_INT32  len,
OPJ_INT32 tiledp 
)
static

References opj_int_add_no_overflow().

Referenced by opj_idwt53_h().

◆ opj_idwt53_h_cas1()

static void opj_idwt53_h_cas1 ( OPJ_INT32 tmp,
const OPJ_INT32  sn,
const OPJ_INT32  len,
OPJ_INT32 tiledp 
)
static

References opj_int_add_no_overflow().

Referenced by opj_idwt53_h().

◆ opj_idwt53_v()

static void opj_idwt53_v ( const opj_dwt_t dwt,
OPJ_INT32 tiledp_col,
OPJ_SIZE_T  stride,
OPJ_INT32  nb_cols 
)
static

◆ opj_v8dwt_decode()

static void opj_v8dwt_decode ( opj_v8dwt_t *OPJ_RESTRICT  dwt)
static

◆ opj_v8dwt_decode_step1()

static void opj_v8dwt_decode_step1 ( opj_v8_t w,
OPJ_UINT32  start,
OPJ_UINT32  end,
const OPJ_FLOAT32  c 
)
static

References OPJ_RESTRICT.

Referenced by opj_v8dwt_decode().

◆ opj_v8dwt_decode_step2()

static void opj_v8dwt_decode_step2 ( opj_v8_t l,
opj_v8_t w,
OPJ_UINT32  start,
OPJ_UINT32  end,
OPJ_UINT32  m,
OPJ_FLOAT32  c 
)
static

References NB_ELTS_V8, and opj_uint_min().

Referenced by opj_v8dwt_decode().

◆ opj_v8dwt_encode_step1()

static void opj_v8dwt_encode_step1 ( OPJ_FLOAT32 fw,
OPJ_UINT32  end,
const OPJ_FLOAT32  cst 
)
static

◆ opj_v8dwt_encode_step2()

static void opj_v8dwt_encode_step2 ( OPJ_FLOAT32 fl,
OPJ_FLOAT32 fw,
OPJ_UINT32  end,
OPJ_UINT32  m,
OPJ_FLOAT32  cst 
)
static

◆ opj_v8dwt_interleave_h()

static void opj_v8dwt_interleave_h ( opj_v8dwt_t *OPJ_RESTRICT  dwt,
OPJ_FLOAT32 *OPJ_RESTRICT  a,
OPJ_UINT32  width,
OPJ_UINT32  remaining_height 
)
static

◆ opj_v8dwt_interleave_partial_h()

static void opj_v8dwt_interleave_partial_h ( opj_v8dwt_t dwt,
opj_sparse_array_int32_t sa,
OPJ_UINT32  sa_line,
OPJ_UINT32  remaining_height 
)
static

◆ opj_v8dwt_interleave_partial_v()

static void opj_v8dwt_interleave_partial_v ( opj_v8dwt_t *OPJ_RESTRICT  dwt,
opj_sparse_array_int32_t sa,
OPJ_UINT32  sa_col,
OPJ_UINT32  nb_elts_read 
)
static

◆ opj_v8dwt_interleave_v()

static INLINE void opj_v8dwt_interleave_v ( opj_v8dwt_t *OPJ_RESTRICT  dwt,
OPJ_FLOAT32 *OPJ_RESTRICT  a,
OPJ_UINT32  width,
OPJ_UINT32  nb_elts_read 
)
static

Variable Documentation

◆ opj_dwt_alpha

const OPJ_FLOAT32 opj_dwt_alpha = -1.586134342f
static

◆ opj_dwt_beta

const OPJ_FLOAT32 opj_dwt_beta = -0.052980118f
static

◆ opj_dwt_delta

const OPJ_FLOAT32 opj_dwt_delta = 0.443506852f
static

◆ opj_dwt_gamma

const OPJ_FLOAT32 opj_dwt_gamma = 0.882911075f
static

◆ opj_dwt_norms

const OPJ_FLOAT64 opj_dwt_norms[4][10]
static
Initial value:
= {
{1.000, 1.500, 2.750, 5.375, 10.68, 21.34, 42.67, 85.33, 170.7, 341.3},
{1.038, 1.592, 2.919, 5.703, 11.33, 22.64, 45.25, 90.48, 180.9},
{1.038, 1.592, 2.919, 5.703, 11.33, 22.64, 45.25, 90.48, 180.9},
{.7186, .9218, 1.586, 3.043, 6.019, 12.01, 24.00, 47.97, 95.93}
}

Referenced by opj_dwt_getnorm().

◆ opj_dwt_norms_real

const OPJ_FLOAT64 opj_dwt_norms_real[4][10]
static
Initial value:
= {
{1.000, 1.965, 4.177, 8.403, 16.90, 33.84, 67.69, 135.3, 270.6, 540.9},
{2.022, 3.989, 8.355, 17.04, 34.27, 68.63, 137.3, 274.6, 549.0},
{2.022, 3.989, 8.355, 17.04, 34.27, 68.63, 137.3, 274.6, 549.0},
{2.080, 3.865, 8.307, 17.18, 34.71, 69.59, 139.3, 278.6, 557.2}
}

Referenced by opj_dwt_getnorm_real().

◆ opj_invK

const OPJ_FLOAT32 opj_invK = (OPJ_FLOAT32)(1.0 / 1.230174105)
static

◆ opj_K

const OPJ_FLOAT32 opj_K = 1.230174105f
static