Grok 20.3.2
grk::t1::BlockCoder Class Reference

#include <BlockCoder.h>

Public Member Functions

 BlockCoder (bool isCompressor, uint16_t maxCblkW, uint16_t maxCblkH, uint32_t cacheStrategy)
 ~BlockCoder ()
void print (void)
bool alloc (uint16_t w, uint16_t h)
void code_block_enc_deallocate (cblk_enc *p_code_block)
 ENCODE ////////////////////////////////////////////////////.
double compress_cblk (cblk_enc *cblk, uint32_t max, uint8_t orientation, uint16_t compno, uint8_t level, uint8_t qmfbid, double stepsize, uint32_t cblksty, const double *mct_norms, uint16_t mct_numcomps, bool doRateControl)
bool decompress_cblk (CodeblockDecompress *cblk, uint8_t orientation, uint32_t cblksty)
int32_t * getUncompressedData (void)
void decompressInitOrientation (uint8_t orientation)
void decompressInitSegment (uint8_t type, uint8_t **buffers, uint32_t *buffer_lengths, uint16_t num_buffers)
void decompressUpdateSegment (uint8_t **buffers, uint32_t *buffer_lengths, uint16_t num_buffers)
bool decompressPass (uint8_t passno, uint8_t passtype, uint8_t numBpsToDecompress, uint8_t type, uint32_t cblksty)
void decompressFinish (uint32_t cblksty, bool finalLayer)
void decompressBackup (void)
void decompressRestore (uint8_t *passno, uint8_t *passtype, uint8_t *numBpsToDecompress)
void setFinalLayer (bool isFinal)

Static Public Member Functions

static double getnorm (uint32_t level, uint8_t orientation, bool reversible)
static bool cacheAll (uint32_t strategy)

Private Member Functions

void initFlags (void)
uint16_t getFlagsStride (void)
uint16_t getFlagsHeight (void)
void checkSegSym (int32_t cblksty)
template<uint16_t w, uint16_t h, bool vsc>
void dec_clnpass (int8_t bpno)
void dec_clnpass (int8_t bpno, int32_t cblksty)
template<uint16_t w, uint16_t h, bool vsc>
void dec_clnpass_diff (int8_t bpno, uint8_t passno, uint8_t passtype)
void dec_clnpass_diff (int8_t bpno, uint8_t passno, uint8_t passtype, int32_t cblksty)
template<uint16_t w, uint16_t h, bool vsc>
void dec_clnpass_diff_final (int8_t bpno, uint8_t passno, uint8_t passtype)
void dec_clnpass_diff_final (int8_t bpno, uint8_t passno, uint8_t passtype, int32_t cblksty)
template<uint16_t w, uint16_t h, bool vsc>
void dec_sigpass (int8_t bpno)
void dec_sigpass (int8_t bpno, int32_t cblksty)
template<uint16_t w, uint16_t h, bool vsc>
void dec_sigpass_diff (int8_t bpno, uint8_t passno, uint8_t passtype)
void dec_sigpass_diff (int8_t bpno, uint8_t passno, uint8_t passtype, int32_t cblksty)
template<uint16_t w, uint16_t h, bool vsc>
void dec_sigpass_diff_final (int8_t bpno, uint8_t passno, uint8_t passtype)
void dec_sigpass_diff_final (int8_t bpno, uint8_t passno, uint8_t passtype, int32_t cblksty)
template<uint16_t w, uint16_t h>
void dec_refpass (int8_t bpno)
void dec_refpass (int8_t bpno)
template<uint16_t w, uint16_t h>
void dec_refpass_diff (int8_t bpno, uint8_t passno, uint8_t passtype)
void dec_refpass_diff (int8_t bpno, uint8_t passno, uint8_t passtype)
template<uint16_t w, uint16_t h>
void dec_refpass_diff_final (int8_t bpno, uint8_t passno, uint8_t passtype)
void dec_refpass_diff_final (int8_t bpno, uint8_t passno, uint8_t passtype)
void dec_sigpass_raw (int8_t bpno, int32_t cblksty)
void dec_refpass_raw (int8_t bpno)
void dec_refpass_step_raw (grk_flag *flagsPtr, int32_t *datap, int32_t poshalf, uint32_t ci)
void dec_sigpass_step_raw (grk_flag *flagsPtr, int32_t *datap, int32_t oneplushalf, uint32_t vsc, uint32_t ci)
void enc_clnpass (int8_t bpno, int32_t *nmsedec, uint32_t cblksty)
void enc_sigpass (int8_t bpno, int32_t *nmsedec, uint8_t type, uint32_t cblksty)
void enc_refpass (int8_t bpno, int32_t *nmsedec, uint8_t type)
int enc_is_term_pass (cblk_enc *cblk, uint32_t cblksty, int8_t bpno, uint32_t passtype)
void code_block_enc_allocate (cblk_enc *p_code_block)
double getnorm_53 (uint32_t level, uint8_t orientation)
 Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.
