Rename mis-named function opj_tcd_get_encoded_tile_size() to opj_tcd_get_encoder_inpu...
[openjpeg.git] / src / lib / openjp2 / mqc.h
index a29ecb6735e38f01952bd2d4a5be13751d16b0f5..69a2a79dc06d68b1a973e9aac915d13c6b0f566f 100644 (file)
@@ -36,8 +36,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef __MQC_H
-#define __MQC_H
+#ifndef OPJ_MQC_H
+#define OPJ_MQC_H
 
 #include "opj_common.h"
 
@@ -61,9 +61,9 @@ typedef struct opj_mqc_state {
     /** the Most Probable Symbol (0 or 1) */
     OPJ_UINT32 mps;
     /** next state if the next encoded symbol is the MPS */
-    struct opj_mqc_state *nmps;
+    const struct opj_mqc_state *nmps;
     /** next state if the next encoded symbol is the LPS */
-    struct opj_mqc_state *nlps;
+    const struct opj_mqc_state *nlps;
 } opj_mqc_state_t;
 
 #define MQC_NUMCTXS 19
@@ -78,6 +78,8 @@ typedef struct opj_mqc {
     OPJ_UINT32 a;
     /** number of bits already read or free to write */
     OPJ_UINT32 ct;
+    /* only used by decoder, to count the number of times a terminating 0xFF >0x8F marker is read */
+    OPJ_UINT32 end_of_byte_stream_counter;
     /** pointer to the current position in the buffer */
     OPJ_BYTE *bp;
     /** pointer to the start of the buffer */
@@ -85,9 +87,9 @@ typedef struct opj_mqc {
     /** pointer to the end of the buffer */
     OPJ_BYTE *end;
     /** Array of contexts */
-    opj_mqc_state_t *ctxs[MQC_NUMCTXS];
+    const opj_mqc_state_t *ctxs[MQC_NUMCTXS];
     /** Active context */
-    opj_mqc_state_t **curctx;
+    const opj_mqc_state_t **curctx;
     /* lut_ctxno_zc shifted by (1 << 9) * bandno */
     const OPJ_BYTE* lut_ctxno_zc_orient;
     /** Original value of the 2 bytes at end[0] and end[1] */
@@ -147,36 +149,45 @@ void opj_mqc_flush(opj_mqc_t *mqc);
 /**
 BYPASS mode switch, initialization operation.
 JPEG 2000 p 505.
-<h2>Not fully implemented and tested !!</h2>
 @param mqc MQC handle
 */
 void opj_mqc_bypass_init_enc(opj_mqc_t *mqc);
+
+/** Return number of extra bytes to add to opj_mqc_numbytes() for theĀ²
+    size of a non-terminating BYPASS pass
+@param mqc MQC handle
+@param erterm 1 if ERTERM is enabled, 0 otherwise
+*/
+OPJ_UINT32 opj_mqc_bypass_get_extra_bytes(opj_mqc_t *mqc, OPJ_BOOL erterm);
+
 /**
 BYPASS mode switch, coding operation.
 JPEG 2000 p 505.
-<h2>Not fully implemented and tested !!</h2>
 @param mqc MQC handle
 @param d The symbol to be encoded (0 or 1)
 */
 void opj_mqc_bypass_enc(opj_mqc_t *mqc, OPJ_UINT32 d);
 /**
 BYPASS mode switch, flush operation
-<h2>Not fully implemented and tested !!</h2>
 @param mqc MQC handle
-@return Returns 1 (always)
+@param erterm 1 if ERTERM is enabled, 0 otherwise
 */
-OPJ_UINT32 opj_mqc_bypass_flush_enc(opj_mqc_t *mqc);
+void opj_mqc_bypass_flush_enc(opj_mqc_t *mqc, OPJ_BOOL erterm);
 /**
 RESET mode switch
 @param mqc MQC handle
 */
 void opj_mqc_reset_enc(opj_mqc_t *mqc);
+
+#ifdef notdef
 /**
 RESTART mode switch (TERMALL)
 @param mqc MQC handle
 @return Returns 1 (always)
 */
 OPJ_UINT32 opj_mqc_restart_enc(opj_mqc_t *mqc);
+#endif
+
 /**
 RESTART mode switch (TERMALL) reinitialisation
 @param mqc MQC handle
@@ -257,4 +268,4 @@ Decode a symbol
 
 /*@}*/
 
-#endif /* __MQC_H */
+#endif /* OPJ_MQC_H */