track all declarations after statement for C90 compilers (VS2005)
[openjpeg.git] / libopenjpeg / mqc.h
index 7c601b039f985722f504bc635fe926c0dbf3750e..d00cd1067d88d28c7e2f0c28e49c1f0b39dd156b 100644 (file)
@@ -1,9 +1,10 @@
 /*
+ * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
+ * Copyright (c) 2002-2007, Professor Benoit Macq
  * Copyright (c) 2001-2003, David Janssens
  * Copyright (c) 2002-2003, Yannick Verschueren
- * Copyright (c) 2003-2005, Francois Devaux and Antonin Descampe
- * Copyright (c) 2005, Herv� Drolon, FreeImage Team
- * Copyright (c) 2002-2005, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
+ * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
+ * Copyright (c) 2005, Herve Drolon, FreeImage Team
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -45,86 +46,35 @@ in MQC.C are used by some function in T1.C.
 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;
-  /** the Most Probable Symbol (0 or 1) */
-  int 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 */
-  struct opj_mqc_state *nlps;
+       /** the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff) */
+       unsigned int qeval;
+       /** the Most Probable Symbol (0 or 1) */
+       int 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 */
+       struct opj_mqc_state *nlps;
 } opj_mqc_state_t;
 
-#define MQC_NUMCTXS 32
+#define MQC_NUMCTXS 19
 
 /**
 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_mqc_state_t *ctxs[MQC_NUMCTXS];
-  opj_mqc_state_t **curctx;
+       unsigned int c;
+       unsigned int a;
+       unsigned int ct;
+       unsigned char *bp;
+       unsigned char *start;
+       unsigned char *end;
+       opj_mqc_state_t *ctxs[MQC_NUMCTXS];
+       opj_mqc_state_t **curctx;
+#ifdef MQC_PERF_OPT
+       unsigned char *buffer;
+#endif
 } opj_mqc_t;
 
-/** @name Local static functions */
-/*@{*/
-/* ----------------------------------------------------------------------- */
-/**
-Output a byte, doing bit-stuffing if necessary.
-After a 0xff byte, the next byte must be smaller than 0x90.
-@param mqc MQC handle
-*/
-static void mqc_byteout(opj_mqc_t *mqc);
-/**
-Renormalize mqc->a and mqc->c while encoding, so that mqc->a stays between 0x8000 and 0x10000
-@param mqc MQC handle
-*/
-static void mqc_renorme(opj_mqc_t *mqc);
-/**
-Encode the most probable symbol
-@param mqc MQC handle
-*/
-static void mqc_codemps(opj_mqc_t *mqc);
-/**
-Encode the most least symbol
-@param mqc MQC handle
-*/
-static void mqc_codelps(opj_mqc_t *mqc);
-/**
-Fill mqc->c with 1's for flushing
-@param mqc MQC handle
-*/
-static void mqc_setbits(opj_mqc_t *mqc);
-/**
-FIXME: documentation ???
-@param mqc MQC handle
-@return 
-*/
-static int mqc_mpsexchange(opj_mqc_t *mqc);
-/**
-FIXME: documentation ???
-@param mqc MQC handle
-@return 
-*/
-static int mqc_lpsexchange(opj_mqc_t *mqc);
-/**
-Input a byte
-@param mqc MQC handle
-*/
-static void mqc_bytein(opj_mqc_t *mqc);
-/**
-Renormalize mqc->a and mqc->c while decoding
-@param mqc MQC handle
-*/
-static void mqc_renormd(opj_mqc_t *mqc);
-/* ----------------------------------------------------------------------- */
-/*@}*/
-
 /** @name Exported functions */
 /*@{*/
 /* ----------------------------------------------------------------------- */
@@ -132,7 +82,7 @@ static void mqc_renormd(opj_mqc_t *mqc);
 Create a new MQC handle 
 @return Returns a new MQC handle if successful, returns NULL otherwise
 */
-opj_mqc_t* mqc_create();
+opj_mqc_t* mqc_create(void);
 /**
 Destroy a previously created MQC handle
 @param mqc MQC handle to destroy
@@ -169,7 +119,7 @@ Set the current context used for coding/decoding
 @param mqc MQC handle
 @param ctxno Number that identifies the context
 */
-void mqc_setcurctx(opj_mqc_t *mqc, int ctxno);
+#define mqc_setcurctx(mqc, ctxno)      (mqc)->curctx = &(mqc)->ctxs[(int)(ctxno)]
 /**
 Encode a symbol using the MQ-coder
 @param mqc MQC handle
@@ -241,7 +191,7 @@ Decode a symbol
 @param mqc MQC handle
 @return Returns the decoded symbol (0 or 1)
 */
-int mqc_decode(opj_mqc_t *mqc);
+int mqc_decode(opj_mqc_t *const mqc);
 /* ----------------------------------------------------------------------- */
 /*@}*/