Grok 20.3.2
BlockCoderMacros.h File Reference

Go to the source code of this file.

Namespaces

namespace  grk
 ResWindow.
namespace  grk::t1

Macros

#define DEC_PASS_CLN_STEP(checkFlags, partial, flags, flagsPtr, flagsStride, data, dataStride, ciorig, ci, vsc)
#define DEC_PASS_CLN_IMPL(bpno, vsc, w_, h_, flagsStride)
#define DEC_PASS_SIG_STEP(flags, flagsPtr, flagsStride, data, dataStride, ciorig, ci, vsc)
#define DEC_PASS_SIG_IMPL(bpno, vsc, w_, h_, flagsStride)
#define DEC_PASS_REF_STEP(flags, data, dataStride, ciorig, ci)
#define DEC_PASS_REF_IMPL(bpno, w_, h_, flagsStride)

Macro Definition Documentation

◆ DEC_PASS_CLN_IMPL

#define DEC_PASS_CLN_IMPL ( bpno,
vsc,
w_,
h_,
flagsStride )

◆ DEC_PASS_CLN_STEP

#define DEC_PASS_CLN_STEP ( checkFlags,
partial,
flags,
flagsPtr,
flagsStride,
data,
dataStride,
ciorig,
ci,
vsc )
Value:
do \
{ \
if(!checkFlags || !(flags & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci)))) \
{ \
uint8_t v; \
if(!partial) \
{ \
uint8_t ctxt1 = GETCTXNO_ZC(mqc, flags >> (ci)); \
SETCURCTX(curctx, ctxt1); \
DEC_SYMBOL(v, mqc, curctx, a, c, ct); \
if(!v) \
{ \
break; \
} \
} \
uint8_t lu = getctxtno_sc_or_spb_index(flags, flagsPtr[-1], flagsPtr[1], ci); \
SETCURCTX(curctx, lut_ctxno_sc[lu]); \
DEC_SYMBOL(v, mqc, curctx, a, c, ct); \
v = v ^ lut_spb[lu]; \
(data)[ciorig * dataStride] = v ? -oneplushalf : oneplushalf; \
UPDATE_FLAGS(flags, flagsPtr, ci, v, flagsStride, vsc); \
} \
} while(0)
#define GETCTXNO_ZC(mqc, f)
Definition mqc_base.h:176
#define T1_SIGMA_THIS
Definition mqc_base.h:118
#define T1_PI_THIS
Definition mqc_base.h:130
uint8_t getctxtno_sc_or_spb_index(uint32_t fX, uint32_t pfX, uint32_t nfX, uint32_t ci)
Definition mqc_base.h:188
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

◆ DEC_PASS_REF_IMPL

#define DEC_PASS_REF_IMPL ( bpno,
w_,
h_,
flagsStride )
Value:
{ \
DEC_PASS_LOCAL_VARIABLES(flagsStride) \
const int32_t poshalf = one >> 1; \
for(k = 0; k < (h_ & ~3u); k += 4, dataPtr += 3 * w_, flagsPtr += 2) \
{ \
for(i = 0; i < w_; ++i, ++dataPtr, ++flagsPtr) \
{ \
_flags = *flagsPtr; \
if(_flags != 0) \
{ \
DEC_PASS_REF_STEP(_flags, dataPtr, w_, 0, 0); \
DEC_PASS_REF_STEP(_flags, dataPtr, w_, 1, 3); \
DEC_PASS_REF_STEP(_flags, dataPtr, w_, 2, 6); \
DEC_PASS_REF_STEP(_flags, dataPtr, w_, 3, 9); \
*flagsPtr = _flags; \
} \
} \
} \
if(k < h_) \
for(i = 0; i < w_; ++i, ++dataPtr, ++flagsPtr) \
for(j = 0; j < h_ - k; ++j) \
{ \
_flags = *flagsPtr; \
DEC_PASS_REF_STEP(_flags, dataPtr + j * w_, 0, j, j * 3); \
*flagsPtr = _flags; \
} \
POP_MQC(); \
}

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

