Micro-optimization: use directly opj_bio_putbit() instead of opj_bio_write() to emit...
[openjpeg.git] / src / lib / openjp2 / bio.h
index 53e0f0db0fc625cf523e902d07e1f6740bbd667b..d482f9ead5a7a960c9ea2dbba324f2b93fd6e613 100644 (file)
@@ -1,9 +1,15 @@
 /*
- * 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
  * All rights reserved.
  *
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef __BIO_H
-#define __BIO_H
+#ifndef OPJ_BIO_H
+#define OPJ_BIO_H
 
 #include <stddef.h> /* ptrdiff_t */
 
-/** 
+/**
 @file bio.h
 @brief Implementation of an individual bit input-output (BIO)
 
@@ -48,23 +54,23 @@ The functions in BIO.C have for goal to realize an individual bit input - output
 Individual bit input-output stream (BIO)
 */
 typedef struct opj_bio {
-       /** pointer to the start of the buffer */
-       OPJ_BYTE *start;
-       /** pointer to the end of the buffer */
-       OPJ_BYTE *end;
-       /** pointer to the present position in the buffer */
-       OPJ_BYTE *bp;
-       /** temporary place where each byte is read or written */
-       OPJ_UINT32 buf;
-       /** coder : number of bits free to write. decoder : number of bits read */
-       int ct;
+    /** pointer to the start of the buffer */
+    OPJ_BYTE *start;
+    /** pointer to the end of the buffer */
+    OPJ_BYTE *end;
+    /** pointer to the present position in the buffer */
+    OPJ_BYTE *bp;
+    /** temporary place where each byte is read or written */
+    OPJ_UINT32 buf;
+    /** coder : number of bits free to write. decoder : number of bits read */
+    OPJ_UINT32 ct;
 } opj_bio_t;
 
 /** @name Exported functions */
 /*@{*/
 /* ----------------------------------------------------------------------- */
 /**
-Create a new BIO handle 
+Create a new BIO handle
 @return Returns a new BIO handle if successful, returns NULL otherwise
 */
 opj_bio_t* opj_bio_create(void);
@@ -83,14 +89,14 @@ ptrdiff_t opj_bio_numbytes(opj_bio_t *bio);
 Init encoder
 @param bio BIO handle
 @param bp Output buffer
-@param len Output buffer length 
+@param len Output buffer length
 */
 void opj_bio_init_enc(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len);
 /**
 Init decoder
 @param bio BIO handle
 @param bp Input buffer
-@param len Input buffer length 
+@param len Input buffer length
 */
 void opj_bio_init_dec(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len);
 /**
@@ -100,10 +106,18 @@ Write bits
 @param n Number of bits to write
 */
 void opj_bio_write(opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n);
+
+/**
+Write a bit
+@param bio BIO handle
+@param b Bit to write (0 or 1)
+*/
+void opj_bio_putbit(opj_bio_t *bio, OPJ_UINT32 b);
+
 /**
 Read bits
 @param bio BIO handle
-@param n Number of bits to read 
+@param n Number of bits to read
 @return Returns the corresponding read number
 */
 OPJ_UINT32 opj_bio_read(opj_bio_t *bio, OPJ_UINT32 n);
@@ -112,17 +126,17 @@ Flush bits
 @param bio BIO handle
 @return Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
 */
-opj_bool opj_bio_flush(opj_bio_t *bio);
+OPJ_BOOL opj_bio_flush(opj_bio_t *bio);
 /**
 Passes the ending bits (coming from flushing)
 @param bio BIO handle
 @return Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
 */
-opj_bool opj_bio_inalign(opj_bio_t *bio);
+OPJ_BOOL opj_bio_inalign(opj_bio_t *bio);
 /* ----------------------------------------------------------------------- */
 /*@}*/
 
 /*@}*/
 
-#endif /* __BIO_H */
+#endif /* OPJ_BIO_H */