OpenJPEG  2.5.0
Data Structures | Macros | Typedefs
mqc.h File Reference

Implementation of an MQ-Coder (MQC) More...

#include "opj_common.h"
#include "mqc_inl.h"

Go to the source code of this file.

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
 
#define BYPASS_CT_INIT   0xDEADBEEF
 

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

Exported functions

#define opj_mqc_setcurctx(mqc, ctxno)   (mqc)->curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
 Set the current context used for coding/decoding. More...
 
OPJ_UINT32 opj_mqc_numbytes (opj_mqc_t *mqc)
 Return the number of bytes written/read since initialisation. More...
 
void opj_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 opj_mqc_setstate (opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob)
 Set the state of a particular context. More...
 
void opj_mqc_init_enc (opj_mqc_t *mqc, OPJ_BYTE *bp)
 Initialize the encoder. More...
 
void opj_mqc_flush (opj_mqc_t *mqc)
 Flush the encoder, so that all remaining data is written. More...
 
void opj_mqc_bypass_init_enc (opj_mqc_t *mqc)
 BYPASS mode switch, initialization operation. More...
 
OPJ_UINT32 opj_mqc_bypass_get_extra_bytes (opj_mqc_t *mqc, OPJ_BOOL erterm)
 Return number of extra bytes to add to opj_mqc_numbytes() for theĀ² size of a non-terminating BYPASS pass. More...
 
void opj_mqc_bypass_enc (opj_mqc_t *mqc, OPJ_UINT32 d)
 BYPASS mode switch, coding operation. More...
 
void opj_mqc_bypass_flush_enc (opj_mqc_t *mqc, OPJ_BOOL erterm)
 BYPASS mode switch, flush operation. More...
 
void opj_mqc_reset_enc (opj_mqc_t *mqc)
 RESET mode switch. More...
 
void opj_mqc_restart_init_enc (opj_mqc_t *mqc)
 RESTART mode switch (TERMALL) reinitialisation. More...
 
void opj_mqc_erterm_enc (opj_mqc_t *mqc)
 ERTERM mode switch (PTERM) More...
 
void opj_mqc_segmark_enc (opj_mqc_t *mqc)
 SEGMARK mode switch (SEGSYM) More...
 
void opj_mqc_init_dec (opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
 Initialize the decoder for MQ decoding. More...
 
void opj_mqc_raw_init_dec (opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
 Initialize the decoder for RAW decoding. More...
 
void opq_mqc_finish_dec (opj_mqc_t *mqc)
 Terminate RAW/MQC decoding. More...
 

Detailed Description

Implementation of an MQ-Coder (MQC)

The functions in MQC.C have for goal to realize the MQ-coder operations. The functions in MQC.C are used by some function in T1.C.

Macro Definition Documentation

◆ BYPASS_CT_INIT

#define BYPASS_CT_INIT   0xDEADBEEF

◆ MQC_NUMCTXS

#define MQC_NUMCTXS   19

◆ opj_mqc_setcurctx

#define opj_mqc_setcurctx (   mqc,
  ctxno 
)    (mqc)->curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]

Set the current context used for coding/decoding.

Parameters
mqcMQC handle
ctxnoNumber that identifies the context

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

◆ opj_mqc_bypass_enc()

void opj_mqc_bypass_enc ( opj_mqc_t mqc,
OPJ_UINT32  d 
)

BYPASS mode switch, coding operation.

JPEG 2000 p 505.

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

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

◆ opj_mqc_bypass_flush_enc()

void opj_mqc_bypass_flush_enc ( opj_mqc_t mqc,
OPJ_BOOL  erterm 
)

BYPASS mode switch, flush operation.

Parameters
mqcMQC handle
erterm1 if ERTERM is enabled, 0 otherwise

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

Referenced by opj_t1_encode_cblk().

◆ opj_mqc_bypass_get_extra_bytes()

OPJ_UINT32 opj_mqc_bypass_get_extra_bytes ( opj_mqc_t mqc,
OPJ_BOOL  erterm 
)

Return number of extra bytes to add to opj_mqc_numbytes() for theĀ² size of a non-terminating BYPASS pass.

Parameters
mqcMQC handle
erterm1 if ERTERM is enabled, 0 otherwise

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

Referenced by opj_t1_encode_cblk().

◆ opj_mqc_bypass_init_enc()

void opj_mqc_bypass_init_enc ( opj_mqc_t mqc)

BYPASS mode switch, initialization operation.