double getnorm_97 (uint32_t level, uint8_t orientation)
 Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.
double getwmsedec (int32_t nmsedec, uint16_t compno, uint32_t level, uint8_t orientation, int8_t bpno, uint32_t qmfbid, double stepsize, const double *mct_norms, uint32_t mct_numcomps)

Private Attributes

uint32_t cacheStrategy_
mqcoder coder
uint16_t w_
 cached block width
uint16_t stride_
 cached block stride
uint16_t h_
 cached block height
Buffer2dAligned32 uncompressedBuf_
 uncompressed data buffer
int32_t * uncompressedData_
 pointer to uncompressedBuf_ data
grk_flagflags_
 Flags used by decompressor and compressor.
uint32_t flagsLen_
bool compressor

Constructor & Destructor Documentation

◆ BlockCoder()

grk::t1::BlockCoder::BlockCoder ( bool isCompressor,
uint16_t maxCblkW,
uint16_t maxCblkH,
uint32_t cacheStrategy )

◆ ~BlockCoder()

grk::t1::BlockCoder::~BlockCoder ( )

References flags_, and grk::grk_aligned_free().

Member Function Documentation

◆ alloc()

◆ cacheAll()

bool grk::t1::BlockCoder::cacheAll ( uint32_t strategy)
static

◆ checkSegSym()

void grk::t1::BlockCoder::checkSegSym ( int32_t cblksty)
private

◆ code_block_enc_allocate()

void grk::t1::BlockCoder::code_block_enc_allocate ( cblk_enc * p_code_block)
private

References grk::t1::cblk_enc::passes.

Referenced by compress_cblk().

◆ code_block_enc_deallocate()

void grk::t1::BlockCoder::code_block_enc_deallocate ( cblk_enc * code_block)

ENCODE ////////////////////////////////////////////////////.

Deallocate the compressing data of the given precinct.

References grk::t1::cblk_enc::passes.

◆ compress_cblk()

double grk::t1::BlockCoder::compress_cblk ( cblk_enc * cblk,
uint32_t max,
uint8_t orientation,
uint16_t compno,
uint8_t level,
uint8_t qmfbid,
double stepsize,
uint32_t cblksty,
const double * mct_norms,
uint16_t mct_numcomps,
bool doRateControl )

◆ dec_clnpass() [1/2]

template<uint16_t w_, uint16_t h_, bool vsc>
void grk::t1::BlockCoder::dec_clnpass ( int8_t bpno)
private

References DEC_PASS_CLN_IMPL, h_, and w_.

Referenced by dec_clnpass(), and decompressPass().

◆ dec_clnpass() [2/2]

void grk::t1::BlockCoder::dec_clnpass ( int8_t bpno,
int32_t cblksty )
private

◆ dec_clnpass_diff() [1/2]

template<uint16_t w_, uint16_t h_, bool vsc>
void grk::t1::BlockCoder::dec_clnpass_diff ( int8_t bpno,
uint8_t passno,
uint8_t passtype )
private

References DEC_PASS_CLN_IMPL_DIFF, h_, and w_.

Referenced by dec_clnpass_diff(), and decompressPass().

◆ dec_clnpass_diff() [2/2]

void grk::t1::BlockCoder::dec_clnpass_diff ( int8_t bpno,
uint8_t passno,
uint8_t passtype,
int32_t cblksty )
private

◆ dec_clnpass_diff_final() [1/2]

template<uint16_t w_, uint16_t h_, bool vsc>
void grk::t1::BlockCoder::dec_clnpass_diff_final ( int8_t bpno,
uint8_t passno,
uint8_t passtype )
private

◆ dec_clnpass_diff_final() [2/2]

void grk::t1::BlockCoder::dec_clnpass_diff_final ( int8_t bpno,
uint8_t passno,
uint8_t passtype,
int32_t cblksty )
private

◆ dec_refpass() [1/2]

void grk::t1::BlockCoder::dec_refpass ( int8_t bpno)
private

