/*
- * Copyright (c) 2002-2003, Antonin Descampe
- * Copyright (c) 2002-2003, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
+ * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
+ * Copyright (c) 2002-2007, Professor Benoit Macq
+ * 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
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
- */
-
+ */
+
#ifndef __RAW_H
#define __RAW_H
-
-/*
- * Return the number of bytes written/read since initialisation
- */
-int raw_numbytes();
-
-
-/*
- * Initialize the encoder
- * bp: pointer to the start of the buffer where the bytes will be written
- */
-void raw_init_enc(unsigned char *bp);
+/**
+@file raw.h
+@brief Implementation of operations for raw encoding (RAW)
+The functions in RAW.C have for goal to realize the operation of raw encoding linked
+with the corresponding mode switch.
+*/
-/*
- * Encode a bit
- * d: bit to encode (0 or 1)
- */
-void raw_encode(int d);
+/** @defgroup RAW RAW - Implementation of operations for raw encoding */
+/*@{*/
+/**
+RAW encoding operations
+*/
+typedef struct opj_raw {
+ /** temporary buffer where bits are coded or decoded */
+ unsigned char c;
+ /** number of bits already read or free to write */
+ unsigned int ct;
+ /** maximum length to decode */
+ unsigned int lenmax;
+ /** length decoded */
+ unsigned int len;
+ /** pointer to the current position in the buffer */
+ unsigned char *bp;
+ /** pointer to the start of the buffer */
+ unsigned char *start;
+ /** pointer to the end of the buffer */
+ unsigned char *end;
+} opj_raw_t;
-/*
- * Flush the encoder, so that all remaining data is written
- */
-void raw_flush();
+/** @name Exported functions */
+/*@{*/
+/* ----------------------------------------------------------------------- */
+/**
+Create a new RAW handle
+@return Returns a new RAW handle if successful, returns NULL otherwise
+*/
+opj_raw_t* raw_create(void);
+/**
+Destroy a previously created RAW handle
+@param raw RAW handle to destroy
+*/
+void raw_destroy(opj_raw_t *raw);
+/**
+Return the number of bytes written/read since initialisation
+@param raw RAW handle to destroy
+@return Returns the number of bytes already encoded
+*/
+int raw_numbytes(opj_raw_t *raw);
+/**
+Initialize the decoder
+@param raw RAW handle
+@param bp Pointer to the start of the buffer from which the bytes will be read
+@param len Length of the input buffer
+*/
+void raw_init_dec(opj_raw_t *raw, unsigned char *bp, int len);
+/**
+Decode a symbol using raw-decoder. Cfr p.506 TAUBMAN
+@param raw RAW handle
+@return Returns the decoded symbol (0 or 1)
+*/
+int raw_decode(opj_raw_t *raw);
+/* ----------------------------------------------------------------------- */
+/*@}*/
+/*@}*/
-/*
- * Initialize the decoder
- * bp: pointer to the start of the buffer from which the bytes will be read
- * len: length of the input buffer
- */
-void raw_init_dec(unsigned char *bp, int len);
-
-
-/*
- * Decode a bit (returns 0 or 1)
- */
-int raw_decode();
-
-
-#endif /*
- */
+#endif /* __RAW_H */