OpenJPEG  1.5.1
Data Structures | Macros | Typedefs
MQC - Implementation of an MQ-Coder

Data Structures

struct  opj_mqc_state
 
This struct defines the state of a context. More...
 
struct  opj_mqc
 
MQ coder More...
 

Macros

#define MQC_NUMCTXS   19
 

Typedefs

typedef struct opj_mqc_state opj_mqc_state_t
 
This struct defines the state of a context. More...
 
typedef struct opj_mqc opj_mqc_t
 
MQ coder More...
 

Local static functions

static void mqc_byteout (opj_mqc_t *mqc)
 
Output a byte, doing bit-stuffing if necessary. More...
 
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 More...
 
static void mqc_codemps (opj_mqc_t *mqc)
 
Encode the most probable symbol More...
 
static void mqc_codelps (opj_mqc_t *mqc)
 
Encode the most least symbol More...
 
static void mqc_setbits (opj_mqc_t *mqc)
 
Fill mqc->c with 1's for flushing More...
 
static INLINE int mqc_mpsexchange (opj_mqc_t *const mqc)
 
FIXME: documentation ??? More...
 
static INLINE int mqc_lpsexchange (opj_mqc_t *const mqc)
 
FIXME: documentation ??? More...
 
static INLINE void mqc_bytein (opj_mqc_t *const mqc)
 
Input a byte More...
 
static INLINE void mqc_renormd (opj_mqc_t *const mqc)
 
Renormalize mqc->a and mqc->c while decoding More...
 

Exported functions

opj_mqc_tmqc_create (void)
 
Create a new MQC handle More...
 
void mqc_destroy (opj_mqc_t *mqc)
 
Destroy a previously created MQC handle More...
 
int mqc_numbytes (opj_mqc_t *mqc)
 
Return the number of bytes written/read since initialisation More...
 
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) More...
 
void mqc_setstate (opj_mqc_t *mqc, int ctxno, int msb, int prob)
 
Set the state of a particular context More...
 
void mqc_init_enc (opj_mqc_t *mqc, unsigned char *bp)
 
Initialize the encoder More...
 
void mqc_encode (opj_mqc_t *mqc, int d)
 
Encode a symbol using the MQ-coder More...
 
void mqc_flush (opj_mqc_t *mqc)
 
Flush the encoder, so that all remaining data is written More...
 
void mqc_bypass_init_enc (opj_mqc_t *mqc)
 
BYPASS mode switch, initialization operation. More...
 
void mqc_bypass_enc (opj_mqc_t *mqc, int d)
 
BYPASS mode switch, coding operation. More...
 
int mqc_bypass_flush_enc (opj_mqc_t *mqc)
 
BYPASS mode switch, flush operation More...
 
void mqc_reset_enc (opj_mqc_t *mqc)
 
RESET mode switch More...
 
int mqc_restart_enc (opj_mqc_t *mqc)
 
RESTART mode switch (TERMALL) More...
 
void mqc_restart_init_enc (opj_mqc_t *mqc)
 
RESTART mode switch (TERMALL) reinitialisation More...
 
void mqc_erterm_enc (opj_mqc_t *mqc)
 
ERTERM mode switch (PTERM) More...
 
void mqc_segmark_enc (opj_mqc_t *mqc)
 
SEGMARK mode switch (SEGSYM) More...
 
void mqc_init_dec (opj_mqc_t *mqc, unsigned char *bp, int len)
 
Initialize the decoder More...
 
int mqc_decode (opj_mqc_t *const mqc)
 
Decode a symbol More...
 
#define mqc_setcurctx(mqc, ctxno)   (mqc)->curctx = &(mqc)->ctxs[(int)(ctxno)]
 
Set the current context used for coding/decoding More...
 

Detailed Description

Macro Definition Documentation

◆ MQC_NUMCTXS

#define MQC_NUMCTXS   19

Referenced by mqc_resetstates().

◆ mqc_setcurctx

#define mqc_setcurctx (   mqc,
  ctxno 
)    (mqc)->curctx = &(mqc)->ctxs[(int)(ctxno)]

Typedef Documentation

◆ opj_mqc_state_t


This struct defines the state of a context.

◆ opj_mqc_t

typedef struct opj_mqc opj_mqc_t


MQ coder

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

int mqc_decode ( opj_mqc_t *const  mqc)

◆ 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, and opj_mqc::curctx.

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, and opj_mqc::curctx.

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, 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().