References DEC_PASS_REF_IMPL, dec_refpass(), h_, and w_.

◆ dec_refpass() [2/2]

template<uint16_t w_, uint16_t h_>
void grk::t1::BlockCoder::dec_refpass ( int8_t bpno)
private

References DEC_PASS_REF_IMPL, h_, and w_.

Referenced by dec_refpass(), and decompressPass().

◆ dec_refpass_diff() [1/2]

void grk::t1::BlockCoder::dec_refpass_diff ( int8_t bpno,
uint8_t passno,
uint8_t passtype )
private

◆ dec_refpass_diff() [2/2]

template<uint16_t w_, uint16_t h_>
void grk::t1::BlockCoder::dec_refpass_diff ( int8_t bpno,
uint8_t passno,
uint8_t passtype )
private

References DEC_PASS_REF_IMPL_DIFF, h_, and w_.

Referenced by dec_refpass_diff(), and decompressPass().

◆ dec_refpass_diff_final() [1/2]

void grk::t1::BlockCoder::dec_refpass_diff_final ( int8_t bpno,
uint8_t passno,
uint8_t passtype )
private

◆ dec_refpass_diff_final() [2/2]

template<uint16_t w_, uint16_t h_>
void grk::t1::BlockCoder::dec_refpass_diff_final ( int8_t bpno,
uint8_t passno,
uint8_t passtype )
private

◆ dec_refpass_raw()

void grk::t1::BlockCoder::dec_refpass_raw ( int8_t bpno)
private

◆ dec_refpass_step_raw()

void grk::t1::BlockCoder::dec_refpass_step_raw ( grk_flag * flagsPtr,
int32_t * datap,
int32_t poshalf,
uint32_t ci )
inlineprivate

◆ dec_sigpass() [1/2]

template<uint16_t w_, uint16_t h_, bool vsc>
void grk::t1::BlockCoder::dec_sigpass ( int8_t bpno)
private

References DEC_PASS_SIG_IMPL, h_, and w_.

Referenced by dec_sigpass(), and decompressPass().

◆ dec_sigpass() [2/2]

void grk::t1::BlockCoder::dec_sigpass ( int8_t bpno,
int32_t cblksty )
private

◆ dec_sigpass_diff() [1/2]

template<uint16_t w_, uint16_t h_, bool vsc>
void grk::t1::BlockCoder::dec_sigpass_diff ( int8_t bpno,
uint8_t passno,
uint8_t passtype )
private

References DEC_PASS_SIG_IMPL_DIFF, h_, and w_.

Referenced by dec_sigpass_diff(), and decompressPass().

◆ dec_sigpass_diff() [2/2]

void grk::t1::BlockCoder::dec_sigpass_diff ( int8_t bpno,
uint8_t passno,
uint8_t passtype,
int32_t cblksty )
private

◆ dec_sigpass_diff_final() [1/2]

template<uint16_t w_, uint16_t h_, bool vsc>
void grk::t1::BlockCoder::dec_sigpass_diff_final ( int8_t bpno,
uint8_t passno,
uint8_t passtype )
private

◆ dec_sigpass_diff_final() [2/2]

void grk::t1::BlockCoder::dec_sigpass_diff_final ( int8_t bpno,
uint8_t passno,
uint8_t passtype,
int32_t cblksty )
private

◆ dec_sigpass_raw()

void grk::t1::BlockCoder::dec_sigpass_raw ( int8_t bpno,
int32_t cblksty )
private

◆ dec_sigpass_step_raw()

void grk::t1::BlockCoder::dec_sigpass_step_raw ( grk_flag * flagsPtr,
int32_t * datap,
int32_t oneplushalf,
uint32_t vsc,
uint32_t ci )
inlineprivate

◆ decompress_cblk()

bool grk::t1::BlockCoder::decompress_cblk ( CodeblockDecompress * cblk,
uint8_t orientation,
uint32_t cblksty )

◆ decompressBackup()

void grk::t1::BlockCoder::decompressBackup ( void )

◆ decompressFinish()

void grk::t1::BlockCoder::decompressFinish ( uint32_t cblksty,
bool finalLayer )

References coder, GRK_CBLKSTY_PTERM, and grk::grklog.

◆ decompressInitOrientation()

void grk::t1::BlockCoder::decompressInitOrientation ( uint8_t orientation)

References coder, and lut_ctxno_zc.

◆ decompressInitSegment()

void grk::t1::BlockCoder::decompressInitSegment ( uint8_t type,
uint8_t ** buffers,
uint32_t * buffer_lengths,
uint16_t num_buffers )

