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

#define MQC_NUMCTXS   19

Referenced by mqc_resetstates().

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

Typedef Documentation

This struct defines the state of a context.

typedef struct opj_mqc opj_mqc_t

MQ coder.

Function Documentation

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

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.

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

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

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

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

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

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

int mqc_decode ( opj_mqc_t *const  mqc)
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().

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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