1*3ac0a46fSAndroid Build Coastguard Worker /* 2*3ac0a46fSAndroid Build Coastguard Worker * The copyright in this software is being made available under the 2-clauses 3*3ac0a46fSAndroid Build Coastguard Worker * BSD License, included below. This software may be subject to other third 4*3ac0a46fSAndroid Build Coastguard Worker * party and contributor rights, including patent rights, and no such rights 5*3ac0a46fSAndroid Build Coastguard Worker * are granted under this license. 6*3ac0a46fSAndroid Build Coastguard Worker * 7*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium 8*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2002-2014, Professor Benoit Macq 9*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2001-2003, David Janssens 10*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2002-2003, Yannick Verschueren 11*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2003-2007, Francois-Olivier Devaux 12*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2003-2014, Antonin Descampe 13*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2005, Herve Drolon, FreeImage Team 14*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <[email protected]> 15*3ac0a46fSAndroid Build Coastguard Worker * All rights reserved. 16*3ac0a46fSAndroid Build Coastguard Worker * 17*3ac0a46fSAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without 18*3ac0a46fSAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions 19*3ac0a46fSAndroid Build Coastguard Worker * are met: 20*3ac0a46fSAndroid Build Coastguard Worker * 1. Redistributions of source code must retain the above copyright 21*3ac0a46fSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer. 22*3ac0a46fSAndroid Build Coastguard Worker * 2. Redistributions in binary form must reproduce the above copyright 23*3ac0a46fSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer in the 24*3ac0a46fSAndroid Build Coastguard Worker * documentation and/or other materials provided with the distribution. 25*3ac0a46fSAndroid Build Coastguard Worker * 26*3ac0a46fSAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' 27*3ac0a46fSAndroid Build Coastguard Worker * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 28*3ac0a46fSAndroid Build Coastguard Worker * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 29*3ac0a46fSAndroid Build Coastguard Worker * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 30*3ac0a46fSAndroid Build Coastguard Worker * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 31*3ac0a46fSAndroid Build Coastguard Worker * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 32*3ac0a46fSAndroid Build Coastguard Worker * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 33*3ac0a46fSAndroid Build Coastguard Worker * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 34*3ac0a46fSAndroid Build Coastguard Worker * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 35*3ac0a46fSAndroid Build Coastguard Worker * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 36*3ac0a46fSAndroid Build Coastguard Worker * POSSIBILITY OF SUCH DAMAGE. 37*3ac0a46fSAndroid Build Coastguard Worker */ 38*3ac0a46fSAndroid Build Coastguard Worker 39*3ac0a46fSAndroid Build Coastguard Worker #ifndef OPJ_MQC_H 40*3ac0a46fSAndroid Build Coastguard Worker #define OPJ_MQC_H 41*3ac0a46fSAndroid Build Coastguard Worker 42*3ac0a46fSAndroid Build Coastguard Worker #include "opj_common.h" 43*3ac0a46fSAndroid Build Coastguard Worker 44*3ac0a46fSAndroid Build Coastguard Worker /** 45*3ac0a46fSAndroid Build Coastguard Worker @file mqc.h 46*3ac0a46fSAndroid Build Coastguard Worker @brief Implementation of an MQ-Coder (MQC) 47*3ac0a46fSAndroid Build Coastguard Worker 48*3ac0a46fSAndroid Build Coastguard Worker The functions in MQC.C have for goal to realize the MQ-coder operations. The functions 49*3ac0a46fSAndroid Build Coastguard Worker in MQC.C are used by some function in T1.C. 50*3ac0a46fSAndroid Build Coastguard Worker */ 51*3ac0a46fSAndroid Build Coastguard Worker 52*3ac0a46fSAndroid Build Coastguard Worker /** @defgroup MQC MQC - Implementation of an MQ-Coder */ 53*3ac0a46fSAndroid Build Coastguard Worker /*@{*/ 54*3ac0a46fSAndroid Build Coastguard Worker 55*3ac0a46fSAndroid Build Coastguard Worker /** 56*3ac0a46fSAndroid Build Coastguard Worker This struct defines the state of a context. 57*3ac0a46fSAndroid Build Coastguard Worker */ 58*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_mqc_state { 59*3ac0a46fSAndroid Build Coastguard Worker /** the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff) */ 60*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 qeval; 61*3ac0a46fSAndroid Build Coastguard Worker /** the Most Probable Symbol (0 or 1) */ 62*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 mps; 63*3ac0a46fSAndroid Build Coastguard Worker /** next state if the next encoded symbol is the MPS */ 64*3ac0a46fSAndroid Build Coastguard Worker const struct opj_mqc_state *nmps; 65*3ac0a46fSAndroid Build Coastguard Worker /** next state if the next encoded symbol is the LPS */ 66*3ac0a46fSAndroid Build Coastguard Worker const struct opj_mqc_state *nlps; 67*3ac0a46fSAndroid Build Coastguard Worker } opj_mqc_state_t; 68*3ac0a46fSAndroid Build Coastguard Worker 69*3ac0a46fSAndroid Build Coastguard Worker #define MQC_NUMCTXS 19 70*3ac0a46fSAndroid Build Coastguard Worker 71*3ac0a46fSAndroid Build Coastguard Worker /** 72*3ac0a46fSAndroid Build Coastguard Worker MQ coder 73*3ac0a46fSAndroid Build Coastguard Worker */ 74*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_mqc { 75*3ac0a46fSAndroid Build Coastguard Worker /** temporary buffer where bits are coded or decoded */ 76*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 c; 77*3ac0a46fSAndroid Build Coastguard Worker /** only used by MQ decoder */ 78*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 a; 79*3ac0a46fSAndroid Build Coastguard Worker /** number of bits already read or free to write */ 80*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 ct; 81*3ac0a46fSAndroid Build Coastguard Worker /* only used by decoder, to count the number of times a terminating 0xFF >0x8F marker is read */ 82*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 end_of_byte_stream_counter; 83*3ac0a46fSAndroid Build Coastguard Worker /** pointer to the current position in the buffer */ 84*3ac0a46fSAndroid Build Coastguard Worker OPJ_BYTE *bp; 85*3ac0a46fSAndroid Build Coastguard Worker /** pointer to the start of the buffer */ 86*3ac0a46fSAndroid Build Coastguard Worker OPJ_BYTE *start; 87*3ac0a46fSAndroid Build Coastguard Worker /** pointer to the end of the buffer */ 88*3ac0a46fSAndroid Build Coastguard Worker OPJ_BYTE *end; 89*3ac0a46fSAndroid Build Coastguard Worker /** Array of contexts */ 90*3ac0a46fSAndroid Build Coastguard Worker const opj_mqc_state_t *ctxs[MQC_NUMCTXS]; 91*3ac0a46fSAndroid Build Coastguard Worker /** Active context */ 92*3ac0a46fSAndroid Build Coastguard Worker const opj_mqc_state_t **curctx; 93*3ac0a46fSAndroid Build Coastguard Worker /* lut_ctxno_zc shifted by (1 << 9) * bandno */ 94*3ac0a46fSAndroid Build Coastguard Worker const OPJ_BYTE* lut_ctxno_zc_orient; 95*3ac0a46fSAndroid Build Coastguard Worker /** Original value of the 2 bytes at end[0] and end[1] */ 96*3ac0a46fSAndroid Build Coastguard Worker OPJ_BYTE backup[OPJ_COMMON_CBLK_DATA_EXTRA]; 97*3ac0a46fSAndroid Build Coastguard Worker } opj_mqc_t; 98*3ac0a46fSAndroid Build Coastguard Worker 99*3ac0a46fSAndroid Build Coastguard Worker #define BYPASS_CT_INIT 0xDEADBEEF 100*3ac0a46fSAndroid Build Coastguard Worker 101*3ac0a46fSAndroid Build Coastguard Worker #include "mqc_inl.h" 102*3ac0a46fSAndroid Build Coastguard Worker 103*3ac0a46fSAndroid Build Coastguard Worker /** @name Exported functions */ 104*3ac0a46fSAndroid Build Coastguard Worker /*@{*/ 105*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */ 106*3ac0a46fSAndroid Build Coastguard Worker 107*3ac0a46fSAndroid Build Coastguard Worker /** 108*3ac0a46fSAndroid Build Coastguard Worker Return the number of bytes written/read since initialisation 109*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 110*3ac0a46fSAndroid Build Coastguard Worker @return Returns the number of bytes already encoded 111*3ac0a46fSAndroid Build Coastguard Worker */ 112*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 opj_mqc_numbytes(opj_mqc_t *mqc); 113*3ac0a46fSAndroid Build Coastguard Worker /** 114*3ac0a46fSAndroid Build Coastguard Worker Reset the states of all the context of the coder/decoder 115*3ac0a46fSAndroid Build Coastguard Worker (each context is set to a state where 0 and 1 are more or less equiprobable) 116*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 117*3ac0a46fSAndroid Build Coastguard Worker */ 118*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_resetstates(opj_mqc_t *mqc); 119*3ac0a46fSAndroid Build Coastguard Worker /** 120*3ac0a46fSAndroid Build Coastguard Worker Set the state of a particular context 121*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 122*3ac0a46fSAndroid Build Coastguard Worker @param ctxno Number that identifies the context 123*3ac0a46fSAndroid Build Coastguard Worker @param msb The MSB of the new state of the context 124*3ac0a46fSAndroid Build Coastguard Worker @param prob Number that identifies the probability of the symbols for the new state of the context 125*3ac0a46fSAndroid Build Coastguard Worker */ 126*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_setstate(opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, 127*3ac0a46fSAndroid Build Coastguard Worker OPJ_INT32 prob); 128*3ac0a46fSAndroid Build Coastguard Worker /** 129*3ac0a46fSAndroid Build Coastguard Worker Initialize the encoder 130*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 131*3ac0a46fSAndroid Build Coastguard Worker @param bp Pointer to the start of the buffer where the bytes will be written 132*3ac0a46fSAndroid Build Coastguard Worker */ 133*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp); 134*3ac0a46fSAndroid Build Coastguard Worker /** 135*3ac0a46fSAndroid Build Coastguard Worker Set the current context used for coding/decoding 136*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 137*3ac0a46fSAndroid Build Coastguard Worker @param ctxno Number that identifies the context 138*3ac0a46fSAndroid Build Coastguard Worker */ 139*3ac0a46fSAndroid Build Coastguard Worker #define opj_mqc_setcurctx(mqc, ctxno) (mqc)->curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)] 140*3ac0a46fSAndroid Build Coastguard Worker 141*3ac0a46fSAndroid Build Coastguard Worker /** 142*3ac0a46fSAndroid Build Coastguard Worker Flush the encoder, so that all remaining data is written 143*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 144*3ac0a46fSAndroid Build Coastguard Worker */ 145*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_flush(opj_mqc_t *mqc); 146*3ac0a46fSAndroid Build Coastguard Worker /** 147*3ac0a46fSAndroid Build Coastguard Worker BYPASS mode switch, initialization operation. 148*3ac0a46fSAndroid Build Coastguard Worker JPEG 2000 p 505. 149*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 150*3ac0a46fSAndroid Build Coastguard Worker */ 151*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_bypass_init_enc(opj_mqc_t *mqc); 152*3ac0a46fSAndroid Build Coastguard Worker 153*3ac0a46fSAndroid Build Coastguard Worker /** Return number of extra bytes to add to opj_mqc_numbytes() for the² 154*3ac0a46fSAndroid Build Coastguard Worker size of a non-terminating BYPASS pass 155*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 156*3ac0a46fSAndroid Build Coastguard Worker @param erterm 1 if ERTERM is enabled, 0 otherwise 157*3ac0a46fSAndroid Build Coastguard Worker */ 158*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 opj_mqc_bypass_get_extra_bytes(opj_mqc_t *mqc, OPJ_BOOL erterm); 159*3ac0a46fSAndroid Build Coastguard Worker 160*3ac0a46fSAndroid Build Coastguard Worker /** 161*3ac0a46fSAndroid Build Coastguard Worker BYPASS mode switch, coding operation. 162*3ac0a46fSAndroid Build Coastguard Worker JPEG 2000 p 505. 163*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 164*3ac0a46fSAndroid Build Coastguard Worker @param d The symbol to be encoded (0 or 1) 165*3ac0a46fSAndroid Build Coastguard Worker */ 166*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_bypass_enc(opj_mqc_t *mqc, OPJ_UINT32 d); 167*3ac0a46fSAndroid Build Coastguard Worker /** 168*3ac0a46fSAndroid Build Coastguard Worker BYPASS mode switch, flush operation 169*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 170*3ac0a46fSAndroid Build Coastguard Worker @param erterm 1 if ERTERM is enabled, 0 otherwise 171*3ac0a46fSAndroid Build Coastguard Worker */ 172*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_bypass_flush_enc(opj_mqc_t *mqc, OPJ_BOOL erterm); 173*3ac0a46fSAndroid Build Coastguard Worker /** 174*3ac0a46fSAndroid Build Coastguard Worker RESET mode switch 175*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 176*3ac0a46fSAndroid Build Coastguard Worker */ 177*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_reset_enc(opj_mqc_t *mqc); 178*3ac0a46fSAndroid Build Coastguard Worker 179*3ac0a46fSAndroid Build Coastguard Worker #ifdef notdef 180*3ac0a46fSAndroid Build Coastguard Worker /** 181*3ac0a46fSAndroid Build Coastguard Worker RESTART mode switch (TERMALL) 182*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 183*3ac0a46fSAndroid Build Coastguard Worker @return Returns 1 (always) 184*3ac0a46fSAndroid Build Coastguard Worker */ 185*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 opj_mqc_restart_enc(opj_mqc_t *mqc); 186*3ac0a46fSAndroid Build Coastguard Worker #endif 187*3ac0a46fSAndroid Build Coastguard Worker 188*3ac0a46fSAndroid Build Coastguard Worker /** 189*3ac0a46fSAndroid Build Coastguard Worker RESTART mode switch (TERMALL) reinitialisation 190*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 191*3ac0a46fSAndroid Build Coastguard Worker */ 192*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_restart_init_enc(opj_mqc_t *mqc); 193*3ac0a46fSAndroid Build Coastguard Worker /** 194*3ac0a46fSAndroid Build Coastguard Worker ERTERM mode switch (PTERM) 195*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 196*3ac0a46fSAndroid Build Coastguard Worker */ 197*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_erterm_enc(opj_mqc_t *mqc); 198*3ac0a46fSAndroid Build Coastguard Worker /** 199*3ac0a46fSAndroid Build Coastguard Worker SEGMARK mode switch (SEGSYM) 200*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 201*3ac0a46fSAndroid Build Coastguard Worker */ 202*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_segmark_enc(opj_mqc_t *mqc); 203*3ac0a46fSAndroid Build Coastguard Worker 204*3ac0a46fSAndroid Build Coastguard Worker /** 205*3ac0a46fSAndroid Build Coastguard Worker Initialize the decoder for MQ decoding. 206*3ac0a46fSAndroid Build Coastguard Worker 207*3ac0a46fSAndroid Build Coastguard Worker opj_mqc_finish_dec() must be absolutely called after finishing the decoding 208*3ac0a46fSAndroid Build Coastguard Worker passes, so as to restore the bytes temporarily overwritten. 209*3ac0a46fSAndroid Build Coastguard Worker 210*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 211*3ac0a46fSAndroid Build Coastguard Worker @param bp Pointer to the start of the buffer from which the bytes will be read 212*3ac0a46fSAndroid Build Coastguard Worker Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer 213*3ac0a46fSAndroid Build Coastguard Worker will be temporarily overwritten with an artificial 0xFF 0xFF marker. 214*3ac0a46fSAndroid Build Coastguard Worker (they will be backuped in the mqc structure to be restored later) 215*3ac0a46fSAndroid Build Coastguard Worker So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and 216*3ac0a46fSAndroid Build Coastguard Worker writable. 217*3ac0a46fSAndroid Build Coastguard Worker @param len Length of the input buffer 218*3ac0a46fSAndroid Build Coastguard Worker @param extra_writable_bytes Indicate how many bytes after len are writable. 219*3ac0a46fSAndroid Build Coastguard Worker This is to indicate your consent that bp must be 220*3ac0a46fSAndroid Build Coastguard Worker large enough. 221*3ac0a46fSAndroid Build Coastguard Worker */ 222*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, 223*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 extra_writable_bytes); 224*3ac0a46fSAndroid Build Coastguard Worker 225*3ac0a46fSAndroid Build Coastguard Worker /** 226*3ac0a46fSAndroid Build Coastguard Worker Initialize the decoder for RAW decoding. 227*3ac0a46fSAndroid Build Coastguard Worker 228*3ac0a46fSAndroid Build Coastguard Worker opj_mqc_finish_dec() must be absolutely called after finishing the decoding 229*3ac0a46fSAndroid Build Coastguard Worker passes, so as to restore the bytes temporarily overwritten. 230*3ac0a46fSAndroid Build Coastguard Worker 231*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 232*3ac0a46fSAndroid Build Coastguard Worker @param bp Pointer to the start of the buffer from which the bytes will be read 233*3ac0a46fSAndroid Build Coastguard Worker Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer 234*3ac0a46fSAndroid Build Coastguard Worker will be temporarily overwritten with an artificial 0xFF 0xFF marker. 235*3ac0a46fSAndroid Build Coastguard Worker (they will be backuped in the mqc structure to be restored later) 236*3ac0a46fSAndroid Build Coastguard Worker So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and 237*3ac0a46fSAndroid Build Coastguard Worker writable. 238*3ac0a46fSAndroid Build Coastguard Worker @param len Length of the input buffer 239*3ac0a46fSAndroid Build Coastguard Worker @param extra_writable_bytes Indicate how many bytes after len are writable. 240*3ac0a46fSAndroid Build Coastguard Worker This is to indicate your consent that bp must be 241*3ac0a46fSAndroid Build Coastguard Worker large enough. 242*3ac0a46fSAndroid Build Coastguard Worker */ 243*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_raw_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, 244*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 extra_writable_bytes); 245*3ac0a46fSAndroid Build Coastguard Worker 246*3ac0a46fSAndroid Build Coastguard Worker 247*3ac0a46fSAndroid Build Coastguard Worker /** 248*3ac0a46fSAndroid Build Coastguard Worker Terminate RAW/MQC decoding 249*3ac0a46fSAndroid Build Coastguard Worker 250*3ac0a46fSAndroid Build Coastguard Worker This restores the bytes temporarily overwritten by opj_mqc_init_dec()/ 251*3ac0a46fSAndroid Build Coastguard Worker opj_mqc_raw_init_dec() 252*3ac0a46fSAndroid Build Coastguard Worker 253*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 254*3ac0a46fSAndroid Build Coastguard Worker */ 255*3ac0a46fSAndroid Build Coastguard Worker void opq_mqc_finish_dec(opj_mqc_t *mqc); 256*3ac0a46fSAndroid Build Coastguard Worker 257*3ac0a46fSAndroid Build Coastguard Worker /** 258*3ac0a46fSAndroid Build Coastguard Worker Decode a symbol 259*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle 260*3ac0a46fSAndroid Build Coastguard Worker @return Returns the decoded symbol (0 or 1) 261*3ac0a46fSAndroid Build Coastguard Worker */ 262*3ac0a46fSAndroid Build Coastguard Worker /*static INLINE OPJ_UINT32 opj_mqc_decode(opj_mqc_t * const mqc);*/ 263*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */ 264*3ac0a46fSAndroid Build Coastguard Worker /*@}*/ 265*3ac0a46fSAndroid Build Coastguard Worker 266*3ac0a46fSAndroid Build Coastguard Worker /*@}*/ 267*3ac0a46fSAndroid Build Coastguard Worker 268*3ac0a46fSAndroid Build Coastguard Worker #endif /* OPJ_MQC_H */ 269