OpenJPEG 1.5.1
mqc.c File Reference
#include "opj_includes.h"

Local static functions

static opj_mqc_state_t mqc_states [47 *2]
 
static void mqc_byteout (opj_mqc_t *mqc)
 Output a byte, doing bit-stuffing if necessary.
 
static void mqc_renorme (opj_mqc_t *mqc)
 Renormalize mqc->a and mqc->c while encoding, so that mqc->a stays between 0x8000 and 0x10000.
 
static void mqc_codemps (opj_mqc_t *mqc)
 Encode the most probable symbol.
 
static void mqc_codelps (opj_mqc_t *mqc)
 Encode the most least symbol.
 
static void mqc_setbits (opj_mqc_t *mqc)
 Fill mqc->c with 1's for flushing.
 
static INLINE int mqc_mpsexchange (opj_mqc_t *const mqc)
 FIXME: documentation ?
 
static INLINE int mqc_lpsexchange (opj_mqc_t *const mqc)
 FIXME: documentation ?
 
static INLINE void mqc_bytein (opj_mqc_t *const mqc)
 Input a byte.
 
static INLINE void mqc_renormd (opj_mqc_t *const mqc)
 Renormalize mqc->a and mqc->c while decoding.
 
opj_mqc_tmqc_create (void)
 Create a new MQC handle.
 
void mqc_destroy (opj_mqc_t *mqc)
 Destroy a previously created MQC handle.
 
int mqc_numbytes (opj_mqc_t *mqc)
 Return the number of bytes written/read since initialisation.
 
void mqc_init_enc (opj_mqc_t *mqc, unsigned char *bp)
 Initialize the encoder.
 
void mqc_encode (opj_mqc_t *mqc, int d)
 Encode a symbol using the MQ-coder.
 
void mqc_flush (opj_mqc_t *mqc)
 Flush the encoder, so that all remaining data is written.
 
void mqc_bypass_init_enc (opj_mqc_t *mqc)
 BYPASS mode switch, initialization operation.
 
void mqc_bypass_enc (opj_mqc_t *mqc, int d)
 BYPASS mode switch, coding operation.
 
int mqc_bypass_flush_enc (opj_mqc_t *mqc)
 BYPASS mode switch, flush operation.
 
void mqc_reset_enc (opj_mqc_t *mqc)
 RESET mode switch.
 
int mqc_restart_enc (opj_mqc_t *mqc)
 RESTART mode switch (TERMALL)
 
void mqc_restart_init_enc (opj_mqc_t *mqc)
 RESTART mode switch (TERMALL) reinitialisation.
 
void mqc_erterm_enc (opj_mqc_t *mqc)
 ERTERM mode switch (PTERM)
 
void mqc_segmark_enc (opj_mqc_t *mqc)
 SEGMARK mode switch (SEGSYM)
 
void mqc_init_dec (opj_mqc_t *mqc, unsigned char *bp, int len)
 Initialize the decoder.
 
int mqc_decode (opj_mqc_t *const mqc)
 Decode a symbol.
 
void mqc_resetstates (opj_mqc_t *mqc)
 Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and 1 are more or less equiprobable)
 
void mqc_setstate (opj_mqc_t *mqc, int ctxno, int msb, int prob)
 Set the state of a particular context.
 

Function Documentation

◆ mqc_bypass_enc()

void mqc_bypass_enc ( opj_mqc_t * mqc,
int d )

BYPASS mode switch, coding operation.

JPEG 2000 p 505.

Not fully implemented and tested !!

Parameters
mqcMQC handle
dThe symbol to be encoded (0 or 1)

References opj_mqc::bp, opj_mqc::c, and opj_mqc::ct.

Referenced by t1_enc_refpass_step(), and t1_enc_sigpass_step().

◆ mqc_bypass_flush_enc()

int mqc_bypass_flush_enc ( opj_mqc_t * mqc)

BYPASS mode switch, flush operation.

Not fully implemented and tested !!

Parameters
mqcMQC handle
Returns
Returns 1 (always)