JPEG 2000 p 505.

Parameters
mqcMQC handle

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

Referenced by opj_t1_encode_cblk().

◆ opj_mqc_erterm_enc()

void opj_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 opj_mqc_byteout().

Referenced by opj_t1_encode_cblk().

◆ opj_mqc_flush()

void opj_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, opj_mqc_byteout(), and opj_mqc_setbits().

Referenced by opj_t1_encode_cblk().

◆ opj_mqc_init_dec()

void opj_mqc_init_dec ( opj_mqc_t mqc,
OPJ_BYTE bp,
OPJ_UINT32  len,
OPJ_UINT32  extra_writable_bytes 
)

Initialize the decoder for MQ decoding.

opj_mqc_finish_dec() must be absolutely called after finishing the decoding passes, so as to restore the bytes temporarily overwritten.

Parameters
mqcMQC handle
bpPointer to the start of the buffer from which the bytes will be read Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer will be temporarily overwritten with an artificial 0xFF 0xFF marker. (they will be backuped in the mqc structure to be restored later) So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and writable.
lenLength of the input buffer
extra_writable_bytesIndicate how many bytes after len are writable. This is to indicate your consent that bp must be large enough.

References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc::end_of_byte_stream_counter, opj_mqc_bytein(), opj_mqc_init_dec_common(), and opj_mqc_setcurctx.

Referenced by opj_t1_decode_cblk().

◆ opj_mqc_init_enc()

void opj_mqc_init_enc ( opj_mqc_t mqc,
OPJ_BYTE 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, opj_mqc::end_of_byte_stream_counter, opj_mqc_setcurctx, and opj_mqc::start.

Referenced by opj_t1_encode_cblk().

◆ opj_mqc_numbytes()

OPJ_UINT32 opj_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 opj_t1_encode_cblk().

◆ opj_mqc_raw_init_dec()

void opj_mqc_raw_init_dec ( opj_mqc_t mqc,
OPJ_BYTE bp,
OPJ_UINT32  len,
OPJ_UINT32  extra_writable_bytes 
)

Initialize the decoder for RAW decoding.

opj_mqc_finish_dec() must be absolutely called after finishing the decoding passes, so as to restore the bytes temporarily overwritten.

Parameters
mqcMQC handle
bpPointer to the start of the buffer from which the bytes will be read Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer will be temporarily overwritten with an artificial 0xFF 0xFF marker. (they will be backuped in the mqc structure to be restored later) So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and writable.
lenLength of the input buffer
extra_writable_bytesIndicate how many bytes after len are writable. This is to indicate your consent that bp must be large enough.

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

Referenced by opj_t1_decode_cblk().

◆ opj_mqc_reset_enc()

void opj_mqc_reset_enc ( opj_mqc_t mqc)

RESET mode switch.

Parameters
mqcMQC handle

References opj_mqc_resetstates(), opj_mqc_setstate(), T1_CTXNO_AGG, T1_CTXNO_UNI, and T1_CTXNO_ZC.

Referenced by opj_t1_encode_cblk().

◆ opj_mqc_resetstates()

void opj_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 opj_mqc_reset_enc(), opj_t1_decode_cblk(), and opj_t1_encode_cblk().

◆ opj_mqc_restart_init_enc()

void opj_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 opj_mqc::start.

Referenced by opj_t1_encode_cblk().

◆ opj_mqc_segmark_enc()

void opj_mqc_segmark_enc ( opj_mqc_t mqc)

SEGMARK mode switch (SEGSYM)

Parameters
mqcMQC handle

References opj_mqc_encode(), and opj_mqc_setcurctx.

Referenced by opj_t1_encode_cblk().

◆ opj_mqc_setstate()

void opj_mqc_setstate ( opj_mqc_t mqc,
OPJ_UINT32  ctxno,
OPJ_UINT32  msb,
OPJ_INT32  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 opj_mqc_reset_enc(), opj_t1_decode_cblk(), and opj_t1_encode_cblk().

◆ opq_mqc_finish_dec()

void opq_mqc_finish_dec ( opj_mqc_t mqc)

Terminate RAW/MQC decoding.

This restores the bytes temporarily overwritten by opj_mqc_init_dec()/ opj_mqc_raw_init_dec()

Parameters
mqcMQC handle

References opj_mqc::backup, opj_mqc::end, and OPJ_COMMON_CBLK_DATA_EXTRA.

Referenced by opj_t1_decode_cblk().