◆ DEC_PASS_REF_STEP

#define DEC_PASS_REF_STEP ( flags,
data,
dataStride,
ciorig,
ci )
Value:
do \
{ \
if((flags & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci))) == (T1_SIGMA_THIS << (ci))) \
{ \
uint8_t ctxno = GETCTXNO_MAG(flags >> (ci)); \
SETCURCTX(curctx, ctxno); \
uint8_t v; \
DEC_SYMBOL(v, mqc, curctx, a, c, ct); \
(data)[ciorig * dataStride] += (v ^ ((data)[ciorig * dataStride] < 0)) ? poshalf : -poshalf; \
flags |= T1_MU_THIS << (ci); \
} \
} while(0)
#define T1_MU_THIS
Definition mqc_base.h:129
#define GETCTXNO_MAG(f)
Definition mqc_base.h:147

◆ DEC_PASS_SIG_IMPL

#define DEC_PASS_SIG_IMPL ( bpno,
vsc,
w_,
h_,
flagsStride )
Value:
{ \
DEC_PASS_LOCAL_VARIABLES(flagsStride) \
const int32_t half = one >> 1; \
const int32_t oneplushalf = one | half; \
for(k = 0; k < (h_ & ~3u); k += 4, dataPtr += 3 * w_, flagsPtr += 2) \
{ \
for(i = 0; i < w_; ++i, ++dataPtr, ++flagsPtr) \
{ \
_flags = *flagsPtr; \
if(_flags != 0) \
{ \
DEC_PASS_SIG_STEP(_flags, flagsPtr, flagsStride, dataPtr, w_, 0, 0, vsc); \
DEC_PASS_SIG_STEP(_flags, flagsPtr, flagsStride, dataPtr, w_, 1, 3, false); \
DEC_PASS_SIG_STEP(_flags, flagsPtr, flagsStride, dataPtr, w_, 2, 6, false); \
DEC_PASS_SIG_STEP(_flags, flagsPtr, flagsStride, dataPtr, w_, 3, 9, false); \
*flagsPtr = _flags; \
} \
} \
} \
if(k < h_) \
for(i = 0; i < w_; ++i, ++dataPtr, ++flagsPtr) \
for(j = 0; j < h_ - k; ++j) \
{ \
_flags = *flagsPtr; \
DEC_PASS_SIG_STEP(_flags, flagsPtr, flagsStride, dataPtr + j * w_, 0, j, 3 * j, vsc); \
*flagsPtr = _flags; \
} \
POP_MQC(); \
}

Referenced by grk::t1::BlockCoder::dec_sigpass(), and grk::t1::BlockCoder::dec_sigpass().

◆ DEC_PASS_SIG_STEP

#define DEC_PASS_SIG_STEP ( flags,
flagsPtr,
flagsStride,
data,
dataStride,
ciorig,
ci,
vsc )
Value:
do \
{ \
if((flags & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci))) == 0U && \
(flags & (T1_SIGMA_NEIGHBOURS << (ci))) != 0U) \
{ \
uint8_t ctxt1 = GETCTXNO_ZC(mqc, flags >> (ci)); \
SETCURCTX(curctx, ctxt1); \
uint8_t v; \
DEC_SYMBOL(v, mqc, curctx, a, c, ct); \
if(v) \
{ \
uint8_t lu = getctxtno_sc_or_spb_index(flags, flagsPtr[-1], flagsPtr[1], ci); \
uint8_t ctxt2 = lut_ctxno_sc[lu]; \
uint8_t spb = lut_spb[lu]; \
SETCURCTX(curctx, ctxt2); \
DEC_SYMBOL(v, mqc, curctx, a, c, ct); \
v = v ^ spb; \
(data)[(ciorig) * dataStride] = v ? -oneplushalf : oneplushalf; \
UPDATE_FLAGS(flags, flagsPtr, ci, v, flagsStride, vsc); \
} \
flags |= T1_PI_THIS << (ci); \
} \
} while(0)
#define T1_SIGMA_NEIGHBOURS
Definition mqc_base.h:123