References opj_mqc::bp, opj_mqc::c, and opj_mqc::ct.

◆ mqc_bypass_init_enc()

void mqc_bypass_init_enc ( opj_mqc_t * mqc)

BYPASS mode switch, initialization operation.

JPEG 2000 p 505.

Not fully implemented and tested !!

Parameters
mqcMQC handle

References opj_mqc::c, and opj_mqc::ct.

Referenced by t1_encode_cblk().

◆ mqc_bytein()

static void mqc_bytein ( opj_mqc_t *const mqc)
static

Input a byte.

Parameters
mqcMQC handle

References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and opj_mqc::end.

Referenced by mqc_init_dec(), and mqc_renormd().

◆ mqc_byteout()

static void mqc_byteout ( opj_mqc_t * mqc)
static

Output a byte, doing bit-stuffing if necessary.

After a 0xff byte, the next byte must be smaller than 0x90.

Parameters
mqcMQC handle

References opj_mqc::bp, opj_mqc::c, and opj_mqc::ct.

Referenced by mqc_erterm_enc(), mqc_flush(), mqc_renorme(), and mqc_restart_enc().

◆ mqc_codelps()

static void mqc_codelps ( opj_mqc_t * mqc)
static

Encode the most least symbol.

Parameters
mqcMQC handle

References opj_mqc::a, opj_mqc::c, opj_mqc::curctx, and mqc_renorme().

Referenced by mqc_encode().

◆ mqc_codemps()

static void mqc_codemps ( opj_mqc_t * mqc)
static

Encode the most probable symbol.

Parameters
mqcMQC handle

References opj_mqc::a, opj_mqc::c, opj_mqc::curctx, and mqc_renorme().

Referenced by mqc_encode().

◆ mqc_create()

opj_mqc_t * mqc_create ( void )

Create a new MQC handle.

Returns
Returns a new MQC handle if successful, returns NULL otherwise

References opj_malloc.

Referenced by t1_create().

◆ mqc_decode()

◆ mqc_destroy()

void mqc_destroy ( opj_mqc_t * mqc)

Destroy a previously created MQC handle.

Parameters
mqcMQC handle to destroy

References opj_free.

Referenced by t1_destroy().

◆ mqc_encode()

void mqc_encode ( opj_mqc_t * mqc,
int d )

Encode a symbol using the MQ-coder.

Parameters
mqcMQC handle
dThe symbol to be encoded (0 or 1)

References opj_mqc::curctx, mqc_codelps(), and mqc_codemps().

Referenced by mqc_segmark_enc(), t1_enc_clnpass(), t1_enc_clnpass_step(), t1_enc_refpass_step(), and t1_enc_sigpass_step().

◆ mqc_erterm_enc()

void mqc_erterm_enc ( opj_mqc_t * mqc)

ERTERM mode switch (PTERM)

Parameters
mqcMQC handle

References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and mqc_byteout().

Referenced by t1_encode_cblk().

◆ mqc_flush()

void mqc_flush ( opj_mqc_t * mqc)

Flush the encoder, so that all remaining data is written.

Parameters
mqcMQC handle

References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, mqc_byteout(), and mqc_setbits().

Referenced by t1_encode_cblk().

◆ mqc_init_dec()

void mqc_init_dec ( opj_mqc_t * mqc,
unsigned char * bp,
int len )

Initialize the decoder.

Parameters
mqcMQC handle
bpPointer to the start of the buffer from which the bytes will be read
lenLength of the input buffer

References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc::end, mqc_bytein(), mqc_setcurctx, opj_realloc, and opj_mqc::start.

Referenced by t1_decode_cblk().

◆ mqc_init_enc()

void mqc_init_enc ( opj_mqc_t * mqc,
unsigned char * bp )

Initialize the encoder.

Parameters
mqcMQC handle
bpPointer to the start of the buffer where the bytes will be written

References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, mqc_setcurctx, and opj_mqc::start.

Referenced by t1_encode_cblk().

◆ mqc_lpsexchange()

static INLINE int mqc_lpsexchange ( opj_mqc_t *const mqc)
static

