OpenJPEG  2.3.1
Data Structures | Macros | Typedefs
DWT - Implementation of a discrete wavelet transform

Data Structures

struct  dwt_local
 
union  opj_v4_t
 
struct  v4dwt_local
 

Macros

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

Typedefs

typedef void(* DWT1DFN) (const opj_dwt_t *v)
 Virtual function type for wavelet transform in 1-D. More...
 

Local data structures

typedef struct dwt_local opj_dwt_t
 
typedef struct v4dwt_local opj_v4dwt_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_c13318 = 1.625732422f
 

Local static functions

static void opj_dwt_deinterleave_h (OPJ_INT32 *a, OPJ_INT32 *b, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
 Forward lazy transform (horizontal) More...
 
static void opj_dwt_deinterleave_v (OPJ_INT32 *a, OPJ_INT32 *b, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 x, OPJ_INT32 cas)
 Forward lazy transform (vertical) More...
 
static void opj_dwt_encode_1 (OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
 Forward 5-3 wavelet transform in 1-D. More...
 
static void opj_dwt_encode_1_real (OPJ_INT32 *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_tcd_tilecomp_t *tilec, void(*p_function)(OPJ_INT32 *, OPJ_INT32, OPJ_INT32, OPJ_INT32))
 
static OPJ_UINT32 opj_dwt_max_resolution (opj_tcd_resolution_t *OPJ_RESTRICT r, OPJ_UINT32 i)
 
static void opj_v4dwt_decode (opj_v4dwt_t *OPJ_RESTRICT dwt)
 
static void opj_v4dwt_interleave_h (opj_v4dwt_t *OPJ_RESTRICT dwt, OPJ_FLOAT32 *OPJ_RESTRICT a, OPJ_UINT32 width, OPJ_UINT32 remaining_height)
 
static void opj_v4dwt_interleave_v (opj_v4dwt_t *OPJ_RESTRICT dwt, OPJ_FLOAT32 *OPJ_RESTRICT a, OPJ_UINT32 width, OPJ_UINT32 nb_elts_read)
 
static void opj_v4dwt_decode_step1 (opj_v4_t *w, OPJ_UINT32 start, OPJ_UINT32 end, const OPJ_FLOAT32 c)
 
static void opj_v4dwt_decode_step2 (opj_v4_t *l, opj_v4_t *w, OPJ_UINT32 start, OPJ_UINT32 end, OPJ_UINT32 m, OPJ_FLOAT32 c)
 

Exported functions

OPJ_BOOL opj_dwt_encode (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_UINT32 opj_dwt_getgain (OPJ_UINT32 orient)
 Get the gain of a subband for the reversible 5-3 DWT. 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_tilecomp_t *tilec)
 Forward 9-7 wavelet transform in 2-D. More...
 
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...
 
OPJ_UINT32 opj_dwt_getgain_real (OPJ_UINT32 orient)
 Get the gain of a subband for the irreversible 9-7 DWT. 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...
 

Detailed Description

Macro Definition Documentation

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

Referenced by opj_dwt_decode_tile(), opj_dwt_decode_v_func(), opj_idwt53_h(), and opj_idwt53_v().

◆ VREG_INT_COUNT

#define VREG_INT_COUNT   4

Number of int32 values in a SSE2 register.

Referenced by opj_idwt53_h().

Typedef Documentation

◆ DWT1DFN

typedef void(* DWT1DFN) (const opj_dwt_t *v)

Virtual function type for wavelet transform in 1-D.

◆ opj_dwt_t

typedef struct dwt_local opj_dwt_t

◆ opj_v4dwt_t

typedef struct v4dwt_local opj_v4dwt_t

Function Documentation

◆ 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_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_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(), and opj_tcd::whole_tile_decoding.

Referenced by 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_deinterleave_h()

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

Forward lazy transform (horizontal)

References dwt_local::cas, dwt_local::dn, and dwt_local::sn.

Referenced by opj_dwt_encode_procedure().

◆ opj_dwt_deinterleave_v()

static void opj_dwt_deinterleave_v ( OPJ_INT32 a,
OPJ_INT32 b,
OPJ_INT32  dn,
OPJ_INT32  sn,
OPJ_INT32  x,
OPJ_INT32  cas 
)
static

Forward lazy transform (vertical)

References dwt_local::cas, dwt_local::dn, dwt_local::mem, and dwt_local::sn.

Referenced by opj_dwt_encode_procedure().

◆ opj_dwt_encode()

OPJ_BOOL opj_dwt_encode ( 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
tilecTile component information (current tile)

References opj_dwt_encode_1(), and opj_dwt_encode_procedure().

Referenced by main(), and opj_tcd_dwt_encode().

◆ opj_dwt_encode_1()

static void opj_dwt_encode_1 ( OPJ_INT32 a,
OPJ_INT32  dn,
OPJ_INT32  sn,
OPJ_INT32  cas 
)
static

Forward 5-3 wavelet transform in 1-D.

References dwt_local::cas, dwt_local::dn, dwt_local::mem, OPJ_D, OPJ_D_, OPJ_DD_, OPJ_S, OPJ_S_, OPJ_SS_, and dwt_local::sn.

Referenced by opj_dwt_encode().

◆ opj_dwt_encode_1_real()

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

Forward 9-7 wavelet transform in 1-D.

References dwt_local::dn, OPJ_D, OPJ_D_, OPJ_DD_, opj_int_fix_mul(), OPJ_S, OPJ_S_, OPJ_SS_, and dwt_local::sn.

Referenced by opj_dwt_encode_real().

◆ opj_dwt_encode_procedure()

static INLINE OPJ_BOOL opj_dwt_encode_procedure ( opj_tcd_tilecomp_t tilec,
void(*)(OPJ_INT32 *, OPJ_INT32, OPJ_INT32, OPJ_INT32 p_function 
)
static

◆ opj_dwt_encode_real()

OPJ_BOOL opj_dwt_encode_real ( 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
tilecTile component information (current tile)

References opj_dwt_encode_1_real(), and opj_dwt_encode_procedure().

Referenced by opj_tcd_dwt_encode().

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

OPJ_UINT32 opj_dwt_getgain ( OPJ_UINT32  orient)

Get the gain of a subband for the reversible 5-3 DWT.

Parameters
orientNumber that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH)
Returns
Returns 0 if orient = 0, returns 1 if orient = 1 or 2, returns 2 otherwise

Referenced by opj_tcd_init_tile().

◆ opj_dwt_getgain_real()

OPJ_UINT32 opj_dwt_getgain_real ( OPJ_UINT32  orient)

Get the gain of a subband for the irreversible 9-7 DWT.

Parameters
orientNumber that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH)
Returns
Returns the gain of the 9-7 wavelet transform

Referenced by opj_tcd_init_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
levelLevel of the wavelet function
orientBand of the wavelet function
Returns
Returns the norm of the wavelet function

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

Referenced by opj_t1_getwmsedec().

◆ opj_dwt_max_resolution()

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

◆ opj_v4dwt_decode()

static void opj_v4dwt_decode ( opj_v4dwt_t *OPJ_RESTRICT  dwt)
static

◆ opj_v4dwt_decode_step1()

static void opj_v4dwt_decode_step1 ( opj_v4_t w,
OPJ_UINT32  start,
OPJ_UINT32  end,
const OPJ_FLOAT32  c 
)
static

References OPJ_RESTRICT.

Referenced by opj_v4dwt_decode().

◆ opj_v4dwt_decode_step2()

static void opj_v4dwt_decode_step2 ( opj_v4_t l,
opj_v4_t w,
OPJ_UINT32  start,
OPJ_UINT32  end,
OPJ_UINT32  m,
OPJ_FLOAT32  c 
)
static

References opj_uint_min().

Referenced by opj_v4dwt_decode().

◆ opj_v4dwt_interleave_h()

static void opj_v4dwt_interleave_h ( opj_v4dwt_t *OPJ_RESTRICT  dwt,
OPJ_FLOAT32 *OPJ_RESTRICT  a,
OPJ_UINT32  width,
OPJ_UINT32  remaining_height 
)
static

References OPJ_RESTRICT.

Referenced by opj_dwt_decode_tile_97().

◆ opj_v4dwt_interleave_v()

static void opj_v4dwt_interleave_v ( opj_v4dwt_t *OPJ_RESTRICT  dwt,
OPJ_FLOAT32 *OPJ_RESTRICT  a,
OPJ_UINT32  width,
OPJ_UINT32  nb_elts_read 
)
static

References OPJ_RESTRICT.

Referenced by opj_dwt_decode_tile_97().

Variable Documentation

◆ opj_c13318

const OPJ_FLOAT32 opj_c13318 = 1.625732422f
static

Referenced by opj_v4dwt_decode().

◆ opj_dwt_alpha

const OPJ_FLOAT32 opj_dwt_alpha = 1.586134342f
static

Referenced by opj_v4dwt_decode().

◆ opj_dwt_beta

const OPJ_FLOAT32 opj_dwt_beta = 0.052980118f
static

Referenced by opj_v4dwt_decode().

◆ opj_dwt_delta

const OPJ_FLOAT32 opj_dwt_delta = -0.443506852f
static

Referenced by opj_v4dwt_decode().

◆ opj_dwt_gamma

const OPJ_FLOAT32 opj_dwt_gamma = -0.882911075f
static

Referenced by opj_v4dwt_decode().

◆ opj_K

const OPJ_FLOAT32 opj_K = 1.230174105f
static

Referenced by opj_v4dwt_decode().