OpenJPEG: dwt.c File Reference

OpenJPEG 2.3.1

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_t * | opj_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

References opj_dwt97_decode_h_job_t::aj, opj_v8_t::f, opj_dwt97_decode_h_job_t::h, NB_ELTS_V8, opj_dwt97_decode_h_job_t::nb_rows, opj_aligned_free(), opj_free(), OPJ_RESTRICT, opj_v8dwt_decode(), opj_v8dwt_interleave_h(), opj_dwt97_decode_h_job_t::rw, opj_dwt97_decode_h_job_t::w, and v8dwt_local::wavelet.

Referenced by opj_dwt_decode_tile_97().

## ◆ opj_dwt97_decode_v_func()

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

References opj_dwt97_decode_v_job_t::aj, opj_dwt97_decode_v_job_t::nb_columns, NB_ELTS_V8, opj_aligned_free(), opj_free(), OPJ_RESTRICT, opj_v8dwt_decode(), opj_v8dwt_interleave_v(), opj_dwt97_decode_v_job_t::rh, opj_dwt97_decode_v_job_t::v, opj_dwt97_decode_v_job_t::w, and v8dwt_local::wavelet.

Referenced by opj_dwt_decode_tile_97().

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

  tccp | Tile-component coding parameters
  prec | Precint 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_tcd | TCD handle
  tilec | Tile component information (current tile)
  numres | Number 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

References opj_dwt_decode_h_job_t::h, dwt_local::mem, opj_dwt_decode_h_job_t::min_j, opj_aligned_free(), opj_free(), opj_idwt53_h(), opj_dwt_decode_h_job_t::tiledp, and opj_dwt_decode_h_job_t::w.

Referenced by opj_dwt_decode_tile().

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

References OPJ_D, OPJ_D_, OPJ_DD_, OPJ_S, OPJ_S_, and OPJ_SS_.

Referenced by opj_dwt_decode_partial_tile().

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

References OPJ_D__off, OPJ_D_off, OPJ_DD__off, OPJ_S__off, OPJ_S_off, and OPJ_SS__off.

Referenced by opj_dwt_decode_partial_tile().

## ◆ opj_dwt_decode_partial_97()

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

References opj_tcd_resolution::bands, v8dwt_local::cas, v8dwt_local::dn, opj_v8_t::f, NB_ELTS_V8, opj_aligned_free(), opj_aligned_malloc(), opj_dwt_get_band_coordinates(), opj_dwt_init_sparse_array(), opj_dwt_max_resolution(), opj_dwt_segment_grow(), OPJ_FALSE, opj_sparse_array_int32_free(), opj_sparse_array_int32_read(), opj_sparse_array_int32_write(), OPJ_TRUE, opj_uint_max(), opj_uint_min(), opj_uint_subs(), OPJ_UNUSED, opj_v8dwt_decode(), opj_v8dwt_interleave_partial_h(), opj_v8dwt_interleave_partial_v(), SIZE_MAX, v8dwt_local::sn, v8dwt_local::wavelet, v8dwt_local::win_h_x0, v8dwt_local::win_h_x1, v8dwt_local::win_l_x0, v8dwt_local::win_l_x1, opj_tcd_resolution::win_x0, opj_tcd_resolution::win_x1, opj_tcd_resolution::win_y0, opj_tcd_resolution::win_y1, opj_tcd_band::x0, opj_tcd_resolution::x0, opj_tcd_resolution::x1, opj_tcd_band::y0, opj_tcd_resolution::y0, and opj_tcd_resolution::y1.

Referenced by opj_dwt_decode_real().

## ◆ opj_dwt_decode_partial_tile()

static OPJ_BOOL opj_dwt_decode_partial_tile | ( | opj_tcd_tilecomp_t * | tilec,
|  | OPJ_UINT32 | numres
| ) |  |
| static

References opj_tcd_resolution::bands, dwt_local::cas, opj_tcd_tilecomp::data_win, dwt_local::dn, dwt_local::mem, opj_aligned_32_malloc(), opj_aligned_free(), opj_dwt_decode_partial_1(), opj_dwt_decode_partial_1_parallel(), opj_dwt_get_band_coordinates(), opj_dwt_init_sparse_array(), opj_dwt_interleave_partial_h(), opj_dwt_interleave_partial_v(), opj_dwt_max_resolution(), opj_dwt_segment_grow(), OPJ_FALSE, opj_sparse_array_int32_free(), opj_sparse_array_int32_read(), opj_sparse_array_int32_write(), OPJ_TRUE, opj_uint_max(), opj_uint_min(), opj_uint_subs(), OPJ_UNUSED, opj_tcd_tilecomp::resolutions, SIZE_MAX, dwt_local::sn, opj_tcd_resolution::win_x0, opj_tcd_tilecomp::win_x0, opj_tcd_resolution::win_x1, opj_tcd_tilecomp::win_x1, opj_tcd_resolution::win_y0, opj_tcd_tilecomp::win_y0, opj_tcd_resolution::win_y1, opj_tcd_tilecomp::win_y1, opj_tcd_band::x0, opj_tcd_resolution::x0, opj_tcd_resolution::x1, opj_tcd_band::y0, opj_tcd_resolution::y0, and opj_tcd_resolution::y1.