FIXME: documentation ?

??

Parameters
mqcMQC handle
Returns

References opj_mqc::a, opj_mqc::curctx, and INLINE.

Referenced by mqc_decode().

◆ mqc_mpsexchange()

static INLINE int mqc_mpsexchange ( opj_mqc_t *const mqc)
static

FIXME: documentation ?

??

Parameters
mqcMQC handle
Returns

References opj_mqc::a, opj_mqc::curctx, and INLINE.

Referenced by mqc_decode().

◆ mqc_numbytes()

int mqc_numbytes ( opj_mqc_t * mqc)

Return the number of bytes written/read since initialisation.

Parameters
mqcMQC handle
Returns
Returns the number of bytes already encoded

References opj_mqc::bp, and opj_mqc::start.

Referenced by t1_encode_cblk().

◆ mqc_renormd()

static INLINE void mqc_renormd ( opj_mqc_t *const mqc)
static

Renormalize mqc->a and mqc->c while decoding.

Parameters
mqcMQC handle

References opj_mqc::a, opj_mqc::c, opj_mqc::ct, INLINE, and mqc_bytein().

Referenced by mqc_decode().

◆ mqc_renorme()

static void mqc_renorme ( opj_mqc_t * mqc)
static

Renormalize mqc->a and mqc->c while encoding, so that mqc->a stays between 0x8000 and 0x10000.

Parameters
mqcMQC handle

References opj_mqc::a, opj_mqc::c, opj_mqc::ct, and mqc_byteout().

Referenced by mqc_codelps(), and mqc_codemps().

◆ mqc_reset_enc()

void mqc_reset_enc ( opj_mqc_t * mqc)

RESET mode switch.

Parameters
mqcMQC handle

References mqc_resetstates(), mqc_setstate(), T1_CTXNO_AGG, T1_CTXNO_UNI, and T1_CTXNO_ZC.

Referenced by t1_encode_cblk().

◆ mqc_resetstates()

void mqc_resetstates ( opj_mqc_t * mqc)

Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and 1 are more or less equiprobable)

Parameters
mqcMQC handle

References opj_mqc::ctxs, MQC_NUMCTXS, and mqc_states.

Referenced by mqc_reset_enc(), t1_decode_cblk(), and t1_encode_cblk().

◆ mqc_restart_enc()

int mqc_restart_enc ( opj_mqc_t * mqc)

RESTART mode switch (TERMALL)

Parameters
mqcMQC handle
Returns
Returns 1 (always)

References opj_mqc::c, opj_mqc::ct, and mqc_byteout().

◆ mqc_restart_init_enc()

void mqc_restart_init_enc ( opj_mqc_t * mqc)

RESTART mode switch (TERMALL) reinitialisation.

Parameters
mqcMQC handle

References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and mqc_setcurctx.

Referenced by t1_encode_cblk().

◆ mqc_segmark_enc()

void mqc_segmark_enc ( opj_mqc_t * mqc)

SEGMARK mode switch (SEGSYM)

Parameters
mqcMQC handle

References mqc_encode(), and mqc_setcurctx.

Referenced by t1_encode_cblk().

◆ mqc_setbits()

static void mqc_setbits ( opj_mqc_t * mqc)
static

Fill mqc->c with 1's for flushing.

Parameters
mqcMQC handle

References opj_mqc::a, and opj_mqc::c.

Referenced by mqc_flush().

◆ mqc_setstate()

void mqc_setstate ( opj_mqc_t * mqc,
int ctxno,
int msb,
int prob )

Set the state of a particular context.

Parameters
mqcMQC handle
ctxnoNumber that identifies the context
msbThe MSB of the new state of the context
probNumber that identifies the probability of the symbols for the new state of the context

References opj_mqc::ctxs, and mqc_states.

Referenced by mqc_reset_enc(), t1_decode_cblk(), and t1_encode_cblk().

Variable Documentation

◆ mqc_states

opj_mqc_state_t mqc_states[47 *2]
static

Referenced by mqc_resetstates(), and mqc_setstate().