79 #include "jasper/jas_types.h"
80 #include "jasper/jas_stream.h"
91 #define JPC_BITSTREAM_READ 0x01
93 #define JPC_BITSTREAM_WRITE 0x02
100 #define JPC_BITSTREAM_NOCLOSE 0x01
102 #define JPC_BITSTREAM_EOF 0x02
104 #define JPC_BITSTREAM_ERR 0x04
124 jas_stream_t *stream_;
136 jpc_bitstream_t *jpc_bitstream_sopen(jas_stream_t *stream,
char *mode);
139 int jpc_bitstream_close(jpc_bitstream_t *bitstream);
147 #define jpc_bitstream_getbit(bitstream) \
148 jpc_bitstream_getbit_func(bitstream)
150 #define jpc_bitstream_getbit(bitstream) \
151 jpc_bitstream_getbit_macro(bitstream)
156 #define jpc_bitstream_putbit(bitstream, v) \
157 jpc_bitstream_putbit_func(bitstream, v)
159 #define jpc_bitstream_putbit(bitstream, v) \
160 jpc_bitstream_putbit_macro(bitstream, v)
164 long jpc_bitstream_getbits(jpc_bitstream_t *bitstream,
int n);
167 int jpc_bitstream_putbits(jpc_bitstream_t *bitstream,
int n,
long v);
175 int jpc_bitstream_align(jpc_bitstream_t *bitstream);
180 int jpc_bitstream_inalign(jpc_bitstream_t *bitstream,
int fillmask,
185 int jpc_bitstream_outalign(jpc_bitstream_t *bitstream,
int filldata);
188 int jpc_bitstream_needalign(jpc_bitstream_t *bitstream);
191 int jpc_bitstream_pending(jpc_bitstream_t *bitstream);
198 #define jpc_bitstream_eof(bitstream) \
199 ((bitstream)->flags_ & JPC_BITSTREAM_EOF)
208 int jpc_bitstream_getbit_func(jpc_bitstream_t *bitstream);
210 int jpc_bitstream_putbit_func(jpc_bitstream_t *bitstream,
int v);
212 int jpc_bitstream_fillbuf(jpc_bitstream_t *bitstream);
214 #define jpc_bitstream_getbit_macro(bitstream) \
215 (assert((bitstream)->openmode_ & JPC_BITSTREAM_READ), \
216 (--(bitstream)->cnt_ >= 0) ? \
217 ((int)(((bitstream)->buf_ >> (bitstream)->cnt_) & 1)) : \
218 jpc_bitstream_fillbuf(bitstream))
220 #define jpc_bitstream_putbit_macro(bitstream, bit) \
221 (assert((bitstream)->openmode_ & JPC_BITSTREAM_WRITE), \
222 (--(bitstream)->cnt_ < 0) ? \
223 ((bitstream)->buf_ = ((bitstream)->buf_ << 8) & 0xffff, \
224 (bitstream)->cnt_ = ((bitstream)->buf_ == 0xff00) ? 6 : 7, \
225 (bitstream)->buf_ |= ((bit) & 1) << (bitstream)->cnt_, \
226 (jas_stream_putc((bitstream)->stream_, (bitstream)->buf_ >> 8) == EOF) \
227 ? (EOF) : ((bit) & 1)) : \
228 ((bitstream)->buf_ |= ((bit) & 1) << (bitstream)->cnt_, \