Referenced by opj_dwt_decode().

## ◆ 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_tcd | TCD handle
  tilec | Tile component information (current tile)
  numres | Number 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

Inverse wavelet transform in 2-D.

References dwt_local::cas, opj_tcd_tilecomp::data, dwt_local::dn, opj_dwt_decode_h_job_t::h, opj_dwt_decode_h_job_t::max_j, opj_dwt_decode_v_job_t::max_j, dwt_local::mem, opj_dwt_decode_h_job_t::min_j, opj_dwt_decode_v_job_t::min_j, opj_tcd_tilecomp::minimum_num_resolutions, opj_aligned_32_malloc(), opj_aligned_free(), opj_dwt_decode_h_func(), opj_dwt_decode_v_func(), opj_dwt_max_resolution(), OPJ_FALSE, opj_free(), opj_idwt53_h(), opj_idwt53_v(), opj_malloc(), OPJ_RESTRICT, opj_thread_pool_get_thread_count(), opj_thread_pool_submit_job(), opj_thread_pool_wait_completion(), OPJ_TRUE, PARALLEL_COLS_53, opj_tcd_tilecomp::resolutions, opj_dwt_decode_v_job_t::rh, opj_dwt_decode_h_job_t::rw, SIZE_MAX, dwt_local::sn, opj_dwt_decode_h_job_t::tiledp, opj_dwt_decode_v_job_t::tiledp, opj_dwt_decode_v_job_t::v, opj_dwt_decode_h_job_t::w, opj_dwt_decode_v_job_t::w, opj_tcd_resolution::x0, opj_tcd_resolution::x1, opj_tcd_resolution::y0, and opj_tcd_resolution::y1.

Referenced by opj_dwt_decode().

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

References opj_dwt97_decode_h_job_t::aj, opj_dwt97_decode_v_job_t::aj, v8dwt_local::cas, v8dwt_local::dn, opj_v8_t::f, opj_dwt97_decode_h_job_t::h, opj_dwt97_decode_v_job_t::nb_columns, NB_ELTS_V8, opj_dwt97_decode_h_job_t::nb_rows, opj_aligned_free(), opj_aligned_malloc(), opj_dwt97_decode_h_func(), opj_dwt97_decode_v_func(), opj_dwt_max_resolution(), OPJ_FALSE, opj_free(), opj_malloc(), OPJ_RESTRICT, opj_thread_pool_get_thread_count(), opj_thread_pool_submit_job(), opj_thread_pool_wait_completion(), OPJ_TRUE, opj_uint_max(), opj_v8dwt_decode(), opj_v8dwt_interleave_h(), opj_v8dwt_interleave_v(), opj_dwt97_decode_v_job_t::rh, opj_dwt97_decode_h_job_t::rw, SIZE_MAX, v8dwt_local::sn, opj_dwt97_decode_v_job_t::v, opj_dwt97_decode_h_job_t::w, opj_dwt97_decode_v_job_t::w, v8dwt_local::wavelet, v8dwt_local::win_h_x0, v8dwt_local::win_h_x1, v8dwt_local::win_l_x0, v8dwt_local::win_l_x1, opj_tcd_resolution::x0, opj_tcd_resolution::x1, opj_tcd_resolution::y0, and opj_tcd_resolution::y1.

Referenced by opj_dwt_decode_real().

## ◆ opj_dwt_decode_v_func()

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

References opj_dwt_decode_v_job_t::max_j, dwt_local::mem, opj_dwt_decode_v_job_t::min_j, opj_aligned_free(), opj_free(), opj_idwt53_v(), PARALLEL_COLS_53, opj_dwt_decode_v_job_t::tiledp, opj_dwt_decode_v_job_t::v, and opj_dwt_decode_v_job_t::w.

Referenced by opj_dwt_decode_tile().

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

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_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_tcd | TCD handle
  tilec | Tile 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

Forward 9-7 wavelet transform in 1-D.

References opj_dwt_alpha, opj_dwt_beta, opj_dwt_delta, opj_dwt_encode_step1_combined(), opj_dwt_encode_step2(), opj_dwt_gamma, opj_int_min(), opj_invK, and opj_K.

