Grok 20.3.2
BlockCoderEnc.cpp File Reference
#include "CodeblockCompress.h"
#include "CodeblockDecompress.h"
#include "t1_luts.h"
#include "BlockCoder.h"

Namespaces

namespace  grk
 ResWindow.
namespace  grk::t1

Macros

#define enc_sigpass_step_macro(datap, ci, vsc)
#define enc_refpass_step_macro(datap, ci)

Functions

static int16_t grk::t1::getnmsedec_sig (uint32_t x, uint32_t bitpos)
static int16_t grk::t1::getnmsedec_ref (uint32_t x, uint32_t bitpos)
static void grk::t1::update_flags (grk_flag *flagsPtr, uint32_t ci, uint32_t s, uint32_t stride, uint32_t vsc)

Variables

static const double grk::t1::dwt_norms [4][32]
static const double grk::t1::dwt_norms_real [4][32]

Macro Definition Documentation

◆ enc_refpass_step_macro

#define enc_refpass_step_macro ( datap,
ci )
Value:
{ \
uint8_t v; \
uint32_t const shift_flags = (*flagsPtr >> (ci)); \
if((shift_flags & (T1_SIGMA_THIS | T1_PI_THIS)) == T1_SIGMA_THIS) \
{ \
uint8_t ctxno = GETCTXNO_MAG(shift_flags); \
if(nmsedec) \
*nmsedec += getnmsedec_ref((uint32_t)smr_abs(*(datap)), (uint32_t)bpno); \
v = !!(smr_abs(*(datap)) & (uint32_t)one); \
curctx = mqc->ctxs + ctxno; \
if(type == T1_TYPE_RAW) \
mqc_bypass_enc_macro(mqc, c, ct, v) else mqc_encode_macro( \
mqc, curctx, a, c, ct, v)* flagsPtr |= T1_MU_THIS << (ci); \
} \
}
#define T1_TYPE_RAW
Definition CodeblockDecompressImpl.h:402
#define mqc_encode_macro(mqc, curctx, a, c, ct, d)
#define T1_SIGMA_THIS
Definition mqc_base.h:118
#define T1_MU_THIS
Definition mqc_base.h:129
#define T1_PI_THIS
Definition mqc_base.h:130
#define GETCTXNO_MAG(f)
Definition mqc_base.h:147
#define smr_abs(x)
Definition t1_common.h:86

Referenced by grk::t1::BlockCoder::enc_refpass().

◆ enc_sigpass_step_macro

#define enc_sigpass_step_macro ( datap,
ci,
vsc )
Value:
{ \
uint8_t v; \
if((*flagsPtr & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci))) == 0U && \
(*flagsPtr & (T1_SIGMA_NEIGHBOURS << (ci))) != 0U) \
{ \
uint8_t ctxno = GETCTXNO_ZC(mqc, *flagsPtr >> (ci)); \
v = !!(smr_abs(*(datap)) & (uint32_t)one); \
curctx = mqc->ctxs + ctxno; \
if(type == T1_TYPE_RAW) \
mqc_bypass_enc_macro(mqc, c, ct, v) else mqc_encode_macro(mqc, curctx, a, c, ct, v) if(v) \
{ \
uint32_t lu = getctxtno_sc_or_spb_index(*flagsPtr, flagsPtr[-1], flagsPtr[1], ci); \
ctxno = lut_ctxno_sc[lu]; \
v = smr_sign(*(datap)); \
if(nmsedec) \
*nmsedec += getnmsedec_sig((uint32_t)smr_abs(*(datap)), (uint32_t)bpno); \
curctx = mqc->ctxs + ctxno; \
if(type == T1_TYPE_RAW) \
mqc_bypass_enc_macro(mqc, c, ct, v) else mqc_encode_macro(mqc, curctx, a, c, ct, \
v ^ lut_spb[lu]) \
update_flags(flagsPtr, ci, v, w_ + 2, vsc); \
} \
*flagsPtr |= T1_PI_THIS << (ci); \
} \
}
#define GETCTXNO_ZC(mqc, f)
Definition mqc_base.h:176
#define T1_SIGMA_NEIGHBOURS
Definition mqc_base.h:123
#define smr_sign(x)
Definition t1_common.h:87
static const uint8_t lut_ctxno_sc[256]
Definition t1_luts.h:69
static const uint8_t lut_spb[256]
Definition t1_luts.h:85

Referenced by grk::t1::BlockCoder::enc_sigpass().