X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fopenjp2%2Fmqc.h;h=491ee50ee177457a691cb1a3f579c8f1bccec5a8;hb=ba1edf6cd41415594729bc90ad3b0008af48251e;hp=7984aaf87ab5788a57b951cec3ddb9cab7323f01;hpb=d518970039a19a2a9b6d2bdd592cc88a43897bbb;p=openjpeg.git diff --git a/src/lib/openjp2/mqc.h b/src/lib/openjp2/mqc.h index 7984aaf8..491ee50e 100644 --- a/src/lib/openjp2/mqc.h +++ b/src/lib/openjp2/mqc.h @@ -1,10 +1,17 @@ /* - * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium - * Copyright (c) 2002-2007, Professor Benoit Macq + * The copyright in this software is being made available under the 2-clauses + * BSD License, included below. This software may be subject to other third + * party and contributor rights, including patent rights, and no such rights + * are granted under this license. + * + * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium + * Copyright (c) 2002-2014, Professor Benoit Macq * Copyright (c) 2001-2003, David Janssens * Copyright (c) 2002-2003, Yannick Verschueren - * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe + * Copyright (c) 2003-2007, Francois-Olivier Devaux + * Copyright (c) 2003-2014, Antonin Descampe * Copyright (c) 2005, Herve Drolon, FreeImage Team + * Copyright (c) 2008, Jerome Fimes, Communications & Systemes * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -47,9 +54,9 @@ This struct defines the state of a context. */ typedef struct opj_mqc_state { /** the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff) */ - unsigned int qeval; + OPJ_UINT32 qeval; /** the Most Probable Symbol (0 or 1) */ - int mps; + OPJ_UINT32 mps; /** next state if the next encoded symbol is the MPS */ struct opj_mqc_state *nmps; /** next state if the next encoded symbol is the LPS */ @@ -62,19 +69,22 @@ typedef struct opj_mqc_state { MQ coder */ typedef struct opj_mqc { - unsigned int c; - unsigned int a; - unsigned int ct; - unsigned char *bp; - unsigned char *start; - unsigned char *end; + OPJ_UINT32 c; + OPJ_UINT32 a; + OPJ_UINT32 ct; + OPJ_BYTE *bp; + OPJ_BYTE *start; + OPJ_BYTE *end; opj_mqc_state_t *ctxs[MQC_NUMCTXS]; opj_mqc_state_t **curctx; + const OPJ_BYTE *lut_ctxno_zc_orient; /* lut_ctxno_zc shifted by 256 * bandno */ #ifdef MQC_PERF_OPT unsigned char *buffer; #endif } opj_mqc_t; +#include "mqc_inl.h" + /** @name Exported functions */ /*@{*/ /* ----------------------------------------------------------------------- */ @@ -82,24 +92,24 @@ typedef struct opj_mqc { Create a new MQC handle @return Returns a new MQC handle if successful, returns NULL otherwise */ -opj_mqc_t* mqc_create(void); +opj_mqc_t* opj_mqc_create(void); /** Destroy a previously created MQC handle @param mqc MQC handle to destroy */ -void mqc_destroy(opj_mqc_t *mqc); +void opj_mqc_destroy(opj_mqc_t *mqc); /** Return the number of bytes written/read since initialisation @param mqc MQC handle @return Returns the number of bytes already encoded */ -int mqc_numbytes(opj_mqc_t *mqc); +OPJ_UINT32 opj_mqc_numbytes(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) @param mqc MQC handle */ -void mqc_resetstates(opj_mqc_t *mqc); +void opj_mqc_resetstates(opj_mqc_t *mqc); /** Set the state of a particular context @param mqc MQC handle @@ -107,37 +117,37 @@ Set the state of a particular context @param msb The MSB of the new state of the context @param prob Number that identifies the probability of the symbols for the new state of the context */ -void mqc_setstate(opj_mqc_t *mqc, int ctxno, int msb, int prob); +void opj_mqc_setstate(opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob); /** Initialize the encoder @param mqc MQC handle @param bp Pointer to the start of the buffer where the bytes will be written */ -void mqc_init_enc(opj_mqc_t *mqc, unsigned char *bp); +void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp); /** Set the current context used for coding/decoding @param mqc MQC handle @param ctxno Number that identifies the context */ -#define mqc_setcurctx(mqc, ctxno) (mqc)->curctx = &(mqc)->ctxs[(int)(ctxno)] +#define opj_mqc_setcurctx(mqc, ctxno) (mqc)->curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)] /** Encode a symbol using the MQ-coder @param mqc MQC handle @param d The symbol to be encoded (0 or 1) */ -void mqc_encode(opj_mqc_t *mqc, int d); +void opj_mqc_encode(opj_mqc_t *mqc, OPJ_UINT32 d); /** Flush the encoder, so that all remaining data is written @param mqc MQC handle */ -void mqc_flush(opj_mqc_t *mqc); +void opj_mqc_flush(opj_mqc_t *mqc); /** BYPASS mode switch, initialization operation. JPEG 2000 p 505.

Not fully implemented and tested !!

@param mqc MQC handle */ -void mqc_bypass_init_enc(opj_mqc_t *mqc); +void opj_mqc_bypass_init_enc(opj_mqc_t *mqc); /** BYPASS mode switch, coding operation. JPEG 2000 p 505. @@ -145,53 +155,53 @@ JPEG 2000 p 505. @param mqc MQC handle @param d The symbol to be encoded (0 or 1) */ -void mqc_bypass_enc(opj_mqc_t *mqc, int d); +void opj_mqc_bypass_enc(opj_mqc_t *mqc, OPJ_UINT32 d); /** BYPASS mode switch, flush operation

Not fully implemented and tested !!

@param mqc MQC handle @return Returns 1 (always) */ -int mqc_bypass_flush_enc(opj_mqc_t *mqc); +OPJ_UINT32 opj_mqc_bypass_flush_enc(opj_mqc_t *mqc); /** RESET mode switch @param mqc MQC handle */ -void mqc_reset_enc(opj_mqc_t *mqc); +void opj_mqc_reset_enc(opj_mqc_t *mqc); /** RESTART mode switch (TERMALL) @param mqc MQC handle @return Returns 1 (always) */ -int mqc_restart_enc(opj_mqc_t *mqc); +OPJ_UINT32 opj_mqc_restart_enc(opj_mqc_t *mqc); /** RESTART mode switch (TERMALL) reinitialisation @param mqc MQC handle */ -void mqc_restart_init_enc(opj_mqc_t *mqc); +void opj_mqc_restart_init_enc(opj_mqc_t *mqc); /** ERTERM mode switch (PTERM) @param mqc MQC handle */ -void mqc_erterm_enc(opj_mqc_t *mqc); +void opj_mqc_erterm_enc(opj_mqc_t *mqc); /** SEGMARK mode switch (SEGSYM) @param mqc MQC handle */ -void mqc_segmark_enc(opj_mqc_t *mqc); +void opj_mqc_segmark_enc(opj_mqc_t *mqc); /** Initialize the decoder @param mqc MQC handle @param bp Pointer to the start of the buffer from which the bytes will be read @param len Length of the input buffer */ -opj_bool mqc_init_dec(opj_mqc_t *mqc, unsigned char *bp, int len); +OPJ_BOOL opj_mqc_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len); /** Decode a symbol @param mqc MQC handle @return Returns the decoded symbol (0 or 1) */ -int mqc_decode(opj_mqc_t *const mqc); +static INLINE OPJ_INT32 opj_mqc_decode(opj_mqc_t * const mqc); /* ----------------------------------------------------------------------- */ /*@}*/