Referenced by opj_dwt_encode_and_deinterleave_h_one_row_real().

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

References NB_ELTS_V8, OPJ_Dc, opj_dwt_deinterleave_v_cols(), opj_dwt_fetch_cols_vertical_pass(), OPJ_RESTRICT, and OPJ_Sc.

Referenced by opj_dwt_encode().

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

References NB_ELTS_V8, opj_dwt_alpha, opj_dwt_beta, opj_dwt_deinterleave_v_cols(), opj_dwt_delta, opj_dwt_fetch_cols_vertical_pass(), opj_dwt_gamma, opj_int_min(), opj_invK, opj_K, OPJ_RESTRICT, opj_v8dwt_encode_step1(), and opj_v8dwt_encode_step2().

Referenced by opj_dwt_encode_real().

## ◆ opj_dwt_encode_h_func()

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

References dwt_local::cas, opj_dwt_encode_h_job_t::h, dwt_local::mem, opj_dwt_encode_h_job_t::min_j, opj_aligned_free(), OPJ_FALSE, opj_free(), OPJ_RESTRICT, OPJ_TRUE, opj_dwt_encode_h_job_t::p_function, opj_dwt_encode_h_job_t::rw, opj_dwt_encode_h_job_t::tiledp, and opj_dwt_encode_h_job_t::w.

Referenced by opj_dwt_encode_procedure().

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

References dwt_local::cas, opj_tcd_tilecomp::data, dwt_local::dn, opj_dwt_encode_h_job_t::h, opj_dwt_encode_h_job_t::max_j, opj_dwt_encode_v_job_t::max_j, dwt_local::mem, opj_dwt_encode_h_job_t::min_j, opj_dwt_encode_v_job_t::min_j, NB_ELTS_V8, opj_tcd_tilecomp::numresolutions, opj_aligned_32_malloc(), opj_aligned_free(), opj_dwt_encode_h_func(), opj_dwt_encode_v_func(), opj_dwt_max_resolution(), OPJ_FALSE, opj_free(), opj_malloc(), OPJ_RESTRICT, opj_thread_pool_get_thread_count(), opj_thread_pool_submit_job(), opj_thread_pool_wait_completion(), OPJ_TRUE, opj_dwt_encode_v_job_t::p_encode_and_deinterleave_v, opj_dwt_encode_h_job_t::p_function, opj_tcd_tilecomp::resolutions, opj_dwt_encode_v_job_t::rh, opj_dwt_encode_h_job_t::rw, SIZE_MAX, dwt_local::sn, opj_dwt_encode_h_job_t::tiledp, opj_dwt_encode_v_job_t::tiledp, opj_dwt_encode_v_job_t::v, opj_dwt_encode_h_job_t::w, opj_dwt_encode_v_job_t::w, opj_tcd_resolution::x0, opj_tcd_tilecomp::x0, opj_tcd_resolution::x1, opj_tcd_tilecomp::x1, opj_tcd_resolution::y0, and opj_tcd_resolution::y1.

Referenced by opj_dwt_encode(), and opj_dwt_encode_real().

## ◆ 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_tcd | TCD handle
  tilec | Tile 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

References dwt_local::cas, opj_dwt_encode_v_job_t::max_j, dwt_local::mem, opj_dwt_encode_v_job_t::min_j, NB_ELTS_V8, opj_aligned_free(), opj_free(), opj_dwt_encode_v_job_t::p_encode_and_deinterleave_v, opj_dwt_encode_v_job_t::rh, opj_dwt_encode_v_job_t::tiledp, opj_dwt_encode_v_job_t::v, and opj_dwt_encode_v_job_t::w.

Referenced by opj_dwt_encode_procedure().

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

References opj_tcd_tilecomp::numresolutions, and opj_uint_ceildivpow2().

Referenced by opj_dwt_decode_partial_97(), and opj_dwt_decode_partial_tile().

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

  level | Level of the wavelet function
  orient | Band 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

  level | Level of the wavelet function
  orient | Band 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

References opj_tcd_band::bandno, opj_tcd_resolution::bands, opj_tcd_precinct::cblks, opj_tcd_precinct::ch, opj_tcd_precinct::cw, opj_tcd_precinct::dec, opj_tcd_cblk_dec::decoded_data, opj_tcd_resolution::numbands, opj_sparse_array_int32_create(), opj_sparse_array_int32_free(), opj_sparse_array_int32_write(), OPJ_TRUE, opj_uint_min(), opj_tcd_resolution::ph, opj_tcd_band::precincts, opj_tcd_resolution::pw, opj_tcd_tilecomp::resolutions, 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_dwt_decode_partial_97(), and opj_dwt_decode_partial_tile().

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

References opj_sparse_array_int32_read(), OPJ_TRUE, and OPJ_UNUSED.

Referenced by opj_dwt_decode_partial_tile().

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

References opj_sparse_array_int32_read(), OPJ_TRUE, and OPJ_UNUSED.

Referenced by opj_dwt_decode_partial_tile().

## ◆ opj_dwt_max_resolution()

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

Referenced by opj_dwt_decode_partial_97(), opj_dwt_decode_partial_tile(), opj_dwt_decode_tile(), opj_dwt_decode_tile_97(), and opj_dwt_encode_procedure().

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

References opj_uint_adds(), opj_uint_min(), and opj_uint_subs().

Referenced by opj_dwt_decode_partial_97(), and opj_dwt_decode_partial_tile().

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

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

References dwt_local::cas, dwt_local::dn, dwt_local::mem, opj_idwt53_h_cas0(), opj_idwt53_h_cas1(), and dwt_local::sn.

Referenced by opj_dwt_decode_h_func(), and opj_dwt_decode_tile().

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

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

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

References dwt_local::cas, dwt_local::dn, dwt_local::mem, opj_idwt3_v_cas0(), opj_idwt3_v_cas1(), PARALLEL_COLS_53, and dwt_local::sn.

Referenced by opj_dwt_decode_tile(), and opj_dwt_decode_v_func().

## ◆ opj_v8dwt_decode()

static void opj_v8dwt_decode | ( | opj_v8dwt_t *OPJ_RESTRICT | dwt | ) |
| static

References opj_dwt_alpha, opj_dwt_beta, opj_dwt_delta, opj_dwt_gamma, opj_int_min(), opj_K, opj_v8dwt_decode_step1(), and opj_v8dwt_decode_step2().

Referenced by opj_dwt97_decode_h_func(), opj_dwt97_decode_v_func(), opj_dwt_decode_partial_97(), and opj_dwt_decode_tile_97().

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

References NB_ELTS_V8.

Referenced by opj_dwt_encode_and_deinterleave_v_real().

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

References NB_ELTS_V8, and opj_uint_min().

Referenced by opj_dwt_encode_and_deinterleave_v_real().

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

References NB_ELTS_V8, and OPJ_RESTRICT.

Referenced by opj_dwt97_decode_h_func(), and opj_dwt_decode_tile_97().

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

References v8dwt_local::cas, NB_ELTS_V8, opj_sparse_array_int32_read(), OPJ_TRUE, OPJ_UNUSED, v8dwt_local::sn, v8dwt_local::wavelet, v8dwt_local::win_h_x0, v8dwt_local::win_h_x1, v8dwt_local::win_l_x0, and v8dwt_local::win_l_x1.

Referenced by opj_dwt_decode_partial_97().

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

References NB_ELTS_V8, opj_sparse_array_int32_read(), OPJ_TRUE, and OPJ_UNUSED.

Referenced by opj_dwt_decode_partial_97().

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

References OPJ_RESTRICT.

Referenced by opj_dwt97_decode_v_func(), and opj_dwt_decode_tile_97().

## Variable Documentation

## ◆ opj_dwt_alpha

const OPJ_FLOAT32 opj_dwt_alpha = -1.586134342f
| static

Referenced by opj_dwt_encode_1_real(), opj_dwt_encode_and_deinterleave_v_real(), and opj_v8dwt_decode().

## ◆ opj_dwt_beta

const OPJ_FLOAT32 opj_dwt_beta = -0.052980118f
| static

Referenced by opj_dwt_encode_1_real(), opj_dwt_encode_and_deinterleave_v_real(), and opj_v8dwt_decode().

## ◆ opj_dwt_delta

const OPJ_FLOAT32 opj_dwt_delta = 0.443506852f
| static

Referenced by opj_dwt_encode_1_real(), opj_dwt_encode_and_deinterleave_v_real(), and opj_v8dwt_decode().

## ◆ opj_dwt_gamma

const OPJ_FLOAT32 opj_dwt_gamma = 0.882911075f
| static

Referenced by opj_dwt_encode_1_real(), opj_dwt_encode_and_deinterleave_v_real(), and opj_v8dwt_decode().

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

Referenced by opj_dwt_encode_1_real(), and opj_dwt_encode_and_deinterleave_v_real().

## ◆ opj_K

const OPJ_FLOAT32 opj_K = 1.230174105f
| static

Referenced by opj_dwt_encode_1_real(), opj_dwt_encode_and_deinterleave_v_real(), and opj_v8dwt_decode().