References coder, and T1_TYPE_RAW.

◆ decompressPass()

◆ decompressRestore()

void grk::t1::BlockCoder::decompressRestore ( uint8_t * passno,
uint8_t * passtype,
uint8_t * numBpsToDecompress )

◆ decompressUpdateSegment()

void grk::t1::BlockCoder::decompressUpdateSegment ( uint8_t ** buffers,
uint32_t * buffer_lengths,
uint16_t num_buffers )

References coder.

◆ enc_clnpass()

◆ enc_is_term_pass()

int grk::t1::BlockCoder::enc_is_term_pass ( cblk_enc * cblk,
uint32_t cblksty,
int8_t bpno,
uint32_t passtype )
private

◆ enc_refpass()

void grk::t1::BlockCoder::enc_refpass ( int8_t bpno,
int32_t * nmsedec,
uint8_t type )
private

◆ enc_sigpass()

void grk::t1::BlockCoder::enc_sigpass ( int8_t bpno,
int32_t * nmsedec,
uint8_t type,
uint32_t cblksty )
private

◆ getFlagsHeight()

uint16_t grk::t1::BlockCoder::getFlagsHeight ( void )
private

References h_.

Referenced by initFlags().

◆ getFlagsStride()

uint16_t grk::t1::BlockCoder::getFlagsStride ( void )
private

References w_.

Referenced by alloc(), and initFlags().

◆ getnorm()

double grk::t1::BlockCoder::getnorm ( uint32_t level,
uint8_t orientation,
bool reversible )
static

◆ getnorm_53()

double grk::t1::BlockCoder::getnorm_53 ( uint32_t level,
uint8_t orientation )
private

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
orientationBand of the wavelet function
Returns
the norm of the wavelet function

References getnorm().

Referenced by getwmsedec().

◆ getnorm_97()

double grk::t1::BlockCoder::getnorm_97 ( uint32_t level,
uint8_t orientation )
private

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
orientationBand of the wavelet function
Returns
the norm of the 9-7 wavelet

References getnorm().

Referenced by getwmsedec().

◆ getUncompressedData()

int32_t * grk::t1::BlockCoder::getUncompressedData ( void )

References uncompressedBuf_.

◆ getwmsedec()

double grk::t1::BlockCoder::getwmsedec ( int32_t nmsedec,
uint16_t compno,
uint32_t level,
uint8_t orientation,
int8_t bpno,
uint32_t qmfbid,
double stepsize,
const double * mct_norms,
uint32_t mct_numcomps )
private

References getnorm_53(), and getnorm_97().

Referenced by compress_cblk().

◆ initFlags()

void grk::t1::BlockCoder::initFlags ( void )
private

◆ print()

void grk::t1::BlockCoder::print ( void )

References coder.

◆ setFinalLayer()

void grk::t1::BlockCoder::setFinalLayer ( bool isFinal)

References coder.

Member Data Documentation

◆ cacheStrategy_

uint32_t grk::t1::BlockCoder::cacheStrategy_
private

◆ coder

◆ compressor

bool grk::t1::BlockCoder::compressor
private

Referenced by alloc(), and BlockCoder().

◆ flags_

grk_flag* grk::t1::BlockCoder::flags_
private

Flags used by decompressor and compressor.

Such that flags[1+0] is for state of col=0,row=0..3, flags[1+1] for col=1, row=0..3, flags[1+flagsStride] for col=0,row=4..7, ... This array avoids too much cache trashing when processing by 4 vertical samples as done in the various decoding steps.

Referenced by alloc(), BlockCoder(), dec_refpass_raw(), dec_sigpass_raw(), decompressBackup(), decompressRestore(), enc_clnpass(), enc_refpass(), enc_sigpass(), initFlags(), and ~BlockCoder().

◆ flagsLen_

uint32_t grk::t1::BlockCoder::flagsLen_
private

◆ h_

◆ stride_

uint16_t grk::t1::BlockCoder::stride_
private

cached block stride

Referenced by alloc(), BlockCoder(), enc_clnpass(), enc_refpass(), and enc_sigpass().

◆ uncompressedBuf_

Buffer2dAligned32 grk::t1::BlockCoder::uncompressedBuf_
private

uncompressed data buffer

Referenced by alloc(), and getUncompressedData().

◆ uncompressedData_

int32_t* grk::t1::BlockCoder::uncompressedData_
private

◆ w_


The documentation for this class was generated from the following files: